From 5c357cd927e74cc57531bd0a95338635e39be9af Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 29 一月 2024 09:45:06 +0800
Subject: [PATCH] 修改强密码

---
 src/views/safetyReview/projectManage/components/evaluatePlan.vue |  271 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 151 insertions(+), 120 deletions(-)

diff --git a/src/views/safetyReview/projectManage/components/evaluatePlan.vue b/src/views/safetyReview/projectManage/components/evaluatePlan.vue
index 13876a2..2f62a3d 100644
--- a/src/views/safetyReview/projectManage/components/evaluatePlan.vue
+++ b/src/views/safetyReview/projectManage/components/evaluatePlan.vue
@@ -32,6 +32,7 @@
                 v-model="state.formData.auser.name"
                 size="large"
                 placeholder="请选择机构评价负责人"
+                @focus="openExperts('机构评价负责人')"
             >
               <template #append>
                 <el-button :icon="Search" @click="openExperts('机构评价负责人')"/>
@@ -39,19 +40,6 @@
             </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>-->
       </el-row>
       <el-row>
         <el-col :span="18">
@@ -92,38 +80,30 @@
         </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>
+            <el-button type="primary" icon="Plus" @click="openWorksDialog('add',{})">添加成员</el-button>
           </div>
         </el-col>
       </el-row>
-      <el-table  :data="state.formData.planPersons" :border="true" style="margin: 20px 0">
+      <el-table  :data="state.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">
+        <el-table-column label="专业能力/资格证书" prop="person.certificateNo" header-align="center" :show-overflow-tooltip="true">
           <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>
+            {{ getCertNo(scope.row) }}
           </template>
         </el-table-column>
-        <el-table-column label="承诺后期前往现场勘验" header-align="center" class-name="small-padding fixed-width">
+<!--        <el-table-column label="专业能力" header-align="center" :show-overflow-tooltip="true"></el-table-column>-->
+        <el-table-column label="承担工作" prop="work" header-align="center" class-name="small-padding fixed-width"></el-table-column>
+        <el-table-column label="承诺后期前往现场勘验" prop="laterPromise" 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>
+            {{(scope.row.laterPromise==1 || scope.row.laterPromise==true)?'是':'否'}}
           </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="未到现场勘验原因" prop="reason" header-align="center" class-name="small-padding fixed-width"></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>
+            <el-button link @click="openWorksDialog('edit',scope.row)">修改</el-button>
+            <el-button link type="danger" @click="delMember(scope.row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -133,63 +113,52 @@
         </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>
+            <el-button type="primary" icon="Plus" @click="openDeviceDialog('add',{})">添加设备</el-button>
           </div>
         </el-col>
       </el-row>
-      <el-table  :data="state.formData.devices" :border="true" style="margin: 20px 0">
+      <el-table  :data="state.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">
+        <el-table-column label="设备名称" prop="deviceName" header-align="center" class-name="small-padding fixed-width"/>
+        <el-table-column label="开始时间" prop="startDate" 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"/>
+            {{scope.row.startDate.substring(0,10)}}
           </template>
         </el-table-column>
-        <el-table-column label="开始时间" header-align="center" class-name="small-padding fixed-width">
+        <el-table-column label="结束时间" prop="endDate" 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"
-            />
+            {{scope.row.endDate.substring(0,10)}}
           </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>
+            <el-button link @click="openDeviceDialog('edit',scope.row)">修改</el-button>
+            <el-button link type="danger" @click="delDeviceItem(scope.row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
     </el-form>
     <experts-list ref="expertsListRef" @getName="getSelected"></experts-list>
+    <works-dialog ref="worksRef" @getList="getWorksList" :workList="state.workList" :typeList="state.jobTypeList"></works-dialog>
+    <device-dialog ref="deviceRef" @getList="getDeviceList"></device-dialog>
   </div>
 </template>
 <script setup>
 
-import {defineEmits, onMounted, reactive, ref} from "vue"
-import {ElMessage} from "element-plus"
+import {defineEmits, defineProps, onMounted, reactive, ref} from "vue"
+import {ElMessage, ElMessageBox} from "element-plus"
 import {Search} from '@element-plus/icons-vue'
-import {addRisk, editRisk, getRiskDetail} from "@/api/projectManage/riskAnalysis"
+import {addRecord, editRecord, getDetail, getWorks, getDevice, delWorks, delDevice} from "@/api/projectManage/evaPlan"
 import Cookies from "js-cookie"
 import ExpertsList from "./expertsList"
+import WorksDialog from './worksDialog'
+import DeviceDialog from './deviceDialog'
+const props = defineProps(['projectId'])
 const emit = defineEmits(["getNextStatus"])
 
 const state = reactive({
   formData: {
+    id: null,
     projectId: null,
     auser: {
       name: ''
@@ -198,69 +167,87 @@
     estimateSchedules: [
       {
         id: 1,
+        sort: 1,
         name: '勘验准备',
         startDate: '',
         endDate: '',
-        scheduleType: 1
+        scheduleType: 1,
+        projectId: null
       },
       {
         id: 2,
+        sort: 2,
         name: '现场勘验',
         startDate: '',
         endDate: '',
-        scheduleType: 2
+        scheduleType: 2,
+        projectId: null
       },
       {
         id: 3,
+        sort: 3,
         name: '材料分析整理',
         startDate: '',
         endDate: '',
-        scheduleType: 3
+        scheduleType: 3,
+        projectId: null
       },
       {
         id: 4,
+        sort: 4,
         name: '评价报告编写',
         startDate: '',
         endDate: '',
-        scheduleType: 4
+        scheduleType: 4,
+        projectId: null
       },
       {
         id: 5,
+        sort: 5,
         name: '整改情况现场确认',
         startDate: '',
         endDate: '',
-        scheduleType: 5
+        scheduleType: 5,
+        projectId: null
       },
       {
         id: 6,
+        sort: 6,
         name: '整理评价报告',
         startDate: '',
         endDate: '',
-        scheduleType: 6
+        scheduleType: 6,
+        projectId: null
       },
       {
         id: 7,
+        sort: 7,
         name: '报告审核',
         startDate: '',
         endDate: '',
-        scheduleType: 7
+        scheduleType: 7,
+        projectId: null
       },
       {
         id: 8,
+        sort: 8,
         name: '报告修改',
         startDate: '',
         endDate: '',
-        scheduleType: 8
+        scheduleType: 8,
+        projectId: null
       },
     ],
     planPersons: [],
     devices: [],
     startDate: '',
-    endDate: '',
-    id: ''
+    endDate: ''
   },
+  projectId: null,
+  planPersons: [],
+  devices: [],
   rules: {
-    "auser.name": [{required: true, message: '请填写机构评价负责人', trigger: 'blur'}],
+    "auser.name": [{required: true, message: '请填写机构评价负责人', trigger: 'change'}],
     startDate: [{required: true, message: '请选择评价开始时间', trigger: 'blur'}],
     endDate: [{required: true, message: '请选择评价结束时间', trigger: 'blur'}]
   },
@@ -269,31 +256,37 @@
     {value: '文字校对',label: '文字校对'},
     {value: '现场勘验',label: '现场勘验'},
     {value: '资料收集整理',label: '资料收集整理'}
+  ],
+  jobTypeList: [
+    {value: 1,label: '普通人员'},
+    {value: 2,label: '组长'},
   ]
 })
-const props = {
-  expandTrigger: 'hover',
-  value: 'name',
-  label: 'name'
-}
+
 const isAmin = ref(false)
 const formRef = ref()
 const expertsListRef = ref()
+const worksRef = ref()
+const deviceRef = ref()
 onMounted(() => {
   const userInfo = JSON.parse(Cookies.get('userInfo'))
   if(userInfo.identity === 0){
-    isAmin.value = true;
+    isAmin.value = true
   }
-});
+})
 
 const riskOpen = async (type,val) => {
-  console.log("type",type,val)
+  state.formData.projectId = val
+  state.projectId = val
+  for(let i of state.formData.estimateSchedules){
+    i.projectId = val
+  }
+  await getWorksList(val)
+  await getDeviceList(val)
   if(type === 'detail' || type === 'edit' ){
-    const res = await getRiskDetail({projectId: val});
+    const res = await getDetail({projectId: val})
     if(res.code == 200){
-      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.formData = JSON.parse(JSON.stringify(res.data))
     }else {
       ElMessage.warning(res.message)
     }
@@ -307,10 +300,8 @@
       }
       if(type === 'add'){
         const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
-        delete data.project.area;
-        delete data.project.id;
-        console.log('data', data)
-        const res = await addRisk(data);
+        console.log(data)
+        const res = await addRecord(data);
         if (res.code == 200) {
           ElMessage.success('保存成功')
           formRef.value.clearValidate();
@@ -321,9 +312,7 @@
         }
       }else if(type === 'clickEdit'){
         const { ...data} = JSON.parse(JSON.stringify(state.formData))
-        delete data.project.area;
-        console.log('data', data)
-        const res = await editRisk(data);
+        const res = await editRecord(data);
         if (res.code == 200) {
           ElMessage.success('变更成功')
           formRef.value.clearValidate();
@@ -336,46 +325,88 @@
   }
 }
 
+const getWorksList = async (id) =>{
+  const works = await getWorks({projectId: id ? id : props.projectId})
+  if(works.code == 200){
+    state.planPersons = works.data
+  }else {
+    ElMessage.warning(works.message)
+  }
+}
+
+const getDeviceList = async (id) =>{
+  const device = await getDevice({projectId: id ? id : props.projectId})
+  if(device.code == 200){
+    state.devices = device.data
+  }else {
+    ElMessage.warning(device.message)
+  }
+}
+
+const getCertNo = (row)=>{
+  const obj = JSON.parse(row.person.certificateNo)
+  const noArr = Object.values(obj)
+  return row.person.majorNames.map((item,index)=>{
+    return item + '(' + noArr[index] + ')'
+  }).join(',')
+}
+
 const openExperts = (type) =>{
   expertsListRef.value.openDialog(type)
 }
 
 const getSelected = (type,obj)=>{
-  if(type == '项目负责人'){
-    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)
-  }
+  state.formData.auser.name = obj.name
+  state.formData.auserId = obj.id
 }
 
-const delMember = (index)=>{
-  state.formData.planPersons.splice(index,1)
+const openWorksDialog = (type,data)=>{
+  worksRef.value.openDialog(type,data,props.projectId)
 }
 
-const addDevice = ()=>{
-  let device = {
-    projectId: null,
-    deviceName: '',
-    startDate: '',
-    endDate: ''
-  }
-  state.formData.devices.push(device)
+const openDeviceDialog = (type,data)=>{
+  deviceRef.value.openDialog(type,data,props.projectId)
 }
 
-const delDevice = (index)=>{
-  state.formData.devices.splice(index,1)
+const delMember = (row)=>{
+  ElMessageBox.confirm(
+      '确定删除此条数据?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then( async() => {
+        const res = await delWorks(row.id)
+        if(res.code == 200){
+          ElMessage.success('数据删除成功')
+          await getWorksList()
+        }else{
+          ElMessage.warning(res.message)
+        }
+      })
+}
+
+const delDeviceItem = (row)=>{
+  console.log(row,'row')
+  ElMessageBox.confirm(
+      '确定删除此条数据?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then( async() => {
+        const res = await delDevice(row.id)
+        if(res.code == 200){
+          ElMessage.success('数据删除成功')
+          await getDeviceList()
+        }else{
+          ElMessage.warning(res.message)
+        }
+      })
 }
 
 defineExpose({

--
Gitblit v1.9.2