马宇豪
2024-01-18 18e2812133add57c3b707f39555321e2a598eea2
src/views/safetyReview/projectManage/components/evaluatePlan.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="evalStartDate" label="评价开始时间">
          <el-form-item prop="startDate" label="评价开始时间">
            <el-date-picker
                style="width: 100%"
                v-model="state.formData.evalStartDate"
                v-model="state.formData.startDate"
                type="date"
                value-format="YYYY-MM-DD 00:00:00"
                placeholder="选择日期"
@@ -15,10 +15,10 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="evalEndDate" label="评价结束时间">
          <el-form-item prop="endDate" label="评价结束时间">
            <el-date-picker
                style="width: 100%"
                v-model="state.formData.evalEndDate"
                v-model="state.formData.endDate"
                type="date"
                value-format="YYYY-MM-DD 00:00:00"
                placeholder="选择日期"
@@ -27,9 +27,9 @@
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="deliver" label="机构评价负责人">
          <el-form-item prop="auser.name" label="机构评价负责人">
            <el-input
                v-model="state.formData.deliver"
                v-model="state.formData.auser.name"
                size="large"
                placeholder="请选择机构评价负责人"
            >
@@ -39,23 +39,28 @@
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item prop="deliver" label="技术负责人">
            <el-input
                v-model="state.formData.deliver"
                size="large"
                placeholder="请选择技术负责人"
            >
              <template #append>
                <el-button :icon="Search" @click="openExperts('技术负责人')"/>
              </template>
            </el-input>
          </el-form-item>
<!--        <el-col :span="6">-->
<!--          <el-form-item prop="deliver" label="技术负责人">-->
<!--            <el-input-->
<!--                v-model="state.formData.deliver"-->
<!--                size="large"-->
<!--                placeholder="请选择技术负责人"-->
<!--            >-->
<!--              <template #append>-->
<!--                <el-button :icon="Search" @click="openExperts('技术负责人')"/>-->
<!--              </template>-->
<!--            </el-input>-->
<!--          </el-form-item>-->
<!--        </el-col>-->
      </el-row>
      <el-row>
        <el-col :span="18">
          <div style="display: flex;align-items: center">评价日程安排</div>
        </el-col>
      </el-row>
      <el-table  :data="state.tableData" :border="true" style="margin: 20px 0">
      <el-table :data="state.formData.estimateSchedules" :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"/>
        <el-table-column label="评价日程安排" prop="name" header-align="center" :show-overflow-tooltip="true"/>
        <el-table-column label="开始时间" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-date-picker
@@ -81,6 +86,94 @@
          </template>
        </el-table-column>
      </el-table>
      <el-row>
        <el-col :span="18">
          <div style="display: flex;align-items: center">项目组成员<el-icon style="margin-left: 10px;margin-right: 4px"><InfoFilled /></el-icon><span style="font-size: 13px">金属、非金属矿及其他矿采选业:安全、机械、电气、采矿、通风、地质、水工结构</span></div>
        </el-col>
        <el-col :span="6">
          <div style="width: 100%;display: flex;justify-content: right">
            <el-button type="primary" icon="Plus" @click="openExperts('项目组成员')">添加成员</el-button>
          </div>
        </el-col>
      </el-row>
      <el-table  :data="state.formData.planPersons" :border="true" style="margin: 20px 0">
        <el-table-column label="序号" width="60" align="center" type="index"></el-table-column>
        <el-table-column label="评价组成员" prop="person.name" header-align="center" :show-overflow-tooltip="true"/>
        <el-table-column label="资格证书" prop="person.certificateNo" header-align="center" :show-overflow-tooltip="true"/>
        <el-table-column label="专业能力" prop="person.major" header-align="center" :show-overflow-tooltip="true"/>
        <el-table-column label="承担工作" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-select v-model="scope.row.work" multiple placeholder="承担工作" style="width: 100%" size="large">
              <el-option v-for="item in state.workList" :key="item.value" :label="item.label" :value="item.value"/>
            </el-select>
          </template>
        </el-table-column>
        <el-table-column label="承诺后期前往现场勘验" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-radio-group v-model="scope.row.laterPromise" size="large">
              <el-radio :label="1" size="large">是</el-radio>
              <el-radio :label="0" size="large">否</el-radio>
            </el-radio-group>
          </template>
        </el-table-column>
        <el-table-column label="未到现场勘验原因" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-input v-model="scope.row.reason" maxlength="30" show-word-limit type="text" size="large"/>
          </template>
        </el-table-column>
        <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-button link type="danger" @click="delMember(scope.$index)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-row>
        <el-col :span="18">
          <div style="display: flex;align-items: center">所需仪器设备</div>
        </el-col>
        <el-col :span="6">
          <div style="width: 100%;display: flex;justify-content: right">
            <el-button type="primary" icon="Plus" @click="addDevice">添加设备</el-button>
          </div>
        </el-col>
      </el-row>
      <el-table  :data="state.formData.devices" :border="true" style="margin: 20px 0">
        <el-table-column label="序号" width="60" align="center" type="index"></el-table-column>
        <el-table-column label="设备名称" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-input v-model="scope.row.deviceName" maxlength="30" show-word-limit type="text" size="large"/>
          </template>
        </el-table-column>
        <el-table-column label="开始时间" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-date-picker
                style="width: 100%"
                v-model="scope.row.startDate"
                type="date"
                value-format="YYYY-MM-DD 00:00:00"
                placeholder="选择日期"
                size="large"
            />
          </template>
        </el-table-column>
        <el-table-column label="结束时间" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-date-picker
                style="width: 100%"
                v-model="scope.row.endDate"
                type="date"
                value-format="YYYY-MM-DD 00:00:00"
                placeholder="选择日期"
                size="large"
            />
          </template>
        </el-table-column>
        <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width">
          <template #default="scope">
            <el-button link type="danger" @click="delDevice(scope.$index)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </el-form>
    <experts-list ref="expertsListRef" @getName="getSelected"></experts-list>
  </div>
@@ -97,57 +190,85 @@
const state = reactive({
  formData: {
    project: {
      id: '',
    projectId: null,
    auser: {
      name: ''
    },
    auserId: null,
    estimateSchedules: [
      {
        id: 1,
        name: '勘验准备',
        startDate: '',
        endDate: '',
        scheduleType: 1
      },
      {
        id: 2,
        name: '现场勘验',
        startDate: '',
        endDate: '',
        scheduleType: 2
      },
      {
        id: 3,
        name: '材料分析整理',
        startDate: '',
        endDate: '',
        scheduleType: 3
      },
      {
        id: 4,
        name: '评价报告编写',
        startDate: '',
        endDate: '',
        scheduleType: 4
      },
      {
        id: 5,
        name: '整改情况现场确认',
        startDate: '',
        endDate: '',
        scheduleType: 5
      },
      {
        id: 6,
        name: '整理评价报告',
        startDate: '',
        endDate: '',
        scheduleType: 6
      },
      {
        id: 7,
        name: '报告审核',
        startDate: '',
        endDate: '',
        scheduleType: 7
      },
      {
        id: 8,
        name: '报告修改',
        startDate: '',
        endDate: '',
        scheduleType: 8
      },
    ],
    planPersons: [],
    devices: [],
    startDate: '',
    endDate: '',
    id: ''
  },
  rules: {
    "project.name": [{required: true, message: '请填写项目名称', trigger: 'blur'}],
    riskCharacter: [{required: true, message: '请填写行业风险特性', trigger: 'blur'}],
    "auser.name": [{required: true, message: '请填写机构评价负责人', trigger: 'blur'}],
    startDate: [{required: true, message: '请选择评价开始时间', trigger: 'blur'}],
    endDate: [{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
    },
  workList: [
    {value: '报告编制',label: '报告编制'},
    {value: '文字校对',label: '文字校对'},
    {value: '现场勘验',label: '现场勘验'},
    {value: '资料收集整理',label: '资料收集整理'}
  ]
})
const props = {
@@ -173,12 +294,6 @@
      state.formData = res.data;
      state.formData.project.business = parseInt(res.data.project.business);
      state.formData.project.area = [res.data.project.province,res.data.project.city];
      state.tableData[0].status = res.data.isInBusiness ? 1 : 0;
      state.tableData[1].status = res.data.isSatisfyNeed ? 1 : 0;
      state.tableData[2].status = res.data.isNeedExpert ? 1 : 0;
      state.tableData[3].status = res.data.isFinishReport ? 1 : 0;
      state.tableData[4].status = res.data.isAcceptChargess ? 1 : 0;
      state.tableData[5].status = res.data.isFeasibility ? 1 : 0;
    }else {
      ElMessage.warning(res.message)
    }
@@ -194,12 +309,6 @@
        const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
        delete data.project.area;
        delete data.project.id;
        data.isInBusiness = state.tableData[0].status === 1;
        data.isSatisfyNeed = state.tableData[1].status === 1;
        data.isNeedExpert = state.tableData[2].status === 1;
        data.isFinishReport = state.tableData[3].status === 1;
        data.isAcceptChargess = state.tableData[4].status === 1;
        data.isFeasibility = state.tableData[5].status === 1;
        console.log('data', data)
        const res = await addRisk(data);
        if (res.code == 200) {
@@ -213,12 +322,6 @@
      }else if(type === 'clickEdit'){
        const { ...data} = JSON.parse(JSON.stringify(state.formData))
        delete data.project.area;
        data.isInBusiness = state.tableData[0].status === 1;
        data.isSatisfyNeed = state.tableData[1].status === 1;
        data.isNeedExpert = state.tableData[2].status === 1;
        data.isFinishReport = state.tableData[3].status === 1;
        data.isAcceptChargess = state.tableData[4].status === 1;
        data.isFeasibility = state.tableData[5].status === 1;
        console.log('data', data)
        const res = await editRisk(data);
        if (res.code == 200) {
@@ -239,11 +342,40 @@
const getSelected = (type,obj)=>{
  if(type == '项目负责人'){
    state.formData.project.leader = obj.name
    state.formData.auser.name = obj.name
    state.formData.auserId = obj.id
  }else{
    let member = {
      person: {
        name: obj.name,
        certificateNo: obj.certificateNo?obj.certificateNo:'',
        major: obj.speciality,
      },
      informed: 0,
      work: '',
      laterPromise: 0,
      reason: ''
    }
    state.formData.planPersons.push(member)
  }
  if(type == '任务下达人'){
    state.formData.deliver = obj.name
}
const delMember = (index)=>{
  state.formData.planPersons.splice(index,1)
}
const addDevice = ()=>{
  let device = {
    projectId: null,
    deviceName: '',
    startDate: '',
    endDate: ''
  }
  state.formData.devices.push(device)
}
const delDevice = (index)=>{
  state.formData.devices.splice(index,1)
}
defineExpose({