马宇豪
2024-01-29 5c357cd927e74cc57531bd0a95338635e39be9af
src/views/safetyReview/projectManage/components/innerReview.vue
@@ -3,10 +3,10 @@
    <el-form ref="formRef" :model="state.formData" :rules="state.rules" class="register-form" label-position="top">
      <el-row :gutter="30">
        <el-col :span="6">
          <el-form-item prop="transmitDate" label="审核日期">
          <el-form-item prop="auditDate" label="审核日期">
            <el-date-picker
                style="width: 100%"
                v-model="state.formData.transmitDate"
                v-model="state.formData.auditDate"
                type="date"
                value-format="YYYY-MM-DD 00:00:00"
                placeholder="选择日期"
@@ -17,7 +17,7 @@
        <el-col :span="6">
          <el-form-item prop="leader.name" label="内部审核员">
            <el-input
                v-model="state.formData.leader.name"
                v-model="state.formData.assessor.name"
                size="large"
                placeholder="请选择内部审核员"
            >
@@ -28,10 +28,10 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="transmitDate" label="内部审核确认日期">
          <el-form-item label="内部审核确认日期">
            <el-date-picker
                style="width: 100%"
                v-model="state.formData.transmitDate"
                v-model="state.formData.affirmDate"
                type="date"
                value-format="YYYY-MM-DD 00:00:00"
                placeholder="选择日期"
@@ -40,18 +40,18 @@
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="30">
        <el-col :span="6">
          <el-form-item label="附件上传">
            <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='state.imgLimit' v-model:file-list="state.fileList" list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" :before-remove="beforeRemove">
              <el-icon><Plus /></el-icon>
              <template #tip>
                <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
              </template>
            </el-upload>
          </el-form-item>
        </el-col>
      </el-row>
<!--      <el-row :gutter="30">-->
<!--        <el-col :span="6">-->
<!--          <el-form-item label="附件上传">-->
<!--            <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='state.imgLimit' v-model:file-list="state.fileList" list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" :before-remove="beforeRemove">-->
<!--              <el-icon><Plus /></el-icon>-->
<!--              <template #tip>-->
<!--                <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>-->
<!--              </template>-->
<!--            </el-upload>-->
<!--          </el-form-item>-->
<!--        </el-col>-->
<!--      </el-row>-->
      <el-table  :data="state.tableData" :border="true" style="margin: 20px 0">
        <el-table-column label="序号" width="60" align="center" type="index"></el-table-column>
        <el-table-column label="内容" prop="content" header-align="center" :show-overflow-tooltip="true"/>
@@ -64,9 +64,9 @@
          </template>
        </el-table-column>
      </el-table>
      <el-form-item prop="technology" label="存在问题及建议">
      <el-form-item prop="suggestions" label="存在问题及建议">
        <el-input
            v-model="state.formData.technology"
            v-model="state.formData.suggestions"
            :autosize="{ minRows: 6 }"
            maxlength="500"
            show-word-limit
@@ -74,9 +74,9 @@
        </el-input>
      </el-form-item>
    </el-form>
    <el-dialog v-model="state.dialogImg">
      <el-image style="width: 100%; height: 100%" :src="state.dialogImageUrl"/>
    </el-dialog>
<!--    <el-dialog v-model="state.dialogImg">-->
<!--      <el-image style="width: 100%; height: 100%" :src="state.dialogImageUrl"/>-->
<!--    </el-dialog>-->
    <experts-list ref="expertsListRef" @getName="getSelected"></experts-list>
  </div>
</template>
@@ -85,7 +85,7 @@
import {defineEmits, onMounted, reactive, ref} from "vue";
import {ElMessage} from "element-plus";
import {Search} from '@element-plus/icons-vue'
import {addRisk, editRisk, getRiskDetail} from "@/api/projectManage/riskAnalysis"
import {addInnerReview, editInnerReview, getInnerReviewDetail} from "@/api/projectManage/innerReview"
import {delPic} from "@/api/login"
import { getToken } from "@/utils/auth";
import Cookies from "js-cookie"
@@ -95,48 +95,44 @@
const state = reactive({
  formData: {
    id: '',
    leader: {
    projectId: '',
    auditDate:'',
    auditType: 1,
    assessor: {
      name: ''
    },
    leaderId: null,
    linkMan: '',
    transmitPerson: '',
    transmitDate: ''
    assessorId: null,
    affirmDate: '',
    suggestions: ''
  },
  rules: {
    "leader.name": [{required: true, message: '请选择项目负责人', trigger: 'blur'}],
    linkMan: [{required: true, message: '请输入联系人', trigger: 'blur'}],
    linkPhone: [{required: true, message: '请输入联系电话', trigger: 'blur'}],
    transmitDate: [{required: true, message: '请选择任务下达时间', trigger: 'blur'}]
    "assessor.name": [{required: true, message: '请选择内部审核员', trigger: 'blur'}],
    auditDate: [{required: true, message: '请选择审核日期', trigger: 'blur'}]
  },
  tableData: [
    {id: 1, content: '评价依据是否充分、准确、有效', status: 1},
    {id: 2, content: '评价范围是否与合同一致', status: 1},
    {id: 3, content: '危险有害因素识别是否全面', status: 1},
    {id: 4, content: '评价单元划分是否合理', status: 1},
    {id: 5, content: '评价方法选择是否适当', status: 1},
    {id: 6, content: '对策措施与建议是否可行', status: 1},
    {id: 7, content: '结论是否正确', status: 1},
    {id: 8, content: '格式是否符合要求', status: 1},
    {id: 9, content: '附件与附图是否有效及规范', status: 1},
    {id: 10, content: '文字、数据是否准确', status: 1},
    {id: 11, content: '已按要求修改完成', status: 1},
    {id: 12, content: '可报技术负责人审核', status: 1}
    {id: 1, content: '评价依据是否充分、准确、有效',key: 'isBasis', status: 1},
    {id: 2, content: '评价范围是否与合同一致', key: 'isScope', status: 1},
    {id: 3, content: '危险有害因素识别是否全面', key: 'isDangerOverall', status: 1},
    {id: 4, content: '评价单元划分是否合理', key: 'isUnitDivision', status: 1},
    {id: 5, content: '评价方法选择是否适当', key: 'isMethodSelection', status: 1},
    {id: 6, content: '对策措施与建议是否可行', key: 'isMeasure', status: 1},
    {id: 7, content: '结论是否正确', key: 'isConclusion', status: 1},
    {id: 8, content: '格式是否符合要求', key: 'isFormat', status: 1},
    {id: 9, content: '附件与附图是否有效及规范', key: 'isFile', status: 1},
    {id: 10, content: '文字、数据是否准确', key: 'isText', status: 1},
    {id: 11, content: '已按要求修改完成', key: 'isAmendFinish', status: 1},
    {id: 12, content: '可报技术负责人审核', key: 'isReportAudit', status: 1}
  ],
  imgLimit: 1,
  fileList: [],
  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
  header: {
    Authorization: 'Bearer ' + getToken()
    Authorization: getToken()
  },
  dialogImageUrl: '',
  dialogImg: false
})
const props = {
  expandTrigger: 'hover',
  value: 'name',
  label: 'name'
}
const isAmin = ref(false)
const formRef = ref()
const expertsListRef = ref()
@@ -148,10 +144,18 @@
})
const riskOpen = async (type,val) => {
  state.formData.projectId = val
  if(type === 'detail' || type === 'edit' ){
    const res = await getRiskDetail({projectId: val});
    const res = await getInnerReviewDetail({projectId: val,auditType: 1});
    if(res.code == 200){
      state.formData = res.data;
      state.formData = res.data
      for(let key in res.data){
        for(let item of state.tableData){
          if(item.key == key){
            item.status = res.data[key]==true?1:0
          }
        }
      }
    }else {
      ElMessage.warning(res.message)
    }
@@ -165,7 +169,10 @@
      }
      if(type === 'add'){
        const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
        const res = await addRisk(data);
        for(let i of state.tableData){
          data[i.key] = i.status
        }
        const res = await addInnerReview(data);
        if (res.code == 200) {
          ElMessage.success('保存成功')
          formRef.value.clearValidate();
@@ -176,7 +183,10 @@
        }
      }else if(type === 'clickEdit'){
        const { ...data} = JSON.parse(JSON.stringify(state.formData))
        const res = await editRisk(data);
        for(let i of state.tableData){
          data[i.key] = i.status
        }
        const res = await editInnerReview(data);
        if (res.code == 200) {
          ElMessage.success('变更成功')
          formRef.value.clearValidate();
@@ -194,8 +204,8 @@
}
const getSelected = (type,obj)=>{
  state.formData.leader.name = obj.name
  state.formData.leaderId = obj.id
  state.formData.assessor.name = obj.name
  state.formData.assessorId = obj.id
}
// 图片上传