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/deviceDialog.vue       |  140 ++++
 src/views/safetyReview/projectManage/components/employNoticeRecord.vue |  110 +-
 src/views/safetyReview/projectManage/components/evaluatePlan.vue       |  271 ++++---
 src/views/safetyReview/projectManage/components/innerReview.vue        |  122 ++-
 src/api/projectManage/evaTaskNotice.js                                 |   25 
 src/views/safetyReview/projectManage/components/siteCheckRcd.vue       |  391 ++++++++++-
 src/views/safetyReview/projectManage/components/signConfirm.vue        |    4 
 src/api/projectManage/siteCheckRcd.js                                  |   48 +
 src/views/safetyReview/projectManage/components/uploadReviewRcd.vue    |  184 +++--
 src/api/projectManage/innerReview.js                                   |   25 
 src/views/safetyReview/projectManage/components/riskAnalysis.vue       |   13 
 src/views/safetyReview/projectManage/components/worksDialog.vue        |  205 ++++++
 src/api/projectManage/rateConclude.js                                  |   25 
 src/api/projectManage/employNoticeRcd.js                               |   25 
 src/api/projectManage/processCtrl.js                                   |   25 
 src/views/safetyReview/projectManage/components/contractManage.vue     |    1 
 src/views/safetyReview/projectManage/components/techLeaderReview.vue   |  121 +-
 src/api/projectManage/evaPlan.js                                       |   95 ++
 src/views/safetyReview/projectManage/components/evaluateTaskNotice.vue |   17 
 src/views/safetyReview/projectManage/process.vue                       |   83 ++
 20 files changed, 1,497 insertions(+), 433 deletions(-)

diff --git a/src/api/projectManage/employNoticeRcd.js b/src/api/projectManage/employNoticeRcd.js
new file mode 100644
index 0000000..bcfbde9
--- /dev/null
+++ b/src/api/projectManage/employNoticeRcd.js
@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function addWorkRecord(data) {
+    return request({
+        url: '/manage/work-notification/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editWorkRecord(params) {
+    return request({
+        url: `/manage/work-notification/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getWorkDetail(data) {
+    return request({
+        url: '/manage/work-notification/getWorkNotificationByProjectId',
+        method: 'get',
+        params: data
+    })
+}
diff --git a/src/api/projectManage/evaPlan.js b/src/api/projectManage/evaPlan.js
new file mode 100644
index 0000000..de5da71
--- /dev/null
+++ b/src/api/projectManage/evaPlan.js
@@ -0,0 +1,95 @@
+import request from '@/utils/request'
+
+export function addRecord(data) {
+    return request({
+        url: '/manage/estimate-plan/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editRecord(params) {
+    return request({
+        url: `/manage/estimate-plan/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getDetail(data) {
+    return request({
+        url: '/manage/estimate-plan/getPlanByProjectId',
+        method: 'get',
+        params: data
+    })
+}
+
+export function addWorks(data) {
+    return request({
+        url: '/manage/plan-person/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function getWorks(data) {
+    return request({
+        url: `/manage/plan-person/getPlanPersonByProjectId`,
+        method: 'get',
+        params: data
+    })
+}
+
+export function getWorksDetail(data) {
+    return request({
+        url: `/manage/plan-person/getPlanPersonByPersonId`,
+        method: 'get',
+        params: data
+    })
+}
+
+export function editWorks(params) {
+    return request({
+        url: `/manage/plan-person/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function delWorks(id) {
+    return request({
+        url: '/manage/plan-person/remove/' + id,
+        method: 'delete'
+    })
+}
+
+export function addDevice(data) {
+    return request({
+        url: '/manage/device/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function getDevice(data) {
+    return request({
+        url: `/manage/device/getDeviceByProjectId`,
+        method: 'get',
+        params: data
+    })
+}
+
+export function editDevice(params) {
+    return request({
+        url: `/manage/device/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function delDevice(id) {
+    return request({
+        url: `/manage/device/remove/` + id,
+        method: 'delete'
+    })
+}
\ No newline at end of file
diff --git a/src/api/projectManage/evaTaskNotice.js b/src/api/projectManage/evaTaskNotice.js
new file mode 100644
index 0000000..8880227
--- /dev/null
+++ b/src/api/projectManage/evaTaskNotice.js
@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function addRecord(data) {
+    return request({
+        url: '/manage/estimate-task/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editRecord(params) {
+    return request({
+        url: `/manage/estimate-task/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getDetail(data) {
+    return request({
+        url: '/manage/estimate-task/getTaskByProjectId',
+        method: 'get',
+        params: data
+    })
+}
diff --git a/src/api/projectManage/innerReview.js b/src/api/projectManage/innerReview.js
new file mode 100644
index 0000000..b1de8b7
--- /dev/null
+++ b/src/api/projectManage/innerReview.js
@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function addInnerReview(data) {
+    return request({
+        url: '/manage/ass-audit/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editInnerReview(params){
+    return request({
+        url: `/manage/ass-audit/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getInnerReviewDetail(data){
+    return request({
+        url: '/manage/ass-audit/getAuditByProjectId',
+        method: 'get',
+        params: data
+    })
+}
\ No newline at end of file
diff --git a/src/api/projectManage/processCtrl.js b/src/api/projectManage/processCtrl.js
new file mode 100644
index 0000000..9c82701
--- /dev/null
+++ b/src/api/projectManage/processCtrl.js
@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function addProcessCtrl(data) {
+    return request({
+        url: '/manage/process-audit/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editProcessCtrl(params){
+    return request({
+        url: `/manage/process-audit/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getProcessCtrlDetail(data){
+    return request({
+        url: '/manage/process-audit/getProcessByProjectId',
+        method: 'get',
+        params: data
+    })
+}
\ No newline at end of file
diff --git a/src/api/projectManage/rateConclude.js b/src/api/projectManage/rateConclude.js
new file mode 100644
index 0000000..efacd25
--- /dev/null
+++ b/src/api/projectManage/rateConclude.js
@@ -0,0 +1,25 @@
+import request from '@/utils/request'
+
+export function addRateConclude(data) {
+    return request({
+        url: '/manage/conclusion/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editRateConclude(params){
+    return request({
+        url: `/manage/conclusion/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getRateConcludeDetail(data){
+    return request({
+        url: '/manage/conclusion/getConclusionByProjectId',
+        method: 'get',
+        params: data
+    })
+}
\ No newline at end of file
diff --git a/src/api/projectManage/siteCheckRcd.js b/src/api/projectManage/siteCheckRcd.js
new file mode 100644
index 0000000..7f02b73
--- /dev/null
+++ b/src/api/projectManage/siteCheckRcd.js
@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+export function addSiteCheck(data) {
+    return request({
+        url: '/manage/investigation/add',
+        method: 'post',
+        data: data
+    })
+}
+
+export function editSiteCheck(params) {
+    return request({
+        url: `/manage/investigation/edit`,
+        method: 'put',
+        data: params
+    })
+}
+
+export function getSiteCheckDetail(data) {
+    return request({
+        url: '/manage/investigation/getInvestigationByProjectId',
+        method: 'get',
+        params: data
+    })
+}
+
+export function getFiles(data) {
+    return request({
+        url: `/manage/accessory-file/getAccessoryFileByProjectId`,
+        method: 'get',
+        params: data
+    })
+}
+
+export function delFile(id) {
+    return request({
+        url: `/manage/accessory-file/remove/` + id,
+        method: 'delete'
+    })
+}
+
+export function getReviewDone(data) {
+    return request({
+        url: `/manage/review-record/doReview`,
+        method: 'post',
+        data: data
+    })
+}
\ No newline at end of file
diff --git a/src/views/safetyReview/projectManage/components/contractManage.vue b/src/views/safetyReview/projectManage/components/contractManage.vue
index 55d76a6..54d456c 100644
--- a/src/views/safetyReview/projectManage/components/contractManage.vue
+++ b/src/views/safetyReview/projectManage/components/contractManage.vue
@@ -54,6 +54,7 @@
 const state = reactive({
   formData: {
     id: '',
+    projectId: null,
     contractSignDate: '',
     contractMoney: '',
     contractIntroduction: ''
diff --git a/src/views/safetyReview/projectManage/components/deviceDialog.vue b/src/views/safetyReview/projectManage/components/deviceDialog.vue
new file mode 100644
index 0000000..b399a7d
--- /dev/null
+++ b/src/views/safetyReview/projectManage/components/deviceDialog.vue
@@ -0,0 +1,140 @@
+<template>
+    <div class="notice">
+        <el-dialog
+            v-model="dialogVisible"
+            :title="title"
+            width="500px"
+            :before-close="handleClose"
+        >
+            <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-position="top">
+                <el-form-item label="设备名称:" prop="deviceName">
+                  <el-input v-model="state.form.deviceName" maxlength="30" show-word-limit type="text" size="large"/>
+                </el-form-item>
+                <el-form-item label="开始时间:" prop="startDate">
+                  <el-date-picker
+                      style="width: 100%"
+                      v-model="state.form.startDate"
+                      type="date"
+                      value-format="YYYY-MM-DD 00:00:00"
+                      placeholder="选择日期"
+                      size="large"
+                  />
+                </el-form-item>
+                <el-form-item label="结束时间:" prop="endDate">
+                  <el-date-picker
+                      style="width: 100%"
+                      v-model="state.form.endDate"
+                      type="date"
+                      value-format="YYYY-MM-DD 00:00:00"
+                      placeholder="选择日期"
+                      size="large"
+                  />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                    <span class="dialog-footer">
+                        <el-button @click="handleClose" size="default">取 消</el-button>
+                        <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
+                    </span>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+<script setup>
+import {defineProps, nextTick, reactive, ref, toRefs} from 'vue'
+import {ElMessage} from "element-plus";
+import {addDevice, editDevice} from "@/api/projectManage/evaPlan"
+const dialogVisible = ref(false)
+const title = ref("")
+const busRef = ref()
+const props = defineProps(['workList','typeList'])
+const emit = defineEmits(["getList"])
+const state = reactive({
+    form: {
+      id: null,
+      projectId: null,
+      deviceName: '',
+      startDate: '',
+      endDate: ''
+    },
+    formRules:{
+      deviceName: [{ required: true, message: '请填写设备名称', trigger: 'blur' }],
+      startDate: [{ required: true, message: '请选择开始日期', trigger: 'blur' }],
+      endDate: [{ required: true, message: '请选择结束日期', trigger: 'blur' }]
+    }
+})
+
+const openDialog = async (type, value,projectId) => {
+    title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看'
+    state.form.projectId = projectId
+    if(type == 'add'){
+      nextTick(()=>{
+        busRef.value.resetFields()
+      })
+    }else if(type === 'edit') {
+      state.form = JSON.parse(JSON.stringify(value))
+    }
+    dialogVisible.value = true;
+}
+
+const onSubmit = async () => {
+    const valid = await busRef.value.validate();
+    if(valid){
+        if(title.value === '新增'){
+            const {id,...data} = state.form
+            const res = await addDevice(data)
+            if(res.code === 200){
+                ElMessage({
+                    type: 'success',
+                    message: '新增成功'
+                });
+            }else{
+                ElMessage.warning(res.message)
+            }
+            emit("getList")
+            busRef.value.clearValidate();
+            busRef.value.resetFields()
+            dialogVisible.value = false;
+        }else if(title.value === '编辑'){
+            const {...data} = state.form
+            const res = await editDevice(data)
+            if(res.code === 200){
+                ElMessage({
+                    type: 'success',
+                    message: '修改成功'
+                });
+            }else{
+                ElMessage.warning(res.message)
+            }
+            emit("getList")
+            busRef.value.clearValidate();
+            busRef.value.resetFields()
+            dialogVisible.value = false;
+        }
+    }
+}
+
+const handleClose = () => {
+    busRef.value.clearValidate();
+    busRef.value.resetFields()
+    dialogVisible.value = false;
+}
+
+defineExpose({
+    openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+    :deep(.el-form .el-form-item__label) {
+        font-size: 15px;
+    }
+    .file {
+        display: flex;
+        flex-direction: column;
+        align-items: flex-start;
+    }
+}
+</style>
diff --git a/src/views/safetyReview/projectManage/components/employNoticeRecord.vue b/src/views/safetyReview/projectManage/components/employNoticeRecord.vue
index 7fa0b69..e3a816d 100644
--- a/src/views/safetyReview/projectManage/components/employNoticeRecord.vue
+++ b/src/views/safetyReview/projectManage/components/employNoticeRecord.vue
@@ -29,29 +29,6 @@
           </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="(response, file, fileList) => handleAvatarSuccess(response, file, fileList, 1)"-->
-<!--                :on-preview="handlePictureCardPreview"-->
-<!--                v-model:file-list="state.socialList"-->
-<!--                list-type="picture-card"-->
-<!--                :before-upload="picSize"-->
-<!--                :on-remove="(file, file_list)=>{handleRemove(file, file_list, 1)}"-->
-<!--            >-->
-<!--              <el-icon><Plus /></el-icon>-->
-<!--              <template #tip>-->
-<!--                <div class="el-upload__tip">上传jpg/png图片尺寸小于5M</div>-->
-<!--              </template>-->
-<!--            </el-upload>-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
-<!--      </el-row>-->
       <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>
@@ -60,31 +37,21 @@
       <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" disabled>
-              <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="承担工作" 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" disabled>
-              <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" readonly/>
-          </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-radio-group v-model="scope.row.informed" size="large">
+            <el-radio-group v-model="scope.row.informed" size="large" @change="(value)=>changePerson(value,scope.row)">
               <el-radio :label="1" size="large">是</el-radio>
               <el-radio :label="0" size="large">否</el-radio>
             </el-radio-group>
@@ -96,25 +63,29 @@
 </template>
 <script setup>
 
-import {defineEmits, onMounted, reactive, ref} from "vue"
+import {defineEmits, defineProps, onMounted, reactive, ref, watchEffect} from "vue"
 import {ElMessage} from "element-plus"
 import {Search} from '@element-plus/icons-vue'
-import {addRisk, editRisk, getRiskDetail} from "@/api/projectManage/riskAnalysis"
+import {addWorkRecord, editWorkRecord, getWorkDetail} from "@/api/projectManage/employNoticeRcd"
+import {getWorks, editWorks} from "@/api/projectManage/evaPlan"
 import Cookies from "js-cookie"
+const props = defineProps(['projectId'])
 const emit = defineEmits(["getNextStatus"])
 
 const state = reactive({
   formData: {
+    id: null,
     projectId: null,
     timeRange: [],
     serviceStartDate: '',
     serviceEndDate: '',
     investigationPlanDate: ''
   },
+  projectId: null,
   planPersons: [],
   rules: {
     timeRange: [{required: true, message: '请选择技术服务期限', trigger: 'blur'}],
-    investigationPlanDate: [{required: true, message: '请选择计划现场勘验时间', trigger: 'blur'}],
+    investigationPlanDate: [{required: true, message: '请选择计划现场勘验时间', trigger: 'blur'}]
   }
 })
 
@@ -125,16 +96,19 @@
   if(userInfo.identity === 0){
     isAmin.value = true;
   }
+  // getWorksList(props.projectId)
 });
 
+
 const riskOpen = async (type,val) => {
-  console.log("type",type,val)
+  state.formData.projectId = val
+  state.projectId = val
+  await getWorksList(val)
   if(type === 'detail' || type === 'edit' ){
-    const res = await getRiskDetail({projectId: val});
+    const res = await getWorkDetail({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))
+      state.formData.timeRange = [state.formData.serviceStartDate,state.formData.serviceEndDate]
     }else {
       ElMessage.warning(res.message)
     }
@@ -149,19 +123,19 @@
       state.formData.serviceStartDate = state.formData.timeRange[0]
       state.formData.serviceEndDate = state.formData.timeRange[1]
       if(type === 'add'){
-        const {projectId,timeRange, ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await addRisk(data);
+        const {timeRange,id,...data} = JSON.parse(JSON.stringify(state.formData))
+        const res = await addWorkRecord(data)
         if (res.code == 200) {
           ElMessage.success('保存成功')
           formRef.value.clearValidate();
           emit('getNextStatus', res.data);
-
         } else {
           ElMessage.warning(res.message)
         }
+
       }else if(type === 'clickEdit'){
         const {timeRange, ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await editRisk(data);
+        const res = await editWorkRecord(data);
         if (res.code == 200) {
           ElMessage.success('变更成功')
           formRef.value.clearValidate();
@@ -174,6 +148,38 @@
   }
 }
 
+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 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 changePerson = async (value,row)=>{
+  const params = {
+    id: row.id,
+    projectId: row.projectId,
+    informed: value
+  }
+  const res = await editWorks(params)
+  if(res.code === 200){
+    console.log(res.message)
+  }else{
+    ElMessage.warning(res.message)
+  }
+  await getWorksList(props.projectId)
+}
+
 defineExpose({
   riskOpen
 });
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({
diff --git a/src/views/safetyReview/projectManage/components/evaluateTaskNotice.vue b/src/views/safetyReview/projectManage/components/evaluateTaskNotice.vue
index d468496..df6b87e 100644
--- a/src/views/safetyReview/projectManage/components/evaluateTaskNotice.vue
+++ b/src/views/safetyReview/projectManage/components/evaluateTaskNotice.vue
@@ -8,6 +8,7 @@
                 v-model="state.formData.leader.name"
                 size="large"
                 placeholder="请选择项目负责人"
+                @focus="openExperts('项目负责人')"
             >
               <template #append>
                 <el-button :icon="Search" @click="openExperts('项目负责人')"/>
@@ -53,6 +54,7 @@
                 v-model="state.formData.transmitPerson"
                 size="large"
                 placeholder="请选择任务下达人"
+                @focus="openExperts('任务下达人')"
             >
               <template #append>
                 <el-button :icon="Search" @click="openExperts('任务下达人')"/>
@@ -82,7 +84,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 {addRecord, editRecord, getDetail} from "@/api/projectManage/evaTaskNotice";
 import Cookies from "js-cookie"
 import ExpertsList from "./expertsList";
 const emit = defineEmits(["getNextStatus"]);
@@ -90,9 +92,11 @@
 const state = reactive({
   formData: {
     id: '',
+    projectId: null,
     leader: {
       name: ''
     },
+    fax: '',
     leaderId: null,
     linkMan: '',
     transmitPerson: '',
@@ -121,8 +125,9 @@
 })
 
 const riskOpen = async (type,val) => {
+  state.formData.projectId = 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;
     }else {
@@ -138,18 +143,18 @@
       }
       if(type === 'add'){
         const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await addRisk(data);
+        const res = await addRecord(data);
         if (res.code == 200) {
           ElMessage.success('保存成功')
           formRef.value.clearValidate();
-          emit('getNextStatus', res.data);
+          emit('getNextStatus', state.formData.projectId);
 
         } else {
           ElMessage.warning(res.message)
         }
-      }else if(type === 'clickEdit'){
+      }else{
         const { ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await editRisk(data);
+        const res = await editRecord(data);
         if (res.code == 200) {
           ElMessage.success('变更成功')
           formRef.value.clearValidate();
diff --git a/src/views/safetyReview/projectManage/components/innerReview.vue b/src/views/safetyReview/projectManage/components/innerReview.vue
index fab78be..ba24145 100644
--- a/src/views/safetyReview/projectManage/components/innerReview.vue
+++ b/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
 }
 
 // 图片上传
diff --git a/src/views/safetyReview/projectManage/components/riskAnalysis.vue b/src/views/safetyReview/projectManage/components/riskAnalysis.vue
index ac08f96..d05904d 100644
--- a/src/views/safetyReview/projectManage/components/riskAnalysis.vue
+++ b/src/views/safetyReview/projectManage/components/riskAnalysis.vue
@@ -365,7 +365,11 @@
     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];
+      if(res.data.project.province == '北京市' || res.data.project.province == '天津市' || res.data.project.province == '上海市' || res.data.project.province == '重庆市' || res.data.project.province == '香港特别行政区' || res.data.project.province == '澳门特别行政区'){
+        state.formData.project.area = [res.data.project.province]
+      }else{
+        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;
@@ -387,13 +391,15 @@
         const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
         delete data.project.area;
         delete data.project.id;
+        if(data.project.province == '北京市' || data.project.province == '天津市' || data.project.province == '上海市' || data.project.province == '重庆市' || data.project.province == '香港特别行政区' || data.project.province == '澳门特别行政区'){
+          data.project.city = data.project.province
+        }
         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) {
           ElMessage.success('保存成功')
@@ -407,6 +413,9 @@
         const { ...data} = JSON.parse(JSON.stringify(state.formData))
         data.id = val;
         data.project.id = val;
+        if(data.project.province == '北京市' || data.project.province == '天津市' || data.project.province == '上海市' || data.project.province == '重庆市' || data.project.province == '香港特别行政区' || data.project.province == '澳门特别行政区'){
+          data.project.city = data.project.province
+        }
         delete data.project.area;
         data.isInBusiness = state.tableData[0].status === 1
         data.isSatisfyNeed = state.tableData[1].status === 1
diff --git a/src/views/safetyReview/projectManage/components/signConfirm.vue b/src/views/safetyReview/projectManage/components/signConfirm.vue
index 2d4c53a..5c66699 100644
--- a/src/views/safetyReview/projectManage/components/signConfirm.vue
+++ b/src/views/safetyReview/projectManage/components/signConfirm.vue
@@ -96,6 +96,7 @@
 })
 
 const riskOpen = async (type,val) => {
+  state.formData.projectId = val
   if(type === 'detail' || type === 'edit' ){
     const res = await getRiskDetail({projectId: val});
     if(res.code == 200){
@@ -117,8 +118,7 @@
         if (res.code == 200) {
           ElMessage.success('保存成功')
           formRef.value.clearValidate();
-          emit('getNextStatus', res.data);
-
+          emit('getNextStatus', res.data)
         } else {
           ElMessage.warning(res.message)
         }
diff --git a/src/views/safetyReview/projectManage/components/siteCheckRcd.vue b/src/views/safetyReview/projectManage/components/siteCheckRcd.vue
index 1230979..514bd3e 100644
--- a/src/views/safetyReview/projectManage/components/siteCheckRcd.vue
+++ b/src/views/safetyReview/projectManage/components/siteCheckRcd.vue
@@ -5,17 +5,17 @@
         <el-col :span="18">
           <el-alert title="说明:现场勘验记录由项目组成员通过APP端进行信息填报,组长完成现场勘验并在APP端提交后,电脑可对资料信息完善并进行下一步操作。" type="warning" />
         </el-col>
-        <el-col :span="6" style="display:flex;justify-content: right">
-          <el-button type="primary">全部查看</el-button>
-          <el-button type="primary">全部下载</el-button>
-        </el-col>
+<!--        <el-col :span="6" style="display:flex;justify-content: right">-->
+<!--          <el-button type="primary">全部查看</el-button>-->
+<!--          <el-button type="primary">全部下载</el-button>-->
+<!--        </el-col>-->
       </el-row>
       <el-row :gutter="30">
         <el-col :span="6">
           <el-form-item prop="investigationDate" label="现场勘验时间">
             <el-date-picker
                 style="width: 100%"
-                v-model="state.formData.investigationPlanDate"
+                v-model="state.formData.investigationDate"
                 type="date"
                 value-format="YYYY-MM-DD 00:00:00"
                 placeholder="选择日期"
@@ -24,7 +24,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item prop="investigationDate" label="现场勘验位置">
+          <el-form-item prop="location" label="现场勘验位置">
             <el-input
                 v-model="state.formData.location"
                 size="large"
@@ -39,51 +39,115 @@
         <el-col :span="6">
           <el-form-item prop="isSafetyCheck" label="编制现场安全检查表">
             <el-radio-group v-model="state.formData.isSafetyCheck" size="large">
-              <el-radio :label="true" size="large">是</el-radio>
-              <el-radio :label="false" size="large">否</el-radio>
+              <el-radio :label="1" size="large">是</el-radio>
+              <el-radio :label="0" size="large">否</el-radio>
             </el-radio-group>
           </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-col :span="24" v-if="state.formData.isSafetyCheck == 1">
+          <el-form-item label="安全检查表上传" prop="assAccessoryFiles">
+            <el-upload accept="image/*,.pdf,.doc,.docx,.xlsx,.xls" :action="state.uploadUrl" :data="{moduleType: 5,projectId: props.projectId}" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,5)" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='1' v-model:file-list="state.safetyList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,5)" :before-remove="beforeRemove">
+              <el-button type="primary">附件上传</el-button>
+              <template #tip>
+                <div class="el-upload__tip">上传文件尺寸小于5M,最多可上传1份</div>
+              </template>
+            </el-upload>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24" v-if="state.formData.isSafetyCheck == 0">
+          <el-form-item prop="recordData" label="现场勘验记录">
+            <el-input
+                v-model="state.formData.recordData"
+                :autosize="{ minRows: 6 }"
+                maxlength="200"
+                show-word-limit
+                type="textarea">
+            </el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row style="border: 1px dashed #999;border-radius: 4px;padding: 10px;margin-top: 20px">
+        <el-col :span="24">
+          <el-form-item label="主要装置前合影照片" prop="deviceImages">
+            <el-upload accept="image/*" :action="state.uploadUrl" :data="{moduleType: 1,projectId: props.projectId}" list-type="picture-card" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,1)" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='10' v-model:file-list="state.beforeDeviceList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,1)" :before-remove="beforeRemove">
               <el-icon><Plus /></el-icon>
               <template #tip>
-                <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
+                <div class="el-upload__tip">上传照片尺寸小于5M,最多可上传10张</div>
               </template>
             </el-upload>
           </el-form-item>
         </el-col>
       </el-row>
-      <el-form-item prop="recordData" label="现场勘验记录">
-        <el-input
-            v-model="state.formData.recordData"
-            :autosize="{ minRows: 6 }"
-            maxlength="200"
-            show-word-limit
-            type="textarea">
-        </el-input>
-      </el-form-item>
-      <el-form-item label="企业陪同照片">
-
-      </el-form-item>
+      <el-row style="border: 1px dashed #999;border-radius: 4px;padding: 10px;margin-top: 20px">
+        <el-col :span="24">
+          <el-form-item label="现场勘验照片" prop="investingationImages">
+            <el-upload accept="image/*" :action="state.uploadUrl" :data="{moduleType: 2,projectId: props.projectId}" list-type="picture-card" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,2)" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='10' v-model:file-list="state.siteCheckList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,2)" :before-remove="beforeRemove">
+              <el-icon><Plus /></el-icon>
+              <template #tip>
+                <div class="el-upload__tip">上传照片尺寸小于5M,最多可上传10张</div>
+              </template>
+            </el-upload>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row style="border: 1px dashed #999;border-radius: 4px;padding: 10px;margin-top: 20px;margin-bottom: 20px">
+        <el-col :span="24">
+          <el-form-item label="企业陪同人员照片" prop="ccompanyImages">
+            <el-upload accept="image/*" :action="state.uploadUrl" :data="{moduleType: 3,projectId: props.projectId}" list-type="picture-card" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,3)" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='10' v-model:file-list="state.companyList" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,3)" :before-remove="beforeRemove">
+              <el-icon><Plus /></el-icon>
+              <template #tip>
+                <div class="el-upload__tip">上传照片尺寸小于5M,最多可上传10张</div>
+              </template>
+            </el-upload>
+          </el-form-item>
+        </el-col>
+      </el-row>
     </el-form>
+    <el-dialog v-model="state.imgDialog">
+      <img style="width: 100%" :src="state.imgUrl" alt="Preview Image" />
+    </el-dialog>
     <map-location ref="mapLocationRef" @giveLatLng="achieveLatLng"></map-location>
   </div>
 </template>
 <script setup>
 
 import {defineEmits, onMounted, reactive, ref} from "vue"
-import {ElMessage} from "element-plus"
+import {ElMessage, ElMessageBox} from "element-plus"
 import {Search} from '@element-plus/icons-vue'
-import {addRisk, editRisk, getRiskDetail} from "@/api/projectManage/riskAnalysis"
-import {delPic} from "@/api/login"
+import {addSiteCheck,editSiteCheck,getSiteCheckDetail, delFile, getFiles} from "@/api/projectManage/siteCheckRcd";
 import { getToken } from "@/utils/auth";
 import Cookies from "js-cookie"
+const props = defineProps(['projectId'])
 const emit = defineEmits(["getNextStatus"])
 import MapLocation from "./mapLocation.vue"
+
+let checkSafetyFiles = (rule, value, callback)=>{
+  if(state.safetyList.length === 0){
+    callback(new Error('请上传现场安全检查表'))
+  }else{
+    callback()
+  }
+}
+
+let checkInvestFiles = (rule, value, callback)=>{
+  if(state.siteCheckList.length === 0){
+    callback(new Error('请上传现场勘验照片'))
+  }else{
+    callback()
+  }
+}
+
+let checkCompanyFiles = (rule, value, callback)=>{
+  if(state.companyList.length === 0){
+    callback(new Error('请上传企业陪同人员照片'))
+  }else{
+    callback()
+  }
+}
+
+
 
 const state = reactive({
   formData: {
@@ -92,17 +156,34 @@
     investigationDate: '',
     location: '',
     isSafetyCheck: null,
-    recordData: ''
+    recordData: '',
+    assAccessoryFiles: [],
+    deviceImages: [],
+    investingationImages: [],
+    ccompanyImages:[]
   },
+  projectId: null,
   planPersons: [],
   rules: {
-    recordData: [{required: true, message: '请填写现场勘验记录', trigger: 'blur'}]
+    investigationDate: [{required: true, message: '请选择现场勘验时间', trigger: 'blur'}],
+    location: [{required: true, message: '请选择现场勘验位置', trigger: 'blur'}],
+    isSafetyCheck: [{required: true, message: '请选择现场勘验位置', trigger: 'blur'}],
+    recordData: [{required: true, message: '请填写现场勘验记录', trigger: 'blur'}],
+    assAccessoryFiles: [{required: true, validator: checkSafetyFiles, trigger: 'blur'}],
+    // investingationImages: [{required: true, validator: checkInvestFiles, trigger: 'blur'}],
+    // ccompanyImages: [{required: true, validator: checkCompanyFiles, trigger: 'blur'}]
   },
+  beforeDeviceList: [],
+  siteCheckList: [],
+  companyList: [],
+  safetyList: [],
   imgLimit: 1,
-  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
+  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/manage/accessory-file/uploadFile',
   header: {
-    Authorization: 'Bearer ' + getToken()
-  }
+    Authorization: getToken()
+  },
+  imgDialog: false,
+  imgUrl: ''
 })
 
 const isAmin = ref(false)
@@ -116,13 +197,48 @@
 });
 
 const riskOpen = async (type,val) => {
-  console.log("type",type,val)
+  state.formData.projectId = val
+  state.projectId = val
   if(type === 'detail' || type === 'edit' ){
-    const res = await getRiskDetail({projectId: val});
+    const res = await getSiteCheckDetail({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.beforeDeviceList = res.data.deviceImages.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+      state.siteCheckList = res.data.investingationImages.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+      state.companyList = res.data.ccompanyImages.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+      state.safetyList = res.data.assAccessoryFiles.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
     }else {
       ElMessage.warning(res.message)
     }
@@ -135,21 +251,49 @@
         return;
       }
       if(type === 'add'){
-        const {projectId, ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await addRisk(data);
+        if(state.formData.isSafetyCheck == 1){
+          state.formData.recordData = ''
+        }
+        const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
+        const res = await addSiteCheck(data);
         if (res.code == 200) {
           ElMessage.success('保存成功')
+          if(state.formData.isSafetyCheck == 0){
+            const res = await delFile(state.safetyList[0].id)
+            if(res.code == 200){
+              console.log('删除原有附件')
+              await getSafetyFiles()
+            }else{
+              ElMessage({
+                type: 'warning',
+                message: res.message
+              })
+            }
+          }
           formRef.value.clearValidate();
           emit('getNextStatus', res.data);
-
         } else {
           ElMessage.warning(res.message)
         }
       }else if(type === 'clickEdit'){
+        if(state.formData.isSafetyCheck == 1){
+          state.formData.recordData = ''
+        }
         const { ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await editRisk(data);
+        const res = await editSiteCheck(data);
         if (res.code == 200) {
           ElMessage.success('变更成功')
+          if(state.formData.isSafetyCheck == 0){
+            const res = await delFile(state.safetyList[0].id)
+            if(res.code == 200){
+              await getSafetyFiles()
+            }else{
+              ElMessage({
+                type: 'warning',
+                message: res.message
+              })
+            }
+          }
           formRef.value.clearValidate();
           // emit('getNextStatus', data.project.id);
         } else {
@@ -157,6 +301,90 @@
         }
       }
     }
+  }
+}
+
+const getBeforeFiles = async (id)=>{
+  const res = await getFiles({projectId: id ? id : props.projectId,moduleType: 1})
+  if(res.code == 200){
+    if(res.data && res.data.length>0){
+      state.beforeDeviceList = res.data.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+    }else{
+      state.beforeDeviceList=[]
+    }
+  }else {
+    ElMessage.warning(res.message)
+  }
+}
+
+const getSiteCheckFiles = async (id)=>{
+  const res = await getFiles({projectId: id ? id : props.projectId,moduleType: 2})
+  if(res.code == 200){
+    if(res.data && res.data.length>0){
+      state.siteCheckList = res.data.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+    }else{
+      state.siteCheckList = []
+    }
+  }else {
+    ElMessage.warning(res.message)
+  }
+}
+
+const getCompanyFiles = async (id)=>{
+  const res = await getFiles({projectId: id ? id : props.projectId,moduleType: 3})
+  if(res.code == 200){
+    if(res.data && res.data.length>0){
+      state.companyList = res.data.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+    }else{
+      state.companyList=[]
+    }
+  }else {
+    ElMessage.warning(res.message)
+  }
+}
+
+const getSafetyFiles = async (id)=>{
+  const res = await getFiles({projectId: id ? id : props.projectId,moduleType: 5})
+  if(res.code == 200){
+    if(res.data && res.data.length>0){
+      state.safetyList = res.data.map(i=>{
+        return {
+          name: i.fileName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+    }else{
+      state.safetyList = []
+    }
+  }else {
+    ElMessage.warning(res.message)
   }
 }
 
@@ -187,14 +415,27 @@
 };
 
 const handlePictureCardPreview = (uploadFile) => {
-  state.dialogImageUrl = uploadFile.url
-  state.dialogImg = true
+  console.log(uploadFile,'file')
+  state.imgUrl = uploadFile.url
+  state.imgDialog = true
 };
 
 
-const handleAvatarSuccess = (res, uploadFile) => {
+const handleAvatarSuccess = (res, uploadFile, type) => {
   if(res.code == 200){
-    // state.registerForm.agency.reportPath = res.data.path
+    if(type == 1){
+      getBeforeFiles()
+    }
+    if(type == 2){
+      getSiteCheckFiles()
+    }
+    if(type == 3){
+      getCompanyFiles()
+    }
+    if(type == 5){
+      console.log(res,'res')
+      getSafetyFiles()
+    }
   }else{
     ElMessage({
       type: 'warning',
@@ -203,19 +444,55 @@
   }
 }
 
-const handleRemove = async (file, uploadFiles) => {
-  const res = await delPic({path: state.registerForm.agency.reportPath})
-  if(res.code == 200){
-    ElMessage({
-      type: 'success',
-      message: '文件已删除'
-    })
-  }else{
-    ElMessage({
-      type: 'warning',
-      message: res.message
-    })
-  }
+const handleRemove = async (file, uploadFiles,type) => {
+  ElMessageBox.confirm(
+      '确定删除该附件?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then( async() => {
+        const res = await delFile(file.id)
+        if(res.code == 200){
+          ElMessage({
+            type: 'success',
+            message: '文件已删除'
+          })
+          if(type == 1){
+            await getBeforeFiles()
+          }
+          if(type == 2){
+            await getSiteCheckFiles()
+          }
+          if(type == 3){
+            await getCompanyFiles()
+          }
+          if(type == 5){
+            await getSafetyFiles()
+          }
+        }else{
+          ElMessage({
+            type: 'warning',
+            message: res.message
+          })
+        }
+      })
+      .catch(()=>{
+        if(type == 1){
+          getBeforeFiles()
+        }
+        if(type == 2){
+          getSiteCheckFiles()
+        }
+        if(type == 3){
+          getCompanyFiles()
+        }
+        if(type == 5){
+          getSafetyFiles()
+        }
+      })
 }
 
 defineExpose({
diff --git a/src/views/safetyReview/projectManage/components/techLeaderReview.vue b/src/views/safetyReview/projectManage/components/techLeaderReview.vue
index f208022..d928c0e 100644
--- a/src/views/safetyReview/projectManage/components/techLeaderReview.vue
+++ b/src/views/safetyReview/projectManage/components/techLeaderReview.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="选择日期"
@@ -15,11 +15,11 @@
           </el-form-item>
         </el-col>
         <el-col :span="6">
-          <el-form-item prop="leader.name" label="技术负责人">
+          <el-form-item prop="assessor.name" label="技术负责人">
             <el-input
-                v-model="state.formData.leader.name"
+                v-model="state.formData.assessor.name"
                 size="large"
-                placeholder="请选择内部审核员"
+                placeholder="请选择技术负责人"
             >
               <template #append>
                 <el-button :icon="Search" @click="openExperts('技术负责人')"/>
@@ -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 label="存在问题及建议">
         <el-input
-            v-model="state.formData.technology"
+            v-model="state.formData.suggestions"
             :autosize="{ minRows: 6 }"
             maxlength="500"
             show-word-limit
@@ -85,54 +85,50 @@
 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"
 import ExpertsList from "./expertsList";
-const emit = defineEmits(["getNextStatus"]);
+const emit = defineEmits(["getNextStatus"])
 
 const state = reactive({
   formData: {
     id: '',
-    leader: {
+    projectId: '',
+    auditDate:'',
+    auditType: 2,
+    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: 0},
-    {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: 1, content: '报告中所列评价依据是否得到引用和验证',key: 'isBasisQuote', status: 1},
+    {id: 2, content: '现场收集的有关资料是否齐全、有效',key: 'isData', status: 1},
+    {id: 3, content: '危险有害因素识别是否充分', key: 'isDangerFull',status: 1},
+    {id: 4, content: '报告是否有重大遗漏', key: 'isOmission',status: 1},
+    {id: 5, content: '评价方法选用是否合理', key: 'isMethodRational',status: 1},
+    {id: 6, content: '对策措施及建议是否具有针对性、合理性', key: 'isMeasureEquitable',status: 1},
+    {id: 7, content: '评价结论及格式是否正确', key: 'isConclusionRight',status: 1},
+    {id: 8, content: '已按要求修改完成', key: 'isAmendFinish',status: 1},
+    {id: 9, content: '可报过程控制负责人审核', key: 'isReportAudit',status: 1}
   ],
   imgLimit: 1,
   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()
@@ -144,10 +140,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: 2});
     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)
     }
@@ -161,7 +165,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();
@@ -172,7 +179,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();
@@ -190,8 +200,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
 }
 
 // 图片上传
@@ -210,11 +220,6 @@
     });
     return false
   }
-};
-
-const handlePictureCardPreview = (uploadFile) => {
-  state.dialogImageUrl = uploadFile.url
-  state.dialogImg = true
 };
 
 
diff --git a/src/views/safetyReview/projectManage/components/uploadReviewRcd.vue b/src/views/safetyReview/projectManage/components/uploadReviewRcd.vue
index ce8a4f0..b6ed5c3 100644
--- a/src/views/safetyReview/projectManage/components/uploadReviewRcd.vue
+++ b/src/views/safetyReview/projectManage/components/uploadReviewRcd.vue
@@ -4,10 +4,10 @@
       <el-row :gutter="30">
         <el-col :span="18">
           <el-form-item label="附件上传">
-            <el-upload accept=".pdf,.doc,.docx" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="handleAvatarSuccess" :on-exceed="showTip" :limit='state.imgLimit' v-model:file-list="state.fileList" :before-upload="picSize" :on-remove="handleRemove" :before-remove="beforeRemove">
+            <el-upload accept="image/*,.pdf,.doc,.docx" :action="state.uploadUrl" :data="{moduleType: 6,projectId: props.projectId}" :headers="state.header" method="post" :on-success="handleAvatarSuccess" :on-exceed="showTip" v-model:file-list="state.fileList" :before-upload="picSize">
               <el-button type="primary">上传评审记录</el-button>
               <template #tip>
-                <div class="el-upload__tip">支持上传pdf/word/doc/docx格式文件,尺寸小于2M,最多可上传3张</div>
+                <div class="el-upload__tip">上传文件尺寸尺寸小于2M</div>
               </template>
             </el-upload>
           </el-form-item>
@@ -15,10 +15,11 @@
       </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"/>
-        <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width" width="175">
+        <el-table-column label="原名称" prop="originName" header-align="center" :show-overflow-tooltip="true"/>
+        <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width" width="120">
           <template #default="scope">
-            <el-button link type="primary">查看</el-button>
+            <el-button link type="primary" @click="checkFile(scope.row)">查看</el-button>
+            <el-button link type="danger" @click="handleRemove(scope.row,[])">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -28,43 +29,25 @@
 <script setup>
 
 import {defineEmits, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
 import {Search} from '@element-plus/icons-vue'
-import {addRisk, editRisk, getRiskDetail} from "@/api/projectManage/riskAnalysis"
-import {delPic} from "@/api/login"
+import {delFile, getFiles, getReviewDone} from "@/api/projectManage/siteCheckRcd";
 import { getToken } from "@/utils/auth";
 import Cookies from "js-cookie"
+import axios from 'axios'
 const emit = defineEmits(["getNextStatus"]);
-
+const props = defineProps(['projectId'])
 const state = reactive({
-  formData: {
-    id: '',
-    leader: {
-      name: ''
-    },
-    leaderId: null,
-    linkMan: '',
-    transmitPerson: '',
-    transmitDate: ''
-  },
-  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'}]
-  },
+  formData: {},
+  rules: {},
   tableData: [],
-  imgLimit: 3,
-  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
+  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/manage/accessory-file/uploadFile',
   header: {
-    Authorization: 'Bearer ' + getToken()
-  }
+    Authorization: getToken()
+  },
+  fileList: []
 })
-const props = {
-  expandTrigger: 'hover',
-  value: 'name',
-  label: 'name'
-}
+
 const isAmin = ref(false)
 const formRef = ref()
 onMounted(() => {
@@ -72,16 +55,12 @@
   if(userInfo.identity === 0){
     isAmin.value = true;
   }
+  getReviewFiles(props.projectId)
 })
 
 const riskOpen = async (type,val) => {
   if(type === 'detail' || type === 'edit' ){
-    const res = await getRiskDetail({projectId: val});
-    if(res.code == 200){
-      state.formData = res.data;
-    }else {
-      ElMessage.warning(res.message)
-    }
+    await getReviewFiles
   }
   if(type === 'add' || type === 'clickEdit') {
     const valid = await formRef.value.validate();
@@ -91,28 +70,53 @@
         return;
       }
       if(type === 'add'){
-        const {id, ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await addRisk(data);
-        if (res.code == 200) {
-          ElMessage.success('保存成功')
-          formRef.value.clearValidate();
-          emit('getNextStatus', res.data);
-
-        } else {
+        const res = await getFiles({projectId: val,moduleType: 6})
+        if(res.code == 200){
+          if(res.data && res.data.length>0){
+            state.tableData = res.data
+            ElMessage.success('保存成功')
+            getReviewDone({projectId: val}).then((res)=>{
+              if(res.code == 200){
+                emit('getNextStatus', val);
+              }else{
+                ElMessage.warning(res.message)
+              }
+            })
+          }else{
+            state.tableData=[]
+            ElMessage.warning('请上传评审记录附件')
+          }
+        }else {
           ElMessage.warning(res.message)
         }
       }else if(type === 'clickEdit'){
-        const { ...data} = JSON.parse(JSON.stringify(state.formData))
-        const res = await editRisk(data);
-        if (res.code == 200) {
-          ElMessage.success('变更成功')
-          formRef.value.clearValidate();
-          // emit('getNextStatus', data.project.id);
-        } else {
+        const res = await getFiles({projectId: val,moduleType: 6})
+        if(res.code == 200){
+          if(res.data && res.data.length>0){
+            state.tableData = res.data
+            ElMessage.success('变更成功')
+          }else{
+            state.tableData=[]
+            ElMessage.warning('请上传评审记录附件')
+          }
+        }else {
           ElMessage.warning(res.message)
         }
       }
     }
+  }
+}
+
+const getReviewFiles = async (id)=>{
+  const res = await getFiles({projectId: id ? id : props.projectId,moduleType: 6})
+  if(res.code == 200){
+    if(res.data && res.data.length>0){
+      state.tableData = res.data
+    }else{
+      state.tableData=[]
+    }
+  }else {
+    ElMessage.warning(res.message)
   }
 }
 
@@ -125,18 +129,25 @@
 }
 
 const picSize = async (rawFile) => {
-  if(rawFile.size / 1024 / 1024 > 2){
+  if(rawFile.size / 1024 / 1024 > 5){
     ElMessage({
       type: 'warning',
-      message: '文件大小不能超过2M'
+      message: '文件大小不能超过5M'
     });
     return false
   }
 };
 
-const handleAvatarSuccess = (res, uploadFile) => {
+const handlePictureCardPreview = (uploadFile) => {
+  console.log(uploadFile,'file')
+  state.imgUrl = uploadFile.url
+  state.imgDialog = true
+};
+
+
+const handleAvatarSuccess = (res, uploadFile, type) => {
   if(res.code == 200){
-    // state.registerForm.agency.reportPath = res.data.path
+    getReviewFiles()
   }else{
     ElMessage({
       type: 'warning',
@@ -146,18 +157,49 @@
 }
 
 const handleRemove = async (file, uploadFiles) => {
-  const res = await delPic({path: state.registerForm.agency.reportPath})
-  if(res.code == 200){
-    ElMessage({
-      type: 'success',
-      message: '文件已删除'
-    })
-  }else{
-    ElMessage({
-      type: 'warning',
-      message: res.message
-    })
-  }
+  ElMessageBox.confirm(
+      '确定删除该附件?',
+      '提示',
+      {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+      .then( async() => {
+        const res = await delFile(file.id)
+        if(res.code == 200){
+          ElMessage({
+            type: 'success',
+            message: '文件已删除'
+          })
+          await getReviewFiles()
+        }else{
+          ElMessage({
+            type: 'warning',
+            message: res.message
+          })
+        }
+      })
+      .catch(()=>{
+        getReviewFiles()
+      })
+}
+
+const checkFile = async (file)=>{
+  axios.get(import.meta.env.VITE_APP_BASE_API +'/' + file.path,{headers:{'Content-Type': 'application/json','Authorization': `${getToken()}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{
+    if (res) {
+      const link = document.createElement('a')
+      let blob = new Blob([res.data],{type: res.data.type})
+      link.style.display = "none";
+      link.href = URL.createObjectURL(blob); // 创建URL
+      window.open(link.href)
+    } else {
+      ElMessage({
+        type: 'warning',
+        message: '文件读取失败'
+      });
+    }
+  })
 }
 
 defineExpose({
diff --git a/src/views/safetyReview/projectManage/components/worksDialog.vue b/src/views/safetyReview/projectManage/components/worksDialog.vue
new file mode 100644
index 0000000..0ec4dc4
--- /dev/null
+++ b/src/views/safetyReview/projectManage/components/worksDialog.vue
@@ -0,0 +1,205 @@
+<template>
+    <div class="notice">
+        <el-dialog
+            v-model="dialogVisible"
+            :title="title"
+            width="500px"
+            :before-close="handleClose"
+        >
+            <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-position="top">
+                <el-form-item label="评价组成员:" prop="person.name">
+                  <el-input
+                      v-model="state.form.person.name"
+                      size="large"
+                      placeholder="请选择评价组成员"
+                      @focus="openExperts('评价组成员')"
+                  >
+                    <template #append>
+                      <el-button :icon="Search" @click="openExperts('评价组成员')"/>
+                    </template>
+                  </el-input>
+                </el-form-item>
+                <el-form-item label="工作类型:" prop="jobType">
+                  <el-select v-model="state.form.jobType" placeholder="工作类型" style="width: 100%" size="large">
+                    <el-option v-for="(item,index) in props.typeList" :key="index" :label="item.label" :value="item.value"/>
+                  </el-select>
+                </el-form-item>
+<!--                <el-form-item label="专业能力:" prop="person.major">-->
+<!--                  <el-select v-model="state.form.person.majorName" placeholder="专业能力" style="width: 100%" size="large" @change="getCerNo">-->
+<!--                    <el-option v-for="(item,index) in state.form.person.majorNames" :key="index" :label="item" :value="item"/>-->
+<!--                  </el-select>-->
+<!--                </el-form-item>-->
+<!--                <el-form-item label="资格证书:" prop="person.certificateNo">-->
+<!--                  <el-input-->
+<!--                      v-model="state.form.person.certificateNo"-->
+<!--                      size="large"-->
+<!--                      readonly-->
+<!--                  />-->
+<!--                </el-form-item>-->
+              <el-form-item label="承担工作:" prop="work">
+                <el-select v-model="state.form.work" multiple placeholder="承担工作" style="width: 100%" size="large">
+                  <el-option v-for="item in props.workList" :key="item.value" :label="item.label" :value="item.value"/>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="承诺后期前往现场勘验:" prop="laterPromise">
+                <el-radio-group v-model="state.form.laterPromise" size="large">
+                  <el-radio :label="1" size="large">是</el-radio>
+                  <el-radio :label="0" size="large">否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <el-form-item label="未到现场勘验原因:">
+                <el-input v-model="state.form.reason" maxlength="30" show-word-limit type="text" size="large"/>
+              </el-form-item>
+            </el-form>
+            <template #footer>
+                    <span class="dialog-footer">
+                        <el-button @click="handleClose" size="default">取 消</el-button>
+                        <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
+                    </span>
+            </template>
+          <experts-list ref="expertsListRef" @getName="getSelected"></experts-list>
+        </el-dialog>
+    </div>
+</template>
+<script setup>
+import {defineProps, nextTick, reactive, ref, toRefs} from 'vue'
+import {ElMessage} from "element-plus";
+import {Search} from '@element-plus/icons-vue'
+import {addWorks, editWorks} from "@/api/projectManage/evaPlan"
+import ExpertsList from "./expertsList"
+
+const dialogVisible = ref(false);
+const title = ref("");
+const busRef = ref();
+const expertsListRef = ref()
+const props = defineProps(['workList','typeList'])
+const emit = defineEmits(["getList"]);
+const state = reactive({
+    form: {
+      id: null,
+      person: {
+        name: '',
+        // major: {},
+        // certificateNo: '',
+        // certs: '',
+        // majorName: '',
+        // majorNames: [],
+        // ids: []
+      },
+      personId: null,
+      jobType: null,
+      projectId: null,
+      informed: 0,
+      work: [],
+      laterPromise: 0,
+      reason: ''
+    },
+    formRules:{
+        'person.name': [{ required: true, message: '请选择评价组成员', trigger: 'change' }],
+        'person.major': [{ required: true, message: '请选择专业能力', trigger: 'blur' }],
+        work: [{ required: true, message: '请选择承担工作', trigger: 'blur' }],
+        jobType: [{ required: true, message: '请选择工作类型', trigger: 'blur' }]
+    },
+
+})
+
+const openDialog = async (type, value,projectId) => {
+    title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看'
+    state.form.projectId = projectId
+    if(type == 'add'){
+      nextTick(()=>{
+        busRef.value.resetFields()
+      })
+    }else if(type === 'edit') {
+      state.form = JSON.parse(JSON.stringify(value))
+      state.form.work = value.work.split(',')
+      state.form.laterPromise = value.laterPromise?1:0
+    }
+    dialogVisible.value = true;
+}
+
+const openExperts = (type) =>{
+  expertsListRef.value.openDialog(type)
+}
+
+const getSelected = (type,obj)=>{
+    state.form.person.name = obj.name
+    state.form.personId = obj.id
+    // state.form.person.certs = obj.certificateNo
+    // state.form.person.majorNames = obj.majorNames
+    // state.form.person.ids = obj.major.split(',')
+}
+
+// const getCerNo = () =>{
+//   const i = state.form.person.majorNames.indexOf(state.form.person.majorName)
+//   const obj = JSON.parse(state.form.person.certs)
+//   state.form.person.certificateNo = Object.values(obj)[i]
+//   state.form.person.major[state.form.person.ids[i]] = state.form.person.certificateNo
+// }
+
+const onSubmit = async () => {
+    const valid = await busRef.value.validate();
+    if(valid){
+        if(title.value === '新增'){
+            const {id,work,...data} = state.form
+            data['work'] =  state.form.work.join(',')
+            // const {name,major,...rest} = state.form.person
+            // data.person = { name,major }
+            // data.person.major =  JSON.stringify(state.form.person.major)
+            const res = await addWorks(data)
+            if(res.code === 200){
+                ElMessage({
+                    type: 'success',
+                    message: '新增成功'
+                });
+            }else{
+                ElMessage.warning(res.message)
+            }
+            emit("getList")
+            busRef.value.clearValidate();
+            busRef.value.resetFields()
+            dialogVisible.value = false;
+        }else if(title.value === '编辑'){
+            const {...data} = state.form
+            data['work'] =  state.form.work.join(',')
+            const res = await editWorks(data)
+            if(res.code === 200){
+                ElMessage({
+                    type: 'success',
+                    message: '修改成功'
+                });
+            }else{
+                ElMessage.warning(res.message)
+            }
+            emit("getList")
+            busRef.value.clearValidate();
+            busRef.value.resetFields()
+            dialogVisible.value = false;
+        }
+    }
+}
+
+const handleClose = () => {
+    busRef.value.clearValidate();
+    busRef.value.resetFields()
+    dialogVisible.value = false;
+}
+
+defineExpose({
+    openDialog
+});
+
+</script>
+
+<style scoped lang="scss">
+.notice{
+    :deep(.el-form .el-form-item__label) {
+        font-size: 15px;
+    }
+    .file {
+        display: flex;
+        flex-direction: column;
+        align-items: flex-start;
+    }
+}
+</style>
diff --git a/src/views/safetyReview/projectManage/process.vue b/src/views/safetyReview/projectManage/process.vue
index 3cba04f..9f2aa33 100644
--- a/src/views/safetyReview/projectManage/process.vue
+++ b/src/views/safetyReview/projectManage/process.vue
@@ -41,14 +41,14 @@
             <rickAnalysis ref="riskRef" v-if="selectedObj.id === 1" @getNextStatus="getNextStatus"></rickAnalysis>
             <contract-manage ref="contractMngRef" v-if="selectedObj.id === 2" @getNextStatus="getNextStatus"></contract-manage>
             <evaluate-task-notice ref="evaluteRef" v-if="selectedObj.id === 3" @getNextStatus="getNextStatus"></evaluate-task-notice>
-            <evaluate-plan ref="evalPlanRef" v-if="selectedObj.id === 4" @getNextStatus="getNextStatus"></evaluate-plan>
-            <employ-notice-record ref="employNoticeRcdRef" v-if="selectedObj.id === 5" @getNextStatus="getNextStatus"></employ-notice-record>
-            <site-check-rcd ref="siteCheckRcdRef" v-if="selectedObj.id === 6" @getNextStatus="getNextStatus"></site-check-rcd>
+            <evaluate-plan ref="evalPlanRef" v-if="selectedObj.id === 4" @getNextStatus="getNextStatus" :projectId="projectId"></evaluate-plan>
+            <employ-notice-record ref="employNoticeRcdRef" v-if="selectedObj.id === 5" @getNextStatus="getNextStatus" :projectId="projectId"></employ-notice-record>
+            <site-check-rcd ref="siteCheckRcdRef" v-if="selectedObj.id === 6" @getNextStatus="getNextStatus" :projectId="projectId"></site-check-rcd>
             <inner-review ref="innerReviewRef" v-if="selectedObj.id === 7" @getNextStatus="getNextStatus"></inner-review>
             <tech-leader-review ref="techReviewRef" v-if="selectedObj.id === 8" @getNextStatus="getNextStatus"></tech-leader-review>
-            <upload-review-rcd ref="uploadReviewRef" v-if="selectedObj.id === 9" @getNextStatus="getNextStatus"></upload-review-rcd>
-            <rate-conclusion ref="rateConRef" v-if="selectedObj.id === 10" @getNextStatus="getNextStatus"></rate-conclusion>
-            <process-ctrl-review ref="proCtrlRef" v-if="selectedObj.id === 11" @getNextStatus="getNextStatus"></process-ctrl-review>
+            <upload-review-rcd ref="uploadReviewRef" v-if="selectedObj.id === 9" @getNextStatus="getNextStatus" :projectId="projectId"></upload-review-rcd>
+            <rate-conclusion ref="rateConRef" v-if="selectedObj.id === 10" @getNextStatus="getNextStatus" :projectId="projectId"></rate-conclusion>
+            <process-ctrl-review ref="proCtrlRef" v-if="selectedObj.id === 11" @getNextStatus="getNextStatus" :projectId="projectId"></process-ctrl-review>
             <project-archive ref="proArchRef" v-if="selectedObj.id === 12" @getNextStatus="getNextStatus"></project-archive>
             <sign-confirm ref="signConfirmRef" v-if="selectedObj.id === 13" @getNextStatus="getNextStatus"></sign-confirm>
             <confirm-end ref="confirmEndRef" v-if="selectedObj.id === 14" @getNextStatus="getNextStatus"></confirm-end>
@@ -527,7 +527,7 @@
   // }, 100)
 }
 
-const  nextMenu =  (id) => {
+const nextMenu = (id) => {
   menuList.value[id].subMenus.forEach( item => {
     if(item.id === selectedObj.value.id + 1){
       chooseSubMenu(item,true);
@@ -565,8 +565,7 @@
   goRouter(selectedObj.value.id,'clickEdit')
 }
 const getNextStatus = async (val) => {
-  projectId.value = val;
-  console.log("val",val)
+  projectId.value = val
   const res = await getProjectStatus(val);
   if(res.code == 200){
     if(res.data <=4){
@@ -740,21 +739,87 @@
       console.log("3")
       break;
     case 4:
+      if(type === 'add'){
+        evalPlanRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        evalPlanRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          evalPlanRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          evalPlanRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("4")
       break;
     case 5:
+      if(type === 'add'){
+        employNoticeRcdRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        employNoticeRcdRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          employNoticeRcdRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          employNoticeRcdRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("5")
       break;
     case 6:
+      if(type === 'add'){
+        siteCheckRcdRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        siteCheckRcdRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          siteCheckRcdRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          siteCheckRcdRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("6")
       break;
     case 7:
+      if(type === 'add'){
+        innerReviewRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        innerReviewRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          innerReviewRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          innerReviewRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("7")
       break;
     case 8:
+      if(type === 'add'){
+        techReviewRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        techReviewRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          techReviewRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          techReviewRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("8")
       break;
     case 9:
+      if(type === 'add'){
+        uploadReviewRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        uploadReviewRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          uploadReviewRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          uploadReviewRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("9")
       break;
     case 10:

--
Gitblit v1.9.2