From 596a6831ceb5417e2f4fb71f9e2dd1d2e2bcb6f8 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期五, 14 十月 2022 10:25:26 +0800
Subject: [PATCH] lct
---
src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue | 10
src/views/specialWorkSystem/flow/basicApprove/index.vue | 10
.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml | 4
.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_[Default_Changelist]/shelved.patch | 6817 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 6,827 insertions(+), 14 deletions(-)
diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_\133Default_Changelist\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_\133Default_Changelist\135/shelved.patch"
new file mode 100644
index 0000000..57c319d
--- /dev/null
+++ "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_\133Default_Changelist\135/shelved.patch"
@@ -0,0 +1,6817 @@
+Index: src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/brokenLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,152 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业单位ID">
+- <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="断路原因">
+- <el-input v-model="details.workDetail.bcReason" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="断路地段说明">
+- <el-input v-model="details.workDetail.bcExplain" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="涉及相关部门">
+- <el-input v-model="details.workDetail.involvedDepIds" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="图片">
+- <el-image v-for="item in details.workDetail.bcPath" :preview-src-list="details.workDetail.bcPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/ground.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/ground.vue b/src/views/specialWorkSystem/workTicket/apply/components/ground.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/ground.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,689 +0,0 @@
+- <template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- 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
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业单位" prop="workDetail.operationDepId">
+-<!-- <el-select v-model="form.workDetail.operationDepId">-->
+-<!-- <el-option-->
+-<!-- v-for="item in csDepList"-->
+-<!-- :key="item.value"-->
+-<!-- :label="item.label"-->
+-<!-- :value="item.value"-->
+-<!-- />-->
+-<!-- </el-select>-->
+- <el-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="范围" prop="workDetail.gbScope">
+- <el-input
+- v-model="form.workDetail.gbScope"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="动土方式" prop="workDetail.gbMethod">
+- <el-input
+- v-model="form.workDetail.gbMethod"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+- <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+- <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="24">
+- <el-form-item label="图片上传" prop="workDetail.gbPath">
+- <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+- <el-icon><Plus /></el-icon>
+- <template #tip>
+- <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div>
+- </template>
+- </el-upload>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- <el-dialog v-model="dialogVisible">
+- <img w-full :src="dialogImageUrl" alt="Preview Image" />
+- </el-dialog>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search,Plus } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+- import axios from 'axios';
+-
+-
+- interface stateType {
+- equipmentDialog: boolean,
+- form: Object,
+- csDepList: Array<any>,
+- otherWorkList: Array<any>,
+- fileList: Array<file>,
+- uploadUrl: string,
+- dialogVisible: Boolean,
+- dialogImageUrl: string | null,
+- imgLimit: number,
+- casProps: {},
+- isOverSize: Boolean,
+- materialList: Array<any>
+- }
+- interface file {
+- url: string;
+- }
+- export default {
+- name: 'groundForm',
+- components: {},
+- props:['workerList','departList'],
+- setup(props: any, context: any) {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- form: {
+- operatorUids: [],
+- workType: 4,
+- workLevel: 0,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- operationDepId: null,
+- gbScope: '',
+- gbMethod: '',
+- gbPath: [],
+- otherSpecialWork: []
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- isOverSize: false,
+- fileList: [],
+- materialList: [],
+- imgLimit: 3,
+- uploadUrl: '',
+- dialogVisible: false,
+- dialogImageUrl: null,
+- csDepList: [
+- {
+- label: "单位一",
+- value: 1
+- },
+- {
+- label: "单位二",
+- value: 2
+- },
+- {
+- label: "单位三",
+- value: 3
+- },
+- {
+- label: "单位四",
+- value: 4
+- },
+- {
+- label: "单位五",
+- value: 5
+- },
+- {
+- label: "单位六",
+- value: 6
+- }
+- ],
+- otherWorkList: [
+- {
+- label: '动火作业',
+- value: 1
+- },
+- {
+- label: '受限空间作业',
+- value: 2
+- },
+- {
+- label: '吊装作业',
+- value: 3
+- },
+- {
+- label: '动土作业',
+- value: 4
+- },
+- {
+- label: '断路作业',
+- value: 5
+- },
+- {
+- label: '高处作业',
+- value: 6
+- },
+- {
+- label: '临时用电作业',
+- value: 7
+- },
+- {
+- label: '盲板抽堵作业',
+- value: 8
+- }
+- ],
+- casProps: {
+- emitPath: false,
+- value: 'depId',
+- label: 'depName',
+- multiple: false,
+- expandTrigger: 'hover',
+- checkStrictly: true
+- }
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.gbScope": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.gbMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.gbPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
+- data.workDetail.gbPath = data.workDetail.gbPath.join(',')
+- const res = await workApplyApi().postGroundApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- state.form.workDetail.gbPath = []
+- state.fileList = []
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+-
+- const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+- console.log(uploadFile);
+- };
+-
+- const handlePictureCardPreview = (uploadFile: { url: string }) => {
+- state.dialogImageUrl = uploadFile.url!;
+- state.dialogVisible = true;
+- };
+-
+- const getUploadUrl = async (rawFile: any) => {
+- const fileSize = rawFile.size / 1024 < 500 ? '1' : '0'
+- if(fileSize === '0'){
+- ElMessage({
+- type: 'warning',
+- message: '文件大小不能超过500k。'
+- });
+- state.isOverSize = true
+- return false
+- }else{
+- const res = await workApplyApi().getUploadUrl(rawFile.name);
+- state.form.workDetail.gbPath.push(res.data.data.fileName)
+- state.uploadUrl = res.data.data.uploadUrl;
+- }
+- };
+-
+- const upload = async (params: any) => {
+- // const formData = new FormData();
+- // formData.append('file', state.fileList[0].raw);
+- let reader = new FileReader();
+- reader.readAsArrayBuffer(params.file);
+- reader.onload = async () => {
+- axios
+- .put(state.uploadUrl, reader.result, {
+- header: { 'Content-Type': 'multipart/form-data' }
+- })
+- .then(() => {
+- // if (state.fileList.length === 2) {
+- // state.fileList.splice(0, 1);
+- // }
+- // console.log(state.form.workDetail.gbPath,'gbpath')
+- });
+- };
+- };
+-
+- const beforeRemove = (file: {}, fileList: []) => {
+- const result = new Promise((resolve, reject) => {
+- if(!state.isOverSize){
+- ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
+- confirmButtonText: '确定',
+- cancelButtonText: '取消',
+- type: 'warning'
+- })
+- .then(() => {
+- // console.log(state.workDetail.gbPath,'path')
+- const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath))
+- fileList.map((item,index)=>{
+- if(item.uid === file.uid){
+- fileList.splice(index,1)
+- state.form.workDetail.gbPath.splice(index,1)
+- // 请求删除接口
+- deletePic(false,list[index])
+- }
+- })
+- })
+- .catch(() => {
+- reject(false);
+- });
+- }else{
+- const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath))
+- fileList.map((item,index)=>{
+- if(item.uid === file.uid){
+- fileList.splice(index,1)
+- state.form.workDetail.gbPath.splice(index,1)
+- deletePic(true,list[index])
+- }
+- })
+- state.isOverSize = false
+- }
+- });
+- return result;
+- };
+-
+-
+- // 删除图片接口
+- const deletePic = async(isOverSize:boolean,fileName:string)=>{
+- const res = await workApplyApi().deleteFile({fileName: fileName})
+- if (res.data.code === '200') {
+- ElMessage({
+- type: isOverSize ? 'error' : 'success',
+- message: isOverSize ? '上传失败':'删除成功!'
+- });
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }
+-
+- const showTip =()=>{
+- ElMessage({
+- type: 'warning',
+- message: '超出文件上传数量'
+- });
+- }
+-
+- // const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
+- // console.log('2111111111111')
+- // };
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 4,workLevel: null}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- Plus,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- handlePreview,
+- getUploadUrl,
+- beforeRemove,
+- upload,
+- showTip,
+- submitForm,
+- handlePictureCardPreview,
+- ...toRefs(state),
+- };
+- },
+- };
+-</script>
+-
+-<style scoped lang="scss">
+- .avatar-uploader .avatar {
+- width: 178px;
+- height: 178px;
+- display: block;
+- }
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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%;
+- }
+- :deep(.el-cascader){
+- width: 100% !important;
+- }
+- }
+-</style>
+-<style>
+- .avatar-uploader .el-upload {
+- border: 1px dashed var(--el-border-color);
+- border-radius: 6px;
+- cursor: pointer;
+- position: relative;
+- overflow: hidden;
+- transition: var(--el-transition-duration-fast);
+- }
+-
+- .avatar-uploader .el-upload:hover {
+- border-color: var(--el-color-primary);
+- }
+-
+- .el-icon.avatar-uploader-icon {
+- font-size: 28px;
+- color: #8c939d;
+- width: 178px;
+- height: 178px;
+- text-align: center;
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/index.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/index.vue b/src/views/specialWorkSystem/workTicket/apply/index.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/index.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,149 +0,0 @@
+-<template>
+- <div class="home-container">
+- <el-tabs type="border-card">
+- <el-tab-pane label="动火作业">
+- <fire-form :workerList = allWorkers></fire-form>
+- </el-tab-pane>
+- <el-tab-pane label="受限空间作业">
+- <space-form :workerList = allWorkers :departList = departmentList></space-form>
+- </el-tab-pane>
+- <el-tab-pane label="吊装作业">
+- <hoist-form :workerList = allWorkers></hoist-form>
+- </el-tab-pane>
+- <el-tab-pane label="动土作业">
+- <ground-form :workerList = allWorkers :departList = departmentList></ground-form>
+- </el-tab-pane>
+- <el-tab-pane label="断路作业">
+- <broken-form :workerList = allWorkers :departList = departmentList></broken-form>
+- </el-tab-pane>
+- <el-tab-pane label="高处作业">
+- <height-form :workerList = allWorkers :departList = departmentList></height-form>
+- </el-tab-pane>
+- <el-tab-pane label="临时用电作业">
+- <power-form :workerList = allWorkers></power-form>
+- </el-tab-pane>
+- <el-tab-pane label="盲板抽堵作业">
+- <plate-form :workerList = allWorkers></plate-form>
+- </el-tab-pane>
+- </el-tabs>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+- import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+-
+- interface stateType {
+- allWorkers: Array<any>
+- departmentList: Array<any>
+- }
+- export default defineComponent({
+- name: 'apply',
+- components: {
+- fireForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/fire.vue')),
+- spaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/space.vue')),
+- hoistForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/hoist.vue')),
+- groundForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/ground.vue')),
+- brokenForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/broken.vue')),
+- heightForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/height.vue')),
+- powerForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/power.vue')),
+- plateForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/apply/components/plate.vue'))
+- },
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- allWorkers: [],
+- departmentList: []
+- });
+-
+- // 获取用户列表
+- const getAll = async ()=>{
+- const res = await workApplyApi().getAllUsers()
+- if (res.data.code === '200') {
+- state.allWorkers = JSON.parse(JSON.stringify(res.data.data))
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- };
+-
+- // 获取部门列表
+- const getAllDepartment = async () => {
+- let res = await teamManageApi().getAllDepartment();
+- if (res.data.code === '200') {
+- state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- };
+-
+- // 页面载入时执行方法
+- onMounted(() => {
+- getAll();
+- getAllDepartment();
+- });
+-
+- return {
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- height: 80px;
+- z-index: 5;
+- 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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/height.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/height.vue b/src/views/specialWorkSystem/workTicket/apply/components/height.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/height.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,547 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业等级" prop="workLevel">
+- <el-select v-model="form.workLevel">
+- <el-option
+- v-for="item in workLevelList"
+- :key="item.value"
+- :label="item.label"
+- :value="item.value"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- type="textarea"
+- placeholder="请输入作业内容"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业地址" prop="workLocation">
+- <el-input
+- v-model="form.workLocation"
+- autosize
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业单位" prop="workDetail.operationDepId">
+- <!-- <el-select v-model="form.workDetail.operationDepId">-->
+- <!-- <el-option-->
+- <!-- v-for="item in heDepList"-->
+- <!-- :key="item.value"-->
+- <!-- :label="item.label"-->
+- <!-- :value="item.value"-->
+- <!-- />-->
+- <!-- </el-select>-->
+- <el-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业高度" prop="workDetail.operationHeight">
+- <el-input
+- v-model="form.workDetail.operationHeight"
+- type="number"
+- placeholder="请输入"
+- >
+- <template #append>米(m)</template>
+- </el-input>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+- <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+- <el-option
+- v-for="item in otherWorkList"
+- :key="item.value"
+- :label="item.label"
+- :value="item.value"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- equipmentDialog: boolean,
+- form: Object,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- heDepList: Array<any>,
+- otherWorkList: Array<any>,
+- casProps:{},
+- materialList: Array<any>
+- }
+- export default defineComponent({
+- name: 'heightForm',
+- components: {},
+- props:['workerList','departList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- form: {
+- operatorUids: [],
+- workType: 6,
+- workLevel: null,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- operationDepId: '',
+- operationHeight: null,
+- otherSpecialWork: []
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- heDepList: [
+- {
+- label: "单位一",
+- value: 1
+- },
+- {
+- label: "单位二",
+- value: 2
+- },
+- {
+- label: "单位三",
+- value: 3
+- },
+- {
+- label: "单位四",
+- value: 4
+- },
+- {
+- label: "单位五",
+- value: 5
+- },
+- {
+- label: "单位六",
+- value: 6
+- }
+- ],
+- materialList: [],
+- casProps: {
+- emitPath: false,
+- value: 'depId',
+- label: 'depName',
+- multiple: false,
+- expandTrigger: 'hover',
+- checkStrictly: true
+- },
+- workTypeList: [
+- {
+- label: "类型一",
+- value: 1
+- },
+- {
+- label: "类型二",
+- value: 2
+- }
+- ],
+- workLevelList: [
+- {
+- label: "一级高处作业",
+- value: 4
+- },
+- {
+- label: "二级高处作业",
+- value: 5
+- },
+- {
+- label: "三级高处作业",
+- value: 6
+- },
+- {
+- label: "特级高处作业",
+- value: 7
+- }
+- ],
+- otherWorkList: [
+- {
+- label: "动火作业",
+- value: 1
+- },
+- {
+- label: "受限空间作业",
+- value: 2
+- },
+- {
+- label: "吊装作业",
+- value: 3
+- },
+- {
+- label: "动土作业",
+- value: 4
+- },
+- {
+- label: "断路作业",
+- value: 5
+- },
+- {
+- label: "高处作业",
+- value: 6
+- },
+- {
+- label: "临时用电作业",
+- value: 7
+- },
+- {
+- label: "盲板抽堵作业",
+- value: 8
+- }
+- ]
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.operationHeight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+-
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
+- const res = await workApplyApi().postHeightApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 6,workLevel: state.form.workLevel}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+-
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- submitForm,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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%;
+- }
+- :deep(.el-cascader){
+- width: 100% !important;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/space.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/space.vue b/src/views/specialWorkSystem/workTicket/apply/components/space.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/space.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,513 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- 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
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed" />
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="受限空间所属单位" prop="workDetail.csDepId">
+-<!-- <el-select v-model="form.workDetail.csDepId">-->
+-<!-- <el-option-->
+-<!-- v-for="item in csDepList"-->
+-<!-- :key="item.value"-->
+-<!-- :label="item.label"-->
+-<!-- :value="item.value"-->
+-<!-- />-->
+-<!-- </el-select>-->
+- <el-cascader v-model="form.workDetail.csDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="受限空间名称" prop="workDetail.csName">
+- <el-input
+- v-model="form.workDetail.csName"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="空间内原有介质" prop="workDetail.csOriginalName">
+- <el-input
+- v-model="form.workDetail.csOriginalName"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+- <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+- <el-option v-for="item in otherWorkList" :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="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- csDepList: Array<any>,
+- otherWorkList: Array<any>,
+- casProps: {},
+- equipmentDialog: boolean,
+- materialList: Array<any>
+- }
+- export default defineComponent({
+- name: 'spaceForm',
+- components: {},
+- props:['workerList','departList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- materialList: [],
+- form: {
+- operatorUids: [],
+- workType: 2,
+- workLevel: 0,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- csDepId: null,
+- csName: '',
+- csOriginalName: '',
+- otherSpecialWork: []
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- csDepList: [
+- {
+- label: "单位一",
+- value: 1
+- },
+- {
+- label: "单位二",
+- value: 2
+- },
+- {
+- label: "单位三",
+- value: 3
+- },
+- {
+- label: "单位四",
+- value: 4
+- },
+- {
+- label: "单位五",
+- value: 5
+- },
+- {
+- label: "单位六",
+- value: 6
+- }
+- ],
+- casProps: {
+- emitPath: false,
+- value: 'depId',
+- label: 'depName',
+- multiple: false,
+- expandTrigger: 'hover',
+- checkStrictly: true
+- },
+- otherWorkList: [
+- {
+- label: '动火作业',
+- value: 1
+- },
+- {
+- label: '受限空间作业',
+- value: 2
+- },
+- {
+- label: '吊装作业',
+- value: 3
+- },
+- {
+- label: '动土作业',
+- value: 4
+- },
+- {
+- label: '断路作业',
+- value: 5
+- },
+- {
+- label: '高处作业',
+- value: 6
+- },
+- {
+- label: '临时用电作业',
+- value: 7
+- },
+- {
+- label: '盲板抽堵作业',
+- value: 8
+- }
+- ]
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.csDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.csOriginalName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+-
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
+- console.log(data,'data')
+- const res = await workApplyApi().postSpaceApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 2,workLevel: null}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+-
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- submitForm,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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%;
+- }
+- :deep(.el-cascader){
+- width: 100% !important;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/plate.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/plate.vue b/src/views/specialWorkSystem/workTicket/apply/components/plate.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/plate.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,755 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业等级" prop="workLevel">
+- <el-select v-model="form.workLevel">
+- <el-option
+- v-for="item in workLevelList"
+- :key="item.value"
+- :label="item.label"
+- :value="item.value"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- type="textarea"
+- placeholder="请输入作业内容"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业地址" prop="workLocation">
+- <el-input
+- v-model="form.workLocation"
+- autosize
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="盲板编号" prop="workDetail.bpCode">
+- <el-input
+- v-model="form.workDetail.bpCode"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="主要介质" prop="workDetail.mainMedia">
+- <el-input
+- v-model="form.workDetail.mainMedia"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="温度" prop="workDetail.temperature">
+- <el-input
+- v-model="form.workDetail.temperature"
+- type="number"
+- placeholder="请输入"
+- >
+- <template #append>摄氏度(℃)</template>
+- </el-input>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="压力" prop="workDetail.pressure">
+- <el-input
+- v-model="form.workDetail.pressure"
+- type="number"
+- placeholder="请输入"
+- >
+- <template #append>千帕(kPa)</template>
+- </el-input>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="盲板材质" prop="workDetail.bpMaterialQuality">
+- <el-input
+- v-model="form.workDetail.bpMaterialQuality"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="盲板规格" prop="workDetail.bpSpecification">
+- <el-input
+- v-model="form.workDetail.bpSpecification"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="盲板时间" prop="workDetail.installLine">
+- <el-date-picker
+- v-model="form.workDetail.installLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="盲板位置" prop="workDetail.bpLocation">
+- <el-input
+- v-model="form.workDetail.bpLocation"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+- <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+- <el-option
+- v-for="item in otherWorkList"
+- :key="item.value"
+- :label="item.label"
+- :value="item.value"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="24">
+- <el-form-item label="盲板位置图" prop="workDetail.bpLocationMapPath">
+- <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+- <el-icon><Plus /></el-icon>
+- <template #tip>
+- <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div>
+- </template>
+- </el-upload>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- <el-dialog v-model="dialogVisible">
+- <img w-full :src="dialogImageUrl" alt="Preview Image" />
+- </el-dialog>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+- import axios from 'axios';
+-
+- interface stateType {
+- form: Object,
+- csDepList: Array<any>,
+- otherWorkList: Array<any>,
+- workLevelList: Array<any>,
+- fileList: Array<file>,
+- uploadUrl: string,
+- dialogVisible: Boolean,
+- dialogImageUrl: string | null,
+- imgLimit: number,
+- isOverSize: boolean,
+- equipmentDialog: boolean,
+- materialList: Array<any>
+- }
+- interface file {
+- url: string;
+- }
+- export default defineComponent({
+- name: 'plateForm',
+- components: {},
+- props:['workerList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- materialList: [],
+- form: {
+- operatorUids: [],
+- workType: 8,
+- workLevel: null,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- bpCode: '',
+- mainMedia: '',
+- temperature: null,
+- pressure: null,
+- bpMaterialQuality: '',
+- bpSpecification: '',
+- bpLocation: '',
+- bpLocationMapPath: [],
+- installLine: [],
+- installBpTime: '',
+- uninstallBpTime: '',
+- otherSpecialWork: []
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- isOverSize: false,
+- fileList: [],
+- imgLimit: 3,
+- uploadUrl: '',
+- dialogVisible: false,
+- dialogImageUrl: null,
+- workLevelList: [
+- {
+- label: "抽盲板作业",
+- value: 11
+- },
+- {
+- label: "堵盲板作业",
+- value: 12
+- }
+- ],
+- csDepList: [
+- {
+- label: "单位一",
+- value: 1
+- },
+- {
+- label: "单位二",
+- value: 2
+- },
+- {
+- label: "单位三",
+- value: 3
+- },
+- {
+- label: "单位四",
+- value: 4
+- },
+- {
+- label: "单位五",
+- value: 5
+- },
+- {
+- label: "单位六",
+- value: 6
+- }
+- ],
+- otherWorkList: [
+- {
+- label: "动火作业",
+- value: 1
+- },
+- {
+- label: "受限空间作业",
+- value: 2
+- },
+- {
+- label: "吊装作业",
+- value: 3
+- },
+- {
+- label: "动土作业",
+- value: 4
+- },
+- {
+- label: "断路作业",
+- value: 5
+- },
+- {
+- label: "高处作业",
+- value: 6
+- },
+- {
+- label: "临时用电作业",
+- value: 7
+- },
+- {
+- label: "盲板抽堵作业",
+- value: 8
+- }
+- ]
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bpCode": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.mainMedia": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.temperature": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.pressure": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bpMaterialQuality": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bpSpecification": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.installLine": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bpLocation": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bpLocationMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+-
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- state.form.workDetail.installBpTime = JSON.parse(JSON.stringify(state.form.workDetail.installLine))[0]
+- state.form.workDetail.uninstallBpTime = JSON.parse(JSON.stringify(state.form.workDetail.installLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- let { installLine, ...data2 } = JSON.parse(JSON.stringify(state.form.workDetail))
+- data.workDetail = data2
+- data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
+- data.workDetail.bpLocationMapPath = data.workDetail.bpLocationMapPath.join(',')
+- data.workDetail.temperature = Number(data.workDetail.temperature)
+- data.workDetail.pressure = Number(data.workDetail.pressure)
+- const res = await workApplyApi().postPlateApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- state.form.workDetail.bpLocationMapPath = []
+- state.fileList = []
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+- const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+- console.log(uploadFile);
+- };
+-
+- const handlePictureCardPreview = (uploadFile: { url: string }) => {
+- state.dialogImageUrl = uploadFile.url!;
+- state.dialogVisible = true;
+- };
+-
+- const getUploadUrl = async (rawFile: any) => {
+- const fileSize = rawFile.size / 1024 < 500 ? '1' : '0'
+- if(fileSize === '0'){
+- ElMessage({
+- type: 'warning',
+- message: '文件大小不能超过500k。'
+- });
+- state.isOverSize = true
+- return false
+- }else{
+- const res = await workApplyApi().getUploadUrl(rawFile.name);
+- state.form.workDetail.bpLocationMapPath.push(res.data.data.fileName)
+- state.uploadUrl = res.data.data.uploadUrl;
+- console.log(res.data.data.fileName,'name')
+- }
+- };
+-
+- const upload = async (params: any) => {
+- // const formData = new FormData();
+- // formData.append('file', state.fileList[0].raw);
+- let reader = new FileReader();
+- reader.readAsArrayBuffer(params.file);
+- reader.onload = async () => {
+- axios
+- .put(state.uploadUrl, reader.result, {
+- header: { 'Content-Type': 'multipart/form-data' }
+- })
+- .then(() => {
+- // if (state.fileList.length === 2) {
+- // state.fileList.splice(0, 1);
+- // }
+- // console.log(state.form.workDetail.bpLocationMapPath,'bpLocationMapPath')
+- });
+- };
+- };
+-
+- const beforeRemove = (file: {}, fileList: []) => {
+- const result = new Promise((resolve, reject) => {
+- if(!state.isOverSize){
+- ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
+- confirmButtonText: '确定',
+- cancelButtonText: '取消',
+- type: 'warning'
+- })
+- .then(() => {
+- // console.log(state.workDetail.bpLocationMapPath,'path')
+- const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath))
+- fileList.map((item,index)=>{
+- if(item.uid === file.uid){
+- fileList.splice(index,1)
+- state.form.workDetail.bpLocationMapPath.splice(index,1)
+- deletePic(false,list[index])
+- }
+- })
+- // 请求删除接口
+- })
+- .catch(() => {
+- reject(false);
+- });
+- }else{
+- const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath))
+- fileList.map((item,index)=>{
+- if(item.uid === file.uid){
+- fileList.splice(index,1)
+- state.form.workDetail.bpLocationMapPath.splice(index,1)
+- deletePic(true,list[index])
+- }
+- })
+- state.isOverSize = false
+- }
+- });
+- return result;
+- };
+-
+-
+- // 删除图片接口
+- const deletePic = async(isOverSize:boolean,fileName:string)=>{
+- console.log(fileName,'fileName')
+- const res = await workApplyApi().deleteFile({fileName: fileName})
+- if (res.data.code === '200') {
+- ElMessage({
+- type: isOverSize ? 'error' : 'success',
+- message: isOverSize ? '上传失败':'删除成功!'
+- });
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }
+- const showTip =()=>{
+- ElMessage({
+- type: 'warning',
+- message: '超出文件上传数量'
+- });
+- }
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 8,workLevel: state.form.workLevel}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+-
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- handlePreview,
+- getUploadUrl,
+- beforeRemove,
+- upload,
+- showTip,
+- submitForm,
+- handlePictureCardPreview,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/fire.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/fire.vue b/src/views/specialWorkSystem/workTicket/apply/components/fire.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/fire.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,502 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业等级" prop="workLevel">
+- <el-select v-model="form.workLevel">
+- <el-option
+- v-for="item in workLevelList"
+- :key="item.value"
+- :label="item.label"
+- :value="item.value"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- type="textarea"
+- placeholder="请输入作业内容"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业地址" prop="workLocation">
+- <el-input
+- v-model="form.workLocation"
+- autosize
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="动火方式" prop="workDetail.hotMethod">
+- <el-input
+- v-model="form.workDetail.hotMethod"
+- autosize
+- type="textarea"
+- placeholder="请输入动火方式"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="关联作业" prop="workDetail.otherSpecialWork">
+- <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+- <el-option
+- v-for="item in otherWorkList"
+- :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="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>,
+- equipmentDialog: boolean,
+- materialList: Array<any>
+- }
+- export default defineComponent({
+- name: 'fireForm',
+- components: {},
+- props:['workerList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- materialList: [],
+- form: {
+- operatorUids: [],
+- workType: 1,
+- workLevel: null,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- hotMethod: '',
+- otherSpecialWork: []
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- workLevelList: [
+- {
+- label: "一级动火作业",
+- value: 1
+- },
+- {
+- label: "二级动火作业",
+- value: 2
+- },
+- {
+- label: "特级动火作业",
+- value: 3
+- }
+- ],
+- otherWorkList: [
+- {
+- label: "动火作业",
+- value: 1
+- },
+- {
+- label: "受限空间作业",
+- value: 2
+- },
+- {
+- label: "吊装作业",
+- value: 3
+- },
+- {
+- label: "动土作业",
+- value: 4
+- },
+- {
+- label: "断路作业",
+- value: 5
+- },
+- {
+- label: "高处作业",
+- value: 6
+- },
+- {
+- label: "临时用电作业",
+- value: 7
+- },
+- {
+- label: "盲板抽堵作业",
+- value: 8
+- }
+- ]
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- // 页面载入时执行方法
+- onMounted(() => {
+-
+- });
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- if (state.materialList.length == 0){
+- ElMessage({
+- type: 'warning',
+- message: '请确认关联物资的配置'
+- });
+- return
+- }
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',')
+- const res = await workApplyApi().postFireApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 1,workLevel: state.form.workLevel}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+-
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- submitForm,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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;
+- }
+- }
+-
+- .tab-i{
+- margin-bottom: 15px;
+-
+- &:last-of-type{
+- margin-bottom: 0;
+- }
+- ::v-deep(.el-form-item){
+- .el-form-item__label{
+- margin-bottom: 4px;
+- }
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/hoist.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue b/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/hoist.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,445 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业等级" prop="workLevel">
+- <el-select v-model="form.workLevel">
+- <el-option
+- v-for="item in workLevelList"
+- :key="item.value"
+- :label="item.label"
+- :value="item.value"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- type="textarea"
+- placeholder="请输入作业内容"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业地址" prop="workLocation">
+- <el-input
+- v-model="form.workLocation"
+- autosize
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="吊装工具名称" prop="workDetail.hoistingToolName">
+- <el-input
+- v-model="form.workDetail.hoistingToolName"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="起吊物体质量" prop="workDetail.weightMass">
+- <el-input
+- v-model="form.workDetail.weightMass"
+- type="number"
+- placeholder="请输入"
+- >
+- <template #append>吨(t)</template>
+- </el-input>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- equipmentDialog: boolean,
+- form: Object,
+- workLevelList: Array<any>,
+- materialList: Array<any>
+- }
+- export default defineComponent({
+- name: 'hoistForm',
+- components: {},
+- props:['workerList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- form: {
+- operatorUids: [],
+- workType: 3,
+- workLevel: null,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- hoistingToolName: '',
+- weightMass: null
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- materialList: [],
+- workLevelList: [
+- {
+- label: "一级吊装作业",
+- value: 8
+- },
+- {
+- label: "二级吊装作业",
+- value: 9
+- },
+- {
+- label: "三级吊装作业",
+- value: 10
+- }
+- ]
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.weightMass": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+-
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- data.workDetail.weightMass = Number(data.workDetail.weightMass)
+- const res = await workApplyApi().postHoistApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 3,workLevel: state.form.workLevel}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+-
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- submitForm,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/fireLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,137 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业方式">
+- <el-input v-model="details.workDetail.hotMethod" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'fire',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/hoistLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,146 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="吊装工具名称">
+- <el-input v-model="details.workDetail.hoistingToolName" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="起吊物体重量">
+- <el-input v-model="details.workDetail.weightMass" readonly type="textarea"><template #append>吨(t)</template></el-input>
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/power.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/power.vue b/src/views/specialWorkSystem/workTicket/apply/components/power.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/power.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,443 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- 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
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="电源接入点" prop="workDetail.powerAccessPoint">
+- <el-input
+- v-model="form.workDetail.powerAccessPoint"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="工作电压" prop="workDetail.workingVoltage">
+- <el-input
+- v-model="form.workDetail.workingVoltage"
+- type="number"
+- placeholder="请输入"
+- >
+- <template #append>伏特(v)</template>
+- </el-input>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="用电设备及功率" prop="workDetail.equipmentAndPower">
+- <el-input
+- v-model="form.workDetail.equipmentAndPower"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workLevelList: Array<any>,
+- equipmentDialog: boolean,
+- materialList: Array<any>
+- }
+- export default defineComponent({
+- name: 'powerForm',
+- components: {},
+- props:['workerList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- materialList: [],
+- form: {
+- operatorUids: [],
+- workType: 7,
+- workLevel: 0,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- powerAccessPoint: '',
+- workingVoltage: null,
+- equipmentAndPower: ''
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- workLevelList: [
+- {
+- label: "一级吊装作业",
+- value: 8
+- },
+- {
+- label: "二级吊装作业",
+- value: 9
+- },
+- {
+- label: "三级吊装作业",
+- value: 10
+- }
+- ]
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.workingVoltage": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.equipmentAndPower": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+-
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- // data.workDetail.weightMass = Number(data.workDetail.weightMass)
+- const res = await workApplyApi().postPowerApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 7,workLevel: null}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- submitForm,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/heightLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,146 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业单位ID">
+- <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业高度">
+- <el-input v-model="details.workDetail.operationHeight" readonly type="textarea"><template #append>米(m)</template></el-input>
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/plateLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,170 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="盲板编号">
+- <el-input v-model="details.workDetail.bpCode" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="主要介质">
+- <el-input v-model="details.workDetail.mainMedia" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="温度">
+- <el-input v-model="details.workDetail.temperature" readonly type="textarea"><template #append>摄氏度(℃)</template></el-input>
+- </el-form-item>
+- <el-form-item label="压力">
+- <el-input v-model="details.workDetail.pressure" readonly type="textarea"><template #append>千帕(kPa)</template></el-input>
+- </el-form-item>
+- <el-form-item label="盲板材质">
+- <el-input v-model="details.workDetail.bpMaterialQuality" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="盲板规格">
+- <el-input v-model="details.workDetail.bpSpecification" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="盲板位置">
+- <el-input v-model="details.workDetail.bpLocation" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="装盲板时间">
+- <el-input v-model="details.workDetail.installBpTime" readonly/>
+- </el-form-item>
+- <el-form-item label="拆盲板时间">
+- <el-input v-model="details.workDetail.uninstallBpTime" readonly/>
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="盲板位置图">
+- <el-image v-for="item in details.workDetail.bpLocationMapPath" :preview-src-list="details.workDetail.bpLocationMapPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/groundLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,152 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业单位">
+- <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="范围">
+- <el-input v-model="details.workDetail.gbScope" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="动土方式">
+- <el-input v-model="details.workDetail.gbMethod" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="图片">
+- <el-image v-for="item in details.workDetail.gbPath" :preview-src-list="details.workDetail.gbPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/index.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/index.vue b/src/views/specialWorkSystem/workTicket/approve/index.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/index.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,815 +0,0 @@
+-<template>
+- <div class="home-container">
+-<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">-->
+-<!-- <el-tab-pane label="申请中" name="1">-->
+- <div style="height: 100%">
+- <el-row class="homeCard">
+- <span>作业类型:</span>
+- <el-col :span="10">
+- <div class="grid-content topInfo">
+- <el-select v-model="searchWord">
+- <el-option
+- v-for="item in workType"
+- :key="item.id"
+- :label="item.name"
+- :value="item.id"
+- />
+- </el-select>
+- <el-button type="primary" @click="searchRecord">查询</el-button>
+- <el-button plain @click="clearSearch">重置</el-button>
+- </div>
+- </el-col>
+- </el-row>
+- <div class="homeCard">
+- <div class="main-card">
+- <el-row class="cardTop">
+- <el-col :span="12" class="mainCardBtn">
+- <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
+- <!-- <el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+- <!-- <el-button type="success" size="default">设置分类</el-button>-->
+- </el-col>
+- <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+- </el-row>
+- <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
+- <el-table-column property="applyUname" label="申请人" />
+- <el-table-column property="depName" label="部门名称" />
+- <el-table-column property="operators" label="作业人" />
+- <el-table-column property="workTypeDesc" label="作业类型" />
+- <el-table-column property="workLevelDesc" label="作业等级" />
+- <el-table-column property="applyTime" label="申请时间" width="180" />
+- <el-table-column label="审批状态" align="center" width="180">
+- <template #default="scope">
+- <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag>
+- </template>
+- </el-table-column>
+- <el-table-column fixed="right" label="操作" align="center" width="250">
+- <template #default="scope">
+- <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+- <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button>
+-<!-- <el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">终止</el-button>-->
+- </template>
+- </el-table-column>
+- </el-table>
+- <div class="pageBtn">
+- <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
+- </div>
+- </div>
+- </div>
+- </div>
+- <el-dialog v-model="dialogDetails" title="作业审批详情" center>
+- <fire v-if="dialogType == 1" :details = details></fire>
+- <space v-else-if="dialogType == 2" :details = details></space>
+- <hoist v-else-if="dialogType == 3" :details = details></hoist>
+- <ground v-else-if="dialogType == 4" :details = details></ground>
+- <broken v-else-if="dialogType == 5" :details = details></broken>
+- <height v-else-if="dialogType == 6" :details = details></height>
+- <power v-else-if="dialogType == 7" :details = details></power>
+- <plate v-else :details = details></plate>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button type="primary" @click="dialogDetails = false"
+- >确认</el-button
+- >
+- </span>
+- </template>
+- </el-dialog>
+- <el-dialog v-model="dialogStatus" title="作业审批进度" center width="60%">
+- <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px">
+- <el-form-item label="申请作业人">
+- <el-input v-model="approveInfo.operators" readonly type="textarea" />
+- </el-form-item>
+- </el-form>
+- <div style="display: flex; flex-direction: column-reverse">
+- <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem">
+- <div class="stepNum">{{ item.stepSerial }}</div>
+- <div class="stepCard">
+- <el-card class="box-card" shadow="always">
+- <div class="text">
+- 审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span>
+- </div>
+- <div class="text">
+- 审批层级:<span class="bold-text">{{ item.typeDesc }}</span>
+- </div>
+- <div class="text" v-if="item.auditTypeDesc">
+- 审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span>
+- </div>
+- <div class="text" v-show="item.startApprovalTime != null">
+- 开始时间:<span>{{ item.startApprovalTime }}</span>
+- </div>
+- <div class="approveUnit">
+- <div class="item-tit"><span>审批人</span><span>审批状态</span></div>
+- <div class="item-cont" v-for="i in item.stepUnits">
+- <span>{{ i.approvalUname }}</span
+- ><span>{{ i.resultDesc }}</span>
+- </div>
+- </div>
+- <div class="approveItem">
+- <div class="item-tit">
+- <span>审批项目</span>
+-<!-- <span>类型</span>-->
+- <div>措施标准</div>
+- </div>
+- <div class="item-cont" v-for="i in item.stepItems">
+- <span>{{ i.itemName }}</span>
+-<!-- <span>{{ i.typeDesc }}</span>-->
+- <div v-if="i.measure !== null">
+- <div>
+- <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>
+- </div>
+- <div>
+- <span>措施内容:</span><span>{{ i.measure.context }}</span>
+- </div>
+- </div>
+- <div v-if="i.stand !== null">
+- <div>
+- <span>标题名称:</span><span>{{ i.stand.title }}</span>
+- </div>
+- <div>
+- <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>
+- </div>
+- </div>
+- </div>
+- </div>
+- <div class="text" v-show="item.expFinishApprovalTime != null">
+- 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
+- </div>
+- <div class="text" v-show="item.finishApprovalTime != null">
+- 结束时间:<span>{{ item.finishApprovalTime }}</span>
+- </div>
+- </el-card>
+- </div>
+- </div>
+- </div>
+- </el-dialog>
+- <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+- <span>您确定要终止该条审批吗?</span>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="deleteDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+-<!-- </el-tab-pane>-->
+-<!-- <el-tab-pane label="已通过" name="2">-->
+-<!-- <div style="height: 100%">-->
+-<!-- <el-row class="homeCard">-->
+-<!-- <el-col :span="8">-->
+-<!-- <div class="grid-content topInfo">-->
+-<!-- <el-input v-model="searchWord" placeholder="作业证名称"></el-input>-->
+-<!-- <el-button type="primary">查询</el-button>-->
+-<!-- <el-button plain>重置</el-button>-->
+-<!-- </div>-->
+-<!-- </el-col>-->
+-<!-- </el-row>-->
+-<!-- <div class="homeCard">-->
+-<!-- <div class="main-card">-->
+-<!-- <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">-->
+-<!-- <el-table-column type="selection" width="55" />-->
+-<!-- <el-table-column type="index" label="编号" width="200" />-->
+-<!-- <el-table-column property="level" label="作业证等级" width="180" sortable />-->
+-<!-- <el-table-column property="applyDate" label="申请日期" sortable />-->
+-<!-- <el-table-column property="name" label="申请人" width="180" />-->
+-<!-- <el-table-column property="department" label="申请部门" width="180" />-->
+-<!-- <el-table-column label="申请状态" width="180">-->
+-<!-- <template #default="scope">-->
+-<!-- <el-tag type="success">{{ scope.row.status }}</el-tag>-->
+-<!-- </template>-->
+-<!-- </el-table-column>-->
+-<!-- </el-table>-->
+-<!-- <div class="pageBtn">-->
+-<!-- <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />-->
+-<!-- </div>-->
+-<!-- </div>-->
+-<!-- </div>-->
+-<!-- </div>-->
+-<!-- </el-tab-pane>-->
+-<!-- </el-tabs>-->
+- </div>
+-</template>
+-
+-<script lang="ts">
+-import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue';
+-import { storeToRefs } from 'pinia';
+-import { initBackEndControlRoutes } from '/@/router/backEnd';
+-import { useUserInfo } from '/@/stores/userInfo';
+-import { Session } from '/@/utils/storage';
+-import { useRouter } from 'vue-router';
+-import { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue';
+-import { ElTable } from 'element-plus';
+-import { FormInstance, FormRules, ElMessage } from 'element-plus';
+-import { workApprovalApi } from '/@/api/specialWorkSystem/workApproval';
+-import type { TabsPaneContext } from 'element-plus';
+-import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+-
+-// 定义接口来定义对象的类型
+-interface stateType {
+- applyData: Array<string>;
+- workTimeList: Array<string>;
+- multipleSelection: Array<any>;
+- deleteArr: Array<any>;
+- approveInfo: Object;
+- dialogDetails: boolean;
+- dialogStatus: boolean;
+- deleteDialog: boolean;
+- pageIndex1: number;
+- pageSize1: number;
+- chosenIndex: null | number;
+- deleteId: null | number;
+- searchWord: string;
+- totalSize1: number;
+- activeName: string;
+- addRecord: {};
+- details: {};
+- statusInfo: {};
+- workType: Array<type>;
+- dialogType: number | null;
+- departmentList: Array<any>;
+- departmentRecursionList: Array<DepartmentState>;
+-}
+-interface type {
+- id: number;
+- name: string;
+-}
+-interface DepartmentState {
+- depId: number;
+- depName: string;
+-}
+-export default defineComponent({
+- name: 'myApproval',
+- components: {
+- fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/fireLog.vue')),
+- space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/spaceLog.vue')),
+- hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/hoistLog.vue')),
+- ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/groundLog.vue')),
+- broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/brokenLog.vue')),
+- height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/heightLog.vue')),
+- power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/powerLog.vue')),
+- plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/plateLog.vue'))
+- },
+- setup() {
+- const userInfo = useUserInfo();
+- const { userInfos } = storeToRefs(userInfo);
+- const router = useRouter();
+- const state = reactive<stateType>({
+- pageIndex1: 1,
+- pageSize1: 10,
+- totalSize1: 0,
+- dialogType: null,
+- activeName: '1',
+- departmentList: [],
+- departmentRecursionList: [],
+- chosenIndex: null,
+- searchWord: '',
+- applyData: [],
+- workTimeList: [],
+- multipleSelection: [],
+- approveInfo: {
+- approvalSteps: [],
+- operators: []
+- },
+- dialogDetails: false,
+- dialogStatus: false,
+- deleteDialog: false,
+- addRecord: {},
+- details: {},
+- statusInfo: {},
+- deleteId: null,
+- deleteArr: [],
+- workType: [
+- { id: 1, name: '动火作业' },
+- { id: 2, name: '受限空间作业' },
+- { id: 3, name: '吊装作业' },
+- { id: 4, name: '动土作业' },
+- { id: 5, name: '断路作业' },
+- { id: 6, name: '高处作业' },
+- { id: 7, name: '临时用电作业' },
+- { id: 8, name: '盲板抽堵作业' }
+- ]
+- });
+- interface User {
+- name: string;
+- list: [];
+- info: string;
+- }
+-
+- // 刷新
+- const reLoadData = async () => {
+- getListByPage();
+- };
+-
+- // 填写表单
+- const toApply = () => {
+- router.push({
+- path: 'apply'
+- });
+- };
+-
+- const handleClick = (tab: TabsPaneContext, event: Event) => {
+- console.log(tab, event);
+- };
+-
+- // 获取部门列表
+- const getAllDepartment = async () => {
+- let res = await teamManageApi().getAllDepartment();
+- if (res.data.code === '200') {
+- state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+- recursion(state.departmentList);
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- };
+-
+- // 获取层级审批数据
+- // const getApprovalData = async (id) => {
+- // let res = await workApprovalApi().getApprovalData({workApplyId: id});
+- // if (res.data.code === '200') {
+- // console.log(res.data.data,'层级数据')
+- // // state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+- // // recursion(state.departmentList);
+- // } else {
+- // ElMessage({
+- // type: 'warning',
+- // message: res.data.msg
+- // });
+- // }
+- // };
+-
+- const recursion = (value: any) => {
+- for (let i of value) {
+- if (i.children.length !== 0) {
+- state.departmentRecursionList.push(i);
+- recursion(i.children);
+- } else {
+- state.departmentRecursionList.push(i);
+- }
+- }
+- };
+-
+- // 分页获取工作时间组列表
+- const getListByPage = async () => {
+- const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } };
+- let res = await workApprovalApi().getApprovalListPage(data);
+- if (res.data.code === '200') {
+- state.applyData = JSON.parse(JSON.stringify(res.data.data));
+- state.applyData = state.applyData.map((item) => {
+- if (item.operators == null || item.operators == []) {
+- item.operators = [];
+- } else {
+- item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);
+- }
+- return item;
+- });
+- state.totalSize1 = res.data.total;
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- };
+-
+- // 关键词查询记录
+- const searchRecord = async () => {
+- if (state.searchWord == '') {
+- ElMessage({
+- type: 'warning',
+- message: '请输入查询关键词'
+- });
+- } else {
+- getListByPage();
+- }
+- };
+- // 重置搜索
+- const clearSearch = async () => {
+- state.searchWord = '';
+- getListByPage();
+- };
+-
+- // 查看进度
+- const viewStatus = (row) => {
+- getStatus({ workApplyId: row.workApplyId });
+- state.dialogStatus = true;
+- };
+-
+- // 查询进度方法
+- const getStatus = async (data: any) => {
+- let res = await workApprovalApi().getApprovalStatus(data);
+- if (res.data.code === '200') {
+- state.approveInfo = JSON.parse(JSON.stringify(res.data.data));
+- state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname);
+- console.log(state.approveInfo, '我的审批');
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- };
+-
+- const deleteRecordBtn = (row) => {
+- state.deleteId = row.workApplyId;
+- state.deleteDialog = true;
+- };
+-
+- // 取消申请方法
+- const deleteRecord = async (data: any) => {
+- let res = await workApprovalApi().postAbord(data);
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '取消成功!'
+- });
+- getListByPage();
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- };
+-
+- const conFirmDelete = () => {
+- deleteRecord({ workApplyId: state.deleteId });
+- state.deleteDialog = false;
+- };
+-
+- const handleSizeChange1 = (val: number) => {
+- state.pageSize1 = val;
+- getListByPage();
+- };
+- const handleCurrentChange1 = (val: number) => {
+- state.pageIndex1 = val;
+- getListByPage();
+- };
+-
+- // 查看记录
+- const viewRecord = (row: any) => {
+- state.dialogType = row.workType
+- state.details = JSON.parse(JSON.stringify(row));
+- console.log(state.details,'details')
+- // getApprovalData(state.details.workApplyId)
+- if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
+- state.details.workDetail.otherSpecialWork=[]
+- }
+- else {
+- console.log(state.details.workDetail.otherSpecialWork,'split')
+- const a = state.details.workDetail.otherSpecialWork
+- state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {
+- return state.workType.find((i: { id: number }) => i.id === Number(item))?.name;
+- });
+- }
+- if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){
+- state.details.workDetail.involvedDepIds=[]
+- }
+- else {
+- const a = state.details.workDetail.involvedDepIds
+- state.details.workDetail.involvedDepIds = a.split(',').map((item) => {
+- return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName;
+- });
+- }
+- if(state.details.workDetail.csDepId){
+- state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName;
+- }
+- if(state.details.workDetail.operationDepId){
+- state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName;
+- }
+- if(state.details.workDetail.gbPath){
+- state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',')
+- }
+- if(state.details.workDetail.bcPath){
+- state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',')
+- }
+- if(state.details.workDetail.bpLocationMapPath){
+- state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',')
+- }
+- state.dialogDetails = true;
+- };
+-
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId', value);
+- userInfos.value.projectId = value;
+- await initBackEndControlRoutes();
+- };
+-
+- // 页面载入时执行方法
+- onMounted(() => {
+- getListByPage();
+- getAllDepartment()
+- });
+-
+- return {
+- View,
+- Edit,
+- Delete,
+- Refresh,
+- Plus,
+- Finished,
+- reLoadData,
+- toApply,
+- handleClick,
+- searchRecord,
+- clearSearch,
+- viewRecord,
+- viewStatus,
+- deleteRecordBtn,
+- conFirmDelete,
+- getListByPage,
+- handleSizeChange1,
+- handleCurrentChange1,
+- ...toRefs(state)
+- };
+- }
+-});
+-</script>
+-
+-<style scoped lang="scss">
+-$homeNavLengh: 8;
+-.home-container {
+- height: calc(100vh - 144px);
+- box-sizing: border-box;
+- overflow: hidden;
+- .demo-tabs {
+- width: 100%;
+- height: 100%;
+-
+- &::v-deep(.el-tabs__content) {
+- height: calc(100% - 60px);
+- }
+-
+- .el-tab-pane {
+- height: 100%;
+- }
+- }
+- .homeCard {
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+-
+- .main-card {
+- width: 100%;
+- height: 100%;
+- .cardTop {
+- display: flex;
+- align-items: center;
+- justify-content: space-between;
+- margin-bottom: 20px;
+- .mainCardBtn {
+- margin: 0;
+- }
+- }
+- .pageBtn {
+- height: 60px;
+- display: flex;
+- align-items: center;
+- justify-content: right;
+-
+- .demo-pagination-block + .demo-pagination-block {
+- margin-top: 10px;
+- }
+- .demo-pagination-block .demonstration {
+- margin-bottom: 16px;
+- }
+- }
+- }
+- &:last-of-type {
+- height: calc(100% - 100px);
+- }
+- }
+- .stepItem {
+- display: flex;
+- align-items: flex-start;
+- margin-top: 30px;
+- margin-left: 30px;
+- padding-bottom: 30px;
+- padding-left: 40px;
+- border-left: 1px solid #a0cfff;
+- position: relative;
+- &:first-of-type {
+- margin-top: 30px;
+- }
+- &:first-of-type {
+- margin-bottom: 0;
+- border-left: none;
+- }
+- .stepNum {
+- position: absolute;
+- width: 40px;
+- height: 40px;
+- border-radius: 20px;
+- box-sizing: border-box;
+- font-size: 18px;
+- color: #333;
+- border: 1px solid #a0cfff;
+- line-height: 38px;
+- text-align: center;
+- left: -20px;
+- top: -30px;
+- background: #d9ecff;
+- }
+- .stepCard {
+- width: 100%;
+- margin-top: -30px;
+-
+- .box-card {
+- width: 100%;
+-
+- .card-header {
+- display: flex;
+- justify-content: space-between;
+- align-items: center;
+-
+- span {
+- font-weight: bold;
+- margin-left: 10px;
+- }
+- }
+-
+- .text {
+- width: 100%;
+- font-size: 14px;
+- margin-bottom: 10px;
+- padding-left: 10px;
+-
+- span {
+- color: #409eff;
+- }
+-
+- .bold-text{
+- font-weight: bolder;
+- }
+-
+- &:last-of-type {
+- margin-bottom: 0;
+- }
+- }
+- .approveUnit {
+- width: 100%;
+- font-size: 14px;
+- margin-bottom: 20px;
+- padding: 10px 15px;
+- border: 1px solid #fff;
+- background: #ecf8ff;
+- border-radius: 6px;
+- .item-tit {
+- width: 100%;
+- display: flex;
+- color: #409eff;
+- align-items: flex-start;
+- justify-content: space-between;
+- padding-bottom: 10px;
+- border-bottom: 1px solid #a0cfff;
+-
+- & > span {
+- flex: 1;
+- &:last-of-type{
+- text-align: center;
+- }
+- }
+- & > div {
+- flex: 1;
+- text-align: center;
+- }
+- }
+- .item-cont {
+- width: 100%;
+- display: flex;
+- align-items: center;
+- justify-content: space-between;
+- padding: 10px 0;
+- border-bottom: 1px solid #c6e2ff;
+-
+- & > span {
+- flex: 1;
+- &:last-of-type{
+- text-align: center;
+- }
+- }
+- & > div {
+- flex: 1;
+- text-align: center;
+-
+- & > div {
+- text-align: left;
+- width: 100%;
+- display: flex;
+- justify-content: center;
+- align-items: center;
+- span {
+- width: 45%;
+- &:first-of-type {
+- width: 30%;
+- }
+- }
+- }
+- }
+- &:last-of-type {
+- border-bottom: 0;
+- }
+- }
+- }
+- .approveItem {
+- width: 100%;
+- font-size: 14px;
+- margin-bottom: 20px;
+- padding: 10px 15px;
+- background: #ecf8ff;
+- border: 1px solid #fff;
+- border-radius: 6px;
+- .item-tit {
+- width: 100%;
+- display: flex;
+- color: #409eff;
+- align-items: flex-start;
+- justify-content: space-between;
+- padding-bottom: 10px;
+- border-bottom: 1px solid #a0cfff;
+-
+- & > span {
+- flex: 1;
+- }
+- & > div {
+- flex: 2;
+- text-align: center;
+- }
+- }
+- .item-cont {
+- width: 100%;
+- display: flex;
+- align-items: center;
+- justify-content: space-between;
+- padding: 10px 0;
+- border-bottom: 1px solid #c6e2ff;
+-
+- & > span {
+- flex: 1;
+- }
+- & > div {
+- flex: 2;
+- text-align: center;
+-
+- & > div {
+- text-align: left;
+- width: 100%;
+- display: flex;
+- justify-content: center;
+- align-items: flex-start;
+- margin-bottom: 10px;
+- span {
+- width: 50%;
+- &:first-of-type {
+- width: 25%;
+- }
+- }
+- }
+- }
+- &:last-of-type {
+- border-bottom: 0;
+- }
+- }
+- }
+- }
+- }
+- &:hover .card-header {
+- color: #0098f5;
+- }
+- &:hover .stepNum {
+- border: 2px solid #0098f5;
+- color: #0098f5;
+- }
+- }
+- .el-row {
+- display: flex;
+- align-items: center;
+- margin-bottom: 20px;
+- &:last-child {
+- margin-bottom: 0;
+- }
+- .grid-content {
+- align-items: center;
+- min-height: 36px;
+- }
+-
+- .topInfo {
+- display: flex;
+- align-items: center;
+- font-size: 16px;
+- font-weight: bold;
+-
+- & > div {
+- white-space: nowrap;
+- margin-right: 20px;
+- }
+- }
+- }
+- .el-card {
+- border: 0;
+- }
+-}
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/spaceLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,149 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="受限空间所属单位">
+- <el-input v-model="details.workDetail.csDepId" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="受限空间名称">
+- <el-input v-model="details.workDetail.csName" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="空间原有介质名称">
+- <el-input v-model="details.workDetail.csOriginalName" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/apply/components/broken.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/apply/components/broken.vue b/src/views/specialWorkSystem/workTicket/apply/components/broken.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/apply/components/broken.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,632 +0,0 @@
+-<template>
+- <div class="home-container">
+- <div style="height: 100%">
+- <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+- <div class="homeCard">
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业人" prop="operatorUids">
+- <el-select v-model="form.operatorUids" multiple>
+- <el-option
+- v-for="item in workerList"
+- :key="item.uid"
+- :label="item.username"
+- :value="item.uid"
+- />
+- </el-select>
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="作业时间" prop="workTimeLine">
+- <el-date-picker
+- v-model="form.workTimeLine"
+- 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-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业内容" prop="workContent">
+- <el-input
+- v-model="form.workContent"
+- autosize
+- 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
+- type="textarea"
+- placeholder="请输入作业地址"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="危害辨识" prop="hazardIdentification">
+- <el-input
+- v-model="form.hazardIdentification"
+- placeholder="请输入危害辨识"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-divider border-style="dashed"/>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="作业单位" prop="workDetail.operationDepId">
+-<!-- <el-select v-model="form.workDetail.operationDepId">-->
+-<!-- <el-option-->
+-<!-- v-for="item in csDepList"-->
+-<!-- :key="item.value"-->
+-<!-- :label="item.label"-->
+-<!-- :value="item.value"-->
+-<!-- />-->
+-<!-- </el-select>-->
+- <el-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps2" :show-all-levels="false" @change="handleChange2" />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="断路原因" prop="workDetail.bcReason">
+- <el-input
+- v-model="form.workDetail.bcReason"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="断路地段说明" prop="workDetail.bcExplain">
+- <el-input
+- v-model="form.workDetail.bcExplain"
+- autosize
+- type="textarea"
+- placeholder="请输入"
+- />
+- </el-form-item>
+- </el-col>
+- <el-col :span="12">
+- <el-form-item label="涉及相关部门" prop="workDetail.involvedDepIds">
+- <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" />
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="24">
+- <el-form-item label="图片上传" prop="workDetail.bcPath">
+- <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+- <el-icon><Plus /></el-icon>
+- <template #tip>
+- <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div>
+- </template>
+- </el-upload>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- <el-row>
+- <el-col :span="12">
+- <el-form-item label="选择关联物资">
+- <el-button type="primary" @click="getMaList">选择物资标准</el-button>
+- </el-form-item>
+- </el-col>
+- </el-row>
+- </div>
+- </el-form>
+- <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial">
+- <el-tabs tab-position="left" class="demo-tabs" type="border-card">
+- <el-tab-pane v-for="(item,index) in materialList" :label="item.materialTypeName" :key="index">
+- <div style="margin-bottom: 20px">
+- <el-form label-width="150px" label-position="top">
+- <div v-if="item.mustList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">必选</div>
+- <el-form-item v-if="item.mustList.length>0" class="tab-i" v-for="(i,x) in item.mustList" :key="x" :label="item.mustList[x].materialName + ':'" prop="defaultVal" :rules="[{ type: 'defaultVal', required: true, message: '该内容不能为空', trigger: 'blur'}]">
+- <el-input size="default" type="number" v-model="item.mustList[x].value" @change="(val)=>toZero(val,index,'mustList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.mustList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- <div v-if="item.unList.length>0" style="width: 100%;border-bottom: 1px solid #ccc;padding-bottom: 6px;margin-bottom: 10px;font-weight: bolder">其他</div>
+- <el-form-item v-if="item.unList.length>0" class="tab-i" v-for="(i,x) in item.unList" :key="x" :label="item.unList[x].materialName + ':'">
+- <el-input size="default" type="number" v-model="item.unList[x].value" @change="(val)=>toZero(val,index,'unList',x)" placeholder="请输入配置数量,空值默认为0">
+- <template #append>{{'库存:' + item.unList[x].stock}}</template>
+- </el-input>
+- </el-form-item>
+- </el-form>
+- </div>
+- </el-tab-pane>
+- </el-tabs>
+- <template #footer>
+- <span class="dialog-footer">
+- <el-button @click="equipmentDialog = false" size="default">取消</el-button>
+- <el-button type="primary" @click="conFirmDevices" size="default">确认</el-button>
+- </span>
+- </template>
+- </el-dialog>
+- <div class="applyBtn">
+- <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+- </div>
+- </div>
+- <el-dialog v-model="dialogVisible">
+- <img w-full :src="dialogImageUrl" alt="Preview Image" />
+- </el-dialog>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage, ElMessageBox } from 'element-plus'
+- import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+- import axios from 'axios';
+-
+- interface stateType {
+- equipmentDialog: boolean,
+- form: Object,
+- csDepList: Array<any>,
+- fileList: Array<file>,
+- uploadUrl: string,
+- dialogVisible: Boolean,
+- dialogImageUrl: string | null,
+- imgLimit: number,
+- casProps: {},
+- casProps2: {},
+- isOverSize: boolean,
+- materialList: Array<any>
+- }
+- interface file {
+- url: string;
+- }
+- export default defineComponent({
+- name: 'brokenForm',
+- components: {},
+- props:['workerList','departList'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- const state = reactive<stateType>({
+- equipmentDialog: false,
+- form: {
+- operatorUids: [],
+- workType: 5,
+- workLevel: 0,
+- workContent: '',
+- workLocation: '',
+- hazardIdentification: '',
+- workDetail:{
+- operationDepId: null,
+- bcReason: '',
+- bcExplain: '',
+- bcPath: [],
+- involvedDepIds: []
+- },
+- wmAddReqDTOList: [],
+- workTimeLine: [],
+- expStartTime: '',
+- expEndTime: ''
+- },
+- materialList: [],
+- isOverSize: false,
+- fileList: [],
+- imgLimit: 3,
+- uploadUrl: '',
+- dialogVisible: false,
+- dialogImageUrl: null,
+- csDepList: [
+- {
+- label: "单位一",
+- value: 1
+- },
+- {
+- label: "单位二",
+- value: 2
+- },
+- {
+- label: "单位三",
+- value: 3
+- },
+- {
+- label: "单位四",
+- value: 4
+- },
+- {
+- label: "单位五",
+- value: 5
+- },
+- {
+- label: "单位六",
+- value: 6
+- }
+- ],
+- casProps: {
+- emitPath: false,
+- value: 'depId',
+- label: 'depName',
+- multiple: true
+- },
+- casProps2: {
+- emitPath: false,
+- value: 'depId',
+- label: 'depName',
+- multiple: false,
+- expandTrigger: 'hover',
+- checkStrictly: true
+- }
+- });
+- const ruleFormRef = ref<FormInstance>()
+- const applyRules = reactive<FormRules>({
+- operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bcReason": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bcExplain": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.bcPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+- "workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+- });
+-
+- const toZero = (value: string | number,index: number,name: string,x:number) =>{
+- if(!value){
+- state.materialList[index][name][x].value = 0
+- }
+- }
+-
+- const submitForm = async (formEl: FormInstance | undefined) => {
+- if (!formEl) return
+- await formEl.validate(async (valid, fields) => {
+- if (valid) {
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- defaultVal: item.value,
+- id: item.id
+- }
+- return {...obj}
+- })
+- state.materialList[i].postList = [...state.materialList[i].mustList,...state.materialList[i].unList]
+- state.form.wmAddReqDTOList = [...state.form.wmAddReqDTOList,...state.materialList[i].postList]
+- }
+- state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0]
+- state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1]
+- let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form))
+- data.workDetail.involvedDepIds = data.workDetail.involvedDepIds.join(',')
+- data.workDetail.bcPath = data.workDetail.bcPath.join(',')
+- const res = await workApplyApi().postBrokenApply(data)
+- if (res.data.code === '200') {
+- ElMessage({
+- type: 'success',
+- message: '提交成功!'
+- });
+- formEl.resetFields()
+- state.form.workDetail.bcPath = []
+- state.fileList = []
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- state.materialList = []
+- } else {
+- console.log('error submit!', fields)
+- }
+- })
+- }
+-
+- const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+- console.log(uploadFile);
+- };
+-
+- const handlePictureCardPreview = (uploadFile: { url: string }) => {
+- state.dialogImageUrl = uploadFile.url!;
+- state.dialogVisible = true;
+- };
+-
+- const getUploadUrl = async (rawFile: any) => {
+- const fileSize = rawFile.size / 1024 < 500 ? '1' : '0'
+- if(fileSize === '0'){
+- ElMessage({
+- type: 'warning',
+- message: '文件大小不能超过500k。'
+- });
+- state.isOverSize = true
+- return false
+- }else{
+- const res = await workApplyApi().getUploadUrl(rawFile.name);
+- state.form.workDetail.bcPath.push(res.data.data.fileName)
+- state.uploadUrl = res.data.data.uploadUrl;
+- console.log(res.data.data.fileName,'name')
+- }
+- };
+-
+- const upload = async (params: any) => {
+- // const formData = new FormData();
+- // formData.append('file', state.fileList[0].raw);
+- let reader = new FileReader();
+- reader.readAsArrayBuffer(params.file);
+- reader.onload = async () => {
+- axios
+- .put(state.uploadUrl, reader.result, {
+- header: { 'Content-Type': 'multipart/form-data' }
+- })
+- .then(() => {
+- // if (state.fileList.length === 2) {
+- // state.fileList.splice(0, 1);
+- // }
+- // console.log(state.form.workDetail.bcPath,'bcPath')
+- });
+- };
+- };
+-
+- const beforeRemove = (file: {}, fileList: []) => {
+- const result = new Promise((resolve, reject) => {
+- if(!state.isOverSize){
+- ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
+- confirmButtonText: '确定',
+- cancelButtonText: '取消',
+- type: 'warning'
+- })
+- .then(() => {
+- // console.log(state.workDetail.bcPath,'path')
+- const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath))
+- fileList.map((item,index)=>{
+- if(item.uid === file.uid){
+- fileList.splice(index,1)
+- state.form.workDetail.bcPath.splice(index,1)
+- deletePic(false,list[index])
+- }
+- })
+- // 请求删除接口
+- })
+- .catch(() => {
+- reject(false);
+- });
+- }else{
+- const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath))
+- fileList.map((item,index)=>{
+- if(item.uid === file.uid){
+- fileList.splice(index,1)
+- state.form.workDetail.bcPath.splice(index,1)
+- deletePic(true,list[index])
+- }
+- })
+- state.isOverSize = false
+- }
+- });
+- return result;
+- };
+-
+-
+- // 删除图片接口
+- const deletePic = async(isOverSize:boolean,fileName:string)=>{
+- console.log(fileName,'fileName')
+- const res = await workApplyApi().deleteFile({fileName: fileName})
+- if (res.data.code === '200') {
+- ElMessage({
+- type: isOverSize ? 'error' : 'success',
+- message: isOverSize ? '上传失败':'删除成功!'
+- });
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }
+-
+- const showTip =()=>{
+- ElMessage({
+- type: 'warning',
+- message: '超出文件上传数量'
+- });
+- }
+-
+- // 确认物资标准
+- const getMaList = async() =>{
+- if(state.materialList.length == 0){
+- const data = {workType: 5,workLevel: null}
+- const res = await workApplyApi().getMaterial(data)
+- if (res.data.code === '200') {
+- if(res.data.data.materialTypeList && res.data.data.materialTypeList!=null&&res.data.data.materialTypeList.length>0){
+- state.materialList = JSON.parse(JSON.stringify(res.data.data.materialTypeList))
+- for(let i in state.materialList){
+- state.materialList[i].mustList = []
+- state.materialList[i].unList = []
+- state.materialList[i].mdList = state.materialList[i].mdList?.map((item:any) => {
+- if(item.configurationLevel == 0){
+- state.materialList[i].mustList.push(item)
+- return
+- }else{
+- state.materialList[i].unList.push(item)
+- return
+- }
+- })
+- state.materialList[i].mustList = state.materialList[i].mustList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- state.materialList[i].unList = state.materialList[i].unList.map((item:any)=>{
+- const obj = {
+- value: item.defaultVal,
+- materialName: item.materialName,
+- configurationLevel: item.configurationLevel,
+- id: item.id,
+- stock: item.stock
+- }
+- return {...obj}
+- })
+- }
+- state.equipmentDialog = true
+- }else{
+- ElMessage({
+- type: 'warning',
+- message: '暂时查询不到物资标准信息'
+- });
+- }
+- } else {
+- ElMessage({
+- type: 'warning',
+- message: res.data.msg
+- });
+- }
+- }else{
+- state.materialList = state.materialList
+- state.equipmentDialog = true
+- }
+- }
+- const conFirmDevices = ()=>{
+- for(let i in state.materialList){
+- for(let j in state.materialList[i].mustList){
+- if(state.materialList[i].mustList[j].value>state.materialList[i].mustList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+- for(let j in state.materialList[i].unList){
+- if(state.materialList[i].unList[j].value>state.materialList[i].unList[j].stock){
+- ElMessage({
+- type: 'warning',
+- message: '部分物资库存不足,请重新配置数量。'
+- });
+- return
+- }
+- }
+-
+- }
+- ElMessageBox.confirm('是否确认物资及数量配置?')
+- .then(() => {
+- state.equipmentDialog = false
+- })
+- .catch(() => {
+- // catch error
+- })
+- }
+-
+- const closeMaterial = ()=>{
+-
+- }
+-
+- // 折线图
+- const renderMenu = async (value: string) => {
+- Session.set('projectId',value)
+- userInfos.value.projectId = value
+- await initBackEndControlRoutes();
+- };
+- return {
+- renderMenu,
+- Search,
+- ruleFormRef,
+- applyRules,
+- toZero,
+- getMaList,
+- conFirmDevices,
+- closeMaterial,
+- handlePreview,
+- getUploadUrl,
+- beforeRemove,
+- upload,
+- showTip,
+- submitForm,
+- handlePictureCardPreview,
+- ...toRefs(state),
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .homeCard{
+- width: 100%;
+- padding: 20px;
+- box-sizing: border-box;
+- background: #fff;
+- border-radius: 4px;
+- margin-bottom: 20px;
+- }
+- .applyBtn{
+- width: 100%;
+- background: #fff;
+- padding-top: 15px;
+- z-index: 5;
+- 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%;
+- }
+- :deep(.el-cascader){
+- width: 100% !important;
+- }
+- }
+-</style>
+Index: src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue
+===================================================================
+diff --git a/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue b/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue
+deleted file mode 100644
+--- a/src/views/specialWorkSystem/workTicket/approve/components/powerLog.vue (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
++++ /dev/null (revision 2bff5e788d4f7e505961270f0624aa3e78280e25)
+@@ -1,149 +0,0 @@
+-<template>
+- <div style="height: 100%">
+- <el-form :model="details" label-width="150px">
+- <el-form-item label="作业申请单号">
+- <el-input v-model="details.workPermitNo" readonly />
+- </el-form-item>
+- <el-form-item label="申请人">
+- <el-input v-model="details.applyUname" readonly />
+- </el-form-item>
+- <el-form-item label="部门名称">
+- <el-input v-model="details.depName" readonly />
+- </el-form-item>
+- <el-form-item label="作业人">
+- <el-input v-model="details.operators" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业类型">
+- <el-input v-model="details.workTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业等级">
+- <el-input v-model="details.workLevelDesc" readonly />
+- </el-form-item>
+- <el-form-item label="作业内容">
+- <el-input v-model="details.workContent" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="作业地址">
+- <el-input v-model="details.workLocation" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="电源接入点">
+- <el-input v-model="details.workDetail.powerAccessPoint" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="工作电压">
+- <el-input v-model="details.workDetail.workingVoltage" readonly type="textarea"><template #append>伏特(v)</template></el-input>
+- </el-form-item>
+- <el-form-item label="用电设备及功率">
+- <el-input v-model="details.workDetail.equipmentAndPower" readonly type="textarea" />
+- </el-form-item>
+- <el-form-item label="关联其他作业">
+- <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
+- </el-form-item>
+- <el-form-item label="期望开始时间">
+- <el-input v-model="details.expStartTime" readonly />
+- </el-form-item>
+- <el-form-item label="期望结束时间">
+- <el-input v-model="details.expEndTime" readonly />
+- </el-form-item>
+- <el-form-item label="申请时间">
+- <el-input v-model="details.applyTime" readonly />
+- </el-form-item>
+-<!-- <el-form-item label="当前层级">-->
+-<!-- <el-input v-model="details.stepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="上一层级">-->
+-<!-- <el-input v-model="details.preStepId" readonly />-->
+-<!-- </el-form-item>-->
+-<!-- <el-form-item label="下一层级">-->
+-<!-- <el-input v-model="details.nextStepId" readonly />-->
+-<!-- </el-form-item>-->
+- <el-form-item label="层级审批类型">
+- <el-input v-model="details.stepTypeDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+- <el-input v-model="details.stepSerial" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+- <el-input v-model="details.stepStartApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+- <el-input v-model="details.stepFinishApprovalTime" readonly />
+- </el-form-item>
+- <el-form-item label="审批人姓名">
+- <el-input v-model="details.unitApprovalUname" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间">
+- <el-input v-model="details.unitApprovalStartTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+- <el-input v-model="details.unitApprovalEndTime" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+- <el-input v-model="details.unitResultDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+- <el-input v-model="details.statusDesc" readonly />
+- </el-form-item>
+- <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+- <el-input v-model="details.stepApprovalResultDesc" readonly />
+- </el-form-item>
+- </el-form>
+- </div>
+-</template>
+-
+-<script lang="ts">
+- import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
+- import { storeToRefs } from 'pinia';
+- import { initBackEndControlRoutes } from '/@/router/backEnd';
+- import {useUserInfo} from "/@/stores/userInfo";
+- import { Session } from '/@/utils/storage';
+- import { Search } from '@element-plus/icons-vue'
+- import { ElMessage } from 'element-plus'
+- import type { FormInstance, FormRules } from 'element-plus'
+- import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+-
+-
+- interface stateType {
+- form: Object,
+- workerList: Array<any>,
+- workTypeList: Array<any>,
+- workLevelList: Array<any>,
+- otherWorkList: Array<any>
+- }
+- export default defineComponent({
+- name: 'space',
+- components: {},
+- props:['details'],
+- setup() {
+- const userInfo = useUserInfo()
+- const { userInfos } = storeToRefs(userInfo);
+- return {
+- Search
+- };
+- },
+- });
+-</script>
+-
+-<style scoped lang="scss">
+- .home-container {
+- height: 100%;
+- overflow: hidden;
+- position: relative;
+- .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;
+- }
+- }
+-</style>
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml
new file mode 100644
index 0000000..946ad0f
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41__Default_Changelist_.xml
@@ -0,0 +1,4 @@
+<changelist name="Uncommitted_changes_before_Update_at_2022_10_13_14_41_[Default_Changelist]" date="1665643313431" recycled="true" deleted="true">
+ <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_10_13_14_41_[Default_Changelist]/shelved.patch" />
+ <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/10/13 14:41 [Default Changelist]" />
+</changelist>
\ No newline at end of file
diff --git a/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue b/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue
index 1f29501..9cd39ee 100644
--- a/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue
+++ b/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue
@@ -125,13 +125,9 @@
departmentList: [],
isShowApproveBasicDialog: false,
ruleStandTypeList: [
- { id: 1, name: '可燃气浓度' },
- { id: 2, name: '氧气浓度' },
- { id: 3, name: '一氧化碳浓度' },
- { id: 4, name: '硫化氢浓度' },
- { id: 5, name: '温度' },
- { id: 6, name: '压力' },
- { id: 7, name: '震动' }
+ { id: 1, name: '可燃气体' },
+ { id: 3, name: '有毒有害气体' },
+ { id: 2, name: '氧气' },
],
typeList: [
{ id: 1, name: '大于' },
diff --git a/src/views/specialWorkSystem/flow/basicApprove/index.vue b/src/views/specialWorkSystem/flow/basicApprove/index.vue
index 021a4d1..87af29a 100644
--- a/src/views/specialWorkSystem/flow/basicApprove/index.vue
+++ b/src/views/specialWorkSystem/flow/basicApprove/index.vue
@@ -141,13 +141,9 @@
}
},
ruleStandTypeList: [
- { id: 1, name: '可燃气浓度' },
- { id: 2, name: '氧气浓度' },
- { id: 3, name: '一氧化碳浓度' },
- { id: 4, name: '硫化氢浓度' },
- { id: 5, name: '温度' },
- { id: 6, name: '压力' },
- { id: 7, name: '震动' }
+ { id: 1, name: '可燃气体' },
+ { id: 3, name: '有毒有害气体' },
+ { id: 2, name: '氧气' },
],
typeList: [
{ id: 1, name: '大于' },
--
Gitblit v1.9.2