houyaf 3 ani în urmă
părinte
comite
55a1fb9aee

+ 69 - 0
src/api/biz/bizObjectOAMRuleApi.ts

@@ -0,0 +1,69 @@
+import apiRequest from '@/network/http/apiRequest'
+
+/**
+ * 根据Id获取ObjectRule
+ * @param bizId
+ * @param objectId
+ * @param oamId
+ * @returns
+ */
+export function getObjectOAMRuleListByOamId(bizId: number, objectId: number, oamId: number) {
+  return apiRequest({
+    url: `/biz/object/oam/rule/${bizId}/${objectId}/${oamId}`,
+    method: 'GET',
+  })
+}
+
+/**
+ * 根据Id获取ObjectRule
+ * @param bizId
+ * @param objectId
+ * @param orId
+ * @returns
+ */
+export function getObjectOAMRuleById(bizId: number, objectId: number, oamId: number, orId: number) {
+  return apiRequest({
+    url: `/biz/object/oam/rule/${bizId}/${objectId}/${oamId}/${orId}`,
+    method: 'GET',
+  })
+}
+
+/**
+ * 添加ObjectRule
+ * @param data
+ * @returns
+ */
+export function createObjectOAMRule(data: any) {
+  return apiRequest({
+    url: '/biz/object/oam/rule/add',
+    method: 'POST',
+    data,
+  })
+}
+
+/**
+ * 更新ObjectRule
+ * @param data
+ * @returns
+ */
+export function updateObjectOAMRule(data: any) {
+  return apiRequest({
+    url: '/biz/object/oam/rule/update',
+    method: 'PUT',
+    data,
+  })
+}
+
+/**
+ * 删除ObjectRule
+ * @param bizId
+ * @param objectId
+ * @param orId
+ * @returns
+ */
+export function deleteObjectOAMRuleById(bizId: number, objectId: number, oamId: number, orId: number) {
+  return apiRequest({
+    url: `/biz/object/oam/rule/${bizId}/${objectId}/${oamId}/${orId}`,
+    method: 'DELETE',
+  })
+}

+ 0 - 28
src/api/biz/bizObjectRuleApi.ts

@@ -1,28 +0,0 @@
-import apiRequest from '@/network/http/apiRequest'
-
-/**
- * 添加ObjectOAM
- * @param data
- * @returns
- */
-export function createObjectRole(data: any) {
-  return apiRequest({
-    url: '/biz/object/rule/add',
-    method: 'POST',
-    data,
-  })
-}
-
-/**
- * 删除ObjectOAM
- * @param bizId
- * @param objectId
- * @param oamId
- * @returns
- */
-export function deleteObjectRuleById(bizId: number, objectId: number, ruleId: number) {
-  return apiRequest({
-    url: `/biz/object/rule/${bizId}/${objectId}/${ruleId}`,
-    method: 'DELETE',
-  })
-}

+ 66 - 68
src/views/biz/oam/components/objectOAM.vue

@@ -125,73 +125,71 @@ defineExpose({
 
 
 <template>
 <template>
   <div>
   <div>
-    <el-dialog v-model="state.dialogVisible" :title="state.title" width="600px" :close-on-click-modal="false" append-to-body destroy-on-close>
-      <div v-loading="state.loading">
-        <el-form ref="formRef" :model="state.formData" :rules="formRules" label-width="120px" label-suffix=":">
-          <el-form-item label="行为名称" prop="oamTitle">
-            <el-input v-model="state.formData.oamTitle" placeholder="请输入标题" />
-          </el-form-item>
-
-          <el-form-item label="行为代码" prop="oamCode">
-            <el-input v-model="state.formData.oamCode" placeholder="请输入行为代码" />
-          </el-form-item>
-
-          <el-form-item label="类型" prop="oamType">
-            <el-radio-group v-model="state.formData.oamType">
-              <el-radio :label="1">
-                基于Pk查询
-              </el-radio>
-              <el-radio :label="2">
-                多笔查询
-              </el-radio>
-              <el-radio :label="3">
-                分页查询
-              </el-radio>
-              <el-radio :label="4">
-                新增
-              </el-radio>
-              <el-radio :label="5">
-                修改
-              </el-radio>
-              <el-radio :label="6">
-                删除
-              </el-radio>
-              <el-radio :label="7">
-                非Pk单笔查询
-              </el-radio>
-            </el-radio-group>
-          </el-form-item>
-
-          <el-form-item label="类型" prop="sqlType">
-            <el-radio-group v-model="state.formData.sqlType">
-              <el-radio :label="1">
-                DQL(数据查询)
-              </el-radio>
-              <el-radio :label="2">
-                DML(数据操纵)
-              </el-radio>
-              <el-radio :label="3">
-                DDL(数据定义)
-              </el-radio>
-              <el-radio :label="4">
-                DCL(数据控制)
-              </el-radio>
-            </el-radio-group>
-          </el-form-item>
-
-          <el-form-item label="SQL" prop="sqlStatement">
-            <el-input v-model="state.formData.sqlStatement" type="textarea" rows="5" placeholder="请输入SQL" />
-          </el-form-item>
-
-          <el-form-item v-if="state.formData.oamType === 3" label="Count" prop="sqlCount">
-            <el-input v-model="state.formData.sqlCount" type="textarea" rows="5" placeholder="请输入SQL" />
-          </el-form-item>
-
-          <el-form-item label="简要说明" prop="oamDesc">
-            <el-input v-model="state.formData.oamDesc" type="textarea" rows="3" placeholder="请输入标题" />
-          </el-form-item>
-        </el-form>
-      </div>
+    <el-drawer v-model="state.dialogVisible" :title="state.title" size="30%">
+      <el-form ref="formRef" :model="state.formData" :rules="formRules" label-width="120px" label-suffix=":">
+        <el-form-item label="行为名称" prop="oamTitle">
+          <el-input v-model="state.formData.oamTitle" placeholder="请输入标题" />
+        </el-form-item>
+
+        <el-form-item label="行为代码" prop="oamCode">
+          <el-input v-model="state.formData.oamCode" placeholder="请输入行为代码" />
+        </el-form-item>
+
+        <el-form-item label="类型" prop="oamType">
+          <el-radio-group v-model="state.formData.oamType">
+            <el-radio :label="1">
+              基于Pk查询
+            </el-radio>
+            <el-radio :label="2">
+              多笔查询
+            </el-radio>
+            <el-radio :label="3">
+              分页查询
+            </el-radio>
+            <el-radio :label="4">
+              新增
+            </el-radio>
+            <el-radio :label="5">
+              修改
+            </el-radio>
+            <el-radio :label="6">
+              删除
+            </el-radio>
+            <el-radio :label="7">
+              非Pk单笔查询
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="类型" prop="sqlType">
+          <el-radio-group v-model="state.formData.sqlType">
+            <el-radio :label="1">
+              DQL(数据查询)
+            </el-radio>
+            <el-radio :label="2">
+              DML(数据操纵)
+            </el-radio>
+            <el-radio :label="3">
+              DDL(数据定义)
+            </el-radio>
+            <el-radio :label="4">
+              DCL(数据控制)
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="SQL" prop="sqlStatement">
+          <el-input v-model="state.formData.sqlStatement" type="textarea" rows="5" placeholder="请输入SQL" />
+        </el-form-item>
+
+        <el-form-item v-if="state.formData.oamType === 3" label="Count" prop="sqlCount">
+          <el-input v-model="state.formData.sqlCount" type="textarea" rows="5" placeholder="请输入SQL" />
+        </el-form-item>
+
+        <el-form-item label="简要说明" prop="oamDesc">
+          <el-input v-model="state.formData.oamDesc" type="textarea" rows="3" placeholder="请输入标题" />
+        </el-form-item>
+      </el-form>
 
 
       <template #footer>
       <template #footer>
         <el-button size="large" @click="onCancel">
         <el-button size="large" @click="onCancel">
@@ -201,6 +199,6 @@ defineExpose({
           保存
           保存
         </el-button>
         </el-button>
       </template>
       </template>
-    </el-dialog>
+    </el-drawer>
   </div>
   </div>
 </template>
 </template>

+ 196 - 0
src/views/biz/oam/components/objectOAMRule.vue

@@ -0,0 +1,196 @@
+<route lang="yaml">
+meta:
+  enabled: false
+</route>
+
+<script lang="ts" setup>
+import type { FormInstance, FormRules } from 'element-plus'
+import { createObjectOAMRule, getObjectOAMRuleById, updateObjectOAMRule } from '@/api/biz/bizObjectOAMRuleApi'
+const emit = defineEmits(['success'])
+
+const formRef = ref<FormInstance>()
+const formRules = ref<FormRules>({
+  oamTitle: [
+    { required: true, message: '请输入标题', trigger: 'blur' },
+  ],
+  oamCode: [
+    { required: true, message: '请输入行为代码', trigger: 'blur' },
+  ],
+  oamType: [
+    { required: true, message: '请输入行为类型', trigger: 'blur' },
+  ],
+  sqlType: [
+    { required: true, message: '请输入操作类型', trigger: 'blur' },
+  ],
+  oamDesc: [
+    { required: false, message: '请输入描述', trigger: 'blur' },
+  ],
+})
+
+const state = reactive({
+  title: '',
+  dialogVisible: false,
+  loading: false,
+  formData: {
+    bizId: 0,
+    objectId: 0,
+    oamId: 0,
+    orId: 0,
+    ruleId: 0,
+    targetAttrId: '',
+    ruleCode: '',
+  },
+  viewData: {
+    objectTitle: '',
+    ruleTitle: '',
+  },
+  actionType: 1,
+})
+
+onMounted(() => {})
+
+const getData = async () => {
+  const { bizId, objectId, oamId, orId } = state.formData
+  state.loading = true
+  const { data } = await getObjectOAMRuleById(bizId, objectId, oamId, orId)
+  state.loading = false
+  state.formData = data
+}
+
+function onSubmit() {
+  formRef.value && formRef.value.validate(async (valid) => {
+    if (valid) {
+      if (state.actionType === 1) {
+        await createObjectOAMRule(state.formData)
+        state.dialogVisible = false
+        emit('success')
+      }
+      else {
+        await updateObjectOAMRule(state.formData)
+        state.dialogVisible = false
+        emit('success')
+      }
+    }
+  })
+}
+
+function onCancel() {
+  state.dialogVisible = false
+}
+
+function resetFormData() {
+  state.formData = {
+    bizId: 0,
+    objectId: 0,
+    oamId: 0,
+    orId: 0,
+    ruleId: 0,
+    targetAttrId: '',
+    ruleCode: '',
+  }
+}
+
+defineExpose({
+  showAddModel(bizId: number, objectId: number, oamId: number) {
+    resetFormData()
+    state.title = '新增对象行为'
+    state.actionType = 1
+    state.formData.bizId = bizId
+    state.formData.objectId = objectId
+    state.dialogVisible = true
+  },
+
+  showEditModel(bizId: number, objectId: number, oamId: number, orId: number) {
+    resetFormData()
+    state.title = '编辑对象行为'
+    state.actionType = 2
+    state.formData.bizId = bizId
+    state.formData.objectId = objectId
+    state.formData.orId = orId
+    state.dialogVisible = true
+    getData()
+  },
+})
+</script>
+
+<template>
+  <div>
+    <el-drawer v-model="state.dialogVisible" :title="state.title" size="30%">
+      <div v-loading="state.loading">
+        <el-form ref="formRef" :model="state.formData" :rules="formRules" label-width="120px" label-suffix=":">
+          <el-form-item label="行为名称" prop="oamTitle">
+            <el-input v-model="state.formData.oamTitle" placeholder="请输入标题" />
+          </el-form-item>
+
+          <el-form-item label="行为代码" prop="oamCode">
+            <el-input v-model="state.formData.oamCode" placeholder="请输入行为代码" />
+          </el-form-item>
+
+          <el-form-item label="类型" prop="oamType">
+            <el-radio-group v-model="state.formData.oamType">
+              <el-radio :label="1">
+                基于Pk查询
+              </el-radio>
+              <el-radio :label="2">
+                多笔查询
+              </el-radio>
+              <el-radio :label="3">
+                分页查询
+              </el-radio>
+              <el-radio :label="4">
+                新增
+              </el-radio>
+              <el-radio :label="5">
+                修改
+              </el-radio>
+              <el-radio :label="6">
+                删除
+              </el-radio>
+              <el-radio :label="7">
+                非Pk单笔查询
+              </el-radio>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="类型" prop="sqlType">
+            <el-radio-group v-model="state.formData.sqlType">
+              <el-radio :label="1">
+                DQL(数据查询)
+              </el-radio>
+              <el-radio :label="2">
+                DML(数据操纵)
+              </el-radio>
+              <el-radio :label="3">
+                DDL(数据定义)
+              </el-radio>
+              <el-radio :label="4">
+                DCL(数据控制)
+              </el-radio>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="SQL" prop="sqlStatement">
+            <el-input v-model="state.formData.sqlStatement" type="textarea" rows="5" placeholder="请输入SQL" />
+          </el-form-item>
+
+          <el-form-item v-if="state.formData.oamType === 3" label="Count" prop="sqlCount">
+            <el-input v-model="state.formData.sqlCount" type="textarea" rows="5" placeholder="请输入SQL" />
+          </el-form-item>
+
+          <el-form-item label="简要说明" prop="oamDesc">
+            <el-input v-model="state.formData.oamDesc" type="textarea" rows="3" placeholder="请输入标题" />
+          </el-form-item>
+        </el-form>
+      </div>
+
+      <template #footer>
+        <el-button size="large" @click="onCancel">
+          取消
+        </el-button>
+        <el-button type="primary" size="large" @click="onSubmit">
+          保存
+        </el-button>
+      </template>
+    </el-drawer>
+  </div>
+</template>

+ 0 - 0
src/views/biz/oam/components/objectRule.vue


+ 34 - 16
src/views/biz/oam/index.vue

@@ -7,9 +7,11 @@ meta:
 import type { TabsPaneContext } from 'element-plus'
 import type { TabsPaneContext } from 'element-plus'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import ObjectOAMComponent from './components/objectOAM.vue'
 import ObjectOAMComponent from './components/objectOAM.vue'
+import ObjectOAMRuleComponent from './components/objectOAMRule.vue'
 import useSettingsStore from '@/store/modules/settings'
 import useSettingsStore from '@/store/modules/settings'
 import { getObjectById } from '@/api/biz/bizObjectApi'
 import { getObjectById } from '@/api/biz/bizObjectApi'
 import { deleteObjectOAMById, getObjectOAMById, getObjectOAMByList } from '@/api/biz/bizObjectOAMApi'
 import { deleteObjectOAMById, getObjectOAMById, getObjectOAMByList } from '@/api/biz/bizObjectOAMApi'
+import { getObjectOAMRuleListByOamId } from '@/api/biz/bizObjectOAMRuleApi'
 import { oamType, sqlType } from '@/utils/tool'
 import { oamType, sqlType } from '@/utils/tool'
 
 
 const settingsStore = useSettingsStore()
 const settingsStore = useSettingsStore()
@@ -53,7 +55,7 @@ const state = reactive({
   keywords: '',
   keywords: '',
   curOamId: 0,
   curOamId: 0,
   oamList: [],
   oamList: [],
-  objectRuleList: [],
+  objectOamRuleList: [],
   treeData: [] as TreeNode[],
   treeData: [] as TreeNode[],
   oam: {} as ObjectOAM,
   oam: {} as ObjectOAM,
   dialogState: 1,
   dialogState: 1,
@@ -87,8 +89,19 @@ const getObjectOAMData = async () => {
   }
   }
 }
 }
 
 
+const getObjectOAMRuleList = async () => {
+  const curOamId = state.curOamId
+  if (curOamId > 0) {
+    state.loading = true
+    const { data } = await getObjectOAMRuleListByOamId(bizId, objectId, curOamId)
+    state.objectOamRuleList = data
+    state.loading = false
+  }
+}
+
 const getOAMTree = async () => {
 const getOAMTree = async () => {
   const { data } = await getObjectOAMByList(state.search)
   const { data } = await getObjectOAMByList(state.search)
+  state.treeData = []
   data.forEach((item: any) => {
   data.forEach((item: any) => {
     state.treeData.push({
     state.treeData.push({
       label: item.oamTitle,
       label: item.oamTitle,
@@ -103,6 +116,7 @@ const getOAMTree = async () => {
       leftTreeRef.value.setCurrentKey(data[0].oamId)
       leftTreeRef.value.setCurrentKey(data[0].oamId)
     })
     })
     await getObjectOAMData()
     await getObjectOAMData()
+    await getObjectOAMRuleList()
   }
   }
 }
 }
 
 
@@ -128,10 +142,10 @@ const onEditOAM = () => {
   objectOAMRef.value.showEditModel(bizId, objectId, state.curOamId)
   objectOAMRef.value.showEditModel(bizId, objectId, state.curOamId)
 }
 }
 
 
-const onDelete = (data: { modelId: number; objectId: number; oamId: number; oamTitle: string }) => {
-  const { modelId, objectId, oamId, oamTitle } = data
+const onDeleteOAM = (data: { bizId: number; objectId: number; oamId: number; oamTitle: string }) => {
+  const { bizId, objectId, oamId, oamTitle } = data
   ElMessageBox.confirm(`确认删除「${oamTitle}」吗?`, '确认信息').then(async () => {
   ElMessageBox.confirm(`确认删除「${oamTitle}」吗?`, '确认信息').then(async () => {
-    await deleteObjectOAMById(modelId, objectId, oamId)
+    await deleteObjectOAMById(bizId, objectId, oamId)
     await getOAMTree()
     await getOAMTree()
     ElMessage.success({
     ElMessage.success({
       message: '删除成功',
       message: '删除成功',
@@ -151,17 +165,21 @@ const handleClick = (tab: TabsPaneContext, event: Event) => {
   console.log(tab, event)
   console.log(tab, event)
 }
 }
 
 
-const onObjectRuleSearch = () => {
+const objectOAMRuleRef = ref()
+const onObjectOAMRuleSearch = () => {
 
 
 }
 }
 
 
-const onObjectRuleAdd = () => {
+const onObjectOAMRuleAdd = () => {
+  objectOAMRuleRef.value.showAddModel(bizId, objectId, state.curOamId)
 }
 }
 
 
-const onObjectRuleEdit = (row: { }) => {
+const onObjectOAMRuleEdit = (row: { orId: number }) => {
+  objectOAMRuleRef.value.showEditModel(bizId, objectId, state.curOamId, row.orId)
 }
 }
 
 
-const onObjectRuleDelete = (row: { }) => {
+const onObjectOAMRuleDelete = (row: { }) => {
+
 }
 }
 // 返回列表页
 // 返回列表页
 function goBack() {
 function goBack() {
@@ -255,7 +273,7 @@ function goBack() {
               <tool-bar>
               <tool-bar>
                 <template #right>
                 <template #right>
                   <el-input v-model="state.search.keywords" placeholder="请输入名称,支持模糊查询" style="padding-right: 10px;" clearable />
                   <el-input v-model="state.search.keywords" placeholder="请输入名称,支持模糊查询" style="padding-right: 10px;" clearable />
-                  <el-button type="primary" @click="onObjectRuleSearch">
+                  <el-button type="primary" @click="onObjectOAMRuleSearch">
                     <template #icon>
                     <template #icon>
                       <el-icon>
                       <el-icon>
                         <svg-icon name="i-ep:search" />
                         <svg-icon name="i-ep:search" />
@@ -263,18 +281,18 @@ function goBack() {
                     </template>
                     </template>
                   </el-button>
                   </el-button>
 
 
-                  <el-button type="primary" size="default" @click.stop="onObjectRuleAdd">
+                  <el-button type="primary" size="default" @click.stop="onObjectOAMRuleAdd">
                     <template #icon>
                     <template #icon>
                       <el-icon>
                       <el-icon>
                         <svg-icon name="i-ep:plus" />
                         <svg-icon name="i-ep:plus" />
                       </el-icon>
                       </el-icon>
                     </template>
                     </template>
-                    业务对象
+                    业务规则
                   </el-button>
                   </el-button>
                 </template>
                 </template>
               </tool-bar>
               </tool-bar>
 
 
-              <el-table ref="objectRuleTableRef" v-loading="state.loading" class="list-table" :data="state.objectRuleList" border stripe highlight-current-row height="100%">
+              <el-table ref="objectRuleTableRef" v-loading="state.loading" class="list-table" :data="state.objectOamRuleList" border stripe highlight-current-row height="100%">
                 <el-table-column type="index" label="序号" header-align="center" align="center" width="70" />
                 <el-table-column type="index" label="序号" header-align="center" align="center" width="70" />
 
 
                 <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200">
                 <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200">
@@ -286,16 +304,15 @@ function goBack() {
                   </template>
                   </template>
                 </el-table-column>
                 </el-table-column>
 
 
-                <el-table-column prop="objectCode" label="代码" header-align="center" align="center" width="150" />
+                <el-table-column prop="ruleTitle" label="规则" header-align="center" align="center" width="150" />
 
 
-                <el-table-column prop="comment" label="说明" header-align="center" align="left" />
 
 
                 <el-table-column label="操作" header-align="center" align="center" width="230">
                 <el-table-column label="操作" header-align="center" align="center" width="230">
                   <template #default="scope">
                   <template #default="scope">
-                    <el-button type="warning" size="small" plain @click="onObjectRuleEdit(scope.row)">
+                    <el-button type="warning" size="small" plain @click="onObjectOAMRuleEdit(scope.row)">
                       编辑
                       编辑
                     </el-button>
                     </el-button>
-                    <el-button type="danger" size="small" plain @click="onObjectRuleDelete(scope.row)">
+                    <el-button type="danger" size="small" plain @click="onObjectOAMRuleDelete(scope.row)">
                       删除
                       删除
                     </el-button>
                     </el-button>
                   </template>
                   </template>
@@ -307,6 +324,7 @@ function goBack() {
       </LayoutContainer>
       </LayoutContainer>
     </div>
     </div>
     <ObjectOAMComponent ref="objectOAMRef" @success="getOAMTree" />
     <ObjectOAMComponent ref="objectOAMRef" @success="getOAMTree" />
+    <ObjectOAMRuleComponent ref="objectOAMRuleRef" @success="getObjectOAMRuleList" />
   </div>
   </div>
 </template>
 </template>