24282 11 ماه پیش
والد
کامیت
7c5515953b

+ 144 - 101
jy-ui/src/components/flow/PropertySetting/between.vue

@@ -1,6 +1,13 @@
 <template>
   <div class="between">
-    <el-form ref="formRef" :model="form" label-width="120px" size="small" :rules="rules" :disabled="disabled">
+    <el-form
+      ref="formRef"
+      :model="form"
+      label-width="120px"
+      size="small"
+      :rules="rules"
+      :disabled="disabled"
+    >
       <slot name="form-item-task-nodeCode" :model="form" field="nodeCode">
         <el-form-item label="节点编码">
           <el-input v-model="form.nodeCode" :disabled="disabled"></el-input>
@@ -14,7 +21,7 @@
       <slot name="form-item-task-collaborativeWay" :model="form" field="collaborativeWay">
         <el-form-item label="协作方式">
           <el-radio-group v-model="form.collaborativeWay" @change="collaborativeWayChange">
-            <el-radio label="1" v-if="form.collaborativeWay ==='1'">
+            <el-radio label="1" v-if="form.collaborativeWay === '1'">
               <span class="flex-hc">
                 或签
                 <el-tooltip class="box-item" effect="dark" content="只需一个人审批">
@@ -24,7 +31,7 @@
                 </el-tooltip>
               </span>
             </el-radio>
-            <el-radio label="2" v-if="form.collaborativeWay ==='2'">
+            <el-radio label="2" v-if="form.collaborativeWay === '2'">
               <span class="flex-hc">
                 票签
                 <el-tooltip class="box-item" effect="dark" content="部分办理人审批,只支持选择用户">
@@ -34,10 +41,14 @@
                 </el-tooltip>
               </span>
             </el-radio>
-            <el-radio label="3" v-if="form.collaborativeWay ==='3'">
+            <el-radio label="3" v-if="form.collaborativeWay === '3'">
               <span class="flex-hc">
                 会签
-                <el-tooltip class="box-item" effect="dark" content="所有办理都需要审批,只支持选择用户">
+                <el-tooltip
+                  class="box-item"
+                  effect="dark"
+                  content="所有办理都需要审批,只支持选择用户"
+                >
                   <el-icon :size="14" class="ml5">
                     <WarningFilled />
                   </el-icon>
@@ -47,30 +58,42 @@
           </el-radio-group>
         </el-form-item>
       </slot>
-      <slot name="form-item-task-nodeRatio" :model="form" field="nodeRatio" v-if="form.collaborativeWay === '2'">
+      <slot
+        name="form-item-task-nodeRatio"
+        :model="form"
+        field="nodeRatio"
+        v-if="form.collaborativeWay === '2'"
+      >
         <el-form-item label="票签占比" prop="nodeRatio">
           <el-input v-model="form.nodeRatio" type="number" placeholder="请输入"></el-input>
           <div class="placeholder">票签比例范围:(0-100)的值</div>
         </el-form-item>
       </slot>
       <slot name="form-item-task-permissionFlag" :model="form" field="permissionFlag">
-        <el-tooltip
-          effect="dark"
-          :content="userNameList"
-          :disabled="!disabled"
-        >
+        <el-tooltip effect="dark" :content="userNameList" :disabled="!disabled">
           <el-form-item label="办理人选择">
-            <el-select v-model="form.permissionFlag" allow-create multiple collapse-tags :disabled="disabled" :clearable="!disabled" filterable v-if="form.collaborativeWay === '1'">
+            <el-select
+              v-model="form.permissionFlag"
+              allow-create
+              multiple
+              collapse-tags
+              :disabled="disabled"
+              :clearable="!disabled"
+              filterable
+              v-if="form.collaborativeWay === '1'"
+            >
               <el-option-group
                 v-for="groupOption in groupOptions"
                 :key="groupOption.label"
                 :label="groupOption.label"
-                :disabled="disabled">
+                :disabled="disabled"
+              >
                 <el-option
                   v-for="item in groupOption.options"
                   :key="item.value"
                   :label="item.label"
-                  :value="item.value">
+                  :value="item.value"
+                >
                 </el-option>
               </el-option-group>
             </el-select>
@@ -90,7 +113,8 @@
                 v-for="item in form.permissionFlag"
                 :key="item"
                 :label="item"
-                :value="item">
+                :value="item"
+              >
               </el-option>
             </el-select>
           </el-form-item>
@@ -116,9 +140,16 @@
         </el-form-item>
       </slot>
       <slot name="form-item-task-listenerPath" :model="form" field="listenerPath">
-        <el-form-item label="监听器路径" description="输入监听器的路径,以@@分隔,顺序与监听器类型一致">
+        <el-form-item
+          label="监听器路径"
+          description="输入监听器的路径,以@@分隔,顺序与监听器类型一致"
+        >
           <el-input type="textarea" v-model="form.listenerPath" rows="8"></el-input>
-          <el-tooltip class="box-item" effect="dark" content="输入监听器的路径,以@@分隔,顺序与监听器类型一致">
+          <el-tooltip
+            class="box-item"
+            effect="dark"
+            content="输入监听器的路径,以@@分隔,顺序与监听器类型一致"
+          >
             <el-icon :size="14" class="mt5">
               <WarningFilled />
             </el-icon>
@@ -134,7 +165,12 @@
           </el-select>
         </el-form-item>
       </slot>
-      <slot name="form-item-task-formPath" :model="form" field="formPath" v-if="form.formCustom === 'N'">
+      <slot
+        name="form-item-task-formPath"
+        :model="form"
+        field="formPath"
+        v-if="form.formCustom === 'N'"
+      >
         <el-form-item label="审批表单路径">
           <el-input v-model="form.formPath"></el-input>
         </el-form-item>
@@ -143,147 +179,154 @@
 
     <!-- 权限标识:会签票签选择用户 -->
     <el-dialog title="用户选择" v-if="userVisible" v-model="userVisible" width="80%" append-to-body>
-<!--      <selectUser v-model:selectUser="form.permissionFlag" v-model:userVisible="userVisible" @handleUserSelect="handleUserSelect"></selectUser>-->
+      <!--      <selectUser v-model:selectUser="form.permissionFlag" v-model:userVisible="userVisible" @handleUserSelect="handleUserSelect"></selectUser>-->
     </el-dialog>
   </div>
 </template>
 
 <script setup lang="ts">
-import {WarningFilled} from "@element-plus/icons-vue";
-import {getListApi as getRoleListApi} from "@/api/system/role";
-import {getListApi as getUserListApi} from "@/api/system/user";
-import {getListApi as getDeptListApi} from "@/api/system/dept";
-import {getUsernameApi} from "@/api/flow/definition";
+import { WarningFilled } from '@element-plus/icons-vue'
+import { getListApi as getRoleListApi } from '@/api/system/role'
+import { getListApi as getUserListApi } from '@/api/system/user'
+import { getListApi as getDeptListApi } from '@/api/system/dept'
+import { getUsernameApi } from '@/api/flow/definition'
 
-const { proxy } = getCurrentInstance();
+const { proxy } = getCurrentInstance()
 
 const props = defineProps({
   modelValue: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
-  },
-});
+  }
+})
 
-const form = ref(props.modelValue);
-const userNameList = ref("");
-const groupOptions = ref([]);
+const form = ref(props.modelValue)
+const userNameList = ref('')
+const groupOptions = ref([])
 const rules = reactive({
   nodeRatio: [
-    { required: false, message: "请输入", trigger: "change" },
-    { pattern: /^(?:[1-9]\d?|0\.\d{1,3}|[1-9]\d?\.\d{1,3})$/, message: "请输入(0, 100)的值,最多保留三位小数", trigger: ["change", "blur"] }
+    { required: false, message: '请输入', trigger: 'change' },
+    {
+      pattern: /^(?:[1-9]\d?|0\.\d{1,3}|[1-9]\d?\.\d{1,3})$/,
+      message: '请输入(0, 100)的值,最多保留三位小数',
+      trigger: ['change', 'blur']
+    }
   ]
-});
-const userVisible = ref(false);
-const emit = defineEmits(["change"]);
-
-watch(() => form, n => {
-  if (n) {
-    emit('change', n)
-  }
-},{ deep: true });
+})
+const userVisible = ref(false)
+const emit = defineEmits(['change'])
 
+watch(
+  () => form,
+  (n) => {
+    if (n) {
+      emit('change', n)
+    }
+  },
+  { deep: true }
+)
 
 // 根据id查用户名
 function getIdReverseDisplayName() {
-  if (form.value.collaborativeWay !== "1") {
-    getUsernameApi(form.value.permissionFlag.join(",")).then(res => {
-      userNameList.value = res.data ? res.data.map(e => e.nickName).join(",") : "";
-    });
+  if (form.value.collaborativeWay !== '1') {
+    getUsernameApi(form.value.permissionFlag.join(',')).then((res) => {
+      userNameList.value = res.data ? res.data.map((e) => e.nickName).join(',') : ''
+    })
   }
 }
 
 /** 选择角色权限范围触发 */
 function getPermissionFlag() {
   if (form.value.permissionFlag) {
-    form.value.permissionFlag = form.value.permissionFlag.split(",")
+    form.value.permissionFlag = form.value.permissionFlag.split(',')
   }
   if (form.value.listenerType) {
-    form.value.listenerType = form.value.listenerType.split(",")
+    form.value.listenerType = form.value.listenerType.split(',')
   }
-  getRoleListApi({ status: 1 }).then(resp => {
+  getRoleListApi({ status: 1 }).then((resp) => {
     let groupOptionCreateBy = {
       label: '创建人',
-      options: [{
-        value: 'warmFlowInitiator',
-        label: '流程发起人'
-      }]
+      options: [
+        {
+          value: 'warmFlowInitiator',
+          label: '流程发起人'
+        }
+      ]
     }
-    groupOptions.value.push(groupOptionCreateBy);
+    groupOptions.value.push(groupOptionCreateBy)
     let groupOption = {
       label: '角色',
-      options: resp.map(item =>{
-            return {
-              value: 'role:' + item.id,
-              label: item.name
-            }
-          }
-      )
+      options: resp.map((item) => {
+        return {
+          value: 'role:' + item.id,
+          label: item.name
+        }
+      })
     }
-    groupOptions.value.push(groupOption);
-    getUserListApi({status: 1}).then(resp => {
+    groupOptions.value.push(groupOption)
+    getUserListApi({ status: 1 }).then((resp) => {
       let groupOption = {
         label: '用户',
-        options: resp.map(item =>{
-              return {
-                value: item.id,
-                label: item.nickname
-              }
-            }
-        )
+        options: resp.map((item) => {
+          return {
+            value: item.id,
+            label: item.nickname
+          }
+        })
       }
-      groupOptions.value.push(groupOption);
-      getDeptListApi().then(resp => {
+      groupOptions.value.push(groupOption)
+      getDeptListApi().then((resp) => {
         let groupOption = {
           label: '部门',
-          options: resp.map(item =>{
-                return {
-                  value: 'dept:' + item.id,
-                  label: item.name
-                }
-              }
-          )
+          options: resp.map((item) => {
+            return {
+              value: 'dept:' + item.id,
+              label: item.name
+            }
+          })
         }
-        groupOptions.value.push(groupOption);
-        if (props.disabled && form.value.collaborativeWay === "1") {
-          let userNameList = [];
-          groupOptions.value.forEach(e => {
-            e.options.forEach(o => {
-              if (form.value.permissionFlag.includes(o.value)) userNameList.push(o.label);
-            });
-          });
-          userNameList.value = userNameList.join(",");
+        groupOptions.value.push(groupOption)
+        if (props.disabled && form.value.collaborativeWay === '1') {
+          let userNameList = []
+          groupOptions.value.forEach((e) => {
+            e.options.forEach((o) => {
+              if (form.value.permissionFlag.includes(o.value)) userNameList.push(o.label)
+            })
+          })
+          userNameList.value = userNameList.join(',')
         }
-      });
-    });
-  });
+      })
+    })
+  })
 }
 
 function collaborativeWayChange(val) {
-  form.value.permissionFlag = [];
-  form.value.nodeRatio = val === "1" ? "0.000" : val === "3" ? "100.000" : "";
+  form.value.permissionFlag = []
+  form.value.nodeRatio = val === '1' ? '0.000' : val === '3' ? '100.000' : ''
 }
 
 // 打开用户选择弹窗
 function initUser() {
-  userVisible.value = true;
-  proxy.$refs.userSelect.blur();
+  userVisible.value = true
+  proxy.$refs.userSelect.blur()
 }
 
 // 获取选中用户数据
 function handleUserSelect(checkedItemList) {
-  form.value.permissionFlag = checkedItemList.map(e => {
-    return e.userId;
-  });
+  form.value.permissionFlag = checkedItemList.map((e) => {
+    return e.userId
+  })
 }
 
-getPermissionFlag();
-if (props.disabled) getIdReverseDisplayName();
+getPermissionFlag()
+if (props.disabled) getIdReverseDisplayName()
 </script>
 
 <style scoped>

+ 17 - 16
jy-ui/src/components/flow/PropertySetting/end.vue

@@ -16,31 +16,32 @@
 </template>
 
 <script setup lang="ts">
-
 const props = defineProps({
   modelValue: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
-  },
-});
-
-const form = ref(props.modelValue);
-const emit = defineEmits(["change"]);
-
-watch(() => form, n => {
-  if (n) {
-    emit('change', n)
   }
-},{ deep: true });
+})
 
-</script>
+const form = ref(props.modelValue)
+const emit = defineEmits(['change'])
 
-<style scoped>
+watch(
+  () => form,
+  (n) => {
+    if (n) {
+      emit('change', n)
+    }
+  },
+  { deep: true }
+)
+</script>
 
-</style>
+<style scoped></style>

+ 188 - 136
jy-ui/src/components/flow/PropertySetting/index.vue

@@ -1,7 +1,12 @@
 <template>
   <div>
     <a-dialog :title="title" v-model="drawer" @close="handleClose">
-      <component :is="componentType" v-model="form" :disabled="disabled" :skipConditionShow="skipConditionShow">
+      <component
+        :is="componentType"
+        v-model="form"
+        :disabled="disabled"
+        :skipConditionShow="skipConditionShow"
+      >
         <template v-slot:[key]="data" v-for="(item, key) in $slots">
           <slot :name="key" v-bind="data || {}"></slot>
         </template>
@@ -30,36 +35,38 @@ const COMPONENT_LIST = {
 const props = defineProps({
   value: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
   node: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
   lf: {
     type: Object,
-    default () {
+    default() {
       return null
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
   },
-  skipConditionShow: { // 是否显示跳转条件
+  skipConditionShow: {
+    // 是否显示跳转条件
     type: Boolean,
     default: true
-  },
-});
+  }
+})
 
-const drawer = ref(false);
-const form = ref({});
-const objId = ref(undefined);
-const nodeCode = ref(null);
+const drawer = ref(false)
+const form = ref({})
+const objId = ref(undefined)
+const nodeCode = ref(null)
 const title = computed(() => {
   if (props.node && props.node.type === 'skip') {
     return '设置边属性'
@@ -73,161 +80,206 @@ const title = computed(() => {
     return '设置结束属性'
   }
   return '设置中间属性'
-});
+})
 // 组件类型
 const componentType = computed(() => {
   if (!props.node || !props.node.type) return
   return COMPONENT_LIST[props.node.type]
 })
 
-
-watch(() => props.node, n => {
-  if (n) {
-    objId.value = n.id
-    if (n.type === 'skip') {
-      let skipCondition = n.properties.skipCondition
-      let conditionSpl = skipCondition ? skipCondition.split('@@|') : []
-      let conditionSplTwo = conditionSpl && conditionSpl.length > 0 ? conditionSpl[1]: []
-      let condition, conditionType, conditionValue = '';
-      if (conditionSpl && conditionSpl.length > 0 && conditionSpl[0] === '@@spel') {
-        conditionType = 'spel'
-        conditionValue = conditionSplTwo
-      } else if (conditionSpl && conditionSpl.length > 0 && conditionSpl[0] !== '@@spel') {
-        condition = conditionSplTwo && conditionSplTwo.length > 0 ? conditionSplTwo.split("@@")[0] : ''
-        conditionType = conditionSplTwo && conditionSplTwo.length > 0 ? conditionSplTwo.split("@@")[1] : ''
-        conditionValue = conditionSplTwo && conditionSplTwo.length > 0 ? conditionSplTwo.split("@@")[2] : ''
-      }
-      form.value = {
-        nodeType: n.type,
-        skipType: n.properties.skipType,
-        skipName: n.text instanceof Object ? n.text.value : n.text,
-        skipCondition: skipCondition,
-        condition: condition,
-        conditionType: conditionType,
-        conditionValue: conditionValue
-      }
-    } else {
-      let nodeRatio = n.properties.nodeRatio || "";
-      if (!n.properties.collaborativeWay) {
-        n.properties.collaborativeWay = nodeRatio === "0.000" ? "1" : nodeRatio === "100.000" ? "3" : nodeRatio ? "2" : "1";
-      }
-      n.properties.formCustom = JSON.stringify(n.properties) === "{}" ? "N" : (n.properties.formCustom || "");
-      form.value = {
-        nodeType: n.type,
-        nodeCode: n.id,
-        ...n.properties,
-        nodeName: n.text instanceof Object ? n.text.value : n.text
+watch(
+  () => props.node,
+  (n) => {
+    if (n) {
+      objId.value = n.id
+      if (n.type === 'skip') {
+        let skipCondition = n.properties.skipCondition
+        let conditionSpl = skipCondition ? skipCondition.split('@@|') : []
+        let conditionSplTwo = conditionSpl && conditionSpl.length > 0 ? conditionSpl[1] : []
+        let condition,
+          conditionType,
+          conditionValue = ''
+        if (conditionSpl && conditionSpl.length > 0 && conditionSpl[0] === '@@spel') {
+          conditionType = 'spel'
+          conditionValue = conditionSplTwo
+        } else if (conditionSpl && conditionSpl.length > 0 && conditionSpl[0] !== '@@spel') {
+          condition =
+            conditionSplTwo && conditionSplTwo.length > 0 ? conditionSplTwo.split('@@')[0] : ''
+          conditionType =
+            conditionSplTwo && conditionSplTwo.length > 0 ? conditionSplTwo.split('@@')[1] : ''
+          conditionValue =
+            conditionSplTwo && conditionSplTwo.length > 0 ? conditionSplTwo.split('@@')[2] : ''
+        }
+        form.value = {
+          nodeType: n.type,
+          skipType: n.properties.skipType,
+          skipName: n.text instanceof Object ? n.text.value : n.text,
+          skipCondition: skipCondition,
+          condition: condition,
+          conditionType: conditionType,
+          conditionValue: conditionValue
+        }
+      } else {
+        let nodeRatio = n.properties.nodeRatio || ''
+        if (!n.properties.collaborativeWay) {
+          n.properties.collaborativeWay =
+            nodeRatio === '0.000' ? '1' : nodeRatio === '100.000' ? '3' : nodeRatio ? '2' : '1'
+        }
+        n.properties.formCustom =
+          JSON.stringify(n.properties) === '{}' ? 'N' : n.properties.formCustom || ''
+        form.value = {
+          nodeType: n.type,
+          nodeCode: n.id,
+          ...n.properties,
+          nodeName: n.text instanceof Object ? n.text.value : n.text
+        }
       }
     }
   }
-});
+)
 
-watch(() => form.value.nodeCode, (n) => {
-  nodeCode.value = n;
-});
+watch(
+  () => form.value.nodeCode,
+  (n) => {
+    nodeCode.value = n
+  }
+)
 
-watch(() => form.value.skipType, (n) => {
-  // 监听跳转属性变化并更新
-  props.lf.setProperties(objId.value, {
-    skipType: n
-  })
+watch(
+  () => form.value.skipType,
+  (n) => {
+    // 监听跳转属性变化并更新
+    props.lf.setProperties(objId.value, {
+      skipType: n
+    })
+  }
+)
 
-});
+watch(
+  () => form.value.nodeName,
+  (n) => {
+    // 监听节点名称变化并更新
+    props.lf.updateText(objId.value, n)
+    // 监听节点名称变化并更新
+    props.lf.setProperties(objId.value, {
+      nodeName: n
+    })
+  }
+)
 
-watch(() => form.value.nodeName, (n) => {
-  // 监听节点名称变化并更新
-  props.lf.updateText(objId.value, n)
-  // 监听节点名称变化并更新
-  props.lf.setProperties(objId.value, {
-    nodeName: n
-  })
-});
+watch(
+  () => form.value.collaborativeWay,
+  (n) => {
+    // 监听节点属性变化并更新
+    props.lf.setProperties(objId.value, {
+      nodeRatio: n === '1' ? '0.000' : n === '3' ? '100.000' : ''
+    })
+  }
+)
 
-watch(() => form.value.collaborativeWay, (n) => {
-  // 监听节点属性变化并更新
-  props.lf.setProperties(objId.value, {
-    nodeRatio: n === "1" ? "0.000" : n === "3" ? "100.000" : ""
-  })
-});
+watch(
+  () => form.value.nodeRatio,
+  (n) => {
+    // 监听节点属性变化并更新
+    props.lf.setProperties(objId.value, {
+      nodeRatio: n
+    })
+  }
+)
 
-watch(() => form.value.nodeRatio, (n) => {
-  // 监听节点属性变化并更新
-  props.lf.setProperties(objId.value, {
-    nodeRatio: n
-  })
-});
+watch(
+  () => form.value.permissionFlag,
+  (n) => {
+    // 监听节点属性变化并更新
+    props.lf.setProperties(objId.value, {
+      permissionFlag: Array.isArray(n) ? n.join(',') : n
+    })
+  }
+)
 
-watch(() => form.value.permissionFlag, (n) => {
-  // 监听节点属性变化并更新
-  props.lf.setProperties(objId.value, {
-    permissionFlag: Array.isArray(n) ? n.join(',') : n
-  })
-});
+watch(
+  () => form.value.skipAnyNode,
+  (n) => {
+    // 监听跳转属性变化并更新
+    props.lf.setProperties(objId.value, {
+      skipAnyNode: n
+    })
+  }
+)
+watch(
+  () => form.value.listenerType,
+  (n) => {
+    // 确保 n 是一个数组
+    if (!Array.isArray(n)) {
+      n = [n] // 将 n 转换为数组
+    }
 
-watch(() => form.value.skipAnyNode, (n) => {
-  // 监听跳转属性变化并更新
-  props.lf.setProperties(objId.value, {
-    skipAnyNode: n
-  })
-});
-watch(() => form.value.listenerType, (n) => {
-  // 确保 n 是一个数组
-  if (!Array.isArray(n)) {
-    n = [n]; // 将 n 转换为数组
+    // 将数组元素连接为字符串
+    let listenerTypeStr = n.join(',')
+    // 监听监听器类型变化并更新
+    props.lf.setProperties(objId.value, {
+      listenerType: listenerTypeStr
+    })
   }
+)
 
-  // 将数组元素连接为字符串
-  let listenerTypeStr = n.join(",");
-  // 监听监听器类型变化并更新
-  props.lf.setProperties(objId.value, {
-    listenerType: listenerTypeStr
-  })
-});
+watch(
+  () => form.value.listenerPath,
+  (n) => {
+    // 监听监听器路径变化并更新
+    props.lf.setProperties(objId.value, {
+      listenerPath: n
+    })
+  }
+)
 
-watch(() => form.value.listenerPath, (n) => {
-  // 监听监听器路径变化并更新
-  props.lf.setProperties(objId.value, {
-    listenerPath: n
-  })
-});
+watch(
+  () => form.value.formCustom,
+  (n) => {
+    props.lf.setProperties(objId.value, {
+      formCustom: n || ''
+    })
+  }
+)
 
-watch(() => form.value.formCustom, (n) => {
-  props.lf.setProperties(objId.value, {
-    formCustom: n || ""
-  })
-});
+watch(
+  () => form.value.formPath,
+  (n) => {
+    props.lf.setProperties(objId.value, {
+      formPath: n
+    })
+  }
+)
 
-watch(() => form.value.formPath, (n) => {
-  props.lf.setProperties(objId.value, {
-    formPath: n
-  })
-});
+watch(
+  () => form.value.skipName,
+  (n) => {
+    if (['skip'].includes(props.node.type)) {
+      // 监听跳转名称变化并更新
+      props.lf.updateText(objId.value, n)
+      // 监听跳转属性变化并更新
+      props.lf.setProperties(objId.value, {
+        skipName: n
+      })
+    }
+  }
+)
 
-watch(() => form.value.skipName, (n) => {
-  if (['skip'].includes(props.node.type)) {
-    // 监听跳转名称变化并更新
-    props.lf.updateText(objId.value, n)
+watch(
+  () => form.value.skipCondition,
+  (n) => {
     // 监听跳转属性变化并更新
     props.lf.setProperties(objId.value, {
-      skipName: n
+      skipCondition: n
     })
   }
-});
-
-watch(() => form.value.skipCondition, (n) => {
-  // 监听跳转属性变化并更新
-  props.lf.setProperties(objId.value, {
-    skipCondition: n
-  })
-
-});
-
+)
 
-function show () {
+function show() {
   drawer.value = true
 }
 
-function handleClose () {
+function handleClose() {
   // 监听节点编码变量并更新
   if (nodeCode.value && objId.value) {
     if (['skip'].includes(props.node?.type)) {

+ 17 - 15
jy-ui/src/components/flow/PropertySetting/parallel.vue

@@ -16,30 +16,32 @@
 </template>
 
 <script setup lang="ts">
-
 const props = defineProps({
   modelValue: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
-  },
-});
+  }
+})
 
-const form = ref(props.modelValue);
-const emit = defineEmits(["change"]);
+const form = ref(props.modelValue)
+const emit = defineEmits(['change'])
 
-watch(() => form, n => {
-  if (n) {
-    emit('change', n)
-  }
-},{ deep: true });
+watch(
+  () => form,
+  (n) => {
+    if (n) {
+      emit('change', n)
+    }
+  },
+  { deep: true }
+)
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>

+ 17 - 16
jy-ui/src/components/flow/PropertySetting/serial.vue

@@ -16,31 +16,32 @@
 </template>
 
 <script setup lang="ts">
-
 const props = defineProps({
   modelValue: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
-  },
-});
-
-const form = ref(props.modelValue);
-const emit = defineEmits(["change"]);
-
-watch(() => form, n => {
-  if (n) {
-    emit('change', n)
   }
-},{ deep: true });
+})
 
-</script>
+const form = ref(props.modelValue)
+const emit = defineEmits(['change'])
 
-<style scoped>
+watch(
+  () => form,
+  (n) => {
+    if (n) {
+      emit('change', n)
+    }
+  },
+  { deep: true }
+)
+</script>
 
-</style>
+<style scoped></style>

+ 64 - 45
jy-ui/src/components/flow/PropertySetting/skip.vue

@@ -3,32 +3,51 @@
     <el-form ref="formRef" :model="form" label-width="120px" size="small" :disabled="disabled">
       <slot name="form-item-task-skipName" v-if="skipConditionShow" :model="form" field="skipName">
         <el-form-item label="跳转名称">
-          <el-input v-model="form.skipName" placeholder="跳转名称"/>
+          <el-input v-model="form.skipName" placeholder="跳转名称" />
         </el-form-item>
       </slot>
       <slot name="form-item-task-skipType" :model="form" field="skipType">
         <el-form-item label="跳转类型">
           <el-select v-model="form.skipType">
-            <el-option sel label="审批通过" value="PASS"/>
-            <el-option label="退回" value="REJECT"/>
+            <el-option sel label="审批通过" value="PASS" />
+            <el-option label="退回" value="REJECT" />
           </el-select>
         </el-form-item>
       </slot>
-      <slot name="form-item-task-skipCondition" v-if="skipConditionShow" :model="form" field="skipCondition">
+      <slot
+        name="form-item-task-skipCondition"
+        v-if="skipConditionShow"
+        :model="form"
+        field="skipCondition"
+      >
         <el-form-item label="跳转条件">
-          <el-input v-model="form.condition" v-if="!spelFlag" placeholder="条件名" style="width: 20%"/>
-          <el-select v-model="form.conditionType" placeholder="请选择条件方式" style="width: 35%;margin-left: 1%" @change="changeOper">
-            <el-option label="大于" value="gt"/>
-            <el-option label="大于等于" value="ge"/>
-            <el-option label="等于" value="eq"/>
-            <el-option label="不等于" value="ne"/>
-            <el-option label="小于" value="lt"/>
-            <el-option label="小于等于" value="le"/>
-            <el-option label="包含" value="like"/>
-            <el-option label="不包含" value="notNike"/>
-            <el-option label="spel表达式" value="spel"/>
+          <el-input
+            v-model="form.condition"
+            v-if="!spelFlag"
+            placeholder="条件名"
+            style="width: 20%"
+          />
+          <el-select
+            v-model="form.conditionType"
+            placeholder="请选择条件方式"
+            style="width: 35%; margin-left: 1%"
+            @change="changeOper"
+          >
+            <el-option label="大于" value="gt" />
+            <el-option label="大于等于" value="ge" />
+            <el-option label="等于" value="eq" />
+            <el-option label="不等于" value="ne" />
+            <el-option label="小于" value="lt" />
+            <el-option label="小于等于" value="le" />
+            <el-option label="包含" value="like" />
+            <el-option label="不包含" value="notNike" />
+            <el-option label="spel表达式" value="spel" />
           </el-select>
-          <el-input v-model="form.conditionValue" placeholder="条件值" style="width: 42%;margin-left: 1%;margin-right: 1%;"/>
+          <el-input
+            v-model="form.conditionValue"
+            placeholder="条件值"
+            style="width: 42%; margin-left: 1%; margin-right: 1%"
+          />
         </el-form-item>
       </slot>
     </el-form>
@@ -36,7 +55,6 @@
 </template>
 
 <script setup lang="ts">
-
 const props = defineProps({
   modelValue: {
     type: Object,
@@ -44,44 +62,45 @@ const props = defineProps({
       return {}
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
   },
-  skipConditionShow: { // 是否显示跳转条件
+  skipConditionShow: {
+    // 是否显示跳转条件
     type: Boolean,
     default: true
-  },
-});
+  }
+})
 
-const spelFlag = ref(false);
-const form = ref(props.modelValue);
-const emit = defineEmits(["change"]);
+const spelFlag = ref(false)
+const form = ref(props.modelValue)
+const emit = defineEmits(['change'])
 
-watch(() => form, n => {
-  n = n.value;
-  let skipCondition = n.skipCondition;
-  skipCondition = "@@" + n.conditionType + "@@|";
-  if (n.conditionType !== 'spel') {
-    skipCondition = skipCondition
-      + (n.condition ? n.condition : '') + "@@"
-      + n.conditionType + "@@";
-  }
-  n.skipCondition = skipCondition
-    + (n.conditionValue ? n.conditionValue : '')
-  if (n) {
-    emit('change', n)
-  }
-}, {deep: true});
+watch(
+  () => form,
+  (n) => {
+    n = n.value
+    let skipCondition = n.skipCondition
+    skipCondition = '@@' + n.conditionType + '@@|'
+    if (n.conditionType !== 'spel') {
+      skipCondition =
+        skipCondition + (n.condition ? n.condition : '') + '@@' + n.conditionType + '@@'
+    }
+    n.skipCondition = skipCondition + (n.conditionValue ? n.conditionValue : '')
+    if (n) {
+      emit('change', n)
+    }
+  },
+  { deep: true }
+)
 
 function changeOper(obj) {
-  spelFlag.value = obj === 'spel';
+  spelFlag.value = obj === 'spel'
 }
 
-if (props.modelValue?.conditionType === 'spel') spelFlag.value = true;
-
+if (props.modelValue?.conditionType === 'spel') spelFlag.value = true
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>

+ 27 - 19
jy-ui/src/components/flow/PropertySetting/start.vue

@@ -23,9 +23,16 @@
         </el-form-item>
       </slot>
       <slot name="form-item-task-listenerPath" :model="form" field="listenerPath">
-        <el-form-item label="监听器路径" description="输入监听器的路径,以@@分隔,顺序与监听器类型一致">
+        <el-form-item
+          label="监听器路径"
+          description="输入监听器的路径,以@@分隔,顺序与监听器类型一致"
+        >
           <el-input type="textarea" v-model="form.listenerPath" rows="8"></el-input>
-          <el-tooltip class="item" effect="dark" content="输入监听器的路径,以@@分隔,顺序与监听器类型一致">
+          <el-tooltip
+            class="item"
+            effect="dark"
+            content="输入监听器的路径,以@@分隔,顺序与监听器类型一致"
+          >
             <i class="el-icon-question"></i>
           </el-tooltip>
         </el-form-item>
@@ -35,35 +42,36 @@
 </template>
 
 <script setup lang="ts">
-
 const props = defineProps({
   modelValue: {
     type: Object,
-    default () {
+    default() {
       return {}
     }
   },
-  disabled: { // 是否禁止
+  disabled: {
+    // 是否禁止
     type: Boolean,
     default: false
-  },
-});
-
-const form = ref(props.modelValue);
-const emit = defineEmits(["change"]);
-
-watch(() => form, n => {
-  if (n) {
-    emit('change', n)
   }
-},{ deep: true });
+})
 
+const form = ref(props.modelValue)
+const emit = defineEmits(['change'])
+
+watch(
+  () => form,
+  (n) => {
+    if (n) {
+      emit('change', n)
+    }
+  },
+  { deep: true }
+)
 
 if (form.value.listenerType) {
-  form.value.listenerType = form.value.listenerType.split(",")
+  form.value.listenerType = form.value.listenerType.split(',')
 }
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>

+ 8 - 9
jy-ui/src/components/flow/js/between.js

@@ -1,12 +1,11 @@
-import {RectNode, RectNodeModel} from "@logicflow/core";
+import { RectNode, RectNodeModel } from '@logicflow/core'
 
 class BetweenModel extends RectNodeModel {
-
   initNodeData(data) {
-    super.initNodeData(data);
-    this.width = 100;
-    this.height = 80;
-    this.radius = 5;
+    super.initNodeData(data)
+    this.width = 100
+    this.height = 80
+    this.radius = 5
   }
   getNodeStyle() {
     return super.getNodeStyle()
@@ -16,7 +15,7 @@ class BetweenModel extends RectNodeModel {
 class BetweenView extends RectNode {}
 
 export default {
-  type: "between",
+  type: 'between',
   model: BetweenModel,
-  view: BetweenView,
-};
+  view: BetweenView
+}

+ 5 - 6
jy-ui/src/components/flow/js/end.js

@@ -1,9 +1,8 @@
-import { CircleNode, CircleNodeModel } from "@logicflow/core";
+import { CircleNode, CircleNodeModel } from '@logicflow/core'
 
 class endModel extends CircleNodeModel {
-
   initNodeData(data) {
-    super.initNodeData(data);
+    super.initNodeData(data)
     this.r = 20
   }
 }
@@ -11,7 +10,7 @@ class endModel extends CircleNodeModel {
 class endView extends CircleNode {}
 
 export default {
-  type: "end",
+  type: 'end',
   model: endModel,
-  view: endView,
-};
+  view: endView
+}

+ 6 - 8
jy-ui/src/components/flow/js/parallel.js

@@ -1,8 +1,8 @@
 import { h, PolygonNode, PolygonNodeModel } from '@logicflow/core'
 
 class ParallelModel extends PolygonNodeModel {
-  static extendKey = 'ParallelModel';
-  constructor (data, graphModel) {
+  static extendKey = 'ParallelModel'
+  constructor(data, graphModel) {
     if (!data.text) {
       data.text = ''
     }
@@ -21,12 +21,11 @@ class ParallelModel extends PolygonNodeModel {
       [0, 25]
     ]
   }
-
 }
 
 class ParallelView extends PolygonNode {
-  static extendKey = 'ParallelNode';
-  getShape () {
+  static extendKey = 'ParallelNode'
+  getShape() {
     const { model } = this.props
     const { x, y, width, height, points } = model
     const style = model.getNodeStyle()
@@ -42,8 +41,7 @@ class ParallelView extends PolygonNode {
         points
       }),
       h('path', {
-        d:
-          'm 23,10 0,12.5 -12.5,0 0,5 12.5,0 0,12.5 5,0 0,-12.5 12.5,0 0,-5 -12.5,0 0,-12.5 -5,0 z',
+        d: 'm 23,10 0,12.5 -12.5,0 0,5 12.5,0 0,12.5 5,0 0,-12.5 12.5,0 0,-5 -12.5,0 0,-12.5 -5,0 z',
         ...style
       })
     )
@@ -54,4 +52,4 @@ export default {
   type: 'parallel',
   view: ParallelView,
   model: ParallelModel
-};
+}

+ 6 - 8
jy-ui/src/components/flow/js/serial.js

@@ -1,8 +1,8 @@
 import { h, PolygonNode, PolygonNodeModel } from '@logicflow/core'
 
 class SerialModel extends PolygonNodeModel {
-  static extendKey = 'SerialModel';
-  constructor (data, graphModel) {
+  static extendKey = 'SerialModel'
+  constructor(data, graphModel) {
     if (!data.text) {
       data.text = ''
     }
@@ -21,12 +21,11 @@ class SerialModel extends PolygonNodeModel {
       [0, 25]
     ]
   }
-
 }
 
 class SerialView extends PolygonNode {
-  static extendKey = 'SerialNode';
-  getShape () {
+  static extendKey = 'SerialNode'
+  getShape() {
     const { model } = this.props
     const { x, y, width, height, points } = model
     const style = model.getNodeStyle()
@@ -42,8 +41,7 @@ class SerialView extends PolygonNode {
         points
       }),
       h('path', {
-        d:
-          'm 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z',
+        d: 'm 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z',
         ...style
       })
     )
@@ -54,4 +52,4 @@ export default {
   type: 'serial',
   view: SerialView,
   model: SerialModel
-};
+}

+ 13 - 14
jy-ui/src/components/flow/js/skip.js

@@ -1,33 +1,32 @@
-import { PolylineEdge, PolylineEdgeModel } from "@logicflow/core";
+import { PolylineEdge, PolylineEdgeModel } from '@logicflow/core'
 
 class SkipModel extends PolylineEdgeModel {
   setAttributes() {
-    this.offset = 20;
+    this.offset = 20
   }
 
   getEdgeStyle() {
-    const style = super.getEdgeStyle();
-    const { properties } = this;
+    const style = super.getEdgeStyle()
+    const { properties } = this
     if (properties.isActived) {
-      style.strokeDasharray = "4 4";
+      style.strokeDasharray = '4 4'
     }
-    return style;
+    return style
   }
 
   /**
    * 重写此方法,使保存数据是能带上锚点数据。
    */
   getData() {
-    const data = super.getData();
-    data.sourceAnchorId = this.sourceAnchorId;
-    data.targetAnchorId = this.targetAnchorId;
-    return data;
+    const data = super.getData()
+    data.sourceAnchorId = this.sourceAnchorId
+    data.targetAnchorId = this.targetAnchorId
+    return data
   }
-
 }
 
 export default {
-  type: "skip",
+  type: 'skip',
   view: PolylineEdge,
-  model: SkipModel,
-};
+  model: SkipModel
+}

+ 5 - 6
jy-ui/src/components/flow/js/start.js

@@ -1,9 +1,8 @@
-import { CircleNode, CircleNodeModel } from "@logicflow/core";
+import { CircleNode, CircleNodeModel } from '@logicflow/core'
 
 class StartModel extends CircleNodeModel {
-
   initNodeData(data) {
-    super.initNodeData(data);
+    super.initNodeData(data)
     this.r = 20
   }
 }
@@ -11,7 +10,7 @@ class StartModel extends CircleNodeModel {
 class StartView extends CircleNode {}
 
 export default {
-  type: "start",
+  type: 'start',
   model: StartModel,
-  view: StartView,
-};
+  view: StartView
+}

+ 75 - 58
jy-ui/src/components/flow/js/tool.js

@@ -5,14 +5,14 @@
  * @returns {*}
  */
 export const nodeStyleHandle = (_this, style) => {
-  if (_this.properties.status === "pass") {
-    style.stroke = "green";
-  } else if (_this.properties.status === "reject") {
-    style.stroke = "#ffba00";
-  } else if (_this.properties.status === "approval") {
-    style.stroke = "red";
+  if (_this.properties.status === 'pass') {
+    style.stroke = 'green'
+  } else if (_this.properties.status === 'reject') {
+    style.stroke = '#ffba00'
+  } else if (_this.properties.status === 'approval') {
+    style.stroke = 'red'
   } else {
-    style.stroke = "#909399";
+    style.stroke = '#909399'
   }
   return style
 }
@@ -24,9 +24,9 @@ export const nodeStyleHandle = (_this, style) => {
  * @returns {*}
  */
 export const nodeSizeHandle = (_this) => {
-  _this.width = 120;
-  _this.height = 80;
-  _this.radius = 5;
+  _this.width = 120
+  _this.height = 80
+  _this.radius = 5
 }
 
 /**
@@ -45,7 +45,6 @@ export const skipText = (skipType) => {
   return text
 }
 
-
 /**
  * 解析xml成Dom对象
  * @param {} xml
@@ -56,7 +55,8 @@ export const parseXml2Dom = (xml) => {
   if (window.DOMParser) {
     const parser = new DOMParser()
     xmlDoc = parser.parseFromString(xml, 'text/xml')
-  } else { // Internet Explorer
+  } else {
+    // Internet Explorer
     // eslint-disable-next-line no-undef
     xmlDoc = new ActiveXObject('Microsoft.XMLDOM')
     xmlDoc.async = false
@@ -70,8 +70,19 @@ const NODE_NAMES = ['start', 'between', 'serial', 'parallel', 'end']
 // 流程节点属性
 const DEFINITION_KEYS = ['flowCode', 'flowName', 'version', 'fromCustom', 'fromPath']
 // 节点属性
-const NODE_ATTR_KEYS = ['nodeType', 'nodeCode', 'nodeName', 'coordinate', 'nodeRatio', 'permissionFlag', "skipAnyNode"
-    , "listenerType", "listenerPath", "formCustom", "formPath"]
+const NODE_ATTR_KEYS = [
+  'nodeType',
+  'nodeCode',
+  'nodeName',
+  'coordinate',
+  'nodeRatio',
+  'permissionFlag',
+  'skipAnyNode',
+  'listenerType',
+  'listenerPath',
+  'formCustom',
+  'formPath'
+]
 // 变迁节点属性
 const SKIP_ATTR_KEYS = ['skipName', 'skipType', 'coordinate', 'skipCondition']
 
@@ -92,7 +103,7 @@ export const xml2LogicFlowJson = (xml) => {
   }
   let value = null
   // 解析definition属性
-  DEFINITION_KEYS.forEach(key => {
+  DEFINITION_KEYS.forEach((key) => {
     value = definitionDom[0].getAttribute(key)
     if (value) {
       graphData[key] = value
@@ -102,16 +113,16 @@ export const xml2LogicFlowJson = (xml) => {
   let node = null
   let lfNode = {}
   // 解析节点
-  nodeEles = definitionDom[0].getElementsByTagName("node")
+  nodeEles = definitionDom[0].getElementsByTagName('node')
   if (nodeEles.length) {
     for (var i = 0, len = nodeEles.length; i < len; i++) {
       node = nodeEles[i]
       lfNode = {
-        text:{},
+        text: {},
         properties: {}
       }
       // 处理节点
-      NODE_ATTR_KEYS.forEach(attrKey => {
+      NODE_ATTR_KEYS.forEach((attrKey) => {
         value = node.getAttribute(attrKey)
         if (value) {
           if (attrKey === 'nodeType') {
@@ -145,7 +156,7 @@ export const xml2LogicFlowJson = (xml) => {
         skipEle = skipEles[j]
         edge = {
           text: {},
-          properties: {},
+          properties: {}
         }
         edge.id = skipEle.getAttribute('id')
         edge.type = 'skip'
@@ -153,7 +164,6 @@ export const xml2LogicFlowJson = (xml) => {
         edge.targetNodeId = skipEle.textContent
         edge.text = {
           value: skipEle.getAttribute('skipName')
-
         }
         edge.properties.skipCondition = skipEle.getAttribute('skipCondition')
         edge.properties.skipName = skipEle.getAttribute('skipName')
@@ -176,7 +186,7 @@ export const xml2LogicFlowJson = (xml) => {
           edge.startPoint = edge.pointsList[0]
           edge.endPoint = edge.pointsList[edge.pointsList.length - 1]
           if (coordinateXy.length > 1) {
-            let textXy = coordinateXy[1].split(",");
+            let textXy = coordinateXy[1].split(',')
             edge.text.x = parseInt(textXy[0])
             edge.text.y = parseInt(textXy[1])
           }
@@ -203,7 +213,7 @@ export const logicFlowJsonToFlowXml = (data) => {
     flowName: data.flowName, // 流程定义名称
     version: data.version, // 流程定义版本号
     fromCustom: data.fromCustom, // 表单自定义
-    fromPath: data.fromPath, // 表单自定义路径
+    fromPath: data.fromPath // 表单自定义路径
   }
   /**
    * 获取开始节点
@@ -220,13 +230,15 @@ export const logicFlowJsonToFlowXml = (data) => {
    * @returns
    */
   const getNextNodes = (id) => {
-    return data.edges.filter(edge => {
-      return edge.sourceNodeId === id
-    }).map(edge => {
-      return data.nodes.find((node) => {
-        return node.id === edge.targetNodeId
+    return data.edges
+      .filter((edge) => {
+        return edge.sourceNodeId === id
+      })
+      .map((edge) => {
+        return data.nodes.find((node) => {
+          return node.id === edge.targetNodeId
+        })
       })
-    })
   }
   /**
    * 获取节点所有跳转
@@ -234,27 +246,30 @@ export const logicFlowJsonToFlowXml = (data) => {
    * @returns
    */
   const getSkip = (id) => {
-    return data.edges.filter((edge) => {
-      return edge.sourceNodeId === id
-    }).map(edge => {
-      let coordinate = ''
-      for (let i = 0; i < edge.pointsList.length; i++) {
-        coordinate = coordinate + parseInt(edge.pointsList[i].x) + ',' + parseInt(edge.pointsList[i].y)
-        if (i !== edge.pointsList.length - 1) {
-          coordinate = coordinate + ';'
+    return data.edges
+      .filter((edge) => {
+        return edge.sourceNodeId === id
+      })
+      .map((edge) => {
+        let coordinate = ''
+        for (let i = 0; i < edge.pointsList.length; i++) {
+          coordinate =
+            coordinate + parseInt(edge.pointsList[i].x) + ',' + parseInt(edge.pointsList[i].y)
+          if (i !== edge.pointsList.length - 1) {
+            coordinate = coordinate + ';'
+          }
         }
-      }
-      if (edge.text) {
-        coordinate = coordinate + '|' + parseInt(edge.text.x) + ',' + parseInt(edge.text.y)
-      }
-      return {
-        skipType: edge.properties.skipType,
-        skipCondition: edge.properties.skipCondition,
-        skipName: edge?.text?.value || edge.properties.skipName,
-        textContent: edge.targetNodeId, // 目地节点id
-        coordinate: coordinate,
-      }
-    })
+        if (edge.text) {
+          coordinate = coordinate + '|' + parseInt(edge.text.x) + ',' + parseInt(edge.text.y)
+        }
+        return {
+          skipType: edge.properties.skipType,
+          skipCondition: edge.properties.skipCondition,
+          skipName: edge?.text?.value || edge.properties.skipName,
+          textContent: edge.targetNodeId, // 目地节点id
+          coordinate: coordinate
+        }
+      })
   }
   /**
    * 构建节点属性
@@ -262,14 +277,15 @@ export const logicFlowJsonToFlowXml = (data) => {
    * @returns
    */
   const buildNode = (node) => {
-    let textXy = '';
+    let textXy = ''
     if (node.text) {
-      textXy = '|' + node.text.x + ',' + node.text.y;
+      textXy = '|' + node.text.x + ',' + node.text.y
     }
     return {
       nodeType: node.type,
       nodeCode: node.id,
-      nodeName: (node.text instanceof String || node.text === undefined) ? node.text : node.text.value,
+      nodeName:
+        node.text instanceof String || node.text === undefined ? node.text : node.text.value,
       permissionFlag: node.properties.permissionFlag,
       nodeRatio: node.properties.nodeRatio,
       skipAnyNode: node.properties.skipAnyNode,
@@ -287,7 +303,8 @@ export const logicFlowJsonToFlowXml = (data) => {
    * @returns
    */
   const textEncode = (text) => {
-    text = text.replace(/&/g, '&amp;')
+    text = text
+      .replace(/&/g, '&amp;')
       .replace(/"/g, '&quot;')
       .replace(/</g, '&lt;')
       .replace(/>/g, '&gt;')
@@ -302,7 +319,7 @@ export const logicFlowJsonToFlowXml = (data) => {
     if (!definitionObj[nodeName + '_' + node.id]) {
       definitionObj[nodeName + '_' + node.id] = buildNode(node)
       const nextNodes = getNextNodes(node.id)
-      nextNodes.forEach(nextNode => {
+      nextNodes.forEach((nextNode) => {
         recursionBuildNode(nextNode)
       })
     }
@@ -315,7 +332,7 @@ export const logicFlowJsonToFlowXml = (data) => {
   recursionBuildNode(startNode)
   xml = '<?xml version="1.0" encoding="UTF-8"?>\n'
   xml += '<definition'
-  Object.keys(definitionObj).forEach(key => {
+  Object.keys(definitionObj).forEach((key) => {
     const value = definitionObj[key]
     if (DEFINITION_KEYS.includes(key) && value) {
       xml += ' ' + key + '=' + '"' + textEncode(value) + '"'
@@ -323,13 +340,13 @@ export const logicFlowJsonToFlowXml = (data) => {
   })
   xml += '>\n'
   // 生成节点xml
-  Object.keys(definitionObj).forEach(key => {
+  Object.keys(definitionObj).forEach((key) => {
     const value = definitionObj[key]
     let nodeName = key.split('_')[0]
     if (NODE_NAMES.includes(nodeName)) {
       xml += '\t<node'
       // 构造属性
-      Object.keys(value).forEach(nodeAttrKey => {
+      Object.keys(value).forEach((nodeAttrKey) => {
         if (NODE_ATTR_KEYS.includes(nodeAttrKey) && value[nodeAttrKey]) {
           xml += ' ' + nodeAttrKey + '=' + '"' + textEncode(value[nodeAttrKey]) + '"'
         }
@@ -337,10 +354,10 @@ export const logicFlowJsonToFlowXml = (data) => {
       xml += '>\n\t'
       // 构建skip
       if (value.skip) {
-        value.skip.forEach(skip => {
+        value.skip.forEach((skip) => {
           xml += '\t<skip'
           // skip属性
-          Object.keys(skip).forEach(skipAttrKey => {
+          Object.keys(skip).forEach((skipAttrKey) => {
             if (SKIP_ATTR_KEYS.includes(skipAttrKey) && skip[skipAttrKey]) {
               xml += ' ' + skipAttrKey + '=' + '"' + textEncode(skip[skipAttrKey]) + '"'
             }

+ 16 - 17
jy-ui/src/views/flow/definition/design.vue

@@ -2,12 +2,12 @@
   <a-dialog v-model="visible" title="流程设计" width="1200px">
     <div class="container" ref="containerRef">
       <PropertySetting
-          ref="propertySettingRef"
-          :node="nodeClick"
-          v-model="processForm"
-          :lf="lf"
-          :disabled="disabled"
-          :skipConditionShow="skipConditionShow"
+        ref="propertySettingRef"
+        :node="nodeClick"
+        v-model="processForm"
+        :lf="lf"
+        :disabled="disabled"
+        :skipConditionShow="skipConditionShow"
       >
         <template v-slot:[key]="data" v-for="(item, index) in $slots">
           <slot :name="index" v-bind="data || {}"></slot>
@@ -30,8 +30,8 @@ import End from '@/components/flow/js/end'
 import Skip from '@/components/flow/js/skip'
 import PropertySetting from '@/components/flow/PropertySetting/index.vue'
 import { logicFlowJsonToFlowXml, xml2LogicFlowJson } from '@/components/flow/js/tool'
-import {getXmlApi, saveXmlApi} from '@/api/flow/definition'
-import {nextTick} from "vue";
+import { getXmlApi, saveXmlApi } from '@/api/flow/definition'
+import { nextTick } from 'vue'
 
 const { proxy } = getCurrentInstance()
 
@@ -47,13 +47,13 @@ const xmlString = ref('')
 const skipConditionShow = ref(true)
 
 const props = withDefaults(
-    defineProps<{
-      modelValue: boolean
-      disabled?: boolean
-    }>(),
-    {
-      disabled: false
-    }
+  defineProps<{
+    modelValue: boolean
+    disabled?: boolean
+  }>(),
+  {
+    disabled: false
+  }
 )
 
 const computedModelValue = computed({
@@ -271,7 +271,7 @@ function open(id?: string) {
     if (id) {
       definitionId.value = id
       getXmlApi(definitionId.value).then((resp) => {
-        xmlString.value = resp;
+        xmlString.value = resp
         if (resp) {
           value.value = xml2LogicFlowJson(resp)
           lf.value.render(value.value)
@@ -282,7 +282,6 @@ function open(id?: string) {
 }
 
 defineExpose({ open })
-
 </script>
 
 <style scoped>

+ 1 - 1
jy-ui/src/views/flow/definition/index.vue

@@ -12,7 +12,7 @@ import {
   getDefinitionPageApi,
   updateDefinitionApi
 } from '@/api/flow/definition'
-import Design from "@/views/flow/definition/design.vue";
+import Design from '@/views/flow/definition/design.vue'
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()