├── .gitattributes ├── dist ├── favicon.ico ├── img │ └── loading.c54ac4d1.gif ├── app.839d3d2e4a04b0c9892b.js.gz ├── fonts │ ├── element-icons.732389de.ttf │ └── element-icons.535877f5.woff ├── js │ ├── chunk-25ca418e.27906047.js.gz │ └── chunk-vendors.789a9fa6.js.gz ├── css │ ├── chunk-25ca418e.fea66408.css.gz │ ├── chunk-vendors.3b8bc273.css.gz │ ├── app.cee175a8.css │ └── chunk-25ca418e.fea66408.css ├── departments324.json ├── departments150.json ├── departments.json ├── departments0.json ├── conditions.json ├── index.html ├── conditions字段注释.js ├── employees.json ├── roles.json ├── data.json ├── data字段注释.js └── app.839d3d2e4a04b0c9892b.js ├── public ├── favicon.ico ├── departments324.json ├── index.html ├── departments150.json ├── departments.json ├── departments0.json ├── conditions.json ├── conditions字段注释.js ├── employees.json ├── roles.json ├── data.json └── data字段注释.js ├── src ├── assets │ ├── logo.png │ └── images │ │ ├── cancel.png │ │ ├── jiaojiao.png │ │ ├── loading.gif │ │ ├── add-close.png │ │ ├── add-close1.png │ │ ├── check_box.png │ │ ├── icon_file.png │ │ ├── icon_role.png │ │ ├── next_level.png │ │ ├── icon_people.png │ │ ├── list_search.png │ │ └── next_level_active.png ├── router.js ├── plugins │ ├── element.js │ ├── api.js │ ├── axios.js │ └── preload.js ├── css │ ├── dialog.css │ └── override-element-ui.css ├── components │ ├── dialog │ │ ├── mixins.js │ │ ├── errorDialog.vue │ │ ├── roleDialog.vue │ │ ├── employeesDialog.vue │ │ └── employeesRoleDialog.vue │ ├── selectBox.vue │ ├── selectResult.vue │ ├── drawer │ │ ├── promoterDrawer.vue │ │ ├── copyerDrawer.vue │ │ ├── approverDrawer.vue │ │ └── conditionDrawer.vue │ ├── addNode.vue │ └── nodeWrap.vue ├── main.js ├── store.js ├── App.vue └── views │ └── setting.vue ├── .prettierrc ├── .gitignore ├── babel.config.js ├── LICENSE ├── vue.config.js ├── package.json └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-language=Vue -------------------------------------------------------------------------------- /dist/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/favicon.ico -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /dist/img/loading.c54ac4d1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/img/loading.c54ac4d1.gif -------------------------------------------------------------------------------- /src/assets/images/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/cancel.png -------------------------------------------------------------------------------- /src/assets/images/jiaojiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/jiaojiao.png -------------------------------------------------------------------------------- /src/assets/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/loading.gif -------------------------------------------------------------------------------- /src/assets/images/add-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/add-close.png -------------------------------------------------------------------------------- /src/assets/images/add-close1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/add-close1.png -------------------------------------------------------------------------------- /src/assets/images/check_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/check_box.png -------------------------------------------------------------------------------- /src/assets/images/icon_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/icon_file.png -------------------------------------------------------------------------------- /src/assets/images/icon_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/icon_role.png -------------------------------------------------------------------------------- /src/assets/images/next_level.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/next_level.png -------------------------------------------------------------------------------- /dist/app.839d3d2e4a04b0c9892b.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/app.839d3d2e4a04b0c9892b.js.gz -------------------------------------------------------------------------------- /src/assets/images/icon_people.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/icon_people.png -------------------------------------------------------------------------------- /src/assets/images/list_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/list_search.png -------------------------------------------------------------------------------- /dist/fonts/element-icons.732389de.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/fonts/element-icons.732389de.ttf -------------------------------------------------------------------------------- /dist/js/chunk-25ca418e.27906047.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/js/chunk-25ca418e.27906047.js.gz -------------------------------------------------------------------------------- /dist/js/chunk-vendors.789a9fa6.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/js/chunk-vendors.789a9fa6.js.gz -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "semi": true, 4 | "singleQuote": true, 5 | "trailingComma": "none" 6 | } 7 | -------------------------------------------------------------------------------- /dist/css/chunk-25ca418e.fea66408.css.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/css/chunk-25ca418e.fea66408.css.gz -------------------------------------------------------------------------------- /dist/css/chunk-vendors.3b8bc273.css.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/css/chunk-vendors.3b8bc273.css.gz -------------------------------------------------------------------------------- /dist/fonts/element-icons.535877f5.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/dist/fonts/element-icons.535877f5.woff -------------------------------------------------------------------------------- /src/assets/images/next_level_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/StavinLi/Workflow/HEAD/src/assets/images/next_level_active.png -------------------------------------------------------------------------------- /src/router.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | 4 | Vue.use(Router) 5 | 6 | export default new Router({ 7 | routes: [{ 8 | path: '/', 9 | component: (resolve) => { 10 | require([`@/views/setting`], resolve) 11 | } 12 | }] 13 | }) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | 4 | # local env files 5 | .env.local 6 | .env.*.local 7 | 8 | # Log files 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.sw? 21 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | const plugins = [ 2 | [ 3 | "component", 4 | { 5 | "libraryName": "element-ui", 6 | "styleLibraryName": "theme-chalk" 7 | } 8 | ] 9 | ] 10 | if (process.env.NODE_ENV == 'production') { 11 | plugins.push('transform-remove-console') 12 | } 13 | module.exports = { 14 | "presets": [ 15 | "@vue/app" 16 | ], 17 | "plugins": plugins 18 | } -------------------------------------------------------------------------------- /dist/departments324.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [], 6 | "employees": [{ 7 | "id": "53128133", 8 | "employeeName": "测试3", 9 | "isLeave": "0", 10 | "open": "false" 11 | }], 12 | "titleDepartments": [{ 13 | "departmentId": "324", 14 | "departmentKey": "ZNBN", 15 | "departmentName": "法务部", 16 | "departmentNames": "法务部", 17 | "id": "324", 18 | "parentId": "0" 19 | }] 20 | } 21 | } -------------------------------------------------------------------------------- /public/departments324.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [], 6 | "employees": [{ 7 | "id": "53128133", 8 | "employeeName": "测试3", 9 | "isLeave": "0", 10 | "open": "false" 11 | }], 12 | "titleDepartments": [{ 13 | "departmentId": "324", 14 | "departmentKey": "ZNBN", 15 | "departmentName": "法务部", 16 | "departmentNames": "法务部", 17 | "id": "324", 18 | "parentId": "0" 19 | }] 20 | } 21 | } -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 审批设置 10 | 11 | 12 | 13 | 17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /dist/departments150.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [], 6 | "employees": [{ 7 | "id": "53128112", 8 | "employeeName": "测试1", 9 | "isLeave": "0", 10 | "open": "false" 11 | },{ 12 | "id": "53128113", 13 | "employeeName": "测试2", 14 | "isLeave": "0", 15 | "open": "false" 16 | }], 17 | "titleDepartments": [{ 18 | "departmentId": "150", 19 | "departmentKey": "RLXZB_V2", 20 | "departmentName": "人力行政部", 21 | "departmentNames": "人力行政部", 22 | "id": "150", 23 | "parentId": "0" 24 | }] 25 | } 26 | } -------------------------------------------------------------------------------- /public/departments150.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [], 6 | "employees": [{ 7 | "id": "53128112", 8 | "employeeName": "测试1", 9 | "isLeave": "0", 10 | "open": "false" 11 | },{ 12 | "id": "53128113", 13 | "employeeName": "测试2", 14 | "isLeave": "0", 15 | "open": "false" 16 | }], 17 | "titleDepartments": [{ 18 | "departmentId": "150", 19 | "departmentKey": "RLXZB_V2", 20 | "departmentName": "人力行政部", 21 | "departmentNames": "人力行政部", 22 | "id": "150", 23 | "parentId": "0" 24 | }] 25 | } 26 | } -------------------------------------------------------------------------------- /dist/departments.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [{ 6 | "departmentKey": "RLXZB_V2", 7 | "departmentName": "人力行政部", 8 | "id": "150", 9 | "parentId": "0", 10 | "departmentNames": "人力行政部" 11 | }, { 12 | "departmentKey": "ZNBN", 13 | "departmentName": "法务部", 14 | "id": "324", 15 | "parentId": "0", 16 | "departmentNames": "法务部" 17 | }], 18 | "employees": [{ 19 | "id": "53128111", 20 | "employeeName": "亚nan", 21 | "isLeave": "0", 22 | "open": "false" 23 | }], 24 | "titleDepartments": [] 25 | } 26 | } -------------------------------------------------------------------------------- /dist/departments0.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [{ 6 | "departmentKey": "RLXZB_V2", 7 | "departmentName": "人力行政部", 8 | "id": "150", 9 | "parentId": "0", 10 | "departmentNames": "人力行政部" 11 | }, { 12 | "departmentKey": "ZNBN", 13 | "departmentName": "法务部", 14 | "id": "324", 15 | "parentId": "0", 16 | "departmentNames": "法务部" 17 | }], 18 | "employees": [{ 19 | "id": "53128111", 20 | "employeeName": "亚nan", 21 | "isLeave": "0", 22 | "open": "false" 23 | }], 24 | "titleDepartments": [] 25 | } 26 | } -------------------------------------------------------------------------------- /public/departments.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [{ 6 | "departmentKey": "RLXZB_V2", 7 | "departmentName": "人力行政部", 8 | "id": "150", 9 | "parentId": "0", 10 | "departmentNames": "人力行政部" 11 | }, { 12 | "departmentKey": "ZNBN", 13 | "departmentName": "法务部", 14 | "id": "324", 15 | "parentId": "0", 16 | "departmentNames": "法务部" 17 | }], 18 | "employees": [{ 19 | "id": "53128111", 20 | "employeeName": "亚nan", 21 | "isLeave": "0", 22 | "open": "false" 23 | }], 24 | "titleDepartments": [] 25 | } 26 | } -------------------------------------------------------------------------------- /public/departments0.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "childDepartments": [{ 6 | "departmentKey": "RLXZB_V2", 7 | "departmentName": "人力行政部", 8 | "id": "150", 9 | "parentId": "0", 10 | "departmentNames": "人力行政部" 11 | }, { 12 | "departmentKey": "ZNBN", 13 | "departmentName": "法务部", 14 | "id": "324", 15 | "parentId": "0", 16 | "departmentNames": "法务部" 17 | }], 18 | "employees": [{ 19 | "id": "53128111", 20 | "employeeName": "亚nan", 21 | "isLeave": "0", 22 | "open": "false" 23 | }], 24 | "titleDepartments": [] 25 | } 26 | } -------------------------------------------------------------------------------- /dist/conditions.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": [ 5 | { 6 | "columnId": "1090", 7 | "showType": "input", 8 | "showName": "预计采购总费用", 9 | "columnName": "planProcurementTotalMoney", 10 | "columnType": "Double", 11 | "fixedDownBoxValue": "" 12 | }, 13 | { 14 | "columnId": "1092", 15 | "showType": "checkBox", 16 | "showName": "采购类型", 17 | "columnName": "procurementType", 18 | "columnType": "String", 19 | "fixedDownBoxValue": "{\"1\":{\"key\":\"1\",\"value\":\"新开园区集中采购\",\"column\":\"\",\"type\":\"1\"}}" 20 | }, 21 | { 22 | "columnId": "1093", 23 | "showType": "input", 24 | "showName": "园区面积", 25 | "columnName": "parkArea", 26 | "columnType": "Double", 27 | "fixedDownBoxValue": "" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /public/conditions.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": [ 5 | { 6 | "columnId": "1090", 7 | "showType": "input", 8 | "showName": "预计采购总费用", 9 | "columnName": "planProcurementTotalMoney", 10 | "columnType": "Double", 11 | "fixedDownBoxValue": "" 12 | }, 13 | { 14 | "columnId": "1092", 15 | "showType": "checkBox", 16 | "showName": "采购类型", 17 | "columnName": "procurementType", 18 | "columnType": "String", 19 | "fixedDownBoxValue": "{\"1\":{\"key\":\"1\",\"value\":\"新开园区集中采购\",\"column\":\"\",\"type\":\"1\"}}" 20 | }, 21 | { 22 | "columnId": "1093", 23 | "showType": "input", 24 | "showName": "园区面积", 25 | "columnName": "parkArea", 26 | "columnType": "Double", 27 | "fixedDownBoxValue": "" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /src/plugins/element.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import { 3 | Button, Popover, 4 | Dialog, Drawer, 5 | Tree, Radio, 6 | RadioGroup, Checkbox, 7 | CheckboxGroup, Breadcrumb, 8 | BreadcrumbItem, Message, 9 | Tabs, 10 | TabPane, 11 | } from 'element-ui' 12 | import 'element-ui/lib/theme-chalk/index.css' 13 | Vue.use(Button) 14 | Vue.use(Popover) 15 | Vue.use(Dialog) 16 | Vue.use(Drawer) 17 | Vue.use(Tree) 18 | Vue.use(Radio) 19 | Vue.use(RadioGroup) 20 | Vue.use(Checkbox) 21 | Vue.use(CheckboxGroup) 22 | Vue.use(Breadcrumb) 23 | Vue.use(BreadcrumbItem) 24 | Vue.use(Tabs) 25 | Vue.use(TabPane) 26 | 27 | Vue.prototype.$message = { 28 | error(msg) { 29 | Message.closeAll(); 30 | Message.error(msg) 31 | }, 32 | success(msg) { 33 | Message.closeAll(); 34 | Message.success(msg) 35 | } 36 | } -------------------------------------------------------------------------------- /src/css/dialog.css: -------------------------------------------------------------------------------- 1 | .person_body { 2 | border: 1px solid #f5f5f5; 3 | height: 500px; 4 | } 5 | .tree_nav span { 6 | display: inline-block; 7 | padding-right: 10px; 8 | margin-right: 5px; 9 | max-width: 6em; 10 | color: #38adff; 11 | font-size: 12px; 12 | cursor: pointer; 13 | background: url(~@/assets/images/jiaojiao.png) no-repeat right center; 14 | } 15 | .tree_nav span:last-of-type { 16 | background: none; 17 | } 18 | .person_tree { 19 | padding: 10px 12px 0 8px; 20 | width: 280px; 21 | height: 100%; 22 | border-right: 1px solid #f5f5f5; 23 | } 24 | .person_tree input { 25 | padding-left: 22px; 26 | width: 210px; 27 | height: 30px; 28 | font-size: 12px; 29 | border-radius: 2px; 30 | border: 1px solid #d5dadf; 31 | background: url(~@/assets/images/list_search.png) no-repeat 10px center; 32 | background-size: 14px 14px; 33 | margin-bottom: 14px; 34 | } 35 | 36 | .person_tree img { 37 | width: 14px; 38 | vertical-align: middle; 39 | margin-right: 5px; 40 | } 41 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 审批设置
-------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Stavin Li 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/plugins/api.js: -------------------------------------------------------------------------------- 1 | import http from '@/plugins/axios' 2 | 3 | let baseUrl = process.env.BASE_URL 4 | 5 | /** 6 | * 获取角色 7 | * @param {*} data 8 | * @returns 9 | */ 10 | export function getRoles(data) { 11 | return http.get(`${baseUrl}roles.json`, { params: data }) 12 | } 13 | 14 | /** 15 | * 获取部门 16 | * @param {*} data 17 | * @returns 18 | */ 19 | export function getDepartments(data) { 20 | return http.get(`${baseUrl}departments.json`, { params: data }) 21 | } 22 | 23 | /** 24 | * 获取职员 25 | * @param {*} data 26 | * @returns 27 | */ 28 | export function getEmployees(data) { 29 | return http.get(`${baseUrl}employees.json`, { params: data }) 30 | } 31 | /** 32 | * 获取条件字段 33 | * @param {*} data 34 | * @returns 35 | */ 36 | export function getConditions(data) { 37 | return http.get(`${baseUrl}conditions.json`, { params: data }) 38 | } 39 | 40 | /** 41 | * 获取审批数据 42 | * @param {*} data 43 | * @returns 44 | */ 45 | export function getWorkFlowData(data) { 46 | return http.get(`${baseUrl}data.json`, { params: data }) 47 | } 48 | /** 49 | * 设置审批数据 50 | * @param {*} data 51 | * @returns 52 | */ 53 | export function setWorkFlowData(data) { 54 | return http.post(`${baseUrl}`, data) 55 | } -------------------------------------------------------------------------------- /dist/conditions字段注释.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Date: 2022-08-04 16:29:35 3 | * @LastEditors: StavinLi 4 | * @LastEditTime: 2022-09-21 14:18:20 5 | * @FilePath: /Workflow/public/conditions字段注释.js 6 | */ 7 | export default { 8 | "code": "200", 9 | "msg": "操作成功", 10 | "data": [ 11 | { 12 | //条件id columnId == 0 为发起人 13 | "columnId": "1090", 14 | //columnType == "String" && showType == "checkBox"为多选 columnType == "Double"为区间 15 | "showType": "input", 16 | "showName": "预计采购总费用", 17 | //columnName 条件自定义字段 18 | "columnName": "planProcurementTotalMoney", 19 | "columnType": "Double", 20 | //fixedDownBoxValue 匹配 columnType == "String" && showType == "checkBox"时子选项内容 21 | "fixedDownBoxValue": "" 22 | }, 23 | { 24 | "columnId": "1092", 25 | "showType": "checkBox", 26 | "showName": "采购类型", 27 | "columnName": "procurementType", 28 | "columnType": "String", 29 | "fixedDownBoxValue": "{\"1\":{\"key\":\"1\",\"value\":\"新开园区集中采购\",\"column\":\"\",\"type\":\"1\"}}" 30 | }, 31 | { 32 | "columnId": "1093", 33 | "showType": "input", 34 | "showName": "园区面积", 35 | "columnName": "parkArea", 36 | "columnType": "Double", 37 | "fixedDownBoxValue": "" 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /public/conditions字段注释.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Date: 2022-08-04 16:29:35 3 | * @LastEditors: StavinLi 4 | * @LastEditTime: 2022-09-21 14:18:20 5 | * @FilePath: /Workflow/public/conditions字段注释.js 6 | */ 7 | export default { 8 | "code": "200", 9 | "msg": "操作成功", 10 | "data": [ 11 | { 12 | //条件id columnId == 0 为发起人 13 | "columnId": "1090", 14 | //columnType == "String" && showType == "checkBox"为多选 columnType == "Double"为区间 15 | "showType": "input", 16 | "showName": "预计采购总费用", 17 | //columnName 条件自定义字段 18 | "columnName": "planProcurementTotalMoney", 19 | "columnType": "Double", 20 | //fixedDownBoxValue 匹配 columnType == "String" && showType == "checkBox"时子选项内容 21 | "fixedDownBoxValue": "" 22 | }, 23 | { 24 | "columnId": "1092", 25 | "showType": "checkBox", 26 | "showName": "采购类型", 27 | "columnName": "procurementType", 28 | "columnType": "String", 29 | "fixedDownBoxValue": "{\"1\":{\"key\":\"1\",\"value\":\"新开园区集中采购\",\"column\":\"\",\"type\":\"1\"}}" 30 | }, 31 | { 32 | "columnId": "1093", 33 | "showType": "input", 34 | "showName": "园区面积", 35 | "columnName": "parkArea", 36 | "columnType": "Double", 37 | "fixedDownBoxValue": "" 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /dist/employees.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "navigatepageNums": ["1"], 6 | "startRow": "1", 7 | "hasNextPage": "false", 8 | "prePage": "0", 9 | "nextPage": "0", 10 | "endRow": "3", 11 | "pageSize": "30", 12 | "list": [{ 13 | "departmentName": "招商事业部", 14 | "employeeName": "111111", 15 | "employeeDepartmentId": "121", 16 | "id": "5312", 17 | "departmentNames": "招商事业部" 18 | }, { 19 | "departmentName": "111", 20 | "employeeName": "东亚-测试", 21 | "employeeDepartmentId": "139", 22 | "id": "2515638", 23 | "departmentNames": "111" 24 | }, { 25 | "departmentName": "招商事业部", 26 | "employeeName": "1111", 27 | "employeeDepartmentId": "121", 28 | "id": "2515746", 29 | "departmentNames": "招商事业部" 30 | }], 31 | "pageNum": "1", 32 | "navigatePages": "8", 33 | "navigateFirstPage": "1", 34 | "total": "3", 35 | "pages": "1", 36 | "size": "3", 37 | "isLastPage": "true", 38 | "hasPreviousPage": "false", 39 | "navigateLastPage": "1", 40 | "isFirstPage": "true" 41 | } 42 | } -------------------------------------------------------------------------------- /public/employees.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "navigatepageNums": ["1"], 6 | "startRow": "1", 7 | "hasNextPage": "false", 8 | "prePage": "0", 9 | "nextPage": "0", 10 | "endRow": "3", 11 | "pageSize": "30", 12 | "list": [{ 13 | "departmentName": "招商事业部", 14 | "employeeName": "111111", 15 | "employeeDepartmentId": "121", 16 | "id": "5312", 17 | "departmentNames": "招商事业部" 18 | }, { 19 | "departmentName": "111", 20 | "employeeName": "东亚-测试", 21 | "employeeDepartmentId": "139", 22 | "id": "2515638", 23 | "departmentNames": "111" 24 | }, { 25 | "departmentName": "招商事业部", 26 | "employeeName": "1111", 27 | "employeeDepartmentId": "121", 28 | "id": "2515746", 29 | "departmentNames": "招商事业部" 30 | }], 31 | "pageNum": "1", 32 | "navigatePages": "8", 33 | "navigateFirstPage": "1", 34 | "total": "3", 35 | "pages": "1", 36 | "size": "3", 37 | "isLastPage": "true", 38 | "hasPreviousPage": "false", 39 | "navigateLastPage": "1", 40 | "isFirstPage": "true" 41 | } 42 | } -------------------------------------------------------------------------------- /src/components/dialog/mixins.js: -------------------------------------------------------------------------------- 1 | import { getRoles, getDepartments, getEmployees } from '@/plugins/api.js' 2 | export default { 3 | data() { 4 | return { 5 | visibleDialog: false, 6 | searchVal: "", 7 | activeName: "1", 8 | departments: {}, 9 | roles: [], 10 | } 11 | }, 12 | methods: { 13 | async getRoleList() { 14 | let { data: { list } } = await getRoles() 15 | this.roles = list; 16 | }, 17 | async getDepartmentList(parentId = 0) { 18 | let { data } = await getDepartments({ parentId }) 19 | this.departments = data; 20 | }, 21 | getDebounceData(event, type = 1) { 22 | this.$func.debounce(async function () { 23 | if (event.target.value) { 24 | let data = { 25 | searchName: event.target.value, 26 | pageNum: 1, 27 | pageSize: 30 28 | } 29 | if (type == 1) { 30 | this.departments.childDepartments = []; 31 | let res = await getEmployees(data) 32 | this.departments.employees = res.data.list 33 | } else { 34 | let res = await getRoles(data) 35 | this.roles = res.data.list 36 | } 37 | } else { 38 | type == 1 ? await this.getDepartmentList() : await this.getRoleList(); 39 | } 40 | }.bind(this))() 41 | }, 42 | } 43 | } -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Date: 2022-08-04 16:29:35 3 | * @LastEditors: StavinLi 4 | * @LastEditTime: 2022-09-21 14:08:37 5 | * @FilePath: /Workflow/src/main.js 6 | */ 7 | import 'babel-polyfill' 8 | import Vue from 'vue' 9 | import App from './App.vue' 10 | import router from './router' 11 | import store from './store' 12 | import './plugins/element.js' 13 | import './css/override-element-ui.css' 14 | import func from './plugins/preload.js' 15 | import nodeWrap from '@/components/nodeWrap' 16 | Vue.component('nodeWrap', nodeWrap); //初始化组件 17 | import addNode from '@/components/addNode' 18 | Vue.component('addNode', addNode); //初始化组件 19 | Vue.prototype.$func = func; 20 | Vue.config.productionTip = false; 21 | Vue.directive('enterNumber', { 22 | bind: function (el, { value = 2 }) { 23 | el = el.nodeName == "INPUT" ? el : el.children[0] 24 | var RegStr = value == 0 ? `^[\\+\\-]?\\d+\\d{0,0}` : `^[\\+\\-]?\\d+\\.?\\d{0,${value}}`; 25 | el.addEventListener('keyup', function () { 26 | el.value = el.value.match(new RegExp(RegStr, 'g')); 27 | el.dispatchEvent(new Event('input')) 28 | }) 29 | } 30 | }); 31 | 32 | Vue.directive('focus', { 33 | // 当被绑定的元素插入到 DOM 中时 34 | inserted: function (el) { 35 | el.focus() 36 | } 37 | }); 38 | new Vue({ 39 | router, 40 | store, 41 | components: { 42 | nodeWrap, 43 | addNode, 44 | }, 45 | render: h => h(App) 46 | }).$mount('#app') -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | const CompressionWebpackPlugin = require('compression-webpack-plugin'), 2 | productionGzipExtensions = ['js', 'css']; 3 | let path = require('path') 4 | 5 | function resolve(dir) { 6 | return path.join(__dirname, dir) 7 | } 8 | module.exports = { 9 | lintOnSave: false, 10 | productionSourceMap: false, 11 | publicPath: process.env.NODE_ENV === "production" ? '/Workflow/dist/' : '/', 12 | devServer: { 13 | disableHostCheck: true, 14 | https: false, // https:{type:Boolean} 15 | port: 6969, 16 | }, 17 | chainWebpack: config => { 18 | config.resolve.alias.set('@', resolve('src')); 19 | config.performance.set('hints', false); 20 | config.output.filename('[name].[hash].js').end(); 21 | }, 22 | configureWebpack: config => { 23 | //配置参数详解https://www.webpackjs.com/plugins/compression-webpack-plugin/ 24 | if (process.env.NODE_ENV !== 'development') { // 非开发环境 25 | config.plugins.push(new CompressionWebpackPlugin({ 26 | algorithm: 'gzip', //algorithm: 可以是 function(buf, callback) 或者字符串。对于字符串来说依照 zlib 的算法(或者 zopfli 的算法)。默认值是 "gzip"。 27 | test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), //test: 所有匹配该正则的资源都会被处理。默认值是全部资源。 28 | threshold: 10240, //threshold: 只有大小大于该值的资源会被处理。单位是 bytes。默认值是 0。 29 | minRatio: 0.8 //minRatio: 只有压缩率小于这个值的资源才会被处理。默认值是 0.8。 30 | })) 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | Vue.use(Vuex) 4 | 5 | export default new Vuex.Store({ 6 | state: { 7 | tableId: '', 8 | isTried: false, 9 | promoterDrawer: false, 10 | flowPermission1: {}, 11 | approverDrawer: false, 12 | approverConfig1: {}, 13 | copyerDrawer: false, 14 | copyerConfig1: {}, 15 | conditionDrawer: false, 16 | conditionsConfig1: { 17 | conditionNodes: [], 18 | }, 19 | }, 20 | mutations: { 21 | setTableId(status, payload) { 22 | status.tableId = payload 23 | }, 24 | setIsTried(status, payload) { 25 | status.isTried = payload 26 | }, 27 | setPromoter(status, payload) { 28 | status.promoterDrawer = payload 29 | }, 30 | setFlowPermission(status, payload) { 31 | status.flowPermission1 = payload 32 | }, 33 | setApprover(status, payload) { 34 | status.approverDrawer = payload 35 | }, 36 | setApproverConfig(status, payload) { 37 | status.approverConfig1 = payload 38 | }, 39 | setCopyer(status, payload) { 40 | status.copyerDrawer = payload 41 | }, 42 | setCopyerConfig(status, payload) { 43 | status.copyerConfig1 = payload 44 | }, 45 | setCondition(status, payload) { 46 | status.conditionDrawer = payload 47 | }, 48 | setConditionsConfig(status, payload) { 49 | status.conditionsConfig1 = payload 50 | }, 51 | }, 52 | actions: {} 53 | }) -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ydc_espace", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "dev": "vue-cli-service serve", 8 | "test": "vue-cli-service build --mode test", 9 | "build": "vue-cli-service build", 10 | "lint": "vue-cli-service lint" 11 | }, 12 | "dependencies": { 13 | "core-js": "^2.6.5", 14 | "element-ui": "^2.12.0", 15 | "vue": "^2.6.10", 16 | "vue-router": "^3.0.3", 17 | "vuex": "^3.0.1" 18 | }, 19 | "devDependencies": { 20 | "@vue/cli-plugin-babel": "^3.0.3", 21 | "@vue/cli-plugin-eslint": "^3.0.3", 22 | "@vue/cli-service": "^3.0.3", 23 | "axios": "^0.21.1", 24 | "babel-eslint": "^10.0.1", 25 | "babel-plugin-component": "^1.1.1", 26 | "babel-plugin-transform-remove-console": "^6.9.4", 27 | "babel-polyfill": "^6.26.0", 28 | "compression-webpack-plugin": "^3.0.0", 29 | "eslint": "^5.16.0", 30 | "eslint-plugin-vue": "^5.0.0", 31 | "less": "^2.7.2", 32 | "less-loader": "^4.0.6", 33 | "vue-cli-plugin-axios": "0.0.4", 34 | "vue-cli-plugin-element": "^1.0.1", 35 | "vue-template-compiler": "^2.6.10" 36 | }, 37 | "eslintConfig": { 38 | "root": true, 39 | "env": { 40 | "node": true 41 | }, 42 | "extends": [ 43 | "plugin:vue/essential", 44 | "eslint:recommended" 45 | ], 46 | "rules": {}, 47 | "parserOptions": { 48 | "parser": "babel-eslint" 49 | } 50 | }, 51 | "postcss": { 52 | "plugins": { 53 | "autoprefixer": {} 54 | } 55 | }, 56 | "browserslist": [ 57 | "> 1%", 58 | "last 2 versions" 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /src/components/dialog/errorDialog.vue: -------------------------------------------------------------------------------- 1 | 7 | 30 | 31 | 49 | 50 | -------------------------------------------------------------------------------- /src/plugins/axios.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Date: 2022-08-04 16:29:35 3 | * @LastEditors: StavinLi 4 | * @LastEditTime: 2022-09-21 14:13:59 5 | * @FilePath: /Workflow/src/plugins/axios.js 6 | */ 7 | "use strict"; 8 | import axios from "axios"; 9 | import { 10 | Message, 11 | Loading 12 | } from 'element-ui'; //引入elm组件 13 | let needLoadingRequestCount = 0, 14 | loading; 15 | 16 | 17 | function showFullScreenLoading() { 18 | if (needLoadingRequestCount === 0) { 19 | startLoading() 20 | } 21 | needLoadingRequestCount++ 22 | } 23 | 24 | function tryHideFullScreenLoading() { 25 | if (needLoadingRequestCount <= 0) return 26 | needLoadingRequestCount-- 27 | if (needLoadingRequestCount === 0) { 28 | setTimeout(function () { 29 | endLoading() 30 | }, 200) 31 | } 32 | } 33 | 34 | function startLoading() { 35 | loading = Loading.service({ 36 | lock: true, 37 | background: 'rgba(0, 0, 0, 0.2)', 38 | spinner: 'my-el-custom-spinner' 39 | }) 40 | } 41 | 42 | function endLoading() { 43 | loading.close() 44 | } 45 | 46 | let config = { 47 | // baseURL: process.env.baseURL || process.env.apiUrl || "" 48 | timeout: 10 * 1000, // Timeout 49 | // withCredentials: true, // Check cross-site Access-Control 50 | }; 51 | const _axios = axios.create(config); 52 | 53 | // 添加请求拦截器 54 | _axios.interceptors.request.use(config => { // 在发送请求之前做些什么 55 | if (config.loading !== false) { 56 | showFullScreenLoading() 57 | } 58 | return config; 59 | }, err => { // 对请求错误做些什么 60 | return Promise.reject(err); 61 | }); 62 | 63 | // 添加响应拦截器 64 | _axios.interceptors.response.use(res => { // 对响应数据做点什么 65 | tryHideFullScreenLoading() 66 | if (res.data.code && res.data.code != 200) { 67 | Message.error(res.data.msg); 68 | return; 69 | } 70 | return res.data; 71 | }, err => { // 对响应错误做点什么 72 | tryHideFullScreenLoading() 73 | if (err.response.data.code && err.response.data.code != 200) { 74 | Message.error(err.response.data.msg); 75 | } 76 | return Promise.reject(err); 77 | }); 78 | 79 | export default _axios; -------------------------------------------------------------------------------- /dist/roles.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "navigatepageNums": [], 6 | "startRow": "1", 7 | "hasNextPage": "false", 8 | "prePage": "0", 9 | "nextPage": "0", 10 | "endRow": "8", 11 | "pageSize": "0", 12 | "list": [{ 13 | "code": "SHGLY", 14 | "roleId": "1", 15 | "scope": "1", 16 | "roleName": "审核管理员", 17 | "description": "初始化内置审批角色", 18 | "status": "1" 19 | }, { 20 | "code": "", 21 | "roleId": "2", 22 | "scope": "1", 23 | "roleName": "招商事业部", 24 | "description": "", 25 | "status": "1" 26 | }, { 27 | "code": "", 28 | "roleId": "3", 29 | "scope": "1", 30 | "roleName": "互联网部门", 31 | "description": "", 32 | "status": "1" 33 | }, { 34 | "code": "", 35 | "roleId": "4", 36 | "scope": "1", 37 | "roleName": "销售部", 38 | "description": "", 39 | "status": "1" 40 | }, { 41 | "code": "", 42 | "roleId": "5", 43 | "scope": "1", 44 | "roleName": "战区一", 45 | "description": "", 46 | "status": "1" 47 | }, { 48 | "code": "", 49 | "roleId": "6", 50 | "scope": "1", 51 | "roleName": "战区二", 52 | "description": "", 53 | "status": "1" 54 | }, { 55 | "code": "", 56 | "roleId": "7", 57 | "scope": "1", 58 | "roleName": "JAVA开发", 59 | "description": "", 60 | "status": "1" 61 | }, { 62 | "code": "", 63 | "roleId": "8", 64 | "scope": "1", 65 | "roleName": "测试审批角色", 66 | "description": "", 67 | "status": "1" 68 | }], 69 | "pageNum": "1", 70 | "navigatePages": "8", 71 | "navigateFirstPage": "0", 72 | "total": "8", 73 | "pages": "0", 74 | "size": "8", 75 | "isLastPage": "true", 76 | "hasPreviousPage": "false", 77 | "navigateLastPage": "0", 78 | "isFirstPage": "true" 79 | } 80 | } -------------------------------------------------------------------------------- /public/roles.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "操作成功", 4 | "data": { 5 | "navigatepageNums": [], 6 | "startRow": "1", 7 | "hasNextPage": "false", 8 | "prePage": "0", 9 | "nextPage": "0", 10 | "endRow": "8", 11 | "pageSize": "0", 12 | "list": [{ 13 | "code": "SHGLY", 14 | "roleId": "1", 15 | "scope": "1", 16 | "roleName": "审核管理员", 17 | "description": "初始化内置审批角色", 18 | "status": "1" 19 | }, { 20 | "code": "", 21 | "roleId": "2", 22 | "scope": "1", 23 | "roleName": "招商事业部", 24 | "description": "", 25 | "status": "1" 26 | }, { 27 | "code": "", 28 | "roleId": "3", 29 | "scope": "1", 30 | "roleName": "互联网部门", 31 | "description": "", 32 | "status": "1" 33 | }, { 34 | "code": "", 35 | "roleId": "4", 36 | "scope": "1", 37 | "roleName": "销售部", 38 | "description": "", 39 | "status": "1" 40 | }, { 41 | "code": "", 42 | "roleId": "5", 43 | "scope": "1", 44 | "roleName": "战区一", 45 | "description": "", 46 | "status": "1" 47 | }, { 48 | "code": "", 49 | "roleId": "6", 50 | "scope": "1", 51 | "roleName": "战区二", 52 | "description": "", 53 | "status": "1" 54 | }, { 55 | "code": "", 56 | "roleId": "7", 57 | "scope": "1", 58 | "roleName": "JAVA开发", 59 | "description": "", 60 | "status": "1" 61 | }, { 62 | "code": "", 63 | "roleId": "8", 64 | "scope": "1", 65 | "roleName": "测试审批角色", 66 | "description": "", 67 | "status": "1" 68 | }], 69 | "pageNum": "1", 70 | "navigatePages": "8", 71 | "navigateFirstPage": "0", 72 | "total": "8", 73 | "pages": "0", 74 | "size": "8", 75 | "isLastPage": "true", 76 | "hasPreviousPage": "false", 77 | "navigateLastPage": "0", 78 | "isFirstPage": "true" 79 | } 80 | } -------------------------------------------------------------------------------- /src/css/override-element-ui.css: -------------------------------------------------------------------------------- 1 | .el-drawer__header button.el-drawer__close-btn { 2 | display: none; 3 | } 4 | 5 | .el-drawer__header { 6 | margin-bottom: 0; 7 | padding: 14px 0 14px 20px; 8 | /* border-bottom: 1px solid #f2f2f2; */ 9 | color: #323232; 10 | font-size: 16px; 11 | } 12 | 13 | .demo-drawer__content { 14 | display: flex; 15 | flex-direction: column; 16 | height: 100%; 17 | } 18 | 19 | .drawer_content { 20 | flex: 1; 21 | } 22 | 23 | .demo-drawer__content>div { 24 | border-top: 1px solid #F2F2F2; 25 | } 26 | 27 | .el-button { 28 | min-width: 79px; 29 | padding: 8px 12px; 30 | font-size: 12px; 31 | border-radius: 2px; 32 | background: #46A6FE; 33 | } 34 | 35 | .el-button.el-button--default { 36 | color: #323232; 37 | background: #f2f2f2; 38 | } 39 | 40 | .demo-drawer__footer { 41 | padding: 10px 30px; 42 | border-top: 1px solid #F2F2F2; 43 | } 44 | 45 | .demo-drawer__footer .el-button { 46 | float: right; 47 | margin-right: 10px; 48 | } 49 | 50 | .el-dialog { 51 | width: 520px; 52 | border: 1px solid #DDE1E5; 53 | border-radius: 3px; 54 | } 55 | 56 | .el-dialog__header { 57 | padding: 0 0 0 20px; 58 | line-height: 50px; 59 | height: 50px; 60 | background: #fff; 61 | border-bottom: 1px solid #F2F2F2; 62 | } 63 | 64 | .el-dialog__header .el-dialog__title { 65 | font-size: 16px; 66 | line-height: 50px; 67 | color: #333333; 68 | } 69 | 70 | .el-dialog__header .el-dialog__headerbtn { 71 | height: 12px; 72 | width: 12px; 73 | } 74 | 75 | .el-dialog__header .el-icon-close { 76 | width: 12px; 77 | height: 12px; 78 | float: left; 79 | } 80 | 81 | .el-dialog__header .el-icon-close::before { 82 | display: block; 83 | width: 12px; 84 | height: 12px; 85 | background: url(~@/assets/images/add-close.png) no-repeat center; 86 | background-size: 100% 100%; 87 | content: ""; 88 | } 89 | 90 | .el-dialog__footer { 91 | border-top: 1px solid #F2F2F2; 92 | padding-bottom: 10px; 93 | } 94 | 95 | .el-checkbox, 96 | .el-checkbox__input.is-checked+.el-checkbox__label, 97 | .el-radio, 98 | .el-radio__input.is-checked+.el-radio__label, 99 | .el-dialog__body, 100 | .el-tree { 101 | color: #333; 102 | } 103 | 104 | .el-radio__label, .el-checkbox__label { 105 | font-size: 12px; 106 | } 107 | .my-el-custom-spinner { 108 | display: inline-block; 109 | width: 80px; 110 | height: 80px; 111 | background: url(~@/assets/images/loading.gif) no-repeat center; 112 | } -------------------------------------------------------------------------------- /src/components/selectBox.vue: -------------------------------------------------------------------------------- 1 | 2 | 8 | 43 | 53 | -------------------------------------------------------------------------------- /src/components/dialog/roleDialog.vue: -------------------------------------------------------------------------------- 1 | 7 | 22 | 23 | 89 | 90 | -------------------------------------------------------------------------------- /src/components/selectResult.vue: -------------------------------------------------------------------------------- 1 | 2 | 8 | 40 | 54 | 55 | -------------------------------------------------------------------------------- /src/components/drawer/promoterDrawer.vue: -------------------------------------------------------------------------------- 1 | 7 | 27 | 71 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 209 | -------------------------------------------------------------------------------- /src/components/drawer/copyerDrawer.vue: -------------------------------------------------------------------------------- 1 | 7 | 34 | 84 | 85 | -------------------------------------------------------------------------------- /src/components/dialog/employeesDialog.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 107 | 108 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### workflow钉钉审批流程设置 4 | 5 | workflow钉钉审批流程设置,基于vue开发。 QQ交流群①:639251756 QQ交流群②:790780565 6 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191116144905578.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Mjg1MTkz,size_16,color_FFFFFF,t_70 ) 7 | - [开源地址vue2版本 https://github.com/StavinLi/Workflow](https://github.com/StavinLi/Workflow) github点个星吧! 8 | - [开源地址vue3版本 https://github.com/StavinLi/Workflow-Vue3](https://github.com/StavinLi/Workflow-Vue3) github点个星吧! 9 | - [开源地址react版本 https://github.com/StavinLi/Workflow-React](https://github.com/StavinLi/Workflow-React) github点个星吧! 10 | - [预览地址 https://stavinli.github.io/Workflow/dist/index.html#/](https://stavinli.github.io/Workflow/dist/index.html#/) 11 | ------------------- 12 | 13 | 14 | #### 项目介绍 15 | - UI钉钉风格 16 | - 技术点 17 | 1. 组件自调用+递归处理,按树状结局处理审批流程问题 18 | - 主要功能点 19 | 2. 界面缩放 20 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191116145339223.jpg) 21 | ```javascript 22 |
23 |
24 | {{nowVal}}% 25 |
26 |
27 | ``` 28 | 3. 节点设置(包括审批人、发起人、抄送人、条件设置) 29 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200304140232374.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Mjg1MTkz,size_16,color_FFFFFF,t_70#pic_center) 30 | ```javascript 31 | 32 |
33 |
34 |
35 | 36 | 指定成员 37 | 主管 38 | 发起人自选 39 | 发起人自己 40 | 连续多级主管 41 | 42 | ... 43 | ``` 44 | 5. 节点新增 45 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191116145355289.png) 46 | ```javascript 47 |
48 | 49 | 69 | ... 70 | ``` 71 | 5.错误校验 72 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200304140011896.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Mjg1MTkz,size_16,color_FFFFFF,t_70) 73 | ```javascript 74 | let {type,error,nodeName,conditionNodes} = childNode 75 | if (type == 1 || type == 2) { 76 | if (error) { 77 | this.tipList.push({ name: nodeName, type: ["","审核人","抄送人"][type] }) 78 | } 79 | this.reErr(childNode) 80 | } else if (type == 3) { 81 | this.reErr(childNode) 82 | } else if (type == 4) { 83 | this.reErr(childNode) 84 | for (var i = 0; i < conditionNodes.length; i++) { 85 | if (conditionNodes[i].error) { 86 | this.tipList.push({ name: conditionNodes[i].nodeName, type: "条件" }) 87 | } 88 | this.reErr(conditionNodes[i]) 89 | } 90 | } 91 | ``` 92 | 6.模糊搜索匹配人员、职位、角色 93 | ```javascript 94 | 95 | 96 | 97 | ``` 98 | #### 项目安装 99 | 100 | > git clone https://github.com/StavinLi/Workflow.git 点个赞吧! 101 | 102 | #### 项目运行 **node14** 103 | > 1.环境依赖 `npm i` 104 | 105 | > 2.本地运行 `npm run serve` 106 | 107 | > 3.打包运行 `npm run build` 108 | -------------------------------------------------------------------------------- /src/views/setting.vue: -------------------------------------------------------------------------------- 1 | 48 | 146 | -------------------------------------------------------------------------------- /src/components/dialog/employeesRoleDialog.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 141 | 142 | -------------------------------------------------------------------------------- /dist/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "success", 4 | "data": { 5 | "tableId": 1, 6 | "workFlowDef": { 7 | "name": "合同审批" 8 | }, 9 | "directorMaxLevel": 4, 10 | "flowPermission": [], 11 | "nodeConfig": { 12 | "nodeName": "发起人", 13 | "type": 0, 14 | "priorityLevel": "", 15 | "settype": "", 16 | "selectMode": "", 17 | "selectRange": "", 18 | "directorLevel": "", 19 | "examineMode": "", 20 | "noHanderAction": "", 21 | "examineEndDirectorLevel": "", 22 | "ccSelfSelectFlag": "", 23 | "conditionList": [], 24 | "nodeUserList": [], 25 | "childNode": { 26 | "nodeName": "审核人", 27 | "error": false, 28 | "type": 1, 29 | "settype": 2, 30 | "selectMode": 0, 31 | "selectRange": 0, 32 | "directorLevel": 1, 33 | "examineMode": 1, 34 | "noHanderAction": 2, 35 | "examineEndDirectorLevel": 0, 36 | "childNode": { 37 | "nodeName": "路由", 38 | "type": 4, 39 | "priorityLevel": 1, 40 | "settype": 1, 41 | "selectMode": 0, 42 | "selectRange": 0, 43 | "directorLevel": 1, 44 | "examineMode": 1, 45 | "noHanderAction": 2, 46 | "examineEndDirectorLevel": 1, 47 | "ccSelfSelectFlag": 1, 48 | "conditionList": [], 49 | "nodeUserList": [], 50 | "childNode": { 51 | "nodeName": "抄送人", 52 | "type": 2, 53 | "ccSelfSelectFlag": 1, 54 | "childNode": null, 55 | "nodeUserList": [], 56 | "error": false 57 | }, 58 | "conditionNodes": [{ 59 | "nodeName": "条件1", 60 | "type": 3, 61 | "priorityLevel": 1, 62 | "settype": 1, 63 | "selectMode": 0, 64 | "selectRange": 0, 65 | "directorLevel": 1, 66 | "examineMode": 1, 67 | "noHanderAction": 2, 68 | "examineEndDirectorLevel": 1, 69 | "ccSelfSelectFlag": 1, 70 | "conditionList": [{ 71 | "columnId": 0, 72 | "type": 1, 73 | "conditionEn": "", 74 | "conditionCn": "", 75 | "optType": "", 76 | "zdy1": "", 77 | "zdy2": "", 78 | "opt1": "", 79 | "opt2": "", 80 | "columnDbname": "", 81 | "columnType": "", 82 | "showType": "", 83 | "showName": "", 84 | "fixedDownBoxValue": "" 85 | }], 86 | "nodeUserList": [{ 87 | "targetId": 85, 88 | "type": 1, 89 | "name": "天旭" 90 | }], 91 | "childNode": { 92 | "nodeName": "审核人", 93 | "type": 1, 94 | "priorityLevel": 1, 95 | "settype": 1, 96 | "selectMode": 0, 97 | "selectRange": 0, 98 | "directorLevel": 1, 99 | "examineMode": 1, 100 | "noHanderAction": 2, 101 | "examineEndDirectorLevel": 1, 102 | "ccSelfSelectFlag": 1, 103 | "conditionList": [], 104 | "nodeUserList": [{ 105 | "targetId": 2515744, 106 | "type": 1, 107 | "name": "哈哈哈哈" 108 | }], 109 | "childNode": null, 110 | "conditionNodes": [], 111 | "error": false 112 | }, 113 | "conditionNodes": [], 114 | "error": false 115 | }, { 116 | "nodeName": "条件2", 117 | "type": 3, 118 | "priorityLevel": 2, 119 | "settype": 1, 120 | "selectMode": 0, 121 | "selectRange": 0, 122 | "directorLevel": 1, 123 | "examineMode": 1, 124 | "noHanderAction": 2, 125 | "examineEndDirectorLevel": 1, 126 | "ccSelfSelectFlag": 1, 127 | "conditionList": [], 128 | "nodeUserList": [], 129 | "childNode": null, 130 | "conditionNodes": [], 131 | "error": false 132 | }] 133 | }, 134 | "nodeUserList": [] 135 | }, 136 | "conditionNodes": [] 137 | } 138 | } 139 | } -------------------------------------------------------------------------------- /public/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": "200", 3 | "msg": "success", 4 | "data": { 5 | "tableId": 1, 6 | "workFlowDef": { 7 | "name": "合同审批" 8 | }, 9 | "directorMaxLevel": 4, 10 | "flowPermission": [], 11 | "nodeConfig": { 12 | "nodeName": "发起人", 13 | "type": 0, 14 | "priorityLevel": "", 15 | "settype": "", 16 | "selectMode": "", 17 | "selectRange": "", 18 | "directorLevel": "", 19 | "examineMode": "", 20 | "noHanderAction": "", 21 | "examineEndDirectorLevel": "", 22 | "ccSelfSelectFlag": "", 23 | "conditionList": [], 24 | "nodeUserList": [], 25 | "childNode": { 26 | "nodeName": "审核人", 27 | "error": false, 28 | "type": 1, 29 | "settype": 2, 30 | "selectMode": 0, 31 | "selectRange": 0, 32 | "directorLevel": 1, 33 | "examineMode": 1, 34 | "noHanderAction": 2, 35 | "examineEndDirectorLevel": 0, 36 | "childNode": { 37 | "nodeName": "路由", 38 | "type": 4, 39 | "priorityLevel": 1, 40 | "settype": 1, 41 | "selectMode": 0, 42 | "selectRange": 0, 43 | "directorLevel": 1, 44 | "examineMode": 1, 45 | "noHanderAction": 2, 46 | "examineEndDirectorLevel": 1, 47 | "ccSelfSelectFlag": 1, 48 | "conditionList": [], 49 | "nodeUserList": [], 50 | "childNode": { 51 | "nodeName": "抄送人", 52 | "type": 2, 53 | "ccSelfSelectFlag": 1, 54 | "childNode": null, 55 | "nodeUserList": [], 56 | "error": false 57 | }, 58 | "conditionNodes": [{ 59 | "nodeName": "条件1", 60 | "type": 3, 61 | "priorityLevel": 1, 62 | "settype": 1, 63 | "selectMode": 0, 64 | "selectRange": 0, 65 | "directorLevel": 1, 66 | "examineMode": 1, 67 | "noHanderAction": 2, 68 | "examineEndDirectorLevel": 1, 69 | "ccSelfSelectFlag": 1, 70 | "conditionList": [{ 71 | "columnId": 0, 72 | "type": 1, 73 | "conditionEn": "", 74 | "conditionCn": "", 75 | "optType": "", 76 | "zdy1": "", 77 | "zdy2": "", 78 | "opt1": "", 79 | "opt2": "", 80 | "columnDbname": "", 81 | "columnType": "", 82 | "showType": "", 83 | "showName": "", 84 | "fixedDownBoxValue": "" 85 | }], 86 | "nodeUserList": [{ 87 | "targetId": 85, 88 | "type": 1, 89 | "name": "天旭" 90 | }], 91 | "childNode": { 92 | "nodeName": "审核人", 93 | "type": 1, 94 | "priorityLevel": 1, 95 | "settype": 1, 96 | "selectMode": 0, 97 | "selectRange": 0, 98 | "directorLevel": 1, 99 | "examineMode": 1, 100 | "noHanderAction": 2, 101 | "examineEndDirectorLevel": 1, 102 | "ccSelfSelectFlag": 1, 103 | "conditionList": [], 104 | "nodeUserList": [{ 105 | "targetId": 2515744, 106 | "type": 1, 107 | "name": "哈哈哈哈" 108 | }], 109 | "childNode": null, 110 | "conditionNodes": [], 111 | "error": false 112 | }, 113 | "conditionNodes": [], 114 | "error": false 115 | }, { 116 | "nodeName": "条件2", 117 | "type": 3, 118 | "priorityLevel": 2, 119 | "settype": 1, 120 | "selectMode": 0, 121 | "selectRange": 0, 122 | "directorLevel": 1, 123 | "examineMode": 1, 124 | "noHanderAction": 2, 125 | "examineEndDirectorLevel": 1, 126 | "ccSelfSelectFlag": 1, 127 | "conditionList": [], 128 | "nodeUserList": [], 129 | "childNode": null, 130 | "conditionNodes": [], 131 | "error": false 132 | }] 133 | }, 134 | "nodeUserList": [] 135 | }, 136 | "conditionNodes": [] 137 | } 138 | } 139 | } -------------------------------------------------------------------------------- /dist/data字段注释.js: -------------------------------------------------------------------------------- 1 | export default { 2 | "code": "200", 3 | "msg": "success", 4 | "data": { 5 | "tableId": 1,//审批id 6 | "workFlowDef": { 7 | "name": "合同审批",//审批名称 8 | }, 9 | "directorMaxLevel": 4,//审批主管最大层级 10 | "flowPermission": [],//发起人 11 | "nodeConfig": { 12 | "nodeName": "发起人",//节点名称 13 | "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 14 | "priorityLevel": "",// 条件优先级 15 | "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 16 | "selectMode": "", //审批人数 1选一个人 2选多个人 17 | "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 18 | "directorLevel": "", //审批终点 最高层主管数 19 | "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 20 | "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 21 | "examineEndDirectorLevel": "", //审批终点 第n层主管 22 | "ccSelfSelectFlag": "", //允许发起人自选抄送人 23 | "conditionList": [], //当审批单同时满足以下条件时进入此流程 24 | "nodeUserList": [], //操作人 25 | "childNode": { 26 | "nodeName": "审核人", 27 | "error": false, //当前审批是否通过校验 28 | "type": 1, 29 | "settype": 2, 30 | "selectMode": 0, 31 | "selectRange": 0, 32 | "directorLevel": 1, 33 | "examineMode": 1, 34 | "noHanderAction": 2, 35 | "examineEndDirectorLevel": 0, 36 | "childNode": { 37 | "nodeName": "路由", 38 | "type": 4, 39 | "priorityLevel": 1, 40 | "settype": 1, 41 | "selectMode": 0, 42 | "selectRange": 0, 43 | "directorLevel": 1, 44 | "examineMode": 1, 45 | "noHanderAction": 2, 46 | "examineEndDirectorLevel": 1, 47 | "ccSelfSelectFlag": 1, 48 | "conditionList": [], 49 | "nodeUserList": [], 50 | "childNode": { 51 | "nodeName": "抄送人", 52 | "type": 2, 53 | "ccSelfSelectFlag": 1, 54 | "childNode": null, 55 | "nodeUserList": [], 56 | "error": false 57 | }, 58 | "conditionNodes": [{ //条件节点 59 | "nodeName": "条件1", 60 | "type": 3, 61 | "priorityLevel": 1, 62 | "settype": 1, 63 | "selectMode": 0, 64 | "selectRange": 0, 65 | "directorLevel": 1, 66 | "examineMode": 1, 67 | "noHanderAction": 2, 68 | "examineEndDirectorLevel": 1, 69 | "ccSelfSelectFlag": 1, 70 | "conditionList": [{ //当前条件 71 | "columnId": 0, //发起人 72 | "type": 1, //1 发起人 2其他 73 | "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] 74 | "zdy1": "",//左侧自定义内容 75 | "zdy2": "",//右侧自定义内容 76 | "opt1": "",//左侧符号 < ≤ 77 | "opt2": "",//右侧符号 < ≤ 78 | "columnDbname": "",//条件字段名称 79 | "columnType": "",//条件字段类型 80 | "showType": "",//checkBox多选 其他 81 | "showName": "",//展示名 82 | "fixedDownBoxValue": ""//多选数组 83 | }], 84 | "nodeUserList": [{ 85 | "targetId": 85, 86 | "type": 1, 87 | "name": "天旭" 88 | }], 89 | "childNode": { 90 | "nodeName": "审核人", 91 | "type": 1, 92 | "priorityLevel": 1, 93 | "settype": 1, 94 | "selectMode": 0, 95 | "selectRange": 0, 96 | "directorLevel": 1, 97 | "examineMode": 1, 98 | "noHanderAction": 2, 99 | "examineEndDirectorLevel": 1, 100 | "ccSelfSelectFlag": 1, 101 | "conditionList": [], 102 | "nodeUserList": [{ 103 | "targetId": 2515744, 104 | "type": 1, 105 | "name": "哈哈哈哈" 106 | }], 107 | "childNode": null, 108 | "conditionNodes": [], 109 | "error": false 110 | }, 111 | "conditionNodes": [], 112 | "error": false 113 | }, { 114 | "nodeName": "条件2", 115 | "type": 3, 116 | "priorityLevel": 2, 117 | "settype": 1, 118 | "selectMode": 0, 119 | "selectRange": 0, 120 | "directorLevel": 1, 121 | "examineMode": 1, 122 | "noHanderAction": 2, 123 | "examineEndDirectorLevel": 1, 124 | "ccSelfSelectFlag": 1, 125 | "conditionList": [], 126 | "nodeUserList": [], 127 | "childNode": null, 128 | "conditionNodes": [], 129 | "error": false 130 | }] 131 | }, 132 | "nodeUserList": [] 133 | }, 134 | "conditionNodes": [] 135 | } 136 | } 137 | } -------------------------------------------------------------------------------- /public/data字段注释.js: -------------------------------------------------------------------------------- 1 | export default { 2 | "code": "200", 3 | "msg": "success", 4 | "data": { 5 | "tableId": 1,//审批id 6 | "workFlowDef": { 7 | "name": "合同审批",//审批名称 8 | }, 9 | "directorMaxLevel": 4,//审批主管最大层级 10 | "flowPermission": [],//发起人 11 | "nodeConfig": { 12 | "nodeName": "发起人",//节点名称 13 | "type": 0,// 0 发起人 1审批 2抄送 3条件 4路由 14 | "priorityLevel": "",// 条件优先级 15 | "settype": "",// 审批人设置 1指定成员 2主管 4发起人自选 5发起人自己 7连续多级主管 16 | "selectMode": "", //审批人数 1选一个人 2选多个人 17 | "selectRange": "", //选择范围 1.全公司 2指定成员 2指定角色 18 | "directorLevel": "", //审批终点 最高层主管数 19 | "examineMode": "", //多人审批时采用的审批方式 1依次审批 2会签 20 | "noHanderAction": "",//审批人为空时 1自动审批通过/不允许发起 2转交给审核管理员 21 | "examineEndDirectorLevel": "", //审批终点 第n层主管 22 | "ccSelfSelectFlag": "", //允许发起人自选抄送人 23 | "conditionList": [], //当审批单同时满足以下条件时进入此流程 24 | "nodeUserList": [], //操作人 25 | "childNode": { 26 | "nodeName": "审核人", 27 | "error": false, //当前审批是否通过校验 28 | "type": 1, 29 | "settype": 2, 30 | "selectMode": 0, 31 | "selectRange": 0, 32 | "directorLevel": 1, 33 | "examineMode": 1, 34 | "noHanderAction": 2, 35 | "examineEndDirectorLevel": 0, 36 | "childNode": { 37 | "nodeName": "路由", 38 | "type": 4, 39 | "priorityLevel": 1, 40 | "settype": 1, 41 | "selectMode": 0, 42 | "selectRange": 0, 43 | "directorLevel": 1, 44 | "examineMode": 1, 45 | "noHanderAction": 2, 46 | "examineEndDirectorLevel": 1, 47 | "ccSelfSelectFlag": 1, 48 | "conditionList": [], 49 | "nodeUserList": [], 50 | "childNode": { 51 | "nodeName": "抄送人", 52 | "type": 2, 53 | "ccSelfSelectFlag": 1, 54 | "childNode": null, 55 | "nodeUserList": [], 56 | "error": false 57 | }, 58 | "conditionNodes": [{ //条件节点 59 | "nodeName": "条件1", 60 | "type": 3, 61 | "priorityLevel": 1, 62 | "settype": 1, 63 | "selectMode": 0, 64 | "selectRange": 0, 65 | "directorLevel": 1, 66 | "examineMode": 1, 67 | "noHanderAction": 2, 68 | "examineEndDirectorLevel": 1, 69 | "ccSelfSelectFlag": 1, 70 | "conditionList": [{ //当前条件 71 | "columnId": 0, //发起人 72 | "type": 1, //1 发起人 2其他 73 | "optType": "", //["", "<", ">", "≤", "=", "≥"][optType] 74 | "zdy1": "",//左侧自定义内容 75 | "zdy2": "",//右侧自定义内容 76 | "opt1": "",//左侧符号 < ≤ 77 | "opt2": "",//右侧符号 < ≤ 78 | "columnDbname": "",//条件字段名称 79 | "columnType": "",//条件字段类型 80 | "showType": "",//checkBox多选 其他 81 | "showName": "",//展示名 82 | "fixedDownBoxValue": ""//多选数组 83 | }], 84 | "nodeUserList": [{ 85 | "targetId": 85, 86 | "type": 1, 87 | "name": "天旭" 88 | }], 89 | "childNode": { 90 | "nodeName": "审核人", 91 | "type": 1, 92 | "priorityLevel": 1, 93 | "settype": 1, 94 | "selectMode": 0, 95 | "selectRange": 0, 96 | "directorLevel": 1, 97 | "examineMode": 1, 98 | "noHanderAction": 2, 99 | "examineEndDirectorLevel": 1, 100 | "ccSelfSelectFlag": 1, 101 | "conditionList": [], 102 | "nodeUserList": [{ 103 | "targetId": 2515744, 104 | "type": 1, 105 | "name": "哈哈哈哈" 106 | }], 107 | "childNode": null, 108 | "conditionNodes": [], 109 | "error": false 110 | }, 111 | "conditionNodes": [], 112 | "error": false 113 | }, { 114 | "nodeName": "条件2", 115 | "type": 3, 116 | "priorityLevel": 2, 117 | "settype": 1, 118 | "selectMode": 0, 119 | "selectRange": 0, 120 | "directorLevel": 1, 121 | "examineMode": 1, 122 | "noHanderAction": 2, 123 | "examineEndDirectorLevel": 1, 124 | "ccSelfSelectFlag": 1, 125 | "conditionList": [], 126 | "nodeUserList": [], 127 | "childNode": null, 128 | "conditionNodes": [], 129 | "error": false 130 | }] 131 | }, 132 | "nodeUserList": [] 133 | }, 134 | "conditionNodes": [] 135 | } 136 | } 137 | } -------------------------------------------------------------------------------- /src/plugins/preload.js: -------------------------------------------------------------------------------- 1 | function All() { } 2 | All.prototype = { 3 | timer: "", 4 | debounce(fn, delay = 500) { 5 | var _this = this; 6 | return function (arg) { 7 | //获取函数的作用域和变量 8 | let that = this; 9 | let args = arg; 10 | clearTimeout(_this.timer) // 清除定时器 11 | _this.timer = setTimeout(function () { 12 | fn.call(that, args) 13 | }, delay) 14 | } 15 | }, 16 | setCookie(val) { //cookie设置[{key:value}]、获取key、清除['key1','key2'] 17 | for (var i = 0, len = val.length; i < len; i++) { 18 | for (var key in val[i]) { 19 | document.cookie = key + '=' + encodeURIComponent(val[i][key]) + "; path=/"; 20 | } 21 | } 22 | }, 23 | getCookie(name) { 24 | var strCookie = document.cookie; 25 | var arrCookie = strCookie.split("; "); 26 | for (var i = 0, len = arrCookie.length; i < len; i++) { 27 | var arr = arrCookie[i].split("="); 28 | if (name == arr[0]) { 29 | return decodeURIComponent(arr[1]); 30 | } 31 | } 32 | }, 33 | clearCookie(name) { 34 | var myDate = new Date(); 35 | myDate.setTime(-1000); //设置时间 36 | for (var i = 0, len = name.length; i < len; i++) { 37 | document.cookie = "" + name[i] + "=''; path=/; expires=" + myDate.toGMTString(); 38 | } 39 | }, 40 | arrToStr(arr) { 41 | if (arr) { 42 | return arr.map(item => item.name).toString() 43 | } 44 | }, 45 | toggleClass(arr, elem, key = 'id') { 46 | return arr.some(item => item[key] == elem[key]); 47 | }, 48 | toChecked(arr, elem, key = 'id') { 49 | var isIncludes = this.toggleClass(arr, elem, key); 50 | !isIncludes ? arr.push(elem) : this.removeEle(arr, elem, key); 51 | }, 52 | removeEle(arr, elem, key = 'id') { 53 | var includesIndex; 54 | arr.map((item, index) => { 55 | if (item[key] == elem[key]) { 56 | includesIndex = index 57 | } 58 | }); 59 | arr.splice(includesIndex, 1); 60 | }, 61 | setApproverStr(nodeConfig) { 62 | if (nodeConfig.settype == 1) { 63 | if (nodeConfig.nodeUserList.length == 1) { 64 | return nodeConfig.nodeUserList[0].name 65 | } else if (nodeConfig.nodeUserList.length > 1) { 66 | if (nodeConfig.examineMode == 1) { 67 | return this.arrToStr(nodeConfig.nodeUserList) 68 | } else if (nodeConfig.examineMode == 2) { 69 | return nodeConfig.nodeUserList.length + "人会签" 70 | } 71 | } 72 | } else if (nodeConfig.settype == 2) { 73 | let level = nodeConfig.directorLevel == 1 ? '直接主管' : '第' + nodeConfig.directorLevel + '级主管' 74 | if (nodeConfig.examineMode == 1) { 75 | return level 76 | } else if (nodeConfig.examineMode == 2) { 77 | return level + "会签" 78 | } 79 | } else if (nodeConfig.settype == 4) { 80 | if (nodeConfig.selectRange == 1) { 81 | return "发起人自选" 82 | } else { 83 | if (nodeConfig.nodeUserList.length > 0) { 84 | if (nodeConfig.selectRange == 2) { 85 | return "发起人自选" 86 | } else { 87 | return '发起人从' + nodeConfig.nodeUserList[0].name + '中自选' 88 | } 89 | } else { 90 | return ""; 91 | } 92 | } 93 | } else if (nodeConfig.settype == 5) { 94 | return "发起人自己" 95 | } else if (nodeConfig.settype == 7) { 96 | return '从直接主管到通讯录中级别最高的第' + nodeConfig.examineEndDirectorLevel + '个层级主管' 97 | } 98 | }, 99 | dealStr(str, obj) { 100 | let arr = []; 101 | let list = str.split(","); 102 | for (var elem in obj) { 103 | list.map(item => { 104 | if (item == elem) { 105 | arr.push(obj[elem].value) 106 | } 107 | }) 108 | } 109 | return arr.join("或") 110 | }, 111 | conditionStr(nodeConfig, index) { 112 | var { conditionList, nodeUserList } = nodeConfig.conditionNodes[index]; 113 | if (conditionList.length == 0) { 114 | return (index == nodeConfig.conditionNodes.length - 1) && nodeConfig.conditionNodes[0].conditionList.length != 0 ? '其他条件进入此流程' : '请设置条件' 115 | } else { 116 | let str = "" 117 | for (var i = 0; i < conditionList.length; i++) { 118 | var { columnId, columnType, showType, showName, optType, zdy1, opt1, zdy2, opt2, fixedDownBoxValue } = conditionList[i]; 119 | if (columnId == 0) { 120 | if (nodeUserList.length != 0) { 121 | str += '发起人属于:' 122 | str += nodeUserList.map(item => item.name).join("或") + " 并且 " 123 | } 124 | } 125 | if (columnType == "String" && showType == "checkBox") { 126 | if (zdy1) { 127 | str += showName + '属于:' + this.dealStr(zdy1, JSON.parse(fixedDownBoxValue)) + " 并且 " 128 | } 129 | } 130 | if (columnType == "Double") { 131 | if (optType != 6 && zdy1) { 132 | var optTypeStr = ["", "<", ">", "≤", "=", "≥"][optType] 133 | str += `${showName} ${optTypeStr} ${zdy1} 并且 ` 134 | } else if (optType == 6 && zdy1 && zdy2) { 135 | str += `${zdy1} ${opt1} ${showName} ${opt2} ${zdy2} 并且 ` 136 | } 137 | } 138 | } 139 | return str ? str.substring(0, str.length - 4) : '请设置条件' 140 | } 141 | }, 142 | copyerStr(nodeConfig) { 143 | if (nodeConfig.nodeUserList.length != 0) { 144 | return this.arrToStr(nodeConfig.nodeUserList) 145 | } else { 146 | if (nodeConfig.ccSelfSelectFlag == 1) { 147 | return "发起人自选" 148 | } 149 | } 150 | }, 151 | toggleStrClass(item, key) { 152 | let a = item.zdy1 ? item.zdy1.split(",") : [] 153 | return a.some(item => item == key); 154 | }, 155 | } 156 | 157 | export default new All(); -------------------------------------------------------------------------------- /dist/css/app.cee175a8.css: -------------------------------------------------------------------------------- 1 | #app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;margin-top:60px}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;outline:0;font-size:100%;font:inherit;vertical-align:baseline}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.l{float:left}input{text-indent:10px}select{text-indent:8px}.ml_10{margin-left:10px}.mr_10{margin-right:10px}.check_box a,.radio_box a{font-size:12px;position:relative;padding-left:20px;margin-right:30px;cursor:pointer;color:#333}.check_box.not a:hover{color:#333}.check_box.not a:before,.check_box.not a:hover:before{border:none}.check_box.not.active{background:#f3f3f3}.check_box a:hover:before,.radio_box a:hover:before{border:1px solid #46a6fe}.check_box a:before,.radio_box a:before{position:absolute;width:14px;height:14px;border:1px solid #dcdfe6;border-radius:2px;left:0;top:1px;content:""}.radio_box a:before{border-radius:50%}.check-dot.active:after,.check_box a.active:after,.radio_box a.active:after{position:absolute;width:10px;height:10px;border-radius:50%;top:3px;left:3px;content:""}.radio_box a.active:after{background:#46a6fe}.check_box a.active:after{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAqUlEQVQY033PoUrDUQCF8d/VobhyQbkPsGdYGZhUGIhlQQxG4dalJYN7kLuyJmi2aV/2DcQwuBiuwSRo+QuGsVPPB+c7wZbEUvtY4ra3BdrDI85xGGKpA9zgruX000G7uMcl3nDcwwOGOMAslhqw6KA1zlpO7yGWOsIz+pjjCFN84KTl9AqhmzrFE/Y7xU+MW06rP+cdaDm94Arf+MLkP7Tp6XUs9WJT9ws1kC07ActjIgAAAABJRU5ErkJggg==) no-repeat 50%}.el-drawer__header button.el-drawer__close-btn{display:none}.el-drawer__header{margin-bottom:0;padding:14px 0 14px 20px;color:#323232;font-size:16px}.demo-drawer__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.drawer_content{-webkit-box-flex:1;-ms-flex:1;flex:1}.demo-drawer__content>div{border-top:1px solid #f2f2f2}.el-button{min-width:79px;padding:8px 12px;font-size:12px;border-radius:2px;background:#46a6fe}.el-button.el-button--default{color:#323232;background:#f2f2f2}.demo-drawer__footer{padding:10px 30px;border-top:1px solid #f2f2f2}.demo-drawer__footer .el-button{float:right;margin-right:10px}.el-dialog{width:520px;border:1px solid #dde1e5;border-radius:3px}.el-dialog__header{padding:0 0 0 20px;line-height:50px;height:50px;background:#fff;border-bottom:1px solid #f2f2f2}.el-dialog__header .el-dialog__title{font-size:16px;line-height:50px;color:#333}.el-dialog__header .el-dialog__headerbtn{height:12px;width:12px}.el-dialog__header .el-icon-close{width:12px;height:12px;float:left}.el-dialog__header .el-icon-close:before{display:block;width:12px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAAAXNSR0IArs4c6QAAAYxJREFUKBV9kTFLw0AUx+8uFx06F0FwEjoIlgptzg6OfgYHBzsITVJsLOji4OImKFabFhShCFKXiiJSoaKLYJuUCiriIjiKgoMUl6Q53wUDKtQHd+/x+P/e3XsPG5mMxTmf3ywWr9E/tqCqYVeWlwlGSCUY7wM40Uu/qOsDLqXnyPPaUsO2X1g8foEIOUgqyl3Dsp5/gjlVHewSUofc6oZp7kkQ4Gar9aowViecVxhjj03LehKQYRhDHOM6R2glb5oVkYMf+UfEyNC0CJKkU4yx4XL+QBE6A/FSvlA49AVw/QJEMqfrw1C1BiEFb4D4ROQDI0EA3ocd1xVCEXtw+oM8eN9EDwISApRV1RGJUlFRcxFah+ntjivKO/R0H2j8poV4Lp0eJbJ8DDuZhZ1c2rb9oUSjR5jSbZZIdJq2fSsgH8hq2hihtOp1uzNbpdLVdzVstdudZCxWBagIo3cAusGwMIYwrsBUpk3TtMRrf01PpcJ9oVANetuBb+I12OBUL7GAi+Xy26fjTEKjkS8Vk5JVBgyrJwAAAABJRU5ErkJggg==) no-repeat 50%;background-size:100% 100%;content:""}.el-dialog__footer{border-top:1px solid #f2f2f2;padding-bottom:10px}.el-checkbox,.el-checkbox__input.is-checked+.el-checkbox__label,.el-dialog__body,.el-radio,.el-radio__input.is-checked+.el-radio__label,.el-tree{color:#333}.el-checkbox__label,.el-radio__label{font-size:12px}.my-el-custom-spinner{display:inline-block;width:80px;height:80px;background:url(../img/loading.c54ac4d1.gif) no-repeat 50%}.error_tip{position:absolute;top:0;right:0;-webkit-transform:translate(150%);transform:translate(150%);font-size:24px}.promoter_person .el-dialog__body{padding:10px 20px 14px 20px}.selected_list{margin-bottom:20px;line-height:30px}.selected_list span{margin-right:10px;padding:3px 6px 3px 9px;line-height:12px;white-space:nowrap;border-radius:2px;border:1px solid #dcdcdc}.selected_list img{margin-left:5px;width:7px;height:7px;cursor:pointer}.add-node-btn-box[data-v-3263f707]{width:240px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;position:relative}.add-node-btn-box[data-v-3263f707]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;margin:auto;width:2px;height:100%;background-color:#cacaca}.add-node-btn-box .add-node-btn[data-v-3263f707]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:240px;padding:20px 0 32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.add-node-btn-box .add-node-btn .btn[data-v-3263f707]{outline:none;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.1);box-shadow:0 2px 4px 0 rgba(0,0,0,.1);width:30px;height:30px;background:#3296fa;border-radius:50%;position:relative;border:none;line-height:30px;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1)}.add-node-btn-box .add-node-btn .btn .iconfont[data-v-3263f707]{color:#fff;font-size:16px}.add-node-btn-box .add-node-btn .btn[data-v-3263f707]:hover{-webkit-transform:scale(1.3);transform:scale(1.3);-webkit-box-shadow:0 13px 27px 0 rgba(0,0,0,.1);box-shadow:0 13px 27px 0 rgba(0,0,0,.1)}.add-node-btn-box .add-node-btn .btn[data-v-3263f707]:active{-webkit-transform:none;transform:none;background:#1e83e9;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.1);box-shadow:0 2px 4px 0 rgba(0,0,0,.1)}.add-node-popover-body{display:-webkit-box;display:-ms-flexbox;display:flex}.add-node-popover-body .add-node-popover-item{margin-right:10px;cursor:pointer;text-align:center;-webkit-box-flex:1;-ms-flex:1;flex:1;color:#191f25!important}.add-node-popover-body .add-node-popover-item .item-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;width:80px;height:80px;margin-bottom:5px;background:#fff;border:1px solid #e2e2e2;border-radius:50%;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1)}.add-node-popover-body .add-node-popover-item .item-wrapper .iconfont{font-size:35px;line-height:80px}.add-node-popover-body .add-node-popover-item.approver .item-wrapper{color:#ff943e}.add-node-popover-body .add-node-popover-item.notifier .item-wrapper{color:#3296fa}.add-node-popover-body .add-node-popover-item.condition .item-wrapper{color:#15bc83}.add-node-popover-body .add-node-popover-item:hover .item-wrapper{background:#3296fa;-webkit-box-shadow:0 10px 20px 0 rgba(50,150,250,.4);box-shadow:0 10px 20px 0 rgba(50,150,250,.4)}.add-node-popover-body .add-node-popover-item:hover .iconfont{color:#fff}.add-node-popover-body .add-node-popover-item:active .item-wrapper{-webkit-box-shadow:none;box-shadow:none;background:#eaeaea}.add-node-popover-body .add-node-popover-item:active .iconfont{color:inherit} -------------------------------------------------------------------------------- /src/components/addNode.vue: -------------------------------------------------------------------------------- 1 | 32 | 97 | 166 | -------------------------------------------------------------------------------- /src/components/drawer/approverDrawer.vue: -------------------------------------------------------------------------------- 1 | 96 | 171 | -------------------------------------------------------------------------------- /src/components/nodeWrap.vue: -------------------------------------------------------------------------------- 1 | 85 | 261 | -------------------------------------------------------------------------------- /src/components/drawer/conditionDrawer.vue: -------------------------------------------------------------------------------- 1 | 83 | 84 | 245 | 246 | -------------------------------------------------------------------------------- /dist/app.839d3d2e4a04b0c9892b.js: -------------------------------------------------------------------------------- 1 | (function(e){function t(t){for(var o,i,d=t[0],a=t[1],c=t[2],l=0,u=[];l1&&void 0!==arguments[1]?arguments[1]:500,n=this;return function(o){var i=this,r=o;clearTimeout(n.timer),n.timer=setTimeout((function(){e.call(i,r)}),t)}},setCookie:function(e){for(var t=0,n=e.length;t2&&void 0!==arguments[2]?arguments[2]:"id",o=this.toggleClass(e,t,n);o?this.removeEle(e,t,n):e.push(t)},removeEle:function(e,t){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"id";e.map((function(e,i){e[o]==t[o]&&(n=i)})),e.splice(n,1)},setApproverStr:function(e){if(1==e.settype){if(1==e.nodeUserList.length)return e.nodeUserList[0].name;if(e.nodeUserList.length>1){if(1==e.examineMode)return this.arrToStr(e.nodeUserList);if(2==e.examineMode)return e.nodeUserList.length+"人会签"}}else if(2==e.settype){var t=1==e.directorLevel?"直接主管":"第"+e.directorLevel+"级主管";if(1==e.examineMode)return t;if(2==e.examineMode)return t+"会签"}else{if(4==e.settype)return 1==e.selectRange?"发起人自选":e.nodeUserList.length>0?2==e.selectRange?"发起人自选":"发起人从"+e.nodeUserList[0].name+"中自选":"";if(5==e.settype)return"发起人自己";if(7==e.settype)return"从直接主管到通讯录中级别最高的第"+e.examineEndDirectorLevel+"个层级主管"}},dealStr:function(e,t){var n=[],o=e.split(",");for(var i in t)o.map((function(e){e==i&&n.push(t[i].value)}));return n.join("或")},conditionStr:function(e,t){var n=e.conditionNodes[t],o=n.conditionList,i=n.nodeUserList;if(0==o.length)return t==e.conditionNodes.length-1&&0!=e.conditionNodes[0].conditionList.length?"其他条件进入此流程":"请设置条件";for(var r="",s=0;s","≤","=","≥"][f];r+="".concat(u," ").concat(m," ").concat(p," 并且 ")}else 6==f&&p&&g&&(r+="".concat(p," ").concat(h," ").concat(u," ").concat(v," ").concat(g," 并且 "))}return r?r.substring(0,r.length-4):"请设置条件"},copyerStr:function(e){return 0!=e.nodeUserList.length?this.arrToStr(e.nodeUserList):1==e.ccSelfSelectFlag?"发起人自选":void 0},toggleStrClass:function(e,t){var n=e.zdy1?e.zdy1.split(","):[];return n.some((function(e){return e==t}))}};var z=new W,q=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[e.nodeConfig.type<3?n("div",{staticClass:"node-wrap"},[n("div",{staticClass:"node-wrap-box",class:(0==e.nodeConfig.type?"start-node ":"")+(e.isTried&&e.nodeConfig.error?"active error":"")},[n("div",[n("div",{staticClass:"title",style:"background: rgb("+e.bgColor+");"},[0==e.nodeConfig.type?n("span",[e._v(e._s(e.nodeConfig.nodeName))]):[n("span",{staticClass:"iconfont"},[e._v(e._s(1==e.nodeConfig.type?"":""))]),e.isInput?n("input",{directives:[{name:"focus",rawName:"v-focus"},{name:"model",rawName:"v-model",value:e.nodeConfig.nodeName,expression:"nodeConfig.nodeName"}],staticClass:"ant-input editable-title-input",attrs:{type:"text",placeholder:e.defaultText},domProps:{value:e.nodeConfig.nodeName},on:{blur:function(t){return e.blurEvent()},focus:function(e){return e.currentTarget.select()},input:function(t){t.target.composing||e.$set(e.nodeConfig,"nodeName",t.target.value)}}}):n("span",{staticClass:"editable-title",on:{click:function(t){return e.clickEvent()}}},[e._v(e._s(e.nodeConfig.nodeName))]),n("i",{staticClass:"anticon anticon-close close",on:{click:e.delNode}})]],2),n("div",{staticClass:"content",on:{click:e.setPerson}},[n("div",{staticClass:"text"},[e.showText?e._e():n("span",{staticClass:"placeholder"},[e._v("请选择"+e._s(e.defaultText))]),e._v("\n "+e._s(e.showText)+"\n ")]),n("i",{staticClass:"anticon anticon-right arrow"})]),e.isTried&&e.nodeConfig.error?n("div",{staticClass:"error_tip"},[n("i",{staticClass:"anticon anticon-exclamation-circle"})]):e._e()])]),n("addNode",{attrs:{childNodeP:e.nodeConfig.childNode},on:{"update:childNodeP":function(t){return e.$set(e.nodeConfig,"childNode",t)},"update:child-node-p":function(t){return e.$set(e.nodeConfig,"childNode",t)}}})],1):e._e(),4==e.nodeConfig.type?n("div",{staticClass:"branch-wrap"},[n("div",{staticClass:"branch-box-wrap"},[n("div",{staticClass:"branch-box"},[n("button",{staticClass:"add-branch",on:{click:e.addTerm}},[e._v("添加条件")]),e._l(e.nodeConfig.conditionNodes,(function(t,o){return n("div",{key:o,staticClass:"col-box"},[n("div",{staticClass:"condition-node"},[n("div",{staticClass:"condition-node-box"},[n("div",{staticClass:"auto-judge",class:e.isTried&&t.error?"error active":""},[0!=o?n("div",{staticClass:"sort-left",on:{click:function(t){return e.arrTransfer(o,-1)}}},[e._v("<")]):e._e(),n("div",{staticClass:"title-wrapper"},[e.isInputList[o]?n("input",{directives:[{name:"focus",rawName:"v-focus"},{name:"model",rawName:"v-model",value:t.nodeName,expression:"item.nodeName"}],staticClass:"ant-input editable-title-input",attrs:{type:"text"},domProps:{value:t.nodeName},on:{blur:function(t){return e.blurEvent(o)},focus:function(e){return e.currentTarget.select()},input:function(n){n.target.composing||e.$set(t,"nodeName",n.target.value)}}}):n("span",{staticClass:"editable-title",on:{click:function(t){return e.clickEvent(o)}}},[e._v(e._s(t.nodeName))]),n("span",{staticClass:"priority-title",on:{click:function(n){return e.setPerson(t.priorityLevel)}}},[e._v("优先级"+e._s(t.priorityLevel))]),n("i",{staticClass:"anticon anticon-close close",on:{click:function(t){return e.delTerm(o)}}})]),o!=e.nodeConfig.conditionNodes.length-1?n("div",{staticClass:"sort-right",on:{click:function(t){return e.arrTransfer(o)}}},[e._v(">")]):e._e(),n("div",{staticClass:"content",on:{click:function(n){return e.setPerson(t.priorityLevel)}}},[e._v(e._s(e.$func.conditionStr(e.nodeConfig,o)))]),e.isTried&&t.error?n("div",{staticClass:"error_tip"},[n("i",{staticClass:"anticon anticon-exclamation-circle",staticStyle:{color:"rgb(242, 86, 67)"}})]):e._e()]),n("addNode",{attrs:{childNodeP:t.childNode},on:{"update:childNodeP":function(n){return e.$set(t,"childNode",n)},"update:child-node-p":function(n){return e.$set(t,"childNode",n)}}})],1)]),t.childNode?n("nodeWrap",{attrs:{nodeConfig:t.childNode},on:{"update:nodeConfig":function(n){return e.$set(t,"childNode",n)},"update:node-config":function(n){return e.$set(t,"childNode",n)}}}):e._e(),0==o?[n("div",{staticClass:"top-left-cover-line"}),n("div",{staticClass:"bottom-left-cover-line"})]:e._e(),o==e.nodeConfig.conditionNodes.length-1?[n("div",{staticClass:"top-right-cover-line"}),n("div",{staticClass:"bottom-right-cover-line"})]:e._e()],2)}))],2),n("addNode",{attrs:{childNodeP:e.nodeConfig.childNode},on:{"update:childNodeP":function(t){return e.$set(e.nodeConfig,"childNode",t)},"update:child-node-p":function(t){return e.$set(e.nodeConfig,"childNode",t)}}})],1)]):e._e(),e.nodeConfig.childNode?n("nodeWrap",{attrs:{nodeConfig:e.nodeConfig.childNode},on:{"update:nodeConfig":function(t){return e.$set(e.nodeConfig,"childNode",t)},"update:node-config":function(t){return e.$set(e.nodeConfig,"childNode",t)}}}):e._e()],1)},H=[],G=(n("8e6e"),n("ac6a"),n("456d"),n("bd86"));function K(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function V(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:1;this.nodeConfig.conditionNodes[e]=this.nodeConfig.conditionNodes.splice(e+t,1,this.nodeConfig.conditionNodes[e])[0],this.nodeConfig.conditionNodes.map((function(e,t){e.priorityLevel=t+1})),this.$emit("update:nodeConfig",this.nodeConfig)},resetConditionNodesErr:function(){for(var e=0;e.anticon[data-v-bdf165a2]{font-size:22px;margin-right:16px;float:left}.select-box{height:420px;overflow-y:auto}.select-box li{padding:5px 0}.select-box li i{float:right;padding-left:24px;padding-right:10px;color:#3195f8;font-size:12px;cursor:pointer;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAMCAYAAABbayygAAAA0UlEQVQoU43QXQrCMAwH8KSb0uFZlNVHFa+zYXcZsb3PhvpqDzOmAT8inYpd8cG+tCS/hj/BuaU9A6wgOAhwOGm5HtSUJXZairCoLD3iGv49EQBQGSoBeeZ0tgknR3FAKEPFG+q5peZXZgQYQmXp7rRMosz3Hua7rkSR2E/TaZm+3+xv/9nDJN91BQoxdTqrlLk0gLiM1/WFCDNXTTysYwjMxxfctiUmYtpDS1en5SiYyMrSzcM037YFpiMTZBxHGa899Lv8IGXONaBYDPbJfHwCUk9gCTg39g0AAAAASUVORK5CYII=) no-repeat 10px;border-left:1px solid #eee}.select-box li a.active+i{color:#c5c5c5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAMCAYAAABbayygAAAAvElEQVQoU43QXW4CMQwEYDsBbgMHoBXXmSztcSDruQ2o5VT8GHkFKI14aF6SOJ/sUZTkj4h8yt/1C2DTlpSkA0htkeStrwX8X0cRCVzcfVVK2XYRXlcVkUQSD/hF8vgu8zt4BZC7zNcJmllR1f3zEcDscfbYSU4wmxlEZFlK+Tazo6p+9N/1gpFxGIaAhx66+2mCtdYYvQxI8gxg3nR0kpeAs1orcs67JuOiy3ieYPzlE43jeEgprduMMfoOtkhobQKAU6QAAAAASUVORK5CYII=);pointer-events:none}.select-box li img{width:14px;vertical-align:middle;margin-right:5px}.select-result{width:276px;height:100%;font-size:12px}.select-result ul{height:460px;overflow-y:auto}.select-result ul li{margin:11px 26px 13px 19px;line-height:17px}.select-result ul li span{vertical-align:middle}.select-result ul li img:first-of-type{width:14px;vertical-align:middle;margin-right:5px}.select-result ul li img:last-of-type{float:right;margin-top:2px;width:14px}.select-result p{padding-left:19px;padding-right:20px;line-height:37px;border-bottom:1px solid #f2f2f2}.select-result p a{float:right}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.person_body{border:1px solid #f5f5f5;height:500px}.tree_nav span{display:inline-block;padding-right:10px;margin-right:5px;max-width:6em;color:#38adff;font-size:12px;cursor:pointer;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAALCAYAAACzkJeoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3FpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNjBmOTNmOC1mZDY0LTU3NGEtOGQ5Yi00ZTZiYzI5YTA5YzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MEZEOEZFQ0IyQTdDMTFFN0FDMkJCQjNCRDI0NkZCQUEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MEZEOEZFQ0EyQTdDMTFFN0FDMkJCQjNCRDI0NkZCQUEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA2MGY5M2Y4LWZkNjQtNTc0YS04ZDliLTRlNmJjMjlhMDljOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNjBmOTNmOC1mZDY0LTU3NGEtOGQ5Yi00ZTZiYzI5YTA5YzkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5Mr+d8AAAAbklEQVR42mI8evEZAxAYA/FZBjTABMQ8QLwCiIvQJVmA+AsQOwLxfqhYH7IkCDyBKtiHrIAFyRSQAidkBSxo1oAUxALxcSA+yIQmKQPEi4G4FOR6JjQJkJEzgbgX5hWsEsj+xJBA9mckthACCDAAXZ4Y+7+dmmAAAAAASUVORK5CYII=) no-repeat 100%}.tree_nav span:last-of-type{background:none}.person_tree{padding:10px 12px 0 8px;width:280px;height:100%;border-right:1px solid #f5f5f5}.person_tree input{padding-left:22px;width:210px;height:30px;font-size:12px;border-radius:2px;border:1px solid #d5dadf;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAEMklEQVRIS72XXWhcRRTH/2duTXPTiFSkqxaL0Rot+GBpCYKiItZQP9pSRB+sEqm+SEWC65272ZfBipnZXbPBKL4oKMU8FGyNCkrRxA+IqKWi+AWChVpERGoba9bd7L1HTrkJaXOzG+2287hz5vzunDkf/yU0WNlsdoVSqpeItgLoAXAFgOUA/gLwM4AJAGO+708aY+JGvs7cozTjvr6+9kwmswtADsDFzRwS0ffMPOCcG2tmO7u/ABwEwToiEgfXJEaTRLQviqIJZj7a2dl5fGpqKuN53lWe522O4/h+IupKbMeY+aFCoSARabhOA4dheDsz7wNwEYCvmfmpQqHwYSMPxphllUrlMQDPALiEmb8F0FsoFH5tdG4OnNz0swQ66vv+TmPMP82+fHY/m812KaXeJqLriejLarV6a7lcrix2/hQ4edNvkvCOOuceXCpwvl0YhiuZ+fPEz6vOuUcbgoMgeJqIChJe3/dv/C83PdNxLpe7Lo7jQ5L9RLTRWvtVGpykZDzPOyLZy8x3NHvTpURCa+0ABET0rrX23lRwEATbiehNAJPOuZuW4riZTRLy3wAQEWWstX8uqGOt9esAHiairLX2+WZOl7qvtX5fspuIdlhr30gD/wBA3mVDsViUt2nJCsNQM7MlohestU+mgU8CWBFFUaZUKv3eEioArfUOAHsA7HfObU8DzwBY5vv+cmNMrVXgXC53TxzH7wB4zzl3Vxr4GICVMzMza4aGhn5pFTgIgp1E9AqAvc65B9LABwFsiOP4tmKx+HGrwGEYPsvMeQDWOSfD5rRFWusigCwROWtt2Cqw1loSdT0R9VprD6SBbwbwKTMf7ujo6DbG1M8WnvT97wBM+b6/Ki13yBijKpWKTJR1AB53zr18tmCt9X4A24joRWvtE6mdS37UWovCeAvAH1EU9ZRKpcP/Fx4EwX1EtBfAySiK1i5WonNjUWst4K0yT5VSt6S1uWYfk8/ne+r1+rj0BQC7nHMvLXZm/jy+UPq1zFMAPymltgwODv7YDDa7n9z0tQR6ZHp6untkZKTaFCwGQRBcnsiejQBkiI8QkW10+ySRnpNoyVAAIOKhHcCBWq22bTExsEBz9ff3+21tbSMAHgGgAEg3myAiUZRHieiEtFelVBczS0e6IQGKzsoppSbiOBa5dCkRjdfr9S2lUunvBeW0WCjCMFzPzLsB3AngggYhP0FEe+r1+u7ZRAqC4FoiEvhqAJ/4vn+3MUZmwtxKlbfzDWS2ApCb9TCz6GoJ4yldLVFob2//KK1OwzBcG8fxOBHJmUnf9zcbY6ZmfTcFLzW50uxEAHqeJ1l+JYAvqtVq7/Dw8HGxPafgpEesASDwqwEcqtVqm8rl8rFzDhZ4Pp9fndR3twhKpdSm8wIW+MDAwGVRFEnCyT+VD84bWODZbHaV53mjzHzwX4sip7vxoJ9hAAAAAElFTkSuQmCC) no-repeat 10px;background-size:14px 14px;margin-bottom:14px}.person_tree img{width:14px;vertical-align:middle;margin-right:5px}.set_promoter .promoter_content{padding:0 20px}.set_promoter .promoter_content .el-button{margin-bottom:20px}.set_promoter .promoter_content p{padding:18px 0;font-size:14px;line-height:20px;color:#000}.set_promoter .approver_content{padding-bottom:10px;border-bottom:1px solid #f2f2f2}.set_promoter .approver_content .el-button,.set_promoter .approver_self_select .el-button{margin-bottom:20px}.set_promoter .approver_content .el-radio,.set_promoter .approver_self_select .el-radio,.set_promoter .approver_some .el-radio{width:27%;margin-bottom:20px}.set_promoter .approver_manager p{line-height:32px}.set_promoter .approver_manager select{width:420px;height:32px;background:#fff;border-radius:4px;border:1px solid #d9d9d9}.set_promoter .approver_manager p.tip{margin:10px 0 22px 0;font-size:12px;line-height:16px;color:#f8642d}.set_promoter .approver_self{padding:28px 20px}.set_promoter .approver_content,.set_promoter .approver_manager,.set_promoter .approver_self_select,.set_promoter .approver_some{padding:20px 20px 0}.set_promoter .approver_manager p:first-of-type,.set_promoter .approver_some p{line-height:19px;font-size:14px;margin-bottom:14px}.set_promoter .approver_self_select h3{margin:5px 0 20px;font-size:14px;font-weight:700;line-height:19px}.set_copyer .copyer_content{padding:20px 20px 0}.set_copyer .copyer_content .el-button,.set_copyer .copyer_content .el-checkbox{margin-bottom:20px}.condition_copyer .el-drawer__body .priority_level{position:absolute;top:11px;right:30px;width:100px;height:32px;background:#fff;border-radius:4px;border:1px solid #d9d9d9}.condition_copyer .condition_content{padding:20px 20px 0}.condition_copyer .condition_content p.tip{margin:20px 0;width:510px;text-indent:17px;line-height:45px;background:#f1f9ff;border:1px solid #40a3f7;color:#46a6fe;font-size:14px}.condition_copyer .condition_content ul{max-height:500px;overflow-y:scroll;margin-bottom:20px}.condition_copyer .condition_content ul li>span{float:left;margin-right:8px;width:70px;line-height:32px;text-align:right}.condition_copyer .condition_content ul li>div{display:inline-block;width:370px}.condition_copyer .condition_content ul li>div>p:not(:last-child){margin-bottom:10px}.condition_copyer .condition_content ul li:not(:last-child)>div>p{margin-bottom:20px}.condition_copyer .condition_content ul li>a{float:right;margin-right:10px;margin-top:7px}.condition_copyer .condition_content ul li input,.condition_copyer .condition_content ul li select{width:100%;height:32px;background:#fff;border-radius:4px;border:1px solid #d9d9d9}.condition_copyer .condition_content ul li select+input{width:260px}.condition_copyer .condition_content ul li select{margin-right:10px;width:100px}.condition_copyer .condition_content ul li p.selected_list{padding-left:10px;border-radius:4px;min-height:32px;border:1px solid #d9d9d9;word-break:break-word}.condition_copyer .condition_content ul li p.check_box{line-height:32px}.condition_copyer .condition_content .el-button{margin-bottom:20px}.condition_list .el-dialog__body{padding:16px 26px}.condition_list p{color:#666;margin-bottom:10px}.condition_list p>.check_box{margin-bottom:0;line-height:36px}body{background:#eee}@font-face{font-family:Chinese Quote;src:local("PingFang SC"),local("SimSun");unicode-range:U+2018,U+2019,U+201c,U+201d}body,html{width:100%}input::-ms-clear,input::-ms-reveal{display:none}html{line-height:1.15;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65)}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#1890ff;background-color:transparent;outline:none;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:focus{text-decoration:underline;-webkit-text-decoration-skip:auto;text-decoration-skip:auto}a:hover{color:#40a9ff}a:active{color:#096dd9}a:active,a:hover{text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}button,input{overflow:visible}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5em;font-size:1.5em;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{background:#1890ff;color:#fff}::selection{background:#1890ff;color:#fff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}@font-face{font-family:anticon;font-display:fallback;src:url(https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.eot);src:url(https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.woff) format("woff"),url(https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.ttf) format("truetype"),url(https://at.alicdn.com/t/font_148784_v4ggb6wrjmkotj4i.svg#iconfont) format("svg")}.anticon{display:inline-block;font-style:normal;vertical-align:baseline;text-align:center;text-transform:none;line-height:1;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon:before{display:block;font-family:anticon!important}.anticon-close:before{content:"\E633"}.anticon-right:before{content:"\E61F"}.anticon-exclamation-circle{color:#f25643}.anticon-exclamation-circle:before{content:"\E62C"}.anticon-left:before{content:"\E620"}.anticon-close-circle:before{content:"\E62E"}.ant-btn{line-height:1.5;display:inline-block;font-weight:400;text-align:center;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:0 15px;font-size:14px;border-radius:4px;height:32px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);color:rgba(0,0,0,.65);background-color:#fff;border-color:#d9d9d9}.ant-btn>.anticon{line-height:1}.ant-btn,.ant-btn:active,.ant-btn:focus{outline:0}.ant-btn>a:only-child{color:currentColor}.ant-btn>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn:focus,.ant-btn:hover{color:#40a9ff;background-color:#fff;border-color:#40a9ff}.ant-btn:focus>a:only-child,.ant-btn:hover>a:only-child{color:currentColor}.ant-btn:focus>a:only-child:after,.ant-btn:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn.active,.ant-btn:active{color:#096dd9;background-color:#fff;border-color:#096dd9}.ant-btn.active>a:only-child,.ant-btn:active>a:only-child{color:currentColor}.ant-btn.active>a:only-child:after,.ant-btn:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn.active,.ant-btn:active,.ant-btn:focus,.ant-btn:hover{background:#fff;text-decoration:none}.ant-btn:before,.ant-btn>i,.ant-btn>span{pointer-events:none}.ant-btn:before{position:absolute;top:-1px;left:-1px;bottom:-1px;right:-1px;background:#fff;opacity:.35;content:"";border-radius:inherit;z-index:1;-webkit-transition:opacity .2s;transition:opacity .2s;display:none}.ant-btn .anticon{-webkit-transition:margin-left .3s cubic-bezier(.645,.045,.355,1);transition:margin-left .3s cubic-bezier(.645,.045,.355,1)}.ant-btn:active>span,.ant-btn:focus>span{position:relative}.ant-btn>.anticon+span,.ant-btn>span+.anticon{margin-left:8px}.fd-nav-container{display:inline-block;position:relative}.fd-nav-container .ghost-bar{position:absolute;width:150px;height:100%;left:0;background:#1583f2;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1)}.fd-nav-container .ghost-bar:after{content:"";position:absolute;bottom:0;left:50%;margin-left:-5px;width:0;height:0;border-style:solid;border-width:0 5px 6px;border-color:transparent transparent #f6f6f6}.fd-nav-item{position:relative;cursor:pointer;display:inline-block;line-height:60px;width:150px;text-align:center;white-space:nowrap}.fd-nav-item .order-num{display:inline-block;width:20px;height:20px;line-height:20px;border:1px solid #fff;border-radius:50%;margin-right:6px;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1)}.fd-nav-item.active .order-num{color:#1583f2;background:#fff}.ant-input{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-variant:tabular-nums;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;position:relative;display:inline-block;padding:4px 11px;width:100%;height:32px;font-size:14px;line-height:1.5;color:rgba(0,0,0,.65);background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:4px;-webkit-transition:all .3s;transition:all .3s}.ant-input::-moz-placeholder{color:#bfbfbf;opacity:1}.ant-input:-ms-input-placeholder{color:#bfbfbf}.ant-input::-webkit-input-placeholder{color:#bfbfbf}.ant-input:focus,.ant-input:hover{border-color:#40a9ff;border-right-width:1px!important}.ant-input:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(24,144,255,.2);box-shadow:0 0 0 2px rgba(24,144,255,.2)}textarea.ant-input{max-width:100%;height:auto;vertical-align:bottom;-webkit-transition:all .3s,height 0s;transition:all .3s,height 0s;min-height:32px}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;outline:0;font-size:100%;font:inherit;vertical-align:baseline}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body,html{font-size:14px}body{font-family:Microsoft Yahei,Lucida Grande,Lucida Sans Unicode,Helvetica,Arial,Verdana,sans-serif;line-height:1.6;background-color:#fff;position:static!important;-webkit-tap-highlight-color:rgba(0,0,0,0)}ol,ul{list-style-type:none}b,strong{font-weight:700}img{border:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}textarea{overflow:auto;vertical-align:top;-webkit-appearance:none}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}table{width:100%;border-spacing:0;border-collapse:collapse}table,td,th{border:0}td,th{padding:0;vertical-align:top}th{font-weight:700;text-align:left}thead th{white-space:nowrap}a{text-decoration:none;cursor:pointer;color:#3296fa}a:active,a:hover{outline:0;color:#3296fa}small{font-size:80%}body,html{font-size:12px!important;color:#191f25!important;background:#f6f6f6!important}.wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}@font-face{font-family:IconFont;src:url(//at.alicdn.com/t/font_135284_ph2thxxbzgf.eot);src:url(//at.alicdn.com/t/font_135284_ph2thxxbzgf.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_135284_ph2thxxbzgf.woff) format("woff"),url(//at.alicdn.com/t/font_135284_ph2thxxbzgf.ttf) format("truetype"),url(//at.alicdn.com/t/font_135284_ph2thxxbzgf.svg#IconFont) format("svg")}.iconfont{font-family:IconFont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}.fd-nav{position:fixed;top:0;left:0;right:0;z-index:997;width:100%;height:60px;font-size:14px;color:#fff;background:#3296fa;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-nav>*{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%}.fd-nav .fd-nav-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.fd-nav .fd-nav-center{-webkit-box-flex:0;-ms-flex:none;flex:none;width:600px;text-align:center}.fd-nav .fd-nav-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.fd-nav .fd-nav-back{display:inline-block;width:60px;height:60px;font-size:22px;border-right:1px solid #1583f2;text-align:center;cursor:pointer}.fd-nav .fd-nav-back:hover{background:#5af}.fd-nav .fd-nav-back:active{background:#1583f2}.fd-nav .fd-nav-back .anticon{line-height:60px}.fd-nav .fd-nav-title{width:0;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 15px}.fd-nav a{color:#fff;margin-left:12px}.fd-nav .button-publish{min-width:80px;margin-left:4px;margin-right:15px;color:#3296fa;border-color:#fff}.fd-nav .button-publish.ant-btn:focus,.fd-nav .button-publish.ant-btn:hover{color:#3296fa;border-color:#fff;-webkit-box-shadow:0 10px 20px 0 rgba(0,0,0,.3);box-shadow:0 10px 20px 0 rgba(0,0,0,.3)}.fd-nav .button-publish.ant-btn:active{color:#3296fa;background:#d6eaff;-webkit-box-shadow:none;box-shadow:none}.fd-nav .button-preview{min-width:80px;margin-left:16px;margin-right:4px;color:#fff;border-color:#fff;background:transparent}.fd-nav .button-preview.ant-btn:focus,.fd-nav .button-preview.ant-btn:hover{color:#fff;border-color:#fff;background:#59acfc}.fd-nav .button-preview.ant-btn:active{color:#fff;border-color:#fff;background:#2186ef}.fd-nav-content{position:fixed;top:60px;left:0;right:0;bottom:0;z-index:1;overflow-x:hidden;overflow-y:auto;padding-bottom:30px}.error-modal-desc{font-size:13px;color:rgba(25,31,37,.56);line-height:22px;margin-bottom:14px}.error-modal-list{height:200px;overflow-y:auto;margin-right:-25px;padding-right:25px}.error-modal-item{padding:10px 20px;line-height:21px;background:#f6f6f6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:8px;border-radius:4px}.error-modal-item-label{-webkit-box-flex:0;-ms-flex:none;flex:none;font-size:15px;color:rgba(25,31,37,.56);padding-right:10px}.error-modal-item-content{text-align:right;-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:13px;color:#191f25}#body.blur{-webkit-filter:blur(3px);filter:blur(3px)}.zoom{display:-webkit-box;display:-ms-flexbox;display:flex;position:fixed;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:40px;width:125px;right:40px;margin-top:30px;z-index:10}.zoom .zoom-in,.zoom .zoom-out{width:30px;height:30px;background:#fff;color:#c1c1cd;cursor:pointer;background-size:100%;background-repeat:no-repeat}.zoom .zoom-out{background-image:url(https://gw.alicdn.com/tfs/TB1s0qhBHGYBuNjy0FoXXciBFXa-90-90.png)}.zoom .zoom-out.disabled{opacity:.5}.zoom .zoom-in{background-image:url(https://gw.alicdn.com/tfs/TB1UIgJBTtYBeNjy1XdXXXXyVXa-90-90.png)}.zoom .zoom-in.disabled{opacity:.5}.auto-judge:hover .editable-title,.node-wrap-box:hover .editable-title{border-bottom:1px dashed #fff}.auto-judge:hover .editable-title.editing,.node-wrap-box:hover .editable-title.editing{text-decoration:none;border:1px solid #d9d9d9}.auto-judge:hover .editable-title{border-color:#15bc83}.editable-title{line-height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px dashed transparent}.editable-title:before{content:"";position:absolute;top:0;left:0;bottom:0;right:40px}.editable-title:hover{border-bottom:1px dashed #fff}.editable-title-input{-webkit-box-flex:0;-ms-flex:none;flex:none;height:18px;padding-left:4px;text-indent:0;font-size:12px;line-height:18px;z-index:1}.editable-title-input:hover{text-decoration:none}.node-wrap-box{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;width:220px;min-height:72px;-ms-flex-negative:0;flex-shrink:0;background:#fff;border-radius:4px;cursor:pointer}.node-wrap-box:after{pointer-events:none;content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:2;border-radius:4px;border:1px solid transparent;-webkit-transition:all .1s cubic-bezier(.645,.045,.355,1);transition:all .1s cubic-bezier(.645,.045,.355,1);-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.node-wrap-box.active:after,.node-wrap-box:active:after,.node-wrap-box:hover:after{border:1px solid #3296fa;-webkit-box-shadow:0 0 6px 0 rgba(50,150,250,.3);box-shadow:0 0 6px 0 rgba(50,150,250,.3)}.node-wrap-box.active .close,.node-wrap-box:active .close,.node-wrap-box:hover .close{display:block}.node-wrap-box.error:after{border:1px solid #f25643;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.node-wrap-box .title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:16px;padding-right:30px;width:100%;height:24px;line-height:24px;font-size:12px;color:#fff;text-align:left;background:#576a95;border-radius:4px 4px 0 0}.node-wrap-box .title .iconfont{font-size:12px;margin-right:5px}.node-wrap-box .placeholder{color:#bfbfbf}.node-wrap-box .close{display:none;position:absolute;right:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:20px;height:20px;font-size:14px;color:#fff;border-radius:50%;text-align:center;line-height:20px}.node-wrap-box .content{position:relative;font-size:14px;padding:16px;padding-right:30px}.node-wrap-box .content .text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.node-wrap-box .content .arrow{position:absolute;right:10px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:20px;height:14px;font-size:14px;color:#979797}.start-node.node-wrap-box .content .text{display:block;white-space:nowrap}.node-wrap-box:before{content:"";position:absolute;top:-12px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:0;height:4px;border-style:solid;border-width:8px 6px 4px;border-color:#cacaca transparent transparent;background:#f5f5f7}.node-wrap-box.start-node:before{content:none}.top-left-cover-line{left:-1px}.top-left-cover-line,.top-right-cover-line{position:absolute;height:8px;width:50%;background-color:#f5f5f7;top:-4px}.top-right-cover-line{right:-1px}.bottom-left-cover-line{left:-1px}.bottom-left-cover-line,.bottom-right-cover-line{position:absolute;height:8px;width:50%;background-color:#f5f5f7;bottom:-4px}.bottom-right-cover-line{right:-1px}.dingflow-design{width:100%;background-color:#f5f5f7;overflow:auto;position:absolute;bottom:0;left:0;right:0;top:0}.dingflow-design .box-scale{-webkit-transform:scale(1);transform:scale(1);display:inline-block;position:relative;width:100%;padding:54.5px 0;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;background-color:#f5f5f7;-webkit-transform-origin:50% 0 0;transform-origin:50% 0 0}.dingflow-design .node-wrap{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;padding:0 50px;position:relative}.dingflow-design .branch-wrap,.dingflow-design .node-wrap{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:100%}.dingflow-design .branch-box-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:270px;width:100%;-ms-flex-negative:0;flex-shrink:0}.dingflow-design .branch-box{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:visible;min-height:180px;height:auto;border-bottom:2px solid #ccc;border-top:2px solid #ccc;position:relative;margin-top:15px}.dingflow-design .branch-box .col-box{background:#f5f5f7}.dingflow-design .branch-box .col-box:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:0;margin:auto;width:2px;height:100%;background-color:#cacaca}.dingflow-design .add-branch{border:none;outline:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:12px;padding:0 10px;height:30px;line-height:30px;border-radius:15px;color:#3296fa;background:#fff;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.1);box-shadow:0 2px 4px 0 rgba(0,0,0,.1);position:absolute;top:-16px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-transform-origin:center center;transform-origin:center center;cursor:pointer;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1)}.dingflow-design .add-branch:hover{-webkit-transform:translateX(-50%) scale(1.1);transform:translateX(-50%) scale(1.1);-webkit-box-shadow:0 8px 16px 0 rgba(0,0,0,.1);box-shadow:0 8px 16px 0 rgba(0,0,0,.1)}.dingflow-design .add-branch:active{-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-shadow:none;box-shadow:none}.dingflow-design .col-box{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.dingflow-design .condition-node{min-height:220px}.dingflow-design .condition-node,.dingflow-design .condition-node-box{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1}.dingflow-design .condition-node-box{padding-top:30px;padding-right:50px;padding-left:50px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;position:relative}.dingflow-design .condition-node-box:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;width:2px;height:100%;background-color:#cacaca}.dingflow-design .auto-judge{position:relative;width:220px;min-height:72px;background:#fff;border-radius:4px;padding:14px 19px;cursor:pointer}.dingflow-design .auto-judge:after{pointer-events:none;content:"";position:absolute;top:0;bottom:0;left:0;right:0;z-index:2;border-radius:4px;border:1px solid transparent;-webkit-transition:all .1s cubic-bezier(.645,.045,.355,1);transition:all .1s cubic-bezier(.645,.045,.355,1);-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.dingflow-design .auto-judge.active:after,.dingflow-design .auto-judge:active:after,.dingflow-design .auto-judge:hover:after{border:1px solid #3296fa;-webkit-box-shadow:0 0 6px 0 rgba(50,150,250,.3);box-shadow:0 0 6px 0 rgba(50,150,250,.3)}.dingflow-design .auto-judge.active .close,.dingflow-design .auto-judge:active .close,.dingflow-design .auto-judge:hover .close{display:block}.dingflow-design .auto-judge.error:after{border:1px solid #f25643;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.1);box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.dingflow-design .auto-judge .title-wrapper{position:relative;font-size:12px;color:#15bc83;text-align:left;line-height:16px}.dingflow-design .auto-judge .title-wrapper .editable-title{display:inline-block;max-width:120px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dingflow-design .auto-judge .title-wrapper .priority-title{display:inline-block;float:right;margin-right:10px;color:rgba(25,31,37,.56)}.dingflow-design .auto-judge .placeholder{color:#bfbfbf}.dingflow-design .auto-judge .close{display:none;position:absolute;right:-10px;top:-10px;width:20px;height:20px;font-size:14px;color:rgba(0,0,0,.25);border-radius:50%;text-align:center;line-height:20px;z-index:2}.dingflow-design .auto-judge .content{font-size:14px;color:#191f25;text-align:left;margin-top:6px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.dingflow-design .auto-judge .sort-left,.dingflow-design .auto-judge .sort-right{position:absolute;top:0;bottom:0;display:none;z-index:1}.dingflow-design .auto-judge .sort-left{left:0;border-right:1px solid #f6f6f6}.dingflow-design .auto-judge .sort-right{right:0;border-left:1px solid #f6f6f6}.dingflow-design .auto-judge:hover .sort-left,.dingflow-design .auto-judge:hover .sort-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.dingflow-design .auto-judge .sort-left:hover,.dingflow-design .auto-judge .sort-right:hover{background:#efefef}.dingflow-design .end-node{border-radius:50%;font-size:14px;color:rgba(25,31,37,.4);text-align:left}.dingflow-design .end-node .end-node-circle{width:10px;height:10px;margin:auto;border-radius:50%;background:#dbdcdc}.dingflow-design .end-node .end-node-text{margin-top:5px;text-align:center}.approval-setting{border-radius:2px;margin:20px 0;position:relative;background:#fff}.ant-btn{position:relative}.error-modal-list{width:455px} --------------------------------------------------------------------------------