| | |
| | | #VITE_API_URL = 'http://192.168.0.35:8008' |
| | | #李宇飞接口地址 |
| | | |
| | | VITE_API_URL = 'http://192.168.0.70:8008' |
| | | VITE_API_URL = 'http://192.168.2.11:8008' |
| | | #张凤接口地址 |
| | | |
| | | #VITE_API_URL = 'http://192.168.0.47:8008' |
| | |
| | | #VITE_API_URL = 'http://192.168.0.179:8008' |
| | | #施正红接口地址 |
| | | |
| | | #VITE_API_URL = 'http://192.168.0.69:8008' |
| | | #VITE_API_URL = 'http://192.168.0.30:8008' |
| | | #戚会山接口地址 |
| | | |
| | | #VITE_API_URL = 'http://121.239.169.27:16016/safeplatform' |
| | |
| | | "sortablejs": "^1.15.0", |
| | | "splitpanes": "^3.1.1", |
| | | "vue": "^3.2.36", |
| | | "vue-baidu-map-3x": "^1.0.35", |
| | | "vue-clipboard3": "^2.0.0", |
| | | "vue-grid-layout": "^3.0.0-beta1", |
| | | "vue-i18n": "^9.1.10", |
| | | "vue-router": "^4.0.15", |
| | | "vuedraggable": "^4.1.0", |
| | | "wangeditor": "^4.7.15", |
| | | "xlsx": "^0.18.5" |
| | | }, |
| | |
| | | "@types/sortablejs": "^1.13.0", |
| | | "@typescript-eslint/eslint-plugin": "^5.27.0", |
| | | "@typescript-eslint/parser": "^5.27.0", |
| | | "@vitejs/plugin-vue": "^2.3.3", |
| | | "@vitejs/plugin-vue": "^2.3.4", |
| | | "@vue/compiler-sfc": "^3.2.36", |
| | | "dotenv": "^16.0.1", |
| | | "eslint": "^8.17.0", |
| | |
| | | } |
| | | }, |
| | | "node_modules/@vitejs/plugin-vue": { |
| | | "version": "2.3.3", |
| | | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz", |
| | | "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==", |
| | | "version": "2.3.4", |
| | | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz", |
| | | "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=12.0.0" |
| | |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/bmaplib.curveline": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz", |
| | | "integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q==" |
| | | }, |
| | | "node_modules/bmaplib.distancetool": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.distancetool/-/bmaplib.distancetool-1.0.2.tgz", |
| | | "integrity": "sha512-EvxMnQRH6xM036zx5OLPyTg5tMCTbFBuGTTHOtExLy2/T0X6v5Va0YE7c3IPm/a/Eo5V/ynYpOLOLZbRY8ccyA==" |
| | | }, |
| | | "node_modules/bmaplib.heatmap": { |
| | | "version": "1.0.4", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz", |
| | | "integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q==" |
| | | }, |
| | | "node_modules/bmaplib.lushu": { |
| | | "version": "1.0.7", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz", |
| | | "integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w==" |
| | | }, |
| | | "node_modules/bmaplib.markerclusterer": { |
| | | "version": "1.0.13", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz", |
| | | "integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==", |
| | | "dependencies": { |
| | | "bmaplib.texticonoverlay": "^1.0.2" |
| | | } |
| | | }, |
| | | "node_modules/bmaplib.texticonoverlay": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz", |
| | | "integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg==" |
| | | }, |
| | | "node_modules/boolbase": { |
| | | "version": "1.0.0", |
| | |
| | | "@vue/shared": "3.2.36" |
| | | } |
| | | }, |
| | | "node_modules/vue-baidu-map-3x": { |
| | | "version": "1.0.35", |
| | | "resolved": "https://registry.npmmirror.com/vue-baidu-map-3x/-/vue-baidu-map-3x-1.0.35.tgz", |
| | | "integrity": "sha512-1FDzxgd+X7MVcG8JbyyxDOSYRDUi96qEuuNICQmwlAE/EDwf4vz1oYRhRz05s/MuDpW7aIBlubF/PlSTpBlUEw==", |
| | | "dependencies": { |
| | | "bmaplib.curveline": "^1.0.0", |
| | | "bmaplib.distancetool": "^1.0.2", |
| | | "bmaplib.heatmap": "^1.0.4", |
| | | "bmaplib.lushu": "^1.0.7", |
| | | "bmaplib.markerclusterer": "^1.0.13", |
| | | "tiny-emitter": "^2.1.0", |
| | | "vue": "^3.2.25", |
| | | "vue-router": "^4.0.14" |
| | | }, |
| | | "peerDependencies": { |
| | | "vue": "^3.2.25" |
| | | } |
| | | }, |
| | | "node_modules/vue-clipboard3": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz", |
| | |
| | | "peerDependencies": { |
| | | "vue": "^3.2.0" |
| | | } |
| | | }, |
| | | "node_modules/vuedraggable": { |
| | | "version": "4.1.0", |
| | | "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", |
| | | "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", |
| | | "dependencies": { |
| | | "sortablejs": "1.14.0" |
| | | }, |
| | | "peerDependencies": { |
| | | "vue": "^3.0.1" |
| | | } |
| | | }, |
| | | "node_modules/vuedraggable/node_modules/sortablejs": { |
| | | "version": "1.14.0", |
| | | "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", |
| | | "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" |
| | | }, |
| | | "node_modules/wangeditor": { |
| | | "version": "4.7.15", |
| | |
| | | }, |
| | | "node_modules/xlsx": { |
| | | "version": "0.18.5", |
| | | "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", |
| | | "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", |
| | | "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", |
| | | "dependencies": { |
| | | "adler-32": "~1.3.0", |
| | |
| | | } |
| | | }, |
| | | "@vitejs/plugin-vue": { |
| | | "version": "2.3.3", |
| | | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz", |
| | | "integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==", |
| | | "version": "2.3.4", |
| | | "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz", |
| | | "integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==", |
| | | "dev": true, |
| | | "requires": {} |
| | | }, |
| | |
| | | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", |
| | | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", |
| | | "dev": true |
| | | }, |
| | | "bmaplib.curveline": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz", |
| | | "integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q==" |
| | | }, |
| | | "bmaplib.distancetool": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.distancetool/-/bmaplib.distancetool-1.0.2.tgz", |
| | | "integrity": "sha512-EvxMnQRH6xM036zx5OLPyTg5tMCTbFBuGTTHOtExLy2/T0X6v5Va0YE7c3IPm/a/Eo5V/ynYpOLOLZbRY8ccyA==" |
| | | }, |
| | | "bmaplib.heatmap": { |
| | | "version": "1.0.4", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz", |
| | | "integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q==" |
| | | }, |
| | | "bmaplib.lushu": { |
| | | "version": "1.0.7", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz", |
| | | "integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w==" |
| | | }, |
| | | "bmaplib.markerclusterer": { |
| | | "version": "1.0.13", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz", |
| | | "integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==", |
| | | "requires": { |
| | | "bmaplib.texticonoverlay": "^1.0.2" |
| | | } |
| | | }, |
| | | "bmaplib.texticonoverlay": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz", |
| | | "integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg==" |
| | | }, |
| | | "boolbase": { |
| | | "version": "1.0.0", |
| | |
| | | "@vue/shared": "3.2.36" |
| | | } |
| | | }, |
| | | "vue-baidu-map-3x": { |
| | | "version": "1.0.35", |
| | | "resolved": "https://registry.npmmirror.com/vue-baidu-map-3x/-/vue-baidu-map-3x-1.0.35.tgz", |
| | | "integrity": "sha512-1FDzxgd+X7MVcG8JbyyxDOSYRDUi96qEuuNICQmwlAE/EDwf4vz1oYRhRz05s/MuDpW7aIBlubF/PlSTpBlUEw==", |
| | | "requires": { |
| | | "bmaplib.curveline": "^1.0.0", |
| | | "bmaplib.distancetool": "^1.0.2", |
| | | "bmaplib.heatmap": "^1.0.4", |
| | | "bmaplib.lushu": "^1.0.7", |
| | | "bmaplib.markerclusterer": "^1.0.13", |
| | | "tiny-emitter": "^2.1.0", |
| | | "vue": "^3.2.25", |
| | | "vue-router": "^4.0.14" |
| | | } |
| | | }, |
| | | "vue-clipboard3": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz", |
| | |
| | | "integrity": "sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==", |
| | | "requires": { |
| | | "@vue/devtools-api": "^6.0.0" |
| | | } |
| | | }, |
| | | "vuedraggable": { |
| | | "version": "4.1.0", |
| | | "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", |
| | | "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", |
| | | "requires": { |
| | | "sortablejs": "1.14.0" |
| | | }, |
| | | "dependencies": { |
| | | "sortablejs": { |
| | | "version": "1.14.0", |
| | | "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", |
| | | "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" |
| | | } |
| | | } |
| | | }, |
| | | "wangeditor": { |
| | |
| | | }, |
| | | "xlsx": { |
| | | "version": "0.18.5", |
| | | "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", |
| | | "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", |
| | | "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", |
| | | "requires": { |
| | | "adler-32": "~1.3.0", |
| | |
| | | data: data |
| | | }); |
| | | }, |
| | | submitOpenApply: (data: object) => { |
| | | return request({ |
| | | url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/openJob`, |
| | | method: 'post', |
| | | data: data |
| | | }); |
| | | }, |
| | | modOpenApply: (data: object) => { |
| | | return request({ |
| | | url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/openJob`, |
| | | method: 'post', |
| | | data: data |
| | | }); |
| | | }, |
| | | |
| | | // 所有记录列表 |
| | | getApplyList: (data: object) => { |
| | |
| | | if (!Cookies.get('token')) return false; |
| | | const res = await menuApi.getMenuAdmin(Cookies.get('projectId') === null ? '' : Cookies.get('projectId')); |
| | | if (res.data.code === '200') { |
| | | state.systemName = res.data.data[1].project.projectName; |
| | | console.log(state.systemName); |
| | | state.systemName = res.data.data[0].project.projectName; |
| | | } else { |
| | | console.log('有问题'); |
| | | } |
| | |
| | | Session.clear(); |
| | | NProgress.done(); |
| | | } else if (token && to.path === '/login') { |
| | | next('/home'); |
| | | next('/newMenu'); |
| | | NProgress.done(); |
| | | } else if (token && to.path === '/newMenu') { |
| | | next(); |
| | | NProgress.done(); |
| | | } else { |
| | | const storesRoutesList = useRoutesList(pinia); |
| | | const { routesList } = storeToRefs(storesRoutesList); |
| | | if (routesList.value.length === 0) { |
| | | |
| | | // 后端控制路由:路由数据初始化,防止刷新时丢失 |
| | | await initBackEndControlRoutes(); |
| | | // 动态添加路由:防止非首页刷新时跳转回首页的问题 |
| | |
| | | path: '/', |
| | | name: '/', |
| | | component: () => import('/@/layout/index.vue'), |
| | | redirect: '/home', |
| | | redirect: '/newMenu', |
| | | meta: { |
| | | isKeepAlive: false |
| | | }, |
| | | children: [ |
| | | { |
| | | path: '/home', |
| | | name: 'home', |
| | | path: '/newMenu', |
| | | name: 'newMenu', |
| | | component: () => import('/@/views/newHome/index.vue'), |
| | | meta: { |
| | | title: '首页', |
| | |
| | | name: 'warningScreen', |
| | | component: () => import('/@/views/riskWarningSys/warningBigScreen/index.vue'), |
| | | meta: { |
| | | title: '预警预报' |
| | | title: '预警预报', |
| | | } |
| | | }, |
| | | { |
| | | path: '/screenPage', |
| | | name: 'screenPage', |
| | | component: () => import('/@/views/riskWarningSys/warningBigScreen/indexs/index.vue'), |
| | | meta: { |
| | | title: '预警详情', |
| | | isKeepAlive: false |
| | | } |
| | | }, |
| | | { |
| | |
| | | // 配置新建一个 axios 实例 |
| | | const service = axios.create({ |
| | | // baseURL: import.meta.env.VITE_API_URL as any, |
| | | timeout: 500000, |
| | | timeout: 10000, |
| | | headers: { 'Content-Type': 'application/json' } |
| | | }); |
| | | |
| | |
| | | // 登录成功后的跳转 |
| | | const signInSuccess = async () => { |
| | | // 初始化登录成功时间问候语 |
| | | console.log('登录>>>') |
| | | let currentTimeInfo = currentTime.value; |
| | | // 登录成功,跳到转首页 |
| | | // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中 |
| | |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-6.png" /> |
| | | </div> |
| | | <div class="grid-content cont-bg-2" v-throttle @click="toSmartFactory"> |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon13.png" /> |
| | | <div> |
| | | <div class="itemTit">智能工厂系统</div> |
| | | <div class="enTit">Intelligent Factory System</div> |
| | | </div> |
| | | </div> |
| | | <img class="bgImg" src="../../assets/newMenu/card-13.png" /> |
| | | </div> |
| | | <!-- <div class="grid-content cont-bg-2" v-throttle @click="toSmartFactory">--> |
| | | <!-- <div class="toplayer">--> |
| | | <!-- <img class="iconImg" src="../../assets/newMenu/icon13.png" />--> |
| | | <!-- <div>--> |
| | | <!-- <div class="itemTit">智能工厂系统</div>--> |
| | | <!-- <div class="enTit">Intelligent Factory System</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <img class="bgImg" src="../../assets/newMenu/card-13.png" />--> |
| | | <!-- </div>--> |
| | | <div class="grid-content cont-bg-2" @click="render('1')"> |
| | | <div class="toplayer"> |
| | | <img class="iconImg" src="../../assets/newMenu/icon11.png" /> |
| | |
| | | userInfos.value.projectId = state.projectId; |
| | | await initBackEndControlRoutes().then(() => { |
| | | let linkToMenu = [...routesList.value]; |
| | | if (linkToMenu && linkToMenu.length > 1) { |
| | | router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[1])); |
| | | if (linkToMenu && linkToMenu.length > 0) { |
| | | router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[0])); |
| | | } else { |
| | | ElMessage({ type: 'warning', message: '你没有该子系统的权限' }); |
| | | } |
| | |
| | | |
| | | const renderToNew = () => { |
| | | // window.open('http://222.92.213.22:18001/smartlab/', '_blank'); |
| | | window.open('http://106.15.95.149:8005/nanoweb/foreground/', '_blank'); |
| | | window.open('http://47.108.222.15:8000/', '_blank'); |
| | | }; |
| | | // //点击进入特殊作业 |
| | | // const toSpecialWorkSys = () => { |
| | |
| | | } |
| | | } |
| | | &:last-of-type { |
| | | height: calc(100% - 100px); |
| | | height: calc(100% - 130px); |
| | | } |
| | | } |
| | | .stepItem { |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | state.form.workDetail.involvedDepIds = row.workDetail.involvedDepIds.split(',').map(i=>Number(i)) |
| | | state.fileList = row.workDetail.bcPath.split(',').map(item => { |
| | | return { |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modBrokenApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | <div class="d-row"> |
| | | <div class="d-tit">作业范围、内容、方式</div><div class="d-cont">{{details.workDetail.gbDesc}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-row" v-if="details.workDetail.gbPath !== ''"> |
| | | <div class="d-tit">示意图</div> |
| | | <div class="d-cont"> |
| | | <el-image v-for="item in details.workDetail.gbPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> |
| | |
| | | <div class="d-row"> |
| | | <div class="d-tit">断路地段相关说明</div><div class="d-cont">{{details.workDetail.bcExplain}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-row" v-if="details.workDetail.bcPath !== ''"> |
| | | <div class="d-tit">断路地段示意图</div> |
| | | <div class="d-cont"> |
| | | <el-image v-for="(item,index) in details.workDetail.bcPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover"/> |
| | |
| | | <div class="d-tit">盲板编号</div><div class="d-cont">{{details.workDetail.bpCode}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">盲板位置相关描述</div><div class="d-cont">{{details.workDetail.bpLocationDesc}}</div> |
| | | <div class="d-tit">编制人</div><div class="d-cont">{{details.workDetail.preparedByName}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">编制时间</div><div class="d-cont">{{details.workDetail.preparedTime}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">盲板位置相关描述</div><div class="d-cont">{{details.workDetail.bpLocationDesc}}</div> |
| | | </div> |
| | | <div class="d-row" v-if="details.workDetail.bpLocationMapPath !== ''"> |
| | | <div class="d-tit">盲板位置示意图</div> |
| | | <div class="d-cont"> |
| | | <el-image v-for="item in details.workDetail.bpLocationMapPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="type == 9"> |
| | | <div class="d-row"> |
| | | <div class="d-tit">设备管线信息</div> |
| | | <div class="d-cont"> |
| | | <el-table :data="details.workDetail.qpDetails" style="width: 90%" border> |
| | | <el-table-column prop="qpName" label="设备管线名称"/> |
| | | <el-table-column prop="originalHazardousMedia" label="原有危险介质"/> |
| | | <el-table-column prop="originalTemperature" label="原有温度(℃)"/> |
| | | <el-table-column prop="originalPressure" label="原有压力(kPa)"/> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">编制人</div><div class="d-cont">{{details.workDetail.preparedBy}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">编制时间</div><div class="d-cont">{{details.workDetail.preparedTime}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">安全工作方案</div><div class="d-cont">{{details.workDetail.workProgramme == 1?'有':'无'}}</div> |
| | | </div> |
| | | <div class="d-row" v-if="details.workDetail.sketchMapPath !== ''"> |
| | | <div class="d-tit">示意图</div> |
| | | <div class="d-cont"> |
| | | <el-image v-for="item in details.workDetail.sketchMapPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="d-tit">安全措施确认人</div><div class="d-cont">{{details.safetyMeasureList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">完工验收人</div><div class="d-cont">{{details.acceptUser.userName + '(' + details.acceptUser.phone+ ')'}}</div> |
| | | <div class="d-tit">完工验收人</div><div class="d-cont">{{details.acceptUserList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">现场开始结束确认人</div><div class="d-cont">{{details.startOrEndList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.methodList": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | console.log(state.form.approvalDepBasicList,777) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | state.form.workDetail.methodList = state.form.workDetail.workMethod.split(',') |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2EObj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2EObj(data.lastApprover) |
| | | const res = await workApplyApi().modFireApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | state.fileList = row.workDetail.gbPath.split(',').map(item => { |
| | | return { |
| | | url: item, |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modGroundApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids"> |
| | | <el-select v-model="form.safetyMeasureUids" multiple clearable> |
| | | <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> |
| | | <el-select v-model="form.safetyMeasureUids" multiple filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approvalUids" filterable label="审批人" align="center"> |
| | | <el-table-column prop="approvalUids" label="审批人" align="center"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable> |
| | | <el-select v-model="scope.row.approvalUids" multiple filterable :disabled="isFirstRow(scope.$index)" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" clearable filterable multiple> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids"> |
| | | <el-select v-model="form.startOrEndUids" multiple clearable> |
| | | <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> |
| | | <el-select v-model="form.startOrEndUids" multiple clearable filterable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | | }else{ |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modHeightApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | | }else{ |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modHoistApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="报告编号"> |
| | | <el-input |
| | | v-model="jsaForm.judgeJsaCode" |
| | | placeholder="请输入报告编号" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="风险研判报告记录附件"> |
| | | <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl"> |
| | | <el-icon><Plus /></el-icon> |
| | |
| | | <div class="d-tit">jsa风险研判结论</div><div class="d-cont">{{detail.judgeRecord}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">报告编号</div><div class="d-cont">{{detail.judgeJsaCode}}</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">风险研判报告记录附件</div> |
| | | <div class="d-cont"> |
| | | <div class="d-cont" v-if="detail.judgePicturePath"> |
| | | <el-image v-for="item in detail.judgePicturePath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> |
| | | </div> |
| | | <div class="d-cont" v-else>暂无附件</div> |
| | | </div> |
| | | <div class="d-row"> |
| | | <div class="d-tit">研判人</div><div class="d-cont">{{detail.judgeUname}}</div> |
| | |
| | | jsaForm: { |
| | | workApplyId: number | null; |
| | | judgeRecord: string |
| | | judgeJsaCode: string |
| | | judgePicturePath: Array<string> |
| | | }; |
| | | jsaFormRules: {}; |
| | |
| | | jsaForm: { |
| | | workApplyId: null, |
| | | judgeRecord: '', |
| | | judgeJsaCode: '', |
| | | judgePicturePath: [] |
| | | }, |
| | | jsaFormRules: { |
| | |
| | | if (type === '上传') { |
| | | state.disabled = true; |
| | | state.title = '上传风险研判报告'; |
| | | console.log(value.id,'id') |
| | | state.jsaForm = { |
| | | workApplyId: value.id, |
| | | judgeRecord: '', |
| | | judgeJsaCode: '', |
| | | judgePicturePath: [] |
| | | }; |
| | | } else { |
对比新文件 |
| | |
| | | <template> |
| | | <div class="home-container"> |
| | | <el-dialog v-model="showDialog" title="修改申报" @close="clearFile" width="80%" :close-on-click-modal="false"> |
| | | <el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef"> |
| | | <div class="homeCard"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业申请单位" prop="applyDepId"> |
| | | <el-cascader style="width: 100%" v-model="form.applyDepId" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业内容" prop="workContent"> |
| | | <el-input |
| | | v-model="form.workContent" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业内容" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业单位" prop="workDepIds"> |
| | | <el-cascader style="width: 100%" v-model="form.workDepIds" :props="depProps" @change="getWorkerList" :options="lists.departList" :show-all-levels="false"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业人" prop="operatorUids"> |
| | | <el-select v-model="form.operatorUids" multiple clearable> |
| | | <el-option |
| | | v-for="item in zyList" |
| | | :key="item.uid" |
| | | :label="item.realName" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业地点" prop="workLocation"> |
| | | <el-input |
| | | v-model="form.workLocation" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业地点" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" class="valueSelect"> |
| | | <el-form-item label="关联其他特殊作业"> |
| | | <!-- <el-select v-model="form.involveOtherWork" multiple clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in otherWorkList"--> |
| | | <!-- :key="item.value"--> |
| | | <!-- :label="item.label"--> |
| | | <!-- :value="item.label"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> |
| | | <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="监护人" prop="guardianUids"> |
| | | <el-select v-model="form.guardianUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.spList.jhList" |
| | | :key="item.uid" |
| | | :label="item.realName" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="绑定执法仪" prop="cameraIds"> |
| | | <el-select v-model="form.cameraIds" multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.deviceList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="设备管线信息" prop="workDetail.qpDetailList"> |
| | | <el-table :data="form.workDetail.qpDetailList" style="width: 90%" border> |
| | | <el-table-column prop="qpName" label="设备管线名称"/> |
| | | <el-table-column prop="originalHazardousMedia" label="原有危险介质"/> |
| | | <el-table-column prop="originalTemperature" label="原有温度(℃)"/> |
| | | <el-table-column prop="originalPressure" label="原有压力(kPa)"/> |
| | | <el-table-column label="操作" width="100"> |
| | | <template #default="scope"> |
| | | <el-button size="small" text type="danger" @click="delInfo(scope.$index)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-button type="primary" style="width: 8%;margin-left: 2%" @click="addQPList">新增</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编制人姓名" prop="workDetail.preparedBy"> |
| | | <el-input |
| | | v-model="form.workDetail.preparedBy" |
| | | placeholder="请输入编制人姓名" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编制时间" prop="workDetail.preparedTime"> |
| | | <el-date-picker |
| | | v-model="form.workDetail.preparedTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="有无示意图" prop="workDetail.sketchMapStatus"> |
| | | <el-radio-group v-model="form.workDetail.sketchMapStatus"> |
| | | <el-radio :label="1">有</el-radio> |
| | | <el-radio :label="2">无</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" v-if="form.workDetail.sketchMapStatus == 1"> |
| | | <el-form-item label="示意图" prop="workDetail.sketchMapPath"> |
| | | <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl"> |
| | | <el-icon><Plus /></el-icon> |
| | | <template #tip> |
| | | <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div> |
| | | </template> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="安全工作方案" prop="workDetail.workProgramme"> |
| | | <el-radio-group v-model="form.workDetail.workProgramme"> |
| | | <el-radio :label="1">有</el-radio> |
| | | <el-radio :label="2">无</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预计(整体)开始时间" prop="expStartTime"> |
| | | <el-date-picker |
| | | v-model="form.expStartTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预计(整体)完成时间" prop="expEndTime"> |
| | | <el-date-picker |
| | | v-model="form.expEndTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="风险辨识" prop="riskIdentification"> |
| | | <el-select v-model="form.riskIdentification" multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.riskList" |
| | | :key="item.id" |
| | | :label="item.content" |
| | | :value="item.content" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input |
| | | v-model="form.remark" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业备注" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="display: flex;justify-content: center"> |
| | | <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> |
| | | <el-table-column type="index" label="序号" width="100px" align="center"/> |
| | | <el-table-column prop="measureContent" label="安全措施"/> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> |
| | | <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="display: flex;justify-content: center"> |
| | | <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> |
| | | <el-table-column prop="content" label="审批签字项目" align="center"/> |
| | | <el-table-column prop="approvalType" label="是否必签" align="center"> |
| | | <template #default="scope"> |
| | | <el-form-item label="" prop="acceptUid" label-width="0"> |
| | | <el-radio-group v-model="scope.row.approvalType"> |
| | | <el-radio :label="0">所有必签</el-radio> |
| | | <el-radio :label="1">任一</el-radio> |
| | | <el-radio :label="2">非必签</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approvalUids" label="审批人" align="center"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> |
| | | <el-select v-model="form.startOrEndUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | | <el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button> |
| | | </div> |
| | | <el-dialog v-model="qpVisible" @open="startAdd"> |
| | | <el-form :model="qpForm" label-width="170px" ref="qpFormRef" :rules="qpFormRules"> |
| | | <el-row :gutter="20"> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="设备管线名称" prop="qpName"> |
| | | <el-input |
| | | v-model="qpForm.qpName" |
| | | placeholder="请输入设备管线名称" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="原有危险介质" prop="originalHazardousMedia"> |
| | | <el-input |
| | | v-model="qpForm.originalHazardousMedia" |
| | | placeholder="请输入原有危险介质" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="原有温度(℃)" prop="originalTemperature"> |
| | | <el-input |
| | | v-model="qpForm.originalTemperature" |
| | | type="number" |
| | | placeholder="请输入原有温度" |
| | | ><template #append>℃</template></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="原有压力(kPa)" prop="originalPressure"> |
| | | <el-input |
| | | v-model="qpForm.originalPressure" |
| | | type="number" |
| | | placeholder="请输入原有压力" |
| | | ><template #append>kPa</template></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button type="primary" @click="confirmAdd(qpFormRef)">新增</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select> |
| | | <el-dialog v-model="dialogVisible"> |
| | | <img w-full :src="dialogImageUrl" alt="Preview Image" /> |
| | | </el-dialog> |
| | | </el-dialog> |
| | | </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, Edit } from '@element-plus/icons-vue' |
| | | import {ElMessage, ElMessageBox, UploadProps, UploadUserFile} from 'element-plus' |
| | | import type { FormInstance, FormRules } from 'element-plus' |
| | | import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; |
| | | import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue"; |
| | | import axios from "axios"; |
| | | import {userApi} from "/@/api/systemManage/user"; |
| | | import {verifyPwd} from "/@/utils/toolsValidate"; |
| | | interface stateType { |
| | | showDialog: boolean |
| | | form: Object, |
| | | qpForm: Object, |
| | | equipmentDialog: boolean, |
| | | qpVisible: boolean |
| | | zyList: [] |
| | | props1:{}, |
| | | depProps:{}, |
| | | casProps:{} |
| | | safetyMeasureBasicList: [], |
| | | fileList: Array<file>, |
| | | uploadUrl: string, |
| | | dialogVisible: Boolean, |
| | | dialogImageUrl: string | null, |
| | | imgLimit: number |
| | | tabLoading: boolean |
| | | } |
| | | interface file { |
| | | url: string; |
| | | } |
| | | export default defineComponent({ |
| | | name: 'openForm', |
| | | components: {workSelect}, |
| | | props:['lists'], |
| | | setup(props: any, context: any) { |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const state = reactive<stateType>({ |
| | | showDialog: false, |
| | | tabLoading: false, |
| | | equipmentDialog: false, |
| | | qpVisible: false, |
| | | safetyMeasureBasicList: [], |
| | | zyList: [], |
| | | form: { |
| | | id: null, |
| | | workType: 9, |
| | | workLevel: 0, |
| | | depIdList: [], |
| | | applyDepId: null, |
| | | seDepId: null, |
| | | expStartTime: '', |
| | | expEndTime: '', |
| | | operatorUids: [], |
| | | headUids: [], |
| | | guardianUids: [], |
| | | workDepIds: [], |
| | | workContent: '', |
| | | workLocation: '', |
| | | riskIdentification: [], |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | | qpDetailList: [], |
| | | preparedBy: '', |
| | | preparedTime: '', |
| | | sketchMapStatus: null, |
| | | sketchMapPath: [], |
| | | workProgramme: 1, |
| | | }, |
| | | remark: '' |
| | | }, |
| | | qpForm: { |
| | | qpName: '', |
| | | originalHazardousMedia: '', |
| | | originalTemperature: null, |
| | | originalPressure: null, |
| | | }, |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | multiple: true, |
| | | checkStrictly: true, |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: true, |
| | | lazy: true, |
| | | async lazyLoad(node, resolve){ |
| | | const { value, level } = node |
| | | let nodes = [] |
| | | if(level == 0){ |
| | | nodes = props.lists.workerList |
| | | }else{ |
| | | let res = await userApi().getCtf({uid: value}) |
| | | if(res.data.code == 200){ |
| | | nodes = res.data.data |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }) |
| | | } |
| | | } |
| | | nodes=nodes.map(item => ({ |
| | | uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName, |
| | | username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')', |
| | | leaf: level >= 1 |
| | | })) |
| | | resolve(nodes) |
| | | } |
| | | }, |
| | | fileList: [], |
| | | imgLimit: 3, |
| | | uploadUrl: '', |
| | | dialogVisible: false, |
| | | dialogImageUrl: null, |
| | | }); |
| | | // let validateList = (rule: any, value: any, callback: any)=>{ |
| | | // if(value.length==0){ |
| | | // callback(new Error('请完善设备管线信息')) |
| | | // }else{ |
| | | // callback() |
| | | // } |
| | | // } |
| | | const ruleFormRef = ref<FormInstance>() |
| | | const qpFormRef = ref<FormInstance>() |
| | | const applyRules = reactive<FormRules>({ |
| | | depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workDepIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.preparedBy": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.preparedTime": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.sketchMapStatus": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.sketchMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.workProgramme": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | // "workDetail.qpDetailList": [{ required: true, validator: validateList, trigger: 'blur' }] |
| | | }); |
| | | const qpFormRules = reactive<FormRules>({ |
| | | qpName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | originalHazardousMedia: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | originalTemperature: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | originalPressure: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] |
| | | }) |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | state.zyList = props.lists.spList.opList |
| | | getBasicData() |
| | | }); |
| | | |
| | | const openDialog = (row)=>{ |
| | | state.zyList = props.lists.spList.opList |
| | | getBasicData() |
| | | Object.keys(state.form).forEach(key => { |
| | | if (row.hasOwnProperty(key)) { |
| | | state.form[key] = JSON.parse(JSON.stringify(row))[key] |
| | | } |
| | | }) |
| | | state.form.operatorUids = row.operatorList.map(i=>i.userId) |
| | | state.form.headUids = row.headList.map(i=>i.userId) |
| | | state.form.analystUids = row.analystList.map(i=>i.userId) |
| | | state.form.guardianUids = row.guardianList.map(i=>i.userId) |
| | | state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId) |
| | | state.form.riskIdentification = row.riskIdentification.split(',') |
| | | state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId) |
| | | state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId) |
| | | state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({ |
| | | content: item.content, |
| | | approvalDepBasicId: item.approvalDepBasicId, |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | if(row.workDetail.sketchMapPath && row.workDetail.sketchMapPath !== ''){ |
| | | state.fileList = row.workDetail.sketchMapPath.split(',').map(item => { |
| | | return { |
| | | url: item, |
| | | name: item.match(/specialWork9step\/(.*?)\?/)[1] |
| | | } |
| | | }) |
| | | state.form.workDetail.sketchMapPath = row.workDetail.sketchMapPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1]) |
| | | }else{ |
| | | state.fileList = [] |
| | | state.form.workDetail.sketchMapPath = [] |
| | | } |
| | | state.form.workDetail.qpDetailList = row.workDetail.qpDetails |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | | }else{ |
| | | state.form.workDepIds.push(row.workDepId) |
| | | } |
| | | getWorkerList() |
| | | state.showDialog = true |
| | | } |
| | | |
| | | const clearFile = ()=>{ |
| | | state.form = { |
| | | id: null, |
| | | workType: 9, |
| | | workLevel: 0, |
| | | depIdList: [], |
| | | applyDepId: null, |
| | | seDepId: null, |
| | | expStartTime: '', |
| | | expEndTime: '', |
| | | operatorUids: [], |
| | | headUids: [], |
| | | guardianUids: [], |
| | | workDepIds: [], |
| | | workContent: '', |
| | | workLocation: '', |
| | | riskIdentification: [], |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | | qpDetailList: [], |
| | | preparedBy: '', |
| | | preparedTime: '', |
| | | sketchMapStatus: null, |
| | | sketchMapPath: [], |
| | | workProgramme: 1, |
| | | }, |
| | | remark: '' |
| | | } |
| | | state.showDialog = false |
| | | } |
| | | |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | | } |
| | | |
| | | const addQPList = ()=>{ |
| | | state.qpVisible = true |
| | | } |
| | | |
| | | const startAdd =()=>{ |
| | | state.qpForm={ |
| | | qpName: '', |
| | | originalHazardousMedia: '', |
| | | originalTemperature: null, |
| | | originalPressure: null, |
| | | } |
| | | } |
| | | |
| | | const confirmAdd=async (formEl: FormInstance | undefined)=>{ |
| | | if (!formEl) return |
| | | await formEl.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | state.form.workDetail.qpDetailList.push(state.qpForm) |
| | | state.qpVisible = false |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const delInfo=(index: number)=>{ |
| | | state.form.workDetail.qpDetailList.splice(index,1) |
| | | } |
| | | |
| | | const getWorkerList = ()=>{ |
| | | const filteredList = props.lists.spList.opList.filter(i => state.form.workDepIds.includes(i.depId)); |
| | | if(filteredList && filteredList.length>0){ |
| | | state.zyList = filteredList |
| | | }else{ |
| | | state.zyList = props.lists.spList.opList |
| | | } |
| | | } |
| | | |
| | | const getSelected = ()=>{ |
| | | state.form.involveOtherWork = workSelectRef.value.selected |
| | | } |
| | | const findParent = ()=>{ |
| | | state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] |
| | | state.form.seDepId = state.form.depIdList[0] |
| | | } |
| | | |
| | | // 获取基础数据 |
| | | const getBasicData = async ()=>{ |
| | | state.tabLoading = true |
| | | const res = await workApplyApi().getFormData(9) |
| | | if (res.data.code === '200') { |
| | | state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | state.tabLoading = false |
| | | }; |
| | | |
| | | const getStartEndIds = (value)=>{ |
| | | // let selected = value |
| | | // if(selected.length>1){ |
| | | // const temp = [] |
| | | // for(let i of selected){ |
| | | // const index = temp.findIndex(item => item[0] === i[0]); |
| | | // if (index !== -1) { |
| | | // temp[index] = i |
| | | // }else{ |
| | | // temp.push(i) |
| | | // } |
| | | // } |
| | | // state.form.headUids = temp |
| | | // } |
| | | // state.form.startOrEndUids = state.form.headUids |
| | | // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] |
| | | state.form.startOrEndUids = state.form.headUids |
| | | state.form.approvalDepBasicList[0].approvalUids = state.form.headUids |
| | | } |
| | | |
| | | const getSafetyIds = ()=>{ |
| | | state.form.safetyMeasureUids = state.form.guardianUids |
| | | } |
| | | |
| | | const isFirstRow = (index)=> { |
| | | return index === 0; |
| | | } |
| | | |
| | | const transformArr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: i[0], |
| | | certificate: i[1].split(',')[0], |
| | | certExpiredAt: i[1].split(',')[1], |
| | | certTypeName: i[1].split(',')[2] |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id: any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | | const singleSelect=(value,type)=>{ |
| | | let selected = value |
| | | if(selected.length>1){ |
| | | const temp = [] |
| | | for(let i of selected){ |
| | | const index = temp.findIndex(item => item[0] === i[0]); |
| | | if (index !== -1) { |
| | | temp[index] = i |
| | | }else{ |
| | | temp.push(i) |
| | | } |
| | | } |
| | | if(type == '作业人'){state.form.operatorUids = temp} |
| | | if(type == '监护人'){state.form.guardianUids = temp} |
| | | if(type == '确认人'){state.form.safetyMeasureUids = temp} |
| | | if(type == '结束人'){state.form.startOrEndUids = temp} |
| | | } |
| | | } |
| | | |
| | | const submitForm = async (formEl: FormInstance | undefined) => { |
| | | if (!formEl) return |
| | | await formEl.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | for(let i of state.form.approvalDepBasicList){ |
| | | if(i.approvalUids.length == 0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '部分审批人未配置' |
| | | }); |
| | | return |
| | | } |
| | | } |
| | | // if(Array.isArray(state.form.involveOtherWork)){ |
| | | // state.form.involveOtherWork = state.form.involveOtherWork.join(',') |
| | | // } |
| | | if(state.form.workDetail.sketchMapStatus == 2){ |
| | | state.form.workDetail.sketchMapPath = [] |
| | | } |
| | | state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.join(',') |
| | | state.form.riskIdentification = state.form.riskIdentification.join(',') |
| | | const {depIdList,...data} = state.form |
| | | data.operatorUids = transform2Arr(data.operatorUids) |
| | | data.headUids = transform2Arr(data.headUids) |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modOpenApply(data) |
| | | if (res.data.code === '200') { |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '提交成功!' |
| | | }) |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | state.form.workDetail.sketchMapPath = [] |
| | | state.fileList = [] |
| | | state.form.workDetail.qpDetailList = [] |
| | | clearFile() |
| | | context.emit('refresh') |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | // state.form.involveOtherWork = state.form.involveOtherWork.split(',') |
| | | state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.split(',') |
| | | state.form.riskIdentification = state.form.riskIdentification.split(',') |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const findNearestDepLevel2DepId = (data, targetDepId) => { |
| | | let nearestDepId = null; |
| | | |
| | | const traverseTree = (node) => { |
| | | if (node.depId === targetDepId) { |
| | | return true; |
| | | } |
| | | |
| | | if (node.children && node.children.length > 0) { |
| | | for (const child of node.children) { |
| | | const found = traverseTree(child); |
| | | if (found) { |
| | | if (child.depLevel === 2) { |
| | | nearestDepId = child.depId; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | }; |
| | | |
| | | for (const root of data) { |
| | | traverseTree(root); |
| | | } |
| | | |
| | | return nearestDepId; |
| | | }; |
| | | |
| | | const handlePreview: UploadProps['onPreview'] = (uploadFile) => { |
| | | console.log(uploadFile); |
| | | }; |
| | | |
| | | const handlePictureCardPreview = (uploadFile: { url: string }) => { |
| | | state.dialogImageUrl = uploadFile.url!; |
| | | state.dialogVisible = true; |
| | | }; |
| | | |
| | | const getUploadUrl = async(rawFile: any) => { |
| | | if(rawFile.size / 1024 / 1024 > 2){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '文件大小不能超过2M。' |
| | | }); |
| | | return Promise.reject(false) |
| | | }else{ |
| | | const res = await workApplyApi().getUpload9Url(rawFile.name) |
| | | state.form.workDetail.sketchMapPath.push(res.data.data.fileName) |
| | | state.uploadUrl = res.data.data.uploadUrl |
| | | } |
| | | }; |
| | | |
| | | const upload = async (params: any) => { |
| | | 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); |
| | | // } |
| | | }); |
| | | }; |
| | | }; |
| | | |
| | | const beforeRemove = (file: {}, fileList: []) => { |
| | | if (file && file.status === "success") { |
| | | const result = new Promise((resolve, reject) => { |
| | | ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }) |
| | | .then(() => { |
| | | // console.log(state.workDetail.sketchMapPath,'path') |
| | | const list = JSON.parse(JSON.stringify(state.form.workDetail.sketchMapPath)) |
| | | fileList.map((item, index) => { |
| | | if (item.uid === file.uid) { |
| | | fileList.splice(index, 1) |
| | | state.form.workDetail.sketchMapPath.splice(index, 1) |
| | | // 请求删除接口 |
| | | deletePic(list[index]) |
| | | } |
| | | }) |
| | | console.log(state.form.workDetail.sketchMapPath, 'sketchMapPath') |
| | | }) |
| | | .catch(() => { |
| | | reject(false); |
| | | }); |
| | | }); |
| | | return result; |
| | | } |
| | | }; |
| | | |
| | | // 删除图片接口 |
| | | const deletePic = async(fileName:string)=>{ |
| | | const res = await workApplyApi().deleteFile({fileName: fileName}) |
| | | if (res.data.code === '200') { |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '删除成功!' |
| | | }); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | |
| | | const showTip =()=>{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '超出文件上传数量' |
| | | }); |
| | | } |
| | | |
| | | // 折线图 |
| | | const renderMenu = async (value: string) => { |
| | | Session.set('projectId',value) |
| | | userInfos.value.projectId = value |
| | | await initBackEndControlRoutes(); |
| | | }; |
| | | return { |
| | | clearFile, |
| | | openDialog, |
| | | addQPList, |
| | | startAdd, |
| | | confirmAdd, |
| | | delInfo, |
| | | renderMenu, |
| | | getBasicData, |
| | | getWorkerList, |
| | | getStartEndIds, |
| | | getSafetyIds, |
| | | isFirstRow, |
| | | submitForm, |
| | | findParent, |
| | | handlePreview, |
| | | getUploadUrl, |
| | | upload, |
| | | showTip, |
| | | handlePictureCardPreview, |
| | | beforeRemove, |
| | | openWorkSelect, |
| | | getSelected, |
| | | singleSelect, |
| | | workSelectRef, |
| | | Search, |
| | | ruleFormRef, |
| | | qpFormRef, |
| | | applyRules, |
| | | qpFormRules, |
| | | ...toRefs(state), |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .home-container { |
| | | width: 100%; |
| | | height: 100vh; |
| | | overflow: hidden; |
| | | overflow-y: scroll; |
| | | &::-webkit-scrollbar{ |
| | | width: 0; |
| | | background-color: transparent; |
| | | } |
| | | .homeCard{ |
| | | width: 100%; |
| | | padding: 20px; |
| | | box-sizing: border-box; |
| | | background: #fff; |
| | | border-radius: 4px; |
| | | margin-bottom: 20px; |
| | | } |
| | | .applyBtn{ |
| | | width: 100%; |
| | | background: #fff; |
| | | padding: 20px 0; |
| | | box-shadow: 0 -3px 8px rgba(150,150,150,.1); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .el-row{ |
| | | margin-bottom: 20px; |
| | | } |
| | | .el-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | .el-input{ |
| | | width: 100% !important; |
| | | } |
| | | .el-date-editor::v-deep{ |
| | | width: 100%; |
| | | } |
| | | .el-select{ |
| | | width: 100%; |
| | | } |
| | | .el-cascader{ |
| | | width: 100% !important; |
| | | } |
| | | } |
| | | .valueSelect{ |
| | | ::v-deep(.el-popper){ |
| | | display: none !important; |
| | | } |
| | | } |
| | | .tab-i{ |
| | | margin-bottom: 15px; |
| | | |
| | | &:last-of-type{ |
| | | margin-bottom: 0; |
| | | } |
| | | ::v-deep(.el-form-item){ |
| | | .el-form-item__label{ |
| | | margin-bottom: 4px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable clearable multiple> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.pipingName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | state.fileList = row.workDetail.bpLocationMapPath.split(',').map(item => { |
| | | return { |
| | | url: item, |
| | |
| | | } |
| | | }) |
| | | state.form.workDetail.bpLocationMapPath = row.workDetail.bpLocationMapPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1]) |
| | | console.log(state.fileList,state.form.workDetail.bpLocationMapPath,'854') |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | | }else{ |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | const res = await workApplyApi().getFormData(8) |
| | | if (res.data.code === '200') { |
| | | state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) |
| | | // if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){ |
| | | // state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({ |
| | | // content, |
| | | // approvalDepBasicId: id, |
| | | // approvalUids: [], |
| | | // approvalType: null |
| | | // })) |
| | | // }else{ |
| | | // state.form.approvalDepBasicList = [] |
| | | // } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modPlateApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalType: item.approvalType |
| | | })) |
| | | state.form.workDetail.electricityUids = row.workDetail.electricityUids.split(',').map(i=>Number(i)) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | | }else{ |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modPowerApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId), |
| | | approvalType: item.approvalType |
| | | })) |
| | | console.log(state.form.approvalDepBasicList,777) |
| | | state.form.acceptUid = row.acceptUser.userId |
| | | state.form.acceptUids = row.acceptUserList.map(i=>i.userId) |
| | | state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId) |
| | | state.form.lastApprover = row.lastApprover.userId |
| | | // state.form.lastApprover = row.lastApprover.userId |
| | | if(row.workDepList && row.workDepList.length>0){ |
| | | state.form.workDepIds = row.workDepList.map(i=>i.workDepId) |
| | | }else{ |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().modSpaceApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | <el-table-column label="风险研判" align="center"> |
| | | <template #default="scope"> |
| | | <el-button v-if="scope.row.status == 0" link type="primary" size="small" @click="openReport('上传', scope.row)">上传研判报告</el-button> |
| | | <el-tag type="danger" v-else-if="scope.row.status == 15">已取消</el-tag> |
| | | <el-tag type="danger" v-else-if="scope.row.status == 16">已废止</el-tag> |
| | | <el-button v-else link type="primary" size="small" @click="openReport('查看', scope.row)">查看研判报告</el-button> |
| | | </template> |
| | |
| | | <el-table-column fixed="right" label="操作" align="center" width="150"> |
| | | <template #default="scope"> |
| | | <span v-if="scope.row.status == 16">已废止</span> |
| | | <span v-if="scope.row.status == 15">已取消</span> |
| | | <el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="danger" size="small" :icon="Delete" @click="abortRecordBtn(scope.row)">取消</el-button> |
| | | <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> |
| | | <el-button v-if="scope.row.status !== 16" link type="primary" size="small" v-throttle :icon="Edit" @click="openEdit(scope.row)">修改</el-button> |
| | | <el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="primary" size="small" v-throttle :icon="Edit" @click="openEdit(scope.row)">修改</el-button> |
| | | <el-button link type="success" v-throttle v-if="scope.row.status == 0 || scope.row.status == 1" size="small" :icon="Download" @click="checkTicket(scope.row)">正式办票</el-button> |
| | | <!-- <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button>--> |
| | | </template> |
| | |
| | | <ground-dialog ref="groundRef" :lists="lists" @refresh="getListByPage"></ground-dialog> |
| | | <broken-dialog ref="brokenRef" :lists="lists" @refresh="getListByPage"></broken-dialog> |
| | | <height-dialog ref="heightRef" :lists="lists" @refresh="getListByPage"></height-dialog> |
| | | <power-dialog ref="powerRef" :lists="lists" @refresh="getListByPage"></power-dialog> |
| | | <power-dialog ref="powerRef" :lists="lists" @refresh="getListByPage"></power-dialog> |
| | | <open-dialog ref="openRef" :lists="lists" @refresh="getListByPage"></open-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | groundDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue')), |
| | | brokenDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue')), |
| | | heightDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue')), |
| | | powerDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue')) |
| | | powerDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue')), |
| | | openDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue')) |
| | | }, |
| | | setup() { |
| | | const userInfo = useUserInfo(); |
| | |
| | | const brokenRef = ref() |
| | | const heightRef = ref() |
| | | const powerRef = ref() |
| | | const openRef = ref() |
| | | const state = reactive<stateType>({ |
| | | pageIndex1: 1, |
| | | pageSize1: 10, |
| | |
| | | { id: 5, name: '断路作业' }, |
| | | { id: 6, name: '高处作业' }, |
| | | { id: 7, name: '临时用电作业' }, |
| | | { id: 8, name: '盲板抽堵作业' } |
| | | { id: 8, name: '盲板抽堵作业' }, |
| | | { id: 9, name: '打开作业' } |
| | | ], |
| | | lists: { |
| | | workerList: [], |
| | |
| | | } |
| | | if(row.workType == 8){ |
| | | plateRef.value.openDialog(row) |
| | | } |
| | | if(row.workType == 9){ |
| | | openRef.value.openDialog(row) |
| | | } |
| | | } |
| | | |
| | |
| | | brokenRef, |
| | | heightRef, |
| | | powerRef, |
| | | openRef, |
| | | openEdit, |
| | | getAllDepartment, |
| | | checkTicket, |
| | |
| | | } |
| | | } |
| | | &:last-of-type { |
| | | height: calc(100% - 100px); |
| | | height: calc(100% - 130px); |
| | | } |
| | | } |
| | | .el-row { |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" filterable multiple :multiple-limit="1" @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitBrokenApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.methodList": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2EObj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2EObj(data.lastApprover) |
| | | const res = await workApplyApi().submitFireApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | </div> |
| | | </el-form> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitGroundApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" filterable multiple :multiple-limit="1" @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids"> |
| | | <el-select v-model="form.safetyMeasureUids" multiple clearable> |
| | | <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> |
| | | <el-select v-model="form.safetyMeasureUids" multiple clearable filterable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approvalUids" filterable label="审批人" align="center"> |
| | | <el-table-column prop="approvalUids" label="审批人" align="center"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable> |
| | | <el-select v-model="scope.row.approvalUids" multiple filterable :disabled="isFirstRow(scope.$index)" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids"> |
| | | <el-select v-model="form.startOrEndUids" multiple clearable> |
| | | <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> |
| | | <el-select v-model="form.startOrEndUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitHeightApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="吊装指挥" prop="workDetail.commanderUid"> |
| | | <el-select v-model="form.workDetail.commanderUid" filterable clearable @change="getCommand"> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | | hoistingToolName: '', |
| | | commanderUid: null, |
| | | weightMass: '', |
| | | solicitorUids: [] |
| | | } |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.commanderUid": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | // state.form.startOrEndUids = state.form.headUids |
| | | // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] |
| | | state.form.startOrEndUids = state.form.headUids |
| | | state.form.approvalDepBasicList[0].approvalUids = state.form.headUids |
| | | // state.form.approvalDepBasicList[0].approvalUids = state.form.headUids |
| | | } |
| | | |
| | | const getCommand =()=>{ |
| | | state.form.approvalDepBasicList[0].approvalUids = [state.form.workDetail.commanderUid] |
| | | } |
| | | |
| | | const getSafetyIds = ()=>{ |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | // data.commanderUid = transform2Obj(data.commanderUid) |
| | | const res = await workApplyApi().submitHoistApply(data) |
| | | if (res.data.code === '200') { |
| | | ElMessage({ |
| | |
| | | getBasicData, |
| | | getWorkerList, |
| | | getStartEndIds, |
| | | getCommand, |
| | | getSafetyIds, |
| | | isFirstRow, |
| | | submitForm, |
对比新文件 |
| | |
| | | <template> |
| | | <div class="home-container"> |
| | | <el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef"> |
| | | <div class="homeCard"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业申请单位" prop="depIdList"> |
| | | <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业内容" prop="workContent"> |
| | | <el-input |
| | | v-model="form.workContent" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业内容" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业单位" prop="workDepIds"> |
| | | <el-cascader style="width: 100%" v-model="form.workDepIds" :props="depProps" @change="getWorkerList" :options="lists.departList" :show-all-levels="false"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业人" prop="operatorUids"> |
| | | <el-select v-model="form.operatorUids" multiple clearable> |
| | | <el-option |
| | | v-for="item in zyList" |
| | | :key="item.uid" |
| | | :label="item.realName" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业地点" prop="workLocation"> |
| | | <el-input |
| | | v-model="form.workLocation" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业地点" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" class="valueSelect"> |
| | | <el-form-item label="关联其他特殊作业"> |
| | | <!-- <el-select v-model="form.involveOtherWork" multiple clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in otherWorkList"--> |
| | | <!-- :key="item.value"--> |
| | | <!-- :label="item.label"--> |
| | | <!-- :value="item.label"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> |
| | | <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="监护人" prop="guardianUids"> |
| | | <el-select v-model="form.guardianUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.spList.jhList" |
| | | :key="item.uid" |
| | | :label="item.realName" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="绑定执法仪" prop="cameraIds"> |
| | | <el-select v-model="form.cameraIds" multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.deviceList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="设备管线信息" prop="workDetail.qpDetailList"> |
| | | <el-table :data="form.workDetail.qpDetailList" style="width: 90%" border> |
| | | <el-table-column prop="qpName" label="设备管线名称"/> |
| | | <el-table-column prop="originalHazardousMedia" label="原有危险介质"/> |
| | | <el-table-column prop="originalTemperature" label="原有温度(℃)"/> |
| | | <el-table-column prop="originalPressure" label="原有压力(kPa)"/> |
| | | <el-table-column label="操作" width="100"> |
| | | <template #default="scope"> |
| | | <el-button size="small" text type="danger" @click="delInfo(scope.$index)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-button type="primary" style="width: 8%;margin-left: 2%" @click="addQPList">新增</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编制人姓名" prop="workDetail.preparedBy"> |
| | | <el-input |
| | | v-model="form.workDetail.preparedBy" |
| | | placeholder="请输入编制人姓名" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编制时间" prop="workDetail.preparedTime"> |
| | | <el-date-picker |
| | | v-model="form.workDetail.preparedTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="有无示意图" prop="workDetail.sketchMapStatus"> |
| | | <el-radio-group v-model="form.workDetail.sketchMapStatus"> |
| | | <el-radio :label="1">有</el-radio> |
| | | <el-radio :label="2">无</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" v-if="form.workDetail.sketchMapStatus == 1"> |
| | | <el-form-item label="示意图" prop="workDetail.sketchMapPath"> |
| | | <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl"> |
| | | <el-icon><Plus /></el-icon> |
| | | <template #tip> |
| | | <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div> |
| | | </template> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="安全工作方案" prop="workDetail.workProgramme"> |
| | | <el-radio-group v-model="form.workDetail.workProgramme"> |
| | | <el-radio :label="1">有</el-radio> |
| | | <el-radio :label="2">无</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预计(整体)开始时间" prop="expStartTime"> |
| | | <el-date-picker |
| | | v-model="form.expStartTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预计(整体)完成时间" prop="expEndTime"> |
| | | <el-date-picker |
| | | v-model="form.expEndTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="风险辨识" prop="riskIdentification"> |
| | | <el-select v-model="form.riskIdentification" multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.riskList" |
| | | :key="item.id" |
| | | :label="item.content" |
| | | :value="item.content" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input |
| | | v-model="form.remark" |
| | | :autosize="{ minRows: 1 }" |
| | | type="textarea" |
| | | placeholder="请输入作业备注" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="display: flex;justify-content: center"> |
| | | <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> |
| | | <el-table-column type="index" label="序号" width="100px" align="center"/> |
| | | <el-table-column prop="measureContent" label="安全措施"/> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> |
| | | <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="display: flex;justify-content: center"> |
| | | <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> |
| | | <el-table-column prop="content" label="审批签字项目" align="center"/> |
| | | <el-table-column prop="approvalType" label="是否必签" align="center"> |
| | | <template #default="scope"> |
| | | <el-form-item label="" prop="acceptUid" label-width="0"> |
| | | <el-radio-group v-model="scope.row.approvalType"> |
| | | <el-radio :label="0">所有必签</el-radio> |
| | | <el-radio :label="1">任一</el-radio> |
| | | <el-radio :label="2">非必签</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="approvalUids" label="审批人" align="center"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> |
| | | <el-select v-model="form.startOrEndUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | | <el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button> |
| | | </div> |
| | | <el-dialog v-model="qpVisible" @open="startAdd"> |
| | | <el-form :model="qpForm" label-width="170px" ref="qpFormRef" :rules="qpFormRules"> |
| | | <el-row :gutter="20"> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="设备管线名称" prop="qpName"> |
| | | <el-input |
| | | v-model="qpForm.qpName" |
| | | placeholder="请输入设备管线名称" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="原有危险介质" prop="originalHazardousMedia"> |
| | | <el-input |
| | | v-model="qpForm.originalHazardousMedia" |
| | | placeholder="请输入原有危险介质" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="原有温度(℃)" prop="originalTemperature"> |
| | | <el-input |
| | | v-model="qpForm.originalTemperature" |
| | | type="number" |
| | | placeholder="请输入原有温度" |
| | | ><template #append>℃</template></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> |
| | | <el-form-item label="原有压力(kPa)" prop="originalPressure"> |
| | | <el-input |
| | | v-model="qpForm.originalPressure" |
| | | type="number" |
| | | placeholder="请输入原有压力" |
| | | ><template #append>kPa</template></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button type="primary" @click="confirmAdd(qpFormRef)">新增</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select> |
| | | <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, onMounted } from 'vue'; |
| | | import { storeToRefs } from 'pinia'; |
| | | import { initBackEndControlRoutes } from '/@/router/backEnd'; |
| | | import {useUserInfo} from "/@/stores/userInfo"; |
| | | import { Session } from '/@/utils/storage'; |
| | | import { Search, Edit } from '@element-plus/icons-vue' |
| | | import {ElMessage, ElMessageBox, UploadProps, UploadUserFile} from 'element-plus' |
| | | import type { FormInstance, FormRules } from 'element-plus' |
| | | import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; |
| | | import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue"; |
| | | import axios from "axios"; |
| | | import {userApi} from "/@/api/systemManage/user"; |
| | | import {verifyPwd} from "/@/utils/toolsValidate"; |
| | | interface stateType { |
| | | form: Object, |
| | | qpForm: Object, |
| | | equipmentDialog: boolean, |
| | | qpVisible: boolean |
| | | zyList: [] |
| | | props1:{}, |
| | | depProps:{}, |
| | | casProps:{} |
| | | safetyMeasureBasicList: [], |
| | | fileList: Array<file>, |
| | | uploadUrl: string, |
| | | dialogVisible: Boolean, |
| | | dialogImageUrl: string | null, |
| | | imgLimit: number |
| | | tabLoading: boolean |
| | | } |
| | | interface file { |
| | | url: string; |
| | | } |
| | | export default defineComponent({ |
| | | name: 'openForm', |
| | | components: {workSelect}, |
| | | props:['lists'], |
| | | setup(props: any, context: any) { |
| | | const userInfo = useUserInfo() |
| | | const { userInfos } = storeToRefs(userInfo); |
| | | const state = reactive<stateType>({ |
| | | tabLoading: false, |
| | | equipmentDialog: false, |
| | | qpVisible: false, |
| | | safetyMeasureBasicList: [], |
| | | zyList: [], |
| | | form: { |
| | | workType: 9, |
| | | workLevel: 0, |
| | | depIdList: [], |
| | | applyDepId: null, |
| | | seDepId: null, |
| | | expStartTime: '', |
| | | expEndTime: '', |
| | | operatorUids: [], |
| | | headUids: [], |
| | | guardianUids: [], |
| | | workDepIds: [], |
| | | workContent: '', |
| | | workLocation: '', |
| | | riskIdentification: [], |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | | qpDetailList: [], |
| | | preparedBy: '', |
| | | preparedTime: '', |
| | | sketchMapStatus: null, |
| | | sketchMapPath: [], |
| | | workProgramme: 1, |
| | | }, |
| | | remark: '' |
| | | }, |
| | | qpForm: { |
| | | qpName: '', |
| | | originalHazardousMedia: '', |
| | | originalTemperature: null, |
| | | originalPressure: null, |
| | | }, |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | multiple: true, |
| | | checkStrictly: true, |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: true, |
| | | lazy: true, |
| | | async lazyLoad(node, resolve){ |
| | | const { value, level } = node |
| | | let nodes = [] |
| | | if(level == 0){ |
| | | nodes = props.lists.workerList |
| | | }else{ |
| | | let res = await userApi().getCtf({uid: value}) |
| | | if(res.data.code == 200){ |
| | | nodes = res.data.data |
| | | }else{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }) |
| | | } |
| | | } |
| | | nodes=nodes.map(item => ({ |
| | | uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName, |
| | | username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')', |
| | | leaf: level >= 1 |
| | | })) |
| | | resolve(nodes) |
| | | } |
| | | }, |
| | | fileList: [], |
| | | imgLimit: 3, |
| | | uploadUrl: '', |
| | | dialogVisible: false, |
| | | dialogImageUrl: null, |
| | | }); |
| | | // let validateList = (rule: any, value: any, callback: any)=>{ |
| | | // if(value.length==0){ |
| | | // callback(new Error('请完善设备管线信息')) |
| | | // }else{ |
| | | // callback() |
| | | // } |
| | | // } |
| | | const ruleFormRef = ref<FormInstance>() |
| | | const qpFormRef = ref<FormInstance>() |
| | | const applyRules = reactive<FormRules>({ |
| | | depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | workDepIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.preparedBy": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.preparedTime": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.sketchMapStatus": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.sketchMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.workProgramme": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | // "workDetail.qpDetailList": [{ required: true, validator: validateList, trigger: 'blur' }] |
| | | }); |
| | | const qpFormRules = reactive<FormRules>({ |
| | | qpName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | originalHazardousMedia: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | originalTemperature: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | originalPressure: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] |
| | | }) |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | state.zyList = props.lists.spList.opList |
| | | getBasicData() |
| | | }); |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | | } |
| | | |
| | | const addQPList = ()=>{ |
| | | state.qpVisible = true |
| | | } |
| | | |
| | | const startAdd =()=>{ |
| | | state.qpForm={ |
| | | qpName: '', |
| | | originalHazardousMedia: '', |
| | | originalTemperature: null, |
| | | originalPressure: null, |
| | | } |
| | | } |
| | | |
| | | const confirmAdd=async (formEl: FormInstance | undefined)=>{ |
| | | if (!formEl) return |
| | | await formEl.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | state.form.workDetail.qpDetailList.push(state.qpForm) |
| | | state.qpVisible = false |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const delInfo=(index: number)=>{ |
| | | state.form.workDetail.qpDetailList.splice(index,1) |
| | | } |
| | | |
| | | const getWorkerList = (val)=>{ |
| | | const filteredList = props.lists.spList.opList.filter(i => state.form.workDepIds.includes(i.depId)); |
| | | if(filteredList && filteredList.length>0){ |
| | | state.zyList = filteredList |
| | | }else{ |
| | | state.zyList = props.lists.spList.opList |
| | | } |
| | | } |
| | | |
| | | const getSelected = ()=>{ |
| | | state.form.involveOtherWork = workSelectRef.value.selected |
| | | } |
| | | const findParent = ()=>{ |
| | | state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] |
| | | state.form.seDepId = state.form.depIdList[0] |
| | | } |
| | | |
| | | // 获取基础数据 |
| | | const getBasicData = async ()=>{ |
| | | state.tabLoading = true |
| | | const res = await workApplyApi().getFormData(9) |
| | | if (res.data.code === '200') { |
| | | state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) |
| | | if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){ |
| | | state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({ |
| | | content, |
| | | approvalDepBasicId: id, |
| | | approvalUids: [], |
| | | approvalType: null |
| | | })) |
| | | }else{ |
| | | state.form.approvalDepBasicList = [] |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | state.tabLoading = false |
| | | }; |
| | | |
| | | const getStartEndIds = (value)=>{ |
| | | // let selected = value |
| | | // if(selected.length>1){ |
| | | // const temp = [] |
| | | // for(let i of selected){ |
| | | // const index = temp.findIndex(item => item[0] === i[0]); |
| | | // if (index !== -1) { |
| | | // temp[index] = i |
| | | // }else{ |
| | | // temp.push(i) |
| | | // } |
| | | // } |
| | | // state.form.headUids = temp |
| | | // } |
| | | // state.form.startOrEndUids = state.form.headUids |
| | | // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] |
| | | state.form.startOrEndUids = state.form.headUids |
| | | state.form.approvalDepBasicList[0].approvalUids = state.form.headUids |
| | | } |
| | | |
| | | const getSafetyIds = ()=>{ |
| | | state.form.safetyMeasureUids = state.form.guardianUids |
| | | } |
| | | |
| | | const isFirstRow = (index)=> { |
| | | return index === 0; |
| | | } |
| | | |
| | | const transformArr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: i[0], |
| | | certificate: i[1].split(',')[0], |
| | | certExpiredAt: i[1].split(',')[1], |
| | | certTypeName: i[1].split(',')[2] |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id: any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | | const singleSelect=(value,type)=>{ |
| | | let selected = value |
| | | if(selected.length>1){ |
| | | const temp = [] |
| | | for(let i of selected){ |
| | | const index = temp.findIndex(item => item[0] === i[0]); |
| | | if (index !== -1) { |
| | | temp[index] = i |
| | | }else{ |
| | | temp.push(i) |
| | | } |
| | | } |
| | | if(type == '作业人'){state.form.operatorUids = temp} |
| | | if(type == '监护人'){state.form.guardianUids = temp} |
| | | if(type == '确认人'){state.form.safetyMeasureUids = temp} |
| | | if(type == '结束人'){state.form.startOrEndUids = temp} |
| | | } |
| | | } |
| | | |
| | | const submitForm = async (formEl: FormInstance | undefined) => { |
| | | if (!formEl) return |
| | | await formEl.validate(async (valid, fields) => { |
| | | if (valid) { |
| | | for(let i of state.form.approvalDepBasicList){ |
| | | if(i.approvalUids.length == 0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '部分审批人未配置' |
| | | }); |
| | | return |
| | | } |
| | | } |
| | | // if(Array.isArray(state.form.involveOtherWork)){ |
| | | // state.form.involveOtherWork = state.form.involveOtherWork.join(',') |
| | | // } |
| | | if(state.form.workDetail.sketchMapStatus == 2){ |
| | | state.form.workDetail.sketchMapPath = [] |
| | | } |
| | | state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.join(',') |
| | | state.form.riskIdentification = state.form.riskIdentification.join(',') |
| | | const {depIdList,...data} = state.form |
| | | data.operatorUids = transform2Arr(data.operatorUids) |
| | | data.headUids = transform2Arr(data.headUids) |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitOpenApply(data) |
| | | if (res.data.code === '200') { |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | state.form.workDetail.sketchMapPath = [] |
| | | state.fileList = [] |
| | | state.form.workDetail.qpDetailList = [] |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | // state.form.involveOtherWork = state.form.involveOtherWork.split(',') |
| | | state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.split(',') |
| | | state.form.riskIdentification = state.form.riskIdentification.split(',') |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const findNearestDepLevel2DepId = (data, targetDepId) => { |
| | | let nearestDepId = null; |
| | | |
| | | const traverseTree = (node) => { |
| | | if (node.depId === targetDepId) { |
| | | return true; |
| | | } |
| | | |
| | | if (node.children && node.children.length > 0) { |
| | | for (const child of node.children) { |
| | | const found = traverseTree(child); |
| | | if (found) { |
| | | if (child.depLevel === 2) { |
| | | nearestDepId = child.depId; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | }; |
| | | |
| | | for (const root of data) { |
| | | traverseTree(root); |
| | | } |
| | | |
| | | return nearestDepId; |
| | | }; |
| | | |
| | | const handlePreview: UploadProps['onPreview'] = (uploadFile) => { |
| | | console.log(uploadFile); |
| | | }; |
| | | |
| | | const handlePictureCardPreview = (uploadFile: { url: string }) => { |
| | | state.dialogImageUrl = uploadFile.url!; |
| | | state.dialogVisible = true; |
| | | }; |
| | | |
| | | const getUploadUrl = async(rawFile: any) => { |
| | | if(rawFile.size / 1024 / 1024 > 2){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '文件大小不能超过2M。' |
| | | }); |
| | | return Promise.reject(false) |
| | | }else{ |
| | | const res = await workApplyApi().getUpload9Url(rawFile.name) |
| | | state.form.workDetail.sketchMapPath.push(res.data.data.fileName) |
| | | state.uploadUrl = res.data.data.uploadUrl |
| | | } |
| | | }; |
| | | |
| | | const upload = async (params: any) => { |
| | | 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); |
| | | // } |
| | | }); |
| | | }; |
| | | }; |
| | | |
| | | const beforeRemove = (file: {}, fileList: []) => { |
| | | if (file && file.status === "success") { |
| | | const result = new Promise((resolve, reject) => { |
| | | ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }) |
| | | .then(() => { |
| | | // console.log(state.workDetail.sketchMapPath,'path') |
| | | const list = JSON.parse(JSON.stringify(state.form.workDetail.sketchMapPath)) |
| | | fileList.map((item, index) => { |
| | | if (item.uid === file.uid) { |
| | | fileList.splice(index, 1) |
| | | state.form.workDetail.sketchMapPath.splice(index, 1) |
| | | // 请求删除接口 |
| | | deletePic(list[index]) |
| | | } |
| | | }) |
| | | console.log(state.form.workDetail.sketchMapPath, 'sketchMapPath') |
| | | }) |
| | | .catch(() => { |
| | | reject(false); |
| | | }); |
| | | }); |
| | | return result; |
| | | } |
| | | }; |
| | | |
| | | // 删除图片接口 |
| | | const deletePic = async(fileName:string)=>{ |
| | | const res = await workApplyApi().deleteFile({fileName: fileName}) |
| | | if (res.data.code === '200') { |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '删除成功!' |
| | | }); |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: res.data.msg |
| | | }); |
| | | } |
| | | } |
| | | |
| | | const showTip =()=>{ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '超出文件上传数量' |
| | | }); |
| | | } |
| | | |
| | | // 折线图 |
| | | const renderMenu = async (value: string) => { |
| | | Session.set('projectId',value) |
| | | userInfos.value.projectId = value |
| | | await initBackEndControlRoutes(); |
| | | }; |
| | | return { |
| | | addQPList, |
| | | startAdd, |
| | | confirmAdd, |
| | | delInfo, |
| | | renderMenu, |
| | | getBasicData, |
| | | getWorkerList, |
| | | getStartEndIds, |
| | | getSafetyIds, |
| | | isFirstRow, |
| | | submitForm, |
| | | findParent, |
| | | handlePreview, |
| | | getUploadUrl, |
| | | upload, |
| | | showTip, |
| | | handlePictureCardPreview, |
| | | beforeRemove, |
| | | openWorkSelect, |
| | | getSelected, |
| | | singleSelect, |
| | | workSelectRef, |
| | | Search, |
| | | ruleFormRef, |
| | | qpFormRef, |
| | | applyRules, |
| | | qpFormRules, |
| | | ...toRefs(state), |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | .home-container { |
| | | width: 100%; |
| | | height: 100vh; |
| | | overflow: hidden; |
| | | overflow-y: scroll; |
| | | &::-webkit-scrollbar{ |
| | | width: 0; |
| | | background-color: transparent; |
| | | } |
| | | .homeCard{ |
| | | width: 100%; |
| | | padding: 20px; |
| | | box-sizing: border-box; |
| | | background: #fff; |
| | | border-radius: 4px; |
| | | margin-bottom: 20px; |
| | | } |
| | | .applyBtn{ |
| | | width: 100%; |
| | | background: #fff; |
| | | padding: 20px 0; |
| | | box-shadow: 0 -3px 8px rgba(150,150,150,.1); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .el-row{ |
| | | margin-bottom: 20px; |
| | | } |
| | | .el-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | .el-input{ |
| | | width: 100% !important; |
| | | } |
| | | .el-date-editor::v-deep{ |
| | | width: 100%; |
| | | } |
| | | .el-select{ |
| | | width: 100%; |
| | | } |
| | | .el-cascader{ |
| | | width: 100% !important; |
| | | } |
| | | } |
| | | .valueSelect{ |
| | | ::v-deep(.el-popper){ |
| | | display: none !important; |
| | | } |
| | | } |
| | | .tab-i{ |
| | | margin-bottom: 15px; |
| | | |
| | | &:last-of-type{ |
| | | margin-bottom: 0; |
| | | } |
| | | ::v-deep(.el-form-item){ |
| | | .el-form-item__label{ |
| | | margin-bottom: 4px; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.pipingName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitPlateApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitPowerApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="作业负责人" prop="headUids"> |
| | | <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> |
| | | <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="完工验收" prop="acceptUid"> |
| | | <el-select v-model="form.acceptUid" filterable clearable> |
| | | <el-form-item label="完工验收" prop="acceptUids"> |
| | | <el-select v-model="form.acceptUids" filterable multiple clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最终审批人" prop="lastApprover"> |
| | | <el-select v-model="form.lastApprover" filterable clearable> |
| | | <el-option |
| | | v-for="item in lists.workerList" |
| | | :key="item.uid" |
| | | :label="item.username" |
| | | :value="item.uid" |
| | | /> |
| | | </el-select> |
| | | <!-- <el-row>--> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="最终审批人" prop="lastApprover">--> |
| | | <!-- <el-select v-model="form.lastApprover" filterable clearable>--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in lists.workerList"--> |
| | | <!-- :key="item.uid"--> |
| | | <!-- :label="item.username"--> |
| | | <!-- :value="item.uid"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | </div> |
| | | </el-form> |
| | | <div class="applyBtn"> |
| | |
| | | involveOtherWork: [], |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | acceptUids: [], |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | |
| | | expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | | "workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], |
| | |
| | | data.guardianUids = transform2Arr(data.guardianUids) |
| | | data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) |
| | | data.startOrEndUids = transform2Arr(data.startOrEndUids) |
| | | data.acceptUid = transform2Obj(data.acceptUid) |
| | | data.acceptUids = transform2Arr(data.acceptUids) |
| | | data.lastApprover = transform2Obj(data.lastApprover) |
| | | const res = await workApplyApi().submitSpaceApply(data) |
| | | if (res.data.code === '200') { |
| | |
| | | <el-tab-pane :lazy="true" label="盲板抽堵作业" name="plate"> |
| | | <plate-form ref="plate" :lists="lists"></plate-form> |
| | | </el-tab-pane> |
| | | <el-tab-pane :lazy="true" label="打开作业" name="open"> |
| | | <open-form ref="open" :lists="lists"></open-form> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <!-- <material-dialog ref="material"></material-dialog>--> |
| | | <!-- <el-radio-group v-model="activeName" size="large" @change="(value)=>handleClick(value)">--> |
| | |
| | | heightForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue')), |
| | | powerForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue')), |
| | | plateForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue')), |
| | | openForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/open.vue')), |
| | | }, |
| | | setup() { |
| | | const userInfo = useUserInfo() |
| | |
| | | const height = ref() |
| | | const power = ref() |
| | | const plate = ref() |
| | | const open = ref() |
| | | |
| | | const handleClick = (tab: TabsPaneContext, event: Event) => { |
| | | state.loading = true |
| | |
| | | // state.departmentList = JSON.parse(JSON.stringify(res.data.data)) |
| | | // state.departmentList2 = state.departmentList[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50) |
| | | state.lists.departList = JSON.parse(JSON.stringify(res.data.data)) |
| | | state.lists.departList2 = JSON.parse(JSON.stringify(res.data.data))[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50) |
| | | state.lists.departList2 = JSON.parse(JSON.stringify(res.data.data))[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50 || i.depId == 10 || i.depId == 41 || i.depId == 46 || i.depId == 47) |
| | | } else { |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | hoist, |
| | | plate, |
| | | power, |
| | | open, |
| | | handleClick, |
| | | getOtherWork |
| | | }; |
| | |
| | | { id: 5, name: '断路作业' }, |
| | | { id: 6, name: '高处作业' }, |
| | | { id: 7, name: '临时用电作业' }, |
| | | { id: 8, name: '盲板抽堵作业' } |
| | | { id: 8, name: '盲板抽堵作业' }, |
| | | { id: 9, name: '打开作业' } |
| | | ], |
| | | workLevelList: [ |
| | | { id: 3, name: '特级动火作业' }, |
| | |
| | | <div>操作内容:{{item.content}}</div> |
| | | <div>操作意见:{{item.approvalOpinions}}</div> |
| | | <div v-if="item.fileUrl" style="display: flex;align-items: flex-start">附件内容: |
| | | <el-image style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item.fileUrl" fit="cover" /> |
| | | <el-image v-for="(i,index) in item.fileUrl.split(',')" :key="index" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="i" fit="cover" /> |
| | | </div> |
| | | <div v-if="item.signUrl" style="display: flex;align-items: flex-start">签字图片: |
| | | <el-image style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item.signUrl" fit="cover" /> |
| | | <el-image v-for="(i,index) in item.signUrl.split(',')" :key="index" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="i" fit="cover" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </el-button> |
| | | </div> |
| | | <div class="topChart"> |
| | | <!-- <div class="chart-item">--> |
| | | <!-- <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>--> |
| | | <!-- <div class="chart-tit">--> |
| | | <!-- <span class="tit">各事业部关联作业分析</span>--> |
| | | <!-- <div class="filter-part">--> |
| | | <!-- <el-cascader :teleported="false" v-model="chartSearch2.depId" @change="changeDep2()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>--> |
| | | <!-- <el-select v-model="chartSearch2.type" size="small" :teleported="false" @change="changeType2()">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in workType1"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :label="item.name"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="chart" :id="slfx"></div>--> |
| | | <!-- </div>--> |
| | | <div class="chart-item"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | | <div class="chart-tit"> |
| | | <span class="tit">八大作业各分类分布图</span> |
| | | <span class="tit">特殊作业数量趋势</span> |
| | | <div class="filter-part filter-part2"> |
| | | <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/> |
| | | </div> |
| | | </div> |
| | | <div class="chart" :id="zyqs"></div> |
| | | </div> |
| | | <div class="chart-item"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | | <div class="chart-tit"> |
| | | <span class="tit">作业分类分布图</span> |
| | | <div class="filter-part filter-part2"> |
| | | <el-cascader :teleported="false" v-model="chartSearch1.depId" @change="changeDep1()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/> |
| | | </div> |
| | |
| | | <el-radio :label='365' border>近一年</el-radio> |
| | | </el-radio-group> |
| | | </div> |
| | | <div class="chart-item"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | | <div class="chart-tit"> |
| | | <span class="tit">各事业部关联作业分析</span> |
| | | <div class="filter-part"> |
| | | <el-cascader :teleported="false" v-model="chartSearch2.depId" @change="changeDep2()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/> |
| | | <el-select v-model="chartSearch2.type" size="small" :teleported="false" @change="changeType2()"> |
| | | <el-option |
| | | v-for="item in workType1" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="chart" :id="slfx"></div> |
| | | </div> |
| | | </div> |
| | | <div class="topChart"> |
| | | <div class="chart-item"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | | <div class="chart-tit"> |
| | | <span class="tit">关联作业趋势图</span> |
| | | <div class="filter-part filter-part2"> |
| | | <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/> |
| | | </div> |
| | | </div> |
| | | <div class="chart" :id="zyqs"></div> |
| | | </div> |
| | | <div class="chart-item"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | | <div class="chart-tit"> |
| | | <span class="tit">作业警报记录</span> |
| | | <div class="filter-part"> |
| | | <!-- <el-switch--> |
| | | <!-- v-model="chartSearch4.type"--> |
| | | <!-- inline-prompt--> |
| | | <!-- style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"--> |
| | | <!-- active-text="作业人"--> |
| | | <!-- inactive-text="监护人"--> |
| | | <!-- />--> |
| | | <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)"> |
| | | <el-option label="近7天" :value="7"/> |
| | | <el-option label="近30天" :value="30"/> |
| | | <el-option label="近90天" :value="90"/> |
| | | <el-option label="近1年" :value="365"/> |
| | | </el-select> |
| | | <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()"> |
| | | <el-option |
| | | v-for="item in workType1" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="chart"> |
| | | <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }"> |
| | | <el-table-column property="operatorUname" label="姓名" align="center"/> |
| | | <el-table-column property="deptName" label="所属部门" align="center"/> |
| | | <el-table-column property="warningCount" label="异常报警次数" align="center"/> |
| | | <!-- <el-table-column property="role" label="角色" align="center"/>--> |
| | | <!-- <el-table-column property="isCard" label="是否持证" align="center">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <span>{{scope.row.isCard == 1?'是':'否'}}</span>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | <!-- <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>--> |
| | | </div> |
| | | <!-- <div class="chart" :id="slfx"></div>--> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="topChart">--> |
| | | <!-- <div class="chart-item">--> |
| | | <!-- <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>--> |
| | | <!-- <div class="chart-tit">--> |
| | | <!-- <span class="tit">关联作业趋势图</span>--> |
| | | <!-- <div class="filter-part filter-part2">--> |
| | | <!-- <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="chart" :id="zyqs"></div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="chart-item">--> |
| | | <!-- <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>--> |
| | | <!-- <div class="chart-tit">--> |
| | | <!-- <span class="tit">作业警报记录</span>--> |
| | | <!-- <div class="filter-part">--> |
| | | <!-- <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)">--> |
| | | <!-- <el-option label="近7天" :value="7"/>--> |
| | | <!-- <el-option label="近30天" :value="30"/>--> |
| | | <!-- <el-option label="近90天" :value="90"/>--> |
| | | <!-- <el-option label="近1年" :value="365"/>--> |
| | | <!-- </el-select>--> |
| | | <!-- <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in workType1"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :label="item.name"--> |
| | | <!-- :value="item.id"--> |
| | | <!-- />--> |
| | | <!-- </el-select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="chart">--> |
| | | <!-- <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">--> |
| | | <!-- <el-table-column property="operatorUname" label="姓名" align="center"/>--> |
| | | <!-- <el-table-column property="deptName" label="所属部门" align="center"/>--> |
| | | <!-- <el-table-column property="warningCount" label="异常报警次数" align="center"/>--> |
| | | <!-- </el-table>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div> |
| | | <div class="homeCard"> |
| | | <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> |
| | |
| | | <!-- </div>--> |
| | | <!-- </el-col>--> |
| | | <el-col :span="6" style="display:flex;align-items: center;"> |
| | | <span style="white-space: nowrap;margin-left: 20px">申请时间:</span> |
| | | <span style="white-space: nowrap">申请时间:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-date-picker |
| | | v-model="searchDate" |
| | |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="4" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap;margin-left: 20px">作业票编号:</span> |
| | | <span style="white-space: nowrap">作业票编号:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-input |
| | | v-model="searchParams.workPermitNo" |
| | | placeholder="请输入作业票编号" |
| | | size="small" |
| | | /> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="4" style="display:flex;align-items: center"> |
| | | <span style="white-space: nowrap">申请单位:</span> |
| | | <div class="grid-content topInfo"> |
| | | <el-cascader :teleported="false" v-model="searchParams.applyDepId" @change="changeDep4()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/> |
| | | </div> |
| | | </el-col> |
| | | <el-button type="primary" style="margin-left: 20px" @click="searchRecord" size="small">查询</el-button> |
| | |
| | | <el-table-column property="applyUname" label="申请人" align="center"/> |
| | | <el-table-column property="applyDepName" label="申请单位" align="center"/> |
| | | <el-table-column property="applyTime" label="申请时间" align="center"/> |
| | | <el-table-column property="startUname" label="开始人" align="center"> |
| | | <el-table-column property="workLocation" label="作业地点" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.startUname?scope.row.startUname:'--'}}</span> |
| | | <span>{{scope.row.workLocation?scope.row.workLocation:'--'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column property="finishUname" label="结束人" align="center"> |
| | | <el-table-column property="workContent" label="作业内容" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.finishUname?scope.row.finishUname:'--'}}</span> |
| | | <span>{{scope.row.workContent?scope.row.workContent:'--'}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column property="startUname" label="开始人" align="center">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <span>{{scope.row.startUname?scope.row.startUname:'--'}}</span>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column property="finishUname" label="结束人" align="center">--> |
| | | <!-- <template #default="scope">--> |
| | | <!-- <span>{{scope.row.finishUname?scope.row.finishUname:'--'}}</span>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <el-table-column property="workStartTime" label="作业开始时间" align="center"> |
| | | <template #default="scope"> |
| | | <span>{{scope.row.workStartTime?scope.row.workStartTime:'--'}}</span> |
| | |
| | | workPermitNo: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | workAllStatus: null |
| | | workAllStatus: null, |
| | | applyDepId: null |
| | | }, |
| | | dialogReview: false, |
| | | departmentList: [], |
| | |
| | | operators: [] |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | emitPath: false, |
| | | value: 'depId', |
| | | label: 'depName', |
| | |
| | | { id: 5, name: '断路作业' }, |
| | | { id: 6, name: '高处作业' }, |
| | | { id: 7, name: '临时用电作业' }, |
| | | { id: 8, name: '盲板抽堵作业' } |
| | | { id: 8, name: '盲板抽堵作业' }, |
| | | { id: 9, name: '打开作业' } |
| | | ], |
| | | workTypeList: [ |
| | | { id: 1, name: '动火作业' }, |
| | |
| | | { id: 5, name: '断路作业' }, |
| | | { id: 6, name: '高处作业' }, |
| | | { id: 7, name: '临时用电作业' }, |
| | | { id: 8, name: '盲板抽堵作业' } |
| | | { id: 8, name: '盲板抽堵作业' }, |
| | | { id: 9, name: '打开作业' } |
| | | ], |
| | | workStatusList: [ |
| | | { |
| | |
| | | } |
| | | const changeDep3=()=>{ |
| | | getDepMonth() |
| | | } |
| | | const changeDep4=()=>{ |
| | | searchRecord() |
| | | } |
| | | const toFullscreen =()=>{ |
| | | const element = document.getElementById('bigScreen') |
| | |
| | | } |
| | | // 刷新 |
| | | const reLoadData = async () => { |
| | | state.pageIndex = 1 |
| | | getMydepList() |
| | | }; |
| | | |
| | |
| | | |
| | | // 关键词查询记录 |
| | | const searchRecord = async () => { |
| | | state.pageIndex = 1 |
| | | getMydepList() |
| | | }; |
| | | // 重置搜索 |
| | |
| | | workPermitNo: '', |
| | | startTime: '', |
| | | endTime: '', |
| | | workAllStatus: null |
| | | workAllStatus: null, |
| | | applyDepId: null |
| | | } |
| | | state.searchDate = [] |
| | | state.pageIndex = 1 |
| | |
| | | changeType2, |
| | | changeType4, |
| | | changeDep3, |
| | | changeDep4, |
| | | toFullscreen, |
| | | // handleReview, |
| | | openVideo, |
| | |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | margin-bottom: 20px; |
| | | height: 40%; |
| | | height: 50%; |
| | | &:last-of-type{ |
| | | margin-bottom: 0; |
| | | } |
| | |
| | | width: 100%; |
| | | height: 85%; |
| | | overflow-y: scroll; |
| | | scrollbar-width: none; /* firefox */ |
| | | -ms-overflow-style: none; /* IE 10+ */ |
| | | .el-table{ |
| | | //:deep(.el-table__inner-wrapper){ |
| | | // height: 100% !important; |
| | |
| | | { |
| | | label: "盲板抽堵作业", |
| | | value: 8 |
| | | }, |
| | | { |
| | | label: "打开作业", |
| | | value: 9 |
| | | } |
| | | ] |
| | | }); |
| | |
| | | { |
| | | label: "盲板抽堵作业", |
| | | value: 8 |
| | | }, |
| | | { |
| | | label: "打开作业", |
| | | value: 9 |
| | | } |
| | | ] |
| | | }); |
| | |
| | | size="default" |
| | | ></el-cascader> |
| | | <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.username" placeholder="请输入用户名" style="max-width: 180px;margin-left: 10px;margin-right: 10px"> </el-input> |
| | | <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.realName" placeholder="请输入真实姓名" style="max-width: 180px"> </el-input> |
| | | <!-- <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.realName" placeholder="请输入真实姓名" style="max-width: 180px"> </el-input>--> |
| | | <el-button size="default" type="primary" class="ml10" @click="initUserTableData"> |
| | | <el-icon> |
| | | <ele-Search /> |