diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/src/views/business/board/depComprehensive/depComprehensive-interface.ts b/src/views/business/board/depComprehensive/depComprehensive-interface.ts new file mode 100644 index 0000000..1b16917 --- /dev/null +++ b/src/views/business/board/depComprehensive/depComprehensive-interface.ts @@ -0,0 +1,16 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + startTime: string // 开始时间 + endTime: string // 结束时间 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + outPut: string // 产值统计(单位分) +} diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/src/views/business/board/depComprehensive/depComprehensive-interface.ts b/src/views/business/board/depComprehensive/depComprehensive-interface.ts new file mode 100644 index 0000000..1b16917 --- /dev/null +++ b/src/views/business/board/depComprehensive/depComprehensive-interface.ts @@ -0,0 +1,16 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + startTime: string // 开始时间 + endTime: string // 结束时间 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + outPut: string // 产值统计(单位分) +} diff --git a/src/views/business/board/depComprehensive/list.vue b/src/views/business/board/depComprehensive/list.vue new file mode 100644 index 0000000..1bcad63 --- /dev/null +++ b/src/views/business/board/depComprehensive/list.vue @@ -0,0 +1,211 @@ + + + + + + diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/src/views/business/board/depComprehensive/depComprehensive-interface.ts b/src/views/business/board/depComprehensive/depComprehensive-interface.ts new file mode 100644 index 0000000..1b16917 --- /dev/null +++ b/src/views/business/board/depComprehensive/depComprehensive-interface.ts @@ -0,0 +1,16 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + startTime: string // 开始时间 + endTime: string // 结束时间 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + outPut: string // 产值统计(单位分) +} diff --git a/src/views/business/board/depComprehensive/list.vue b/src/views/business/board/depComprehensive/list.vue new file mode 100644 index 0000000..1bcad63 --- /dev/null +++ b/src/views/business/board/depComprehensive/list.vue @@ -0,0 +1,211 @@ + + + + + + diff --git a/src/views/business/board/depOutputAnalysis/list.vue b/src/views/business/board/depOutputAnalysis/list.vue index 1b15465..5747072 100644 --- a/src/views/business/board/depOutputAnalysis/list.vue +++ b/src/views/business/board/depOutputAnalysis/list.vue @@ -59,7 +59,8 @@ } }) outPutTotal.value = (response.data.outPutTotal / 100).toFixed(2) - title.value = `产值总计: ${outPutTotal.value}元 (${titleStartTime.value} ~ ${titleEndTime.value})` + title.value = listQuery.value.startTime && listQuery.value.endTime ? `产值总计: ${outPutTotal.value}元 (${listQuery.value.startTime} ~ ${listQuery.value.endTime})` : `产值总计: ${outPutTotal.value}元` + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] loadingTable.value = false }) } @@ -72,19 +73,22 @@ startTime: '', // 开始时间 endTime: '', // 结束时间 } - timeRange.value = ['', ''] - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] fetchData() } // 搜索 const searchList = () => { - listQuery.value.startTime = timeRange.value[0] as string || '' - listQuery.value.endTime = timeRange.value[1] as string || '' - if (listQuery.value.startTime && listQuery.value.endTime) { - titleStartTime.value = listQuery.value.startTime - titleEndTime.value = listQuery.value.endTime + if (timeRange.value) { + listQuery.value.startTime = timeRange.value[0] as string || '' + listQuery.value.endTime = timeRange.value[1] as string || '' + } + else { + listQuery.value.startTime = '' + listQuery.value.endTime = '' + timeRange.value = ['', ''] } fetchData() } @@ -191,14 +195,15 @@ // 部门值发生变化 const deptChange = (deptId: string) => { + listQuery.value.staffId = '' fetchUserList(deptId) } onMounted(() => { fetchUsersDept() // 获取部门信息 + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') fetchData() // 获取表格数据 - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') }) @@ -245,8 +250,8 @@ v-model="timeRange" type="datetimerange" range-separator="到" - format="YYYY-MM-DD hh:mm:ss" - value-format="YYYY-MM-DD hh:mm:ss" + format="YYYY-MM-DD HH:mm:ss" + value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" end-placeholder="结束时间" /> @@ -255,7 +260,7 @@ = 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/src/views/business/board/depComprehensive/depComprehensive-interface.ts b/src/views/business/board/depComprehensive/depComprehensive-interface.ts new file mode 100644 index 0000000..1b16917 --- /dev/null +++ b/src/views/business/board/depComprehensive/depComprehensive-interface.ts @@ -0,0 +1,16 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + startTime: string // 开始时间 + endTime: string // 结束时间 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + outPut: string // 产值统计(单位分) +} diff --git a/src/views/business/board/depComprehensive/list.vue b/src/views/business/board/depComprehensive/list.vue new file mode 100644 index 0000000..1bcad63 --- /dev/null +++ b/src/views/business/board/depComprehensive/list.vue @@ -0,0 +1,211 @@ + + + + + + diff --git a/src/views/business/board/depOutputAnalysis/list.vue b/src/views/business/board/depOutputAnalysis/list.vue index 1b15465..5747072 100644 --- a/src/views/business/board/depOutputAnalysis/list.vue +++ b/src/views/business/board/depOutputAnalysis/list.vue @@ -59,7 +59,8 @@ } }) outPutTotal.value = (response.data.outPutTotal / 100).toFixed(2) - title.value = `产值总计: ${outPutTotal.value}元 (${titleStartTime.value} ~ ${titleEndTime.value})` + title.value = listQuery.value.startTime && listQuery.value.endTime ? `产值总计: ${outPutTotal.value}元 (${listQuery.value.startTime} ~ ${listQuery.value.endTime})` : `产值总计: ${outPutTotal.value}元` + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] loadingTable.value = false }) } @@ -72,19 +73,22 @@ startTime: '', // 开始时间 endTime: '', // 结束时间 } - timeRange.value = ['', ''] - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] fetchData() } // 搜索 const searchList = () => { - listQuery.value.startTime = timeRange.value[0] as string || '' - listQuery.value.endTime = timeRange.value[1] as string || '' - if (listQuery.value.startTime && listQuery.value.endTime) { - titleStartTime.value = listQuery.value.startTime - titleEndTime.value = listQuery.value.endTime + if (timeRange.value) { + listQuery.value.startTime = timeRange.value[0] as string || '' + listQuery.value.endTime = timeRange.value[1] as string || '' + } + else { + listQuery.value.startTime = '' + listQuery.value.endTime = '' + timeRange.value = ['', ''] } fetchData() } @@ -191,14 +195,15 @@ // 部门值发生变化 const deptChange = (deptId: string) => { + listQuery.value.staffId = '' fetchUserList(deptId) } onMounted(() => { fetchUsersDept() // 获取部门信息 + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') fetchData() // 获取表格数据 - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') }) @@ -245,8 +250,8 @@ v-model="timeRange" type="datetimerange" range-separator="到" - format="YYYY-MM-DD hh:mm:ss" - value-format="YYYY-MM-DD hh:mm:ss" + format="YYYY-MM-DD HH:mm:ss" + value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" end-placeholder="结束时间" /> @@ -255,7 +260,7 @@ + + + + + diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/src/views/business/board/depComprehensive/depComprehensive-interface.ts b/src/views/business/board/depComprehensive/depComprehensive-interface.ts new file mode 100644 index 0000000..1b16917 --- /dev/null +++ b/src/views/business/board/depComprehensive/depComprehensive-interface.ts @@ -0,0 +1,16 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + startTime: string // 开始时间 + endTime: string // 结束时间 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + outPut: string // 产值统计(单位分) +} diff --git a/src/views/business/board/depComprehensive/list.vue b/src/views/business/board/depComprehensive/list.vue new file mode 100644 index 0000000..1bcad63 --- /dev/null +++ b/src/views/business/board/depComprehensive/list.vue @@ -0,0 +1,211 @@ + + + + + + diff --git a/src/views/business/board/depOutputAnalysis/list.vue b/src/views/business/board/depOutputAnalysis/list.vue index 1b15465..5747072 100644 --- a/src/views/business/board/depOutputAnalysis/list.vue +++ b/src/views/business/board/depOutputAnalysis/list.vue @@ -59,7 +59,8 @@ } }) outPutTotal.value = (response.data.outPutTotal / 100).toFixed(2) - title.value = `产值总计: ${outPutTotal.value}元 (${titleStartTime.value} ~ ${titleEndTime.value})` + title.value = listQuery.value.startTime && listQuery.value.endTime ? `产值总计: ${outPutTotal.value}元 (${listQuery.value.startTime} ~ ${listQuery.value.endTime})` : `产值总计: ${outPutTotal.value}元` + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] loadingTable.value = false }) } @@ -72,19 +73,22 @@ startTime: '', // 开始时间 endTime: '', // 结束时间 } - timeRange.value = ['', ''] - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] fetchData() } // 搜索 const searchList = () => { - listQuery.value.startTime = timeRange.value[0] as string || '' - listQuery.value.endTime = timeRange.value[1] as string || '' - if (listQuery.value.startTime && listQuery.value.endTime) { - titleStartTime.value = listQuery.value.startTime - titleEndTime.value = listQuery.value.endTime + if (timeRange.value) { + listQuery.value.startTime = timeRange.value[0] as string || '' + listQuery.value.endTime = timeRange.value[1] as string || '' + } + else { + listQuery.value.startTime = '' + listQuery.value.endTime = '' + timeRange.value = ['', ''] } fetchData() } @@ -191,14 +195,15 @@ // 部门值发生变化 const deptChange = (deptId: string) => { + listQuery.value.staffId = '' fetchUserList(deptId) } onMounted(() => { fetchUsersDept() // 获取部门信息 + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') fetchData() // 获取表格数据 - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') }) @@ -245,8 +250,8 @@ v-model="timeRange" type="datetimerange" range-separator="到" - format="YYYY-MM-DD hh:mm:ss" - value-format="YYYY-MM-DD hh:mm:ss" + format="YYYY-MM-DD HH:mm:ss" + value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" end-placeholder="结束时间" /> @@ -255,7 +260,7 @@ + + + + + diff --git a/src/views/business/board/workloadAnalysis/workloadAnalysis-interface.ts b/src/views/business/board/workloadAnalysis/workloadAnalysis-interface.ts new file mode 100644 index 0000000..9b70579 --- /dev/null +++ b/src/views/business/board/workloadAnalysis/workloadAnalysis-interface.ts @@ -0,0 +1,18 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + staffId: string // 人员id + month: string // 月份 + year: string // 年份 + date: string // 日期 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + compareLastMonth: string // 较上月工作量分析 +} diff --git a/package.json b/package.json index 8aabc3d..ce67ec6 100644 --- a/package.json +++ b/package.json @@ -38,12 +38,14 @@ "nprogress": "^0.2.0", "path-browserify": "^1.0.1", "path-to-regexp": "^6.2.1", + "pdfjs-dist": "2.0.943", "pinia": "^2.0.23", "print-js": "^1.6.0", "qrcode": "^1.5.1", "qs": "^6.11.0", "tinymce": "^6.2.0", "vue": "^3.2.44", + "vue-pdf-embed": "^1.1.5", "vue-router": "^4.1.6", "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64aa9b4..3cbb615 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,7 @@ nprogress: ^0.2.0 path-browserify: ^1.0.1 path-to-regexp: ^6.2.1 + pdfjs-dist: 2.0.943 pinia: ^2.0.23 plop: ^3.1.1 postcss-html: ^1.5.0 @@ -68,6 +69,7 @@ vite-plugin-vue-layouts: ^0.6.0 vite-plugin-vue-setup-extend: ^0.4.0 vue: ^3.2.44 + vue-pdf-embed: ^1.1.5 vue-router: ^4.1.6 vue-tsc: ^1.0.9 vue3-print-nb: ^0.1.4 @@ -95,12 +97,14 @@ nprogress: 0.2.0 path-browserify: 1.0.1 path-to-regexp: 6.2.1 + pdfjs-dist: 2.0.943 pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm print-js: registry.npmmirror.com/print-js/1.6.0 qrcode: registry.npmmirror.com/qrcode/1.5.1 qs: 6.11.0 tinymce: 6.2.0 vue: 3.2.44 + vue-pdf-embed: 1.1.5_vue@3.2.44 vue-router: 4.1.6_vue@3.2.44 vue3-print-nb: 0.1.4 vuedraggable: registry.npmmirror.com/vuedraggable/4.1.0_vue@3.2.44 @@ -1641,6 +1645,14 @@ indent-string: 4.0.0 dev: true + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1648,7 +1660,6 @@ fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv/8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -1896,7 +1907,6 @@ /big.js/5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true /bin-pack/1.0.2: resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} @@ -2866,7 +2876,6 @@ /emojis-list/3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -3721,7 +3730,6 @@ /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -3736,7 +3744,6 @@ /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -4985,7 +4992,6 @@ /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -5008,7 +5014,6 @@ hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} @@ -5183,7 +5188,6 @@ big.js: 5.2.2 emojis-list: 3.0.0 json5: 1.0.1 - dev: true /local-pkg/0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} @@ -5504,7 +5508,6 @@ /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true /mitt/3.0.0: resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==} @@ -5646,6 +5649,10 @@ engines: {node: '>=v0.6.5'} dev: true + /node-ensure/0.0.0: + resolution: {integrity: sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw==} + dev: false + /node-html-parser/5.4.2: resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: @@ -6110,6 +6117,15 @@ resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} dev: true + /pdfjs-dist/2.0.943: + resolution: {integrity: sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + node-ensure: 0.0.0 + worker-loader: 2.0.0 + dev: false + /performance-now/2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true @@ -6368,7 +6384,6 @@ /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -6733,6 +6748,14 @@ through: 2.3.8 dev: true + /schema-utils/0.4.7: + resolution: {integrity: sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + /scroll-into-view-if-needed/2.2.31: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: @@ -7845,7 +7868,6 @@ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - dev: true /urix/0.1.0: resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} @@ -8130,6 +8152,14 @@ - supports-color dev: true + /vue-pdf-embed/1.1.5_vue@3.2.44: + resolution: {integrity: sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.2.44 + dev: false + /vue-router/4.1.6_vue@3.2.44: resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} peerDependencies: @@ -8262,6 +8292,16 @@ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /worker-loader/2.0.0: + resolution: {integrity: sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==} + engines: {node: '>= 6.9.0 || >= 8.9.0'} + peerDependencies: + webpack: ^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 + dependencies: + loader-utils: 1.4.0 + schema-utils: 0.4.7 + dev: false + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/api/business/board/depComprehensive.ts b/src/api/business/board/depComprehensive.ts new file mode 100644 index 0000000..ab754ab --- /dev/null +++ b/src/api/business/board/depComprehensive.ts @@ -0,0 +1,23 @@ +// 部门综合分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/depComprehensive/depComprehensive-interface' + +// 部门产值分析列表 +export function getDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportDepComprehensiveList(data: IListQuery) { + return request({ + url: '/business/board/deptComprehensive/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/api/business/board/workloadAnalysis.ts b/src/api/business/board/workloadAnalysis.ts new file mode 100644 index 0000000..63a2021 --- /dev/null +++ b/src/api/business/board/workloadAnalysis.ts @@ -0,0 +1,23 @@ +// 业务工作量分析 +import request from '../../index' +import type { IListQuery } from '@/views/business/board/workloadAnalysis/workloadAnalysis-interface' + +// 部门产值分析列表 +export function getWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload', + method: 'post', + data, + }) +} + +// 部门产值分析导出 +export function exportWorkloadAnalysisList(data: IListQuery) { + return request({ + url: '/business/board/workload/export', + method: 'post', + responseType: 'blob', + data, + }) +} + diff --git a/src/router/modules/business.ts b/src/router/modules/business.ts index 6536feb..7ac0233 100644 --- a/src/router/modules/business.ts +++ b/src/router/modules/business.ts @@ -113,6 +113,26 @@ auth: '/business/board/departmentalOutputAnalysis', }, }, + { + path: 'workloadAnalysis', + name: 'WorkloadAnalysis', + component: () => import('@/views/business/board/workloadAnalysis/list.vue'), + meta: { + title: '业务工作量分析', + icon: 'ep:key', + auth: '/business/board/businessWorkloadAnalysis', + }, + }, + { + path: 'depComprehensive', + name: 'DepComprehensive', + component: () => import('@/views/business/board/depComprehensive/list.vue'), + meta: { + title: '部门综合分析', + icon: 'ep:key', + auth: '/business/board/departmentalComprehensiveAnalysis', + }, + }, ], }, { diff --git a/src/views/business/board/depComprehensive/depComprehensive-interface.ts b/src/views/business/board/depComprehensive/depComprehensive-interface.ts new file mode 100644 index 0000000..1b16917 --- /dev/null +++ b/src/views/business/board/depComprehensive/depComprehensive-interface.ts @@ -0,0 +1,16 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + startTime: string // 开始时间 + endTime: string // 结束时间 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + outPut: string // 产值统计(单位分) +} diff --git a/src/views/business/board/depComprehensive/list.vue b/src/views/business/board/depComprehensive/list.vue new file mode 100644 index 0000000..1bcad63 --- /dev/null +++ b/src/views/business/board/depComprehensive/list.vue @@ -0,0 +1,211 @@ + + + + + + diff --git a/src/views/business/board/depOutputAnalysis/list.vue b/src/views/business/board/depOutputAnalysis/list.vue index 1b15465..5747072 100644 --- a/src/views/business/board/depOutputAnalysis/list.vue +++ b/src/views/business/board/depOutputAnalysis/list.vue @@ -59,7 +59,8 @@ } }) outPutTotal.value = (response.data.outPutTotal / 100).toFixed(2) - title.value = `产值总计: ${outPutTotal.value}元 (${titleStartTime.value} ~ ${titleEndTime.value})` + title.value = listQuery.value.startTime && listQuery.value.endTime ? `产值总计: ${outPutTotal.value}元 (${listQuery.value.startTime} ~ ${listQuery.value.endTime})` : `产值总计: ${outPutTotal.value}元` + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] loadingTable.value = false }) } @@ -72,19 +73,22 @@ startTime: '', // 开始时间 endTime: '', // 结束时间 } - timeRange.value = ['', ''] - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') + timeRange.value = [listQuery.value.startTime, listQuery.value.endTime] fetchData() } // 搜索 const searchList = () => { - listQuery.value.startTime = timeRange.value[0] as string || '' - listQuery.value.endTime = timeRange.value[1] as string || '' - if (listQuery.value.startTime && listQuery.value.endTime) { - titleStartTime.value = listQuery.value.startTime - titleEndTime.value = listQuery.value.endTime + if (timeRange.value) { + listQuery.value.startTime = timeRange.value[0] as string || '' + listQuery.value.endTime = timeRange.value[1] as string || '' + } + else { + listQuery.value.startTime = '' + listQuery.value.endTime = '' + timeRange.value = ['', ''] } fetchData() } @@ -191,14 +195,15 @@ // 部门值发生变化 const deptChange = (deptId: string) => { + listQuery.value.staffId = '' fetchUserList(deptId) } onMounted(() => { fetchUsersDept() // 获取部门信息 + listQuery.value.startTime = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') + listQuery.value.endTime = dayjs().format('YYYY-MM-DD HH:mm:ss') fetchData() // 获取表格数据 - titleStartTime.value = dayjs().startOf('month').format('YYYY-MM-DD HH:mm:ss') - titleEndTime.value = dayjs().format('YYYY-MM-DD HH:mm:ss') }) @@ -245,8 +250,8 @@ v-model="timeRange" type="datetimerange" range-separator="到" - format="YYYY-MM-DD hh:mm:ss" - value-format="YYYY-MM-DD hh:mm:ss" + format="YYYY-MM-DD HH:mm:ss" + value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="开始时间" end-placeholder="结束时间" /> @@ -255,7 +260,7 @@ + + + + + diff --git a/src/views/business/board/workloadAnalysis/workloadAnalysis-interface.ts b/src/views/business/board/workloadAnalysis/workloadAnalysis-interface.ts new file mode 100644 index 0000000..9b70579 --- /dev/null +++ b/src/views/business/board/workloadAnalysis/workloadAnalysis-interface.ts @@ -0,0 +1,18 @@ +// 筛选数据 +export interface IListQuery { + deptId: string // 部门id + staffId: string // 人员id + month: string // 月份 + year: string // 年份 + date: string // 日期 +} + +// 表格 +export interface IList { + id: string // 主键 + deptName: string // 部门 + staffName: string // 人员 + samples: string // 检完样品数量 + certificates: string // 出具证书数量 + compareLastMonth: string // 较上月工作量分析 +} diff --git a/src/views/business/schedule/certPrint/certList.vue b/src/views/business/schedule/certPrint/certList.vue index a084cc7..9dee20f 100644 --- a/src/views/business/schedule/certPrint/certList.vue +++ b/src/views/business/schedule/certPrint/certList.vue @@ -3,6 +3,8 @@ import { getCurrentInstance, ref } from 'vue' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' // import { Row } from 'element-plus/es/components/table-v2/src/components' +import VuePdfEmbed from 'vue-pdf-embed' +import * as pdfjsLib from 'pdfjs-dist' import type { ICerPrintList, ICertPrintSearch } from './cert-interface' import ApprovalDialogPart from './components/ApprovalDialogPart.vue' import type { TableColumn } from '@/components/NormalTable/table_interface' @@ -18,6 +20,7 @@ import { download } from '@/utils/download' const { proxy } = getCurrentInstance() as any const $router = useRouter() +const pdfUrl = ref('') // 右上角按钮 const menu = ref([]) // 右上角审批状态按钮组合 const active = ref('') // 选中的按钮 @@ -250,7 +253,12 @@ ).then(() => { getPhotoUrl(row.printFileName as string).then((res) => { const url = res.data - download(url, row.printFileName as string) + console.log(url) + + pdfUrl.value = res.data + // pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdf.worker.js' + proxy.$refs.pdf.print() + // download(url, row.printFileName as string) }) }) } @@ -369,6 +377,7 @@ + //pdf预览 +