create-iking-admin
Version:
金合技术中台脚手架
126 lines (117 loc) • 4.05 kB
text/typescript
/*
* @Author : wfl
* @LastEditors: qiye
* @description :
* @updateInfo :
* @Date : 2023-05-12 12:09:01
* @LastEditTime: 2023-08-10 15:47:56
*/
import { _, buildUUID, ikArray, paramType } from 'iking-utils'
import { ElMessage } from 'element-plus'
import { formApi } from '@main/api/modules/approve-center'
import { useFlowStore } from '@main/store/modules/flow'
export const useLoadEditData = (PROCESS_FORM = true) => {
const flowStore = useFlowStore()
const loadingEdit = ref(false)
const router = useRouter()
const resetUUID = (data: any, parentId?: string) => {
if (paramType.isArray(data)) {
data?.forEach((item: any) => {
item.id = buildUUID()
item.parentId = parentId || null
if (item.children)
resetUUID(item.children, item.id)
if (item.branchs)
resetUUID(item.branchs, item.id)
})
}
else {
data.id = buildUUID()
data.parentId = parentId || null
if (data.children)
resetUUID(data.children, data.id)
if (data.branchs)
resetUUID(data.branchs, data.id)
}
}
// 编辑
const handEditFlow = async (row: { id: string; }, toStepOne = true) => {
loadingEdit.value = true // 加载中...
// 获取表单详情
const { success, data, msg } = await formApi.getFormDetail(row.id)
localStorage.setItem('formViewConfig', data.formViewConfig?.property || '')
try {
if (success) {
if (data) {
const formObj = JSON.parse(data?.formViewConfig?.property || '{}')
const PROCESS = JSON.parse(data?.process?.property || '{}')?.process || []
resetUUID(PROCESS)
const copyData = _.cloneDeep(data)
const viewConfig = _.cloneDeep(data.formViewConfig)
delete copyData.formViewConfig
delete copyData.process
delete copyData.formAdvanceConfigDTO
copyData?.initiators?.forEach((initiator: any) => {
const { initiatorId, initiatorName, initiatorType } = initiator
initiator.elementName = initiatorName
initiator.elementId = initiatorId
initiator.elementType = initiatorType
})
copyData.managers?.forEach((initiator: any) => {
const { managerId, managerName, managerType } = initiator
initiator.elementName = managerName
initiator.elementId = managerId
initiator.elementType = managerType
})
const form = {
base: {
...copyData,
initiatorsName: ikArray.listToString(
copyData?.initiators,
'elementName',
', ',
''
),
managersName: ikArray.listToString(
copyData?.managers,
'elementName',
', ',
''
)
},
// advance: data.formAdvanceConfigDTO,
formItems: PROCESS_FORM ? formObj?.widgetList : (viewConfig?.widgets || []),
process: PROCESS
}
flowStore.loadForm(form)
flowStore.setForm({
id: data?.formViewConfig?.id,
formId: data?.formViewConfig?.formId,
formConfig: formObj?.formConfig,
widgetList: PROCESS_FORM ? formObj?.widgetList : viewConfig?.widgets
})
// 设置高级配置
flowStore.setAdvance(data.formAdvanceConfig)
if (toStepOne) {
router.push({
name: 'EditForm',
query: { type: data?.type, id: row.id, isEdit: 1 }
})
}
}
loadingEdit.value = false
}
else {
ElMessage.error(msg)
loadingEdit.value = false
}
}
catch (error) {
console.info('error: ', error)
}
}
return {
loadingEdit,
handEditFlow
}
}