qa-prevention-xgf-app/utils/submitHomeworkProcess.js

229 lines
6.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import {
getCurrentNextOperation,
setOtherSecurityMeasuresSave,
setSecurityMeasuresSave,
setTaskFile,
setTaskSave
} 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 = 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 = JSON.stringify(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}) => {
const {taskIds} = await setTaskSave({
data: [{form: await processFormData(form, formItems)}],
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}) => {
await setTaskSave({
data: [{jobs: processSelectedPersonnelData(form, list), task: {EW_RU_TASK_ID: taskId}}],
postMethod: 'application/json',
})
await resolveNextOperation({
EW_RU_TASK_ID: taskId,
CORP_ID,
TYPE
})
}
// 提交安全措施
export const setSecurityMeasures = async ({questionnaires, questionnaireInfo, taskId, EW_RU_JOB_ID, CORP_ID, TYPE}) => {
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
})
}
// 提交其它安全措施
export const setOtherSecurityMeasures = async ({value, taskId, EW_RU_JOB_ID, CORP_ID, TYPE}) => {
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
})
}
// 结束当前操作人流程提交
const endCurrentPersonnelTechnologicalProcess = async ({EW_RU_TASK_ID}) => {
await setTaskSave({
COMPLETE_FLAG: '1',
data: [{task: {EW_RU_TASK_ID}}],
postMethod: 'application/json',
})
}
// 决定下一步操作
// 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 = '',
},
isLastStep = true
) => {
if (isLastStep) {
const {info} = await getCurrentNextOperation({EW_RU_TASK_ID, EW_RU_JOB_ID})
// 选人
if (info.chooseNextFlag === '1') {
uni.navigateTo({
url: '/pages/eight_assignments/select_review_personnel',
success: ({eventChannel}) => {
eventChannel.emit('nextNodes', {
nextNodes: info.nextNodes,
taskId: EW_RU_TASK_ID,
CORP_ID,
TYPE
})
}
})
return
}
// 填写安全措施
if (info.completeFlag === '1') {
uni.navigateTo({
url: '/pages/eight_assignments/security_measures',
success: ({eventChannel}) => {
eventChannel.emit('questionnaire', {
questionnaire: info.questionnaire[0],
taskId: EW_RU_TASK_ID,
EW_RU_JOB_ID,
TYPE,
CORP_ID
})
}
})
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}
})
return
}
// 签字
if (info.submitFlag === '1') {
uni.$u.route({
url: '/pages/eight_assignments/sign',
params: {taskId: EW_RU_TASK_ID, EW_RU_JOB_ID, TYPE}
})
return
}
// 有限空间作业气体分析
if (info.otherFlag.DeYxQfFlag === '1') {
uni.$u.route({
url: '/pages/eight_assignments/confined_space/gas/name',
params: {taskId: EW_RU_TASK_ID, EW_RU_JOB_ID, TYPE}
})
return
}
// 没有下一步,结束流程,因为无法确定之前有多少步骤,跳转了多少页面,所以直接跳转到首页
await endCurrentPersonnelTechnologicalProcess({EW_RU_TASK_ID})
}
uni.$u.toast('提交成功')
setTimeout(() => {
uni.switchTab({
url: '/pages/index/index'
})
}, 1500)
}