From d30c328e6b8c90829e575a0f10a59629725f0ea1 Mon Sep 17 00:00:00 2001 From: liujun Date: Mon, 28 Oct 2024 14:20:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E7=AE=A1=E7=AB=AF=E5=85=AB=E9=A1=B9?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/index.js | 31 + components/other-select/index.vue | 125 ++ pages/eight_assignments/blind_board/apply.vue | 367 ++++++ .../eight_assignments/break_ground/apply.vue | 259 ++++ pages/eight_assignments/completed_list.vue | 87 ++ .../confined_space/apply.vue | 248 ++++ .../confined_space/gas/add.vue | 138 +++ .../confined_space/gas/list.vue | 120 ++ .../confined_space/gas/name.vue | 116 ++ pages/eight_assignments/cut_road/apply.vue | 259 ++++ pages/eight_assignments/electricity/apply.vue | 273 +++++ pages/eight_assignments/high_work/apply.vue | 247 ++++ .../historical_approval_records.vue | 60 + pages/eight_assignments/hoisting/apply.vue | 266 +++++ pages/eight_assignments/hot_work/apply.vue | 276 +++++ .../hot_work/delay_fire_monitoring/add.vue | 122 ++ .../hot_work/delay_fire_monitoring/delay.vue | 150 +++ .../hot_work/delay_fire_monitoring/detail.vue | 97 ++ .../hot_work/delay_fire_monitoring/list.vue | 125 ++ .../delay_fire_monitoring/task_forward.vue | 95 ++ pages/eight_assignments/hot_work/gas/add.vue | 107 ++ pages/eight_assignments/hot_work/gas/list.vue | 94 ++ pages/eight_assignments/hot_work/gas/name.vue | 13 + .../hot_work/select_operator.vue | 174 +++ pages/eight_assignments/index.vue | 126 ++ .../other_security_measures.vue | 76 ++ pages/eight_assignments/security_measures.vue | 112 ++ pages/eight_assignments/select_corp_info.vue | 109 ++ pages/eight_assignments/select_department.vue | 94 ++ .../select_review_personnel.vue | 260 ++++ pages/eight_assignments/sign.vue | 106 ++ pages/eight_assignments/subordinate_index.vue | 95 ++ .../technological_process.vue | 33 + pages/eight_assignments/to_do_list.vue | 114 ++ pages/eight_assignments/view_info.vue | 142 +++ pages/index/index.vue | 5 + pages/map/index.vue | 52 + static/icon-apps/app_icons6.png | Bin 0 -> 8317 bytes static/icon-apps/i1.png | Bin 0 -> 7656 bytes static/icon-apps/i10.png | Bin 0 -> 8761 bytes static/icon-apps/i11.png | Bin 0 -> 8754 bytes static/icon-apps/i12.png | Bin 0 -> 9032 bytes static/icon-apps/i13.png | Bin 0 -> 5975 bytes static/icon-apps/i14.png | Bin 0 -> 6724 bytes static/icon-apps/i15.png | Bin 0 -> 8066 bytes static/icon-apps/i2.png | Bin 0 -> 9060 bytes static/icon-apps/i3.png | Bin 0 -> 9863 bytes static/icon-apps/i4.png | Bin 0 -> 8736 bytes static/icon-apps/i5.png | Bin 0 -> 7538 bytes static/icon-apps/i6.png | Bin 0 -> 8112 bytes static/icon-apps/i7.png | Bin 0 -> 8382 bytes static/icon-apps/i8.png | Bin 0 -> 8873 bytes static/icon-apps/i9.png | Bin 0 -> 7210 bytes uni_modules/next-tree/changelog.md | 173 +++ .../components/next-tree/next-tree.vue | 1043 +++++++++++++++++ .../next-tree/components/next-tree/style.css | 272 +++++ uni_modules/next-tree/package.json | 84 ++ uni_modules/next-tree/readme.md | 843 +++++++++++++ utils/gcoord.js | 216 ++++ utils/submitHomeworkProcess.js | 287 +++++ utils/tools.js | 27 + utils/useFormValidate.js | 15 + 62 files changed, 8133 insertions(+) create mode 100644 components/other-select/index.vue create mode 100644 pages/eight_assignments/blind_board/apply.vue create mode 100644 pages/eight_assignments/break_ground/apply.vue create mode 100644 pages/eight_assignments/completed_list.vue create mode 100644 pages/eight_assignments/confined_space/apply.vue create mode 100644 pages/eight_assignments/confined_space/gas/add.vue create mode 100644 pages/eight_assignments/confined_space/gas/list.vue create mode 100644 pages/eight_assignments/confined_space/gas/name.vue create mode 100644 pages/eight_assignments/cut_road/apply.vue create mode 100644 pages/eight_assignments/electricity/apply.vue create mode 100644 pages/eight_assignments/high_work/apply.vue create mode 100644 pages/eight_assignments/historical_approval_records.vue create mode 100644 pages/eight_assignments/hoisting/apply.vue create mode 100644 pages/eight_assignments/hot_work/apply.vue create mode 100644 pages/eight_assignments/hot_work/delay_fire_monitoring/add.vue create mode 100644 pages/eight_assignments/hot_work/delay_fire_monitoring/delay.vue create mode 100644 pages/eight_assignments/hot_work/delay_fire_monitoring/detail.vue create mode 100644 pages/eight_assignments/hot_work/delay_fire_monitoring/list.vue create mode 100644 pages/eight_assignments/hot_work/delay_fire_monitoring/task_forward.vue create mode 100644 pages/eight_assignments/hot_work/gas/add.vue create mode 100644 pages/eight_assignments/hot_work/gas/list.vue create mode 100644 pages/eight_assignments/hot_work/gas/name.vue create mode 100644 pages/eight_assignments/hot_work/select_operator.vue create mode 100644 pages/eight_assignments/index.vue create mode 100644 pages/eight_assignments/other_security_measures.vue create mode 100644 pages/eight_assignments/security_measures.vue create mode 100644 pages/eight_assignments/select_corp_info.vue create mode 100644 pages/eight_assignments/select_department.vue create mode 100644 pages/eight_assignments/select_review_personnel.vue create mode 100644 pages/eight_assignments/sign.vue create mode 100644 pages/eight_assignments/subordinate_index.vue create mode 100644 pages/eight_assignments/technological_process.vue create mode 100644 pages/eight_assignments/to_do_list.vue create mode 100644 pages/eight_assignments/view_info.vue create mode 100644 pages/map/index.vue create mode 100644 static/icon-apps/app_icons6.png create mode 100644 static/icon-apps/i1.png create mode 100644 static/icon-apps/i10.png create mode 100644 static/icon-apps/i11.png create mode 100644 static/icon-apps/i12.png create mode 100644 static/icon-apps/i13.png create mode 100644 static/icon-apps/i14.png create mode 100644 static/icon-apps/i15.png create mode 100644 static/icon-apps/i2.png create mode 100644 static/icon-apps/i3.png create mode 100644 static/icon-apps/i4.png create mode 100644 static/icon-apps/i5.png create mode 100644 static/icon-apps/i6.png create mode 100644 static/icon-apps/i7.png create mode 100644 static/icon-apps/i8.png create mode 100644 static/icon-apps/i9.png create mode 100644 uni_modules/next-tree/changelog.md create mode 100644 uni_modules/next-tree/components/next-tree/next-tree.vue create mode 100644 uni_modules/next-tree/components/next-tree/style.css create mode 100644 uni_modules/next-tree/package.json create mode 100644 uni_modules/next-tree/readme.md create mode 100644 utils/gcoord.js create mode 100644 utils/submitHomeworkProcess.js create mode 100644 utils/tools.js create mode 100644 utils/useFormValidate.js diff --git a/api/index.js b/api/index.js index 0ce4690..a84dcc7 100644 --- a/api/index.js +++ b/api/index.js @@ -108,3 +108,34 @@ export const getPromiseView = (params) => post("/app/corppromise/goEdit", params export const setPromiseIsRead = (params) => post("/app/corppromise/editIsRead", params); // 承诺书设置阅读状态 export const editHiddenIspunish = (params) => post("/app/keyprojectcheck/editHiddenIspunish", params); // 修改隐患信息 export const getPERSONNELMANAGEMENTID = (params) => post("/app/keyProjects/goEdit", params); // 重点工程默认回显负责人 +// 以下接口八项作业流程使用 +export const getCorpList = (params) => post("/app/util/getCorp", params) //获取公司列表 +export const getConfinedSpaceSelectList = (params) => post("/app/csSpe/getSpace", params) //获取受限空间名称选择列表 +export const getConfinedSpaceGasInfo = (params) => post("/app/csSpe/getGasInfo",params) //获取受限空间气体检测详情 +export const setConfinedSpaceGasInfoSave = (params) => post("/app/csSpe/initGas", params) //受限空间气体检测详情保存 +export const setConfinedSpaceGasDelete = (params) => post("/app/csSpe/deleteGas", params) //保存受限空间气体检测删除 +export const getHotWorkGasAll = (params) => post("/app/elSpe/getAll", params) // 获取动火作业的所有受限空间气体检测数据 +export const getHotWorkGasInfo = (params) => post("/app/elSpe/getInfo", params) //获取动火作业的受限空间气体检测详情 +export const getHotWorkGasInfoSave = (params) => post("/app/elSpe/init", params) //获取动火作业的受限空间气体检测详情保存 +export const getHotWorkGasDelete = (params) => post("/app/elSpe/delete", params) // 动火作业的受限空间气体检测删除 +export const setHotWorkRecord = (params) => post("/app/deHw/initRecord", params) // 动火作业延迟监火保存记录 +export const deleteHotWorkRecord = (params) => post("/app/deHw/deleteRecord", params) //获取动火作业的受限空间气体检测详情 +export const getHotWorkRecord = (params) => post("/app/deHw/getRecords", params) //获取动火作业的受限空间气体检测详情保存 +export const getOtherAssignmentsSelectList = (params) => post("/app/Task/getAllUnEndList", params) //关联的其他特殊作业及安全作业票编号选择列表 +export const getRiskIdentificationResultsSelectList = (params) => post("/app/eightWork/getInfo", params) //风险辨识结果选择列表 +export const getHotWorkMethodSelectList = (params) => post("/app/util/getDicList", params) // 动火方法选择列表 +export const getQyDicList = (params) => post("/app/util/otherSysDic", params) // 动火方法选择列表 +export const setTaskSave = (params) => post("/app/Task/init", params) //八项作业、隐患整改、安全环保检查任务保存更新接口 +export const getCurrentNextOperation = (params) => post("/app/Task/getSupplementInfo", params) //获取当前任务的下一步操作 +export const addFormInfo = (params) => post("/app/Task/addSupplementInfo", params) //审批过程中添加其他信息 +export const getDepartmentTree = (params) => post("/app/util/getDepartmentTree", params) //获取部门树 +export const getUserList = (params) => post("/app/util/getUserList", params) //获取人员 +export const getToDoTaskList = (params) => post("/app/Task/getAllList", params) //获取待办列表 +export const getTaskTechnologicalProcess = (params) => post("/app/Task/getAgencyList", params) //获取流程 +export const getTaskInfo = (params) => post("/app/Task/getInfo", params) //查看信息 +export const setTaskFile = (params) => upload("/app/util/uploadFile", params) //上传文件 +export const setTaskSign = (params) => post("/app/Task/sign", params) //审批意见签字提交 +export const setSecurityMeasuresSave = (params) => post("/app/Task/setQues", params) //安全措施提交 +export const setOtherSecurityMeasuresSave = (params) => post("/app/Task/setOtherQues", params) //其它安全措施提交 +export const getHistoricalApprovalRecords = (params) => post("/app/Task/getHis", params); // 历史审批记录 +// 结束 diff --git a/components/other-select/index.vue b/components/other-select/index.vue new file mode 100644 index 0000000..c71159f --- /dev/null +++ b/components/other-select/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/pages/eight_assignments/blind_board/apply.vue b/pages/eight_assignments/blind_board/apply.vue new file mode 100644 index 0000000..ba30b93 --- /dev/null +++ b/pages/eight_assignments/blind_board/apply.vue @@ -0,0 +1,367 @@ + + + + + diff --git a/pages/eight_assignments/break_ground/apply.vue b/pages/eight_assignments/break_ground/apply.vue new file mode 100644 index 0000000..4615a3a --- /dev/null +++ b/pages/eight_assignments/break_ground/apply.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/pages/eight_assignments/completed_list.vue b/pages/eight_assignments/completed_list.vue new file mode 100644 index 0000000..bbc141b --- /dev/null +++ b/pages/eight_assignments/completed_list.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/eight_assignments/confined_space/apply.vue b/pages/eight_assignments/confined_space/apply.vue new file mode 100644 index 0000000..e446473 --- /dev/null +++ b/pages/eight_assignments/confined_space/apply.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/pages/eight_assignments/confined_space/gas/add.vue b/pages/eight_assignments/confined_space/gas/add.vue new file mode 100644 index 0000000..2093eb4 --- /dev/null +++ b/pages/eight_assignments/confined_space/gas/add.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/pages/eight_assignments/confined_space/gas/list.vue b/pages/eight_assignments/confined_space/gas/list.vue new file mode 100644 index 0000000..0a711de --- /dev/null +++ b/pages/eight_assignments/confined_space/gas/list.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/pages/eight_assignments/confined_space/gas/name.vue b/pages/eight_assignments/confined_space/gas/name.vue new file mode 100644 index 0000000..0a4df94 --- /dev/null +++ b/pages/eight_assignments/confined_space/gas/name.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/pages/eight_assignments/cut_road/apply.vue b/pages/eight_assignments/cut_road/apply.vue new file mode 100644 index 0000000..9b0f9f7 --- /dev/null +++ b/pages/eight_assignments/cut_road/apply.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/pages/eight_assignments/electricity/apply.vue b/pages/eight_assignments/electricity/apply.vue new file mode 100644 index 0000000..c39fec9 --- /dev/null +++ b/pages/eight_assignments/electricity/apply.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/pages/eight_assignments/high_work/apply.vue b/pages/eight_assignments/high_work/apply.vue new file mode 100644 index 0000000..0d1de51 --- /dev/null +++ b/pages/eight_assignments/high_work/apply.vue @@ -0,0 +1,247 @@ + + + + + diff --git a/pages/eight_assignments/historical_approval_records.vue b/pages/eight_assignments/historical_approval_records.vue new file mode 100644 index 0000000..1ce49f1 --- /dev/null +++ b/pages/eight_assignments/historical_approval_records.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/pages/eight_assignments/hoisting/apply.vue b/pages/eight_assignments/hoisting/apply.vue new file mode 100644 index 0000000..50ba805 --- /dev/null +++ b/pages/eight_assignments/hoisting/apply.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/pages/eight_assignments/hot_work/apply.vue b/pages/eight_assignments/hot_work/apply.vue new file mode 100644 index 0000000..61428e9 --- /dev/null +++ b/pages/eight_assignments/hot_work/apply.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/pages/eight_assignments/hot_work/delay_fire_monitoring/add.vue b/pages/eight_assignments/hot_work/delay_fire_monitoring/add.vue new file mode 100644 index 0000000..234e782 --- /dev/null +++ b/pages/eight_assignments/hot_work/delay_fire_monitoring/add.vue @@ -0,0 +1,122 @@ + + + + diff --git a/pages/eight_assignments/hot_work/delay_fire_monitoring/delay.vue b/pages/eight_assignments/hot_work/delay_fire_monitoring/delay.vue new file mode 100644 index 0000000..95f6351 --- /dev/null +++ b/pages/eight_assignments/hot_work/delay_fire_monitoring/delay.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/pages/eight_assignments/hot_work/delay_fire_monitoring/detail.vue b/pages/eight_assignments/hot_work/delay_fire_monitoring/detail.vue new file mode 100644 index 0000000..41ebe4f --- /dev/null +++ b/pages/eight_assignments/hot_work/delay_fire_monitoring/detail.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/pages/eight_assignments/hot_work/delay_fire_monitoring/list.vue b/pages/eight_assignments/hot_work/delay_fire_monitoring/list.vue new file mode 100644 index 0000000..3fcb746 --- /dev/null +++ b/pages/eight_assignments/hot_work/delay_fire_monitoring/list.vue @@ -0,0 +1,125 @@ + + + + + + diff --git a/pages/eight_assignments/hot_work/delay_fire_monitoring/task_forward.vue b/pages/eight_assignments/hot_work/delay_fire_monitoring/task_forward.vue new file mode 100644 index 0000000..2d22251 --- /dev/null +++ b/pages/eight_assignments/hot_work/delay_fire_monitoring/task_forward.vue @@ -0,0 +1,95 @@ + + + + + + diff --git a/pages/eight_assignments/hot_work/gas/add.vue b/pages/eight_assignments/hot_work/gas/add.vue new file mode 100644 index 0000000..97a2d8e --- /dev/null +++ b/pages/eight_assignments/hot_work/gas/add.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/pages/eight_assignments/hot_work/gas/list.vue b/pages/eight_assignments/hot_work/gas/list.vue new file mode 100644 index 0000000..c197ea8 --- /dev/null +++ b/pages/eight_assignments/hot_work/gas/list.vue @@ -0,0 +1,94 @@ + + + diff --git a/pages/eight_assignments/hot_work/gas/name.vue b/pages/eight_assignments/hot_work/gas/name.vue new file mode 100644 index 0000000..a45b337 --- /dev/null +++ b/pages/eight_assignments/hot_work/gas/name.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/pages/eight_assignments/hot_work/select_operator.vue b/pages/eight_assignments/hot_work/select_operator.vue new file mode 100644 index 0000000..3580f00 --- /dev/null +++ b/pages/eight_assignments/hot_work/select_operator.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/pages/eight_assignments/index.vue b/pages/eight_assignments/index.vue new file mode 100644 index 0000000..2864168 --- /dev/null +++ b/pages/eight_assignments/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/pages/eight_assignments/other_security_measures.vue b/pages/eight_assignments/other_security_measures.vue new file mode 100644 index 0000000..1bb658b --- /dev/null +++ b/pages/eight_assignments/other_security_measures.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/pages/eight_assignments/security_measures.vue b/pages/eight_assignments/security_measures.vue new file mode 100644 index 0000000..ce33c72 --- /dev/null +++ b/pages/eight_assignments/security_measures.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/pages/eight_assignments/select_corp_info.vue b/pages/eight_assignments/select_corp_info.vue new file mode 100644 index 0000000..7c49f20 --- /dev/null +++ b/pages/eight_assignments/select_corp_info.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/pages/eight_assignments/select_department.vue b/pages/eight_assignments/select_department.vue new file mode 100644 index 0000000..155a9b1 --- /dev/null +++ b/pages/eight_assignments/select_department.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/pages/eight_assignments/select_review_personnel.vue b/pages/eight_assignments/select_review_personnel.vue new file mode 100644 index 0000000..a01b4fe --- /dev/null +++ b/pages/eight_assignments/select_review_personnel.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/pages/eight_assignments/sign.vue b/pages/eight_assignments/sign.vue new file mode 100644 index 0000000..ddc8d3d --- /dev/null +++ b/pages/eight_assignments/sign.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/pages/eight_assignments/subordinate_index.vue b/pages/eight_assignments/subordinate_index.vue new file mode 100644 index 0000000..5a6ee3e --- /dev/null +++ b/pages/eight_assignments/subordinate_index.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/pages/eight_assignments/technological_process.vue b/pages/eight_assignments/technological_process.vue new file mode 100644 index 0000000..b508ae0 --- /dev/null +++ b/pages/eight_assignments/technological_process.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/pages/eight_assignments/to_do_list.vue b/pages/eight_assignments/to_do_list.vue new file mode 100644 index 0000000..338ac6b --- /dev/null +++ b/pages/eight_assignments/to_do_list.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/pages/eight_assignments/view_info.vue b/pages/eight_assignments/view_info.vue new file mode 100644 index 0000000..56e562c --- /dev/null +++ b/pages/eight_assignments/view_info.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue index 4c74163..df9a0be 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -178,6 +178,11 @@ title: '秦港站内信', url: '/pages/information/index/index' }, + { + img: require('../../static/icon-apps/app_icons6.png'), + title: '高危作业', + url: '/pages/eight_assignments/index' + }, ], isPromiseUnsigned: false } diff --git a/pages/map/index.vue b/pages/map/index.vue new file mode 100644 index 0000000..e3d2479 --- /dev/null +++ b/pages/map/index.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/static/icon-apps/app_icons6.png b/static/icon-apps/app_icons6.png new file mode 100644 index 0000000000000000000000000000000000000000..14d581e2de6776cb4f5eb6c59ff9ac040602c134 GIT binary patch literal 8317 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 literal 0 HcmV?d00001 diff --git a/static/icon-apps/i10.png b/static/icon-apps/i10.png new file mode 100644 index 0000000000000000000000000000000000000000..c80f00c8cc7ae4d8c7ffafedbf563cf86482a4f3 GIT binary patch literal 8761 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 literal 0 HcmV?d00001 diff --git a/static/icon-apps/i11.png b/static/icon-apps/i11.png new file mode 100644 index 0000000000000000000000000000000000000000..b50446c4ea40670e53c4d5679fc90ea3a2953459 GIT binary patch literal 8754 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 literal 0 HcmV?d00001 diff --git a/static/icon-apps/i12.png b/static/icon-apps/i12.png new file mode 100644 index 0000000000000000000000000000000000000000..10fb431c25f821c36ccd1140dc32777da1c2129c GIT binary patch literal 9032 zcmaJ{WmFv7md4#(gL^|aPUG$_3GR)BMjD3@EVw%af`;H8G)NI5no2gn==bXLvxA(VY)v9%>Vs*7u@NsBxkdTn@)l?PrpGK#r%NYyf={_s#fc7*{ zdn*}x8@M}o``N%CNOJb>wh%@&sEs2;A7W!4;Q19IiG+m8?rdo6ZLFm!Zs!i=v-wMh z&mZdXghoP=l=1hlv3m*eX0(MkI=e|RpM2_NW^}ffVtyg41=8|RfH*m;2Erf)f!c<4 zfiLaA_RKQUjFSH1PX?e6ZyQE`sH>ZoxW5$hzwC-X&HoYunHm43;{8&J`M*gSYw0p7 zxWgcf!h9mUcKkxZjG|yZei1<-Fc`on0OA(|g2aIQg1r19;zA&C0RhIp59TLtFnb4a zeMRNJeLbzDn4P@6J;Z@PKR-V{KS4fsm?MxM3Vt!)!-yuLfw6y+h*v;$jL_MVp=x^fz5X#7WQFT(&22v8s5T_<;McP}S*4@L!rzp4dh4Dhew{;y*HBYNtfzo!3g-KWLBn;+u#)bX&V))q>3XhlL|XjfB|GxT5F zwg^a}{~YibxY~G9dp*5xUW`l6=xvQmQV!9?ina%NQiEDO=_ItxGY7sh4Au>Leuk8D zKMeENz1JkzGCb_Z6v1%)hBK6pg0`80_QSykNV2F9*roZOypxB{XxG4Yls@^sp7ETes*h!7i;z=y%B+iq8h8^$TkYT#GvJ-E!*FNz zK2*6ezyDUxoX|Re7I9#_mYA5daq=3FX}l+e>*I2W=oy9+0an_NxXnZG5K!a%`8n;W zD0$om2&8fOgD|Y|`#}2xaTaC6rR}={LFC^-wp(n(7_Zw^d+`~oeY6&;1$ zj0_u}t9#>j3L7LtuhRE$sCtjzXcJvo3k`{!2`GmS)U`ZATo`Mwx4OHm4|XfFEb11z zIA#8kOI+C!ZG0`id>8ltP=m*a$<#J7$f9%dfo3X(R{0YW`6*g45gPgL%8tBE9cf9a zRPp#e`Ca23n$+zA#7BjB4HfKG>(k$emn`bjRtC~$SqG%{29RaFGs9_2X~o8i{OEHH zFl*@IEa0C#n=V0{E)nBs%~!+Fv^+gRHSWF7*HdNn$44EiX?C<5yTLyjISY-|@SL{y zyh2d70)}B&2ucHF)I>Dk6Ns>O@`VAz225f-OSuO_~dXf7`hOn#|ld6V&cxFB6 zV$~wy#TVimIwshWr#Na@ErDMC z4^7?*9B|K-x>)r`>bhmX-r2wal)aTT0=K2>kKSkqx&@h_?maf;tC=LH2-5nm=^mD% zaknqbs&P6_L(%J8P-=d^OBLj*_z;zE6WpwHX=IDeWM46xBDgOyL?i0uxcjIBP9H2V z;ko6`+cnjew|)gZdJSN>p>J}WL?&G;unG3*{qae0&et{y+3@6|(E88unmAZNiLkRo zH;`{zlceaFB3LC&PxpS*mZK-7dh#SPUr)jkIYM8L>@z#3Z7)WFse3}cntpHcui}$| zcu!Z6u++sjAt6&9EenBo!n4W-+0Wb1D+0uSPoglrlHu3UR4oC?(tkrg7`SNE90X^R zrqj%?gjg6O@Gk*oNuCx*_=FYV2BFnQ#%c!-GbVNd&Y)gp3a0Gp>YJ9@c;R9c#s*%E~&g z`brP}3pbGDF81gF4=3W5E1|J7*r>GSqewhUxYfgYjX%0A66qJBo&|F28=tCB1>QNv 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 CK*Biy literal 0 HcmV?d00001 diff --git a/static/icon-apps/i2.png b/static/icon-apps/i2.png new file mode 100644 index 0000000000000000000000000000000000000000..700886b3bb08f30bc1da20820128f806e446f5e1 GIT binary patch literal 9060 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 I%bAD%A6JSgB>(^b literal 0 HcmV?d00001 diff --git a/static/icon-apps/i4.png b/static/icon-apps/i4.png new file mode 100644 index 0000000000000000000000000000000000000000..565453544915cb00d286b1dcdfade394e2e60b16 GIT binary patch literal 8736 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 XD<@>LH@W=Z|7^fibd*0RT8I4~FVYDZ literal 0 HcmV?d00001 diff --git a/static/icon-apps/i5.png b/static/icon-apps/i5.png new file mode 100644 index 0000000000000000000000000000000000000000..bff4090bc93f551ffd46391079d48492b0f65ac0 GIT binary patch literal 7538 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 VO=Qmh@#in7uGTHhCUyJR{{pGch1~!E literal 0 HcmV?d00001 diff --git a/static/icon-apps/i6.png b/static/icon-apps/i6.png new file mode 100644 index 0000000000000000000000000000000000000000..29ccb09b763a6e4b3a1fdbc57d35c67f44897181 GIT binary patch literal 8112 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 W8E0`}#^LWjbVXTJnQv0Yf&T{_1`($K literal 0 HcmV?d00001 diff --git a/static/icon-apps/i7.png b/static/icon-apps/i7.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd9b37c724810e038d9bf24b24ead247a2b8c15 GIT binary patch literal 8382 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 DCKs)@ literal 0 HcmV?d00001 diff --git a/static/icon-apps/i9.png b/static/icon-apps/i9.png new file mode 100644 index 0000000000000000000000000000000000000000..20e98f2646cd57b285d0fe9a994dcd6c76606974 GIT binary patch literal 7210 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 literal 0 HcmV?d00001 diff --git a/uni_modules/next-tree/changelog.md b/uni_modules/next-tree/changelog.md new file mode 100644 index 0000000..0e31f4b --- /dev/null +++ b/uni_modules/next-tree/changelog.md @@ -0,0 +1,173 @@ +## 1.8.9(2024-06-28) +完善说明文件 +## 1.8.8(2024-06-21) +更新插件 +## 1.8.7(2024-05-08) +fix bug +## 1.8.6(2024-04-07) +功能更新 +## 1.8.5(2024-04-07) +修复bug +## 1.8.3(2024-04-06) +update +## 1.8.2(2024-04-06) +update +## 1.8.1(2024-04-06) +fix bug +## 1.8.0(2024-04-03) +优化 +## 1.7.9(2024-04-03) +优化编辑tree功能 +## 1.7.8(2024-04-02) +超集功能上线 +## 1.7.7(2024-03-26) +增加expandedMode=singe +## 1.7.6(2024-02-27) +修复特殊字符的处理方法 +## 1.7.5(2024-02-26) +增加无子节点的父节点配置 +## 1.7.4(2024-02-05) +修复vue2,语法使用问题 +## 1.7.3(2024-02-05) +修复vue2,插槽不显示bug +## 1.7.2(2024-02-05) +优化大数据的性能 +## 1.7.1(2024-01-25) +优化功能说明 +## 1.7.0(2024-01-24) +增加expandedKeys默认展开项目,配置 +## 1.6.9(2024-01-23) +增加change事件 +## 1.6.8(2024-01-22) +搜索模式下,不再响应展开收起逻辑 +## 1.6.7(2024-01-04) +修复异步加载节点搜索展示bug +## 1.6.6(2023-12-29) +修复next-tree异步加载节点关闭bug +## 1.6.5(2023-12-21) +fix bug +## 1.6.4(2023-12-21) +fix bug +## 1.6.3(2023-12-21) +更新vue2版本说明文档 +## 1.6.2(2023-12-21) +修复说明文档 +## 1.6.1(2023-12-18) +增加empty插槽 +## 1.6.0(2023-12-18) +增加empty插槽 +## 1.5.9(2023-12-15) +修改说明文件 +## 1.5.8(2023-12-15) +修复changeVerify函数单选时,返回参数bug +## 1.5.7(2023-12-14) +修复checkStrictlyModel === 'strong'的bug +## 1.5.6(2023-12-13) +代码优化 +## 1.5.5(2023-12-13) +优化changeVerify的使用 +## 1.5.4(2023-12-12) +修复提示层级问题 +## 1.5.3(2023-12-12) +优化uiMode=page模式下的使用 +## 1.5.2(2023-12-11) +增加uiMode配置,实现页面模式展示 +## 1.5.1(2023-12-06) +更新说明 +## 1.5.0(2023-12-06) +更新插件使用注意事项 +## 1.4.9(2023-12-01) +增加topBar插槽 +## 1.4.8(2023-11-30) +增加changeVerify验证函数,实现change的各种控制 +## 1.4.7(2023-11-30) +增加弹层容器高度可配置 +## 1.4.6(2023-11-28) +修复bug +## 1.4.5(2023-11-28) +修复disabled是,需要显示灰色不可操作 +## 1.4.4(2023-11-28) +增加说明 +## 1.4.3(2023-11-28) +增加主题配置 +## 1.4.2(2023-11-28) +增加异步加载时,子节点说明 +## 1.4.1(2023-11-27) +修复说明bug +## 1.4.0(2023-11-27) +next-tree 全面说明文档 +## 1.3.6(2023-11-27) +增加远程加载loadData,全面实现全功能覆盖 +## 1.3.5(2023-11-27) +增加title的定义 +## 1.3.4(2023-11-27) +增加title支持自定义定制 +## 1.3.3(2023-11-21) +增加搜索模式searchModel=depHighlight模式,从属高亮显示模式 +## 1.3.2(2023-11-20) +修复valueKey设置bug +## 1.3.1(2023-11-17) +增加说明文件,和demo +## 1.3.0(2023-11-17) +修复clear时不支持关联模式的设置 +## 1.2.9(2023-11-17) +增加checkStrictlyModel模式设置,强关联,和弱关联 +## 1.2.8(2023-11-16) +增加next-tree的辅助线模式 +## 1.2.7(2023-11-16) +优化next-tree +## 1.2.6(2023-11-16) +修复搜索时,隐藏未打开的数据 +## 1.2.5(2023-11-16) +修复搜索无法点击,和级联半选不生效问题 +## 1.2.4(2023-11-16) +更新新功能插件使用说明 +## 1.2.3(2023-11-16) +增加插槽模式,只是高ui要求定制 +## 1.2.2(2023-11-15) +修复checkStrictly配置下,子关联父的选择状态 +## 1.2.1(2023-11-15) +增加半选提示功能配置showHalfCheckedTips +## 1.2.0(2023-11-14) +修复disabled配置状态下,父子级联,不需要改变disabled设置项的选择状态 +## 1.1.9(2023-11-13) +增强大数据量体验交互,增加筛选搜索模式 +## 1.1.8(2023-11-13) +增加清除clear和取消cancel事件 +## 1.1.7(2023-11-08) +更新next-tree插件功能清单说明 +## 1.1.6(2023-11-07) +update说明文档 +## 1.1.5(2023-11-07) +update +## 1.1.4(2023-11-07) +更新readme.md说明 +## 1.1.3(2023-11-07) +更新说明demo +## 1.1.2(2023-11-07) +增加子节点按需渲染演示demo +## 1.1.1(2023-11-07) +增加清空功能 +## 1.1.0(2023-11-07) +增加子孙节点按需渲染,扩展本插件支持大数据量渲染; +## 1.0.9(2023-10-26) +增加文件说明 +## 1.0.8(2023-09-14) +增加禁用节点属性配置disabledKey +## 1.0.7(2023-09-06) +增加checkStrictly,实现父子节点关联 +## 1.0.6(2023-09-06) +更新vue2使用过程视图不更新的技术说明 +## 1.0.5(2023-09-06) +修复说明文档 +## 1.0.4(2023-06-19) +修改demo +## 1.0.3(2023-06-19) +更新vue2的使用demo +## 1.0.2(2023-06-19) +修复说明文档 + +## 1.0.1(2023-05-10) +更新说明文件 +## 1.0.0(2023-05-09) +初始化项目 diff --git a/uni_modules/next-tree/components/next-tree/next-tree.vue b/uni_modules/next-tree/components/next-tree/next-tree.vue new file mode 100644 index 0000000..e31d073 --- /dev/null +++ b/uni_modules/next-tree/components/next-tree/next-tree.vue @@ -0,0 +1,1043 @@ + + + + + diff --git a/uni_modules/next-tree/components/next-tree/style.css b/uni_modules/next-tree/components/next-tree/style.css new file mode 100644 index 0000000..3ae61fc --- /dev/null +++ b/uni_modules/next-tree/components/next-tree/style.css @@ -0,0 +1,272 @@ +@font-face { + font-family: 'iconfont'; + src: url('//at.alicdn.com/t/c/font_4110624_qs48wckazsh.ttf?t=1712479573821') format('truetype'); +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.iconfont { + font-family: iconfont; + font-style: normal; +} +.iconfont-loading { + font-family: iconfont; + display: inline-block; + font-style: normal; + animation: spin 1s linear infinite; +} +.next-tree-mask { + position: fixed; + top: 0rpx; + right: 0rpx; + bottom: 0rpx; + left: 0rpx; + z-index: 997; + background-color: rgba(0, 0, 0, 0.6); + opacity: 0; + transition: all 0.3s ease; + visibility: hidden; +} +.next-tree-mask.show { + visibility: visible; + opacity: 1; +} +.next-tree-cnt { + position: fixed; + top: 0rpx; + right: 0rpx; + bottom: 0rpx; + left: 0rpx; + z-index: 997; + top: 360rpx; + transition: all 0.3s ease; + transform: translateY(100%); +} +.next-tree-cnt.next-tree-cnt-page { + transition: none; +} +.next-tree-cnt.show { + transform: translateY(0); +} +.next-tree-bar { + background-color: #fff; + height: 72rpx; + padding-left: 20rpx; + padding-right: 20rpx; + display: flex; + justify-content: space-between; + align-items: center; + box-sizing: border-box; + border-bottom-width: 1rpx !important; + border-bottom-style: solid; + border-bottom-color: #f5f5f5; + font-size: 32rpx; + color: #757575; + line-height: 1; +} +.next-tree-bar-btns { + display: inline-block; + display: flex; + flex-direction: row; +} +.btn-divid { + display: inline-block; + width: 1px; + margin: 0 10px; + background-color: #ccc; +} +.next-tree-bar-confirm { + color: #f9ae3d; +} +.next-tree-view { + position: absolute; + top: 0rpx; + right: 0rpx; + bottom: 0rpx; + left: 0rpx; + top: 72rpx; + background-color: #fff; + padding-top: 20rpx; + padding-right: 20rpx; + padding-bottom: 20rpx; + padding-left: 20rpx; +} +.next-tree-view-sc { + height: 100%; + overflow: hidden; +} +.next-tree-view-sc .empty { + text-align: center; + color: #757575; + padding: 30rpx; +} +.next-tree-item-block { + +} +.next-tree-item { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 26rpx; + color: #757575; + line-height: 1; + height: 0; + opacity: 0; + transition: 0.2s; + position: relative; + overflow: hidden; +} +.next-tree-item .icon-btn { + font-size: 30rpx; + margin-right: 20rpx; +} +.next-tree-item .left-line { + position: relative; + width: 1rpx; + height: 100%; + box-sizing: border-box; +} +.next-tree-item .left-line::before { + position: absolute; + content: ""; + width: 1rpx; + height: 100%; + background-color: rgba(204,204,204,0.9); + box-sizing: border-box; + + left: -18rpx; +} +.next-tree-item .parent-horizontal-line { + width: 1rpx; + height: 100%; + position: absolute; + top: 0; + left: 0rpx; + box-sizing: border-box; + background-color: rgba(204,204,204,0.9); +} +.next-tree-item .left-line .horizontal-line { + width: 20rpx; + height: 1rpx; + position: absolute; + top: 40rpx; + left: 0rpx; + background-color: rgba(204,204,204,0.9); + box-sizing: border-box; +} + +.next-tree-item.show { + min-height: 80rpx; + margin-top: 10rpx; + height: 100%; + opacity: 1; +} +.next-tree-item.showchild:before { + transform: rotate(90deg); +} +.next-tree-item.border { + border-bottom: 1rpx solid rgba(204,204,204,0.2); +} +.next-tree-item.last:before { + opacity: 0; +} +.next-tree-item.disabled { + color: #ccc!important; +} + +.next-tree-icon { + width: 26rpx; + height: 26rpx; + margin-right: 8rpx; +} +.next-tree-label { + flex: 1; + display: flex; + align-items: center; + height: 100%; + line-height: 1.2; +} +.next-tree-label .label-input { + border: 1rpx solid #f0f0f0; + border-radius: 10rpx; + width: 100%; + padding: 12rpx 18rpx; + margin-right: 30rpx; +} +.next-tree-check { + width: 40px; + height: 40px; + display: flex; + justify-content: center; + align-items: center; +} +.next-tree-check-yes, +.next-tree-check-no { + width: 20px; + height: 20px; + border-top-left-radius: 20%; + border-top-right-radius: 20%; + border-bottom-right-radius: 20%; + border-bottom-left-radius: 20%; + border-top-width: 1rpx; + border-left-width: 1rpx; + border-bottom-width: 1rpx; + border-right-width: 1rpx; + border-style: solid; + border-color: #f9ae3d; + display: flex; + justify-content: center; + align-items: center; + box-sizing: border-box; +} +.next-tree-check-yes-b { + border-top-left-radius: 20%; + border-top-right-radius: 20%; + border-bottom-right-radius: 20%; + border-bottom-left-radius: 20%; + background-color: #f9ae3d; + color: #fff; +} +.next-tree-check-yes-b .icon-text { + font-size: 14px; + font-weight: normal; + font-family: uicon-iconfont; + display: flex; + flex-direction: row; + align-items: center; +} +.next-tree-check .radio { + border-top-left-radius: 50%; + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} +.next-tree-check .radio .next-tree-check-yes-b { + border-top-left-radius: 50%; + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} + +.next-tree-item.disabled .next-tree-check-no { + color: #ccc!important; +} +.next-tree-item.disabled .next-tree-check-yes-b { + background-color: #ccc!important; +} +.hover-c { + opacity: 0.6; +} + +.fixed-bottom-bar { + border-top: 1px solid #ccc; + position: fixed; + bottom: 0rpx; + left: 0rpx; + right: 0rpx; + z-index: 998; +} + + diff --git a/uni_modules/next-tree/package.json b/uni_modules/next-tree/package.json new file mode 100644 index 0000000..aa676f8 --- /dev/null +++ b/uni_modules/next-tree/package.json @@ -0,0 +1,84 @@ +{ + "id": "next-tree", + "displayName": "next-tree(超强树选择器、树组件、树插件、无限级联树、单选树、多选树、自定义样式树、树形选择器)", + "version": "1.8.9", + "description": "next-tree 弹窗树形选择器,支持多选,支持大数据, 无限级联,单选,父子级级联,远程/ajax加载,子节点增量/异步渲染,自定义样式定制,具名插槽等;支持h5/小程序/APP,全端通用", + "keywords": [ + "树选择", + "tree", + "弹窗树选择器", + "多选树", + "单选树" +], +"engines": { + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "修改版本说明", + "permissions": "无" + }, + "npmurl": "", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["next-search-more"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "n", + "Edge": "y", + "Firefox": "y", + "Safari": "u" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "u", + "QQ": "y", + "钉钉": "y", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/next-tree/readme.md b/uni_modules/next-tree/readme.md new file mode 100644 index 0000000..3d6d61d --- /dev/null +++ b/uni_modules/next-tree/readme.md @@ -0,0 +1,843 @@ + +## next-tree --下拉树 + +> 遇到问题或有建议可以加入QQ群(455948571)反馈 +> 如果觉得组件不错,给五星鼓励鼓励咯! + +## 亮点功能说明(打造你不得不用的好插件) + +### 本插件自1.5.0版本后支持一下功能 + + > 1.大数据量渲染(本插件智能判断,如果子孙集数据量大于50时,会响应等待渲染视图;) + > 2.子节点按需渲染(自动启用,无需配置) + > 3.父子级联选择设置 + > 4.单选多选设置 + > 5.父节点是否可选设置 + > 6.回显默认选中值 + > 7.不可选项disabled设置 + > 8.增强大数据量体验交互,增加筛选搜索模式 + > 9.增强样式定制,提供自定义插槽,实现高要求样式定制 + > 10.增加辅助线模式,外观更加精美 + > 11.支持动态配置title + > 12.支持搜索模式searchModel=depHighlight模式,从属高亮显示模式 + > 13.支持异步加载子节点,ajax加载子节点 + > 14.增加可配置主题,自由定制插件主题颜色 + > 15.支持动态校验,可以进行提示控制校验 + > 16.支持页面模式/弹层模式,可以进行单页面展示或者弹层展示 + > 17.支持半选提示状态显示 + > 18.支持展开项expandedKeys配置 + > 19.全面支持vue2/vue3 + > 20.增加无子节点的父节点配置支持(当item[childrenKey]为null时,代表无子节点的父节点) + > 21.终极支持超数据量使用,增加展开模式配置单链路配置使用expandedMode=singe,使得ui组件使用进一步不在限制与数据量 + > 22.功能模式再次增强,支持单选tree,多选tree,编辑tree,展示tree; + +## 注意 + +### 作者不介意你对组件源码进行改造使用,为了开源更加高效,谢谢你的配合;为了节省不必要的沟通浪费,以下情况请不要再反馈给作者,请自行解决; +### 在这感各位的理解,我支持开源,但是作者时间有限;谢谢各位的配合;在这里期望我写的小小插件能为你提供便捷; + + > 1.如果你对源码进行了修改使用,请不需要对作者做任何的反馈,作者确实没有空陪你做技术分析解答; + > 2.如果你引入插件,连插件是否有正常被uniapp框架识别解析都不清楚,请你换个插件使用; + > 3.如果你引入插件,针对自己项目进行功能改造的,请自行仔细阅读源码并了解其原理,自行改造;这里作者不愿意浪费过多时间进行技术解答; + > 4.如果你不想进行全局加载next-tree,需要按需加载;next-tree中有相关依赖的组件,需要你自行在组件内部单独引入;依赖组件可以在package.json中找到; + > 5.理论上作者不再解决由于本地开发环境问题所导致的插件使用问题,请自行到uniapp官网学习解决; + +## 使用 +### 超集功能即将不对外开源; + +>[从uniapp插件市场导入](https://ext.dcloud.net.cn/plugin?name=next-tree) + +## 关注作者的动态 +[点击进入主页,关注作者](https://ask.dcloud.net.cn/people/ponder_7464) + +## 关注作者其他开源 + +npm开源包:[npm](https://www.npmjs.com/~lixueshiaa); +github开源项目:[github](https://github.com/lixueshiaa); + + +```html + +``` + +### vue3 + ts 使用 + +```ts + + + +``` + +### vue2 使用 +```html + +``` + +```js + + + +``` + +### 个性化自定义样式渲染 + +如果你的需求对样式需求比较高,请使用插槽模式渲染,本组件提供label插槽供你自定义定制; + +```js + +``` + +### 预览 +### +*** + +| 功能预览 | 父子级关联演示 | 全面支持大数据量,子孙节点ui按需渲染(按需渲染数据) | +| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: | +| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree.gif) | ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-b.gif) | ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-d.gif) | + + + +| 增强控件交互能力,增加筛选search模式,全面支持大数据量交互 | 超强的样式定制能力,满足你高精美组件的需求 | 打开精美的辅助线模式,让你的控件更加友好 | +| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: | +| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-e.gif) | ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-f.gif) | ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-u.gif) | + + +| 增加搜索模式searchModel=depHighlight模式,从属高亮显示模式 | 支持异步加载子节点,子树集,ajax远程加载数据等 | 支持不同主题的切换,ui定制更简单 | +| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: | +| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-p.gif) | ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-k.gif) | ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-n.gif) | + +| 增加验证函数和topBar插槽使得更加容易和组件进行交互 | 增加页面模式,支持整页ui展示模式 | 增加展开模式expandedMode配置,支持单链路展开,理论上支持几万数据量 | +| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: | +| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-cc.gif)| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-uu.gif)| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-aab.gif) | + + + +### 超集功能预览(增值功能) +### +| 实现tree的功能模式扩展,让你的tree组件实现可编辑态 | +| :--------------------------------------------------------------------: | +| ![](https://lixueshiaa.github.io/webtest/www/static/next-tree-eeee.gif)| + +## 参数 +可选参数属性列表 + +|参数名 |说明 |类型 |是否必填 |默认值 |可选值 | +|---- |---- |---- |---- |---- |----------------------- | +|uiMode |ui表现方式;popup<弹窗>, page<页面>;默认是 popup |String |是 |popup |page | +|funcMode |功能模式配置;display<展示模式>, edit<编辑模式>,checkbox<多选模式>, radio<单选模式>;默认是 radio |String |是 |radio |dispaly,edit,checkbox | +|treeData |树源数据列表 |Array |是 |[] |- | +|valueKey |绑定value的键属性(项的唯一key标识) |String |否 |id |- | +|labelKey |用于显示的字段 |String |否 |label |- | +|disabledKey |禁用节点绑定属性 |String |否 |disabled |- | +|childrenKey |子节点绑定属性 (注意:当item[childrenKey]的值设为null时,代表是无下级数据的父节点,即非叶子节点) |String |否 |children |- | +|title | 弹出标题(如果是函数时会返回所选项的值作为回调参数如;title: (checked):String => {}) |String, Function |否 |'' |- | +|selectParent |作用于funcMode=display模式下;是否可以选父级 |Boolean |否 |false |true | +|foldAll| 折叠时关闭所有已经打开的子集,再次打开时需要一级一级打开 |Boolean |否 |false |true | +|themeColor |主题颜色 |String |否 |#f9ae3d |- | +|cancelColor |取消按钮颜色 |String |否 |#757575 |- | +|titleColor |标题颜色 |String |否 |#757575 |- | +|border |是否有分割线 |Boolean |否 |false |true | +|checkStrictly|作用于funcMode=checkbox模式下; 状态下节点选择完全受控(父子节点选中状态不再关联) |Boolean |否 |false |true | +|checkStrictlyModel|作用于funcMode=checkbox模式下;父子节点关联模式:strong:强关联(不再受限节点的disabled控制),weak:弱关联(节点关联受disabled控制) |String |是 |weak |strong | +|showHalfCheckedTips|作用于funcMode=checkbox模式下; checkStrictly为false的状态下生效;父子节点选中状态不再关联,是否展示半选提示; |Boolean |否 |false |true | +|ifSearch| 筛选search模式 |Boolean |否 |true |false | +|searchModel| 搜索模式配置 depHighlight: 从属高亮(显示层级并高亮显示);common: 一般;remote: 远程 |String |否 |common |depHighlight | +|showAuxiliaryLine| 是否打开辅助线 |Boolean |否 |false |true | +|loadData| 异步加载函数 (node):Promise([childData]) => {} // demo有说明 |Function |否 |- |- | +|height| 只在uiMode=popup时生效;弹层容器的高度,默认是500 |Number |否 |500 |- | +|changeVerify|作用于funcMode=display模式下; 验证函数 (current as any, chooseList as any []):String => {} // 验证函数会把当前控件的选择值作为参数返给函数体,demo有说明 |Function |否 |- |- | +|expandedKeys| (Controlled) Specifies the keys of the expanded treeNodes 展开配置项,格式为[valueKey] |Array |否 |[] |- | +|expandedMode| 展开模式配置: common: 一般模式;singe: 单一模式; |String |否 |common |singe | + + +# Event 事件 +|事件名 |说明 |类型 |回调参数 | +|---- |---- |---- |---- | +|confirm|菜单收起时返回的筛选结果 |emit |array | +|clear|点击清除按钮时触发 |emit |- | +|cancel|关闭弹层和点击取消时触发 |emit |- | +|change|选项改变时触发 |emit |array | + +## Slot 插槽 + +|名称 |说明 |参数 | +|---- |---- |---- | +|label |label插槽 |data(当前项对于treeData里面的数据) | +|topBar |topBar插槽 |----滚动区域顶部topBar插槽 | +|bottomBar |bottomBar插槽 |----滚动区域底部bottomBar插槽 | +|fixedBottomBar |fixedBottomBar插槽 |----固定在页面的底部,使用fixed进行定位 | +|empty |empty插槽 |----数据为空的插槽 | + diff --git a/utils/gcoord.js b/utils/gcoord.js new file mode 100644 index 0000000..9c7bdaf --- /dev/null +++ b/utils/gcoord.js @@ -0,0 +1,216 @@ +/* @preserve + * gcoord 0.2.2, geographic coordinate library + * Copyright (c) 2019 Jiulong Hu + */ +!function (e, t) { + "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t(e.gcoord = {}) +}(this, function (e) { + "use strict"; + var t = "WGS84", r = t, n = t, o = "GCJ02", a = o, i = "BD09", u = i, f = i, c = i, s = "BD09MC", l = s, + M = "EPSG3857", g = M, h = M, v = M, d = M; + + function m(e) { + throw new Error(e) + } + + function G(e) { + return !isNaN(e) && null !== e && !S(e) + } + + function S(e) { + return !!e && "[object Array]" === Object.prototype.toString.call(e) + } + + function P() { + for (var o = [], e = 0; e < arguments.length; e++) o[e] = arguments[e]; + var a = o.length - 1; + return function () { + for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; + for (var r = a, n = o[a].apply(null, e); r--;) n = o[r].call(null, n); + return n + } + } + + var b = Math.sin, y = Math.cos, p = Math.sqrt, B = Math.abs, D = Math.PI, C = 6378245, E = .006693421622965823; + + function W(e) { + var t = e[0], r = e[1]; + if (!J(t, r)) return [t, r]; + for (var n = [t, r], o = n[0], a = n[1], i = x([o, a]), u = i[0] - t, f = i[1] - r; 1e-6 < B(u) || 1e-6 < B(f);) u = (i = x([o -= u, a -= f]))[0] - t, f = i[1] - r; + return [o, a] + } + + function x(e) { + var t = e[0], r = e[1]; + if (!J(t, r)) return [t, r]; + var n = function (e, t) { + var r = function (e, t) { + var r = 300 + e + 2 * t + .1 * e * e + .1 * e * t + .1 * p(B(e)); + return r += 2 * (20 * b(6 * e * D) + 20 * b(2 * e * D)) / 3, r += 2 * (20 * b(e * D) + 40 * b(e / 3 * D)) / 3, r += 2 * (150 * b(e / 12 * D) + 300 * b(e / 30 * D)) / 3 + }(e - 105, t - 35), n = function (e, t) { + var r = 2 * e - 100 + 3 * t + .2 * t * t + .1 * e * t + .2 * p(B(e)); + return r += 2 * (20 * b(6 * e * D) + 20 * b(2 * e * D)) / 3, r += 2 * (20 * b(t * D) + 40 * b(t / 3 * D)) / 3, r += 2 * (160 * b(t / 12 * D) + 320 * b(t * D / 30)) / 3 + }(e - 105, t - 35), o = t / 180 * D, a = b(o), i = p(a = 1 - E * a * a); + return [r = 180 * r / (C / i * y(o) * D), n = 180 * n / (C * (1 - E) / (a * i) * D)] + }(t, r); + return [t + n[0], r + n[1]] + } + + function J(e, t) { + return 72.004 <= e && e <= 137.8347 && .8293 <= t && t <= 55.8271 + } + + var k = Math.sin, L = Math.cos, j = Math.atan2, I = Math.sqrt, q = 3e3 * Math.PI / 180; + + function w(e) { + var t = e[0] - .0065, r = e[1] - .006, n = I(t * t + r * r) - 2e-5 * k(r * q), o = j(r, t) - 3e-6 * L(t * q); + return [n * L(o), n * k(o)] + } + + function N(e) { + var t = e[0], r = e[1], n = I(t * t + r * r) + 2e-5 * k(r * q), o = j(r, t) + 3e-6 * L(t * q); + return [n * L(o) + .0065, n * k(o) + .006] + } + + var O = 180 / Math.PI, A = Math.PI / 180, F = 6378137, _ = 20037508.342789244; + + function z(e) { + return [e[0] * O / F, (.5 * Math.PI - 2 * Math.atan(Math.exp(-e[1] / F))) * O] + } + + function T(e) { + var t = Math.abs(e[0]) <= 180 ? e[0] : e[0] - 360 * (e[0] < 0 ? -1 : 1), + r = [F * t * A, F * Math.log(Math.tan(.25 * Math.PI + .5 * e[1] * A))]; + return r[0] > _ && (r[0] = _), r[0] < -_ && (r[0] = -_), r[1] > _ && (r[1] = _), r[1] < -_ && (r[1] = -_), r + } + + var U = Math.abs, H = Math.pow, K = [12890594.86, 8362377.87, 5591021, 3481989.83, 1678043.12, 0], + Q = [75, 60, 45, 30, 15, 0], + R = [[1.410526172116255e-8, 898305509648872e-20, -1.9939833816331, 200.9824383106796, -187.2403703815547, 91.6087516669843, -23.38765649603339, 2.57121317296198, -.03801003308653, 17337981.2], [-7.435856389565537e-9, 8983055097726239e-21, -.78625201886289, 96.32687599759846, -1.85204757529826, -59.36935905485877, 47.40033549296737, -16.50741931063887, 2.28786674699375, 10260144.86], [-3.030883460898826e-8, 898305509983578e-20, .30071316287616, 59.74293618442277, 7.357984074871, -25.38371002664745, 13.45380521110908, -3.29883767235584, .32710905363475, 6856817.37], [-1.981981304930552e-8, 8983055099779535e-21, .03278182852591, 40.31678527705744, .65659298677277, -4.44255534477492, .85341911805263, .12923347998204, -.04625736007561, 4482777.06], [3.09191371068437e-9, 8983055096812155e-21, 6995724062e-14, 23.10934304144901, -.00023663490511, -.6321817810242, -.00663494467273, .03430082397953, -.00466043876332, 2555164.4], [2.890871144776878e-9, 8983055095805407e-21, -3.068298e-8, 7.47137025468032, -353937994e-14, -.02145144861037, -1234426596e-14, .00010322952773, -323890364e-14, 826088.5]], + V = [[-.0015702102444, 111320.7020616939, 0x60e374c3105a3, -0x24bb4115e2e164, 0x5cc55543bb0ae8, -0x7ce070193f3784, 0x5e7ca61ddf8150, -0x261a578d8b24d0, 0x665d60f3742ca, 82.5], [.0008277824516172526, 111320.7020463578, 647795574.6671607, -4082003173.641316, 10774905663.51142, -15171875531.51559, 12053065338.62167, -5124939663.577472, 913311935.9512032, 67.5], [.00337398766765, 111320.7020202162, 4481351.045890365, -23393751.19931662, 79682215.47186455, -115964993.2797253, 97236711.15602145, -43661946.33752821, 8477230.501135234, 52.5], [.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013, -1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5], [-.0003441963504368392, 111320.7020576856, 278.2353980772752, 2485758.690035394, 6070.750963243378, 54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726, 22.5], [-.0003218135878613132, 111320.7020701615, .00369383431289, 823725.6402795718, .46104986909093, 2351.343141331292, 1.58060784298199, 8.77738589078284, .37238884252424, 7.45]]; + + function X(e, t, r) { + var n = U(t) / r[9], o = r[0] + r[1] * U(e), + a = r[2] + r[3] * n + r[4] * H(n, 2) + r[5] * H(n, 3) + r[6] * H(n, 4) + r[7] * H(n, 5) + r[8] * H(n, 6); + return [o *= e < 0 ? -1 : 1, a *= t < 0 ? -1 : 1] + } + + function Y(e) { + for (var t = e[0], r = e[1], n = [], o = 0; o < Q.length; o++) if (U(r) > Q[o]) { + n = V[o]; + break + } + return X(t, r, n) + } + + function Z(e) { + for (var t = e[0], r = e[1], n = [], o = 0; o < K.length; o++) if (K[o] <= r) { + n = R[o]; + break + } + return X(t, r, n) + } + + var $ = {to: {GCJ02: x, BD09: P(N, x), BD09MC: P(Y, N, x), EPSG3857: T}}, + ee = {to: {WGS84: W, BD09: N, BD09MC: P(Y, N), EPSG3857: P(T, W)}}, + te = {to: {WGS84: P(W, w), GCJ02: w, EPSG3857: P(T, W, w), BD09MC: Y}}, + re = {to: {WGS84: z, GCJ02: P(x, z), BD09: P(N, x, z), BD09MC: P(Y, N, x, z)}}, + ne = {to: {WGS84: P(W, w, Z), GCJ02: P(w, Z), EPSG3857: P(T, W, w, Z), BD09: Z}}, + oe = Object.freeze({WGS84: $, GCJ02: ee, BD09: te, EPSG3857: re, BD09MC: ne}); + + function ae(e, t, r) { + e || m("coordinate is required"), t || m("original coordinate system is required"), r || m("target coordinate system is required"); + var n = oe[t]; + if (n || m("original coordinate system is invalid"), t === r) return e; + var o = n.to[r]; + o || m("target coordinate system is invalid"); + var a = typeof e; + if ("string" != a && "object" != a && m("coordinate must be an geojson or an array of position"), "string" == a) try { + e = JSON.parse(e) + } catch (e) { + m("input is not a legal JSON string") + } + var i = !1; + S(e) && (e.length < 2 && m("position must be at 2 numbers long"), G(e[0]) && G(e[1]) || m("position must contain numbers"), e = e.map(Number), i = !0); + var u = o; + return i ? u(e) : (function e(t, r, n) { + if (void 0 === n && (n = !1), null !== t) for (var o, a, i, u, f, c, s, l, M = 0, g = 0, h = t.type, v = "FeatureCollection" === h, d = "Feature" === h, G = v ? t.features.length : 1, S = 0; S < G; S++) { + f = (l = !!(s = v ? t.features[S].geometry : d ? t.geometry : t) && "GeometryCollection" === s.type) ? s.geometries.length : 1; + for (var P = 0; P < f; P++) { + var b = 0, y = 0; + if (null !== (u = l ? s.geometries[P] : s)) { + var p = u.type; + switch (M = !n || "Polygon" !== p && "MultiPolygon" !== p ? 0 : 1, p) { + case null: + break; + case"Point": + if (!1 === r(c = u.coordinates, g, S, b, y)) return !1; + g++, b++; + break; + case"LineString": + case"MultiPoint": + for (c = u.coordinates, o = 0; o < c.length; o++) { + if (!1 === r(c[o], g, S, b, y)) return !1; + g++, "MultiPoint" === p && b++ + } + "LineString" === p && b++; + break; + case"Polygon": + case"MultiLineString": + for (c = u.coordinates, o = 0; o < c.length; o++) { + for (a = 0; a < c[o].length - M; a++) { + if (!1 === r(c[o][a], g, S, b, y)) return !1; + g++ + } + "MultiLineString" === p && b++, "Polygon" === p && y++ + } + "Polygon" === p && b++; + break; + case"MultiPolygon": + for (c = u.coordinates, o = 0; o < c.length; o++) { + for (a = y = 0; a < c[o].length; a++) { + for (i = 0; i < c[o][a].length - M; i++) { + if (!1 === r(c[o][a][i], g, S, b, y)) return !1; + g++ + } + y++ + } + b++ + } + break; + case"GeometryCollection": + for (o = 0; o < u.geometries.length; o++) if (!1 === e(u.geometries[o], r, n)) return !1; + break; + default: + m("Unknown Geometry Type") + } + } + } + } + }(e, function (e) { + var t; + t = u(e), e[0] = t[0], e[1] = t[1] + }), e) + } + + var ie = { + WGS84: t, + WGS1984: r, + EPSG4326: n, + GCJ02: o, + AMap: a, + BD09: i, + BD09LL: u, + Baidu: f, + BMap: c, + BD09MC: s, + BD09Meter: l, + EPSG3857: M, + EPSG900913: g, + EPSG102100: h, + WebMercator: v, + WM: d, + transform: ae + }; + e.WGS84 = t, e.WGS1984 = r, e.EPSG4326 = n, e.GCJ02 = o, e.AMap = a, e.BD09 = i, e.BD09LL = u, e.Baidu = f, e.BMap = c, e.BD09MC = s, e.BD09Meter = l, e.EPSG3857 = M, e.EPSG900913 = g, e.EPSG102100 = h, e.WebMercator = v, e.WM = d, e.transform = ae, e.default = ie, Object.defineProperty(e, "__esModule", {value: !0}) +}); diff --git a/utils/submitHomeworkProcess.js b/utils/submitHomeworkProcess.js new file mode 100644 index 0000000..5b512dd --- /dev/null +++ b/utils/submitHomeworkProcess.js @@ -0,0 +1,287 @@ +import { + getCurrentNextOperation, getTaskInfo, + setOtherSecurityMeasuresSave, + setSecurityMeasuresSave, + setTaskFile, + setTaskSave +} from "@/api"; +import {addFormInfo} from "../api"; + +// 处理表单数据 +// TYPE 0 纯文本 1 图片 2 视频 3 divider标签 4 动态添加 5 签字 +const processFormData = async (formData, formItems) => { + const form = [] + for (let i = 0; i < formItems.length; i++) { + const formItem = formItems[i] + const obj = { + ITEM: formItem.name || '', + ITEM_NAME: formItem.key_name || '', + ITEM_VALUE: formData[formItem.key_name] || '', + FK_NAME: formItem.key_id || '', + FK_VALUE: formData[formItem.key_id] || '', + TYPE: formItem.type, + SORT: i + 1 + } + if (formItem.type === 1 || formItem.type === 2) { + if (typeof formData[formItem.key_name] === 'object') { + const currentItem = uni.$u.deepClone(formData[formItem.key_name]) + const codeList = [] + for (let j = 0; j < currentItem.length; j++) { + const {CODE} = await setTaskFile({formData: {type: 0}, name: 'files', filePath: currentItem[j].url}) + codeList.push(CODE) + } + obj.ITEM_VALUE = '' + obj.picList = codeList + } else { + throw Error('图片和视频只支持数组') + } + } + if (formItem.type === 4) { + if (typeof formData[formItem.key_name] === 'object') { + const currentItem = uni.$u.deepClone(formData[formItem.key_name]) + const itemList = [] + for (let j = 0; j < currentItem.length; j++) { + itemList.push(await processFormData(currentItem[j], formItem.listStructure)) + } + obj.ITEM_VALUE = '' + obj.list = itemList + } else { + throw Error('动态表单只支持数组') + } + } + if (formItem.type === 5) { + if (typeof formData[formItem.key_name] === 'string') { + const {CODE} = await setTaskFile({formData: {type: 0}, name: 'files', filePath: formData[formItem.key_name]}) + obj.ITEM_VALUE = CODE + } else { + throw Error('签字只支持字符串') + } + } + form.push(obj) + } + return form +} +// 提交表单基础信息 +export const setSubmitForm = async ({form, formItems, TYPE, CORP_ID, EW_RU_TASK_ID}) => { + const {taskIds} = await setTaskSave({ + data: [{form: await processFormData(form, formItems),task:{EW_RU_TASK_ID:EW_RU_TASK_ID}}], + TYPE, + postMethod: 'application/json', + }) + await resolveNextOperation({ + EW_RU_TASK_ID: taskIds[0], + CORP_ID, + TYPE + }) +} +// 处理选择人员数据 +const processSelectedPersonnelData = (formData, list) => { + const form = [] + for (let i = 0; i < list.length; i++) { + for (let j = 0; j < list[i].list.length; j++) { + const item = list[i].list[j] + const link = item.key_id.substring(item.key_id.indexOf('&&') + 2) + form.push({ + TYPE_NAME: item.value, + TYPE: item.code, + TYPE_DESCRIBE: item.desc, + DEPARTMENT_ID: item.type === '1' ? formData[item.key_id] : '', + DEPARTMENT_NAME: item.type === '1' ? formData[item.key_name] : '', + USER_ID: item.type === '0' ? formData[item.key_id] : '', + USER_NAME: item.type === '0' ? formData[item.key_name] : '', + isDepartment: item.type, + link: list[i].multiple === '1' ? link : '', + }) + } + } + return form +} +// 提交人员信息 +export const setPersonnelForm = async ({form, list, taskId, CORP_ID, TYPE,vernier}) => { + await addFormInfo({ + job: processSelectedPersonnelData(form,list), + EW_RU_TASK_ID: taskId, + TYPE, + postMethod: 'application/json' + } + ) + await resolveNextOperation({ + EW_RU_TASK_ID: taskId, + CORP_ID, + TYPE, + vernier + }) +} +// 提交安全措施 +export const setSecurityMeasures = async ({questionnaires, questionnaireInfo, taskId, EW_RU_JOB_ID, CORP_ID, TYPE, vernier}) => { + await setSecurityMeasuresSave({ + questionnaires: [{items: questionnaires, questionnaire: questionnaireInfo}], + EW_RU_JOB_ID, + EW_RU_TASK_ID: taskId, + postMethod: 'application/json', + }) + await resolveNextOperation({ + EW_RU_TASK_ID: taskId, + CORP_ID, + TYPE, + EW_RU_JOB_ID, + vernier + }) +} +// 提交其它安全措施 +export const setOtherSecurityMeasures = async ({value, taskId, EW_RU_JOB_ID, CORP_ID, TYPE, vernier}) => { + const ADDITIONAL_COMMENT = value.map(item => item.value) + await setOtherSecurityMeasuresSave({ + ADDITIONAL_COMMENT, + EW_RU_JOB_ID, + EW_RU_TASK_ID: taskId, + postMethod: 'application/json', + }) + await resolveNextOperation({ + EW_RU_TASK_ID: taskId, + CORP_ID, + TYPE, + EW_RU_JOB_ID, + vernier + }) +} +// 结束当前操作人流程提交 +const endCurrentPersonnelTechnologicalProcess = async ({EW_RU_TASK_ID}) => { + await setTaskSave({ + COMPLETE_FLAG: '1', + data: [{task: {EW_RU_TASK_ID}}], + postMethod: 'application/json', + }) +} +// 在审批过程中指定下一节点人 +export const addFlowInfo = async ({form,list, taskId,EW_RU_JOB_ID, TYPE,CORP_ID, vernier}) => { + // 在审批过程中添加节点信息 + await addFormInfo({ + job: processSelectedPersonnelData(form,list), + EW_RU_TASK_ID: taskId, + TYPE, + postMethod: 'application/json' + } + ) + // 结束后续流程 + await resolveNextOperation({ + EW_RU_TASK_ID: taskId, + CORP_ID, + TYPE, + EW_RU_JOB_ID, + vernier + }) +} +// 决定下一步操作 +// EW_RU_TASK_ID当前任务id +// CORP_ID选择的企业id +// TYPE作业类型 +// EW_RU_JOB_ID当前操作节点的人员id +// isLastStep是否还有下一步,纯前端确定,不去后台获取 +export const resolveNextOperation = async ({EW_RU_TASK_ID = '', CORP_ID = '', TYPE = '', EW_RU_JOB_ID = '',vernier = ''}, isLastStep = true) => { + let stepNum = 0 + if (isLastStep) { + const {info} = await getCurrentNextOperation({EW_RU_TASK_ID, EW_RU_JOB_ID, VERNIER: vernier}) + // 选人 + if (info.chooseNextFlag === '1') { + uni.navigateTo({ + url: '/pages/eight_assignments/select_review_personnel?vernier='+ info.vernier, + success: ({eventChannel}) => { + eventChannel.emit('nextNodes', { + nextNodes: info.nextNodes, + initFlag: info.initFlag, + taskId: EW_RU_TASK_ID, + EW_RU_JOB_ID: EW_RU_JOB_ID, + CORP_ID, + TYPE + }) + } + }) + return + } + // 填写安全措施 + if (info.completeFlag === '1') { + uni.navigateTo({ + url: '/pages/eight_assignments/security_measures?vernier=' + info.vernier, + success: ({eventChannel}) => { + eventChannel.emit('questionnaire', { + questionnaire: info.questionnaire[0], + taskId: EW_RU_TASK_ID, + EW_RU_JOB_ID, + TYPE, + CORP_ID, + vernier: info.vernier + }) + } + }) + return + } + // 填写其它安全措施 + if (info.canAddFlag === '1') { + uni.$u.route({ + url: '/pages/eight_assignments/other_security_measures', + params: {taskId: EW_RU_TASK_ID, EW_RU_JOB_ID, TYPE, CORP_ID,vernier: info.vernier} + }) + return + } + // 签字 + if (info.submitFlag === '1') { + uni.$u.route({ + url: '/pages/eight_assignments/sign', + params: {taskId: EW_RU_TASK_ID, EW_RU_JOB_ID, TYPE,vernier: info.vernier} + }) + return + } + // 流程特殊权限校验 + if (info.otherFlag !== null && info.otherFlag.redirectFlag === '1') { + uni.$u.route({ + url: info.otherFlag.url, + params: {taskId: EW_RU_TASK_ID, EW_RU_JOB_ID, TYPE,vernier: info.vernier} + }) + return + } + // 根据后端返回的页数退回到指定页面 + stepNum = info.stepNum + } + + uni.$u.toast('提交成功') + setTimeout(() => { + uni.navigateBack( + { + delta: stepNum + } + ) + }, 1500) +} + +export const getData = async (taskId) => { + const resData = await getTaskInfo({ EW_RU_TASK_ID: taskId }); + if (resData.list.fromTrans && resData.list.fromTrans.length > 0) { + const form = {}; + resData.list.fromTrans.forEach((item) => { + form[item.ITEM_NAME] = item.ITEM_VALUE; + if (item.FK_NAME) { + form[item.FK_NAME] = item.FK_VALUE; + } + if (item.TYPE === 1) { + form[item.ITEM_NAME] = item.list.map((item) => ({ + url: this.$filePath + item.ITEM_VALUE, + })); + } + if (item.TYPE === 4) { + form[item.ITEM_NAME] = []; + for (let i = 0; i < item.list.length; i++) { + form[item.ITEM_NAME].push({}); + for (let j = 0; j < item.list[i].list.length; j++) { + form[item.ITEM_NAME][i][item.list[i].list[j].ITEM_NAME] = + item.list[i].list[j].ITEM_VALUE; + } + } + } + if (item.TYPE === 5) { + form[item.ITEM_NAME] = this.$filePath + item.ITEM_VALUE; + } + }); + return form; + } +}; diff --git a/utils/tools.js b/utils/tools.js new file mode 100644 index 0000000..9a801e8 --- /dev/null +++ b/utils/tools.js @@ -0,0 +1,27 @@ +export function formatDate(date, fmt) { + if(null != JSON.stringify(date) && 'null' != JSON.stringify(date) && undefined != JSON.stringify(date) && 'undefined' != JSON.stringify(date) && JSON.stringify(date) != '' && JSON.stringify(date).length > 0){ + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + let o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'h+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds() + } + for (let k in o) { + if (new RegExp(`(${k})`).test(fmt)) { + let str = o[k] + '' + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)) + } + } + return fmt + } else { + return '' + } +} + +function padLeftZero(str) { + return ('00' + str).substr(str.length) +} diff --git a/utils/useFormValidate.js b/utils/useFormValidate.js new file mode 100644 index 0000000..c9b24c8 --- /dev/null +++ b/utils/useFormValidate.js @@ -0,0 +1,15 @@ +const useFormValidate = (ref, message = "请补全必填项!") => { + return new Promise((resolve) => { + ref.value + .validate() + .then(() => { + resolve(true); + }) + .catch(() => { + // eslint-disable-next-line prefer-promise-reject-errors + resolve(false); + uni.$u.toast(message); + }); + }); +}; +export default useFormValidate;