From 7619b42541a7b44c4f859b17f69d087b39aef08c Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期一, 24 十一月 2025 16:53:46 +0800
Subject: [PATCH] 修改

---
 src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectCaralog/components/editDialog.vue |   92 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 90 insertions(+), 2 deletions(-)

diff --git a/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectCaralog/components/editDialog.vue b/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectCaralog/components/editDialog.vue
index 6d368be..ee70e4f 100644
--- a/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectCaralog/components/editDialog.vue
+++ b/src/views/build/conpanyFunctionConsult/digitalFileDep/project/projectCaralog/components/editDialog.vue
@@ -30,6 +30,20 @@
         <el-form-item label="排序:"  prop="sort">
           <el-input v-model.number.trim="state.form.sort" type="number" :disabled="state.title =='查看'" placeholder="排序"></el-input>
         </el-form-item>
+        <el-form-item label="模板文件:" prop="filePath">
+          <el-upload accept=".doc,.docx,.pdf" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.fileLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
+            <el-button type="primary">点击上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip">支持上传.doc、.docx、.pdf格式文档,尺寸小于30M,最多可上传1份</div>
+            </template>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="是否添加文件:"  prop="isFile">
+          <el-radio-group v-model="state.form.isFile"  >
+            <el-radio :label="1">是</el-radio>
+            <el-radio :label="2">否</el-radio>
+          </el-radio-group>
+        </el-form-item>
       </el-form>
       <template #footer v-if="state.title !='查看'">
         <span class="dialog-footer">
@@ -44,6 +58,8 @@
 import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
 import {ElMessage} from "element-plus";
 import {addCatalogue, editCatalogue, getCatalogue} from "@/api/qualityManage/catalog";
+import {getToken} from "@/utils/auth";
+import {delPic} from "@/api/onlineEducation/banner";
 
 const emit = defineEmits(["getList"]);
 const dialogVisible = ref(false)
@@ -56,17 +72,28 @@
     number:'',
     parentId: null,
     companyId: null,
-    sort: null
+    sort: null,
+    isFile:null,
+    filePath:'',
+    fileName:''
   },
   formRules:{
     mess: [{ required: true, message: '请输入目录名称', trigger: 'blur' }],
     number: [{ required: true, message: '请输入序号', trigger: 'blur' }],
     parentId:[{ required: true, message: '请选择上级分支', trigger: 'blur' }],
     sort: [{ required: true, message: '请输入排序', trigger: 'blur' }],
+    isFile:[{ required: true, message: '请选择是否添加文件', trigger: 'blur' }],
+    // filePath:[{ required: true, message: '请上传文件', trigger: 'blur' }],
   },
   isAdmin: false,
   companyList: [],
   menuOptions: [],
+  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
+  header: {
+    Authorization: getToken()
+  },
+  fileLimit: 1,
+  fileList: [],
 
 })
 onMounted(() => {
@@ -91,6 +118,13 @@
         state.form[key] = value[key]
       }
     })
+    if(value.filePath) {
+      const obj = {
+        url: value.filePath,
+        name: value.fileName
+      }
+      state.fileList = [obj]
+    }
   }
   state.form.companyId = companyId
 
@@ -160,6 +194,56 @@
   traverse(val); // 从根节点开始遍历
   return val;
 }
+const handleAvatarSuccess = (res, uploadFile) => {
+  if(res.code == 200){
+    state.form.filePath = res.data.path
+    state.form.fileName = res.data.originName
+    state.form.format = '.' + res.data.filename.split('.')[1]
+  }else{
+    state.fileList = []
+    ElMessage({
+      type: 'warning',
+      message: '文件上传失败'
+    })
+  }
+}
+
+const showTip =()=>{
+  ElMessage({
+    type: 'warning',
+    message: '超出文件上传数量'
+  });
+}
+const picSize = async (rawFile) => {
+  if(rawFile.size / 1024 / 1024 > 30){
+    ElMessage({
+      type: 'warning',
+      message: '文件大小不能超过30M'
+    });
+    return false
+  }
+};
+const handleRemove = async (file, uploadFiles) => {
+  let path = state.form.filePath;
+  await delPic({path: path}).then(res => {
+    if(res.code == 200){
+      // ElMessage({
+      //   type: 'success',
+      //   message: '文件已删除'
+      // })
+      state.form.filePath = ''
+      state.form.fileName = ''
+      state.form.format = ''
+    }else{
+      ElMessage({
+        type: 'warning',
+        message: res.message
+      })
+    }
+  }).catch(() => {
+    state.form.imgUrl = ''
+  });
+}
 const handleClose = () => {
   state.form = {
     id: null,
@@ -167,8 +251,12 @@
     number:'',
     parentId: null,
     companyId: null,
-    sort: null
+    sort: null,
+    isFile:null,
+    filePath:'',
+    fileName:''
   }
+  state.fileList = []
   state.isTree = false
   superRef.value.clearValidate();
   superRef.value.resetFields()

--
Gitblit v1.9.2