From 18e2812133add57c3b707f39555321e2a598eea2 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期四, 18 一月 2024 13:54:50 +0800
Subject: [PATCH] 新增

---
 src/views/safetyReview/projectManage/components/evaluatePlan.vue |  306 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 219 insertions(+), 87 deletions(-)

diff --git a/src/views/safetyReview/projectManage/components/evaluatePlan.vue b/src/views/safetyReview/projectManage/components/evaluatePlan.vue
index 3446e59..13876a2 100644
--- a/src/views/safetyReview/projectManage/components/evaluatePlan.vue
+++ b/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({

--
Gitblit v1.9.2