<template>
|
<div class="home-container">
|
<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
|
<div class="homeCard">
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="作业申请单位" prop="depIdList">
|
<el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="动火级别" prop="workLevel">
|
<el-select v-model="form.workLevel" clearable>
|
<el-option
|
v-for="item in workLevelList"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="作业内容" prop="workContent">
|
<el-input
|
v-model="form.workContent"
|
:autosize="{ minRows: 1 }"
|
type="textarea"
|
placeholder="请输入作业内容"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="作业地点及动火部位" prop="workLocation">
|
<el-input
|
v-model="form.workLocation"
|
:autosize="{ minRows: 1 }"
|
type="textarea"
|
placeholder="请输入作业地点及动火部位"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="动火方式" prop="workDetail.methodList">
|
<el-select v-model="form.workDetail.methodList" filterable multiple clearable>
|
<el-option
|
v-for="item in fireWorkList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.name"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="作业负责人" prop="headUids">
|
<el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
|
<el-option
|
v-for="item in lists.workerList"
|
:key="item.uid"
|
:label="item.username"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>-->
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row v-if="form.workDetail.methodList.find(i=>i == '其他')">
|
<el-col :span="12">
|
<el-form-item label="其他方式" prop="workDetail.other">
|
<el-input
|
v-model="form.workDetail.other"
|
:autosize="{ minRows: 1 }"
|
type="textarea"
|
placeholder="请输入其他动火方式"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="作业单位" prop="workDepIds">
|
<el-cascader style="width: 100%" v-model="form.workDepIds" :props="depProps" @change="getWorkerList" :options="lists.departList" :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 zyList"
|
:key="item.uid"
|
:label="item.realName"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" 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 lists.workerList"
|
:key="item.uid"
|
:label="item.username"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.analystUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>-->
|
</el-form-item>
|
</el-col>
|
<el-col :span="12" class="valueSelect">
|
<el-form-item label="关联其他特殊作业">
|
<el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
|
<el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
|
</el-option>
|
</el-select>
|
</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 clearable>
|
<el-option
|
v-for="item in lists.spList.jhList"
|
:key="item.uid"
|
:label="item.realName"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="绑定执法仪" prop="cameraIds">
|
<el-select v-model="form.cameraIds" multiple clearable>
|
<el-option
|
v-for="item in lists.deviceList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<!-- <el-col :span="12">-->
|
<!-- <el-form-item label="动火作业实施时间" prop="expStartTime">-->
|
<!-- <el-date-picker-->
|
<!-- v-model="form.expStartTime"-->
|
<!-- format="YYYY-MM-DD HH:mm"-->
|
<!-- value-format="YYYY-MM-DD HH:mm:00"-->
|
<!-- type="datetimerange"-->
|
<!-- range-separator="至"-->
|
<!-- start-placeholder="开始时间"-->
|
<!-- end-placeholder="结束时间"-->
|
<!-- />-->
|
<!-- </el-form-item>-->
|
<!-- </el-col>-->
|
<el-col :span="12">
|
<el-form-item label="预计(整体)开始时间" prop="expStartTime">
|
<el-date-picker
|
v-model="form.expStartTime"
|
format="YYYY-MM-DD HH:mm"
|
value-format="YYYY-MM-DD HH:mm:00"
|
type="datetime"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="预计(整体)完成时间" prop="expEndTime">
|
<el-date-picker
|
v-model="form.expEndTime"
|
format="YYYY-MM-DD HH:mm"
|
value-format="YYYY-MM-DD HH:mm:00"
|
type="datetime"
|
style="width: 100%"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="风险辨识" prop="riskIdentification">
|
<el-select v-model="form.riskIdentification" multiple clearable>
|
<el-option
|
v-for="item in lists.riskList"
|
:key="item.id"
|
:label="item.content"
|
:value="item.content"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="备注" prop="remark">
|
<el-input
|
v-model="form.remark"
|
:autosize="{ minRows: 1 }"
|
type="textarea"
|
placeholder="请输入作业备注"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row style="display: flex;justify-content: center">
|
<el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading">
|
<el-table-column type="index" label="序号" width="100px" align="center"/>
|
<el-table-column prop="measureContent" label="安全措施"/>
|
<!-- <el-table-column prop="address" label="确认人">-->
|
<!-- <template #default="scope">-->
|
|
<!-- </template>-->
|
<!-- </el-table-column>-->
|
<!-- <el-table-column prop="address" label="操作">-->
|
<!-- <template #default="scope">-->
|
<!-- <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button>-->
|
<!-- </template>-->
|
<!-- </el-table-column>-->
|
</el-table>
|
</el-row>
|
<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 lists.workerList"
|
:key="item.uid"
|
:label="item.username"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" 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="其他安全措施">-->
|
<!-- <el-input-->
|
<!-- v-model="form.workContent"-->
|
<!-- :autosize="{ minRows: 2 }"-->
|
<!-- type="textarea"-->
|
<!-- placeholder="请输入其他安全措施"-->
|
<!-- />-->
|
<!-- </el-form-item>-->
|
<!-- </el-col>-->
|
<!-- <el-col :span="12">-->
|
<!-- <el-form-item label="编制人">-->
|
<!-- <el-input-->
|
<!-- v-model="form.workContent"-->
|
<!-- placeholder="请输入编制人"-->
|
<!-- />-->
|
<!-- </el-form-item>-->
|
<!-- </el-col>-->
|
<!-- </el-row>-->
|
<el-row style="display: flex;justify-content: center">
|
<el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading">
|
<el-table-column prop="content" label="审批签字项目" align="center"/>
|
<el-table-column prop="approvalType" label="是否必签" align="center">
|
<template #default="scope">
|
<el-form-item label="" prop="acceptUid" label-width="0">
|
<el-radio-group v-model="scope.row.approvalType">
|
<el-radio :label="0">所有必签</el-radio>
|
<el-radio :label="1">任一</el-radio>
|
<el-radio :label="2">非必签</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</template>
|
</el-table-column>
|
<el-table-column prop="approvalUids" label="审批人" align="center">
|
<template #default="scope">
|
<el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
|
<el-option
|
v-for="item in lists.workerList"
|
:key="item.uid"
|
:label="item.username"
|
:value="item.uid"
|
/>
|
</el-select>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-row>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="完工验收" prop="acceptUids">
|
<el-select v-model="form.acceptUids" filterable multiple clearable>
|
<el-option
|
v-for="item in lists.workerList"
|
:key="item.uid"
|
:label="item.username"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.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 lists.workerList"
|
:key="item.uid"
|
:label="item.username"
|
:value="item.uid"
|
/>
|
</el-select>
|
<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" 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="lastApprover">-->
|
<!-- <el-select v-model="form.lastApprover" filterable clearable>-->
|
<!-- <el-option-->
|
<!-- v-for="item in lists.workerList"-->
|
<!-- :key="item.uid"-->
|
<!-- :label="item.username"-->
|
<!-- :value="item.uid"-->
|
<!-- />-->
|
<!-- </el-select>-->
|
<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
|
<!-- </el-form-item>-->
|
<!-- </el-col>-->
|
<!-- </el-row>-->
|
</div>
|
</el-form>
|
<div class="applyBtn">
|
<el-button type="primary" size="large" plain v-throttle @click="submitForm(ruleFormRef)">提交申报</el-button>
|
</div>
|
<work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
|
</div>
|
</template>
|
|
<script lang="ts">
|
import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, onUpdated } from 'vue';
|
import { storeToRefs } from 'pinia';
|
import { initBackEndControlRoutes } from '/@/router/backEnd';
|
import {useUserInfo} from "/@/stores/userInfo";
|
import { Session } from '/@/utils/storage';
|
import { Search, Edit } from '@element-plus/icons-vue'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
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>,
|
fireWorkList: Array<any>,
|
zyList: Array<any>,
|
equipmentDialog: boolean,
|
tabLoading: boolean
|
props1:{}
|
depProps:{}
|
casProps:{}
|
cas2Props: {}
|
cas3Props: {}
|
cas4Props: {}
|
safetyMeasureBasicList: []
|
}
|
export default defineComponent({
|
name: 'fireForm',
|
components: {workSelect},
|
props:['lists'],
|
setup(props: any, context: any) {
|
const userInfo = useUserInfo()
|
const { userInfos } = storeToRefs(userInfo);
|
const state = reactive<stateType>({
|
tabLoading: false,
|
equipmentDialog: false,
|
safetyMeasureBasicList: [],
|
zyList: [],
|
form: {
|
workType: 1,
|
workLevel: null,
|
depIdList: [],
|
applyDepId: null,
|
seDepId: null,
|
expStartTime: '',
|
expEndTime: '',
|
operatorUids: [],
|
headUids: [],
|
analystUids: [],
|
guardianUids: [],
|
workDepIds: [],
|
workContent: '',
|
workLocation: '',
|
riskIdentification: [],
|
involveOtherWork: [],
|
safetyMeasureUids: [],
|
approvalDepBasicList: [],
|
acceptUids: [],
|
lastApprover: null,
|
startOrEndUids: [],
|
cameraIds: [],
|
workDetail: {
|
workMethod: '',
|
methodList: [],
|
other: ''
|
},
|
remark: ''
|
},
|
workLevelList: [
|
{
|
label: "一级动火作业",
|
value: 1
|
},
|
{
|
label: "二级动火作业",
|
value: 2
|
},
|
{
|
label: "特级动火作业",
|
value: 3
|
}
|
],
|
fireWorkList: [
|
{
|
name: "电焊",
|
id: 1
|
},
|
{
|
name: "气割",
|
id: 2
|
},
|
{
|
name: "切割",
|
id: 3
|
},
|
{
|
name: "打磨",
|
id: 4
|
},
|
{
|
name: "钻孔",
|
id: 5
|
},
|
{
|
name: "喷灯",
|
id: 6
|
},
|
{
|
name: "烘烤",
|
id: 7
|
},
|
{
|
name: "喷砂",
|
id: 8
|
},
|
{
|
name: "破碎地面",
|
id: 9
|
},
|
{
|
name: "清洗机",
|
id: 10
|
},
|
{
|
name: "其他",
|
id: 11
|
}
|
],
|
casProps: {
|
expandTrigger: 'hover',
|
value: 'uid',
|
label: 'username',
|
multiple: true,
|
lazy: true,
|
async lazyLoad(node, resolve){
|
const { value, level } = node
|
let nodes = []
|
if(level == 0){
|
nodes = props.lists.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: {
|
expandTrigger: 'hover',
|
value: 'uid',
|
label: 'realName',
|
multiple: true,
|
checkStrictly: false,
|
lazy: true,
|
async lazyLoad(node, resolve){
|
const { value, level } = node
|
let nodes = []
|
if(level == 0){
|
nodes = props.lists.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: {
|
expandTrigger: 'hover',
|
value: 'uid',
|
label: 'realName',
|
multiple: true,
|
lazy: true,
|
async lazyLoad(node, resolve){
|
const { value, level } = node
|
let nodes = []
|
if(level == 0){
|
nodes = props.lists.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: {
|
expandTrigger: 'hover',
|
value: 'uid',
|
label: 'username',
|
lazy: true,
|
async lazyLoad(node, resolve){
|
const { value, level } = node
|
let nodes = []
|
if(level == 0){
|
nodes = props.lists.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)
|
}
|
},
|
props1:{
|
expandTrigger: 'hover',
|
label: 'depName',
|
value: 'depId'
|
},
|
depProps:{
|
expandTrigger: 'hover',
|
label: 'depName',
|
value: 'depId',
|
multiple: true,
|
checkStrictly: true,
|
emitPath: false
|
}
|
});
|
const ruleFormRef = ref<FormInstance>()
|
const applyRules = reactive<FormRules>({
|
depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
workDepIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
"workDetail.methodList": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
|
"workDetail.other": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
|
});
|
const workSelectRef = ref()
|
|
// 页面载入时执行方法
|
onMounted(() => {
|
state.zyList = props.lists.spList.opList
|
getBasicData()
|
})
|
|
onUpdated(()=>{
|
console.log('false loading')
|
})
|
|
const getWorkerList = (val)=>{
|
const filteredList = props.lists.spList.opList.filter(i => state.form.workDepIds.includes(i.depId));
|
if(filteredList && filteredList.length>0){
|
state.zyList = filteredList
|
}else{
|
state.zyList = props.lists.spList.opList
|
}
|
}
|
|
const openWorkSelect = ()=>{
|
workSelectRef.value.openDialog(state.form.involveOtherWork)
|
}
|
|
const getSelected = ()=>{
|
state.form.involveOtherWork = workSelectRef.value.selected
|
}
|
|
const findParent = ()=>{
|
state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1]
|
state.form.seDepId = state.form.depIdList[0]
|
// state.form.seDepId = findNearestDepLevel2DepId(props.lists.departList2,state.form.applyDepId)
|
}
|
|
// 获取基础数据
|
const getBasicData = async ()=>{
|
state.tabLoading = true
|
const res = await workApplyApi().getFormData(1)
|
if (res.data.code === '200') {
|
state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList))
|
if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
|
state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
|
content,
|
approvalDepBasicId: id,
|
approvalUids: [],
|
approvalType: null
|
}))
|
}else{
|
state.form.approvalDepBasicList = []
|
}
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
});
|
}
|
state.tabLoading = false
|
};
|
|
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 = [...new Set(state.form.headUids.map((i)=>i[0]))]
|
state.form.startOrEndUids = state.form.headUids
|
state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
|
}
|
|
const getSafetyIds = ()=>{
|
state.form.safetyMeasureUids = state.form.guardianUids
|
}
|
|
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 transform2Arr = (arr: Array<any>)=>{
|
return arr.map((i)=>{
|
return {
|
uid: i,
|
certificate: '',
|
certExpiredAt: '',
|
certTypeName: ''
|
}
|
})
|
}
|
const transform2EObj = (id: any)=>{
|
return {
|
uid: id,
|
certificate: '',
|
certExpiredAt: '',
|
certTypeName: ''
|
}
|
}
|
|
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}
|
console.log(value,state.form.operatorUids,55)
|
}
|
}
|
|
const submitForm = async (formEl: FormInstance | undefined) => {
|
console.log(state.form.operatorUids,666)
|
if (!formEl) return
|
await formEl.validate(async (valid, fields) => {
|
if (valid) {
|
for(let i of state.form.approvalDepBasicList){
|
if(i.approvalUids.length == 0){
|
ElMessage({
|
type: 'warning',
|
message: '部分审批人未配置'
|
});
|
return
|
}
|
}
|
// if(Array.isArray(state.form.involveOtherWork)){
|
// state.form.involveOtherWork = state.form.involveOtherWork.join(',')
|
// }
|
state.form.riskIdentification = state.form.riskIdentification.join(',')
|
const {depIdList,...data} = state.form
|
data.workDetail.methodList = data.workDetail.methodList.map(item=>{
|
if(item == '其他'){
|
item = data.workDetail.other
|
}
|
return item
|
})
|
data.workDetail.workMethod = data.workDetail.methodList.join(',')
|
data.operatorUids = transform2Arr(data.operatorUids)
|
data.headUids = transform2Arr(data.headUids)
|
// data.analystUids = transformArr(data.analystUids)
|
data.guardianUids = transform2Arr(data.guardianUids)
|
data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
|
data.startOrEndUids = transform2Arr(data.startOrEndUids)
|
data.acceptUids = transform2Arr(data.acceptUids)
|
data.lastApprover = transform2EObj(data.lastApprover)
|
const res = await workApplyApi().submitFireApply(data)
|
if (res.data.code === '200') {
|
ElMessage({
|
type: 'success',
|
message: '提交成功!'
|
});
|
formEl.resetFields()
|
state.form.guardianUids = []
|
state.form.involveOtherWork = []
|
getBasicData()
|
} else {
|
ElMessage({
|
type: 'warning',
|
message: res.data.msg
|
})
|
state.form.riskIdentification = state.form.riskIdentification.split(',')
|
// state.form.involveOtherWork = state.form.involveOtherWork.split(',')
|
}
|
} else {
|
console.log('error submit!', fields)
|
ElMessage({
|
type: 'warning',
|
message: '有表单内容未完成,请再次检查完善'
|
})
|
}
|
})
|
}
|
|
const findNearestDepLevel2DepId = (data, targetDepId) => {
|
let nearestDepId = null;
|
const traverseTree = (node) => {
|
if (node.depId === targetDepId) {
|
return true;
|
}
|
if (node.children && node.children.length > 0) {
|
for (const child of node.children) {
|
const found = traverseTree(child);
|
if (found) {
|
if (child.depLevel === 2) {
|
nearestDepId = child.depId;
|
}
|
return true;
|
}
|
}
|
}
|
return false;
|
};
|
for (const root of data) {
|
traverseTree(root);
|
}
|
return nearestDepId;
|
};
|
|
// 折线图
|
const renderMenu = async (value: string) => {
|
Session.set('projectId',value)
|
userInfos.value.projectId = value
|
await initBackEndControlRoutes();
|
};
|
return {
|
renderMenu,
|
getWorkerList,
|
getBasicData,
|
getStartEndIds,
|
getSafetyIds,
|
isFirstRow,
|
submitForm,
|
findParent,
|
openWorkSelect,
|
getSelected,
|
workSelectRef,
|
singleSelect,
|
Search,
|
ruleFormRef,
|
applyRules,
|
...toRefs(state),
|
};
|
},
|
});
|
</script>
|
|
<style scoped lang="scss">
|
.home-container {
|
width: 100%;
|
height: 100vh;
|
overflow: hidden;
|
overflow-y: scroll;
|
&::-webkit-scrollbar{
|
width: 0;
|
background-color: transparent;
|
}
|
|
.homeCard{
|
width: 100%;
|
padding: 20px;
|
box-sizing: border-box;
|
background: #fff;
|
border-radius: 4px;
|
margin-bottom: 20px;
|
position: relative;
|
}
|
.applyBtn{
|
width: 100%;
|
background: #fff;
|
padding: 20px 0;
|
box-shadow: 0 -3px 8px rgba(150,150,150,.1);
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
.el-row{
|
margin-bottom: 20px;
|
}
|
.el-row:last-child {
|
margin-bottom: 0;
|
}
|
.el-input{
|
width: 100% !important;
|
}
|
.el-date-editor::v-deep{
|
width: 100%;
|
}
|
.el-select{
|
width: 100%;
|
}
|
.el-cascader{
|
width: 100% !important;
|
}
|
}
|
.valueSelect{
|
::v-deep(.el-popper){
|
display: none !important;
|
}
|
}
|
.tab-i{
|
margin-bottom: 15px;
|
|
&:last-of-type{
|
margin-bottom: 0;
|
}
|
::v-deep(.el-form-item){
|
.el-form-item__label{
|
margin-bottom: 4px;
|
}
|
}
|
}
|
</style>
|