From baf475f44f0a940bbdc2dde36fff9cdf97da58bc Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期四, 17 八月 2023 16:43:28 +0800
Subject: [PATCH] 证书修改
---
src/views/system/user/component/dialogCertificate.vue | 8
src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue | 291 +++++-
src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue | 317 ++++++-
src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue | 291 +++++-
src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue | 4
src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue | 4
src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue | 293 +++++-
src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue | 291 +++++-
src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue | 310 +++++-
src/views/system/user/component/ctfDialog.vue | 65
src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue | 312 +++++-
src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue | 291 +++++-
src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue | 4
13 files changed, 1,989 insertions(+), 492 deletions(-)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
index a7ac8c6..fb4cbf7 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
@@ -56,40 +56,43 @@
</el-col>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -223,14 +226,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -285,26 +289,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -344,12 +350,17 @@
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
import {UploadProps} from "element-plus/es";
import axios from "axios";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
equipmentDialog: boolean,
props:{},
depProps:{},
depProps2:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: [],
fileList: Array<file>,
uploadUrl: string,
@@ -420,6 +431,122 @@
emitPath: false,
multiple: true
},
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
fileList: [],
imgLimit: 3,
uploadUrl: '',
@@ -489,9 +616,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -500,6 +640,45 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -520,7 +699,14 @@
}
state.form.workDetail.involvedDepIds = state.form.workDetail.involvedDepIds.join(',')
state.form.workDetail.bcPath = state.form.workDetail.bcPath.join(',')
- const res = await workApplyApi().submitBrokenApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitBrokenApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -686,6 +872,7 @@
beforeRemove,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
index 008a6a7..ec18d58 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
@@ -55,15 +55,16 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -75,28 +76,30 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="分析人" prop="analystUids">
- <el-select v-model="form.analystUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.analystUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.analystUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12" class="valueSelect">
@@ -111,14 +114,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -212,14 +216,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -274,26 +279,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -317,12 +324,17 @@
import type { FormInstance, FormRules } from 'element-plus'
import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
workLevelList: Array<any>,
equipmentDialog: boolean,
- props:{},
- depProps:{},
+ props:{}
+ depProps:{}
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: []
}
export default defineComponent({
@@ -374,6 +386,122 @@
value: 3
}
],
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
props:{
expandTrigger: 'hover',
label: 'depName',
@@ -413,7 +541,7 @@
// 页面载入时执行方法
onMounted(() => {
getBasicData()
- });
+ })
const openWorkSelect = ()=>{
workSelectRef.value.openDialog(state.form.involveOtherWork)
@@ -451,9 +579,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -464,8 +605,47 @@
return index === 0;
}
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '分析人'){state.form.analystUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
+ }
+
const submitForm = async (formEl: FormInstance | undefined) => {
- console.log(state.form.involveOtherWork,555)
if (!formEl) return
await formEl.validate(async (valid, fields) => {
if (valid) {
@@ -481,7 +661,15 @@
// if(Array.isArray(state.form.involveOtherWork)){
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
// }
- const res = await workApplyApi().submitFireApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.analystUids = transformArr(data.analystUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitFireApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -544,6 +732,7 @@
openWorkSelect,
getSelected,
workSelectRef,
+ singleSelect,
Search,
ruleFormRef,
applyRules,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
index 015562c..e1d3000 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
@@ -21,15 +21,16 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -41,14 +42,15 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -83,14 +85,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -206,14 +209,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -268,26 +272,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -329,11 +335,16 @@
import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
import axios from "axios";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
equipmentDialog: boolean,
props:{},
depProps:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: [],
fileList: Array<file>,
uploadUrl: string,
@@ -392,6 +403,122 @@
value: 'depId',
checkStrictly: true,
emitPath: false
+ },
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
},
fileList: [],
imgLimit: 3,
@@ -459,9 +586,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -470,6 +610,45 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -489,7 +668,14 @@
state.form.involveOtherWork = state.form.involveOtherWork.join(',')
}
state.form.workDetail.gbPath = state.form.workDetail.gbPath.join(',')
- const res = await workApplyApi().submitGroundApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitGroundApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -656,6 +842,7 @@
beforeRemove,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
index f7650ee..48bf616 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
@@ -54,15 +54,16 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -74,28 +75,30 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12" class="valueSelect">
@@ -184,14 +187,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -226,26 +230,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -269,12 +275,17 @@
import type { FormInstance, FormRules } from 'element-plus'
import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
workLevelList: Array<any>,
equipmentDialog: boolean,
props:{},
depProps:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: []
}
export default defineComponent({
@@ -334,6 +345,122 @@
label: 'depName',
value: 'depId',
emitPath: false
+ },
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
},
depProps:{
expandTrigger: 'hover',
@@ -401,9 +528,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -412,6 +552,45 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -430,7 +609,14 @@
// if(Array.isArray(state.form.involveOtherWork)){
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
// }
- const res = await workApplyApi().submitHeightApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitHeightApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -497,6 +683,7 @@
findParent,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
index fb355d4..e17cd1a 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
@@ -64,15 +64,16 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="吊装作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -84,14 +85,15 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -128,14 +130,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -229,14 +232,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -291,26 +295,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -334,12 +340,17 @@
import type { FormInstance, FormRules } from 'element-plus'
import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
workLevelList: Array<any>,
equipmentDialog: boolean,
props:{},
depProps:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: []
}
export default defineComponent({
@@ -405,7 +416,123 @@
value: 'depId',
checkStrictly: true,
emitPath: false
- }
+ },
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
});
const ruleFormRef = ref<FormInstance>()
const applyRules = reactive<FormRules>({
@@ -469,9 +596,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -480,6 +620,45 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -499,7 +678,14 @@
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
// }
state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.join(',')
- const res = await workApplyApi().submitHoistApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitHoistApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -567,6 +753,7 @@
findParent,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
index 0a47ec3..54240e7 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
@@ -143,15 +143,16 @@
</el-row>
<el-row>
<el-col :span="12">
- <el-form-item label="作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12" class="valueSelect">
@@ -179,28 +180,30 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -292,14 +295,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -334,26 +338,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -379,12 +385,17 @@
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
import {UploadProps} from "element-plus/es";
import axios from "axios";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
workLevelList: Array<any>,
equipmentDialog: boolean,
props:{},
depProps:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: [],
fileList: Array<file>,
uploadUrl: string,
@@ -462,6 +473,122 @@
checkStrictly: true,
emitPath: false
},
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
fileList: [],
imgLimit: 3,
uploadUrl: '',
@@ -538,9 +665,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -549,6 +689,45 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -568,7 +747,14 @@
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
// }
state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.join(',')
- const res = await workApplyApi().submitPlateApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitPlateApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -735,6 +921,7 @@
beforeRemove,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
index 2b76056..635a6f8 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
@@ -78,15 +78,16 @@
</el-row>
<el-row>
<el-col :span="12">
- <el-form-item label="作业人及证件编号" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+ <el-form-item label="作业人" prop="operatorUids">
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -98,28 +99,30 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="分析人" prop="analystUids">
- <el-select v-model="form.analystUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.analystUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.analystUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12" class="valueSelect">
@@ -142,14 +145,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -243,14 +247,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -305,26 +310,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -348,11 +355,16 @@
import type { FormInstance, FormRules } from 'element-plus'
import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+ import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
equipmentDialog: boolean,
props:{},
depProps:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: []
}
export default defineComponent({
@@ -405,7 +417,123 @@
value: 'depId',
checkStrictly: true,
emitPath: false
- }
+ },
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
});
const ruleFormRef = ref<FormInstance>()
const applyRules = reactive<FormRules>({
@@ -469,9 +597,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -480,6 +621,46 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '分析人'){state.form.analystUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -499,7 +680,15 @@
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
// }
state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.join(',')
- const res = await workApplyApi().submitPowerApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.analystUids = transformArr(data.analystUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitPowerApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -567,6 +756,7 @@
findParent,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
index 4fcac53..df2e3bd 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
@@ -44,14 +44,15 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业人" prop="operatorUids">
- <el-select v-model="form.operatorUids" filterable multiple clearable>
- <el-option
- v-for="item in spList.opList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.operatorUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.opList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -75,28 +76,30 @@
</el-col>
<el-col :span="12">
<el-form-item label="作业负责人" prop="headUids">
- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="分析人" prop="analystUids">
- <el-select v-model="form.analystUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.analystUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.analystUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12" class="valueSelect">
@@ -111,14 +114,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="监护人" prop="guardianUids">
- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>
- <el-option
- v-for="item in spList.jhList"
- :key="item.uid"
- :label="item.realName"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in spList.jhList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.realName"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -202,14 +206,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="安全措施确认人" prop="safetyMeasureUids">
- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -244,26 +249,28 @@
<el-row>
<el-col :span="12">
<el-form-item label="完工验收" prop="acceptUid">
- <el-select v-model="form.acceptUid" filterable clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.acceptUid" filterable clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="现场开始结束确认人" prop="startOrEndUids">
- <el-select v-model="form.startOrEndUids" filterable multiple clearable>
- <el-option
- v-for="item in workerList"
- :key="item.uid"
- :label="item.username"
- :value="item.uid"
- />
- </el-select>
+<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>-->
+<!-- <el-option-->
+<!-- v-for="item in workerList"-->
+<!-- :key="item.uid"-->
+<!-- :label="item.username"-->
+<!-- :value="item.uid"-->
+<!-- />-->
+<!-- </el-select>-->
+ <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>
</el-form-item>
</el-col>
</el-row>
@@ -287,11 +294,16 @@
import type { FormInstance, FormRules } from 'element-plus'
import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+import {userApi} from "/@/api/systemManage/user";
interface stateType {
form: Object,
equipmentDialog: boolean,
props:{},
depProps:{},
+ casProps:{}
+ cas2Props: {}
+ cas3Props: {}
+ cas4Props: {}
safetyMeasureBasicList: []
}
export default defineComponent({
@@ -342,7 +354,123 @@
value: 'depId',
checkStrictly: true,
emitPath: false
- }
+ },
+ casProps: {
+ value: 'uid',
+ label: 'username',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas2Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ checkStrictly: false,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.opList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas3Props: {
+ value: 'uid',
+ label: 'realName',
+ multiple: true,
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.spList.jhList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ realName: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
+ cas4Props: {
+ value: 'uid',
+ label: 'username',
+ lazy: true,
+ async lazyLoad(node, resolve){
+ const { value, level } = node
+ let nodes = []
+ if(value == 0){
+ nodes = props.workerList
+ }else{
+ let res = await userApi().getCtf({uid: value})
+ if(res.data.code == 200){
+ nodes = res.data.data
+ }else{
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ })
+ }
+ }
+ nodes=nodes.map(item => ({
+ uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+ username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+ leaf: level >= 1
+ }))
+ resolve(nodes)
+ }
+ },
});
const ruleFormRef = ref<FormInstance>()
const applyRules = reactive<FormRules>({
@@ -406,9 +534,22 @@
}
};
- const getStartEndIds = ()=>{
+ const getStartEndIds = (value)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ state.form.headUids = temp
+ }
state.form.startOrEndUids = state.form.headUids
- state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+ state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
}
const getSafetyIds = ()=>{
@@ -417,6 +558,46 @@
const isFirstRow = (index)=> {
return index === 0;
+ }
+
+ const transformArr = (arr: Array<any>)=>{
+ return arr.map((i)=>{
+ return {
+ uid: i[0],
+ certificate: i[1].split(',')[0],
+ certExpiredAt: i[1].split(',')[1],
+ certTypeName: i[1].split(',')[2]
+ }
+ })
+ }
+
+ const transform2Obj = (arr: Array<any>)=>{
+ return {
+ uid: arr[0],
+ certificate: arr[1].split(',')[0],
+ certExpiredAt: arr[1].split(',')[1],
+ certTypeName: arr[1].split(',')[2]
+ }
+ }
+
+ const singleSelect=(value,type)=>{
+ let selected = value
+ if(selected.length>1){
+ const temp = []
+ for(let i of selected){
+ const index = temp.findIndex(item => item[0] === i[0]);
+ if (index !== -1) {
+ temp[index] = i
+ }else{
+ temp.push(i)
+ }
+ }
+ if(type == '作业人'){state.form.operatorUids = temp}
+ if(type == '分析人'){state.form.analystUids = temp}
+ if(type == '监护人'){state.form.guardianUids = temp}
+ if(type == '确认人'){state.form.safetyMeasureUids = temp}
+ if(type == '结束人'){state.form.startOrEndUids = temp}
+ }
}
const submitForm = async (formEl: FormInstance | undefined) => {
@@ -435,7 +616,15 @@
// if(Array.isArray(state.form.involveOtherWork)){
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
// }
- const res = await workApplyApi().submitSpaceApply(state.form)
+ const data = state.form
+ data.operatorUids = transformArr(data.operatorUids)
+ data.headUids = transformArr(data.headUids)
+ data.analystUids = transformArr(data.analystUids)
+ data.guardianUids = transformArr(data.guardianUids)
+ data.safetyMeasureUids = transformArr(data.safetyMeasureUids)
+ data.startOrEndUids = transformArr(data.startOrEndUids)
+ data.acceptUid = transform2Obj(data.acceptUid)
+ const res = await workApplyApi().submitSpaceApply(data)
if (res.data.code === '200') {
ElMessage({
type: 'success',
@@ -502,6 +691,7 @@
findParent,
openWorkSelect,
getSelected,
+ singleSelect,
workSelectRef,
Search,
ruleFormRef,
diff --git a/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue b/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue
index ec8a832..e287f17 100644
--- a/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue
+++ b/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue
@@ -28,8 +28,8 @@
<el-table-column prop="realName" label="真实姓名" show-overflow-tooltip></el-table-column>
<el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column>
<el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column>
- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gmtCreate" label="证书有效期至" show-overflow-tooltip></el-table-column>
+<!-- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>-->
+ <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="140">
<template #default="scope">
<el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button>
diff --git a/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue b/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue
index 06c033a..6fd0746 100644
--- a/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue
+++ b/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue
@@ -28,8 +28,8 @@
<el-table-column prop="realName" label="真实姓名" show-overflow-tooltip></el-table-column>
<el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column>
<el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column>
- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gmtCreate" label="证书有效期至" show-overflow-tooltip></el-table-column>
+<!-- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>-->
+ <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="140">
<template #default="scope">
<el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button>
diff --git a/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue b/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue
index 2b5fdff..07eb7ba 100644
--- a/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue
+++ b/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue
@@ -28,8 +28,8 @@
<el-table-column prop="realName" label="真实姓名" show-overflow-tooltip></el-table-column>
<el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column>
<el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column>
- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>
- <el-table-column prop="gmtCreate" label="证书有效期至" show-overflow-tooltip></el-table-column>
+<!-- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>-->
+ <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="140">
<template #default="scope">
<el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button>
diff --git a/src/views/system/user/component/ctfDialog.vue b/src/views/system/user/component/ctfDialog.vue
index a8f7f59..60f9f2f 100644
--- a/src/views/system/user/component/ctfDialog.vue
+++ b/src/views/system/user/component/ctfDialog.vue
@@ -3,13 +3,13 @@
<el-dialog :title="title" v-model="isShowCtfDialog" width="769px" @close="restForm">
<el-form :model="ctfForm" size="default" ref="ctfRef" :rules="ctfFormRules" 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="roleId">
- <el-select v-model="ctfForm.roleId" placeholder="请选择" clearable class="w100" :disabled="disabled">
- <el-option v-for="item in roleData" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </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="roleId">-->
+<!-- <el-select v-model="ctfForm.roleId" placeholder="请选择" clearable class="w100" :disabled="disabled">-->
+<!-- <el-option v-for="item in roleData" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </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="certNo">
<el-input v-model.trim="ctfForm.certNo" :disabled="disabled" placeholder="" clearable></el-input>
@@ -21,10 +21,10 @@
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="作业类型" prop="workType">
- <el-select v-model="ctfForm.workType" placeholder="请选择作业类型" :disabled="disabled">
+ <el-form-item label="证书类型" prop="certTypeId">
+ <el-select v-model="ctfForm.certTypeId" placeholder="请选择证书类型" :disabled="disabled">
<el-option
- v-for="item in workTypeList"
+ v-for="item in certTypeIdList"
:key="item.id"
:label="item.name"
:value="item.id"
@@ -64,6 +64,7 @@
import {workApplyApi} from "/@/api/specialWorkSystem/workApply";
import axios from "axios";
import {useUserInfo} from "/@/stores/userInfo";
+import {certApi} from "/@/api/systemManage/certificate";
// 定义接口来定义对象的类型
interface DeptData {}
@@ -78,10 +79,9 @@
dialogImg: boolean
ctfForm: {
userCertId?: string
- roleId: number| null
certNo: string
certExpiredAt: string
- workType: number| null
+ certTypeId: number| null
certUrl: string
uid: string | null
};
@@ -90,7 +90,7 @@
fileList: Array<file>
delList: Array<any>
uploadUrl: string
- workTypeList: Array<any>
+ certTypeIdList: Array<any>
}
interface file {
url: string;
@@ -111,48 +111,37 @@
dialogImg: false,
ctfForm: {
userCertId: '',
- roleId: null,
certNo: '',
certExpiredAt: '',
- workType: null,
+ certTypeId: null,
certUrl: '',
uid: ''
},
ctfFormRules:{
- roleId: [{ required: true, message: '请选择证书相关角色', trigger: 'blur' }],
certNo: [{ required: true, message: '请输入证书编号', trigger: 'blur' }],
certExpiredAt: [{ required: true, message: '请选择证书到期时间', trigger: 'change' }],
- workType: [{ required: true, message: '请选择作业类型', trigger: 'blur' }],
+ certTypeId: [{ required: true, message: '请选择证书类型', trigger: 'blur' }],
certUrl: [{ required: true, message: '请上传证书', trigger: 'change' }],
},
dialogImageUrl: null,
fileList: [],
delList: [],
uploadUrl: '',
- workTypeList: [
- { id: 1, name: '动火作业' },
- { id: 2, name: '受限空间作业' },
- { id: 3, name: '吊装作业' },
- { id: 4, name: '动土作业' },
- { id: 5, name: '断路作业' },
- { id: 6, name: '高处作业' },
- { id: 7, name: '临时用电作业' },
- { id: 8, name: '盲板抽堵作业' }
- ]
+ certTypeIdList: []
});
// 打开弹窗
const openDialog = (type: string, value: any, uid: string) => {
- state.isShowCtfDialog = true;
+ state.isShowCtfDialog = true
+ getCerttypeList()
state.fileList = []
if (type === 'add') {
state.disabled = false
state.title = '新增证书';
state.ctfForm = {
- roleId: null,
certNo: '',
certExpiredAt: '',
- workType: null,
+ certTypeId: null,
certUrl: '',
uid: uid
};
@@ -174,7 +163,6 @@
if(type === 'edit'){
state.disabled = false
state.title = '修改证书';
- console.log(state.ctfForm,'555')
}else{
state.disabled = true
state.title = '查看';
@@ -186,6 +174,18 @@
const isValidKey =(key: string | number | symbol, data:object): key is keyof typeof data => {
return key in data
}
+
+ const getCerttypeList = async () => {
+ let res = await certApi().getCerttypeList({pageIndex: 1, pageSize: 99, searchParams: {name:''}});
+ if (res.data.code === '200') {
+ state.certTypeIdList = res.data.data;
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ };
// 新增修改
const onSubmit = async () => {
@@ -322,10 +322,9 @@
const restForm = ()=>{
state.ctfForm = {
userCertId: '',
- roleId: null,
certNo: '',
certExpiredAt: '',
- workType: null,
+ certTypeId: null,
certUrl: '',
uid: ''
}
diff --git a/src/views/system/user/component/dialogCertificate.vue b/src/views/system/user/component/dialogCertificate.vue
index dab9297..889400d 100644
--- a/src/views/system/user/component/dialogCertificate.vue
+++ b/src/views/system/user/component/dialogCertificate.vue
@@ -12,13 +12,7 @@
>
<el-table-column type="index" label="序号" width="80"/>
<el-table-column property="id" label="证件Id"/>
- <el-table-column property="roleId" label="相关角色">
- <template #default="scope">
- {{ roleList.find(i=>i.roleId == scope.row.roleId)?.roleName }}
- </template>
- </el-table-column>
- <el-table-column property="workTypeDesc" label="作业类型"/>
- <el-table-column property="roleCode" label="角色编号"/>
+ <el-table-column property="certTypeName" label="证书类型"/>
<el-table-column property="certNo" label="证件编号"/>
<el-table-column fixed="right" label="操作" align="center" width="250">
<template #default="scope">
--
Gitblit v1.9.2