riku
2025-11-14 b1ce70777fb52ba986b6a8cf1b00cce93c2e84be
1. 修改巡查单据的下载功能(待完成)
已修改7个文件
已添加1个文件
1487 ■■■■■ 文件已修改
package-lock.json 908 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/fysp/domainApi.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/menu.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/doc.js 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/config/DomainCatalog.vue 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/fysp/scene/SceneInspectFile.vue 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -28,8 +28,10 @@
        "jszip-utils": "^0.1.0",
        "md5": "^2.3.0",
        "open-docxtemplater-image-module": "^1.0.3",
        "pdfmake": "^0.2.20",
        "pinia": "^2.0.26",
        "pizzip": "^3.1.7",
        "print-js": "^1.6.0",
        "vue": "^3.2.45",
        "vue-demi": "^0.14.6",
        "vue-i18n": "^9.8.0",
@@ -1955,6 +1957,52 @@
        "@floating-ui/core": "^1.0.4"
      }
    },
    "node_modules/@foliojs-fork/fontkit": {
      "version": "1.9.2",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz",
      "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==",
      "dependencies": {
        "@foliojs-fork/restructure": "^2.0.2",
        "brotli": "^1.2.0",
        "clone": "^1.0.4",
        "deep-equal": "^1.0.0",
        "dfa": "^1.2.0",
        "tiny-inflate": "^1.0.2",
        "unicode-properties": "^1.2.2",
        "unicode-trie": "^2.0.0"
      }
    },
    "node_modules/@foliojs-fork/linebreak": {
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz",
      "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==",
      "dependencies": {
        "base64-js": "1.3.1",
        "unicode-trie": "^2.0.0"
      }
    },
    "node_modules/@foliojs-fork/linebreak/node_modules/base64-js": {
      "version": "1.3.1",
      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.3.1.tgz",
      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
    },
    "node_modules/@foliojs-fork/pdfkit": {
      "version": "0.15.3",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/pdfkit/-/pdfkit-0.15.3.tgz",
      "integrity": "sha512-Obc0Wmy3bm7BINFVvPhcl2rnSSK61DQrlHU8aXnAqDk9LCjWdUOPwhgD8Ywz5VtuFjRxmVOM/kQ/XLIBjDvltw==",
      "dependencies": {
        "@foliojs-fork/fontkit": "^1.9.2",
        "@foliojs-fork/linebreak": "^1.1.1",
        "crypto-js": "^4.2.0",
        "jpeg-exif": "^1.1.4",
        "png-js": "^1.0.0"
      }
    },
    "node_modules/@foliojs-fork/restructure": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/restructure/-/restructure-2.0.2.tgz",
      "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA=="
    },
    "node_modules/@hapi/hoek": {
      "version": "9.3.0",
      "dev": true,
@@ -3312,6 +3360,14 @@
        "node": ">=8"
      }
    },
    "node_modules/brotli": {
      "version": "1.3.3",
      "resolved": "https://registry.npmmirror.com/brotli/-/brotli-1.3.3.tgz",
      "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
      "dependencies": {
        "base64-js": "^1.1.2"
      }
    },
    "node_modules/browserslist": {
      "version": "4.21.4",
      "dev": true,
@@ -3396,6 +3452,50 @@
      "license": "MIT",
      "engines": {
        "node": ">=6"
      }
    },
    "node_modules/call-bind": {
      "version": "1.0.8",
      "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz",
      "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
      "dependencies": {
        "call-bind-apply-helpers": "^1.0.0",
        "es-define-property": "^1.0.0",
        "get-intrinsic": "^1.2.4",
        "set-function-length": "^1.2.2"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/call-bind-apply-helpers": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
      "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
      "dependencies": {
        "es-errors": "^1.3.0",
        "function-bind": "^1.1.2"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/call-bound": {
      "version": "1.0.4",
      "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz",
      "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
      "dependencies": {
        "call-bind-apply-helpers": "^1.0.2",
        "get-intrinsic": "^1.3.0"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/callsites": {
@@ -3618,6 +3718,14 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/clone": {
      "version": "1.0.4",
      "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
      "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
      "engines": {
        "node": ">=0.8"
      }
    },
    "node_modules/codepage": {
      "version": "1.15.0",
      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
@@ -3766,6 +3874,11 @@
      "engines": {
        "node": "*"
      }
    },
    "node_modules/crypto-js": {
      "version": "4.2.0",
      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
    },
    "node_modules/cssesc": {
      "version": "3.0.0",
@@ -3920,10 +4033,61 @@
        "node": ">=6"
      }
    },
    "node_modules/deep-equal": {
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz",
      "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==",
      "dependencies": {
        "is-arguments": "^1.1.1",
        "is-date-object": "^1.0.5",
        "is-regex": "^1.1.4",
        "object-is": "^1.1.5",
        "object-keys": "^1.1.1",
        "regexp.prototype.flags": "^1.5.1"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/deep-is": {
      "version": "0.1.4",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/define-data-property": {
      "version": "1.1.4",
      "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
      "dependencies": {
        "es-define-property": "^1.0.0",
        "es-errors": "^1.3.0",
        "gopd": "^1.0.1"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/define-properties": {
      "version": "1.2.1",
      "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz",
      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
      "dependencies": {
        "define-data-property": "^1.0.1",
        "has-property-descriptors": "^1.0.0",
        "object-keys": "^1.1.1"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/delayed-stream": {
      "version": "1.0.0",
@@ -3931,6 +4095,11 @@
      "engines": {
        "node": ">=0.4.0"
      }
    },
    "node_modules/dfa": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/dfa/-/dfa-1.2.0.tgz",
      "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="
    },
    "node_modules/dir-glob": {
      "version": "3.0.1",
@@ -4000,6 +4169,19 @@
      },
      "engines": {
        "node": ">=12"
      }
    },
    "node_modules/dunder-proto": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
      "dependencies": {
        "call-bind-apply-helpers": "^1.0.1",
        "es-errors": "^1.3.0",
        "gopd": "^1.2.0"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/duplexer": {
@@ -4164,11 +4346,38 @@
        "errno": "cli.js"
      }
    },
    "node_modules/es-define-property": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
      "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/es-errors": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/es-module-lexer": {
      "version": "0.9.3",
      "dev": true,
      "license": "MIT",
      "peer": true
    },
    "node_modules/es-object-atoms": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
      "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
      "dependencies": {
        "es-errors": "^1.3.0"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/esbuild": {
      "version": "0.15.18",
@@ -4934,9 +5143,20 @@
      }
    },
    "node_modules/function-bind": {
      "version": "1.1.1",
      "dev": true,
      "license": "MIT"
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/functions-have-names": {
      "version": "1.2.3",
      "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/gensync": {
      "version": "1.0.0-beta.2",
@@ -4952,6 +5172,41 @@
      "license": "MIT",
      "engines": {
        "node": "*"
      }
    },
    "node_modules/get-intrinsic": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
      "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
      "dependencies": {
        "call-bind-apply-helpers": "^1.0.2",
        "es-define-property": "^1.0.1",
        "es-errors": "^1.3.0",
        "es-object-atoms": "^1.1.1",
        "function-bind": "^1.1.2",
        "get-proto": "^1.0.1",
        "gopd": "^1.2.0",
        "has-symbols": "^1.1.0",
        "hasown": "^2.0.2",
        "math-intrinsics": "^1.1.0"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/get-proto": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
      "dependencies": {
        "dunder-proto": "^1.0.1",
        "es-object-atoms": "^1.0.0"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/get-stream": {
@@ -5073,6 +5328,17 @@
        "node": ">=8"
      }
    },
    "node_modules/gopd": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/graceful-fs": {
      "version": "4.2.10",
      "license": "ISC"
@@ -5105,6 +5371,53 @@
      "license": "MIT",
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/has-property-descriptors": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
      "dependencies": {
        "es-define-property": "^1.0.0"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/has-symbols": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/has-tostringtag": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
      "dependencies": {
        "has-symbols": "^1.0.3"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/hasown": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
      "dependencies": {
        "function-bind": "^1.1.2"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/html-encoding-sniffer": {
@@ -5166,7 +5479,6 @@
    },
    "node_modules/iconv-lite": {
      "version": "0.6.3",
      "dev": true,
      "license": "MIT",
      "dependencies": {
        "safer-buffer": ">= 2.1.2 < 3.0.0"
@@ -5274,6 +5586,21 @@
        "node": ">=10"
      }
    },
    "node_modules/is-arguments": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.2.0.tgz",
      "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==",
      "dependencies": {
        "call-bound": "^1.0.2",
        "has-tostringtag": "^1.0.2"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/is-binary-path": {
      "version": "2.1.0",
      "dev": true,
@@ -5307,6 +5634,21 @@
      "license": "MIT",
      "dependencies": {
        "has": "^1.0.3"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/is-date-object": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.1.0.tgz",
      "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
      "dependencies": {
        "call-bound": "^1.0.2",
        "has-tostringtag": "^1.0.2"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
@@ -5374,6 +5716,23 @@
      "version": "1.0.1",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/is-regex": {
      "version": "1.2.1",
      "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz",
      "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
      "dependencies": {
        "call-bound": "^1.0.2",
        "gopd": "^1.2.0",
        "has-tostringtag": "^1.0.2",
        "hasown": "^2.0.2"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/is-stream": {
      "version": "2.0.1",
@@ -5447,6 +5806,11 @@
        "@sideway/formula": "^3.0.0",
        "@sideway/pinpoint": "^2.0.0"
      }
    },
    "node_modules/jpeg-exif": {
      "version": "1.1.4",
      "resolved": "https://registry.npmmirror.com/jpeg-exif/-/jpeg-exif-1.1.4.tgz",
      "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ=="
    },
    "node_modules/js-base64": {
      "version": "3.7.5",
@@ -6077,6 +6441,14 @@
      "version": "0.1.0",
      "dev": true
    },
    "node_modules/math-intrinsics": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/md5": {
      "version": "2.3.0",
      "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
@@ -6284,6 +6656,29 @@
      "dev": true,
      "license": "MIT"
    },
    "node_modules/object-is": {
      "version": "1.1.6",
      "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz",
      "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
      "dependencies": {
        "call-bind": "^1.0.7",
        "define-properties": "^1.2.1"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/object-keys": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/once": {
      "version": "1.4.0",
      "license": "ISC",
@@ -6467,6 +6862,20 @@
        "through": "~2.3"
      }
    },
    "node_modules/pdfmake": {
      "version": "0.2.20",
      "resolved": "https://registry.npmmirror.com/pdfmake/-/pdfmake-0.2.20.tgz",
      "integrity": "sha512-bGbxbGFP5p8PWNT3Phsu1ZcRLnRfF6jmnuKTkgmt6i5PZzSdX6JaB+NeTz9q+aocfW8SE9GUjL3o/5GroBqGcQ==",
      "dependencies": {
        "@foliojs-fork/linebreak": "^1.1.2",
        "@foliojs-fork/pdfkit": "^0.15.3",
        "iconv-lite": "^0.6.3",
        "xmldoc": "^2.0.1"
      },
      "engines": {
        "node": ">=18"
      }
    },
    "node_modules/pend": {
      "version": "1.2.0",
      "dev": true,
@@ -6537,6 +6946,11 @@
      "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
      "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
    },
    "node_modules/png-js": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/png-js/-/png-js-1.0.0.tgz",
      "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
    },
    "node_modules/postcss": {
      "version": "8.4.20",
      "funding": [
@@ -6606,6 +7020,11 @@
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/print-js": {
      "version": "1.6.0",
      "resolved": "https://registry.npmmirror.com/print-js/-/print-js-1.6.0.tgz",
      "integrity": "sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg=="
    },
    "node_modules/process-nextick-args": {
      "version": "2.0.1",
@@ -6778,6 +7197,25 @@
      "license": "MIT",
      "dependencies": {
        "@babel/runtime": "^7.8.4"
      }
    },
    "node_modules/regexp.prototype.flags": {
      "version": "1.5.4",
      "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
      "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
      "dependencies": {
        "call-bind": "^1.0.8",
        "define-properties": "^1.2.1",
        "es-errors": "^1.3.0",
        "get-proto": "^1.0.1",
        "gopd": "^1.2.0",
        "set-function-name": "^2.0.2"
      },
      "engines": {
        "node": ">= 0.4"
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/regexpp": {
@@ -6970,7 +7408,6 @@
    },
    "node_modules/safer-buffer": {
      "version": "2.1.2",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/sass": {
@@ -6991,9 +7428,7 @@
    },
    "node_modules/sax": {
      "version": "1.2.4",
      "dev": true,
      "license": "ISC",
      "optional": true
      "license": "ISC"
    },
    "node_modules/saxes": {
      "version": "6.0.0",
@@ -7045,6 +7480,36 @@
      "peer": true,
      "dependencies": {
        "randombytes": "^2.1.0"
      }
    },
    "node_modules/set-function-length": {
      "version": "1.2.2",
      "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
      "dependencies": {
        "define-data-property": "^1.1.4",
        "es-errors": "^1.3.0",
        "function-bind": "^1.1.2",
        "get-intrinsic": "^1.2.4",
        "gopd": "^1.0.1",
        "has-property-descriptors": "^1.0.2"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/set-function-name": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz",
      "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
      "dependencies": {
        "define-data-property": "^1.1.4",
        "es-errors": "^1.3.0",
        "functions-have-names": "^1.2.3",
        "has-property-descriptors": "^1.0.2"
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/setimmediate": {
@@ -7437,6 +7902,11 @@
      "dev": true,
      "license": "MIT"
    },
    "node_modules/tiny-inflate": {
      "version": "1.0.3",
      "resolved": "https://registry.npmmirror.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
      "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
    },
    "node_modules/tinybench": {
      "version": "2.3.1",
      "dev": true,
@@ -7613,6 +8083,15 @@
        "node": ">=4"
      }
    },
    "node_modules/unicode-properties": {
      "version": "1.4.1",
      "resolved": "https://registry.npmmirror.com/unicode-properties/-/unicode-properties-1.4.1.tgz",
      "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
      "dependencies": {
        "base64-js": "^1.3.0",
        "unicode-trie": "^2.0.0"
      }
    },
    "node_modules/unicode-property-aliases-ecmascript": {
      "version": "2.1.0",
      "dev": true,
@@ -7620,6 +8099,20 @@
      "engines": {
        "node": ">=4"
      }
    },
    "node_modules/unicode-trie": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/unicode-trie/-/unicode-trie-2.0.0.tgz",
      "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
      "dependencies": {
        "pako": "^0.2.5",
        "tiny-inflate": "^1.0.0"
      }
    },
    "node_modules/unicode-trie/node_modules/pako": {
      "version": "0.2.9",
      "resolved": "https://registry.npmmirror.com/pako/-/pako-0.2.9.tgz",
      "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
    },
    "node_modules/universalify": {
      "version": "2.0.0",
@@ -8437,6 +8930,17 @@
    "node_modules/xmlchars": {
      "version": "2.2.0",
      "license": "MIT"
    },
    "node_modules/xmldoc": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/xmldoc/-/xmldoc-2.0.2.tgz",
      "integrity": "sha512-UiRwoSStEXS3R+YE8OqYv3jebza8cBBAI2y8g3B15XFkn3SbEOyyLnmPHjLBPZANrPJKEzxxB7A3XwcLikQVlQ==",
      "dependencies": {
        "sax": "^1.2.4"
      },
      "engines": {
        "node": ">=12.0.0"
      }
    },
    "node_modules/xmldom": {
      "version": "0.1.31",
@@ -9707,6 +10211,54 @@
        "@floating-ui/core": "^1.0.4"
      }
    },
    "@foliojs-fork/fontkit": {
      "version": "1.9.2",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/fontkit/-/fontkit-1.9.2.tgz",
      "integrity": "sha512-IfB5EiIb+GZk+77TRB86AHroVaqfq8JRFlUbz0WEwsInyCG0epX2tCPOy+UfaWPju30DeVoUAXfzWXmhn753KA==",
      "requires": {
        "@foliojs-fork/restructure": "^2.0.2",
        "brotli": "^1.2.0",
        "clone": "^1.0.4",
        "deep-equal": "^1.0.0",
        "dfa": "^1.2.0",
        "tiny-inflate": "^1.0.2",
        "unicode-properties": "^1.2.2",
        "unicode-trie": "^2.0.0"
      }
    },
    "@foliojs-fork/linebreak": {
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/linebreak/-/linebreak-1.1.2.tgz",
      "integrity": "sha512-ZPohpxxbuKNE0l/5iBJnOAfUaMACwvUIKCvqtWGKIMv1lPYoNjYXRfhi9FeeV9McBkBLxsMFWTVVhHJA8cyzvg==",
      "requires": {
        "base64-js": "1.3.1",
        "unicode-trie": "^2.0.0"
      },
      "dependencies": {
        "base64-js": {
          "version": "1.3.1",
          "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.3.1.tgz",
          "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
        }
      }
    },
    "@foliojs-fork/pdfkit": {
      "version": "0.15.3",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/pdfkit/-/pdfkit-0.15.3.tgz",
      "integrity": "sha512-Obc0Wmy3bm7BINFVvPhcl2rnSSK61DQrlHU8aXnAqDk9LCjWdUOPwhgD8Ywz5VtuFjRxmVOM/kQ/XLIBjDvltw==",
      "requires": {
        "@foliojs-fork/fontkit": "^1.9.2",
        "@foliojs-fork/linebreak": "^1.1.1",
        "crypto-js": "^4.2.0",
        "jpeg-exif": "^1.1.4",
        "png-js": "^1.0.0"
      }
    },
    "@foliojs-fork/restructure": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/@foliojs-fork/restructure/-/restructure-2.0.2.tgz",
      "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA=="
    },
    "@hapi/hoek": {
      "version": "9.3.0",
      "dev": true
@@ -10662,6 +11214,14 @@
        "fill-range": "^7.0.1"
      }
    },
    "brotli": {
      "version": "1.3.3",
      "resolved": "https://registry.npmmirror.com/brotli/-/brotli-1.3.3.tgz",
      "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
      "requires": {
        "base64-js": "^1.1.2"
      }
    },
    "browserslist": {
      "version": "4.21.4",
      "dev": true,
@@ -10700,6 +11260,35 @@
    "cachedir": {
      "version": "2.3.0",
      "dev": true
    },
    "call-bind": {
      "version": "1.0.8",
      "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz",
      "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
      "requires": {
        "call-bind-apply-helpers": "^1.0.0",
        "es-define-property": "^1.0.0",
        "get-intrinsic": "^1.2.4",
        "set-function-length": "^1.2.2"
      }
    },
    "call-bind-apply-helpers": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
      "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
      "requires": {
        "es-errors": "^1.3.0",
        "function-bind": "^1.1.2"
      }
    },
    "call-bound": {
      "version": "1.0.4",
      "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz",
      "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
      "requires": {
        "call-bind-apply-helpers": "^1.0.2",
        "get-intrinsic": "^1.3.0"
      }
    },
    "callsites": {
      "version": "3.1.0",
@@ -10832,6 +11421,11 @@
        "string-width": "^4.2.0"
      }
    },
    "clone": {
      "version": "1.0.4",
      "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
      "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg=="
    },
    "codepage": {
      "version": "1.15.0",
      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
@@ -10928,6 +11522,11 @@
      "version": "0.0.2",
      "resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
      "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="
    },
    "crypto-js": {
      "version": "4.2.0",
      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
    },
    "cssesc": {
      "version": "3.0.0",
@@ -11040,12 +11639,50 @@
        "type-detect": "^4.0.0"
      }
    },
    "deep-equal": {
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz",
      "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==",
      "requires": {
        "is-arguments": "^1.1.1",
        "is-date-object": "^1.0.5",
        "is-regex": "^1.1.4",
        "object-is": "^1.1.5",
        "object-keys": "^1.1.1",
        "regexp.prototype.flags": "^1.5.1"
      }
    },
    "deep-is": {
      "version": "0.1.4",
      "dev": true
    },
    "define-data-property": {
      "version": "1.1.4",
      "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
      "requires": {
        "es-define-property": "^1.0.0",
        "es-errors": "^1.3.0",
        "gopd": "^1.0.1"
      }
    },
    "define-properties": {
      "version": "1.2.1",
      "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz",
      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
      "requires": {
        "define-data-property": "^1.0.1",
        "has-property-descriptors": "^1.0.0",
        "object-keys": "^1.1.1"
      }
    },
    "delayed-stream": {
      "version": "1.0.0"
    },
    "dfa": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/dfa/-/dfa-1.2.0.tgz",
      "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="
    },
    "dir-glob": {
      "version": "3.0.1",
@@ -11100,6 +11737,16 @@
      "dev": true,
      "requires": {
        "webidl-conversions": "^7.0.0"
      }
    },
    "dunder-proto": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
      "requires": {
        "call-bind-apply-helpers": "^1.0.1",
        "es-errors": "^1.3.0",
        "gopd": "^1.2.0"
      }
    },
    "duplexer": {
@@ -11238,10 +11885,28 @@
        "prr": "~1.0.1"
      }
    },
    "es-define-property": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
      "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
    },
    "es-errors": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
    },
    "es-module-lexer": {
      "version": "0.9.3",
      "dev": true,
      "peer": true
    },
    "es-object-atoms": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
      "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
      "requires": {
        "es-errors": "^1.3.0"
      }
    },
    "esbuild": {
      "version": "0.15.18",
@@ -11743,8 +12408,14 @@
      }
    },
    "function-bind": {
      "version": "1.1.1",
      "dev": true
      "version": "1.1.2",
      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
    },
    "functions-have-names": {
      "version": "1.2.3",
      "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
    },
    "gensync": {
      "version": "1.0.0-beta.2",
@@ -11753,6 +12424,32 @@
    "get-func-name": {
      "version": "2.0.0",
      "dev": true
    },
    "get-intrinsic": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
      "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
      "requires": {
        "call-bind-apply-helpers": "^1.0.2",
        "es-define-property": "^1.0.1",
        "es-errors": "^1.3.0",
        "es-object-atoms": "^1.1.1",
        "function-bind": "^1.1.2",
        "get-proto": "^1.0.1",
        "gopd": "^1.2.0",
        "has-symbols": "^1.1.0",
        "hasown": "^2.0.2",
        "math-intrinsics": "^1.1.0"
      }
    },
    "get-proto": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
      "requires": {
        "dunder-proto": "^1.0.1",
        "es-object-atoms": "^1.0.0"
      }
    },
    "get-stream": {
      "version": "5.2.0",
@@ -11834,6 +12531,11 @@
        }
      }
    },
    "gopd": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
    },
    "graceful-fs": {
      "version": "4.2.10"
    },
@@ -11857,6 +12559,35 @@
    "has-flag": {
      "version": "4.0.0",
      "dev": true
    },
    "has-property-descriptors": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
      "requires": {
        "es-define-property": "^1.0.0"
      }
    },
    "has-symbols": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
    },
    "has-tostringtag": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
      "requires": {
        "has-symbols": "^1.0.3"
      }
    },
    "hasown": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
      "requires": {
        "function-bind": "^1.1.2"
      }
    },
    "html-encoding-sniffer": {
      "version": "3.0.0",
@@ -11897,7 +12628,6 @@
    },
    "iconv-lite": {
      "version": "0.6.3",
      "dev": true,
      "requires": {
        "safer-buffer": ">= 2.1.2 < 3.0.0"
      }
@@ -11953,6 +12683,15 @@
      "version": "2.0.0",
      "dev": true
    },
    "is-arguments": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.2.0.tgz",
      "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==",
      "requires": {
        "call-bound": "^1.0.2",
        "has-tostringtag": "^1.0.2"
      }
    },
    "is-binary-path": {
      "version": "2.1.0",
      "dev": true,
@@ -11977,6 +12716,15 @@
      "dev": true,
      "requires": {
        "has": "^1.0.3"
      }
    },
    "is-date-object": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.1.0.tgz",
      "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
      "requires": {
        "call-bound": "^1.0.2",
        "has-tostringtag": "^1.0.2"
      }
    },
    "is-extglob": {
@@ -12013,6 +12761,17 @@
    "is-potential-custom-element-name": {
      "version": "1.0.1",
      "dev": true
    },
    "is-regex": {
      "version": "1.2.1",
      "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz",
      "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
      "requires": {
        "call-bound": "^1.0.2",
        "gopd": "^1.2.0",
        "has-tostringtag": "^1.0.2",
        "hasown": "^2.0.2"
      }
    },
    "is-stream": {
      "version": "2.0.1",
@@ -12063,6 +12822,11 @@
        "@sideway/formula": "^3.0.0",
        "@sideway/pinpoint": "^2.0.0"
      }
    },
    "jpeg-exif": {
      "version": "1.1.4",
      "resolved": "https://registry.npmmirror.com/jpeg-exif/-/jpeg-exif-1.1.4.tgz",
      "integrity": "sha512-a+bKEcCjtuW5WTdgeXFzswSrdqi0jk4XlEtZlx5A94wCoBpFjfFTbo/Tra5SpNCl/YFZPvcV1dJc+TAYeg6ROQ=="
    },
    "js-base64": {
      "version": "3.7.5",
@@ -12523,6 +13287,11 @@
      "version": "0.1.0",
      "dev": true
    },
    "math-intrinsics": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
    },
    "md5": {
      "version": "2.3.0",
      "resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
@@ -12655,6 +13424,20 @@
      "version": "2.2.2",
      "dev": true
    },
    "object-is": {
      "version": "1.1.6",
      "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz",
      "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
      "requires": {
        "call-bind": "^1.0.7",
        "define-properties": "^1.2.1"
      }
    },
    "object-keys": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
    },
    "once": {
      "version": "1.4.0",
      "requires": {
@@ -12768,6 +13551,17 @@
        "through": "~2.3"
      }
    },
    "pdfmake": {
      "version": "0.2.20",
      "resolved": "https://registry.npmmirror.com/pdfmake/-/pdfmake-0.2.20.tgz",
      "integrity": "sha512-bGbxbGFP5p8PWNT3Phsu1ZcRLnRfF6jmnuKTkgmt6i5PZzSdX6JaB+NeTz9q+aocfW8SE9GUjL3o/5GroBqGcQ==",
      "requires": {
        "@foliojs-fork/linebreak": "^1.1.2",
        "@foliojs-fork/pdfkit": "^0.15.3",
        "iconv-lite": "^0.6.3",
        "xmldoc": "^2.0.1"
      }
    },
    "pend": {
      "version": "1.2.0",
      "dev": true
@@ -12809,6 +13603,11 @@
        }
      }
    },
    "png-js": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/png-js/-/png-js-1.0.0.tgz",
      "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
    },
    "postcss": {
      "version": "8.4.20",
      "requires": {
@@ -12842,6 +13641,11 @@
    "pretty-bytes": {
      "version": "5.6.0",
      "dev": true
    },
    "print-js": {
      "version": "1.6.0",
      "resolved": "https://registry.npmmirror.com/print-js/-/print-js-1.6.0.tgz",
      "integrity": "sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg=="
    },
    "process-nextick-args": {
      "version": "2.0.1",
@@ -12965,6 +13769,19 @@
        "@babel/runtime": "^7.8.4"
      }
    },
    "regexp.prototype.flags": {
      "version": "1.5.4",
      "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
      "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
      "requires": {
        "call-bind": "^1.0.8",
        "define-properties": "^1.2.1",
        "es-errors": "^1.3.0",
        "get-proto": "^1.0.1",
        "gopd": "^1.2.0",
        "set-function-name": "^2.0.2"
      }
    },
    "regexpp": {
      "version": "3.2.0",
      "dev": true
@@ -13069,8 +13886,7 @@
      "version": "5.2.1"
    },
    "safer-buffer": {
      "version": "2.1.2",
      "dev": true
      "version": "2.1.2"
    },
    "sass": {
      "version": "1.56.2",
@@ -13082,9 +13898,7 @@
      }
    },
    "sax": {
      "version": "1.2.4",
      "dev": true,
      "optional": true
      "version": "1.2.4"
    },
    "saxes": {
      "version": "6.0.0",
@@ -13116,6 +13930,30 @@
      "peer": true,
      "requires": {
        "randombytes": "^2.1.0"
      }
    },
    "set-function-length": {
      "version": "1.2.2",
      "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
      "requires": {
        "define-data-property": "^1.1.4",
        "es-errors": "^1.3.0",
        "function-bind": "^1.1.2",
        "get-intrinsic": "^1.2.4",
        "gopd": "^1.0.1",
        "has-property-descriptors": "^1.0.2"
      }
    },
    "set-function-name": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz",
      "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
      "requires": {
        "define-data-property": "^1.1.4",
        "es-errors": "^1.3.0",
        "functions-have-names": "^1.2.3",
        "has-property-descriptors": "^1.0.2"
      }
    },
    "setimmediate": {
@@ -13362,6 +14200,11 @@
      "version": "2.3.8",
      "dev": true
    },
    "tiny-inflate": {
      "version": "1.0.3",
      "resolved": "https://registry.npmmirror.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
      "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
    },
    "tinybench": {
      "version": "2.3.1",
      "dev": true
@@ -13464,9 +14307,34 @@
      "version": "2.1.0",
      "dev": true
    },
    "unicode-properties": {
      "version": "1.4.1",
      "resolved": "https://registry.npmmirror.com/unicode-properties/-/unicode-properties-1.4.1.tgz",
      "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
      "requires": {
        "base64-js": "^1.3.0",
        "unicode-trie": "^2.0.0"
      }
    },
    "unicode-property-aliases-ecmascript": {
      "version": "2.1.0",
      "dev": true
    },
    "unicode-trie": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/unicode-trie/-/unicode-trie-2.0.0.tgz",
      "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
      "requires": {
        "pako": "^0.2.5",
        "tiny-inflate": "^1.0.0"
      },
      "dependencies": {
        "pako": {
          "version": "0.2.9",
          "resolved": "https://registry.npmmirror.com/pako/-/pako-0.2.9.tgz",
          "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
        }
      }
    },
    "universalify": {
      "version": "2.0.0",
@@ -13956,6 +14824,14 @@
    "xmlchars": {
      "version": "2.2.0"
    },
    "xmldoc": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/xmldoc/-/xmldoc-2.0.2.tgz",
      "integrity": "sha512-UiRwoSStEXS3R+YE8OqYv3jebza8cBBAI2y8g3B15XFkn3SbEOyyLnmPHjLBPZANrPJKEzxxB7A3XwcLikQVlQ==",
      "requires": {
        "sax": "^1.2.4"
      }
    },
    "xmldom": {
      "version": "0.1.31",
      "resolved": "https://registry.npmmirror.com/xmldom/-/xmldom-0.1.31.tgz",
package.json
@@ -33,8 +33,10 @@
    "jszip-utils": "^0.1.0",
    "md5": "^2.3.0",
    "open-docxtemplater-image-module": "^1.0.3",
    "pdfmake": "^0.2.20",
    "pinia": "^2.0.26",
    "pizzip": "^3.1.7",
    "print-js": "^1.6.0",
    "vue": "^3.2.45",
    "vue-demi": "^0.14.6",
    "vue-i18n": "^9.8.0",
src/api/fysp/domainApi.js
@@ -1,6 +1,20 @@
import { $fysp } from '../index';
export default {
  // èŽ·å–å…¨éƒ¨å€¼åŸŸç›®å½•
  fetchDomainCatalog() {
    return $fysp.get(`domaincatalog`).then((res) => res.data);
  },
  // æ–°å¢žå€¼åŸŸç›®å½•
  putDomainCatalog(catalog) {
    return $fysp.put(`domaincatalog`, catalog).then((res) => res.data);
  },
  // æ›´æ–°å€¼åŸŸç›®å½•
  updateDomainCatalog(catalog) {
    return $fysp.post(`domaincatalog`, catalog).then((res) => res.data);
  },
  // èŽ·å–å·¡æŸ¥ä»»åŠ¡ç±»åž‹
  fetchTaskType() {
    return $fysp.get(`domainitem/taskType`).then((res) => res.data);
@@ -21,5 +35,19 @@
    return $fysp
      .get(`domainitem/mediaFileType`, { params: { sceneType } })
      .then((res) => res.data);
  }
  },
  // èŽ·å–æŒ‡å®šå€¼åŸŸç›®å½•ä¸‹çš„æ‰€æœ‰å€¼åŸŸé¡¹
  fetchItemByCatalogId(catalogId) {
    return $fysp.get(`domainitem/catalogId`, { params: { catalogId } }).then((res) => res.data);
  },
  // æ–°å¢žå€¼åŸŸé¡¹
  putDomainItem(item) {
    return $fysp.put(`domainitem`, item).then((res) => res.data);
  },
  // æ›´æ–°å€¼åŸŸé¡¹
  updateDomainItem(item) {
    return $fysp.post(`domainitem`, item).then((res) => res.data);
  },
};
src/constants/menu.js
@@ -161,6 +161,11 @@
      //   icon: 'List',
      //   name: '评估规则'
      // }
      {
        path: '/fysp/config/domainCatalog',
        icon: 'List',
        name: '值域目录'
      }
    ]
  },
  {
src/router/index.js
@@ -296,6 +296,13 @@
                path: 'evalutationRule',
                component: () =>
                  import('@/views/fysp/config/EvalutationRule.vue')
              },
              {
                //值域表管理
                name: 'domaincatalog',
                path: 'domaincatalog',
                component: () =>
                  import('@/views/fysp/config/DomainCatalog.vue')
              }
            ]
          },
src/utils/doc.js
@@ -4,6 +4,9 @@
import ImageModule from 'docxtemplater-image-module-free';
import Pizzip from 'pizzip';
import FileSaver from 'file-saver';
import { renderAsync } from 'docx-preview';
import printJS from 'print-js';
import pdfMake from 'pdfmake';
/**
 * ç­‰æ¯”例缩放图片
@@ -146,7 +149,7 @@
  };
}
export const exportDocx = (tempDocpath, data, zipName, imageSize) => {
function prepareDocxtemplater(tempDocpath, data, imageSize) {
  return new Promise((resolve, reject) => {
    JSZipUtils.getBinaryContent(tempDocpath, (error, content) => {
      if (error) {
@@ -164,20 +167,116 @@
      }
      doc.compile();
      doc.resolveData(data).then(() => {
        try {
          doc.render();
        } catch (error) {
          console.log(error);
          throw error;
        }
        const out = doc.getZip().generate({
          type: 'blob',
          mimeType:
            'application/vnd.openxmlformats-officedocumnet.wordprocessingml.document'
        });
        FileSaver.saveAs(out, zipName);
        resolve();
        resolve(doc);
      });
    });
  });
}
/**
 * å‡†å¤‡docx文档,返回blob对象
 * @param {*} tempDocpath æ¨¡æ¿docx文件路径
 * @param {*} data æ•°æ®å¯¹è±¡
 * @param {*} zipName åŽ‹ç¼©åŒ…åç§°
 * @param {*} imageSize å›¾ç‰‡å¤§å°é…ç½®å¯¹è±¡
 * @returns
 */
function prepareDocxBlob(tempDocpath, data, imageSize) {
  return prepareDocxtemplater(tempDocpath, data, imageSize).then((doc) => {
    try {
      doc.render();
    } catch (error) {
      console.log(error);
      throw error;
    }
    const out = doc.getZip().generate({
      type: 'blob',
      mimeType:
        'application/vnd.openxmlformats-officedocumnet.wordprocessingml.document'
    });
    return out;
  });
}
function prepareDocxStr(tempDocpath, data, imageSize) {
  return prepareDocxtemplater(tempDocpath, data, imageSize).then((doc) => {
    try {
      return doc.render();
    } catch (error) {
      console.log(error);
      throw error;
    }
  });
}
function preparePdf(tempDocpath, data, imageSize) {
  return prepareDocxStr(tempDocpath, data, imageSize).then( (res) => {
    // å°† Word æ–‡æ¡£è½¬æ¢ä¸º PDF æ ¼å¼å¹¶ä¿å­˜åˆ°æ–‡ä»¶
    console.log(pdfMake);
    // const printer = new pdfMake.PdfPrinter();
    const docDefinition = {
      content: [
        {
          text: res.toString('utf8')
        }
      ]
    };
    const pdfDoc = pdfMake.createPdf(docDefinition);
    // const pdfBuffer = await pdfDoc.getBuffer();
    // return new Blob([pdfBuffer], { type: 'application/pdf' });
    return pdfDoc;
  });
}
function exportDocx(tempDocpath, data, zipName, imageSize) {
  return prepareDocxBlob(tempDocpath, data, zipName, imageSize).then((blob) => {
    FileSaver.saveAs(blob, zipName);
  });
}
function previewDocx(blob, ref) {
  return renderAsync(blob, ref);
}
function downloadDocx(blob, zipName) {
  FileSaver.saveAs(blob, zipName);
}
function print(
  ref,
  title,
  style,
  type,
  jsonData,
  borderHeadStyle,
  gridStyle,
  css
) {
  printJS({
    printable: ref,
    header: title || null,
    type: type || 'html',
    headerStyle:
      'font-size:6px;font-weight:600;text-align:center;padding:15px 0 10px 0;', //标题设置
    properties: jsonData || [], //json数据元
    gridHeaderStyle:
      borderHeadStyle ||
      'font-size:6px;font-weight:400;height:40px;line-height:40px;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', //json格式表头样式
    gridStyle:
      gridStyle ||
      'font-size:1px;font-weight:200;border: 1px solid #ccc;padding:3px 5px 3px 5px;text-align:center;', //json各式表哥央视
    scanStyles: false, //不适用默认样式
    repeatTableHeader: false, //打印json表头只显示在第一页
    style: style || '@page{size:auto;margin: 0cm 1cm 0cm 1cm;}', //去除页眉页脚
    css: css || null //css url
  });
}
export {
  exportDocx,
  prepareDocxBlob,
  preparePdf,
  previewDocx,
  downloadDocx,
  print
};
src/views/fysp/config/DomainCatalog.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,235 @@
<template>
  <BaseContentLayout>
    <template #header> </template>
    <template #aside>
      <SideList
        :items="domainCatalog"
        :loading="sideLoading"
        @item-click="chooseCatalog"
      ></SideList>
    </template>
    <template #main>
      <!-- <FormCol> -->
      <el-table
        :data="domainItems"
        v-loading="loading"
        :height="contentHeight + 'px'"
        table-layout="fixed"
        :show-overflow-tooltip="true"
        size="small"
        style="z-index: 20"
        border
      >
        <el-table-column fixed="left" prop="index" label="编号" width="50">
          <template #default="{ row }">
            <el-input
              v-if="row._isAdd || row._isEdit"
              size="small"
              v-model="row.index"
            />
            <span v-else>{{ row.index }}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="catelogname"
          label="类别"
          :show-overflow-tooltip="true"
          width="180"
        >
        </el-table-column>
        <el-table-column
          prop="text"
          label="值域项"
          :show-overflow-tooltip="true"
          min-width="200"
        >
          <template #default="{ row }">
            <el-input
              v-if="row._isAdd || row._isEdit"
              size="small"
              v-model="row.text"
            />
            <span v-else>{{ row.text }}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="value"
          label="值域值"
          :formatter="timeFormat"
          width="90"
        >
          <template #default="{ row }">
            <el-input
              v-if="row._isAdd || row._isEdit"
              size="small"
              v-model="row.value"
            />
            <span v-else>{{ row.value }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="remark" label="版本" width="80" />
        <el-table-column
          prop="guid"
          label="ID"
          :show-overflow-tooltip="true"
          width="150"
        >
        </el-table-column>
        <el-table-column fixed="right" label="操作" width="160">
          <template #default="scope">
            <el-button
              v-if="scope.row._isAdd"
              type="primary"
              size="small"
              icon="Select"
              @click="savePut(scope)"
              >新增</el-button
            >
            <el-button
              v-else-if="scope.row._isEdit"
              type="success"
              size="small"
              icon="Select"
              @click="saveUpdate(scope)"
              >修改</el-button
            >
            <el-button-group v-else>
              <el-button
                type="default"
                size="small"
                icon="Edit"
                @click="itemEdit(scope)"
              ></el-button>
              <el-button
                :loading="scope.row.loadingDelete"
                type="danger"
                size="small"
                icon="Delete"
                @click="itemDelete(scope)"
              ></el-button>
            </el-button-group>
            <el-button
              v-if="scope.row._isEdit || scope.row._isAdd"
              type="default"
              size="small"
              icon="CloseBold"
              @click="cancelEdit(scope)"
              >取消</el-button
            >
          </template>
        </el-table-column>
      </el-table>
      <el-row justify="center" style="margin-top: -2px">
        <el-button type="default" icon="Plus" @click="itemAdd"
          >新增值域项</el-button
        >
      </el-row>
      <!-- </FormCol> -->
    </template>
  </BaseContentLayout>
</template>
<script setup>
import { onMounted, ref } from 'vue';
import domainApi from '@/api/fysp/domainApi';
import { ElMessage } from 'element-plus';
const loading = ref(false);
const domainCatalog = ref([]);
const selectedCatalog = ref(null);
const domainItems = ref([]);
// é€‰æ‹©å€¼åŸŸç›®å½•
const chooseCatalog = (catalog) => {
  selectedCatalog.value = catalog.data;
  loading.value = true;
  domainApi
    .fetchItemByCatalogId(catalog.data.guid)
    .then((res) => {
      domainItems.value = res.data;
    })
    .finally(() => {
      loading.value = false;
    });
};
// æ·»åŠ å€¼åŸŸé¡¹
const itemAdd = () => {
  const lastOne = domainItems.value[domainItems.value.length - 1];
  domainItems.value.push({
    index: lastOne ? lastOne.index + 1 : 0,
    catelogname: selectedCatalog.value.name,
    dcguid: selectedCatalog.value.guid,
    text: '',
    value: '',
    remark: '0',
    _isAdd: true
  });
};
function itemEdit(scope) {
  scope.row._isEdit = true;
  console.log(scope);
}
function itemDelete(scope) {
  scope.row.loadingDelete = true;
  setTimeout(() => {
    domainItems.value.splice(scope.$index, 1);
    scope.row.loadingDelete = false;
  }, 1000);
}
function savePut(scope) {
  if (_validate(scope.row)) {
    scope.row._isAdd = false;
    domainApi.putDomainItem(scope.row).then((res) => {
      scope.row.guid = res.guid;
      ElMessage.success('新增成功');
    });
  } else {
    ElMessage.error('请填写完整信息');
  }
}
function saveUpdate(scope) {
  if (_validate(scope.row)) {
    scope.row._isEdit = false;
    domainApi.updateDomainItem(scope.row).then((res) => {
      ElMessage.success('修改成功');
    });
  } else {
    ElMessage.error('请填写完整信息');
  }
}
// å–消编辑
function cancelEdit(scope) {
  scope.row._isAdd = false;
  scope.row._isEdit = false;
  domainItems.value.splice(scope.$index, 1);
}
function _validate(row) {
  return (
    row.index !== undefined &&
    row.index !== '' &&
    row.text !== undefined &&
    row.text !== '' &&
    row.value !== undefined &&
    row.value !== ''
  );
}
onMounted(() => {
  domainApi.fetchDomainCatalog().then((res) => {
    domainCatalog.value = res.map((item) => ({
      title: item.name,
      categoly: '系统配置项',
      data: item
    }));
    chooseCatalog(domainCatalog.value[0]);
  });
});
</script>
src/views/fysp/scene/SceneInspectFile.vue
@@ -28,21 +28,26 @@
                '地址:' + item.scense.location
              }}</el-text>
            </div>
            <el-space class="m-t-4">
              <el-tag>
                {{
                  item.scense.cityname +
                  item.scense.districtname +
                  item.scense.townname
                }}
                <!-- {{ item.scense.districtname }}
                {{ item.scense.townname }} -->
              </el-tag>
              <el-tag>{{ item.scense.type }}</el-tag>
              <!-- {{ item.scense.contacts }}
              {{ item.scense.contactst }} -->
            </el-space>
            <el-row justify="space-between">
              <el-space class="m-t-4">
                <el-tag>
                  {{
                    item.scense.cityname +
                    item.scense.districtname +
                    item.scense.townname
                  }}
                </el-tag>
                <el-tag>{{ item.scense.type }}</el-tag>
              </el-space>
              <el-button
                type="default"
                size="small"
                class="m-t-4"
                @click="handlePreview(item)"
              >
                é¢„览
              </el-button>
            </el-row>
          </el-checkbox>
        </el-space>
      </el-checkbox-group>
@@ -53,11 +58,28 @@
        <el-button type="primary" :loading="docLoading" @click="handelDownload">
          ä¸‹è½½
        </el-button>
        <!-- <el-button type="default" :loading="docLoading" @click="handelPrint">
        <el-button type="default" :loading="docLoading" @click="handelPrint">
          æ‰“印
        </el-button> -->
        </el-button>
      </div>
    </template>
  </el-dialog>
  <el-dialog v-model="previewVisible" :show-close="false" fullscreen>
    <template #header="{ close, titleId, titleClass }">
      <el-row justify="end">
        <el-button type="danger" @click="close" icon="CircleCloseFilled">
          å…³é—­
        </el-button>
        <el-button
          type="primary"
          @click="handelPrint(refWord)"
          icon="PrintFilled"
        >
          æ‰“印
        </el-button>
      </el-row>
    </template>
    <div ref="refWord"></div>
  </el-dialog>
</template>
<script setup>
@@ -65,23 +87,36 @@
 * åœºæ™¯å·¡æŸ¥å•据自动下载
 */
import { ref, watch } from 'vue';
import { exportDocx } from '@/utils/doc';
import {
  exportDocx,
  prepareDocxBlob,
  preparePdf,
  previewDocx,
  downloadDocx,
  print
} from '@/utils/doc';
import sceneApi from '@/api/fysp/sceneApi';
const props = defineProps({
  // å¯¹è¯æ¡†å¼€å…³
  modelValue: Boolean,
  // åœºæ™¯åŸºç¡€ä¿¡æ¯æ•°ç»„
  value: Array
  value: Array,
  previewElement: String
});
const emits = defineEmits(['update:modelValue']);
const refWord = ref(null);
const loading = ref(false);
const scrollbarRef = ref();
const sceneInfoList = ref([]);
const checkList = ref([]);
const docLoading = ref(false);
// é¢„览对话框开关
const previewVisible = ref(false);
watch(
  () => [props.modelValue, props.value],
@@ -139,10 +174,12 @@
}
// æ ¼å¼åŒ–场景信息,生成参数结构
function parseParam() {
  const selected = sceneInfoList.value.filter((v, i) => {
    return checkList.value.indexOf(i) != -1;
  });
function parseParam(item) {
  const selected = item
    ? [item]
    : sceneInfoList.value.filter((v, i) => {
        return checkList.value.indexOf(i) != -1;
      });
  const param = selected.map((v) => {
    switch (v.scense.typeid) {
      // å·¥åœ°
@@ -187,22 +224,12 @@
    }
  });
  // param.forEach((p) => {
  //   for (const key in p.params) {
  //     let value = p.params[key];
  //     if (value == undefined) {
  //       // è‹¥å±žæ€§ç¼ºå¤±ï¼Œåˆ™æ”¹ä¸º20个空格符,对应word中10个中文字符的长度
  //       p.params[key] = '                    ';
  //     }
  //   }
  // });
  return param;
}
// æ ¹æ®åœºæ™¯ç±»åž‹ï¼Œç”Ÿæˆå¯¹åº”çš„word文档
function generateDoc(param) {
  param.forEach((p) => {
function generateDoc(param, callback) {
  param.map((p) => {
    let template, _param;
    switch (p.type) {
      // å·¥åœ°
@@ -218,39 +245,72 @@
      default:
        break;
    }
    exportDocx(template, _param, `${_param.name}巡查单据.docx`).finally(
      () => (docLoading.value = false)
    );
    prepareDocxBlob(template, _param).then((blob) => {
      callback(blob, `${_param.name}巡查单据.docx`);
    });
  });
}
// ä¸‹è½½word文档
function download(file) {}
function generatePdf(param, callback) {
  param.map((p) => {
    let template, _param;
    switch (p.type) {
      // å·¥åœ°
      case 1:
        template = '/工地巡查单据模板.docx';
        _param = p.params;
        break;
      // é¤é¥®
      case 5:
        template = '/餐饮巡查单据模板.docx';
        _param = p.params;
        break;
      default:
        break;
    }
    preparePdf(template, _param).then((blob) => {
      callback(blob, `${_param.name}巡查单据.pdf`);
    });
  });
}
// æ‰“印word文档
function print(file) {}
function filePrepare() {
function filePrepare(callback) {
  const param = parseParam();
  if (param) {
    return generateDoc(param);
    return generateDoc(param, callback);
  }
}
// ç‚¹å‡»ä¸‹è½½æŒ‰é’®æ“ä½œ
// ç‚¹å‡»ä¸‹è½½æŒ‰é’®æ“ä½œ, ä¸‹è½½word文档
function handelDownload() {
  const file = filePrepare();
  if (file) {
    download(file);
  }
  filePrepare((blob, name) => {
    downloadDocx(blob, name);
  });
}
// ç‚¹å‡»æ‰“印按钮操作
function handelPrint() {
  const file = filePrepare();
  if (file) {
    print(file);
function handelPrint(ref) {
  if (ref) {
    print(ref);
  }
  // const file = filePrepare();
  // if (file) {
  //   previewDocx(file.blob, refWord.value);
  // }
}
function handlePreview(item) {
  const param = parseParam(item);
  if (param) {
    generatePdf(param, (blob, name) => {
      blob.getBuffer((buffer) => {
        previewDocx(buffer, refWord.value);
      });
      previewVisible.value = true;
      // setTimeout(() => {
      //   previewDocx(blob, refWord.value);
      // }, 200);
    });
  }
}
@@ -271,4 +331,7 @@
:deep(.el-checkbox) {
  height: auto;
}
:deep(.el-checkbox__label) {
  width: 100%;
}
</style>