houyaf 3 anni fa
parent
commit
5c7d75ad0a

+ 6 - 9
src/views/biz/oam/index.vue

@@ -6,8 +6,8 @@ meta:
 <script lang="ts" setup name="BizObjectOAM">
 import type { TabsPaneContext } from 'element-plus'
 import { ElMessage, ElMessageBox } from 'element-plus'
+import ObjectOAMRuleComponent from '../rule/components/objectOAMRule.vue'
 import ObjectOAMComponent from './components/objectOAM.vue'
-import ObjectOAMRuleComponent from './components/objectOAMRule.vue'
 import useSettingsStore from '@/store/modules/settings'
 import { getObjectById } from '@/api/biz/bizObjectApi'
 import { deleteObjectOAMById, getObjectOAMById, getObjectOAMListByObjectId } from '@/api/biz/bizObjectOAMApi'
@@ -128,10 +128,11 @@ onMounted(() => {
 })
 
 // Object OAM选择
-const onTreeNodeClick = (node: TreeNode) => {
+const onTreeNodeClick = async (node: TreeNode) => {
   if (node.isLeaf) {
     state.curOamId = node.oamId
-    getObjectOAMData()
+    await getObjectOAMData()
+    await getObjectOAMRuleList()
   }
 }
 
@@ -164,7 +165,7 @@ const onSuccess = () => {
 const activeName = ref('first')
 
 const handleClick = (tab: TabsPaneContext, event: Event) => {
-  console.log(tab, event)
+  // console.log(tab, event)
 }
 
 const objectOAMRuleRef = ref()
@@ -316,11 +317,7 @@ function goBack() {
               </el-descriptions>
             </el-tab-pane>
 
-            <el-tab-pane label="查询参数" name="second">
-
-            </el-tab-pane>
-
-            <el-tab-pane label="业务规则" name="three">
+            <el-tab-pane label="业务规则" name="two">
               <tool-bar>
                 <template #left>
                   <h4>业务规则</h4>

+ 53 - 126
src/views/biz/params/index.vue

@@ -7,32 +7,25 @@ meta:
 import type { FormInstance, FormRules } from 'element-plus'
 import { ElMessage } from 'element-plus'
 import { dataType } from '@/utils/tool'
-import {
-  createObjectAttr,
-  deleteObjectAttrById,
-  getObjectAttrListById,
-  updateObjectAttr,
-} from '@/api/biz/bizObjectParamsApi'
+import { createObjectOAMParams, deleteObjectOAMParamsById, getObjectOAMParamsListByOamId, updateObjectOAMParams } from '@/api/biz/bizObjectOAMParamsApi'
 const props = withDefaults(defineProps<{
   bizId: number
   objectId: number
+  oamId: number
 }>(), {
   bizId: 0,
   objectId: 0,
+  oamId: 0,
 })
 
-interface ObjectAttr {
+interface ObjectOAMParams {
   bizId: number
   objectId: number
-  attrId: number
-  attrTitle: string
-  attrCode: string
-  mappingCode: string
-  attrType: number
-  attrLength: number
-  attrDecimals: number
-  isNotNull: number
-  comment: string
+  oamId: number
+  paramsId: number
+  paramsTarget: string
+  paramsOperator: string
+  paramsValue: string
   sortNo: number
   isEdit: boolean
 }
@@ -42,61 +35,53 @@ const state = reactive({
   title: '',
   dialogVisible: false,
   loading: false,
-  search: {
-    keywords: '',
-  },
   conditions: {
+    keywords: '',
     bizId: props.bizId,
     objectId: props.objectId,
+    oamId: props.oamId,
   },
-  attrs: [] as ObjectAttr[],
+  params: [] as ObjectOAMParams[],
   actionType: 1,
 })
 
 const formRef = ref<FormInstance>()
 const formRules = reactive<FormRules>({
-  objectTitle: [
+  paramsTarget: [
     { required: true, message: '请输入对象标题', trigger: 'blur' },
   ],
-  objectType: [
+  paramsOperator: [
     { required: true, message: '请输入对象类型', trigger: 'blur' },
   ],
-  objectCode: [
+  paramsValue: [
     { required: true, message: '请输入对像代码', trigger: 'blur' },
   ],
-  comment: [
-    { required: false, message: '请输入简要描述', trigger: 'blur' },
-  ],
 })
 
 // 查询数据
 const getData = async () => {
   state.loading = true
-  const { bizId, objectId } = state.conditions
-  const { data } = await getObjectAttrListById(bizId, objectId)
+  const { bizId, objectId, oamId } = state.conditions
+  const { data } = await getObjectOAMParamsListByOamId(bizId, objectId, oamId)
   state.loading = false
-  state.attrs = data
-  data.forEach((attr: ObjectAttr) => {
-    attr.isEdit = false
+  state.params = data
+  data.forEach((param: ObjectOAMParams) => {
+    param.isEdit = false
   })
 }
 
-const attrsTableRef = ref()
-const attrsTableKey = ref(0)
+const paramsTableRef = ref()
+const paramsTableKey = ref(0)
 
 function onAttrAdd() {
-  state.attrs.push({
+  state.params.push({
     bizId: props.bizId,
     objectId: props.objectId,
-    attrId: 0,
-    attrTitle: '', // 名称
-    attrCode: '', // 代码
-    mappingCode: '',
-    attrType: 0, // 类型
-    attrLength: 0, // 长度
-    attrDecimals: 0, // 小数位数
-    isNotNull: 0, // 是否为空
-    comment: '', // 注释
+    oamId: props.oamId,
+    paramsId: 0,
+    paramsTarget: '', // 名称
+    paramsOperator: '', // 代码
+    paramsValue: '',
     sortNo: 0,
     isEdit: true,
   })
@@ -109,16 +94,16 @@ function onAttrEdit(row: any) {
 }
 
 async function onAttrDelete(row: any) {
-  const { bizId, objectId } = state.conditions
-  const attrId = row.attrId
-  await deleteObjectAttrById(bizId, objectId, attrId)
+  const { bizId, objectId, oamId } = state.conditions
+  const paramsId = row.paramsId
+  await deleteObjectOAMParamsById(bizId, objectId, oamId, paramsId)
   ElMessage.success('删除成功')
 }
 
 function onAttrCancel(row: any, index: number) {
   row.isEdit = false
   if (state.actionType === 1) {
-    state.attrs.splice(index, 1)
+    state.params.splice(index, 1)
   }
   state.actionType = 0
 }
@@ -126,40 +111,22 @@ function onAttrCancel(row: any, index: number) {
 async function onAttrSave(row: any) {
   row.isEdit = false
   if (state.actionType === 1) {
-    await createObjectAttr(row)
+    await createObjectOAMParams(row)
     state.dialogVisible = false
     ElMessage.success('新增成功')
   }
   else {
-    await updateObjectAttr(row)
+    await updateObjectOAMParams(row)
     state.dialogVisible = false
     ElMessage.success('修改成功')
   }
 }
 
 onMounted(() => {
-  getData()
-  nextTick(() => {
-  })
+  // getData()
+  // nextTick(() => {
+  // })
 })
-
-// 保存
-function onSubmit() {
-  formRef.value && formRef.value.validate(async (valid) => {
-    if (valid) {
-      if (state.actionType === 1) {
-        await createObjectAttr(state.attrs)
-        state.dialogVisible = false
-        ElMessage.success('新增成功')
-      }
-      else {
-        await updateObjectAttr(state.attrs)
-        state.dialogVisible = false
-        ElMessage.success('修改成功')
-      }
-    }
-  })
-}
 </script>
 
 <template>
@@ -170,7 +137,7 @@ function onSubmit() {
           <h4>对象属性</h4>
         </template>
         <template #right>
-          <el-input v-model="state.search.keywords" placeholder="请输入关键词筛选" clearable style="width: 200px;" />
+          <el-input placeholder="请输入关键词筛选" clearable style="width: 200px;" />
           <el-button style="margin-left:10px" @click="getData">
             <template #icon>
               <el-icon>
@@ -189,81 +156,41 @@ function onSubmit() {
         </template>
       </tool-bar>
 
-      <el-table ref="attrsTableRef" :key="attrsTableKey" :data="state.attrs" class="list-table" size="small" border stripe highlight-current-row>
+      <el-table ref="paramsTableRef" :key="paramsTableKey" :data="state.params" class="list-table" size="small" border stripe highlight-current-row>
         <el-table-column type="index" label="序号" header-align="center" align="center" width="60" />
 
-        <el-table-column label="名称" header-align="center" align="center" width="150">
+        <el-table-column label="参数名称" header-align="center" align="center" width="150">
           <template #default="scope">
-            <el-input v-if="scope.row.isEdit" v-model="scope.row.attrTitle" size="small" />
-            <span v-else>{{ scope.row.attrTitle }}</span>
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.paramsTarget" size="small" />
+            <span v-else>{{ scope.row.paramsTarget }}</span>
           </template>
         </el-table-column>
 
-        <el-table-column label="代码" header-align="center" align="center" width="120">
+        <el-table-column label="运算符" header-align="center" align="center" width="120">
           <template #default="scope">
-            <el-input v-if="scope.row.isEdit" v-model="scope.row.attrCode" size="small" />
-            <span v-else>{{ scope.row.attrCode }}</span>
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.paramsOperator" size="small" />
+            <span v-else>{{ scope.row.paramsOperator }}</span>
           </template>
         </el-table-column>
 
-        <el-table-column label="映射代码" header-align="center" align="center" width="120">
+        <el-table-column label="" header-align="center" align="center" width="120">
           <template #default="scope">
-            <el-input v-if="scope.row.isEdit" v-model="scope.row.mappingCode" size="small" />
-            <span v-else>{{ scope.row.mappingCode }}</span>
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.paramsValue" size="small" />
+            <span v-else>{{ scope.row.paramsValue }}</span>
           </template>
         </el-table-column>
 
         <el-table-column label="类型" header-align="center" align="center" width="120">
           <template #default="scope">
-            <data-type-selector v-if="scope.row.isEdit" v-model="scope.row.attrType" />
-            <span v-else>{{ dataType(scope.row.attrType) }}</span>
-          </template>
-        </el-table-column>
-
-        <el-table-column label="长度" header-align="center" align="center" width="120">
-          <template #default="scope">
-            <el-input-number
-              v-if="scope.row.isEdit"
-              v-model="scope.row.attrLength" style="width:90px"
-              :min="0"
-              controls-position="right"
-              size="small"
-            />
-            <span v-else>{{ scope.row.attrLength }}</span>
-          </template>
-        </el-table-column>
-
-        <el-table-column label="小数位数" header-align="center" align="center" width="120">
-          <template #default="scope">
-            <el-input-number
-              v-if="scope.row.isEdit"
-              v-model="scope.row.attrDecimals" style="width:90px"
-              :min="0"
-              controls-position="right"
-              size="small"
-            />
-            <span v-else>{{ scope.row.attrDecimals }}</span>
-          </template>
-        </el-table-column>
-
-        <el-table-column label="是否为空" header-align="center" align="center" width="90">
-          <template #default="scope">
-            <el-checkbox
-              v-if="scope.row.isEdit"
-              v-model="scope.row.isNotNull"
-              :true-label="1"
-              :false-label="0"
-            >
-              {{ scope.row.isNotNull === 1 ? '是' : '否' }}
-            </el-checkbox>
-            <span v-else>{{ scope.row.isNotNull === 1 ? '是' : '否' }}</span>
+            <data-type-selector v-if="scope.row.isEdit" v-model="scope.row.paramsType" />
+            <span v-else>{{ dataType(scope.row.paramsType) }}</span>
           </template>
         </el-table-column>
 
-        <el-table-column label="注">
+        <el-table-column label="备注">
           <template #default="scope">
-            <el-input v-if="scope.row.isEdit" v-model="scope.row.comment" size="small" />
-            <span v-else>{{ scope.row.comment }}</span>
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.paramsRemark" size="small" />
+            <span v-else>{{ scope.row.paramsRemark }}</span>
           </template>
         </el-table-column>
 

+ 0 - 0
src/views/biz/oam/components/ObjectAttrSelector.vue → src/views/biz/rule/components/ObjectAttrSelector.vue


+ 1 - 1
src/views/biz/oam/components/ObjectOAMRule.vue → src/views/biz/rule/components/ObjectOAMRule.vue

@@ -7,7 +7,7 @@ meta:
 import type { FormInstance, FormRules } from 'element-plus'
 import { createObjectOAMRule, getObjectOAMRuleById, updateObjectOAMRule } from '@/api/biz/bizObjectOAMRuleApi'
 import RuleSelector from '@/views/biz/oam/components/RuleSelector.vue'
-import ObjectAttrSelector from '@/views/biz/oam/components/ObjectAttrSelector.vue'
+import ObjectAttrSelector from '@/views/biz/rule/components/ObjectAttrSelector.vue'
 const emit = defineEmits(['success'])
 
 const formRef = ref<FormInstance>()

+ 92 - 16
src/views/biz/rule/index.vue

@@ -1,12 +1,25 @@
-<script lang="ts" setup name="DbTypeIndex">
-import { getBizRuleByList } from '@/api/biz/bizRuleApi'
+<script lang="ts" setup name="BizObjectOAMRule">
+import BizObjectOAMRuleComponent from './components/ObjectOAMRule.vue'
+import { getObjectOAMRuleListByOamId } from '@/api/biz/bizObjectOAMRuleApi'
+const props = withDefaults(defineProps<{
+  bizId: number
+  objectId: number
+  oamId: number
+}>(), {
+  bizId: 0,
+  objectId: 0,
+  oamId: 0,
+})
 
 const state = reactive({
   loading: false,
   // 表格是否自适应高度
   tableAutoHeight: false,
   // 搜索
-  search: {
+  conditions: {
+    bizId: props.bizId,
+    objectId: props.objectId,
+    oamId: props.oamId,
     keywords: '',
   },
   // 列表数据
@@ -14,30 +27,93 @@ const state = reactive({
 })
 
 const getDataList = async () => {
-  state.loading = true
-  const { data } = await getBizRuleByList({})
-  state.dataList = data
-  state.loading = false
+  const { bizId, objectId, oamId } = state.conditions
+  if (oamId > 0) {
+    state.loading = true
+    const { data } = await getObjectOAMRuleListByOamId(bizId, objectId, oamId)
+    state.dataList = data
+    state.loading = false
+  }
 }
 
 onMounted(() => {
-  getDataList()
+  // getDataList()
 })
+
+const bizObjectOAMRuleRef = ref()
+const onObjectOAMRuleSearch = () => {
+
+}
+
+const onObjectOAMRuleAdd = () => {
+  const { bizId, objectId, oamId } = state.conditions
+  bizObjectOAMRuleRef.value.showAddModel(bizId, objectId, oamId)
+}
+
+const onObjectOAMRuleEdit = (row: { ruleId: number }) => {
+  const { bizId, objectId, oamId } = state.conditions
+  bizObjectOAMRuleRef.value.showEditModel(bizId, objectId, oamId)
+}
+
+const onObjectOAMRuleDelete = (row: { }) => {
+
+}
 </script>
 
 <template>
   <div class="absolute-container">
-    <tool-header title="业务规则" />
+    <tool-bar>
+      <template #left>
+        <h4>业务规则</h4>
+      </template>
+
+      <template #right>
+        <el-input v-model="state.conditions.keywords" placeholder="请输入名称,支持模糊查询" style="padding-right: 10px;" clearable />
+        <el-button type="primary" @click="onObjectOAMRuleSearch">
+          <template #icon>
+            <el-icon>
+              <svg-icon name="i-ep:search" />
+            </el-icon>
+          </template>
+        </el-button>
+
+        <el-button type="primary" size="default" @click.stop="onObjectOAMRuleAdd">
+          <template #icon>
+            <el-icon>
+              <svg-icon name="i-ep:plus" />
+            </el-icon>
+          </template>
+          业务规则
+        </el-button>
+      </template>
+    </tool-bar>
+
+    <el-table ref="objectRuleTableRef" v-loading="state.loading" class="list-table" :data="state.dataList" border stripe highlight-current-row height="100%">
+      <el-table-column type="index" label="序号" header-align="center" align="center" width="70" />
 
-    <page-main>
-      <el-table v-loading="state.loading" class="list-table" :data="state.dataList" border stripe highlight-current-row height="100%">
-        <el-table-column type="index" label="序号" width="60" header-align="center" align="center" />
+      <el-table-column prop="objectTitle" label="名称" header-align="center" align="center" width="200">
+        <template #default="scope">
+          <el-icon>
+            <svg-icon name="lucide:clipboard-check" />
+          </el-icon>
+          <span> &nbsp;&nbsp;{{ scope.row.objectTitle }}</span>
+        </template>
+      </el-table-column>
 
-        <el-table-column prop="ruleTitle" label="名称" header-align="center" align="center" width="200" />
+      <el-table-column prop="ruleTitle" label="规则" header-align="center" align="center" width="150" />
 
-        <el-table-column prop="ruleDesc" label="说明" />
-      </el-table>
-    </page-main>
+      <el-table-column label="操作" header-align="center" align="center" width="230">
+        <template #default="scope">
+          <el-button type="warning" size="small" plain @click="onObjectOAMRuleEdit(scope.row)">
+            编辑
+          </el-button>
+          <el-button type="danger" size="small" plain @click="onObjectOAMRuleDelete(scope.row)">
+            删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <BizObjectOAMRuleComponent ref="bizObjectOAMRuleRef" @success="getDataList" />
   </div>
 </template>