From 5c357cd927e74cc57531bd0a95338635e39be9af Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Mon, 29 Jan 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