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 @@
+
+
+
+
+
+ 申请人:{{ item.jobName }}
+
+
+ 身份:{{ item.taskName }}
+
+
+ 作业编号:{{ item.id }}
+
+
+ 作业分公司:{{ item.corpName }}
+
+
+ 申请时间:{{ item.createdTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ 分析时间:{{ item.ANALYZE_TIME }}
+
+
+ 分析地点:{{ item.ANALYZE_PLACE }}
+
+
+ {{ GAS_NAME1 }}:{{ item.DATA1 }}
+
+
+ {{ GAS_NAME2 }}:{{ item.DATA2 }}
+
+
+ {{ GAS_NAME3 }}:{{ item.DATA3 }}
+
+
+ {{ GAS_NAME4 }}:{{ item.DATA4 }}
+
+
+ 含氧量:{{ item.OXYGEN_CONTENT }}
+
+
+ 分析人:{{ item.ANALYZE_USER_NAME }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+ 部门:{{ item.JOB_DEPARTMENT_NAME }}
+ 人员:{{ item.JOB_NAME }}
+
+ 审批结果:{{ item.PASS_FLAG === 0 ? "不通过" : "通过" }}
+
+
+
+ 审批意见:{{ item.APPROVAL_OPINIONS }}
+ 时间:{{ item.CREATE_TIME }}
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+ 监火人:
+ {{ item.USER_NAME }}
+
+
+ 时间:
+ {{ item.TIME }}
+
+
+ 照片:
+
+
+
+
+ 完成延时监火
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.QUESTION }}
+ {{ item.TEXT_INFO || item.ANSWER }}
+
+
+
+
+ {{ item1.TEXT_INFO }}:{{ item1.ANSWER }}
+
+
+
+
+
+
+
+
+
+
+ 部门:{{ item.DEPARTMENT_NAME }}
+ 人员:{{ item.USER_NAME }}
+
+
+ 审批意见:{{ item.APPROVAL_OPINIONS }}
+ 审批意见:{{ item.APPROVAL_TIME }}
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ 作业证编号: {{ item.JOB_NUMBER }}
+ 动火等级: {{ item.HOT_WORK_LEVEL_NAME }}
+
+
+ 申请办理人: {{ item.APPLY_USER_NAME }}
+ 作业类型: {{ item.JOB_TYPE_NAME }}
+
+
+ 现场负责人:{{ item.SITE_LEADER_NAME }}
+ 动火单位负责人:{{ item.HOT_WORK_UNIT_LEADER_NAME }}
+
+
+ 动火部位:{{ item.HOT_WORK_POSITION }}
+ 作业内容:{{ item.JOB_CONTENT }}
+
+
+ 审核状态:延时监火
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (%LEL)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+ 动火分析时间: {{ item.ANALYZE_TIME }}
+
+
+ 分析点名称: {{ item.ANALYZE_PLACE }}
+
+
+ 分析数据(%LEL): {{ item.ANALYZE_PLACE }}
+
+
+ 分析人:{{ item.ANALYZE_USER_NAME }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+ name的预留位置
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ {{ questionnaireInfo.NAME }}
+
+
+ 主要安全措施
+ 是否涉及
+
+
+
+ {{ item.itemInfo.TEXT_INFO }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ 申请人:{{ item.jobName }}
+
+
+ 作业编号:{{ item.id }}
+
+
+ 作业分公司:{{ item.corpName }}
+
+
+ 申请时间:{{ item.createdTime }}
+
+
+ 当前步骤:{{ item.taskName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.QUESTION }}
+ {{ item.TEXT_INFO || item.ANSWER }}
+
+
+
+
+ {{ item1.TEXT_INFO }}:{{ item1.ANSWER }}
+
+
+
+
+
+
+
+
+
+
+ 部门:{{ item.DEPARTMENT_NAME }}
+ 人员:{{ item.USER_NAME }}
+
+
+ 审批意见:{{ item.APPROVAL_OPINIONS }}
+ 审批意见:{{ item.APPROVAL_TIME }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 0000000..14d581e
Binary files /dev/null and b/static/icon-apps/app_icons6.png differ
diff --git a/static/icon-apps/i1.png b/static/icon-apps/i1.png
new file mode 100644
index 0000000..e554051
Binary files /dev/null and b/static/icon-apps/i1.png differ
diff --git a/static/icon-apps/i10.png b/static/icon-apps/i10.png
new file mode 100644
index 0000000..c80f00c
Binary files /dev/null and b/static/icon-apps/i10.png differ
diff --git a/static/icon-apps/i11.png b/static/icon-apps/i11.png
new file mode 100644
index 0000000..b50446c
Binary files /dev/null and b/static/icon-apps/i11.png differ
diff --git a/static/icon-apps/i12.png b/static/icon-apps/i12.png
new file mode 100644
index 0000000..10fb431
Binary files /dev/null and b/static/icon-apps/i12.png differ
diff --git a/static/icon-apps/i13.png b/static/icon-apps/i13.png
new file mode 100644
index 0000000..47c253d
Binary files /dev/null and b/static/icon-apps/i13.png differ
diff --git a/static/icon-apps/i14.png b/static/icon-apps/i14.png
new file mode 100644
index 0000000..7a882b6
Binary files /dev/null and b/static/icon-apps/i14.png differ
diff --git a/static/icon-apps/i15.png b/static/icon-apps/i15.png
new file mode 100644
index 0000000..0b2a1ad
Binary files /dev/null and b/static/icon-apps/i15.png differ
diff --git a/static/icon-apps/i2.png b/static/icon-apps/i2.png
new file mode 100644
index 0000000..700886b
Binary files /dev/null and b/static/icon-apps/i2.png differ
diff --git a/static/icon-apps/i3.png b/static/icon-apps/i3.png
new file mode 100644
index 0000000..87f1ba6
Binary files /dev/null and b/static/icon-apps/i3.png differ
diff --git a/static/icon-apps/i4.png b/static/icon-apps/i4.png
new file mode 100644
index 0000000..5654535
Binary files /dev/null and b/static/icon-apps/i4.png differ
diff --git a/static/icon-apps/i5.png b/static/icon-apps/i5.png
new file mode 100644
index 0000000..bff4090
Binary files /dev/null and b/static/icon-apps/i5.png differ
diff --git a/static/icon-apps/i6.png b/static/icon-apps/i6.png
new file mode 100644
index 0000000..29ccb09
Binary files /dev/null and b/static/icon-apps/i6.png differ
diff --git a/static/icon-apps/i7.png b/static/icon-apps/i7.png
new file mode 100644
index 0000000..4bd9b37
Binary files /dev/null and b/static/icon-apps/i7.png differ
diff --git a/static/icon-apps/i8.png b/static/icon-apps/i8.png
new file mode 100644
index 0000000..993bf41
Binary files /dev/null and b/static/icon-apps/i8.png differ
diff --git a/static/icon-apps/i9.png b/static/icon-apps/i9.png
new file mode 100644
index 0000000..20e98f2
Binary files /dev/null and b/static/icon-apps/i9.png differ
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 @@
+
+
+
+
+
+ 取消
+ {{customTitle}}
+
+ 清空
+ 还原
+
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+ ✔
+
+
+
+ 一
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无数据
+
+
+
+
+
+
+
+
+
+
+
+
+
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
+
+
+ 1、设置单选和父级不可选
+
+ 2、设置多选和父级不可选
+
+ 3、设置单选和父级可选
+
+ 4、设置多选和父级可选
+
+ 4、设置多选和父级可选和父级关联子级选择
+
+ 5、设置默认回显(默认选中: '上海-2', '黄埔区-35')
+
+
+ 6、异步加载渲染demo
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+### vue3 + ts 使用
+
+```ts
+
+
+
+```
+
+### vue2 使用
+```html
+
+
+
+ 1、设置单选和父级不可选
+
+ 2、设置多选和父级不可选
+
+ 3、设置单选和父级可选
+
+ 4、设置多选和父级可选
+
+ 4、设置多选和父级可选和父级关联子级选择
+
+ 5、设置默认回显(默认选中: '上海-2', '黄埔区-35')
+
+
+ 6、异步加载渲染demo
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```js
+
+
+
+```
+
+### 个性化自定义样式渲染
+
+如果你的需求对样式需求比较高,请使用插槽模式渲染,本组件提供label插槽供你自定义定制;
+
+```js
+
+```
+
+### 预览
+###
+***
+
+| 功能预览 | 父子级关联演示 | 全面支持大数据量,子孙节点ui按需渲染(按需渲染数据) |
+| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: |
+|  |  |  |
+
+
+
+| 增强控件交互能力,增加筛选search模式,全面支持大数据量交互 | 超强的样式定制能力,满足你高精美组件的需求 | 打开精美的辅助线模式,让你的控件更加友好 |
+| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: |
+|  |  |  |
+
+
+| 增加搜索模式searchModel=depHighlight模式,从属高亮显示模式 | 支持异步加载子节点,子树集,ajax远程加载数据等 | 支持不同主题的切换,ui定制更简单 |
+| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: |
+|  |  |  |
+
+| 增加验证函数和topBar插槽使得更加容易和组件进行交互 | 增加页面模式,支持整页ui展示模式 | 增加展开模式expandedMode配置,支持单链路展开,理论上支持几万数据量 |
+| :------------------------------------------------------------------: | :------------------------------------------------------------------: | :------------------------------------------------------------------: |
+| | |  |
+
+
+
+### 超集功能预览(增值功能)
+###
+| 实现tree的功能模式扩展,让你的tree组件实现可编辑态 |
+| :--------------------------------------------------------------------: |
+| |
+
+## 参数
+可选参数属性列表
+
+|参数名 |说明 |类型 |是否必填 |默认值 |可选值 |
+|---- |---- |---- |---- |---- |----------------------- |
+|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;