forked from integrated_whb/integrated_whb_vue
Merge branch 'dev' of http://47.92.113.182:3000/integrated_whb/integrated_whb_vue into dev
commit
f9aa36fc15
|
@ -8,10 +8,10 @@
|
||||||
"name": "vue3_template",
|
"name": "vue3_template",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@element-plus/icons-vue": "^2.1.0",
|
"@element-plus/icons-vue": "^2.3.1",
|
||||||
"@icon-park/vue-next": "^1.4.2",
|
"@icon-park/vue-next": "^1.4.2",
|
||||||
"@vueuse/core": "^9.13.0",
|
"@vueuse/core": "^9.13.0",
|
||||||
"@vueuse/integrations": "^10.7.0",
|
"@vueuse/integrations": "^10.7.1",
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"axios": "^1.6.3",
|
"axios": "^1.6.3",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
|
@ -20,40 +20,42 @@
|
||||||
"mitt": "^3.0.1",
|
"mitt": "^3.0.1",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"pinia-plugin-persistedstate": "^3.2.0",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"qs": "^6.11.2",
|
"qs": "^6.11.2",
|
||||||
|
"relation-graph": "^2.1.24",
|
||||||
"throttle-debounce": "^5.0.0",
|
"throttle-debounce": "^5.0.0",
|
||||||
"v-viewer": "^3.0.11",
|
"v-viewer": "^3.0.11",
|
||||||
"vue": "^3.3.13",
|
"vue": "^3.4.3",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.2.5",
|
||||||
|
"vue3-pdfjs": "^0.1.6",
|
||||||
"vue3-print-nb": "^0.1.4",
|
"vue3-print-nb": "^0.1.4",
|
||||||
"vue3-puzzle-vcode": "^1.0.16"
|
"vue3-puzzle-vcode": "^1.1.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@our-patches/postcss-px-to-viewport": "^1.2.0",
|
"@our-patches/postcss-px-to-viewport": "^1.2.0",
|
||||||
"@types/node": "^18.18.4",
|
"@types/node": "^18.19.4",
|
||||||
"@vitejs/plugin-basic-ssl": "^1.0.1",
|
"@vitejs/plugin-basic-ssl": "^1.0.2",
|
||||||
"@vitejs/plugin-vue": "^4.4.0",
|
"@vitejs/plugin-vue": "^4.6.2",
|
||||||
"@vue/eslint-config-prettier": "^7.1.0",
|
"@vue/eslint-config-prettier": "^7.1.0",
|
||||||
"autoprefixer": "^10.4.16",
|
"autoprefixer": "^10.4.16",
|
||||||
"eslint": "^8.51.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-config-prettier": "^8.10.0",
|
"eslint-config-prettier": "^8.10.0",
|
||||||
"eslint-config-standard": "^17.1.0",
|
"eslint-config-standard": "^17.1.0",
|
||||||
"eslint-plugin-import": "^2.28.1",
|
"eslint-plugin-import": "^2.29.1",
|
||||||
"eslint-plugin-n": "^15.7.0",
|
"eslint-plugin-n": "^15.7.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.19.2",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"sass": "^1.69.0",
|
"sass": "^1.69.0",
|
||||||
"unplugin-auto-import": "^0.12.2",
|
"unplugin-auto-import": "^0.12.2",
|
||||||
"unplugin-vue-components": "^0.22.12",
|
"unplugin-vue-components": "^0.22.12",
|
||||||
"vite": "^4.4.11",
|
"vite": "^4.5.1",
|
||||||
"vite-plugin-enhance-log": "^0.5.2",
|
"vite-plugin-enhance-log": "^0.5.2",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-remove-console": "^2.1.1",
|
"vite-plugin-remove-console": "^2.2.0",
|
||||||
"vue-eslint-parser": "^9.3.1"
|
"vue-eslint-parser": "^9.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@aashutoshrathi/word-wrap": {
|
"node_modules/@aashutoshrathi/word-wrap": {
|
||||||
|
@ -1935,6 +1937,14 @@
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/base64-arraybuffer": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/binary-extensions": {
|
"node_modules/binary-extensions": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||||
|
@ -2215,6 +2225,14 @@
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/css-line-break": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
|
||||||
|
"dependencies": {
|
||||||
|
"utrie": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/cssesc": {
|
"node_modules/cssesc": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||||
|
@ -2323,6 +2341,12 @@
|
||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/dommatrix": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/dommatrix/-/dommatrix-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==",
|
||||||
|
"deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix."
|
||||||
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.617",
|
"version": "1.4.617",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.617.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.617.tgz",
|
||||||
|
@ -3466,6 +3490,18 @@
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/html2canvas": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
|
||||||
|
"dependencies": {
|
||||||
|
"css-line-break": "^2.1.0",
|
||||||
|
"text-segmentation": "^1.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ignore": {
|
"node_modules/ignore": {
|
||||||
"version": "5.3.0",
|
"version": "5.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
|
||||||
|
@ -4326,6 +4362,23 @@
|
||||||
"integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==",
|
"integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/pdfjs-dist": {
|
||||||
|
"version": "2.16.105",
|
||||||
|
"resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-2.16.105.tgz",
|
||||||
|
"integrity": "sha512-J4dn41spsAwUxCpEoVf6GVoz908IAA3mYiLmNxg8J9kfRXc2jxpbUepcP0ocp0alVNLFthTAM8DZ1RaHh8sU0A==",
|
||||||
|
"dependencies": {
|
||||||
|
"dommatrix": "^1.0.3",
|
||||||
|
"web-streams-polyfill": "^3.2.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"worker-loader": "^3.0.8"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"worker-loader": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
|
@ -4608,6 +4661,15 @@
|
||||||
"url": "https://github.com/sponsors/mysticatea"
|
"url": "https://github.com/sponsors/mysticatea"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/relation-graph": {
|
||||||
|
"version": "2.1.24",
|
||||||
|
"resolved": "https://registry.npmmirror.com/relation-graph/-/relation-graph-2.1.24.tgz",
|
||||||
|
"integrity": "sha512-W9eM2Ph8libTN1GeFrmVW8lYFW5wEZdeXrfliT+l1Mc6nBdGEojT+qXeiUSK0yhjhmilrD+yW1hx5d607/15Hw==",
|
||||||
|
"dependencies": {
|
||||||
|
"html2canvas": "^1.4.1",
|
||||||
|
"screenfull": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/require-directory": {
|
"node_modules/require-directory": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
|
@ -4760,6 +4822,14 @@
|
||||||
"node": ">=14.0.0"
|
"node": ">=14.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/screenfull": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmmirror.com/screenfull/-/screenfull-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/scule": {
|
"node_modules/scule": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/scule/-/scule-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/scule/-/scule-1.1.1.tgz",
|
||||||
|
@ -4985,6 +5055,14 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/text-segmentation": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
|
||||||
|
"dependencies": {
|
||||||
|
"utrie": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/text-table": {
|
"node_modules/text-table": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||||
|
@ -5318,6 +5396,14 @@
|
||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/utrie": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
|
||||||
|
"dependencies": {
|
||||||
|
"base64-arraybuffer": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/v-viewer": {
|
"node_modules/v-viewer": {
|
||||||
"version": "3.0.11",
|
"version": "3.0.11",
|
||||||
"resolved": "https://registry.npmjs.org/v-viewer/-/v-viewer-3.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/v-viewer/-/v-viewer-3.0.11.tgz",
|
||||||
|
@ -5546,6 +5632,18 @@
|
||||||
"vue": "^3.2.0"
|
"vue": "^3.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue3-pdfjs": {
|
||||||
|
"version": "0.1.6",
|
||||||
|
"resolved": "https://registry.npmmirror.com/vue3-pdfjs/-/vue3-pdfjs-0.1.6.tgz",
|
||||||
|
"integrity": "sha512-7UaWbsp8wNqB0y/rRlyo5yRb0S+XOkkSpmdUuS267Dhi07Pt4RFEetQ8inrpf/aTFJwGnW0Uc/UE4p376s+Zmw==",
|
||||||
|
"dependencies": {
|
||||||
|
"pdfjs-dist": "^2.10.377",
|
||||||
|
"vue": "^3.2.19"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/vue3-print-nb": {
|
"node_modules/vue3-print-nb": {
|
||||||
"version": "0.1.4",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
|
||||||
|
@ -5559,6 +5657,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/vue3-puzzle-vcode/-/vue3-puzzle-vcode-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/vue3-puzzle-vcode/-/vue3-puzzle-vcode-1.1.5.tgz",
|
||||||
"integrity": "sha512-JesxfEucupQYDHXcywVx5BGQ1Wjybtlj4dAeNw2tC1jfHt1FXoG0bpBSlLUS4TPyS+pHp++4zmTfBQZLf9ldXw=="
|
"integrity": "sha512-JesxfEucupQYDHXcywVx5BGQ1Wjybtlj4dAeNw2tC1jfHt1FXoG0bpBSlLUS4TPyS+pHp++4zmTfBQZLf9ldXw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/web-streams-polyfill": {
|
||||||
|
"version": "3.3.2",
|
||||||
|
"resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz",
|
||||||
|
"integrity": "sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/webpack-sources": {
|
"node_modules/webpack-sources": {
|
||||||
"version": "3.2.3",
|
"version": "3.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
||||||
|
|
|
@ -25,10 +25,12 @@
|
||||||
"pinia-plugin-persistedstate": "^3.2.1",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"qs": "^6.11.2",
|
"qs": "^6.11.2",
|
||||||
|
"relation-graph": "^2.1.24",
|
||||||
"throttle-debounce": "^5.0.0",
|
"throttle-debounce": "^5.0.0",
|
||||||
"v-viewer": "^3.0.11",
|
"v-viewer": "^3.0.11",
|
||||||
"vue": "^3.4.3",
|
"vue": "^3.4.3",
|
||||||
"vue-router": "^4.2.5",
|
"vue-router": "^4.2.5",
|
||||||
|
"vue3-pdfjs": "^0.1.6",
|
||||||
"vue3-print-nb": "^0.1.4",
|
"vue3-print-nb": "^0.1.4",
|
||||||
"vue3-puzzle-vcode": "^1.1.5"
|
"vue3-puzzle-vcode": "^1.1.5"
|
||||||
},
|
},
|
||||||
|
|
|
@ -73,6 +73,11 @@ export default [
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/enterprise_management/department",
|
||||||
|
meta: { title: "组织机构", isSubMenu: false },
|
||||||
|
component: "enterprise_management/department/index",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -393,4 +398,84 @@ export default [
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/temporary_electricity_usage",
|
||||||
|
redirect: "/temporary_electricity_usage/job_data",
|
||||||
|
meta: { title: "临时用电作业管理", model: MODEL["3"] },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/temporary_electricity_usage/job_data",
|
||||||
|
meta: { title: "临时用电作业数据", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{ path: "", component: "temporary_electricity_usage/job_data/index" },
|
||||||
|
{
|
||||||
|
path: "/temporary_electricity_usage/job_data/view",
|
||||||
|
meta: {
|
||||||
|
title: "审批表详情",
|
||||||
|
activeMenu: "/temporary_electricity_usage/job_data",
|
||||||
|
},
|
||||||
|
component: "temporary_electricity_usage/job_data/view",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/temporary_electricity_usage/archive",
|
||||||
|
meta: { title: "归档管理", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{ path: "", component: "temporary_electricity_usage/archive/index" },
|
||||||
|
{
|
||||||
|
path: "/temporary_electricity_usage/archive/view",
|
||||||
|
meta: {
|
||||||
|
title: "审批表详情",
|
||||||
|
activeMenu: "/temporary_electricity_usage/archive",
|
||||||
|
},
|
||||||
|
component: "temporary_electricity_usage/archive/view",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hot_work",
|
||||||
|
redirect: "/hot_work/job_data",
|
||||||
|
meta: { title: "动火作业管理", model: MODEL["3"] },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: "/hot_work/job_data",
|
||||||
|
meta: { title: "动火作业数据", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{ path: "", component: "hot_work/job_data/index" },
|
||||||
|
{
|
||||||
|
path: "/hot_work/job_data/view",
|
||||||
|
meta: {
|
||||||
|
title: "审批表详情",
|
||||||
|
activeMenu: "/hot_work/job_data",
|
||||||
|
},
|
||||||
|
component: "hot_work/job_data/view",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/hot_work/archive",
|
||||||
|
meta: { title: "归档管理", isSubMenu: false },
|
||||||
|
component: "children",
|
||||||
|
children: [
|
||||||
|
{ path: "", component: "hot_work/archive/index" },
|
||||||
|
{
|
||||||
|
path: "/hot_work/archive/view",
|
||||||
|
meta: {
|
||||||
|
title: "审批表详情",
|
||||||
|
activeMenu: "/hot_work/archive",
|
||||||
|
},
|
||||||
|
component: "hot_work/archive/view",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,6 +3,7 @@ import {
|
||||||
getLevels,
|
getLevels,
|
||||||
getLevelsAndChildrenNumber,
|
getLevelsAndChildrenNumber,
|
||||||
getRegulatoryType,
|
getRegulatoryType,
|
||||||
|
getDepartmentTree,
|
||||||
} from "@/request/data_dictionary.js";
|
} from "@/request/data_dictionary.js";
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
|
|
||||||
|
@ -67,6 +68,11 @@ export const layoutFnGetRiskLevel = async () => {
|
||||||
});
|
});
|
||||||
return ref(resData.list);
|
return ref(resData.list);
|
||||||
};
|
};
|
||||||
|
// 部门树
|
||||||
|
export const layoutFnGetDepartmentTree = async () => {
|
||||||
|
const resData = await getDepartmentTree();
|
||||||
|
return ref(JSON.parse(resData.zTreeNodes));
|
||||||
|
};
|
||||||
// 无法确定DICTIONARIES_ID的数据字典
|
// 无法确定DICTIONARIES_ID的数据字典
|
||||||
export const layoutFnGetLevels = async (DICTIONARIES_ID) => {
|
export const layoutFnGetLevels = async (DICTIONARIES_ID) => {
|
||||||
const resData = await getLevels({ DICTIONARIES_ID });
|
const resData = await getLevels({ DICTIONARIES_ID });
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
|
|
||||||
export default function usePrint(THEAD_HEIGHT = 81.59) {
|
export default function usePrint(THEAD_HEIGHT) {
|
||||||
const buttonRef = ref(null);
|
const buttonRef = ref(null);
|
||||||
const A4_HEIGHT_MM = 297;
|
const A4_HEIGHT_MM = 297;
|
||||||
const A4_HEIGHT_MM_TO_PX_PROPORTION = 3.78;
|
const A4_HEIGHT_MM_TO_PX_PROPORTION = 3.78;
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<template>
|
||||||
|
<el-tree-select
|
||||||
|
v-model="modelValue"
|
||||||
|
:data="departmentTree"
|
||||||
|
node-key="id"
|
||||||
|
:props="{
|
||||||
|
children: 'nodes',
|
||||||
|
label: 'name',
|
||||||
|
}"
|
||||||
|
:render-after-expand="false"
|
||||||
|
accordion
|
||||||
|
:check-strictly="checkStrictly"
|
||||||
|
:clearable="clearable"
|
||||||
|
:show-checkbox="showCheckbox"
|
||||||
|
:multiple="multiple"
|
||||||
|
:collapse-tags="collapseTags"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { layoutFnGetDepartmentTree } from "@/assets/js/data_dictionary";
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "LayoutDepartment",
|
||||||
|
});
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: [String, Array],
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
checkStrictly: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
showCheckbox: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
multiple: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
collapseTags: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
clearable: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
rootDisable: {
|
||||||
|
type: String,
|
||||||
|
default: "Y",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:modelValue"]);
|
||||||
|
const modelValue = useVModel(props, "modelValue", emits);
|
||||||
|
const departmentTree = await layoutFnGetDepartmentTree({
|
||||||
|
ROOT_DISABLE: props.rootDisable,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,52 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog title="文档" v-model="visible">
|
||||||
|
<div v-if="visible">
|
||||||
|
<vue-pdf
|
||||||
|
ref="pdfRef"
|
||||||
|
v-for="page in numOfPages"
|
||||||
|
:key="page"
|
||||||
|
:src="src"
|
||||||
|
:page="page"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { watchEffect, ref } from "vue";
|
||||||
|
import { VuePdf, createLoadingTask } from "vue3-pdfjs/esm";
|
||||||
|
import { ElMessage } from "element-plus";
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "LayoutPdf",
|
||||||
|
});
|
||||||
|
const props = defineProps({
|
||||||
|
src: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:visible"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
const pdfRef = ref(null);
|
||||||
|
const numOfPages = ref(0);
|
||||||
|
watchEffect(() => {
|
||||||
|
if (props.visible) {
|
||||||
|
const loadingTask = createLoadingTask(props.src);
|
||||||
|
loadingTask.promise
|
||||||
|
.then((pdf) => {
|
||||||
|
numOfPages.value = pdf.numPages;
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
visible.value = false;
|
||||||
|
ElMessage.error("文件加载失败");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -23,15 +23,22 @@
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import LayoutCard from "@/components/card/index.vue";
|
import LayoutCard from "@/components/card/index.vue";
|
||||||
import { useRoute } from "vue-router";
|
|
||||||
import usePrint from "@/assets/js/usePrint.js";
|
import usePrint from "@/assets/js/usePrint.js";
|
||||||
|
|
||||||
const { fnPrint, printObj, buttonRef } = usePrint();
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: "LayoutPrintTablePackage",
|
name: "LayoutPrintTablePackage",
|
||||||
});
|
});
|
||||||
const route = useRoute();
|
const props = defineProps({
|
||||||
const { entrance } = route.query;
|
theadHeight: {
|
||||||
|
type: Number,
|
||||||
|
default: 81.59,
|
||||||
|
},
|
||||||
|
entrance: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const { fnPrint, printObj, buttonRef } = usePrint(props.theadHeight);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog title="文本文档" v-model="visible">
|
||||||
|
<el-input autosize :model-value="value" readonly type="textarea" />
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
import { ref, watchEffect } from "vue";
|
||||||
|
import { readTxtDocument } from "@/assets/js/utils.js";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "LayoutTxt",
|
||||||
|
});
|
||||||
|
const props = defineProps({
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
src: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const value = ref("");
|
||||||
|
const emits = defineEmits(["update:visible"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
watchEffect(async () => {
|
||||||
|
if (props.src) value.value = await readTxtDocument(props.src);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
|
@ -30,3 +30,9 @@ export const getUserListAllByCorp = (params) =>
|
||||||
loading: false,
|
loading: false,
|
||||||
...params,
|
...params,
|
||||||
});
|
});
|
||||||
|
// 部门树
|
||||||
|
export const getDepartmentTree = (params) =>
|
||||||
|
post("/department/listTree", {
|
||||||
|
loading: false,
|
||||||
|
...params,
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
import { post } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getDepartmentList = (params) => post("/department/list", params); // 组织机构列表
|
||||||
|
export const setDepartmentDelete = (params) =>
|
||||||
|
post("/department/delete", params); // 组织机构删除
|
|
@ -0,0 +1,4 @@
|
||||||
|
import { post } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getHotWorkList = (params) => post("/hotwork/list", params); // 动火作业管理列表
|
||||||
|
export const getHotWorkView = (params) => post("/hotwork/goEdit", params); // 动火作业管理查看
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { post } from "@/request/axios.js";
|
||||||
|
|
||||||
|
export const getTemporaryElectricityUsageList = (params) =>
|
||||||
|
post("/electricity/list", params); // 临时用电作业管理列表
|
||||||
|
export const getTemporaryElectricityUsageView = (params) =>
|
||||||
|
post("/electricity/goEdit", params); // 临时用电作业管理查看
|
|
@ -148,12 +148,10 @@ const stateList = [
|
||||||
{ ID: "-6", NAME: "待验收打回" },
|
{ ID: "-6", NAME: "待验收打回" },
|
||||||
];
|
];
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getBlindPlatePluggingList, {
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
otherParams: {
|
useListData(getBlindPlatePluggingList, {
|
||||||
APPLY_STATUS: props.entrance === "archive" ? "6" : "",
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "6" } : {},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
flowChartDialog: {
|
flowChartDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-print-table-package>
|
<layout-print-table-package :entrance="entrance">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -294,7 +294,7 @@ import { getBlindPlatePluggingView } from "@/request/blind_plate_plugging.js";
|
||||||
|
|
||||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { BLINDBOARD_ID } = route.query;
|
const { BLINDBOARD_ID, entrance } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
imgList: [],
|
imgList: [],
|
||||||
|
|
|
@ -129,12 +129,10 @@ const stateList = [
|
||||||
{ ID: "-98", NAME: "已作废(未进行气体检测)" },
|
{ ID: "-98", NAME: "已作废(未进行气体检测)" },
|
||||||
];
|
];
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getConfinedSpaceList, {
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
otherParams: {
|
useListData(getConfinedSpaceList, {
|
||||||
APPLY_STATUS: props.entrance === "archive" ? "6" : "",
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "6" } : {},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
flowChartDialog: {
|
flowChartDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-print-table-package>
|
<layout-print-table-package :entrance="entrance">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -276,7 +276,7 @@ import { getConfinedSpaceView } from "@/request/confined_space.js";
|
||||||
|
|
||||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { CONFINEDSPACE_ID } = route.query;
|
const { CONFINEDSPACE_ID, entrance } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
gasList: [],
|
gasList: [],
|
||||||
|
|
|
@ -0,0 +1,112 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog v-model="visible" title="组织机构结构图" width="80%">
|
||||||
|
<div style="height: calc(100vh - 200px)">
|
||||||
|
<RelationGraph ref="relationGraphRef" :options="graphOptions" />
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
import RelationGraph from "relation-graph/vue3";
|
||||||
|
import { nextTick, ref, watchEffect } from "vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
treeData: {
|
||||||
|
type: Array,
|
||||||
|
required: true,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:visible"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
const relationGraphRef = ref(null);
|
||||||
|
const graphOptions = ref({
|
||||||
|
disableDragNode: "false",
|
||||||
|
layouts: [
|
||||||
|
{
|
||||||
|
label: "中心",
|
||||||
|
layoutName: "tree",
|
||||||
|
layoutClassName: "seeks-layout-center",
|
||||||
|
defaultJunctionPoint: "border",
|
||||||
|
defaultNodeShape: 0,
|
||||||
|
defaultLineShape: 1,
|
||||||
|
min_per_width: 40,
|
||||||
|
max_per_width: 70,
|
||||||
|
min_per_height: 200,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
buttonloading: false,
|
||||||
|
defaultLineMarker: {
|
||||||
|
markerWidth: 12,
|
||||||
|
markerHeight: 12,
|
||||||
|
refX: 6,
|
||||||
|
refY: 6,
|
||||||
|
data: "M2,2 L10,6 L2,10 L6,6 L2,2",
|
||||||
|
},
|
||||||
|
defaultNodeShape: 1,
|
||||||
|
defaultLineShape: 2,
|
||||||
|
defaultJunctionPoint: "tb",
|
||||||
|
defaultNodeBorderWidth: 0,
|
||||||
|
backgroundColor: "#08163b",
|
||||||
|
defaultLineColor: "rgba(0, 186, 189, 1)",
|
||||||
|
defaultNodeColor: "rgba(0, 206, 209, 1)",
|
||||||
|
defaultNodeHeight: 150,
|
||||||
|
defaultNodeWidth: 60,
|
||||||
|
});
|
||||||
|
const fnRecursion = (data) => {
|
||||||
|
let arr = [];
|
||||||
|
for (let i = 0; i < data.length; i++) {
|
||||||
|
if (data[i].nodes && data[i].nodes.length > 0) {
|
||||||
|
arr.push(data[i]);
|
||||||
|
arr = arr.concat(fnRecursion(data[i].nodes));
|
||||||
|
} else {
|
||||||
|
arr.push(data[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
};
|
||||||
|
const fnSeeksGraph = async () => {
|
||||||
|
await nextTick();
|
||||||
|
const treeData = fnRecursion(props.treeData);
|
||||||
|
const __graph_json_data = {
|
||||||
|
rootId: props.treeData[0].name,
|
||||||
|
nodes: [],
|
||||||
|
links: [],
|
||||||
|
};
|
||||||
|
for (let i = 0; i < treeData.length; i++) {
|
||||||
|
if (i === 0) {
|
||||||
|
__graph_json_data.nodes.push({
|
||||||
|
id: treeData[i].name,
|
||||||
|
text: treeData[i].name,
|
||||||
|
width: 150,
|
||||||
|
height: 60,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
__graph_json_data.nodes.push({
|
||||||
|
id: treeData[i].name,
|
||||||
|
text: treeData[i].name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
for (let j = 0; j < treeData.length; j++) {
|
||||||
|
if (treeData[i].id === treeData[j].pId) {
|
||||||
|
__graph_json_data.links.push({
|
||||||
|
from: treeData[i].name,
|
||||||
|
to: treeData[j].name,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
relationGraphRef.value.setJsonData(__graph_json_data, () => {});
|
||||||
|
};
|
||||||
|
watchEffect(() => {
|
||||||
|
if (visible.value) fnSeeksGraph();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,175 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<layout-card>
|
||||||
|
<el-row :gutter="12">
|
||||||
|
<el-col :span="5">
|
||||||
|
<el-input
|
||||||
|
v-model="filterText"
|
||||||
|
placeholder="输入关键字进行过滤"
|
||||||
|
class="mb-10"
|
||||||
|
/>
|
||||||
|
<el-tree
|
||||||
|
ref="treeRef"
|
||||||
|
:props="{
|
||||||
|
children: 'nodes',
|
||||||
|
label: 'name',
|
||||||
|
}"
|
||||||
|
accordion
|
||||||
|
:data="data.treeData"
|
||||||
|
:filter-node-method="fnFilterNode"
|
||||||
|
@node-click="fnResetPagination({ DEPARTMENT_ID: $event.id })"
|
||||||
|
/>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="19">
|
||||||
|
<el-button
|
||||||
|
class="mb-10"
|
||||||
|
@click="data.structuralDiagramVisible = true"
|
||||||
|
>
|
||||||
|
结构图
|
||||||
|
</el-button>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
@get-data="fnGetDataTransfer"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="70">
|
||||||
|
<template v-slot="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="名称">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path: '/enterprise_management/department',
|
||||||
|
query: {
|
||||||
|
DEPARTMENT_ID: row.DEPARTMENT_ID,
|
||||||
|
DEPARTMENT_NAME: row.NAME,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
{{ row.NAME }}<el-icon><ArrowRight /></el-icon>
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<template v-if="DEPARTMENT_ID !== '0'">
|
||||||
|
<el-table-column prop="HEADMAN" label="负责人" />
|
||||||
|
<el-table-column prop="leName" label="部门级别" />
|
||||||
|
<el-table-column prop="DEP_ORDER" label="排序" width="100" />
|
||||||
|
<el-table-column label="操作" width="100">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnAddOrEdit(row.DEPARTMENT_ID, 'edit')"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnDelete(row.DEPARTMENT_ID, row.NAME)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #button>
|
||||||
|
<el-button type="primary" @click="fnAddOrEdit('', 'add')">
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</layout-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</layout-card>
|
||||||
|
<structural-diagram
|
||||||
|
v-model:visible="data.structuralDiagramVisible"
|
||||||
|
:tree-data="data.treeData"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { serialNumber } from "@/assets/js/utils.js";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import {
|
||||||
|
getDepartmentList,
|
||||||
|
setDepartmentDelete,
|
||||||
|
} from "@/request/department.js";
|
||||||
|
import { layoutFnGetDepartmentTree } from "@/assets/js/data_dictionary.js";
|
||||||
|
import { reactive, ref, watch } from "vue";
|
||||||
|
import { onBeforeRouteUpdate, useRoute, useRouter } from "vue-router";
|
||||||
|
import { ArrowRight } from "@element-plus/icons-vue";
|
||||||
|
import { debounce } from "throttle-debounce";
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
import StructuralDiagram from "./components/structural_diagram.vue";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
const parentIdDefault = "0";
|
||||||
|
const parentNameDefault = "(无)此项为顶级部门";
|
||||||
|
const DEPARTMENT_ID = ref(route.query.DEPARTMENT_ID || parentIdDefault);
|
||||||
|
const DEPARTMENT_NAME = ref(route.query.DEPARTMENT_NAME || parentNameDefault);
|
||||||
|
const treeRef = ref(null);
|
||||||
|
const filterText = ref("");
|
||||||
|
const { list, pagination, fnGetData, fnResetPagination } = useListData(
|
||||||
|
getDepartmentList,
|
||||||
|
{
|
||||||
|
otherParams: {
|
||||||
|
DEPARTMENT_ID: DEPARTMENT_ID.value,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const data = reactive({
|
||||||
|
treeData: [],
|
||||||
|
structuralDiagramVisible: false,
|
||||||
|
});
|
||||||
|
watch(filterText, (val) => {
|
||||||
|
treeRef.value.filter(val);
|
||||||
|
});
|
||||||
|
const fnFilterNode = (value, data) => {
|
||||||
|
if (!value) return true;
|
||||||
|
return data.name.includes(value);
|
||||||
|
};
|
||||||
|
const fnGetTreeData = async () => {
|
||||||
|
const treeData = await layoutFnGetDepartmentTree();
|
||||||
|
data.treeData = treeData.value;
|
||||||
|
};
|
||||||
|
fnGetTreeData();
|
||||||
|
const fnGetDataTransfer = () => {
|
||||||
|
fnGetData({
|
||||||
|
DEPARTMENT_ID: DEPARTMENT_ID.value,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const fnResetPaginationTransfer = () => {
|
||||||
|
fnResetPagination({
|
||||||
|
DEPARTMENT_ID: DEPARTMENT_ID.value,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
onBeforeRouteUpdate((to) => {
|
||||||
|
DEPARTMENT_ID.value = to.query.DEPARTMENT_ID || parentIdDefault;
|
||||||
|
DEPARTMENT_NAME.value = to.query.DEPARTMENT_NAME || parentNameDefault;
|
||||||
|
fnResetPaginationTransfer();
|
||||||
|
});
|
||||||
|
const fnDelete = debounce(
|
||||||
|
1000,
|
||||||
|
async (DEPARTMENT_ID, NAME) => {
|
||||||
|
await ElMessageBox.confirm(`确定要删除[${NAME}]吗?`, { type: "warning" });
|
||||||
|
await setDepartmentDelete({ DEPARTMENT_ID });
|
||||||
|
ElMessage.success("删除成功");
|
||||||
|
await fnResetPaginationTransfer();
|
||||||
|
},
|
||||||
|
{ atBegin: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -141,16 +141,16 @@ import useListData from "@/assets/js/useListData.js";
|
||||||
|
|
||||||
const FILE_URL = import.meta.env.VITE_FILE_URL;
|
const FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getIndustryQualificationsList);
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
useListData(getIndustryQualificationsList);
|
||||||
const fnGetDataTransfer = async () => {
|
const fnGetDataTransfer = () => {
|
||||||
await fnGetData({
|
fnGetData({
|
||||||
STARTTIME: searchForm.value.dates?.[0],
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
ENDTIME: searchForm.value.dates?.[1],
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const fnResetPaginationTransfer = async () => {
|
const fnResetPaginationTransfer = () => {
|
||||||
await fnResetPagination({
|
fnResetPagination({
|
||||||
STARTTIME: searchForm.value.dates?.[0],
|
STARTTIME: searchForm.value.dates?.[0],
|
||||||
ENDTIME: searchForm.value.dates?.[1],
|
ENDTIME: searchForm.value.dates?.[1],
|
||||||
});
|
});
|
||||||
|
|
|
@ -154,12 +154,10 @@ const stateList = [
|
||||||
{ ID: "-6", NAME: "验收打回" },
|
{ ID: "-6", NAME: "验收打回" },
|
||||||
];
|
];
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getGroundbreakingList, {
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
otherParams: {
|
useListData(getGroundbreakingList, {
|
||||||
APPLY_STATUS: props.entrance === "archive" ? "6" : "",
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "6" } : {},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
flowChartDialog: {
|
flowChartDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-print-table-package>
|
<layout-print-table-package :entrance="entrance">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -334,7 +334,7 @@ import { getGroundbreakingView } from "@/request/groundbreaking.js";
|
||||||
|
|
||||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { BREAKGROUND_ID } = route.query;
|
const { BREAKGROUND_ID, entrance } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
imgList: [],
|
imgList: [],
|
||||||
|
|
|
@ -152,12 +152,10 @@ const stateList = [
|
||||||
{ ID: "-6", NAME: "验收打回" },
|
{ ID: "-6", NAME: "验收打回" },
|
||||||
];
|
];
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getHighList, {
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
otherParams: {
|
useListData(getHighList, {
|
||||||
APPLY_STATUS: props.entrance === "archive" ? "6" : "",
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "6" } : {},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
flowChartDialog: {
|
flowChartDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-print-table-package>
|
<layout-print-table-package :entrance="entrance">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -297,7 +297,7 @@ import { getHighView } from "@/request/high.js";
|
||||||
|
|
||||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { HIGHWORK_ID } = route.query;
|
const { HIGHWORK_ID, entrance } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
imgList: [],
|
imgList: [],
|
||||||
|
|
|
@ -152,12 +152,10 @@ const stateList = [
|
||||||
{ ID: "-6", NAME: "验收打回" },
|
{ ID: "-6", NAME: "验收打回" },
|
||||||
];
|
];
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getHoistingList, {
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
otherParams: {
|
useListData(getHoistingList, {
|
||||||
APPLY_STATUS: props.entrance === "archive" ? "6" : "",
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "6" } : {},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
flowChartDialog: {
|
flowChartDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-print-table-package>
|
<layout-print-table-package :entrance="entrance">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -298,7 +298,7 @@ import { findCharIndex } from "@/assets/js/utils.js";
|
||||||
|
|
||||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { HOISTING_ID } = route.query;
|
const { HOISTING_ID, entrance } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
imgList: [],
|
imgList: [],
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<index-view entrance="archive" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import IndexView from "../job_data/index.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<view-info />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import ViewInfo from "../job_data/view.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,192 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog v-model="visible" title="查看流程图" width="1500px">
|
||||||
|
<el-steps
|
||||||
|
:active="fnGetStatus()"
|
||||||
|
:process-status="fnGetProcessStatus()"
|
||||||
|
align-center
|
||||||
|
finish-status="success"
|
||||||
|
>
|
||||||
|
<el-step title="动火作业提交">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ fnGetProcessMessage().title }}</div>
|
||||||
|
<div>{{ fnGetProcessMessage().USER_NAME }}</div>
|
||||||
|
<div>{{ fnGetProcessMessage().OPERATTIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="作业负责人意见">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.CONFIRM_USER_NAME }}</div>
|
||||||
|
<div>{{ info.CONFIRM_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="所在单位意见">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.LEADER_USER_NAME }}</div>
|
||||||
|
<div>{{ info.LEADER_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="安全管理部门意见">
|
||||||
|
<template #description>
|
||||||
|
<div v-if="!info.AUDIT_USER_NAME">{{ "已跳过" }}</div>
|
||||||
|
<div v-else>{{ info.AUDIT_USER_NAME }}</div>
|
||||||
|
<div>{{ info.AUDIT_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="动火审批人意见">
|
||||||
|
<template #description>
|
||||||
|
<div v-if="!info.APPROVE_USER_NAME">{{ "已跳过" }}</div>
|
||||||
|
<div>{{ info.APPROVE_USER_NAME }}</div>
|
||||||
|
<div>{{ info.APPROVE_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="班长验票">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.MONITOR_USER_NAME }}</div>
|
||||||
|
<div>{{ info.MONITOR_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="完成验收">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.ACCEPT_USER_NAME }}</div>
|
||||||
|
<div>{{ info.ACCEPT_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="验收归档">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.ACCEPT_USER_NAME }}</div>
|
||||||
|
<div>{{ info.ACCEPT_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
</el-steps>
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
margin: 60px 60px 0 60px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div v-if="info.GUARDIAN_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-success">
|
||||||
|
监护人:{{ info.GUARDIAN_USER_NAME }}已签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!info.GUARDIAN_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-error">
|
||||||
|
监护人:{{ info.GUARDIAN_USER_NAME }}未签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="info.CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-success">
|
||||||
|
安全交底人:{{ info.CONFESS_USER_NAME }}已签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!info.CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-error">
|
||||||
|
安全交底人:{{ info.CONFESS_USER_NAME }}未签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-success">
|
||||||
|
接受交底人:{{ info.ACCEPT_CONFESS_USER_NAME }}已签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!info.ACCEPT_CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-error">
|
||||||
|
接受交底人:{{ info.ACCEPT_CONFESS_USER_NAME }}未签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="visible = false">关闭</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:visible"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
const fnGetStatus = () => {
|
||||||
|
const result = {
|
||||||
|
1: 1,
|
||||||
|
2: 2,
|
||||||
|
4: 3,
|
||||||
|
5: 4,
|
||||||
|
6: 5,
|
||||||
|
7: 6,
|
||||||
|
8: 8,
|
||||||
|
};
|
||||||
|
return result[props.info.APPLY_STATUS] || 0;
|
||||||
|
};
|
||||||
|
const fnGetProcessStatus = () => {
|
||||||
|
if (props.info.APPLY_STATUS < "0") return "error";
|
||||||
|
else return "process";
|
||||||
|
};
|
||||||
|
const fnGetProcessMessage = () => {
|
||||||
|
const info = props.info;
|
||||||
|
const result = {
|
||||||
|
"-2": {
|
||||||
|
title: "作业负责人审核打回",
|
||||||
|
USER_NAME: info.CONFIRM_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-4": {
|
||||||
|
title: "所在单位审核打回",
|
||||||
|
USER_NAME: info.LEADER_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-5": {
|
||||||
|
title: "安全管理部门审核打回",
|
||||||
|
USER_NAME: info.AUDIT_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-6": {
|
||||||
|
title: "动火审批人审核打回",
|
||||||
|
USER_NAME: info.APPROVE_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-7": {
|
||||||
|
title: "班长验票打回",
|
||||||
|
USER_NAME: info.MONITOR_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-8": {
|
||||||
|
title: "验收打回",
|
||||||
|
USER_NAME: info.ACCEPT_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-99": {
|
||||||
|
title: "已作废(班长未验票)",
|
||||||
|
USER_NAME: "",
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-98": {
|
||||||
|
title: "已作废(未进行气体检测)",
|
||||||
|
USER_NAME: "",
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
result[props.info.APPLY_STATUS] || {
|
||||||
|
title: "",
|
||||||
|
USER_NAME: info.APPLY_USER_NAME,
|
||||||
|
OPERATTIME: info.CREATTIME,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,170 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="50px"
|
||||||
|
@submit.prevent="fnResetPagination"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="编号" prop="KEYWORDS">
|
||||||
|
<el-input
|
||||||
|
v-model="searchForm.KEYWORDS"
|
||||||
|
placeholder="请输入关键字"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" v-if="entrance === 'job_data'">
|
||||||
|
<el-form-item label="状态" prop="APPLY_STATUS">
|
||||||
|
<el-select v-model="searchForm.APPLY_STATUS">
|
||||||
|
<el-option
|
||||||
|
v-for="item in stateList"
|
||||||
|
:key="item.ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPagination">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
@get-data="fnGetData"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="70">
|
||||||
|
<template v-slot="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="CHECK_NO" label="编号" />
|
||||||
|
<el-table-column prop="WORK_LEVEL" label="作业级别" />
|
||||||
|
<el-table-column prop="APPLY_USER_NAME" label="申请人" />
|
||||||
|
<el-table-column prop="ANALYZE_USER_NAME" label="分析人" />
|
||||||
|
<el-table-column prop="CONFIRM_USER_NAME" label="作业负责人" />
|
||||||
|
<el-table-column prop="LEADER_USER_NAME" label="所在单位负责人" />
|
||||||
|
<el-table-column
|
||||||
|
label="安全管理部门负责人"
|
||||||
|
show-overflow-tooltip
|
||||||
|
width="150"
|
||||||
|
>
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{ row.AUDIT_USER_NAME || " 已跳过" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="动火审批人" show-overflow-tooltip>
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{ row.APPROVE_USER_NAME || " 已跳过" }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="MONITOR_USER_NAME" label="动火前在岗班长" />
|
||||||
|
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
||||||
|
<el-table-column label="审核状态" width="170">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{
|
||||||
|
entrance === "job_data"
|
||||||
|
? translationStatus(row.APPLY_STATUS, stateList)
|
||||||
|
: "已归档"
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="150">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnFlowChart(row)"
|
||||||
|
v-if="entrance === 'job_data'"
|
||||||
|
>
|
||||||
|
流程图
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path:
|
||||||
|
props.entrance === 'job_data'
|
||||||
|
? '/hot_work/job_data/view'
|
||||||
|
: '/hot_work/archive/view',
|
||||||
|
query: { HOTWORK_ID: row.HOTWORK_ID, entrance },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
审批表详情
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
<flow-chart
|
||||||
|
v-model:visible="data.flowChartDialog.visible"
|
||||||
|
:info="data.flowChartDialog.info"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { serialNumber, translationStatus } from "@/assets/js/utils.js";
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
import FlowChart from "./components/flow_chart.vue";
|
||||||
|
import { getHotWorkList } from "@/request/hot_work.js";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
entrance: {
|
||||||
|
type: String,
|
||||||
|
default: "job_data",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const stateList = [
|
||||||
|
{ ID: "0", NAME: "动火作业待提交" },
|
||||||
|
{ ID: "1", NAME: "作业负责人待审核" },
|
||||||
|
{ ID: "2", NAME: "所在单位待审核" },
|
||||||
|
{ ID: "4", NAME: "安全管理部门待审核" },
|
||||||
|
{ ID: "5", NAME: "动火审批人待审核" },
|
||||||
|
{ ID: "6", NAME: "班长待验票" },
|
||||||
|
{ ID: "7", NAME: "待验收" },
|
||||||
|
{ ID: "8", NAME: "验收归档" },
|
||||||
|
{ ID: "-2", NAME: "作业负责人审核打回" },
|
||||||
|
{ ID: "-4", NAME: "所在单位审核打回" },
|
||||||
|
{ ID: "-5", NAME: "安全管理部门审核打回" },
|
||||||
|
{ ID: "-6", NAME: "动火审批人审核打回" },
|
||||||
|
{ ID: "-7", NAME: "班长验票打回" },
|
||||||
|
{ ID: "-8", NAME: "验收打回" },
|
||||||
|
{ ID: "-99", NAME: "已作废(班长未验票)" },
|
||||||
|
{ ID: "-98", NAME: "已作废(未进行气体检测)" },
|
||||||
|
];
|
||||||
|
const router = useRouter();
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getHotWorkList, {
|
||||||
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "8" } : {},
|
||||||
|
});
|
||||||
|
const data = reactive({
|
||||||
|
flowChartDialog: {
|
||||||
|
visible: false,
|
||||||
|
info: {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnFlowChart = (info) => {
|
||||||
|
data.flowChartDialog.visible = true;
|
||||||
|
data.flowChartDialog.info = info;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,379 @@
|
||||||
|
<template>
|
||||||
|
<layout-print-table-package :entrance="entrance">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td colspan="10" style="border: none">
|
||||||
|
<el-divider content-position="left"> 动火安全作业票 </el-divider>
|
||||||
|
<div class="tr">编号:{{ data.info.CHECK_NO }}</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业申请单位</td>
|
||||||
|
<td>{{ data.info.APPLY_DEPARTMENT_NAME }}</td>
|
||||||
|
<td class="title">作业申请时间</td>
|
||||||
|
<td>{{ data.info.CREATTIME }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业内容</td>
|
||||||
|
<td>{{ data.info.WORK_CONTENT }}</td>
|
||||||
|
<td class="title">动火地点及动火部位</td>
|
||||||
|
<td>{{ data.info.WORK_PLACE }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">动火作业级别</td>
|
||||||
|
<td>{{ data.info.WORK_LEVEL }}</td>
|
||||||
|
<td class="title">动火方式</td>
|
||||||
|
<td>{{ data.info.WORK_FUNCTION }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">动火人及证书编号</td>
|
||||||
|
<td colspan="3">{{ data.info.WORK_USER }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业单位</td>
|
||||||
|
<td>{{ data.info.CONFIRM_DEPARTMENT_NAME }}</td>
|
||||||
|
<td class="title">作业负责人</td>
|
||||||
|
<td>{{ data.info.CONFIRM_USER_NAME }}</td>
|
||||||
|
</tr>
|
||||||
|
<template v-for="(item, index) in data.gasList" :key="index">
|
||||||
|
<tr>
|
||||||
|
<td class="title">气体取样分析时间</td>
|
||||||
|
<td>{{ item.ANALYZE_TIME }}</td>
|
||||||
|
<td class="title">代表性气体</td>
|
||||||
|
<td>{{ item.ANALYZE_PLACE }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">分析结果/%</td>
|
||||||
|
<td>{{ item.ANALYZE_RESULT }}</td>
|
||||||
|
<td class="title">分析人</td>
|
||||||
|
<td>{{ item.ANALYZE_USER }}</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
<tr>
|
||||||
|
<td class="title">关联的其他特殊作业及安全作业票编号</td>
|
||||||
|
<td colspan="3">{{ data.info.SPECIAL_WORK }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">风险辨识结果</td>
|
||||||
|
<td colspan="3">{{ data.info.RISK_IDENTIFICATION }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">动火作业实施时间</td>
|
||||||
|
<td colspan="3">
|
||||||
|
{{ data.info.WORK_START_DATE }}至{{ data.info.WORK_END_DATE }}止
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4">
|
||||||
|
<table class="table-ui">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 80px">序号</td>
|
||||||
|
<td>安全措施</td>
|
||||||
|
<td style="width: 100px">是否涉及</td>
|
||||||
|
<td style="width: 100px">确认人</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="(item, index) in data.measuresList" :key="index">
|
||||||
|
<td>{{ index + 1 }}</td>
|
||||||
|
<td>
|
||||||
|
{{ item.PROTECTIVE_MEASURES }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span v-if="item.STATUS === '1'">
|
||||||
|
<input type="radio" disabled checked />涉 及
|
||||||
|
</span>
|
||||||
|
<span v-if="item.STATUS === '-1'">
|
||||||
|
<input type="radio" disabled checked />不涉及
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.CONFIRM_NAME }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr
|
||||||
|
v-if="
|
||||||
|
data.info.CONFIRM_USER_MEASURES ||
|
||||||
|
data.info.LEADER_USER_MEASURES ||
|
||||||
|
data.info.AUDIT_USER_MEASURES ||
|
||||||
|
data.info.APPROVE_USER_MEASURES ||
|
||||||
|
data.info.MONITOR_USER_MEASURES
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<td>{{ data.measuresList.length + 1 }}</td>
|
||||||
|
<td colspan="3">
|
||||||
|
<div
|
||||||
|
v-if="data.info.CONFIRM_USER_MEASURES"
|
||||||
|
style="display: flex; justify-content: space-between"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
其他安全措施:{{ data.info.CONFIRM_USER_MEASURES }}
|
||||||
|
</span>
|
||||||
|
<span>编制人:{{ data.info.CONFIRM_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="data.info.LEADER_USER_MEASURES"
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
其他安全措施:{{ data.info.LEADER_USER_MEASURES }}
|
||||||
|
</span>
|
||||||
|
<span>编制人:{{ data.info.LEADER_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="data.info.AUDIT_USER_MEASURES"
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<span>其他安全措施:{{ data.info.AUDIT_USER_MEASURES }}</span>
|
||||||
|
<span>编制人:{{ data.info.AUDIT_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="data.info.APPROVE_USER_MEASURES"
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
其他安全措施:{{ data.info.APPROVE_USER_MEASURES }}
|
||||||
|
</span>
|
||||||
|
<span>编制人:{{ data.info.APPROVE_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="data.info.MONITOR_USER_MEASURES"
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
其他安全措施:{{ data.info.MONITOR_USER_MEASURES }}
|
||||||
|
</span>
|
||||||
|
<span>编制人:{{ data.info.MONITOR_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">安全交底人</td>
|
||||||
|
<td colspan="10">
|
||||||
|
<div v-if="data.info.CONFESS_USER_SIGNER_PATH" class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.CONFESS_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.CONFESS_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">接受交底人</td>
|
||||||
|
<td colspan="10">
|
||||||
|
<div
|
||||||
|
v-for="item in data.imgList"
|
||||||
|
:key="item.ACCEPT_CONFESS_ID"
|
||||||
|
class="tr"
|
||||||
|
>
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + item.ACCEPT_CONFESS_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">监护人</td>
|
||||||
|
<td colspan="3">
|
||||||
|
<div v-if="data.info.GUARDIAN_USER_SIGNER_PATH" class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.GUARDIAN_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.GUARDIAN_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.CONFIRM_USER_SIGNER_PATH">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>作业负责人意见:{{ data.info.CONFIRM_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.CONFIRM_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.CONFIRM_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.LEADER_USER_SIGNER_PATH">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>所在单位意见:{{ data.info.LEADER_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.LEADER_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.LEADER_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.AUDIT_USER_SIGNER_PATH">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>安全管理部门意见:{{ data.info.AUDIT_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.AUDIT_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.AUDIT_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.APPROVE_USER_SIGNER_PATH">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>动火审批人意见:{{ data.info.APPROVE_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.APPROVE_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.APPROVE_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.MONITOR_USER_SIGNER_PATH">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>
|
||||||
|
动火前,岗位当班班长验票情况:{{ data.info.MONITOR_CONTENT }}
|
||||||
|
</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.MONITOR_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.MONITOR_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.imgList1.length > 0">
|
||||||
|
<td colspan="10">
|
||||||
|
<div>完工验收:{{ data.info.ACCEPT_CONTENT }}</div>
|
||||||
|
<div
|
||||||
|
v-for="item in data.imgList1"
|
||||||
|
:key="item.ACCEPT_CONFESS_ID"
|
||||||
|
class="tr"
|
||||||
|
>
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + item.ACCEPT_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ item.ACCEPT_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</layout-print-table-package>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import LayoutPrintTablePackage from "@/components/print_table_package/index.vue";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
import { getHotWorkView } from "@/request/hot_work.js";
|
||||||
|
import { findCharIndex } from "@/assets/js/utils.js";
|
||||||
|
|
||||||
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
|
const route = useRoute();
|
||||||
|
const { HOTWORK_ID, entrance } = route.query;
|
||||||
|
const data = reactive({
|
||||||
|
info: {},
|
||||||
|
imgList: [],
|
||||||
|
imgList1: [],
|
||||||
|
measuresList: [],
|
||||||
|
gasList: [],
|
||||||
|
});
|
||||||
|
const fnGetData = async () => {
|
||||||
|
const resData = await getHotWorkView({ HOTWORK_ID });
|
||||||
|
data.info = resData.pd;
|
||||||
|
data.imgList = resData.imgList;
|
||||||
|
data.imgList1 = resData.imgList1;
|
||||||
|
for (let i = 0; i < resData.measuresList.length; i++) {
|
||||||
|
const PROTECTIVE_MEASURES =
|
||||||
|
resData.measuresList[i].PROTECTIVE_MEASURES.split("");
|
||||||
|
for (let j = 1; j <= 3; j++) {
|
||||||
|
if (findCharIndex(PROTECTIVE_MEASURES, "(", j) !== -1) {
|
||||||
|
PROTECTIVE_MEASURES.splice(
|
||||||
|
findCharIndex(PROTECTIVE_MEASURES, "(", j) + 1,
|
||||||
|
0,
|
||||||
|
resData.measuresList[i]["ANSWER" + j]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resData.measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join("");
|
||||||
|
}
|
||||||
|
data.measuresList = resData.measuresList;
|
||||||
|
data.gasList = resData.gasList;
|
||||||
|
data.info.CONFIRM_USER_MEASURES =
|
||||||
|
data.info.OTHER_PROTECTIVE_MEASURES.split(";_;")[0];
|
||||||
|
data.info.LEADER_USER_MEASURES =
|
||||||
|
data.info.OTHER_PROTECTIVE_MEASURES.split(";_;")[1];
|
||||||
|
data.info.AUDIT_USER_MEASURES =
|
||||||
|
data.info.OTHER_PROTECTIVE_MEASURES.split(";_;")[2];
|
||||||
|
data.info.APPROVE_USER_MEASURES =
|
||||||
|
data.info.OTHER_PROTECTIVE_MEASURES.split(";_;")[3];
|
||||||
|
data.info.MONITOR_USER_MEASURES =
|
||||||
|
data.info.OTHER_PROTECTIVE_MEASURES.split(";_;")[4];
|
||||||
|
};
|
||||||
|
fnGetData();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -156,12 +156,10 @@ const stateList = [
|
||||||
{ ID: "-6", NAME: "验收打回" },
|
{ ID: "-6", NAME: "验收打回" },
|
||||||
];
|
];
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const listData = useListData(getOpenCircuitList, {
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
otherParams: {
|
useListData(getOpenCircuitList, {
|
||||||
APPLY_STATUS: props.entrance === "archive" ? "6" : "",
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "6" } : {},
|
||||||
},
|
});
|
||||||
});
|
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } = listData;
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
flowChartDialog: {
|
flowChartDialog: {
|
||||||
visible: false,
|
visible: false,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<layout-print-table-package>
|
<layout-print-table-package :entrance="entrance">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -326,7 +326,7 @@ import { getOpenCircuitView } from "@/request/open_circuit.js";
|
||||||
|
|
||||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { CUTROAD_ID } = route.query;
|
const { CUTROAD_ID, entrance } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
info: {},
|
info: {},
|
||||||
imgList: [],
|
imgList: [],
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<index-view entrance="archive" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import IndexView from "../job_data/index.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<template>
|
||||||
|
<view-info />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import ViewInfo from "../job_data/view.vue";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,161 @@
|
||||||
|
<template>
|
||||||
|
<el-dialog v-model="visible" title="查看流程图" width="1300px">
|
||||||
|
<el-steps
|
||||||
|
:active="fnGetStatus()"
|
||||||
|
:process-status="fnGetProcessStatus()"
|
||||||
|
align-center
|
||||||
|
finish-status="success"
|
||||||
|
>
|
||||||
|
<el-step title="临时用电作业提交">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ fnGetProcessMessage().title }}</div>
|
||||||
|
<div>{{ fnGetProcessMessage().USER_NAME }}</div>
|
||||||
|
<div>{{ fnGetProcessMessage().OPERATTIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="作业负责人意见">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.CONFIRM_USER_NAME }}</div>
|
||||||
|
<div>{{ info.CONFIRM_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="用电单位意见">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.AUDIT_USER_NAME }}</div>
|
||||||
|
<div>{{ info.AUDIT_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="配送电单位意见">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.APPROVE_USER_NAME }}</div>
|
||||||
|
<div>{{ info.APPROVE_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="完成验收">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.ACCEPT_USER_NAME }}</div>
|
||||||
|
<div>{{ info.ACCEPT_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
<el-step title="验收归档">
|
||||||
|
<template #description>
|
||||||
|
<div>{{ info.ACCEPT_USER_NAME }}</div>
|
||||||
|
<div>{{ info.ACCEPT_USER_SIGNER_TIME }}</div>
|
||||||
|
</template>
|
||||||
|
</el-step>
|
||||||
|
</el-steps>
|
||||||
|
<div
|
||||||
|
style="
|
||||||
|
margin: 60px 60px 0 60px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<div v-if="info.GUARDIAN_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-success">
|
||||||
|
监护人:{{ info.GUARDIAN_USER_NAME }}已签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!info.GUARDIAN_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-error">
|
||||||
|
监护人:{{ info.GUARDIAN_USER_NAME }}未签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="info.CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-success">
|
||||||
|
安全交底人:{{ info.CONFESS_USER_NAME }}已签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!info.CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-error">
|
||||||
|
安全交底人:{{ info.CONFESS_USER_NAME }}未签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-success">
|
||||||
|
接受交底人:{{ info.ACCEPT_CONFESS_USER_NAME }}已签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="!info.ACCEPT_CONFESS_USER_SIGNER_TIME">
|
||||||
|
<div class="el-step__title is-error">
|
||||||
|
接受交底人:{{ info.ACCEPT_CONFESS_USER_NAME }}未签字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="visible = false">关闭</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { useVModel } from "@vueuse/core";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
type: Object,
|
||||||
|
required: true,
|
||||||
|
default: () => {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const emits = defineEmits(["update:visible"]);
|
||||||
|
const visible = useVModel(props, "visible", emits);
|
||||||
|
const fnGetStatus = () => {
|
||||||
|
const result = {
|
||||||
|
1: 1,
|
||||||
|
2: 2,
|
||||||
|
3: 3,
|
||||||
|
4: 4,
|
||||||
|
5: 6,
|
||||||
|
};
|
||||||
|
return result[props.info.APPLY_STATUS] || 0;
|
||||||
|
};
|
||||||
|
const fnGetProcessStatus = () => {
|
||||||
|
if (props.info.APPLY_STATUS < "0") return "error";
|
||||||
|
else return "process";
|
||||||
|
};
|
||||||
|
const fnGetProcessMessage = () => {
|
||||||
|
const info = props.info;
|
||||||
|
const result = {
|
||||||
|
"-2": {
|
||||||
|
title: "作业负责人审核打回",
|
||||||
|
USER_NAME: info.CONFIRM_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-3": {
|
||||||
|
title: "用电单位审核打回",
|
||||||
|
USER_NAME: info.AUDIT_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-4": {
|
||||||
|
title: "配送电单位审核打回",
|
||||||
|
USER_NAME: info.APPROVE_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-5": {
|
||||||
|
title: "验收打回",
|
||||||
|
USER_NAME: info.ACCEPT_USER_NAME,
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
"-99": {
|
||||||
|
title: "已作废",
|
||||||
|
USER_NAME: "",
|
||||||
|
OPERATTIME: info.OPERATTIME,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
result[props.info.APPLY_STATUS] || {
|
||||||
|
title: "",
|
||||||
|
USER_NAME: info.APPLY_USER_NAME,
|
||||||
|
OPERATTIME: info.CREATTIME,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,150 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<el-form
|
||||||
|
:model="searchForm"
|
||||||
|
label-width="50px"
|
||||||
|
@submit.prevent="fnResetPagination"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="编号" prop="KEYWORDS">
|
||||||
|
<el-input
|
||||||
|
v-model="searchForm.KEYWORDS"
|
||||||
|
placeholder="请输入关键字"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" v-if="entrance === 'job_data'">
|
||||||
|
<el-form-item label="状态" prop="APPLY_STATUS">
|
||||||
|
<el-select v-model="searchForm.APPLY_STATUS">
|
||||||
|
<el-option
|
||||||
|
v-for="item in stateList"
|
||||||
|
:key="item.ID"
|
||||||
|
:label="item.NAME"
|
||||||
|
:value="item.ID"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label-width="10px">
|
||||||
|
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||||
|
<el-button native-type="reset" @click="fnResetPagination">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
<layout-card>
|
||||||
|
<layout-table
|
||||||
|
:data="list"
|
||||||
|
v-model:pagination="pagination"
|
||||||
|
@get-data="fnGetData"
|
||||||
|
>
|
||||||
|
<el-table-column label="序号" width="70">
|
||||||
|
<template v-slot="{ $index }">
|
||||||
|
{{ serialNumber(pagination, $index) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="CHECK_NO" label="编号" />
|
||||||
|
<el-table-column prop="APPLY_USER_NAME" label="申请人" />
|
||||||
|
<el-table-column prop="ANALYZE_USER_NAME" label="分析人" />
|
||||||
|
<el-table-column prop="CONFIRM_USER_NAME" label="作业单位负责人" />
|
||||||
|
<el-table-column prop="AUDIT_USER_NAME" label="用电单位负责人" />
|
||||||
|
<el-table-column prop="APPROVE_USER_NAME" label="配送电单位负责人" />
|
||||||
|
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
||||||
|
<el-table-column label="审核状态">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
{{
|
||||||
|
entrance === "job_data"
|
||||||
|
? translationStatus(row.APPLY_STATUS, stateList)
|
||||||
|
: "已归档"
|
||||||
|
}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="150">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="fnFlowChart(row)"
|
||||||
|
v-if="entrance === 'job_data'"
|
||||||
|
>
|
||||||
|
流程图
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
text
|
||||||
|
link
|
||||||
|
@click="
|
||||||
|
router.push({
|
||||||
|
path:
|
||||||
|
props.entrance === 'job_data'
|
||||||
|
? '/temporary_electricity_usage/job_data/view'
|
||||||
|
: '/temporary_electricity_usage/archive/view',
|
||||||
|
query: { ELECTRICITY_ID: row.ELECTRICITY_ID, entrance },
|
||||||
|
})
|
||||||
|
"
|
||||||
|
>
|
||||||
|
审批表详情
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</layout-table>
|
||||||
|
</layout-card>
|
||||||
|
<flow-chart
|
||||||
|
v-model:visible="data.flowChartDialog.visible"
|
||||||
|
:info="data.flowChartDialog.info"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { serialNumber, translationStatus } from "@/assets/js/utils.js";
|
||||||
|
import { useRouter } from "vue-router";
|
||||||
|
import useListData from "@/assets/js/useListData.js";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
import FlowChart from "./components/flow_chart.vue";
|
||||||
|
import { getTemporaryElectricityUsageList } from "@/request/temporary_electricity_usage.js";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
entrance: {
|
||||||
|
type: String,
|
||||||
|
default: "job_data",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const stateList = [
|
||||||
|
{ ID: "0", NAME: "临时用电作业待提交" },
|
||||||
|
{ ID: "1", NAME: "作业负责人待审核" },
|
||||||
|
{ ID: "2", NAME: "用电单位待审核" },
|
||||||
|
{ ID: "3", NAME: "配送电单位待审核" },
|
||||||
|
{ ID: "4", NAME: "待验收" },
|
||||||
|
{ ID: "5", NAME: "验收归档" },
|
||||||
|
{ ID: "-2", NAME: "作业负责人审核打回" },
|
||||||
|
{ ID: "-3", NAME: "用电单位审核打回" },
|
||||||
|
{ ID: "-4", NAME: "配送电单位审核打回" },
|
||||||
|
{ ID: "-5", NAME: "验收打回" },
|
||||||
|
{ ID: "-99", NAME: "已作废" },
|
||||||
|
];
|
||||||
|
const router = useRouter();
|
||||||
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
useListData(getTemporaryElectricityUsageList, {
|
||||||
|
otherParams: props.entrance === "archive" ? { APPLY_STATUS: "5" } : {},
|
||||||
|
});
|
||||||
|
const data = reactive({
|
||||||
|
flowChartDialog: {
|
||||||
|
visible: false,
|
||||||
|
info: {},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const fnFlowChart = (info) => {
|
||||||
|
data.flowChartDialog.visible = true;
|
||||||
|
data.flowChartDialog.info = info;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
|
@ -0,0 +1,302 @@
|
||||||
|
<template>
|
||||||
|
<layout-print-table-package :entrance="entrance" :thead-height="65.5">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td colspan="10" style="border: none">
|
||||||
|
<el-divider content-position="left">
|
||||||
|
临时用电作业许可证
|
||||||
|
</el-divider>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tr>
|
||||||
|
<td class="title">申请单位</td>
|
||||||
|
<td colspan="2">{{ data.info.APPLY_DEPARTMENT_NAME }}</td>
|
||||||
|
<td class="title">作业申请时间</td>
|
||||||
|
<td colspan="2">{{ data.info.CREATTIME }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业地点</td>
|
||||||
|
<td colspan="2">{{ data.info.WORK_PLACE }}</td>
|
||||||
|
<td class="title">作业内容</td>
|
||||||
|
<td colspan="2">{{ data.info.WORK_CONTENT }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">电源接入点及许可用电功率</td>
|
||||||
|
<td colspan="2">{{ data.info.ALLOW_POWER }}</td>
|
||||||
|
<td class="title">工作电压</td>
|
||||||
|
<td colspan="2">{{ data.info.WORK_VOLTAGE }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">用电设备名称及额定功率</td>
|
||||||
|
<td>{{ data.info.RATED_POWER }}</td>
|
||||||
|
<td class="title">监护人</td>
|
||||||
|
<td>
|
||||||
|
<div v-if="data.info.GUARDIAN_USER_SIGNER_PATH" class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.GUARDIAN_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.GUARDIAN_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td class="title">用电人</td>
|
||||||
|
<td>{{ data.info.ELECTRICITY_USER }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业人</td>
|
||||||
|
<td colspan="2">{{ data.info.WORK_USER }}</td>
|
||||||
|
<td class="title">电工证号</td>
|
||||||
|
<td colspan="2">{{ data.info.CARD_NO }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业负责人</td>
|
||||||
|
<td colspan="2">{{ data.info.CONFIRM_USER_NAME }}</td>
|
||||||
|
<td class="title">电工证号</td>
|
||||||
|
<td colspan="2">{{ data.info.LEADER_CARD_NO }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">关联的其他特殊作业及安全作业票编号</td>
|
||||||
|
<td colspan="5">{{ data.info.SPECIAL_WORK }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">风险辨识结果</td>
|
||||||
|
<td colspan="5">{{ data.info.RISK_IDENTIFICATION }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title" colspan="6">
|
||||||
|
可燃气体分析(运行的生产装置、罐区和具有火灾爆炸危险场所)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<template v-for="(item, index) in data.gasList" :key="index">
|
||||||
|
<tr>
|
||||||
|
<td class="title">分析时间</td>
|
||||||
|
<td colspan="2">{{ item.ANALYZE_TIME }}</td>
|
||||||
|
<td class="title">分析点</td>
|
||||||
|
<td colspan="2">{{ item.ANALYZE_PLACE }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">可燃气体检测结果</td>
|
||||||
|
<td colspan="2">{{ item.ANALYZE_RESULT }}</td>
|
||||||
|
<td class="title">分析人</td>
|
||||||
|
<td colspan="2">{{ item.ANALYZE_USER }}</td>
|
||||||
|
</tr>
|
||||||
|
</template>
|
||||||
|
<tr>
|
||||||
|
<td class="title">作业实施时间</td>
|
||||||
|
<td colspan="5">
|
||||||
|
{{ data.info.WORK_START_DATE }}至{{ data.info.WORK_END_DATE }}止
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="6">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style="width: 80px">序号</td>
|
||||||
|
<td>安全措施</td>
|
||||||
|
<td style="width: 100px">是否涉及</td>
|
||||||
|
<td style="width: 100px">确认人</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-for="(item, index) in data.measuresList" :key="index">
|
||||||
|
<td>{{ index + 1 }}</td>
|
||||||
|
<td>{{ item.PROTECTIVE_MEASURES }}</td>
|
||||||
|
<td>
|
||||||
|
<span v-if="item.STATUS === '1'">
|
||||||
|
<input type="radio" disabled checked />涉 及
|
||||||
|
</span>
|
||||||
|
<span v-if="item.STATUS === '-1'">
|
||||||
|
<input type="radio" disabled checked />不涉及
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.CONFIRM_NAME }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr
|
||||||
|
v-if="
|
||||||
|
data.info.CONFIRM_USER_MEASURES ||
|
||||||
|
data.info.AUDIT_USER_MEASURES ||
|
||||||
|
data.info.APPROVE_USER_MEASURES
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<td>{{ data.measuresList.length + 1 }}</td>
|
||||||
|
<td colspan="3">
|
||||||
|
<div
|
||||||
|
v-if="data.info.CONFIRM_USER_MEASURES"
|
||||||
|
style="display: flex; justify-content: space-between"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
其他安全措施:{{ data.info.CONFIRM_USER_MEASURES }}
|
||||||
|
</span>
|
||||||
|
<span>编制人:{{ data.info.CONFIRM_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="data.info.AUDIT_USER_MEASURES"
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<span>其他安全措施:{{ data.info.AUDIT_USER_MEASURES }}</span>
|
||||||
|
<span>编制人:{{ data.info.AUDIT_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="data.info.APPROVE_USER_MEASURES"
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-top: 10px;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<span>
|
||||||
|
其他安全措施:{{ data.info.APPROVE_USER_MEASURES }}
|
||||||
|
</span>
|
||||||
|
<span>编制人:{{ data.info.APPROVE_USER_NAME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">安全交底人</td>
|
||||||
|
<td colspan="10">
|
||||||
|
<div v-if="data.info.CONFESS_USER_SIGNER_PATH" class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.CONFESS_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.CONFESS_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">接受交底人</td>
|
||||||
|
<td colspan="10">
|
||||||
|
<div
|
||||||
|
v-for="item in data.imgList"
|
||||||
|
:key="item.ACCEPT_CONFESS_ID"
|
||||||
|
class="tr"
|
||||||
|
>
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + item.ACCEPT_CONFESS_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ item.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.CONFIRM_USER_SIGNER_TIME">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>作业负责人意见:{{ data.info.CONFIRM_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.CONFIRM_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.CONFIRM_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.AUDIT_USER_SIGNER_TIME">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>用电单位意见:{{ data.info.AUDIT_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.AUDIT_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.AUDIT_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.info.APPROVE_USER_SIGNER_TIME">
|
||||||
|
<td colspan="6">
|
||||||
|
<div>配送电单位意见:{{ data.info.APPROVE_CONTENT }}</div>
|
||||||
|
<div class="tr">
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + data.info.APPROVE_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ data.info.APPROVE_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr v-if="data.imgList1.length > 0">
|
||||||
|
<td colspan="10">
|
||||||
|
<div>完工验收:{{ data.info.ACCEPT_CONTENT }}</div>
|
||||||
|
<div
|
||||||
|
v-for="item in data.imgList1"
|
||||||
|
:key="item.ACCEPT_CONFESS_ID"
|
||||||
|
class="tr"
|
||||||
|
>
|
||||||
|
<span>签字:</span>
|
||||||
|
<img
|
||||||
|
v-viewer
|
||||||
|
:src="VITE_FILE_URL + item.ACCEPT_USER_SIGNER_PATH"
|
||||||
|
alt=""
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
/>
|
||||||
|
<span>{{ item.ACCEPT_USER_SIGNER_TIME }}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</layout-print-table-package>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import LayoutPrintTablePackage from "@/components/print_table_package/index.vue";
|
||||||
|
import { reactive } from "vue";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
import { getTemporaryElectricityUsageView } from "@/request/temporary_electricity_usage.js";
|
||||||
|
|
||||||
|
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
|
const route = useRoute();
|
||||||
|
const { ELECTRICITY_ID, entrance } = route.query;
|
||||||
|
const data = reactive({
|
||||||
|
info: {},
|
||||||
|
imgList: [],
|
||||||
|
imgList1: [],
|
||||||
|
measuresList: [],
|
||||||
|
gasList: [],
|
||||||
|
});
|
||||||
|
const fnGetData = async () => {
|
||||||
|
const resData = await getTemporaryElectricityUsageView({ ELECTRICITY_ID });
|
||||||
|
data.info = resData.pd;
|
||||||
|
data.imgList = resData.imgList;
|
||||||
|
data.imgList1 = resData.imgList1;
|
||||||
|
data.measuresList = resData.measuresList;
|
||||||
|
data.gasList = resData.gasList;
|
||||||
|
};
|
||||||
|
fnGetData();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss"></style>
|
Loading…
Reference in New Issue