From de5e674a5655cd5c8d5457d1be8182519625d265 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Wed, 12 Mar 2025 15:35:47 +0800
Subject: [PATCH] 修改
---
src/views/analyse/plan/components/planDialog.vue | 468 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 256 insertions(+), 212 deletions(-)
diff --git a/src/views/analyse/plan/components/planDialog.vue b/src/views/analyse/plan/components/planDialog.vue
index aab3fce..1934288 100644
--- a/src/views/analyse/plan/components/planDialog.vue
+++ b/src/views/analyse/plan/components/planDialog.vue
@@ -1,80 +1,109 @@
<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="planDialogState.title" v-model="planDialogState.planDialogVisible" width="600px">
- <el-form ref="planFormRef" :rules="planDialogState.planFormRules" :model="planDialogState.planForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险分析单元" prop="riskUnitId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.riskUnitId" style="width:100%" placeholder="风险分析单元" clearable>
- <el-option v-for="item in planDialogState.riskUnitList" :key="item.id" :label="item.riskName" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评估计划名称" prop="assessPlanName">
- <el-input :disabled="planDialogState.disabled" v-model="planDialogState.planForm.assessPlanName" placeholder="评估计划名称" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评估时间" prop="assessTime">
- <el-date-picker
- :disabled="planDialogState.disabled"
- type="datetimerange"
- v-model="planDialogState.planForm.assessTime"
- start-placeholder="开始时间"
- end-placeholder="结束时间"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"
- popper-class="pickTime"
- @change="formatTime">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="计划制定人" prop="planUserId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.planUserId" style="width:100%" placeholder="计划制定人" clearable>
- <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect">
- <el-form-item label="辨识专家" prop="identificationUserId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable>
- <el-option v-for="item in planDialogState.bsExperts" :key="item.id" :label="item.realName" :value="item.id">
- <div class="valueTable">
- <div><div>姓名:</div><span>{{item.realName}}</span></div>
- <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect">
- <el-form-item label="评价专家" prop="evaluateUserId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable>
- <el-option v-for="item in planDialogState.pjExperts" :key="item.id" :label="item.realName" :value="item.id">
- <div class="valueTable">
- <div><div>姓名:</div><span>{{item.realName}}</span></div>
- <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
+ <div class="system-menu-dialog-container">
+ <el-dialog :title="planDialogState.title" v-model="planDialogState.planDialogVisible" width="600px">
+ <el-form ref="planFormRef" :rules="planDialogState.planFormRules" :model="planDialogState.planForm" size="default"
+ label-width="120px">
+ <el-row :gutter="35">
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="风险分析单元" prop="riskUnitId">
+ <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.riskUnitId"
+ style="width:100%" placeholder="风险分析单元" clearable>
+ <el-option v-for="item in planDialogState.riskUnitList" :key="item.id" :label="item.riskName"
+ :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="评估计划名称" prop="assessPlanName">
+ <el-input :disabled="planDialogState.disabled" v-model="planDialogState.planForm.assessPlanName"
+ placeholder="评估计划名称" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="评估时间" prop="assessTime">
+ <el-date-picker
+ :disabled="planDialogState.disabled"
+ type="datetimerange"
+ v-model="planDialogState.planForm.assessTime"
+ start-placeholder="开始时间"
+ end-placeholder="结束时间"
+ format="YYYY-MM-DD HH:mm:ss"
+ value-format="YYYY-MM-DD HH:mm:ss"
+ popper-class="pickTime"
+ @change="formatTime">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="计划制定人" prop="planUserId">
+ <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.planUserId"
+ style="width:100%" placeholder="计划制定人" clearable>
+ <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName"
+ :value="item.id"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="辨识类型" prop="identificationType">
+ <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationType"
+ style="width:100%" placeholder="辨识类型" clearable>
+ <el-option v-for="item in planDialogState.typeList" :key="item.value" :label="item.name"
+ :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect">
+ <el-form-item label="辨识专家" prop="identificationUserInsert">
+ <el-select :disabled="planDialogState.disabled" multiple v-model="planDialogState.planForm.identificationUserInsert"
+ style="width:100%" :teleported="false" placeholder="辨识专家" clearable>
+ <el-option v-for="item in planDialogState.bsExperts" :key="item.id" :label="item.realName"
+ :value="item.id">
+ <div class="valueTable">
+ <div>
+ <div>姓名:</div>
+ <span>{{ item.realName }}</span></div>
+ <div>
+ <div>专业:</div>
+ <span>{{ item.userIdentities?.map(i => i.userIdentity).join(',') }}</span></div>
+ </div>
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect">
+ <el-form-item label="评价专家" prop="evaluateUserInsert">
+ <el-select :disabled="planDialogState.disabled" multiple v-model="planDialogState.planForm.evaluateUserInsert"
+ style="width:100%" :teleported="false" placeholder="评价专家" clearable>
+ <el-option v-for="item in planDialogState.pjExperts" :key="item.id" :label="item.realName"
+ :value="item.id">
+ <div class="valueTable">
+ <div>
+ <div>姓名:</div>
+ <span>{{ item.realName }}</span></div>
+ <div>
+ <div>专业:</div>
+ <span>{{ item.userIdentities?.map(i => i.userIdentity).join(',') }}</span></div>
+ </div>
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <template #footer>
<span class="dialog-footer">
- <el-button @click="planDialogState.planDialogVisible = !planDialogState.planDialogVisible" size="default">取 消</el-button>
- <el-button v-if="!planDialogState.disabled" type="primary" @click="onSubmitPlan" size="default">确定</el-button>
+ <el-button @click="planDialogState.planDialogVisible = !planDialogState.planDialogVisible"
+ size="default">取 消</el-button>
+ <el-button v-if="!planDialogState.disabled" type="primary" @click="onSubmitPlan"
+ size="default">确定</el-button>
</span>
- </template>
- </el-dialog>
- </div>
+ </template>
+ </el-dialog>
+ </div>
</template>
<script setup lang="ts">
-import { reactive, ref, getCurrentInstance } from "vue";
+import {reactive, ref, getCurrentInstance} from "vue";
import {ElMessage} from "element-plus";
import {planApi} from "/@/api/analyse/plan";
import {isValidKey} from "/@/utils/methods";
@@ -82,174 +111,189 @@
const planFormRef = ref()
const planDialogState = reactive<PlanDialogType>({
- title: '',
- disabled: false,
- planDialogVisible: false,
- planForm: {
- riskUnitId: null,
- planUserId: null,
- assessPlanName: '',
- assessTime: [],
- assessStartTime: '',
- assessEndTime: '',
- identificationUserId: null,
- evaluateUserId: null,
- riskType: 2
+ title: '',
+ disabled: false,
+ planDialogVisible: false,
+ planForm: {
+ riskUnitId: null,
+ planUserId: null,
+ assessPlanName: '',
+ assessTime: [],
+ identificationType: null,
+ assessStartTime: '',
+ assessEndTime: '',
+ identificationUserInsert: [],
+ evaluateUserInsert: [],
+ riskType: 2
+ },
+ planFormRules: {
+ riskUnitId: [{required: true, message: '请选择风险分析单元', trigger: 'change'}],
+ assessPlanName: [{required: true, message: '请填写评估计划名称', trigger: 'blur'}],
+ assessTime: [{required: true, message: '请选择评估时间', trigger: 'blur'}],
+ planUserId: [{required: true, message: '请选择计划制定人', trigger: 'change'}],
+ identificationType: [{required: true, message: '请选择辨识类型', trigger: 'change'}],
+ identificationUserInsert: [{required: true, message: '请选择辨识专家', trigger: 'change'}],
+ evaluateUserInsert: [{required: true, message: '请选择评价专家', trigger: 'change'}],
+ },
+ riskUnitList: [],
+ personList: [],
+ typeList: [
+ {
+ name: '线上专家',
+ value: 1
},
- planFormRules: {
- riskUnitId: [{ required: true, message: '请选择风险分析单元', trigger: 'change' }],
- assessPlanName: [{ required: true, message: '请填写评估计划名称', trigger: 'blur' }],
- assessTime: [{ required: true, message: '请选择评估时间', trigger: 'blur' }],
- planUserId: [{ required: true, message: '请选择计划制定人', trigger: 'change' }],
- identificationUserId: [{ required: true, message: '请选择辨识专家', trigger: 'change' }],
- evaluateUserId: [{ required: true, message: '请选择评价专家', trigger: 'change' }],
+ {
+ name: '现场专家',
+ value: 2
},
- riskUnitList: [],
- personList: [],
- bsExperts: [],
- pjExperts: []
+ {
+ name: '线上+现场',
+ value: 3
+ }
+ ],
+ bsExperts: [],
+ pjExperts: []
})
-const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType [],bsExperts:[],pjExperts:[]) => {
- planDialogState.planDialogVisible = true;
- planDialogState.riskUnitList = riskUnitList;
- planDialogState.personList = personList;
- planDialogState.bsExperts = bsExperts;
- planDialogState.pjExperts = pjExperts;
- planDialogState.disabled = false
- setTimeout(() => {
- planFormRef.value.clearValidate();
- });
- if(title === '新增'){
- planDialogState.title = '新增';
- planDialogState.planForm = {
- riskUnitId: null,
- planUserId: null,
- assessPlanName: '',
- assessTime: [],
- assessStartTime: '',
- assessEndTime: '',
- identificationUserId: null,
- evaluateUserId: null,
- riskType: 2
- };
- }else if(title === '查看'){
- planDialogState.title = '查看';
- planDialogState.disabled = true
- for(let i in planDialogState.planForm){
- if(isValidKey(i, planDialogState.planForm)){
- planDialogState.planForm[i] = value[i]
- }
- }
- planDialogState.planForm.assessTime=[value.assessStartTime, value.assessEndTime]
- console.log(value,planDialogState.planForm.assessTime,'time')
- }else{
- planDialogState.title = '编辑';
- planDialogState.planForm.id = value.id
- for(let i in planDialogState.planForm){
- if(isValidKey(i, planDialogState.planForm)){
- planDialogState.planForm[i] = value[i]
- }
- }
- planDialogState.planForm.assessTime=[value.assessStartTime, value.assessEndTime]
+const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType [], bsExperts: [], pjExperts: []) => {
+ planDialogState.planDialogVisible = true;
+ planDialogState.riskUnitList = riskUnitList;
+ planDialogState.personList = personList;
+ planDialogState.bsExperts = bsExperts;
+ planDialogState.pjExperts = pjExperts;
+ planDialogState.disabled = false
+ setTimeout(() => {
+ planFormRef.value.clearValidate();
+ });
+ if (title === '新增') {
+ planDialogState.title = '新增';
+ planDialogState.planForm = {
+ riskUnitId: null,
+ planUserId: null,
+ assessPlanName: '',
+ assessTime: [],
+ identificationType: null,
+ assessStartTime: '',
+ assessEndTime: '',
+ identificationUserInsert: [],
+ evaluateUserInsert: [],
+ riskType: 2
}
+ } else {
+ if(title === '查看'){
+ planDialogState.title = '查看'
+ planDialogState.disabled = true
+ }else{
+ planDialogState.title = '编辑'
+ planDialogState.planForm.id = value.id
+ }
+ for (let i in planDialogState.planForm) {
+ if (isValidKey(i, planDialogState.planForm)) {
+ planDialogState.planForm[i] = value[i]
+ }
+ }
+ planDialogState.planForm.identificationUserInsert = value.identityUsers?.map(i=>i.identificationUserId)
+ planDialogState.planForm.evaluateUserInsert = value.evaluateUsers?.map(i=>i.evaluateUserId)
+ planDialogState.planForm.assessTime = [value.assessStartTime, value.assessEndTime]
+ }
};
const formatTime = () => {
- planDialogState.planForm.assessStartTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[0]
- planDialogState.planForm.assessEndTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[1]
+ planDialogState.planForm.assessStartTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[0]
+ planDialogState.planForm.assessEndTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[1]
};
const onSubmitPlan = () => {
- planFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- formatTime()
- delete planDialogState.planForm.assessTime
- if(planDialogState.title === '新增'){
- let res = await planApi().addPlan(planDialogState.planForm);
- if(res.data.code === 100){
- emit('refresh')
- planDialogState.planDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await planApi().modPlan(planDialogState.planForm)
- if(res.data.code === 100){
- emit('refresh')
- planDialogState.planDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
+ planFormRef.value.validate(async (valid: boolean) => {
+ if (valid) {
+ formatTime()
+ delete planDialogState.planForm.assessTime
+ if (planDialogState.title === '新增') {
+ let res = await planApi().addPlan(planDialogState.planForm);
+ if (res.data.code === 100) {
+ emit('refresh')
+ planDialogState.planDialogVisible = false;
+ ElMessage({
+ type: 'success',
+ message: '新增成功'
+ })
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg,
+ });
}
- })
+ } else {
+ let res = await planApi().modPlan(planDialogState.planForm)
+ if (res.data.code === 100) {
+ emit('refresh')
+ planDialogState.planDialogVisible = false;
+ ElMessage({
+ type: 'success',
+ message: '编辑成功'
+ })
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg,
+ });
+ }
+ }
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: '请完善基本信息',
+ });
+ }
+ })
}
const emit = defineEmits(['refresh'])
defineExpose({
- showPlanDialog
+ showPlanDialog
})
</script>
<style lang="scss" scoped>
- ::v-deep(.pickTime){
- position: absolute !important;
- top: 0 !important;
- }
- .valueSelect{
- ::v-deep(.el-popper){
- .el-select-dropdown__item{
- width: 100%;
- height: auto;
- white-space: normal;
- word-break: break-all;
- word-wrap: break-word;
- overflow: auto;
- padding: 10px 25px;
- border-bottom: 1px solid #ccc;
+::v-deep(.pickTime) {
+ position: absolute !important;
+ top: 0 !important;
+}
- .valueTable{
- &>div{
- line-height: 1.5;
- margin-bottom: 6px;
- display: flex;
- align-items: center;
+.valueSelect {
+ ::v-deep(.el-popper) {
+ .el-select-dropdown__item {
+ width: 100%;
+ height: auto;
+ white-space: normal;
+ word-break: break-all;
+ word-wrap: break-word;
+ overflow: auto;
+ padding: 10px 25px;
+ border-bottom: 1px solid #ccc;
- div{
- color: #999;
- }
+ .valueTable {
+ & > div {
+ line-height: 1.5;
+ margin-bottom: 6px;
+ display: flex;
+ align-items: center;
- span{
- font-weight: bolder;
- }
+ div {
+ color: #999;
+ }
- &:last-of-type{
- margin-bottom: 0;
- }
- }
+ span {
+ font-weight: bolder;
+ }
+
+ &:last-of-type {
+ margin-bottom: 0;
}
}
}
}
+ }
+}
</style>
--
Gitblit v1.9.2