From 3d3e7f45086799fdd7a412e2079710a6cdf8dc2b Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 24 十月 2024 08:30:04 +0800 Subject: [PATCH] Merge branch 'lsf-dataproduct-1018' --- src/views/fysp/data-product/ProdSceneReport.vue | 8 src/views/fysp/task/components/CompSubTaskSelect.vue | 6 src/api/fysp/dataproductApi.js | 34 package-lock.json | 1600 +++++++++++++++++++++++++++++--- src/components.d.ts | 8 src/views/fysp/data-product/ProdProAnalysis.vue | 12 src/views/fysp/data-product/ProdStandardJudge.vue | 12 src/views/fysp/data-product/components/CompReportDownloadDialog.vue | 80 + src/views/fysp/task/components/CompSubTaskEdit.vue | 170 +++ src/components/form/FYForm.vue | 4 src/views/fysp/data-product/ProdProFollow.vue | 12 src/views/fysp/task/components/CompTaskEdit.vue | 2 src/views/fysp/task/TaskProxy.js | 23 src/api/index.js | 2 src/api/fysp/subtaskApi.js | 20 src/views/fysp/task/components/CompDayTask.vue | 133 + package.json | 6 src/components/core/SiderMenu.vue | 6 src/components/list-item/ItemSubTask.vue | 163 +++ src/views/fysp/task/components/CompSubTaskList.vue | 119 ++ src/views/fysp/data-product/components/BaseDataProduct.vue | 353 +++++++ src/views/fysp/task/TaskManage.vue | 46 src/views/fysp/task/components/CompMonitorPlan.vue | 53 23 files changed, 2,569 insertions(+), 303 deletions(-) diff --git a/package-lock.json b/package-lock.json index 508cba5..8c46b4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,16 +11,20 @@ "@amap/amap-jsapi-loader": "^1.0.1", "@ctrl/tinycolor": "^4.0.2", "@element-plus/icons-vue": "^2.0.10", + "@vue-office/excel": "^1.7.11", "@vueuse/core": "^9.7.0", "axios": "^1.2.1", "dayjs": "^1.11.13", "element-plus": "^2.8.3", + "exceljs": "^4.4.0", "js-base64": "^3.7.5", "md5": "^2.3.0", "pinia": "^2.0.26", "vue": "^3.2.45", + "vue-demi": "^0.14.6", "vue-i18n": "^9.8.0", - "vue-router": "^4.1.6" + "vue-router": "^4.1.6", + "xlsx": "^0.18.5" }, "devDependencies": { "@babel/cli": "^7.19.3", @@ -1899,6 +1903,33 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, "node_modules/@floating-ui/core": { "version": "1.0.4", "license": "MIT" @@ -2208,7 +2239,6 @@ }, "node_modules/@types/node": { "version": "14.18.34", - "dev": true, "license": "MIT" }, "node_modules/@types/semver": { @@ -2409,6 +2439,22 @@ "vue": "^3.2.25" } }, + "node_modules/@vue-office/excel": { + "version": "1.7.11", + "resolved": "https://registry.npmmirror.com/@vue-office/excel/-/excel-1.7.11.tgz", + "integrity": "sha512-LF3R9IV573Sf4qTu6Ik5Ee8UMfkrsZQ6HEQE25/2m1c0CMcHX6KanIy6Cz0b0Q+FrLH3TjIsLTm6oPcqAbDGSA==", + "hasInstallScript": true, + "peerDependencies": { + "@vue/composition-api": "^1.7.1", + "vue": "^2.0.0 || >=3.0.0", + "vue-demi": "^0.14.6" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/@vue/compiler-core": { "version": "3.2.45", "license": "MIT", @@ -2527,30 +2573,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.13.11", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/@vueuse/metadata": { "version": "9.7.0", "license": "MIT", @@ -2566,30 +2588,6 @@ }, "funding": { "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.13.11", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } } }, "node_modules/@webassemblyjs/ast": { @@ -2800,6 +2798,14 @@ "node": ">=0.4.0" } }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/agent-base": { "version": "6.0.2", "dev": true, @@ -2933,6 +2939,70 @@ ], "license": "MIT" }, + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/arg": { "version": "5.0.2", "dev": true, @@ -2986,7 +3056,6 @@ }, "node_modules/async": { "version": "3.2.4", - "dev": true, "license": "MIT" }, "node_modules/async-validator": { @@ -3121,12 +3190,10 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "dev": true, "funding": [ { "type": "github", @@ -3151,12 +3218,42 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "dev": true, "license": "MIT", "engines": { "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, "node_modules/blob-util": { @@ -3176,7 +3273,6 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -3223,7 +3319,6 @@ }, "node_modules/buffer": { "version": "5.7.1", - "dev": true, "funding": [ { "type": "github", @@ -3246,7 +3341,6 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", - "dev": true, "license": "MIT", "engines": { "node": "*" @@ -3257,6 +3351,22 @@ "dev": true, "license": "MIT", "peer": true + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } }, "node_modules/cachedir": { "version": "2.3.0", @@ -3294,6 +3404,18 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/chai": { "version": "4.3.7", "dev": true, @@ -3309,6 +3431,17 @@ }, "engines": { "node": ">=4" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" } }, "node_modules/chalk": { @@ -3463,6 +3596,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "dev": true, @@ -3510,9 +3651,22 @@ "node": ">=4.0.0" } }, + "node_modules/compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { @@ -3545,8 +3699,30 @@ }, "node_modules/core-util-is": { "version": "1.0.2", - "dev": true, "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -3773,6 +3949,41 @@ "dev": true, "license": "MIT" }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "dev": true, @@ -3827,7 +4038,6 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -4285,6 +4495,36 @@ "node": ">=0.8.x" } }, + "node_modules/exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/exceljs/node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/execa": { "version": "4.1.0", "dev": true, @@ -4349,6 +4589,18 @@ "node >=0.6.0" ], "license": "MIT" + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -4522,6 +4774,14 @@ "node": ">= 0.12" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/fraction.js": { "version": "4.2.0", "dev": true, @@ -4538,6 +4798,11 @@ "version": "0.1.7", "dev": true, "license": "MIT" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { "version": "9.1.0", @@ -4560,8 +4825,34 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, "license": "ISC" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, "node_modules/function-bind": { "version": "1.1.1", @@ -4616,7 +4907,6 @@ }, "node_modules/glob": { "version": "7.2.3", - "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -4706,7 +4996,6 @@ }, "node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, "license": "ISC" }, "node_modules/grapheme-splitter": { @@ -4809,7 +5098,6 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "dev": true, "funding": [ { "type": "github", @@ -4845,6 +5133,11 @@ "engines": { "node": ">=0.10.0" } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immutable": { "version": "4.1.0", @@ -4884,7 +5177,6 @@ }, "node_modules/inflight": { "version": "1.0.6", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -4893,7 +5185,6 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, "license": "ISC" }, "node_modules/ini": { @@ -5036,6 +5327,11 @@ "version": "3.14.1", "dev": true, "license": "MIT" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/isexe": { "version": "2.0.0", @@ -5260,6 +5556,44 @@ "verror": "1.10.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/klona": { "version": "2.0.5", "dev": true, @@ -5274,6 +5608,44 @@ "license": "MIT", "engines": { "node": "> 0.8" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" } }, "node_modules/less": { @@ -5331,6 +5703,19 @@ "engines": { "node": ">= 0.8.0" } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, "node_modules/listr2": { "version": "3.14.0", @@ -5414,6 +5799,61 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "dev": true, @@ -5423,6 +5863,16 @@ "version": "4.1.1", "dev": true, "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "node_modules/log-symbols": { "version": "4.1.0", @@ -5621,7 +6071,6 @@ }, "node_modules/minimatch": { "version": "3.1.2", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -5632,10 +6081,20 @@ }, "node_modules/minimist": { "version": "1.2.7", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/ms": { @@ -5697,7 +6156,6 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5744,7 +6202,6 @@ }, "node_modules/once": { "version": "1.4.0", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -5827,6 +6284,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "dev": true, @@ -5867,7 +6329,6 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5971,30 +6432,6 @@ } } }, - "node_modules/pinia/node_modules/vue-demi": { - "version": "0.13.11", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/postcss": { "version": "8.4.20", "funding": [ @@ -6064,6 +6501,11 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/proxy-from-env": { "version": "1.0.0", @@ -6151,6 +6593,46 @@ "peer": true, "dependencies": { "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/readdirp": { @@ -6308,7 +6790,6 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -6366,7 +6847,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "dev": true, "funding": [ { "type": "github", @@ -6462,6 +6942,11 @@ "randombytes": "^2.1.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, "node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -6544,6 +7029,17 @@ }, "engines": { "node": "*" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/sshpk": { @@ -6640,6 +7136,14 @@ "license": "MIT", "dependencies": { "duplexer": "~0.1.1" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/string-natural-compare": { @@ -6740,6 +7244,21 @@ "node": ">=6" } }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/terser": { "version": "5.16.1", "dev": true, @@ -6836,7 +7355,6 @@ }, "node_modules/tmp": { "version": "0.2.1", - "dev": true, "license": "MIT", "dependencies": { "rimraf": "^3.0.0" @@ -6885,6 +7403,14 @@ }, "engines": { "node": ">=12" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" } }, "node_modules/ts-api-utils": { @@ -7178,6 +7704,55 @@ "node": ">=8" } }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "dev": true, @@ -7222,12 +7797,10 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", - "dev": true, "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -7357,6 +7930,31 @@ "@vue/runtime-dom": "3.2.45", "@vue/server-renderer": "3.2.45", "@vue/shared": "3.2.45" + } + }, + "node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/vue-eslint-parser": { @@ -7596,6 +8194,22 @@ "node": ">= 8" } }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "dev": true, @@ -7622,7 +8236,6 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, "license": "ISC" }, "node_modules/ws": { @@ -7645,6 +8258,26 @@ } } }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/xml-name-validator": { "version": "4.0.0", "dev": true, @@ -7655,7 +8288,6 @@ }, "node_modules/xmlchars": { "version": "2.2.0", - "dev": true, "license": "MIT" }, "node_modules/yallist": { @@ -7681,6 +8313,39 @@ }, "funding": { "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "dependencies": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zip-stream/node_modules/archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "dependencies": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" } } }, @@ -8827,6 +9492,33 @@ "strip-json-comments": "^3.1.1" } }, + "@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, "@floating-ui/core": { "version": "1.0.4" }, @@ -9049,8 +9741,7 @@ } }, "@types/node": { - "version": "14.18.34", - "dev": true + "version": "14.18.34" }, "@types/semver": { "version": "7.5.5", @@ -9182,6 +9873,12 @@ "dev": true, "requires": {} }, + "@vue-office/excel": { + "version": "1.7.11", + "resolved": "https://registry.npmmirror.com/@vue-office/excel/-/excel-1.7.11.tgz", + "integrity": "sha512-LF3R9IV573Sf4qTu6Ik5Ee8UMfkrsZQ6HEQE25/2m1c0CMcHX6KanIy6Cz0b0Q+FrLH3TjIsLTm6oPcqAbDGSA==", + "requires": {} + }, "@vue/compiler-core": { "version": "3.2.45", "requires": { @@ -9278,12 +9975,6 @@ "@vueuse/metadata": "9.7.0", "@vueuse/shared": "9.7.0", "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.13.11", - "requires": {} - } } }, "@vueuse/metadata": { @@ -9293,12 +9984,6 @@ "version": "9.7.0", "requires": { "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.13.11", - "requires": {} - } } }, "@webassemblyjs/ast": { @@ -9473,6 +10158,11 @@ "version": "8.2.0", "dev": true }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, "agent-base": { "version": "6.0.2", "dev": true, @@ -9544,6 +10234,66 @@ "version": "2.2.0", "dev": true }, + "archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "arg": { "version": "5.0.2", "dev": true @@ -9578,8 +10328,7 @@ "dev": true }, "async": { - "version": "3.2.4", - "dev": true + "version": "3.2.4" }, "async-validator": { "version": "4.2.5" @@ -9663,12 +10412,10 @@ } }, "balanced-match": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" }, "base64-js": { - "version": "1.5.1", - "dev": true + "version": "1.5.1" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -9677,9 +10424,33 @@ "tweetnacl": "^0.14.3" } }, + "big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, "binary-extensions": { "version": "2.2.0", "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } }, "blob-util": { "version": "2.0.2", @@ -9695,7 +10466,6 @@ }, "brace-expansion": { "version": "1.1.11", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9720,20 +10490,28 @@ }, "buffer": { "version": "5.7.1", - "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "buffer-crc32": { - "version": "0.2.13", - "dev": true + "version": "0.2.13" }, "buffer-from": { "version": "1.1.2", "dev": true, "peer": true + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" }, "cachedir": { "version": "2.3.0", @@ -9751,6 +10529,15 @@ "version": "0.12.0", "dev": true }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, "chai": { "version": "4.3.7", "dev": true, @@ -9762,6 +10549,14 @@ "loupe": "^2.3.1", "pathval": "^1.1.1", "type-detect": "^4.0.5" + } + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "requires": { + "traverse": ">=0.3.0 <0.4" } }, "chalk": { @@ -9853,6 +10648,11 @@ "string-width": "^4.2.0" } }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, "color-convert": { "version": "2.0.1", "dev": true, @@ -9882,9 +10682,19 @@ "version": "1.8.2", "dev": true }, + "compress-commons": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.2.tgz", + "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==", + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, "concat-map": { - "version": "0.0.1", - "dev": true + "version": "0.0.1" }, "convert-source-map": { "version": "1.9.0", @@ -9905,8 +10715,21 @@ } }, "core-util-is": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "crc32-stream": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.3.tgz", + "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==", + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + } }, "cross-spawn": { "version": "7.0.3", @@ -10067,6 +10890,43 @@ "version": "0.1.2", "dev": true }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "ecc-jsbn": { "version": "0.1.2", "dev": true, @@ -10114,7 +10974,6 @@ }, "end-of-stream": { "version": "1.4.4", - "dev": true, "requires": { "once": "^1.4.0" } @@ -10406,6 +11265,32 @@ "dev": true, "peer": true }, + "exceljs": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.4.0.tgz", + "integrity": "sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==", + "requires": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.10.1", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "dependencies": { + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + } + } + }, "execa": { "version": "4.1.0", "dev": true, @@ -10445,6 +11330,15 @@ "extsprintf": { "version": "1.3.0", "dev": true + }, + "fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "requires": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + } }, "fast-deep-equal": { "version": "3.1.3", @@ -10555,6 +11449,11 @@ "mime-types": "^2.1.12" } }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, "fraction.js": { "version": "4.2.0", "dev": true @@ -10562,6 +11461,11 @@ "from": { "version": "0.1.7", "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { "version": "9.1.0", @@ -10578,8 +11482,28 @@ "dev": true }, "fs.realpath": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } }, "function-bind": { "version": "1.1.1", @@ -10616,7 +11540,6 @@ }, "glob": { "version": "7.2.3", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10675,8 +11598,7 @@ } }, "graceful-fs": { - "version": "4.2.10", - "dev": true + "version": "4.2.10" }, "grapheme-splitter": { "version": "1.0.4", @@ -10744,8 +11666,7 @@ } }, "ieee754": { - "version": "1.2.1", - "dev": true + "version": "1.2.1" }, "ignore": { "version": "5.2.4", @@ -10755,6 +11676,11 @@ "version": "0.5.5", "dev": true, "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "immutable": { "version": "4.1.0", @@ -10778,15 +11704,13 @@ }, "inflight": { "version": "1.0.6", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { - "version": "2.0.4", - "dev": true + "version": "2.0.4" }, "ini": { "version": "2.0.0", @@ -10868,6 +11792,11 @@ "is-what": { "version": "3.14.1", "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "isexe": { "version": "2.0.0", @@ -11026,6 +11955,46 @@ "verror": "1.10.0" } }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "klona": { "version": "2.0.5", "dev": true @@ -11033,6 +12002,43 @@ "lazy-ass": { "version": "1.6.0", "dev": true + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } }, "less": { "version": "4.1.3", @@ -11064,6 +12070,19 @@ "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" }, "listr2": { "version": "3.14.0", @@ -11109,6 +12128,61 @@ "version": "4.0.8", "dev": true }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, "lodash.merge": { "version": "4.6.2", "dev": true @@ -11116,6 +12190,16 @@ "lodash.once": { "version": "4.1.1", "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, "log-symbols": { "version": "4.1.0", @@ -11246,14 +12330,20 @@ }, "minimatch": { "version": "3.1.2", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.7", - "dev": true + "version": "1.2.7" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } }, "ms": { "version": "2.1.2", @@ -11296,8 +12386,7 @@ "dev": true }, "normalize-path": { - "version": "3.0.0", - "dev": true + "version": "3.0.0" }, "normalize-range": { "version": "0.1.2", @@ -11326,7 +12415,6 @@ }, "once": { "version": "1.4.0", - "dev": true, "requires": { "wrappy": "1" } @@ -11375,6 +12463,11 @@ "aggregate-error": "^3.0.0" } }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parent-module": { "version": "1.0.1", "dev": true, @@ -11398,8 +12491,7 @@ "dev": true }, "path-is-absolute": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "path-key": { "version": "3.1.1", @@ -11450,12 +12542,6 @@ "requires": { "@vue/devtools-api": "^6.4.5", "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.13.11", - "requires": {} - } } }, "postcss": { @@ -11491,6 +12577,11 @@ "pretty-bytes": { "version": "5.6.0", "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "proxy-from-env": { "version": "1.0.0", @@ -11542,6 +12633,42 @@ "peer": true, "requires": { "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "readdirp": { @@ -11648,7 +12775,6 @@ }, "rimraf": { "version": "3.0.2", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -11675,8 +12801,7 @@ } }, "safe-buffer": { - "version": "5.2.1", - "dev": true + "version": "5.2.1" }, "safer-buffer": { "version": "2.1.2", @@ -11727,6 +12852,11 @@ "requires": { "randombytes": "^2.1.0" } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "shebang-command": { "version": "2.0.0", @@ -11779,6 +12909,14 @@ "dev": true, "requires": { "through": "2" + } + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" } }, "sshpk": { @@ -11842,6 +12980,14 @@ "duplexer": "~0.1.1" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-natural-compare": { "version": "3.0.1", "dev": true @@ -11896,6 +13042,18 @@ "version": "2.2.1", "dev": true, "peer": true + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } }, "terser": { "version": "5.16.1", @@ -11953,7 +13111,6 @@ }, "tmp": { "version": "0.2.1", - "dev": true, "requires": { "rimraf": "^3.0.0" } @@ -11983,6 +13140,11 @@ "requires": { "punycode": "^2.1.1" } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" }, "ts-api-utils": { "version": "1.0.3", @@ -12154,6 +13316,57 @@ "version": "4.0.0", "dev": true }, + "unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "update-browserslist-db": { "version": "1.0.10", "dev": true, @@ -12178,12 +13391,10 @@ } }, "util-deprecate": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" }, "uuid": { - "version": "8.3.2", - "dev": true + "version": "8.3.2" }, "verror": { "version": "1.10.0", @@ -12234,6 +13445,12 @@ "@vue/server-renderer": "3.2.45", "@vue/shared": "3.2.45" } + }, + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "requires": {} }, "vue-eslint-parser": { "version": "9.3.2", @@ -12385,6 +13602,16 @@ "isexe": "^2.0.0" } }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, "word-wrap": { "version": "1.2.3", "dev": true @@ -12399,21 +13626,33 @@ } }, "wrappy": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" }, "ws": { "version": "8.11.0", "dev": true, "requires": {} }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, "xml-name-validator": { "version": "4.0.0", "dev": true }, "xmlchars": { - "version": "2.2.0", - "dev": true + "version": "2.2.0" }, "yallist": { "version": "4.0.0", @@ -12430,6 +13669,35 @@ "yocto-queue": { "version": "0.1.0", "dev": true + }, + "zip-stream": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.1.tgz", + "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==", + "requires": { + "archiver-utils": "^3.0.4", + "compress-commons": "^4.1.2", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "archiver-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-3.0.4.tgz", + "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==", + "requires": { + "glob": "^7.2.3", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + } + } } } } diff --git a/package.json b/package.json index 0f208cb..7308c77 100644 --- a/package.json +++ b/package.json @@ -16,16 +16,20 @@ "@amap/amap-jsapi-loader": "^1.0.1", "@ctrl/tinycolor": "^4.0.2", "@element-plus/icons-vue": "^2.0.10", + "@vue-office/excel": "^1.7.11", "@vueuse/core": "^9.7.0", "axios": "^1.2.1", "dayjs": "^1.11.13", "element-plus": "^2.8.3", + "exceljs": "^4.4.0", "js-base64": "^3.7.5", "md5": "^2.3.0", "pinia": "^2.0.26", "vue": "^3.2.45", + "vue-demi": "^0.14.6", "vue-i18n": "^9.8.0", - "vue-router": "^4.1.6" + "vue-router": "^4.1.6", + "xlsx": "^0.18.5" }, "devDependencies": { "@babel/cli": "^7.19.3", diff --git a/src/api/fysp/dataproductApi.js b/src/api/fysp/dataproductApi.js new file mode 100644 index 0000000..994fc55 --- /dev/null +++ b/src/api/fysp/dataproductApi.js @@ -0,0 +1,34 @@ +import { Base64 } from 'js-base64'; +import { $fysp } from '../index'; + +export default { + /** + * 涓嬭浇鏁版嵁浜у搧 + */ + downloadProduct(area, type, forceUpdate) { + return $fysp + .post(`dataProduct/download?`, area, { + responseType: 'blob', + params: { type, forceUpdate } + }) + .then((res) => { + // 鏂囨。鏈敓鎴愶紝宸插惎鍔ㄦ枃妗g敓鎴愬悗鍙颁换鍔� + if (res.data.type == 'application/json') { + return false; + } + // 鏂囨。宸插瓨鍦紝杩斿洖鏂囦欢鏁版嵁娴� + else { + return res.data + // const name = Base64.decode(res.headers.get('filename')); + // const url = window.URL.createObjectURL(res.data); + // const link = document.createElement('a'); + // link.href = url; + // link.setAttribute('download', name); + // document.body.appendChild(link); + // link.click(); + // document.body.removeChild(link); + // window.URL.revokeObjectURL(url); + } + }); + } +}; diff --git a/src/api/fysp/subtaskApi.js b/src/api/fysp/subtaskApi.js new file mode 100644 index 0000000..bf890c2 --- /dev/null +++ b/src/api/fysp/subtaskApi.js @@ -0,0 +1,20 @@ +import { $fysp } from '../index'; + +export default { + /** + * 璋冩暣瀛愪换鍔′俊鎭� + * @param {Object} subtask + * @returns + */ + adjustSubtask(subtask) { + return $fysp.post(`subtask/adjust`, subtask).then((res) => res.data); + }, + + putSubtasks(subtaskList) { + return $fysp.put(`subtask/addlist`, subtaskList).then((res) => res.data); + }, + + deleteSubtask(stGuid) { + return $fysp.delete(`subtask/${stGuid}`).then((res) => res.data); + } +}; diff --git a/src/api/index.js b/src/api/index.js index 243b99c..231eaba 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -11,7 +11,7 @@ let ip2_file = 'https://fyami.com.cn/'; if (debug) { - ip1 = 'http://192.168.0.138:8080/'; + ip1 = 'http://192.168.0.138:9001/'; // ip1_file = 'http://192.168.0.138:8080/'; // ip2 = 'http://192.168.0.138:8080/'; // ip2_file = 'https://fyami.com.cn/'; diff --git a/src/components.d.ts b/src/components.d.ts index 124cacb..37e7435 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -12,18 +12,23 @@ BasePanelLayout: typeof import('./components/core/BasePanelLayout.vue')['default'] CompQuickSet: typeof import('./components/search-option/CompQuickSet.vue')['default'] Content: typeof import('./components/core/Content.vue')['default'] + ElAffix: typeof import('element-plus/es')['ElAffix'] ElAside: typeof import('element-plus/es')['ElAside'] ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElBadge: typeof import('element-plus/es')['ElBadge'] ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] ElButton: typeof import('element-plus/es')['ElButton'] + ElCalendar: typeof import('element-plus/es')['ElCalendar'] ElCard: typeof import('element-plus/es')['ElCard'] + ElCascader: typeof import('element-plus/es')['ElCascader'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCol: typeof import('element-plus/es')['ElCol'] ElCollapse: typeof import('element-plus/es')['ElCollapse'] ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElContainer: typeof import('element-plus/es')['ElContainer'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] ElDialog: typeof import('element-plus/es')['ElDialog'] @@ -36,6 +41,7 @@ ElIcon: typeof import('element-plus/es')['ElIcon'] ElImage: typeof import('element-plus/es')['ElImage'] ElInput: typeof import('element-plus/es')['ElInput'] + ElLink: typeof import('element-plus/es')['ElLink'] ElMain: typeof import('element-plus/es')['ElMain'] ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] @@ -44,6 +50,7 @@ ElPopover: typeof import('element-plus/es')['ElPopover'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSegmented: typeof import('element-plus/es')['ElSegmented'] ElSelect: typeof import('element-plus/es')['ElSelect'] ElSpace: typeof import('element-plus/es')['ElSpace'] ElStep: typeof import('element-plus/es')['ElStep'] @@ -55,6 +62,7 @@ ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] ElText: typeof import('element-plus/es')['ElText'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTree: typeof import('element-plus/es')['ElTree'] ElUpload: typeof import('element-plus/es')['ElUpload'] Footer: typeof import('./components/core/Footer.vue')['default'] diff --git a/src/components/core/SiderMenu.vue b/src/components/core/SiderMenu.vue index abe2269..4e53868 100644 --- a/src/components/core/SiderMenu.vue +++ b/src/components/core/SiderMenu.vue @@ -77,7 +77,7 @@ data() { return { popVisible: false, - menuHeight: '800px', + menuHeight: '600px', title: '鐢熸�佺幆澧冪嚎涓婄洃绠�', subTitle: '漏涓婃捣椋炵窘鐜繚绉戞妧鏈夐檺鍏徃', sysIndex: 0, @@ -139,7 +139,7 @@ this.navPage(...this.menuPath(this.menus[0])); }, mounted() { - // this.menuHeight = this.calMenuHeight(); + this.menuHeight = this.calMenuHeight(); } }; </script> @@ -179,7 +179,7 @@ .el-menu-vertical-demo:not(.el-menu--collapse) { /* width: 200px; */ min-height: 100vh; - /* max-height: 100vh; */ + max-height: 100vh; } .el-menu--collapse { diff --git a/src/components/form/FYForm.vue b/src/components/form/FYForm.vue index f8654cc..ef4cbb8 100644 --- a/src/components/form/FYForm.vue +++ b/src/components/form/FYForm.vue @@ -120,15 +120,13 @@ 'submit', formObj, () => { - loading.value = false; resolve(); }, (err) => { - loading.value = false; reject(err ? err : ''); } ); - }); + }).finally(() => (loading.value = false)); } //鍙栨秷鎸夐挳瑙﹀彂 diff --git a/src/components/list-item/ItemSubTask.vue b/src/components/list-item/ItemSubTask.vue index 58abf2b..ac1f3ab 100644 --- a/src/components/list-item/ItemSubTask.vue +++ b/src/components/list-item/ItemSubTask.vue @@ -1,27 +1,68 @@ <template> <div class="wrapper"> - <div> - <el-text truncated class="w-250px" size="large">{{ item.name }}</el-text> - </div> - <div> - <el-text truncated class="w-250px" size="small">{{ item.scenseaddress }}</el-text> - </div> - <div> - <el-text truncated size="small">{{ - $fm.formatYMDH(item.planstarttime) - }}</el-text> - </div> - <div> - <el-text truncated class="w-250px" size="small">{{ - item.executorrealtimes - }}</el-text> - </div> - <el-row justify="end" style="margin-top: 4px"> - <slot :item="item"></slot> + <el-row justify="space-between" class="m-t-4"> + <el-col :span="20"> + <div class="text-title"> + <el-tag + size="small" + :type="statusType.type" + effect="plain" + class="m-r-4 m-b-4" + > + <el-space :size="4"> + <el-icon size="16"> + <component :is="statusType.icon"></component> + </el-icon> + {{ item.status }} + </el-space> + </el-tag> + {{ item.name }} + </div> + <div class="text-info"> + <div class="text-label"> + <el-icon class="m-r-4" size="16"><LocationInformation /></el-icon> + <span>浠诲姟鍦板潃锛�</span> + </div> + {{ item.scenseaddress }} + </div> + <div class="text-info"> + <div class="text-label"> + <!-- <el-icon><Clock /></el-icon> --> + <el-icon class="m-r-4" size="16"><AlarmClock /></el-icon> + <span>浠诲姟鏃堕棿锛�</span> + </div> + {{ $fm.formatYMD(item.planstarttime) }} + </div> + <div class="text-info"> + <div class="text-label"> + <el-icon class="m-r-4" size="16"><User /></el-icon> + 浠诲姟浜哄憳锛� + </div> + {{ item.executorrealtimes }} + </div> + <el-space class="m-t-4"> + <el-tag size="small" type="info" effect="" + >闂锛歿{ status.proNum }}</el-tag + > + <el-tag size="small" type="info" effect="" + >鏁存敼锛歿{ status.changeNum }}</el-tag + > + <el-tag size="small" :type="changePerType" effect="" + >鏁存敼鐜囷細{{ status.changePer }}</el-tag + > + </el-space> + </el-col> + <el-col :span="4"> + <slot :item="item"></slot> + </el-col> </el-row> </div> </template> <script setup> +import { ref, watch, computed } from 'vue'; +import taskApi from '@/api/fysp/taskApi'; +import ProCheckProxy from '@/views/fysp/check/ProCheckProxy'; + /** * 鐩戠瀵硅薄 */ @@ -31,12 +72,98 @@ default: () => {} } }); + +const loading = ref(false); +const proList = ref([]); +const status = ref({}); + +const statusType = computed(() => { + switch (props.item.status) { + case '鏈墽琛�': + return { + type: 'danger', + icon: 'WarningFilled' + }; + case '姝e湪鎵ц': + return { + type: 'success', + icon: 'Timer' + }; + case '宸茬粨鏉�': + return { + type: 'info', + icon: 'SuccessFilled' + }; + default: + return { + type: 'danger', + icon: 'Warning' + }; + } +}); + +const changePerType = computed(() => { + if (status.value.changeNum == 0) { + if (status.value.proNum == 0) { + return 'success'; + } else { + return 'danger'; + } + } else if (status.value.proNum == status.value.changeNum) { + return 'success'; + } else { + return 'warning'; + } +}); + +watch( + () => props.item, + (nV, oV) => { + if (nV != oV) { + fetchProblems(nV); + } + }, + { immediate: true } +); + +function fetchProblems(subtask) { + loading.value = true; + taskApi + .getProBySubtask(subtask.stguid) + .then((res) => { + proList.value = res; + status.value = ProCheckProxy.calProStatus(res); + }) + .finally(() => { + loading.value = false; + }); +} </script> <style scoped> .wrapper { /* width: 300px; */ + width: 100%; border: 1px solid var(--el-border-color); border-radius: var(--el-border-radius-base); padding: 4px 8px; } + +.text-title { + font-weight: var(--el-font-weight-primary); + color: var(--el-text-color-primary); + font-size: var(--el-font-size-medium); +} + +.text-info { + display: flex; + align-items: flex-start; + color: var(--el-text-color-secondary); + font-size: var(--el-font-size-small); +} + +.text-label { + display: flex; + align-items: center; + white-space: nowrap; +} </style> diff --git a/src/views/fysp/data-product/ProdProAnalysis.vue b/src/views/fysp/data-product/ProdProAnalysis.vue index 78b8c00..2a102cf 100644 --- a/src/views/fysp/data-product/ProdProAnalysis.vue +++ b/src/views/fysp/data-product/ProdProAnalysis.vue @@ -1,9 +1,11 @@ <template> - <div>DailyReport</div> + <BaseDataProduct product-type="3"></BaseDataProduct> </template> +<script setup> +/** + * 闂鏁存敼鍒嗘瀽 + */ +import BaseDataProduct from './components/BaseDataProduct.vue'; -<script> -export default { - name: 'DailyReport', -}; + </script> diff --git a/src/views/fysp/data-product/ProdProFollow.vue b/src/views/fysp/data-product/ProdProFollow.vue index 78b8c00..9819de8 100644 --- a/src/views/fysp/data-product/ProdProFollow.vue +++ b/src/views/fysp/data-product/ProdProFollow.vue @@ -1,9 +1,11 @@ <template> - <div>DailyReport</div> + <BaseDataProduct product-type="1"></BaseDataProduct> </template> +<script setup> +/** + * 闂鍔ㄦ�佽窡韪� + */ +import BaseDataProduct from './components/BaseDataProduct.vue'; -<script> -export default { - name: 'DailyReport', -}; + </script> diff --git a/src/views/fysp/data-product/ProdSceneReport.vue b/src/views/fysp/data-product/ProdSceneReport.vue index 78b8c00..c2d8d05 100644 --- a/src/views/fysp/data-product/ProdSceneReport.vue +++ b/src/views/fysp/data-product/ProdSceneReport.vue @@ -1,9 +1,3 @@ <template> - <div>DailyReport</div> + 鍦烘櫙鎶ュ憡绠$悊 </template> - -<script> -export default { - name: 'DailyReport', -}; -</script> diff --git a/src/views/fysp/data-product/ProdStandardJudge.vue b/src/views/fysp/data-product/ProdStandardJudge.vue index 78b8c00..257e617 100644 --- a/src/views/fysp/data-product/ProdStandardJudge.vue +++ b/src/views/fysp/data-product/ProdStandardJudge.vue @@ -1,9 +1,11 @@ <template> - <div>DailyReport</div> + <BaseDataProduct product-type="2"></BaseDataProduct> </template> +<script setup> +/** + * 瑙勮寖鎬ц瘎浼� + */ +import BaseDataProduct from './components/BaseDataProduct.vue'; -<script> -export default { - name: 'DailyReport', -}; + </script> diff --git a/src/views/fysp/data-product/components/BaseDataProduct.vue b/src/views/fysp/data-product/components/BaseDataProduct.vue new file mode 100644 index 0000000..b53953e --- /dev/null +++ b/src/views/fysp/data-product/components/BaseDataProduct.vue @@ -0,0 +1,353 @@ +<template> + <FYSearchBar ref="searchRef" @search="handleSearch"> + <template #options> + <!-- 鍖哄幙 --> + <FYOptionLocation + :allOption="false" + :level="3" + :checkStrictly="false" + v-model:value="formSearch.locations" + ></FYOptionLocation> + <!-- 鍦烘櫙绫诲瀷 --> + <FYOptionScene + :allOption="false" + :type="2" + v-model:value="formSearch.scenetype" + ></FYOptionScene> + <!-- 鏃堕棿 --> + <FYOptionTime + :initValue="false" + type="month" + v-model:value="formSearch.time" + ></FYOptionTime> + </template> + <template #buttons> + <CompReportDownloadDialog + name="闂涓庢暣鏀规眹鎬诲垎鏋愪笌鍔ㄦ�佽窡韪竻鍗�" + :locations="formSearch.locations" + :scenetype="formSearch.scenetype" + :time="formSearch.time" + @submit="handleSearch" + ></CompReportDownloadDialog> + </template> + </FYSearchBar> + <el-form ref="expandRef" :inline="true"> + <CompQuickSet @quick-set="setOptions"></CompQuickSet> + </el-form> + <el-space ref="segmentedRef"> + <el-segmented + :model-value="activeSheet" + :options="sheetNames" + @change="tabChange" + /> + </el-space> + <el-table + ref="tableRef" + :data="activeExcelData.data" + v-loading="loading" + table-layout="auto" + size="small" + :height="tableHeight" + fit + flexible + stripe + border + > + <template v-if="activeExcelData.head"> + <el-table-column + v-for="(item, index) in activeExcelData.head" + :key="index" + :prop="item.name" + :label="item.name" + > + <template v-if="item.children" #default="{ row }"> + <span v-html="row[item.name]"></span> + <el-table-column + v-for="(item1, index1) in item.children" + :key="index1" + :prop="item1.name" + :label="item1.name" + > + <template v-if="item1.children" #default="{ row1 }"> + <span v-html="row1[item1.name]"></span> + <el-table-column + v-for="(item2, index2) in item1.children" + :key="index2" + :prop="item2.name" + :label="item2.name" + > + <template v-if="item2.children" #default="{ row2 }"> + <span v-html="row2[item2.name]"></span> + </template> + </el-table-column> + </template> + </el-table-column> + </template> + </el-table-column> + </template> + </el-table> + <!-- <vue-office-excel + :src="excel" + :style="'height: ' + tableHeight" + @rendered="renderedHandler" + @error="errorHandler" + /> --> +</template> +<script setup> +/** + * 闂鍔ㄦ�佽窡韪� + */ +//寮曞叆VueOfficeExcel缁勪欢 +import VueOfficeExcel from '@vue-office/excel'; +//寮曞叆鐩稿叧鏍峰紡 +import '@vue-office/excel/lib/index.css'; + +import { ref, onMounted } from 'vue'; +import dayjs from 'dayjs'; +import * as XLSX from 'xlsx'; +import * as ExcelJS from 'exceljs'; +import dataproductApi from '@/api/fysp/dataproductApi'; +import CompReportDownloadDialog from './CompReportDownloadDialog.vue'; + +const emit = defineEmits(['search']); + +const props = defineProps({ + // 鏁版嵁浜у搧绫诲瀷锛�1锛氶棶棰樺姩鎬佽窡韪紱2锛氳鑼冩�ц瘎浼帮紱3锛氶棶棰樻暣鏀瑰垎鏋� + productType: Number, + // 鍦ㄦ暟鎹睍绀轰箣鍓嶏紝鍋氶澶勭悊锛堜富瑕佹槸澶勭悊鍚堝苟琛ㄥご锛� + beforeDataShow: { + type: Function, + default: (data) => { + return data; + } + }, + // 鏁版嵁琛ㄦ牸鐨勮〃澶磋鏁� + headNum: { + type: Number, + default: 1 + } +}); + +const formSearch = ref({ + locations: {}, + scenetype: {}, + time: dayjs().add(-1, 'M').date(1).toDate() +}); +const loading = ref(false); +const tableHeight = ref('500'); +let workbook; +const sheetNames = ref(); +const excelDatas = ref(new Map()); +const activeSheet = ref(); +const activeExcelData = ref({}); +const excel = ref(''); + +const searchRef = ref(null); +const expandRef = ref(null); +const segmentedRef = ref(null); + +function setOptions(param) { + formSearch.value.locations = param.locations; + formSearch.value.scenetype = param.scenetype; + formSearch.value.sourceType = param.sourceType; + handleSearch(false); +} + +function tabChange(tabName) { + activeSheet.value = tabName; + getTable(activeSheet.value); +} + +function handleSearch(forceUpdate) { + const locations = formSearch.value.locations; + const time = formSearch.value.time; + const scenetype = formSearch.value.scenetype; + const area = { + provincecode: locations.pCode, + provincename: locations.pName, + citycode: locations.cCode, + cityname: locations.cName, + districtcode: locations.dCode, + districtname: locations.dName, + starttime: dayjs(time).format('YYYY-MM-DD HH:mm:ss'), + scensetypeid: scenetype.value + }; + + excelDatas.value.clear(); + loading.value = true; + dataproductApi + .downloadProduct(area, props.productType, forceUpdate ? forceUpdate : false) + .then(async (res) => { + // const data = new Uint8Array(res); + res.arrayBuffer().then((data) => { + workbook = XLSX.read(data, { type: 'array' }); + sheetNames.value = workbook.SheetNames; + activeSheet.value = sheetNames.value[0]; + getTable(activeSheet.value); + }); + + // const workbook = new ExcelJS.Workbook(); + // await workbook.xlsx.load(res); + // workbook.eachSheet(function (worksheet, sheetId) { + // console.log(worksheet.name); + // }); + // const sheet1 = workbook.worksheets[0] + // const row = sheet1.getRow(1) + // console.log(row); + + // console.log(res); + // console.log(new ArrayBuffer(res)); + // res.arrayBuffer().then(r=>{ + // excel.value = r + // }) + + // excel.value = new ArrayBuffer(res) + }) + .finally(() => (loading.value = false)); +} + +function getTable(sheetName) { + if (!excelDatas.value.has(sheetName)) { + const worksheet = workbook.Sheets[sheetName]; + // const tableData = XLSX.utils.sheet_to_json(worksheet, { header: 3 }); + let tableData = XLSX.utils.sheet_to_txt(worksheet); + // console.log(tableData); + + const regx = new RegExp(/"([^"]|\n)+"/, 'g'); + let matchTxt = tableData.match(regx); + + if (matchTxt) { + matchTxt.forEach((txt) => { + let newTxt = txt.replace(new RegExp(/\n/, 'g'), '<br />'); + newTxt = newTxt.replace(new RegExp(/"/, 'g'), ''); + tableData = tableData.replace(txt, newTxt); + }); + // console.log(tableData); + } + + const t = strToTableObj(tableData); + // console.log(head); + // console.log(data); + excelDatas.value.set(sheetName, t); + } + activeExcelData.value = excelDatas.value.get(sheetName); + + // activeExcelData.value = props.beforeDataShow(tableData); +} + +// 鏍规嵁琛ㄥご鐨勮鏁帮紝鍚堝苟琛ㄥご +function combineTableHead(excelData) { + if (excelData.length < props.headNum) return; + + // const newHead = {}; + // excelData.splice(0, props.headNum).forEach((row) => { + // for (const key in row) { + // console.log(key); + // } + // }); +} + +function calcTableHeight() { + const h1 = searchRef.value.$el.offsetHeight; + const h2 = expandRef.value.$el.offsetHeight; + const h3 = segmentedRef.value.$el.offsetHeight; + + const h = h1 + h2 + h3; + return `calc(100vh - ${h}px - 60px - var(--el-main-padding) * 2)`; +} + +function renderedHandler() { + console.log('娓叉煋瀹屾垚'); +} +function errorHandler(e) { + console.log('娓叉煋澶辫触', e); +} + +function strToTableObj(data, headNum) { + const rows = data.split('\n').map((r) => r.split('\t')); + if (rows.length == 0) return; + + let header = 1; + for (let i = 1; i < rows.length; i++) { + const row = rows[i]; + if (row.length == 0) { + break; + } + if (row[0] == '') { + header++; + } else { + break; + } + } + + if (rows.length < header) { + throw new Error(`鏂囦欢琛屾暟灏忎簬${header}`); + } + // 琛ㄥご + let lastHead = []; + // 灞炴�у悕 + const dataKeys = []; + let offset = 1; + for (let i = header - 1; i >= 0; i--) { + const row = rows[i]; + if (lastHead.length == 0) { + row.forEach((r, y) => { + lastHead.push({ name: r }); + dataKeys.push(r); + }); + } else { + const newHead = []; + row.forEach((r, y) => { + if (dataKeys[y] == '') { + dataKeys[y] = r; + } + + const last = lastHead[y]; + if (!last) { + console.log(last); + } + if (last.name == '') { + newHead.push({ name: r }); + offset++; + } else if (r != '') { + newHead.push({ + name: r, + children: [last] + }); + offset = 1; + } else { + newHead.push({ name: '' }); + let _index = newHead.length - 1 - offset; + _index = _index >= 0 ? _index : 0; + newHead[_index].children.push(last); + offset++; + } + }); + lastHead = newHead; + } + } + const heads = []; + lastHead.forEach((h) => { + if (h && h.name != '') { + heads.push(h); + } + }); + + const tableData = []; + for (let i = header; i < rows.length; i++) { + const row = rows[i]; + const data = {}; + row.forEach((r, y) => { + data[dataKeys[y]] = r; + }); + tableData.push(data); + } + + return { head: heads, data: tableData }; +} + +onMounted(() => { + tableHeight.value = calcTableHeight(); + // handleSearch() +}); +</script> diff --git a/src/views/fysp/data-product/components/CompReportDownloadDialog.vue b/src/views/fysp/data-product/components/CompReportDownloadDialog.vue new file mode 100644 index 0000000..985f669 --- /dev/null +++ b/src/views/fysp/data-product/components/CompReportDownloadDialog.vue @@ -0,0 +1,80 @@ +<template> + <el-button icon="Download" type="success" @click="dialogVisible = true" + >瀵煎嚭鎶ュ憡</el-button + > + <el-dialog v-model="dialogVisible" :title="name" width="500"> + <el-text tag="b" size="large">鏁版嵁鑼冨洿纭</el-text> + <el-text tag="div">鍖哄煙锛歿{ locationText }}</el-text> + <el-text tag="div">绫诲瀷锛歿{ scenetype.label }}</el-text> + <el-text tag="div">鏃堕棿锛歿{ timeText }}</el-text> + <template #footer> + <div class="dialog-footer"> + <el-row align="middle"> + <el-checkbox v-model="forceUpdate" label="寮哄埗鐢熸垚鏂版姤鍛�" /> + <el-tooltip placement="bottom-start" effect="light"> + <template #content> + <el-text tag="b" size="small">涓嶅嬀閫夛細</el-text><br /> + <el-text size="small" + >涓嶅嬀閫夋椂锛屽鏋滃凡鐢熸垚杩囩浉鍚屽尯鍩熺殑鎶ュ憡锛屽垯鐩存帴鑾峰彇璇ヤ唤鎶ュ憡璁板綍</el-text + ><br /> + <el-text tag="b" size="small">鍕鹃�夛細</el-text><br /> + <el-text size="small" + >鍕鹃�夋椂锛屾棤璁烘槸鍚︽湁鍘嗗彶璁板綍锛岄兘浼氬惎鍔ㄦ姤鍛婄敓鎴愪换鍔¤鐩栨棫璁板綍锛屽彲鍦ㄥ悗鍙颁换鍔$晫闈㈡煡鐪嬩换鍔¤繘搴�</el-text + ><br /> + </template> + <el-icon + class="m-l-8 cursor-p" + :size="16" + color="var(--el-color-warning)" + ><QuestionFilled + /></el-icon> + </el-tooltip> + </el-row> + <div> + <el-button @click="dialogVisible = false">鍙栨秷</el-button> + <el-button type="primary" @click="handleSubmit">纭畾</el-button> + </div> + </div> + </template> + </el-dialog> +</template> + +<script> +import dayjs from 'dayjs'; + +export default { + props: ['name', 'locations', 'time', 'scenetype'], + emits: ['submit'], + data() { + return { + dialogVisible: false, + forceUpdate: false + }; + }, + computed: { + locationText() { + const loc = this.locations; + let text = ''; + text = loc.pName == loc.cName ? loc.pName : loc.pName + loc.cName; + text += loc.dName; + return text; + }, + timeText() { + return dayjs(this.time).format('YYYY骞碝M鏈�'); + } + }, + methods: { + handleSubmit() { + this.$emit('submit', this.forceUpdate); + } + } +}; +</script> +<style scoped> +.dialog-footer { + display: flex; + justify-content: space-between; + align-items: center; + gap: 2px; +} +</style> diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue index 68efe34..5685aa5 100644 --- a/src/views/fysp/task/TaskManage.vue +++ b/src/views/fysp/task/TaskManage.vue @@ -39,24 +39,28 @@ <el-tabs model-value="first"> <el-tab-pane label="鐩戠璁″垝" name="first"> <el-row> - <el-col :span="curSubTaskList.length > 0 ? 16 : 24"> + <el-col :span="curSubTaskList ? 16 : 24"> <CompMonitorPlan + ref="planRef" :task="curTask.data" @date-change="onDateChange" ></CompMonitorPlan> </el-col> - <el-col v-if="curSubTaskList.length > 0" :span="8"> + <el-col v-if="curSubTaskList" :span="8"> <CompSubTaskList - :data="curSubTaskList" + create + v-model="curSubTaskList" + :loading="subTaskLoading" height="56vh" @add="subTaskDrawer = true" + @submit="handleSubtaskSubmit" ></CompSubTaskList> </el-col> </el-row> </el-tab-pane> - <el-tab-pane label="鐩戠鍦板浘" name="second"> + <!-- <el-tab-pane label="鐩戠鍦板浘" name="second"> <CompTaskMap></CompTaskMap> - </el-tab-pane> + </el-tab-pane> --> </el-tabs> </el-row> <el-divider></el-divider> @@ -91,6 +95,7 @@ <CompDayTask :day-task="curDayTask" :mObjList="curMonitorObjList" + @submit="handleSubtaskSubmit" ></CompDayTask> </el-drawer> <el-dialog @@ -177,7 +182,8 @@ // 褰撳墠閫夋嫨鐨勬棩浠诲姟 curDayTask: {}, // 褰撳墠閫夋嫨鐨勬棩浠诲姟涓嬬殑瀛愪换鍔� - curSubTaskList: [], + curSubTaskList: undefined, + subTaskLoading: false, // 鎬讳换鍔℃柊澧炲脊鍑烘 topTaskAddVisible: false }; @@ -238,12 +244,12 @@ this.task = task; this.sideLoading = false; this.mainLoading = true; - this.curSubTaskList = [] + this.curSubTaskList = undefined; + this.curTask = task; taskApi .fetchMonitorObjectVersion(task.data.tguid) .then((res) => { this.curMonitorObjList = res; - this.curTask = task; }) .finally(() => { this.mainLoading = false; @@ -268,11 +274,19 @@ }); }, onDateChange(dayTask) { - // this.subTaskDrawer = true; - this.curDayTask = dayTask; - taskApi.fetchSubtaskByDayTask(dayTask.guid).then((res) => { - this.curSubTaskList = res; - }); + if (dayTask) { + this.subTaskLoading = true; + // this.subTaskDrawer = true; + this.curDayTask = dayTask; + taskApi + .fetchSubtaskByDayTask(dayTask.guid) + .then((res) => { + this.curSubTaskList = res; + }) + .finally(() => (this.subTaskLoading = false)); + } else { + this.curSubTaskList = []; + } }, navToTaskCreate(value) { this.topTaskAddVisible = false; @@ -282,6 +296,12 @@ task: encodeURIComponent(JSON.stringify(value)) } }); + }, + handleSubtaskSubmit() { + this.subTaskLoading = true; + this.$refs.planRef + .fetchDayTasks() + .finally(() => (this.subTaskLoading = false)); } }, mounted() { diff --git a/src/views/fysp/task/TaskProxy.js b/src/views/fysp/task/TaskProxy.js index 076fcbb..7433661 100644 --- a/src/views/fysp/task/TaskProxy.js +++ b/src/views/fysp/task/TaskProxy.js @@ -4,5 +4,28 @@ */ ceateSubTask(){ + }, + + /** + * 鏍规嵁澶氶�変笅鎷夋鐨勯�夐」鍊硷紝杩斿洖浠诲姟鎵ц浜哄璞� + * @returns + */ + getExecutors(data, executorOptions) { + const ids = []; + const uNames = []; + const rNames = []; + executorOptions.forEach((e) => { + const index = data.indexOf(e.value); + if (index != -1) { + ids.push(e.data.guid); + uNames.push(e.data.acountname); + rNames.push(e.data.realname); + } + }); + return { + id: ids.join('#'), + uName: uNames.join('#'), + rName: rNames.join('#') + }; } } \ No newline at end of file diff --git a/src/views/fysp/task/components/CompDayTask.vue b/src/views/fysp/task/components/CompDayTask.vue index db5bab8..15a2797 100644 --- a/src/views/fysp/task/components/CompDayTask.vue +++ b/src/views/fysp/task/components/CompDayTask.vue @@ -9,56 +9,40 @@ :data="seletedSceneList" :dayTask="dayTask" @delete="deleteScene" + @submit="createSubtasks" ></CompSubTaskSelect> <div> <!-- <el-scrollbar height="50vh"> --> - <CompMonitorObj :data="curMonitorObjList" height="50vh"> - <template #default="{ item }"> - <el-button - v-if="item.select" - size="small" - type="info" - plain - disabled - icon="select" - >閫夋嫨</el-button - > - <el-button - v-else - size="small" - type="primary" - plain - @click="selectScene(item)" - >閫夋嫨</el-button - > - </template> - </CompMonitorObj> + <CompMonitorObj :data="curMonitorObjList" height="50vh"> + <template #default="{ item }"> + <el-button + v-if="item.select" + size="small" + type="info" + plain + disabled + icon="select" + >閫夋嫨</el-button + > + <el-button + v-else + size="small" + type="primary" + plain + @click="selectScene(item)" + >閫夋嫨</el-button + > + </template> + </CompMonitorObj> <!-- </el-scrollbar> --> </div> </el-col> <el-col :span="8"> - <el-row justify="space-between"> - <el-text>鍗曟棩璁″垝</el-text> - <el-button type="success" size="small" @click="editTask" - >鏂板</el-button - > - </el-row> - <el-divider /> - <div> - <el-scrollbar :height="height"> - <ItemSubTask - v-for="stask in curSubTaskList" - :key="stask.guid" - :item="stask" - > - <template #default="{ item }"> - <el-button type="danger" size="small" @click="editTask" - >绉婚櫎</el-button - > - </template> - </ItemSubTask> - </el-scrollbar> - </div> + <CompSubTaskList + v-model="curSubTaskList" + :height="height" + @submit="deleteSubtasks" + ></CompSubTaskList> </el-col> </el-row> </template> @@ -66,11 +50,15 @@ import { ref, watch, onMounted } from 'vue'; import { useCloned } from '@vueuse/core'; import { useRoute, useRouter } from 'vue-router'; +import { ElMessage, ElNotification, ElMessageBox } from 'element-plus'; import taskApi from '@/api/fysp/taskApi'; +import subtaskApi from '@/api/fysp/subtaskApi'; import TaskProxy from '../TaskProxy'; import CompMonitorObj from './CompMonitorObj.vue'; import CompSubTaskSelect from './CompSubTaskSelect.vue'; +import CompSubTaskList from './CompSubTaskList.vue'; +import dayjs from 'dayjs'; const route = useRoute(); @@ -79,6 +67,8 @@ dayTask: Object, mObjList: Array }); + +const emit = defineEmits(['submit']) /*************************** 鏁版嵁鍒濆鍖� ************************************/ // 宸℃煡瀛愪换鍔¢泦鍚� @@ -137,5 +127,62 @@ const index = seletedSceneList.value.indexOf(item); seletedSceneList.value.splice(index, 1); } + +function createSubtasks(executors) { + const dt = props.dayTask; + const subtasks = seletedSceneList.value.map((_) => { + const s = _.scene; + return { + // 涓婚敭鐢辨湇鍔$鍒涘缓 + stguid: undefined, + tguid: dt.tsGuid, + tsguid: dt.guid, + name: `${s.name}宸℃煡`, + typeno: 1, + type: '宸℃煡', + provincecode: s.provincecode, + provincename: s.provincename, + citycode: s.citycode, + cityname: s.cityname, + districtcode: s.districtcode, + districtname: s.districtname, + scensename: s.name, + scenseid: s.guid, + scenseaddress: s.location, + planstarttime: dt.date, + planendtime: dayjs(dt.date).endOf('day').set('millisecond', 0).toDate(), + deployerguid: 'rAR0A4gJdlOZEqZs', + deployerusername: 'ccheck', + deployerrealname: '鏁存敼瀹℃牳', + executorguids: executors.ids, + executorusernames: executors.uName, + executorrealtimes: executors.rName, + status: '鏈墽琛�', + remark: undefined + }; + }); + + // 鏇存柊鍦烘櫙鐩戠娆℃暟 + seletedSceneList.value.forEach((s) => { + s.extension1 = s.extension1 ? parseInt(s.extension1) + 1 + '' : '1'; + }); + taskApi.updateMonitorObject(seletedSceneList.value).then((res) => { + if (res > 0) { + subtaskApi.putSubtasks(subtasks).then((res) => { + seletedSceneList.value = []; + fetchSubTask(props.dayTask.guid); + ElMessage({ + message: '宸℃煡浠诲姟娣诲姞鎴愬姛', + type: 'success' + }); + emit('submit') + }); + } + }); +} + +function deleteSubtasks() { + emit('submit') +} </script> <style scoped></style> diff --git a/src/views/fysp/task/components/CompMonitorPlan.vue b/src/views/fysp/task/components/CompMonitorPlan.vue index e59c37a..5b86666 100644 --- a/src/views/fysp/task/components/CompMonitorPlan.vue +++ b/src/views/fysp/task/components/CompMonitorPlan.vue @@ -22,15 +22,15 @@ <el-row justify="space-between" class="m-t-16"> <el-space direction="vertical"> <el-text size="small">鎬昏</el-text> - <el-text>{{computeDayTask(data.day).totalTaskNum}}</el-text> + <el-text>{{ computeDayTask(data.day).totalTaskNum }}</el-text> </el-space> <el-space direction="vertical"> <el-text size="small">瀹屾垚</el-text> - <el-text>{{computeDayTask(data.day).completeTaskNum}}</el-text> + <el-text>{{ computeDayTask(data.day).completeTaskNum }}</el-text> </el-space> <el-space direction="vertical"> <el-text size="small">鏁存敼</el-text> - <el-text>{{computeDayTask(data.day).changedTaskNum}}</el-text> + <el-text>{{ computeDayTask(data.day).changedTaskNum }}</el-text> </el-space> <!-- <el-statistic title="鎬昏" :value="computeDayTask(data.day).totalTaskNum" /> <el-statistic title="瀹屾垚" :value="computeDayTask(data.day).completeTaskNum" /> @@ -55,9 +55,9 @@ default: () => {} } }); -const emit = defineEmits(['dateChange']) +const emit = defineEmits(['dateChange']); // 閫変腑鏃ユ湡 -const dateValue = ref(new Date()); +const dateValue = ref(); // 鏃ュ巻鏍囬 const title = computed(() => { if (props.task) { @@ -70,18 +70,27 @@ // 鏃ュ巻鑼冨洿 const startDay = computed(() => dayjs(props.task.starttime)); const endDay = computed(() => dayjs(props.task.endtime)); -const dateRange = computed(() => [startDay.value.toDate(), endDay.value.toDate()]); +const dateRange = computed(() => [ + startDay.value.toDate(), + endDay.value.toDate() +]); // const dateRange = computed(() => [new Date(2024, 4, 27), new Date(2024, 5, 30)]); // 鏃ユ湡鏄惁鍦ㄤ换鍔¤寖鍥村唴 function isDayEnable(day) { const _day = dayjs(day); - return _day.isSameOrAfter(startDay.value, 'day') && _day.isSameOrBefore(endDay.value, 'day'); + return ( + _day.isSameOrAfter(startDay.value, 'day') && + _day.isSameOrBefore(endDay.value, 'day') + ); } /********************** 鏃ユ湡鏍峰紡 *********************************/ function calendarDayClz(day) { - return 'calendar-day ' + (isDayEnable(day) ? 'calendar-day-enable' : 'calendar-day-disable'); + return ( + 'calendar-day ' + + (isDayEnable(day) ? 'calendar-day-enable' : 'calendar-day-disable') + ); } function getDay(day) { return day.split('-').splice(1, 2).join('-'); @@ -92,12 +101,16 @@ // 鑾峰彇鏃ヤ换鍔$粺璁′俊鎭� const dayTaskLoading = ref(false); const dayTaskList = ref([]); -function fetchDayTasks(topTaskId) { +function fetchDayTasks() { dayTaskLoading.value = true; - taskApi - .fetchDayTasks(topTaskId) + return taskApi + .fetchDayTasks(props.task.tguid) .then((res) => { dayTaskList.value = res; + // 濡傛灉宸查�夋棩鏈熷瓨鍦紝鍦ㄩ噸鏂拌幏鍙栨棩浠诲姟缁熻淇℃伅鍚庯紝鍐嶆瑙﹀彂鐐瑰嚮浜嬩欢 + if (dateValue.value) { + onDateChange(dateValue.value) + } }) .finally(() => (dayTaskLoading.value = false)); } @@ -119,11 +132,11 @@ } function onDateChange(e) { - const day = dayjs(e).format('YYYY-MM-DD') - const t = computeDayTask(day) - console.log(t); - - emit('dateChange', t) + if (isDayEnable(e)) { + const day = dayjs(e).format('YYYY-MM-DD'); + const t = computeDayTask(day); + emit('dateChange', t); + } } // 鎬讳换鍔$粺璁� @@ -141,12 +154,14 @@ watch( () => props.task, (nV) => { - if (nV.tguid) { - fetchDayTasks(nV.tguid); + if (nV && nV.tguid) { + fetchDayTasks(); } }, { immediate: true } ); + +defineExpose({ fetchDayTasks }); </script> <style scoped> .li-01 { @@ -185,7 +200,7 @@ border: 1px solid rgb(172, 165, 165); border-radius: 50%; */ padding: 8px; - height: var(--el-calendar-cell-width); + /* min-height: var(--el-calendar-cell-width); */ } .calendar-day-enable { diff --git a/src/views/fysp/task/components/CompSubTaskEdit.vue b/src/views/fysp/task/components/CompSubTaskEdit.vue new file mode 100644 index 0000000..f80a20a --- /dev/null +++ b/src/views/fysp/task/components/CompSubTaskEdit.vue @@ -0,0 +1,170 @@ +<template> + <FYForm + ref="formRef" + :form-info="formInfo" + :rules="rules" + :useCancel="true" + @submit="submit" + @cancel="cancel" + > + <template #form-item="{ formObj }"> + <el-form-item label="浠诲姟鍚嶇О" prop="name"> + <el-input disabled v-model="formObj.name" placeholder="浠诲姟鍚嶇О" /> + </el-form-item> + <el-form-item label="鍦烘櫙鍦板潃" prop="name"> + <el-input + disabled + v-model="formObj.scenseaddress" + placeholder="鍦烘櫙鍦板潃" + /> + </el-form-item> + <FYOptionTime + label="璁″垝鏃堕棿" + prop="planstarttime" + :initValue="false" + type="date" + v-model:value="formObj.planstarttime" + @change="handleTimeChange" + ></FYOptionTime> + <el-form-item label="鎵ц浜�" prop="_executors"> + <el-select + v-model="formObj._executors" + multiple + clearable + collapse-tags + placeholder="閫夋嫨鎵ц浜�" + :max-collapse-tags="3" + style="width: 300px" + > + <el-option + v-for="s in executorOptions" + :key="s.value" + :label="s.label" + :value="s.value" + /> + </el-select> + </el-form-item> + </template> + </FYForm> +</template> +<script setup> +import { ref, computed, onMounted, reactive } from 'vue'; +import subtaskApi from '@/api/fysp/subtaskApi'; +import userApi from '@/api/fysp/userApi'; +import dayjs from 'dayjs'; + +const props = defineProps({ + //鍩烘湰淇℃伅 + modelValue: Object, + //鏄垱寤烘垨鑰呮洿鏂� + create: Boolean +}); + +const emit = defineEmits(['submit', 'cancel', 'update:modelValue']); + +const formRef = ref(null); +// 浠诲姟鎵ц浜洪�夐」 +const executorOptions = ref([]); +const formInfo = computed(() => { + return { + ...props.modelValue, + _executors: props.modelValue + ? props.modelValue.executorguids.split('#') + : [] + }; +}); + +const rules = reactive({ + name: [ + { + required: true, + message: '鍦烘櫙鍚嶇О涓嶈兘涓虹┖', + trigger: 'blur' + } + ], + _scenetype: [ + { + required: true, + message: '鍦烘櫙绫诲瀷涓嶈兘涓虹┖', + trigger: 'change' + } + ] +}); + +function handleTimeChange(time) { + formRef.value.formObj.planendtime = dayjs(time).endOf('day').set('millisecond', 0) +} + +function getExecutors(data) { + const ids = []; + const uNames = []; + const rNames = []; + executorOptions.value.forEach((e) => { + const index = data._executors.indexOf(e.value); + if (index != -1) { + ids.push(e.data.guid); + uNames.push(e.data.acountname); + rNames.push(e.data.realname); + } + }); + return { + id: ids.join('#'), + uName: uNames.join('#'), + rName: rNames.join('#') + }; +} + +// 鍒涘缓鏂板満鏅� +function createScene(v, success, fail) { + // return sceneApi + // .createScene(v) + // .then(() => { + // emit('onSubmit', v); + // success(); + // }) + // .catch((err) => { + // fail(err); + // }); +} +// 鏇存柊鍦烘櫙 +function updateScene(v, success, fail) { + return subtaskApi + .adjustSubtask(v) + .then(() => { + emit('update:modelValue', v) + emit('submit', v); + success(); + }) + .catch((err) => { + fail(err); + }); +} +function submit(v, success, fail) { + const executors = getExecutors(v.value); + v.value.executorguids = executors.id + v.value.executorusernames = executors.uName + v.value.executorrealtimes = executors.rName + return props.create + ? createScene(v.value, success, fail) + : updateScene(v.value, success, fail); +} +function cancel() { + emit('cancel'); +} + +function initOptions() { + userApi.getUserByType(1).then((res) => { + executorOptions.value = res.map((v) => { + return { + label: v.realname, + value: v.guid, + data: v + }; + }); + }); +} + +onMounted(() => { + initOptions(); +}); +</script> diff --git a/src/views/fysp/task/components/CompSubTaskList.vue b/src/views/fysp/task/components/CompSubTaskList.vue index d6cc205..ef20ca8 100644 --- a/src/views/fysp/task/components/CompSubTaskList.vue +++ b/src/views/fysp/task/components/CompSubTaskList.vue @@ -1,42 +1,137 @@ <template> <el-row justify="space-between"> <el-text>鍗曟棩璁″垝</el-text> - <el-button type="success" size="small" @click="add">鏂板</el-button> + <el-button + v-show="create && data && data.length > 0" + type="success" + size="small" + @click="add" + >浠诲姟璋冩暣</el-button + > </el-row> <el-divider /> <div> - <el-scrollbar :height="height"> - <el-space fill direction="vertical"> + <el-scrollbar v-loading="loading" :height="height"> + <el-space + v-if="data && data.length > 0" + fill + :fill-ratio="100" + direction="vertical" + style="width: 100%" + > <ItemSubTask v-for="s in data" :key="s.guid" :item="s"> <template #default="{ item }"> - <el-button type="danger" size="small" @click="remove(item)" - >绉婚櫎</el-button - > + <el-space direction="vertical"> + <el-button + :disabled="item.status != '鏈墽琛�'" + plain + type="primary" + size="small" + @click="edit(item)" + >缂栬緫</el-button + > + <el-button + :disabled="item.status != '鏈墽琛�'" + type="default" + size="small" + @click="remove(item)" + >绉婚櫎</el-button + > + </el-space> </template> </ItemSubTask> </el-space> + <div v-else> + <el-empty description="鏃犱换鍔¤褰�" /> + <el-row v-if="create" justify="center"> + <el-button type="success" size="small" @click="add" + >娣诲姞浠诲姟</el-button + > + </el-row> + </div> </el-scrollbar> </div> + <el-dialog + v-model="dialogVisible" + width="600" + title="宸℃煡浠诲姟缂栬緫" + destroy-on-close + :close-on-click-modal="false" + :close-on-press-escape="false" + :show-close="false" + > + <CompSubTaskEdit + v-model="activeItem" + @submit="onEditSubmit" + @cancel="dialogVisible = false" + ></CompSubTaskEdit> + </el-dialog> </template> <script setup> -import { ref, watch, onMounted } from 'vue'; +import { ref, computed, watch, onMounted, onUnmounted } from 'vue'; +import { ElMessageBox, ElNotification, ElMessage } from 'element-plus'; +import CompSubTaskEdit from './CompSubTaskEdit.vue'; +import subtaskApi from '@/api/fysp/subtaskApi'; const props = defineProps({ - data: Array, + modelValue: Array, height: { type: String, default: '70vh' - } + }, + // 鏄惁鏄剧ず娣诲姞浠诲姟鎸夐挳 + create: Boolean, + loading: Boolean }); -const curSubTaskList = ref([]); -const emit = defineEmits(['add', 'remove']); +const dialogVisible = ref(false); +const activeItem = ref(null); +const data = computed(() => props.modelValue); + +const emit = defineEmits(['submit', 'add', 'remove', 'update:modelValue']); function remove(item) { - emit('remove', item); + if (item.status == '鏈墽琛�') { + ElMessageBox.confirm('鏄惁绉婚櫎鐩戠浠诲姟', `绉婚櫎纭`, { + confirmButtonText: '纭', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + return subtaskApi.deleteSubtask(item.stguid).then(res=>{ + if (res == 1) { + const index = data.value.indexOf(item); + data.value.splice(index, 1); + + emit('update:modelValue', data.value); + emit('remove', item); + } else { + Promise.reject('鍒犻櫎宸℃煡浠诲姟澶辫触') + } + }) + }); + } +} + +function edit(item) { + activeItem.value = item; + dialogVisible.value = true; +} + +function onEditSubmit(item) { + dialogVisible.value = false; + const index = data.value.findIndex((v) => { + return item.stguid == v.stguid; + }); + data.value.splice(index, 1, item); + emit('update:modelValue', data.value); + emit('submit'); } function add() { emit('add'); } + +onUnmounted(() => { + dialogVisible.value = false; +}); </script> diff --git a/src/views/fysp/task/components/CompSubTaskSelect.vue b/src/views/fysp/task/components/CompSubTaskSelect.vue index cdf66b9..53a4e03 100644 --- a/src/views/fysp/task/components/CompSubTaskSelect.vue +++ b/src/views/fysp/task/components/CompSubTaskSelect.vue @@ -73,6 +73,7 @@ import { ref, reactive, watch, computed, onMounted } from 'vue'; import { ElMessageBox, ElNotification, ElMessage } from 'element-plus'; import taskApi from '@/api/fysp/taskApi'; +import TaskProxy from '../TaskProxy'; onMounted(() => { // if (props.height) { @@ -91,7 +92,7 @@ dayTask: Object }); -const emit = defineEmits(['delete']); +const emit = defineEmits(['submit', 'delete']); const scrollHeight = ref('14vh'); @@ -120,6 +121,9 @@ fail('鏈�夋嫨鐩戠鍦烘櫙'); } else { success(); + // 灏嗕换鍔℃墽琛屼汉鏍煎紡鍖栧苟浼犻�� + const param = TaskProxy.getExecutors(v.value.executor, executors.value) + emit('submit', param) } } diff --git a/src/views/fysp/task/components/CompTaskEdit.vue b/src/views/fysp/task/components/CompTaskEdit.vue index 3058aec..6833d9f 100644 --- a/src/views/fysp/task/components/CompTaskEdit.vue +++ b/src/views/fysp/task/components/CompTaskEdit.vue @@ -87,7 +87,7 @@ <el-form-item> <el-row justify="center"> <el-link type="primary" @click="showMore = !showMore"> - {{ showMore ? '鏀惰捣' : '鏌ョ湅鏇村閫夐」' }} + {{ showMore ? '鏀惰捣' : '鏇村閫夐」' }} <el-icon v-if="showMore"><ArrowUp /></el-icon> <el-icon v-else><ArrowDown /></el-icon> </el-link> -- Gitblit v1.9.3