Bläddra i källkod

feat(EasyProcess): 为节点抽屉添加自动生成节点名称功能

在多个节点抽屉组件中添加getnameWithParams方法,用于根据分类和参数自动生成节点名称
修改drawer_wrap组件,在保存时自动填充未设置的节点名称
优化节点名称输入框的提示信息和校验规则
zhanghaijun 9 månader sedan
förälder
incheckning
83ab2d0391

+ 1 - 1
src/components/business/EasyProcess/core/course.scheme.ts

@@ -17,7 +17,7 @@ export const getDataCommon = (showFile: boolean = false) => {
  */
 export const nodeDataCommon = [
   { prop: '', label: '', labelWidth: '0px', component: 'Divider', colSpan: 24, componentProps: { title: '基础配置' } },
-  { prop: 'nodeName', label: '节点名称', component: 'Input', rules: [{ required: true, message: '请输入节点名称', trigger: ['blur'] }] },
+  { prop: 'nodeName', label: '节点名称', component: 'Input', rules: [], componentProps: { placeholder: '请输入节点名称,默认:操作角色+分类名称+子分类名称+参数' } },
   { prop: 'nodeDetail', label: '节点详细信息', component: 'Input' },
   {
     prop: 'bindRole',

+ 11 - 4
src/components/business/EasyProcess/core/drawer_course.vue

@@ -44,10 +44,17 @@
 
   defineExpose({
     getValues: async () => {
-      await commonFormApi.validate()
-      await triggerFormApi.validate()
-      const values = await commonFormApi.getValues()
-      const nodeTrigger = await triggerFormApi.getValues()
+      console.log('getValues', props.nodeId, props.data)
+      let values: Record<string, any> = {}
+      let nodeTrigger: Record<string, any> = {}
+      if (isCourse.value) {
+        await commonFormApi.validate()
+        values = await commonFormApi.getValues()
+      }
+      if (isFault.value) {
+        await triggerFormApi.validate()
+        nodeTrigger = await triggerFormApi.getValues()
+      }
       return {
         nodeID: Number(props.nodeId),
         nodeName: String(values.nodeName || ''),

+ 49 - 12
src/components/business/EasyProcess/core/drawer_wrap.vue

@@ -25,6 +25,7 @@
   import DrawerDefault from './drawer_default.vue'
   import { ProcessHelper } from '../common/process.helper'
   import { ProcessConstant } from '../common/process.data'
+  import request from '@/api'
 
   const props = withDefaults(defineProps<{ node: Process.NodeConfig }>(), {})
   const processHelper = inject<ProcessHelper>(ProcessConstant.KEY_PROCESS_HELPER)
@@ -37,55 +38,91 @@
   const faultDrawerRef = ref()
   const voiceDrawerRef = ref()
 
+  const roleOptions = ref<{ label: string; value: number }[]>([])
+  const getRoleName = async () => {
+    const { data } = await request.post<{ roleID: number; roleName: string }[]>('/role/list')
+    roleOptions.value = data!.map((item) => ({ label: item.roleName, value: item.roleID }))
+  }
+  const findRolename = (roleID: number) => {
+    const find = roleOptions.value.find((item) => item.value === roleID)
+    return find?.label || ''
+  }
+
   const [Dialog, dialogApi] = useDialog({
     width: '40%',
     dialogType: 'drawer',
     modal: true,
     destroyOnClose: true,
     async onConfirm() {
+      let nodeData: Record<string, unknown> = {}
+      let nodenameParams = ''
       switch (processNode.value?.nodeType) {
         case 'cognize': {
           const data = await courseDrawerRef.value.getValues()
           const cognizeData = await cognizeDrawerRef.value.getValues()
-          console.log(cognizeData)
-          processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), cognizeNode: cognizeData })
-          dialogApi.close()
+          nodeData = { ...data, nodeID: Number(props.node.nodeId), cognizeNode: cognizeData }
+          nodenameParams = cognizeDrawerRef.value.getnameWithParams()
+          // processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), cognizeNode: cognizeData })
+          // dialogApi.close()
           break
         }
         case 'operation': {
           const data = await courseDrawerRef.value.getValues()
           const operationData = await operationDrawerRef.value.getValues()
-          console.log(operationData)
-          processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), operationNode: operationData })
-          dialogApi.close()
+          nodeData = { ...data, nodeID: Number(props.node.nodeId), operationNode: operationData }
+          nodenameParams = await operationDrawerRef.value.getnameWithParams()
+          // processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), operationNode: operationData })
+          // dialogApi.close()
           break
         }
         case 'fault': {
           const data = await courseDrawerRef.value.getValues()
           const faultData = await faultDrawerRef.value.getValues()
-          processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), faultNode: faultData })
-          dialogApi.close()
+          nodeData = { ...data, nodeID: Number(props.node.nodeId), faultNode: faultData }
+          nodenameParams = await faultDrawerRef.value.getnameWithParams()
+          // processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), faultNode: faultData })
+          // dialogApi.close()
           break
         }
         case 'voice': {
           const data = await courseDrawerRef.value.getValues()
           const voiceData = await voiceDrawerRef.value.getValues()
-          processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), voiceNode: voiceData })
-          dialogApi.close()
+          nodeData = { ...data, nodeID: Number(props.node.nodeId), voiceNode: voiceData }
+          nodenameParams = await voiceDrawerRef.value.getnameWithParams()
+          // processHelper?.updateNode(props.node.nodeId, { ...data, nodeID: Number(props.node.nodeId), voiceNode: voiceData })
+          // dialogApi.close()
           break
         }
         case 'condition': {
           const conditionData = await conditionDrawerRef.value.getValues()
-          processHelper?.updateNode(props.node.nodeId, { ...conditionData, nodeID: Number(props.node.nodeId) })
-          dialogApi.close()
+          nodeData = { ...conditionData, nodeID: Number(props.node.nodeId) }
+          nodenameParams = ''
+          // processHelper?.updateNode(props.node.nodeId, { ...conditionData, nodeID: Number(props.node.nodeId) })
+          // dialogApi.close()
           break
         }
         default:
+          nodeData = {}
+          nodenameParams = ''
           ElMessage.error('错误节点类型')
           break
       }
+      if (Object.keys(nodeData).length === 0) {
+        ElMessage.error('请配置节点数据')
+        return
+      }
+      if (String(nodeData.nodeName ?? '').length === 0) {
+        // 操作角色+分类名称+子分类名称+参数
+        const rolename = findRolename(Number(nodeData.bindRole ?? 0))
+        nodeData.nodeName = `${rolename ?? ''}-${nodenameParams}`
+      }
+      processHelper?.updateNode(props.node.nodeId, nodeData)
+      dialogApi.close()
     }
   })
+  onMounted(() => {
+    getRoleName()
+  })
   defineExpose({
     show(node: Process.NodeConfig) {
       processNode.value = node

+ 3 - 0
src/components/business/EasyProcess/node/cognize_drawer.vue

@@ -53,6 +53,9 @@
   })
 
   defineExpose({
+    getnameWithParams: () => {
+      return ''
+    },
     getValues: async () => {
       await formApi.validate()
       const values = (await formApi.getValues()) as Record<string, any> | undefined

+ 1 - 0
src/components/business/EasyProcess/node/condition_drawer.vue

@@ -36,6 +36,7 @@
   })
 
   defineExpose({
+    getnameWithParams: () => '',
     getValues: async () => {
       await formApi.validate()
       return formApi.getValues()

+ 4 - 0
src/components/business/EasyProcess/node/fault_drawer.vue

@@ -163,6 +163,10 @@
   })
 
   defineExpose({
+    getnameWithParams: async () => {
+      const values = (await formApi.getValues()) as Record<string, any> | undefined
+      return `${values?.categoryName ?? ''}-${values?.subCategoryName ?? ''}-${templateSelected.value?.param1Desc ?? ''}${templateSelected.value?.param2Desc ?? ''}${templateSelected.value?.param3Desc ?? ''}${templateSelected.value?.param4Desc ?? ''}${templateSelected.value?.param5Desc ?? ''}`
+    },
     getValues: async () => {
       await formApi.validate()
       const values = (await formApi.getValues()) as Record<string, any> | undefined

+ 4 - 0
src/components/business/EasyProcess/node/operation_drawer.vue

@@ -218,6 +218,10 @@
   })
 
   defineExpose({
+    getnameWithParams: async () => {
+      const values = (await formApi.getValues()) as Record<string, any> | undefined
+      return `${values?.categoryName ?? ''}-${values?.subCategoryName ?? ''}-${templateSelected.value?.param1Desc ?? ''}${templateSelected.value?.param2Desc ?? ''}${templateSelected.value?.param3Desc ?? ''}${templateSelected.value?.param4Desc ?? ''}${templateSelected.value?.param5Desc ?? ''}`
+    },
     getValues: async () => {
       await formApi.validate()
       const values = (await formApi.getValues()) as Record<string, any> | undefined

+ 3 - 0
src/components/business/EasyProcess/node/voice_drawer.vue

@@ -81,6 +81,9 @@
   })
 
   defineExpose({
+    getnameWithParams: () => {
+      return ''
+    },
     getValues: async () => {
       await formApi.validate()
       const values = (await formApi.getValues()) as Record<string, any> | undefined

+ 1 - 3
src/components/form/components/upload.vue

@@ -193,9 +193,7 @@
   }
   const _getFileInfoByIds = (val: string | string[] | undefined) => {
     if (!val) return
-    getFileInfoByIds({
-      fileInfoIds: val
-    }).then((res) => {
+    getFileInfoByIds({ fileInfoIds: val }).then((res) => {
       if (!Array.isArray(res)) {
         console.warn('Expected array from getFileInfoByIds, but got:', res)
         return

+ 1 - 1
src/views/train/course/detail/course.schema.ts

@@ -42,7 +42,7 @@ export const courseSchema: FormItemSchema[] = [
   {
     prop: 'runningMap',
     label: '运行图',
-    component: 'ApiDict',
+    component: 'Select',
     componentProps: (values) => {
       // return { code: 'course_run_map' }
       const items = [