马宇豪
2024-11-26 bd19a941293d124d7c58c6d351e7e86c1fa15559
src/views/dataUpload/saftyBaseInfo/judgeReport/components/addReport.vue
@@ -1,8 +1,28 @@
<template>
  <div class="system-add-user-container">
    <el-dialog :title="title" v-model="isShowDialog" width="50%">
      <el-form :model="form" size="default" ref="formRef" :rules="rules" label-width="120px">
      <el-form :model="form" size="default" ref="formRef" :rules="rules" label-width="150px">
        <el-row :gutter="35">
          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
            <el-form-item label="" prop="type">
              <el-radio-group v-model="form.type">
                <el-radio :label="1">安全评价报告</el-radio>
                <el-radio :label="2">安全三同时</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="form.type == 2">
            <el-form-item label="安全三同时文件类型">
              <el-select v-model="form.threeMeanwhileType" style="width: 100%">
                <el-option
                    v-for="item in typeList"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
            <el-form-item label="报告名称" prop="name">
              <el-input v-model.trim="form.name" placeholder="报告名称" clearable></el-input>
@@ -23,9 +43,17 @@
              <el-upload accept=".pdf" :action="uploadUrl" :headers="header" method="post" :on-exceed="showTip" :on-success="handleAvatarSuccess" :limit='1' v-model:file-list="fileList" :before-upload="picSize" :on-remove="handleRemove" :before-remove="beforeRemove">
                <el-button type="primary">点击上传</el-button>
                <template #tip>
                  <div class="el-upload__tip">仅支持上传pdf文件,尺寸小于2M,最多可上传1张</div>
                  <div class="el-upload__tip">仅支持上传pdf文件,尺寸小于5M,最多可上传1张</div>
                </template>
              </el-upload>
            </el-form-item>
          </el-col>
          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="title == '新增上报'? false : true">
            <el-form-item label="删除状态" prop="deleted">
              <el-radio-group v-model="form.deleted">
                <el-radio :label="0">未删除</el-radio>
                <el-radio :label="1">已删除</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
        </el-row>
@@ -55,13 +83,17 @@
  isShowDialog: boolean;
  form: {
    uuid: string
    type: null | number
    name: string
    remarks: string
    evaluateTime: string
    files: string
    deleted: number | null
    threeMeanwhileType: string
  }
  rules:{},
  fileList: [],
  typeList: Array<any>
  uploadUrl: string,
  header: {}
}
@@ -75,17 +107,22 @@
      isShowDialog: false,
      form: {
        uuid: '',
        type: 1,
        name: '',
        remarks: '',
        evaluateTime: '',
        files: ''
        files: '',
        deleted: 0,
        threeMeanwhileType: ''
      },
      rules:{
        type: [{ required: true, message: '请选择报告类型', trigger: 'blur'}],
        name: [{ required: true, message: '请填写报告名称', trigger: 'blur'}],
        remarks: [{ required: true, message: '请填写备注', trigger: 'blur'}],
        evaluateTime: [{ required: true, message: '请选择评价时间', trigger: 'blur'}]
      },
      fileList: [],
      typeList: [],
      uploadUrl: import.meta.env.VITE_API_URL + '/account/file/upload',
      header: {
        uid: Cookies.get('uid'),
@@ -98,28 +135,49 @@
    })
    // 打开弹窗
    const open = (type: string, data: object) => {
    const open = (type: string, data: object,typeList: Array<any>) => {
      state.isShowDialog = true;
      state.typeList = typeList
      if (type === 'add') {
        state.title = '新增上报';
        state.form = {
          uuid: '',
          type: 1,
          name: '',
          remarks: '',
          evaluateTime: '',
          files: ''
          files: '',
          deleted: 0,
          threeMeanwhileType: ''
        }
        state.fileList = []
      }else{
        state.title = '重新上报';
        state.form = {
          uuid: data.uuid,
          name: '',
          remarks: '',
          evaluateTime: '',
          files: ''
        Object.keys(state.form).forEach(key => {
          if (Object.prototype.hasOwnProperty.call(data,key)) {
            state.form[key] = JSON.parse(JSON.stringify(data))[key];
          }
        })
        if(data.files !== ''){
          state.fileList = state.form.files.split(',').map((i,index) => {
            return {
              url:  i,
              name: '文件' + (index+1)
            }
          })
        }else{
          state.fileList = []
        }
        // state.form = {
        //   type: 1,
        //   uuid: data.uuid,
        //   name: '',
        //   remarks: '',
        //   evaluateTime: '',
        //   files: '',
        //   deleted: '0'
        // }
      }
      state.fileList = []
    };
    // 图片上传
@@ -131,10 +189,10 @@
    }
    const picSize = async(rawFile: any) => {
      if(rawFile.size / 1024 / 1024 > 2){
      if(rawFile.size / 1024 / 1024 > 5){
        ElMessage({
          type: 'warning',
          message: '文件大小不能超过2M'
          message: '文件大小不能超过5M'
        });
        return false
      }
@@ -144,6 +202,7 @@
      if(res){
          uploadFile.name = res
          state.form.files = res
        console.log(state.fileList,'list')
      }else{
        ElMessage({
          type: 'warning',