diff --git a/src/views/quality/external/external/components/addFileDialog.vue b/src/views/quality/external/external/components/addFileDialog.vue index c0b21ed..677bf86 100644 --- a/src/views/quality/external/external/components/addFileDialog.vue +++ b/src/views/quality/external/external/components/addFileDialog.vue @@ -12,7 +12,7 @@ const dialogFormVisible = ref(false) // 对话框是否显示 // 表单 const areaForm = ref({ - externalFileType: '', + fileType: '', fileCode: '', fileName: '', filePath: '', @@ -21,14 +21,14 @@ const uploadName = ref('') // 前端校验规则 const rules: FormRules = { - externalFileType: [{ required: true, message: '文件类型必选', trigger: ['blur', 'change'] }], + fileType: [{ required: true, message: '文件类型必选', trigger: ['blur', 'change'] }], fileName: [{ required: true, message: '文件名称必填', trigger: ['blur', 'change'] }], filePath: [{ required: true, message: '附件必须上传', trigger: ['blur', 'change'] }], } // 重置表单 const resetForm = () => { areaForm.value = { - externalFileType: '', + fileType: '', fileCode: '', fileName: '', filePath: '', @@ -50,7 +50,7 @@ if (valid) { emits('confirm', { ...areaForm.value, - externalFileTypeName: fileTypeList.value.filter(item => item.value === areaForm.value.externalFileType)[0].name, + fileTypeName: fileTypeList.value.filter(item => item.value === areaForm.value.fileType)[0].name, createTime: dayjs().format('YYYY-MM-DD hh:mm'), }) dialogFormVisible.value = false @@ -77,7 +77,6 @@ const cancel = () => { dialogFormVisible.value = false - // this.$emit('watchChild') } // 上传附件 const fileRef = ref() // 文件上传input,获取input的引用 @@ -95,6 +94,7 @@ // 展示上传文件名称 const data = res.data.split('/') uploadName.value = data[data.length - 1] + dataFormRef.value?.clearValidate('filePath') }) } }) @@ -115,8 +115,8 @@ - - + + - + - + - {{ areaForm.filePath }} + {{ uploadName }} x diff --git a/src/views/quality/external/external/components/addFileDialog.vue b/src/views/quality/external/external/components/addFileDialog.vue index c0b21ed..677bf86 100644 --- a/src/views/quality/external/external/components/addFileDialog.vue +++ b/src/views/quality/external/external/components/addFileDialog.vue @@ -12,7 +12,7 @@ const dialogFormVisible = ref(false) // 对话框是否显示 // 表单 const areaForm = ref({ - externalFileType: '', + fileType: '', fileCode: '', fileName: '', filePath: '', @@ -21,14 +21,14 @@ const uploadName = ref('') // 前端校验规则 const rules: FormRules = { - externalFileType: [{ required: true, message: '文件类型必选', trigger: ['blur', 'change'] }], + fileType: [{ required: true, message: '文件类型必选', trigger: ['blur', 'change'] }], fileName: [{ required: true, message: '文件名称必填', trigger: ['blur', 'change'] }], filePath: [{ required: true, message: '附件必须上传', trigger: ['blur', 'change'] }], } // 重置表单 const resetForm = () => { areaForm.value = { - externalFileType: '', + fileType: '', fileCode: '', fileName: '', filePath: '', @@ -50,7 +50,7 @@ if (valid) { emits('confirm', { ...areaForm.value, - externalFileTypeName: fileTypeList.value.filter(item => item.value === areaForm.value.externalFileType)[0].name, + fileTypeName: fileTypeList.value.filter(item => item.value === areaForm.value.fileType)[0].name, createTime: dayjs().format('YYYY-MM-DD hh:mm'), }) dialogFormVisible.value = false @@ -77,7 +77,6 @@ const cancel = () => { dialogFormVisible.value = false - // this.$emit('watchChild') } // 上传附件 const fileRef = ref() // 文件上传input,获取input的引用 @@ -95,6 +94,7 @@ // 展示上传文件名称 const data = res.data.split('/') uploadName.value = data[data.length - 1] + dataFormRef.value?.clearValidate('filePath') }) } }) @@ -115,8 +115,8 @@ - - + + - + - + - {{ areaForm.filePath }} + {{ uploadName }} x diff --git a/src/views/quality/external/external/components/edit.vue b/src/views/quality/external/external/components/edit.vue index 7670cbd..8d98057 100644 --- a/src/views/quality/external/external/components/edit.vue +++ b/src/views/quality/external/external/components/edit.vue @@ -11,27 +11,30 @@ const $router = useRouter() const userStore = useUserStore() const ruleFormRef = ref() // from组件 +// 表单 const ruleForm = ref({ workName: '', year: '', createTime: '', - auditFiles: [], -}) // 表单 + auditFiles1: [] as any[], + auditFiles2: [] as any[], + auditFiles3: [] as any[], + // auditFiles: [] as any[], +}) +// 文件列表数组 +const auditFiles = ref([]) +// 文件类型列表 +const typeList = ref([]) +// 表单验证规则 const rules = ref({ year: [{ required: true, message: '年度必选', trigger: ['blur', 'change'] }], workName: [{ required: true, message: '工作名称必填', trigger: ['blur', 'change'] }], -}) // 表单验证规则 +}) onMounted(() => { if ($route.path.includes('create')) { ruleForm.value.createTime = dayjs().format('YYYY-MM-DD HH:mm') // 记录时间 } - else { - detailWork({ id: $route.query.id }).then((res) => { - ruleForm.value = res.data - }) - } }) -const fileType = ref('待审材料') const fileRef = ref() const saveRow = (data: any) => { ($route.path.includes('create') ? addWork : updateWork)(data).then((res) => { @@ -55,7 +58,7 @@ ).then((res) => { const data = { ...ruleForm.value, - auditFiles: fileRef.value.list, + auditFiles: [...ruleForm.value.auditFiles1, ...ruleForm.value.auditFiles2, ...ruleForm.value.auditFiles3], } saveRow(data) }) @@ -63,8 +66,8 @@ }) } const yearList = ref<{ id: string; value: string; name: string }[]>([])// 年度 -const typeList = ref([]) -const fetchDict = () => { + +async function fetchDict() { const year = new Date().getFullYear() + 5 for (let i = year; i > year - 10; i--) { yearList.value?.push({ @@ -74,19 +77,64 @@ }) } yearList.value?.reverse() - getDictByCode('externalFileType').then((res) => { - // 外审文件类型 - // console.log(res.data, '文件类型') - typeList.value = res.data - }) + const res = await getDictByCode('externalFileType') + // 外审文件类型 + typeList.value = res.data + auditFiles.value = ruleForm.value.auditFiles1 } -fetchDict() +onBeforeMount(async () => { + await fetchDict() + if ($route.path.includes('detail')) { + detailWork({ id: $route.query.id }).then((res) => { + ruleForm.value.workName = res.data.workName + ruleForm.value.year = res.data.year + // 对数据进行加工 + // const auditFiles1 = [] as any[] + // const auditFiles2 = [] as any[] + // const auditFiles3 = [] as any[] + res.data.auditFiles.forEach((element: any) => { + // const type = typeList.value.filter(item => item.value === String(element.externalFileType)) + ruleForm.value[`auditFiles${element.externalFileType}`].push(element) + }) + // ruleForm.value.auditFiles1 = auditFiles1 + // ruleForm.value.auditFiles2 = auditFiles2 + // ruleForm.value.auditFiles3 = auditFiles3 + // + console.log(ruleForm.value, 'ruleForm.value') + }) + } +}) + +// 监听tab变化修改对应数组 +const fileType = ref('待审材料') +watch(() => fileType.value, (newVal) => { + const value = typeList.value.filter(item => item.name === newVal) + if (value.length) { + auditFiles.value = ruleForm.value[`auditFiles${value[0].value}`] + } +}, { + immediate: true, +}) +watch(() => fileRef.value?.list, (newVal) => { + if ($route.path.includes('detail')) { return } + if (newVal.length) { + const value = typeList.value.filter(item => item.name === fileType.value) + if (value.length) { + ruleForm.value[`auditFiles${value[0].value}`] = newVal + } + } +}, { + deep: true, +})