diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/components/drawer/copyerDrawer.vue b/src/components/drawer/copyerDrawer.vue new file mode 100644 index 0000000..a3fc819 --- /dev/null +++ b/src/components/drawer/copyerDrawer.vue @@ -0,0 +1,103 @@ + + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/components/drawer/copyerDrawer.vue b/src/components/drawer/copyerDrawer.vue new file mode 100644 index 0000000..a3fc819 --- /dev/null +++ b/src/components/drawer/copyerDrawer.vue @@ -0,0 +1,103 @@ + + + + + + diff --git a/src/components/drawer/promoterDrawer.vue b/src/components/drawer/promoterDrawer.vue new file mode 100644 index 0000000..7108976 --- /dev/null +++ b/src/components/drawer/promoterDrawer.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/components/drawer/copyerDrawer.vue b/src/components/drawer/copyerDrawer.vue new file mode 100644 index 0000000..a3fc819 --- /dev/null +++ b/src/components/drawer/copyerDrawer.vue @@ -0,0 +1,103 @@ + + + + + + diff --git a/src/components/drawer/promoterDrawer.vue b/src/components/drawer/promoterDrawer.vue new file mode 100644 index 0000000..7108976 --- /dev/null +++ b/src/components/drawer/promoterDrawer.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/components/nodeWrap.vue b/src/components/nodeWrap.vue new file mode 100644 index 0000000..0cd3792 --- /dev/null +++ b/src/components/nodeWrap.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/components/drawer/copyerDrawer.vue b/src/components/drawer/copyerDrawer.vue new file mode 100644 index 0000000..a3fc819 --- /dev/null +++ b/src/components/drawer/copyerDrawer.vue @@ -0,0 +1,103 @@ + + + + + + diff --git a/src/components/drawer/promoterDrawer.vue b/src/components/drawer/promoterDrawer.vue new file mode 100644 index 0000000..7108976 --- /dev/null +++ b/src/components/drawer/promoterDrawer.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/components/nodeWrap.vue b/src/components/nodeWrap.vue new file mode 100644 index 0000000..0cd3792 --- /dev/null +++ b/src/components/nodeWrap.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/src/components/selectBox.vue b/src/components/selectBox.vue new file mode 100644 index 0000000..e4f2c55 --- /dev/null +++ b/src/components/selectBox.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/components/drawer/copyerDrawer.vue b/src/components/drawer/copyerDrawer.vue new file mode 100644 index 0000000..a3fc819 --- /dev/null +++ b/src/components/drawer/copyerDrawer.vue @@ -0,0 +1,103 @@ + + + + + + diff --git a/src/components/drawer/promoterDrawer.vue b/src/components/drawer/promoterDrawer.vue new file mode 100644 index 0000000..7108976 --- /dev/null +++ b/src/components/drawer/promoterDrawer.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/components/nodeWrap.vue b/src/components/nodeWrap.vue new file mode 100644 index 0000000..0cd3792 --- /dev/null +++ b/src/components/nodeWrap.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/src/components/selectBox.vue b/src/components/selectBox.vue new file mode 100644 index 0000000..e4f2c55 --- /dev/null +++ b/src/components/selectBox.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/selectResult.vue b/src/components/selectResult.vue new file mode 100644 index 0000000..21c2de5 --- /dev/null +++ b/src/components/selectResult.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/.eslintrc b/.eslintrc index cd94cc4..a6a6e44 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,6 +6,12 @@ "no-const-assign": "off", "no-console": "off", "eqeqeq": "off", + "vars-on-top":"off", + "no-var":"off", + "array-callback-return":"off", + "@typescript-eslint/no-this-alias": "off", + "no-unused-expressions":"off", + "vue/no-mutating-props": "off", "vue/component-name-in-template-casing": ["error", "kebab-case", { "registeredComponentsOnly": false, "ignores": [] diff --git a/.gitignore b/.gitignore index 8265508..84ea431 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ !src/assets/sprites/.gitkeep public/icons .idea +.history diff --git a/public/data.json b/public/data.json new file mode 100644 index 0000000..bbe88b1 --- /dev/null +++ b/public/data.json @@ -0,0 +1,139 @@ +{ + "code": "200", + "msg": "success", + "data": { + "tableId": 1, + "workFlowDef": { + "name": "合同审批" + }, + "directorMaxLevel": 4, + "flowPermission": [], + "nodeConfig": { + "nodeName": "发起人", + "type": 0, + "priorityLevel": "", + "settype": "", + "selectMode": "", + "selectRange": "", + "directorLevel": "", + "examineMode": "", + "noHanderAction": "", + "examineEndDirectorLevel": "", + "ccSelfSelectFlag": "", + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "审核人", + "error": false, + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ + "columnId": 0, + "type": 1, + "conditionEn": "", + "conditionCn": "", + "optType": "", + "zdy1": "", + "zdy2": "", + "opt1": "", + "opt2": "", + "columnDbname": "", + "columnType": "", + "showType": "", + "showName": "", + "fixedDownBoxValue": "" + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git "a/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" new file mode 100644 index 0000000..bb7afeb --- /dev/null +++ "b/public/data\345\255\227\346\256\265\346\263\250\351\207\212.js" @@ -0,0 +1,137 @@ +export default { + "code": "200", + "msg": "success", + "data": { + "tableId": 1,//审批id + "workFlowDef": { + "name": "合同审批",//审批名称 + }, + "directorMaxLevel": 4,//审批主管最大层级 + "flowPermission": [],//发起人 + "nodeConfig": { + "nodeName": "发起人",//节点名称 + "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 + "priorityLevel": "",// 条件优先级 + "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 + "selectMode": "", //审批人数 1选一个人 2选多个人 + "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 + "directorLevel": "", //审批终点 最高层主管数 + "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 + "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 + "examineEndDirectorLevel": "", //审批终点 第n层主管 + "ccSelfSelectFlag": "", //允许发起人自选抄送人 + "conditionList": [], //当审批单同时满足以下条件时进入此流程 + "nodeUserList": [], //操作人 + "childNode": { + "nodeName": "审核人", + "error": false, //当前审批是否通过校验 + "type": 1, + "settype": 2, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 0, + "childNode": { + "nodeName": "路由", + "type": 4, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": { + "nodeName": "抄送人", + "type": 2, + "ccSelfSelectFlag": 1, + "childNode": null, + "nodeUserList": [], + "error": false + }, + "conditionNodes": [{ //条件节点 + "nodeName": "条件1", + "type": 3, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [{ //当前条件 + "columnId": 0, //发起人 + "type": 1, //1 发起人 2其他 + "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] + "zdy1": "",//左侧自定义内容 + "zdy2": "",//右侧自定义内容 + "opt1": "",//左侧符号 < ≤ + "opt2": "",//右侧符号 < ≤ + "columnDbname": "",//条件字段名称 + "columnType": "",//条件字段类型 + "showType": "",//3多选 其他 + "showName": "",//展示名 + "fixedDownBoxValue": ""//多选数组 + }], + "nodeUserList": [{ + "targetId": 85, + "type": 1, + "name": "天旭" + }], + "childNode": { + "nodeName": "审核人", + "type": 1, + "priorityLevel": 1, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [{ + "targetId": 2515744, + "type": 1, + "name": "哈哈哈哈" + }], + "childNode": null, + "conditionNodes": [], + "error": false + }, + "conditionNodes": [], + "error": false + }, { + "nodeName": "条件2", + "type": 3, + "priorityLevel": 2, + "settype": 1, + "selectMode": 0, + "selectRange": 0, + "directorLevel": 1, + "examineMode": 1, + "noHanderAction": 2, + "examineEndDirectorLevel": 1, + "ccSelfSelectFlag": 1, + "conditionList": [], + "nodeUserList": [], + "childNode": null, + "conditionNodes": [], + "error": false + }] + }, + "nodeUserList": [] + }, + "conditionNodes": [] + } + } +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts index 4fd0936..f96b6fe 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,29 +7,39 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { - AddNode: typeof import('./components/workFlow/addNode.vue')['default'] + AddNode: typeof import('./components/addNode.vue')['default'] AppContainer: typeof import('./components/AppContainer/index.vue')['default'] + ApproverDrawer: typeof import('./components/drawer/approverDrawer.vue')['default'] Auth: typeof import('./components/Auth/index.vue')['default'] AuthAll: typeof import('./components/AuthAll/index.vue')['default'] BatchActionBar: typeof import('./components/BatchActionBar/index.vue')['default'] + ConditionDrawer: typeof import('./components/drawer/conditionDrawer.vue')['default'] + CopyerDrawer: typeof import('./components/drawer/copyerDrawer.vue')['default'] Copyright: typeof import('./components/Copyright/index.vue')['default'] DeptSelect: typeof import('./components/DeptSelect/index.vue')['default'] Editor: typeof import('./components/Editor/index.vue')['default'] + EmployeesDialog: typeof import('./components/dialog/employeesDialog.vue')['default'] + EmployeesRoleDialog: typeof import('./components/dialog/employeesRoleDialog.vue')['default'] + ErrorDialog: typeof import('./components/dialog/errorDialog.vue')['default'] FileUpload: typeof import('./components/FileUpload/index.vue')['default'] FixedActionBar: typeof import('./components/FixedActionBar/index.vue')['default'] ImagePreview: typeof import('./components/ImagePreview/index.vue')['default'] ImagesUpload: typeof import('./components/ImagesUpload/index.vue')['default'] ImageUpload: typeof import('./components/ImageUpload/index.vue')['default'] - NodeWrap: typeof import('./components/workFlow/nodeWrap.vue')['default'] + NodeWrap: typeof import('./components/nodeWrap.vue')['default'] NormalTable: typeof import('./components/NormalTable/index.vue')['default'] PageHeader: typeof import('./components/PageHeader/index.vue')['default'] PageMain: typeof import('./components/PageMain/index.vue')['default'] PcasCascader: typeof import('./components/PcasCascader/index.vue')['default'] + PromoterDrawer: typeof import('./components/drawer/promoterDrawer.vue')['default'] + RoleDialog: typeof import('./components/dialog/roleDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SearchArea: typeof import('./components/SearchArea/index.vue')['default'] SearchBar: typeof import('./components/SearchBar/index.vue')['default'] SearchItem: typeof import('./components/SearchArea/SearchItem.vue')['default'] + SelectBox: typeof import('./components/selectBox.vue')['default'] + SelectResult: typeof import('./components/selectResult.vue')['default'] SelectTree: typeof import('./components/SelectTree/index.vue')['default'] SvgIcon: typeof import('./components/SvgIcon/index.vue')['default'] SystemInfo: typeof import('./components/SystemInfo/index.vue')['default'] diff --git a/src/components/addNode.vue b/src/components/addNode.vue new file mode 100644 index 0000000..71f6df6 --- /dev/null +++ b/src/components/addNode.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/components/dialog/common.js b/src/components/dialog/common.js new file mode 100644 index 0000000..c7984c5 --- /dev/null +++ b/src/components/dialog/common.js @@ -0,0 +1,47 @@ +/* + * @Date: 2022-08-25 14:05:59 + * @LastEditors: StavinLi 495727881@qq.com + * @LastEditTime: 2022-09-21 14:36:34 + * @FilePath: /Workflow-Vue3/src/components/dialog/common.js + */ +import { ref } from 'vue' +import { getDepartments, getEmployees, getRoles } from '@/plugins/api.js' +import $func from '@/plugins/preload.js' +export const searchVal = ref('') +export const departments = ref({ + titleDepartments: [], + childDepartments: [], + employees: [], +}) +export const roles = ref({}) +export const getRoleList = async () => { + const { data: { list } } = await getRoles() + roles.value = list +} +export const getDepartmentList = async (parentId = 0) => { + const { data } = await getDepartments({ parentId }) + departments.value = data +} +export const getDebounceData = (event, type = 1) => { + $func.debounce(async () => { + if (event.target.value) { + const data = { + searchName: event.target.value, + pageNum: 1, + pageSize: 30, + } + if (type == 1) { + departments.value.childDepartments = [] + const res = await getEmployees(data) + departments.value.employees = res.data.list + } + else { + const res = await getRoles(data) + roles.value = res.data.list + } + } + else { + type == 1 ? await getDepartmentList() : await getRoleList() + } + })() +} diff --git a/src/components/dialog/employeesDialog.vue b/src/components/dialog/employeesDialog.vue new file mode 100644 index 0000000..61ac040 --- /dev/null +++ b/src/components/dialog/employeesDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/dialog/employeesRoleDialog.vue b/src/components/dialog/employeesRoleDialog.vue new file mode 100644 index 0000000..9679941 --- /dev/null +++ b/src/components/dialog/employeesRoleDialog.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/components/dialog/errorDialog.vue b/src/components/dialog/errorDialog.vue new file mode 100644 index 0000000..f79428d --- /dev/null +++ b/src/components/dialog/errorDialog.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/src/components/dialog/roleDialog.vue b/src/components/dialog/roleDialog.vue new file mode 100644 index 0000000..025a105 --- /dev/null +++ b/src/components/dialog/roleDialog.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/drawer/approverDrawer.vue b/src/components/drawer/approverDrawer.vue new file mode 100644 index 0000000..6b2694d --- /dev/null +++ b/src/components/drawer/approverDrawer.vue @@ -0,0 +1,301 @@ + + + + + + diff --git a/src/components/drawer/conditionDrawer.vue b/src/components/drawer/conditionDrawer.vue new file mode 100644 index 0000000..bc3d84e --- /dev/null +++ b/src/components/drawer/conditionDrawer.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/components/drawer/copyerDrawer.vue b/src/components/drawer/copyerDrawer.vue new file mode 100644 index 0000000..a3fc819 --- /dev/null +++ b/src/components/drawer/copyerDrawer.vue @@ -0,0 +1,103 @@ + + + + + + diff --git a/src/components/drawer/promoterDrawer.vue b/src/components/drawer/promoterDrawer.vue new file mode 100644 index 0000000..7108976 --- /dev/null +++ b/src/components/drawer/promoterDrawer.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/components/nodeWrap.vue b/src/components/nodeWrap.vue new file mode 100644 index 0000000..0cd3792 --- /dev/null +++ b/src/components/nodeWrap.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/src/components/selectBox.vue b/src/components/selectBox.vue new file mode 100644 index 0000000..e4f2c55 --- /dev/null +++ b/src/components/selectBox.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/selectResult.vue b/src/components/selectResult.vue new file mode 100644 index 0000000..21c2de5 --- /dev/null +++ b/src/components/selectResult.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/workFlow/addNode.vue b/src/components/workFlow/addNode.vue index 19cc830..2c0ea84 100644 --- a/src/components/workFlow/addNode.vue +++ b/src/components/workFlow/addNode.vue @@ -1,4 +1,5 @@ @@ -87,7 +87,7 @@