From d2f590cfed0e874daa758d5e5548d17de8b3c772 Mon Sep 17 00:00:00 2001 From: 张诺 <zhang_12370@163.com> Date: 星期四, 19 六月 2025 17:58:50 +0800 Subject: [PATCH] 添加巡检任务上传功能及优化文件组件 --- src/views/archiveManagement/mould/archiveDialog.vue | 113 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 77 insertions(+), 36 deletions(-) diff --git a/src/views/archiveManagement/mould/archiveDialog.vue b/src/views/archiveManagement/mould/archiveDialog.vue index c976722..793d222 100644 --- a/src/views/archiveManagement/mould/archiveDialog.vue +++ b/src/views/archiveManagement/mould/archiveDialog.vue @@ -1,5 +1,5 @@ <template> - <el-dialog v-model="centerDialogVisible" title="Warning" width="500" center> + <el-dialog v-model="centerDialogVisible" title="鏂囨。绠$悊" width="500" center> <el-form ref="ruleFormRef" style="max-width: 600px" @@ -8,7 +8,7 @@ label-width="auto" > <el-form-item label="鍚嶇О" prop="name"> - <el-input v-model="ruleForm.name" placeholder="璇疯緭鍏ユ枃妗e悕绉�"/> + <el-input v-model="ruleForm.name" placeholder="璇疯緭鍏ユ枃妗e悕绉�" /> </el-form-item> <el-form-item label="璇疯緭鍏ユ枃妗g被鍨�" prop="type"> <el-select v-model="ruleForm.type" placeholder="璇疯緭鍏ユ枃妗g被鍨�"> @@ -18,24 +18,39 @@ </el-form-item> <el-form-item label="璇疯緭鍏ユ枃妗g姸鎬�" prop="status"> <el-select v-model="ruleForm.status" placeholder="璇疯緭鍏ユ枃妗g姸鎬�"> - <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value" /> + <el-option + v-for="option in options" + :key="option.value" + :label="option.label" + :value="option.value" + /> </el-select> </el-form-item> </el-form> <template #footer> - <div class="dialog-footer"> - <el-button @click="centerDialogVisible = false">Cancel</el-button> - <el-button type="primary" @click="submit"> - Confirm - </el-button> - </div> + <el-row> + <el-col :span="24" style="text-align: right"> + <el-button @click="centerDialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submit"> 纭� 瀹� </el-button> + </el-col> + </el-row> </template> + <fileUpload + ref="fileUploadRef" + :fileSize="1024" + :fileType="['pdf', 'docx', 'txt', 'xlsx', 'pptx....']" + :limit="10" + :drag="false" + v-model:modelValue="modelValue" + /> </el-dialog> </template> <script setup> import { ref, watch } from "vue"; -import { addOrEditArchive } from "@/api/archiveManagement" +import { addOrEditArchive } from "@/api/archiveManagement"; +import fileUpload from "@/components/FileUpload/index.vue"; +import { ElMessage } from "element-plus"; const centerDialogVisible = defineModel("centerDialogVisible", { type: Boolean, @@ -60,60 +75,86 @@ name: "", type: "", status: "", + storageBlobDTO: [], // 纭繚 storageBlobDTO 鏄竴涓暟缁� }; }; // 鍒濆鍖栬〃鍗曟暟鎹� const ruleFormRef = ref(null); const ruleForm = ref(initFormData(props.row)); -const copyForm = ref() +const copyForm = ref(); // 鐩戝惉 row 鐨勫彉鍖栵紝鏇存柊 ruleForm -watch(() => props.row, (newRow) => { - copyForm.value = initFormData(newRow); - ruleForm.value = JSON.parse(JSON.stringify(copyForm.value)); -}, { deep: true }); +watch( + () => props.row, + (newRow) => { + copyForm.value = initFormData(newRow); + ruleForm.value = JSON.parse(JSON.stringify(copyForm.value)); + }, + { deep: true } +); const rules = { - name: [ - { required: true, message: "Please input activity name", trigger: "blur" }, - ], - type: [ - { required: true, message: "Please select activity zone", trigger: "change" }, - ], - status: [ - { required: true, message: "Please select activity count", trigger: "change" }, - ], + name: [{ required: true, message: "璇疯緭鍏ユ枃妗e悕绉�", trigger: "blur" }], + type: [{ required: true, message: "璇烽�夋嫨鏂囨。绫诲瀷", trigger: "blur" }], + status: [{ required: true, message: "璇烽�夋嫨鏂囨。鐘舵��", trigger: "blur" }], }; - +const fileUploadRef = ref(null); +const initForm = () => { + ruleForm.value = {}; + fileUploadRef.value.init(); +}; +const editForm = (val) => { + ruleForm.value = copyForm.value; + nextTick(() => { + fileUploadRef.value.editInit(val); + }); +}; +defineExpose({ + initForm, + editForm, +}); const options = [ { value: "鏈夋晥", label: "鏈夋晥" }, { value: "鏃犳晥", label: "鏃犳晥" }, { value: "浣滃簾", label: "浣滃簾" }, ]; -const emit = defineEmits(["submitForm"]); +const emit = defineEmits(["submitForm", "update:modelValue"]); +const modelValue = ref([]); const submit = async () => { // 楠岃瘉琛ㄥ崟 if (!ruleFormRef.value) return; - + try { const valid = await ruleFormRef.value.validate(); if (!valid) { return; } - + ruleForm.value.storageBlobDTO = modelValue.value; // 纭繚 ruleForm 鏄渶鏂扮殑 // 璋冪敤 API - let res = await addOrEditArchive(ruleForm.value); - console.log("API 鍝嶅簲:", res); - + try { + const res = await addOrEditArchive(ruleForm.value); + ElMessage({ + type: "success", + message: res.msg || "鎿嶄綔鎴愬姛", + }); + emit("submitForm", res); + } catch (error) { + ElMessage({ + type: "error", + message: error.msg || "鎿嶄綔澶辫触", + }); + return; + } // 鍙戦�� emit 浜嬩欢 - emit("submitForm", res); - console.log("emit submitForm 宸插彂閫�"); - + // 鍏抽棴瀵硅瘽妗� centerDialogVisible.value = false; } catch (error) { - console.error("琛ㄥ崟楠岃瘉澶辫触鎴朅PI璋冪敤澶辫触:", error); + ElMessage({ + type: "error", + message: error.msg || "鎿嶄綔澶辫触", + }); } -} +}; </script> <style lang="less" scoped></style> -- Gitblit v1.9.3