zhouwx
2025-11-24 7619b42541a7b44c4f859b17f69d087b39aef08c
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()