提交 90a10cf9 编写于 作者: ibizdev's avatar ibizdev

chitanda 发布系统代码 [TrainSys,网页端]

上级 5207173f
......@@ -12,16 +12,17 @@
},
"dependencies": {
"@ibiz-template/command": "^0.0.1-alpha.37",
"@ibiz-template/controller": "^0.0.1-alpha.38",
"@ibiz-template/core": "^0.0.1-alpha.38",
"@ibiz-template/model": "^0.0.1-alpha.37",
"@ibiz-template/runtime": "^0.0.1-alpha.38",
"@ibiz-template/service": "^0.0.1-alpha.38",
"@ibiz-template/theme": "^0.0.1-alpha.37",
"@ibiz-template/vue-util": "^0.0.1-alpha.38",
"@ibiz-template/controller": "^0.0.1-alpha.40",
"@ibiz-template/core": "^0.0.1-alpha.40",
"@ibiz-template/model": "^0.0.1-alpha.39",
"@ibiz-template/runtime": "^0.0.1-alpha.40",
"@ibiz-template/service": "^0.0.1-alpha.40",
"@ibiz-template/theme": "^0.0.1-alpha.40",
"@ibiz-template/vue-util": "^0.0.1-alpha.40",
"@ibiz/dynamic-model-api": "^2.1.5",
"dayjs": "^1.11.6",
"lodash-es": "^4.17.21",
"path-browserify": "^1.0.1",
"pinia": "^2.0.23",
"qs": "^6.11.0",
"qx-util": "^0.4.4",
......@@ -31,15 +32,16 @@
"vue-router": "^3.6.5"
},
"devDependencies": {
"@commitlint/cli": "^17.1.2",
"@commitlint/config-conventional": "^17.1.0",
"@commitlint/cli": "^17.2.0",
"@commitlint/config-conventional": "^17.2.0",
"@types/lodash-es": "^4.17.6",
"@types/node": "^18.11.8",
"@types/node": "^18.11.9",
"@types/path-browserify": "^1.0.0",
"@types/qs": "^6.9.7",
"@types/ramda": "^0.28.18",
"@types/systemjs": "^6.1.1",
"@typescript-eslint/eslint-plugin": "^5.41.0",
"@typescript-eslint/parser": "^5.41.0",
"@typescript-eslint/eslint-plugin": "^5.42.0",
"@typescript-eslint/parser": "^5.42.0",
"@vitejs/plugin-legacy": "^2.3.0",
"@vitejs/plugin-vue2": "^2.0.0",
"@vitejs/plugin-vue2-jsx": "^1.0.3",
......@@ -49,7 +51,7 @@
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-vue": "^9.6.0",
"eslint-plugin-vue": "^9.7.0",
"husky": "^8.0.1",
"lint-staged": "^13.0.3",
"postcss": "^8.4.18",
......@@ -65,7 +67,7 @@
"stylelint-scss": "^4.3.0",
"terser": "^5.15.1",
"typescript": "^4.8.4",
"vite": "^3.2.1",
"vite": "^3.2.2",
"vite-plugin-eslint": "^1.8.1",
"vue-eslint-parser": "^9.1.0",
"vue-tsc": "^1.0.9"
......
lockfileVersion: 5.4
specifiers:
'@commitlint/cli': ^17.1.2
'@commitlint/config-conventional': ^17.1.0
'@commitlint/cli': ^17.2.0
'@commitlint/config-conventional': ^17.2.0
'@ibiz-template/command': ^0.0.1-alpha.37
'@ibiz-template/controller': ^0.0.1-alpha.38
'@ibiz-template/core': ^0.0.1-alpha.38
'@ibiz-template/model': ^0.0.1-alpha.37
'@ibiz-template/runtime': ^0.0.1-alpha.38
'@ibiz-template/service': ^0.0.1-alpha.38
'@ibiz-template/theme': ^0.0.1-alpha.37
'@ibiz-template/vue-util': ^0.0.1-alpha.38
'@ibiz-template/controller': ^0.0.1-alpha.40
'@ibiz-template/core': ^0.0.1-alpha.40
'@ibiz-template/model': ^0.0.1-alpha.39
'@ibiz-template/runtime': ^0.0.1-alpha.40
'@ibiz-template/service': ^0.0.1-alpha.40
'@ibiz-template/theme': ^0.0.1-alpha.40
'@ibiz-template/vue-util': ^0.0.1-alpha.40
'@ibiz/dynamic-model-api': ^2.1.5
'@types/lodash-es': ^4.17.6
'@types/node': ^18.11.8
'@types/node': ^18.11.9
'@types/path-browserify': ^1.0.0
'@types/qs': ^6.9.7
'@types/ramda': ^0.28.18
'@types/systemjs': ^6.1.1
'@typescript-eslint/eslint-plugin': ^5.41.0
'@typescript-eslint/parser': ^5.41.0
'@typescript-eslint/eslint-plugin': ^5.42.0
'@typescript-eslint/parser': ^5.42.0
'@vitejs/plugin-legacy': ^2.3.0
'@vitejs/plugin-vue2': ^2.0.0
'@vitejs/plugin-vue2-jsx': ^1.0.3
......@@ -29,10 +30,11 @@ specifiers:
eslint-config-prettier: ^8.5.0
eslint-plugin-import: ^2.26.0
eslint-plugin-prettier: ^4.2.1
eslint-plugin-vue: ^9.6.0
eslint-plugin-vue: ^9.7.0
husky: ^8.0.1
lint-staged: ^13.0.3
lodash-es: ^4.17.21
path-browserify: ^1.0.1
pinia: ^2.0.23
postcss: ^8.4.18
postcss-scss: ^4.0.5
......@@ -51,7 +53,7 @@ specifiers:
terser: ^5.15.1
typescript: ^4.8.4
view-design: ^4.7.0
vite: ^3.2.1
vite: ^3.2.2
vite-plugin-eslint: ^1.8.1
vue: ^2.7.13
vue-eslint-parser: ^9.1.0
......@@ -60,16 +62,17 @@ specifiers:
dependencies:
'@ibiz-template/command': 0.0.1-alpha.37
'@ibiz-template/controller': registry.npmmirror.com/@ibiz-template/controller/0.0.1-alpha.38_yqoflx6tyrgc3xn2pq7rnnu37y
'@ibiz-template/core': registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.37_yslesr4iih24kokbsmhl36awki
'@ibiz-template/runtime': registry.npmmirror.com/@ibiz-template/runtime/0.0.1-alpha.38_5ooxsv6w6zvwkcvqaz3yejcoce
'@ibiz-template/service': registry.npmmirror.com/@ibiz-template/service/0.0.1-alpha.38_dy5ruincxm3jghhrylh5xzurr4
'@ibiz-template/theme': 0.0.1-alpha.37
'@ibiz-template/vue-util': registry.npmmirror.com/@ibiz-template/vue-util/0.0.1-alpha.38_xulrwzb6nqtsdm2k5bvzegenbu
'@ibiz-template/controller': 0.0.1-alpha.40_ih5ecz32a4ibmstgfcjyi3tpam
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki
'@ibiz-template/runtime': 0.0.1-alpha.40_5kdc272ska6i73jbiqdmud7zjq
'@ibiz-template/service': 0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u
'@ibiz-template/theme': 0.0.1-alpha.40
'@ibiz-template/vue-util': 0.0.1-alpha.40_ugp54vtapc454oxcr74b5b6rda
'@ibiz/dynamic-model-api': 2.1.5_qx-util@0.4.4
dayjs: 1.11.6
lodash-es: 4.17.21
path-browserify: 1.0.1
pinia: 2.0.23_xjcbg5znturqejtkpd33hx726m
qs: 6.11.0
qx-util: 0.4.4
......@@ -79,25 +82,26 @@ dependencies:
vue-router: 3.6.5_vue@2.7.13
devDependencies:
'@commitlint/cli': 17.1.2
'@commitlint/config-conventional': 17.1.0
'@commitlint/cli': 17.2.0
'@commitlint/config-conventional': 17.2.0
'@types/lodash-es': 4.17.6
'@types/node': 18.11.8
'@types/node': 18.11.9
'@types/path-browserify': 1.0.0
'@types/qs': 6.9.7
'@types/ramda': 0.28.18
'@types/systemjs': 6.1.1
'@typescript-eslint/eslint-plugin': 5.41.0_huremdigmcnkianavgfk3x6iou
'@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@vitejs/plugin-legacy': 2.3.0_terser@5.15.1+vite@3.2.1
'@vitejs/plugin-vue2': 2.0.0_vite@3.2.1+vue@2.7.13
'@vitejs/plugin-vue2-jsx': 1.0.3_vite@3.2.1+vue@2.7.13
'@typescript-eslint/eslint-plugin': 5.42.0_6xw5wg2354iw4zujk2f3vyfrzu
'@typescript-eslint/parser': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
'@vitejs/plugin-legacy': 2.3.0_terser@5.15.1+vite@3.2.2
'@vitejs/plugin-vue2': 2.0.0_vite@3.2.2+vue@2.7.13
'@vitejs/plugin-vue2-jsx': 1.0.3_vite@3.2.2+vue@2.7.13
'@vue/babel-helper-vue-jsx-merge-props': 1.4.0
eslint: 8.26.0
eslint-config-airbnb-base: 15.0.0_mynvxvmq5qtyojffiqgev4x7mm
eslint-config-prettier: 8.5.0_eslint@8.26.0
eslint-plugin-import: 2.26.0_c2flhriocdzler6lrwbyxxyoca
eslint-plugin-import: 2.26.0_5aea5dp4n23mfv4y2mmjxole3e
eslint-plugin-prettier: 4.2.1_aniwkeyvlpmwkidetuytnokvcm
eslint-plugin-vue: 9.6.0_eslint@8.26.0
eslint-plugin-vue: 9.7.0_eslint@8.26.0
husky: 8.0.1
lint-staged: 13.0.3
postcss: 8.4.18
......@@ -113,8 +117,8 @@ devDependencies:
stylelint-scss: 4.3.0_stylelint@14.14.0
terser: 5.15.1
typescript: 4.8.4
vite: 3.2.1_sass@1.55.0+terser@5.15.1
vite-plugin-eslint: 1.8.1_eslint@8.26.0+vite@3.2.1
vite: 3.2.2_sass@1.55.0+terser@5.15.1
vite-plugin-eslint: 1.8.1_eslint@8.26.0+vite@3.2.2
vue-eslint-parser: 9.1.0_eslint@8.26.0
vue-tsc: 1.0.9_typescript@4.8.4
......@@ -422,15 +426,15 @@ packages:
'@babel/helper-validator-identifier': 7.18.6
to-fast-properties: 2.0.0
/@commitlint/cli/17.1.2:
resolution: {integrity: sha512-h/4Hlka3bvCLbnxf0Er2ri5A44VMlbMSkdTRp8Adv2tRiklSTRIoPGs7OEXDv3EoDs2AAzILiPookgM4Gi7LOw==}
/@commitlint/cli/17.2.0:
resolution: {integrity: sha512-kd1zykcrjIKyDRftWW1E1TJqkgzeosEkv1BiYPCdzkb/g/3BrfgwZUHR1vg+HO3qKUb/0dN+jNXArhGGAHpmaQ==}
engines: {node: '>=v14'}
hasBin: true
dependencies:
'@commitlint/format': 17.0.0
'@commitlint/lint': 17.1.0
'@commitlint/load': 17.1.2
'@commitlint/read': 17.1.0
'@commitlint/lint': 17.2.0
'@commitlint/load': 17.2.0
'@commitlint/read': 17.2.0
'@commitlint/types': 17.0.0
execa: 5.1.1
lodash: 4.17.21
......@@ -442,8 +446,8 @@ packages:
- '@swc/wasm'
dev: true
/@commitlint/config-conventional/17.1.0:
resolution: {integrity: sha512-WU2p0c9/jLi8k2q2YrDV96Y8XVswQOceIQ/wyJvQxawJSCasLdRB3kUIYdNjOCJsxkpoUlV/b90ZPxp1MYZDiA==}
/@commitlint/config-conventional/17.2.0:
resolution: {integrity: sha512-g5hQqRa80f++SYS233dbDSg16YdyounMTAhVcmqtInNeY/GF3aA4st9SVtJxpeGrGmueMrU4L+BBb+6Vs5wrcg==}
engines: {node: '>=v14'}
dependencies:
conventional-changelog-conventionalcommits: 5.0.0
......@@ -478,26 +482,26 @@ packages:
chalk: 4.1.2
dev: true
/@commitlint/is-ignored/17.1.0:
resolution: {integrity: sha512-JITWKDMHhIh8IpdIbcbuH9rEQJty1ZWelgjleTFrVRAcEwN/sPzk1aVUXRIZNXMJWbZj8vtXRJnFihrml8uECQ==}
/@commitlint/is-ignored/17.2.0:
resolution: {integrity: sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==}
engines: {node: '>=v14'}
dependencies:
'@commitlint/types': 17.0.0
semver: 7.3.7
dev: true
/@commitlint/lint/17.1.0:
resolution: {integrity: sha512-ltpqM2ogt/+SDhUaScFo0MdscncEF96lvQTPMM/VTTWlw7sTGLLWkOOppsee2MN/uLNNWjQ7kqkd4h6JqoM9AQ==}
/@commitlint/lint/17.2.0:
resolution: {integrity: sha512-N2oLn4Dj672wKH5qJ4LGO+73UkYXGHO+NTVUusGw83SjEv7GjpqPGKU6KALW2kFQ/GsDefSvOjpSi3CzWHQBDg==}
engines: {node: '>=v14'}
dependencies:
'@commitlint/is-ignored': 17.1.0
'@commitlint/parse': 17.0.0
'@commitlint/rules': 17.0.0
'@commitlint/is-ignored': 17.2.0
'@commitlint/parse': 17.2.0
'@commitlint/rules': 17.2.0
'@commitlint/types': 17.0.0
dev: true
/@commitlint/load/17.1.2:
resolution: {integrity: sha512-sk2p/jFYAWLChIfOIp/MGSIn/WzZ0vkc3afw+l4X8hGEYkvDe4gQUUAVxjl/6xMRn0HgnSLMZ04xXh5pkTsmgg==}
/@commitlint/load/17.2.0:
resolution: {integrity: sha512-HDD57qSqNrk399R4TIjw31AWBG8dBjNj1MrDKZKmC/wvimtnIFlqzcu1+sxfXIOHj/+M6tcMWDtvknGUd7SU+g==}
engines: {node: '>=v14'}
dependencies:
'@commitlint/config-validator': 17.1.0
......@@ -517,13 +521,13 @@ packages:
- '@swc/wasm'
dev: true
/@commitlint/message/17.0.0:
resolution: {integrity: sha512-LpcwYtN+lBlfZijHUdVr8aNFTVpHjuHI52BnfoV01TF7iSLnia0jttzpLkrLmI8HNQz6Vhr9UrxDWtKZiMGsBw==}
/@commitlint/message/17.2.0:
resolution: {integrity: sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==}
engines: {node: '>=v14'}
dev: true
/@commitlint/parse/17.0.0:
resolution: {integrity: sha512-cKcpfTIQYDG1ywTIr5AG0RAiLBr1gudqEsmAGCTtj8ffDChbBRxm6xXs2nv7GvmJN7msOt7vOKleLvcMmRa1+A==}
/@commitlint/parse/17.2.0:
resolution: {integrity: sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==}
engines: {node: '>=v14'}
dependencies:
'@commitlint/types': 17.0.0
......@@ -531,8 +535,8 @@ packages:
conventional-commits-parser: 3.2.4
dev: true
/@commitlint/read/17.1.0:
resolution: {integrity: sha512-73BoFNBA/3Ozo2JQvGsE0J8SdrJAWGfZQRSHqvKaqgmY042Su4gXQLqvAzgr55S9DI1l9TiU/5WDuh8IE86d/g==}
/@commitlint/read/17.2.0:
resolution: {integrity: sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==}
engines: {node: '>=v14'}
dependencies:
'@commitlint/top-level': 17.0.0
......@@ -554,12 +558,12 @@ packages:
resolve-global: 1.0.0
dev: true
/@commitlint/rules/17.0.0:
resolution: {integrity: sha512-45nIy3dERKXWpnwX9HeBzK5SepHwlDxdGBfmedXhL30fmFCkJOdxHyOJsh0+B0RaVsLGT01NELpfzJUmtpDwdQ==}
/@commitlint/rules/17.2.0:
resolution: {integrity: sha512-1YynwD4Eh7HXZNpqG8mtUlL2pSX2jBy61EejYJv4ooZPcg50Ak7LPOyD3a9UZnsE76AXWFBz+yo9Hv4MIpAa0Q==}
engines: {node: '>=v14'}
dependencies:
'@commitlint/ensure': 17.0.0
'@commitlint/message': 17.0.0
'@commitlint/message': 17.2.0
'@commitlint/to-lines': 17.0.0
'@commitlint/types': 17.0.0
execa: 5.1.1
......@@ -602,6 +606,24 @@ packages:
postcss-selector-parser: 6.0.10
dev: true
/@esbuild/android-arm/0.15.10:
resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-loong64/0.15.10:
resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@eslint/eslintrc/1.3.3:
resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
......@@ -645,8 +667,44 @@ packages:
qx-util: 0.4.4
dev: false
/@ibiz-template/model/0.0.1-alpha.37_yslesr4iih24kokbsmhl36awki:
resolution: {integrity: sha512-zWYTSd3/cHricqgYkrIz9HhlJgpFGNsr9alKvaEtxPx8dnIhevAf16VpbMtUZjJ/t6XclmXHF7e+5ri3i8d8aw==}
/@ibiz-template/controller/0.0.1-alpha.40_ih5ecz32a4ibmstgfcjyi3tpam:
resolution: {integrity: sha512-s9xXqRStODQBPvam7UVKx/U7oqj1yM/qHhZH+K0RMMLVEn/IoCp3ir1asjbgPSqBWxwJ4JM5ZIfvWm4dyyJxkg==}
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
'@ibiz-template/runtime': ^0.0.1-alpha.2
'@ibiz-template/service': ^0.0.1-alpha.2
lodash-es: ^4.17.21
qx-util: ^0.4.4
dependencies:
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki
'@ibiz-template/runtime': 0.0.1-alpha.40_5kdc272ska6i73jbiqdmud7zjq
'@ibiz-template/service': 0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u
async-validator: 4.2.5
dayjs: 1.11.6
lodash-es: 4.17.21
qx-util: 0.4.4
dev: false
/@ibiz-template/core/0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva:
resolution: {integrity: sha512-8O411O3StgmbohRkOhh1GkdSln3xH4CEIqBqc/sVtPw/1YuTP/LaLr8g/qfCiuq8KriVOk1IDkKMZrPrVqG7Qg==}
peerDependencies:
lodash-es: ^4.17.21
qx-util: ^0.4.4
dependencies:
axios: 1.1.3
lodash-es: 4.17.21
loglevel: 1.8.0
pluralize: 8.0.0
qs: 6.11.0
qx-util: 0.4.4
transitivePeerDependencies:
- debug
dev: false
/@ibiz-template/model/0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki:
resolution: {integrity: sha512-HPpCR8W6enEjWxGdYdDKJJdirO4Qx5dIpYNfZVrmhHX7dd+Ov9OnpunnIXeTLk8RFzFfQEf9ZuOTziU7QX5dfg==}
peerDependencies:
'@ibiz/dynamic-model-api': ^2.1.5
lodash-es: ^4.17.21
......@@ -658,8 +716,59 @@ packages:
qx-util: 0.4.4
dev: false
/@ibiz-template/theme/0.0.1-alpha.37:
resolution: {integrity: sha512-pEYPg1SRsVpJUeg9yf8Lwq8VlpcCzCGbeO8yorBF64HwYk3KrkW5XpQOsboSsN6MFL5/buHeSq05diKqgZNpWw==}
/@ibiz-template/runtime/0.0.1-alpha.40_5kdc272ska6i73jbiqdmud7zjq:
resolution: {integrity: sha512-QnGZ9A32caNbPUyhHP3+rNJBM6HdxKxJh4FgNvtlpuiNga9Cw8vG0OHmM9LkMZFs4u6Gu79fationwJIBducqA==}
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
'@ibiz-template/service': ^0.0.1-alpha.2
qx-util: ^0.4.4
dependencies:
'@ibiz-template/command': 0.0.1-alpha.37
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki
'@ibiz-template/service': 0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u
qx-util: 0.4.4
dev: false
/@ibiz-template/service/0.0.1-alpha.40_q2gs43s4muf6wdt2kzef2bkl5u:
resolution: {integrity: sha512-DAcha7xUwxmpdC0fuL4InGlDAy2L9sABmoP3n5er8SXMzfGRKxlCt6cOtwwC5+P/4igCb/Uqv80Is8XWuqNDbg==}
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
qx-util: ^0.4.4
ramda: ^0.28.0
dependencies:
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki
qx-util: 0.4.4
ramda: 0.28.0
dev: false
/@ibiz-template/theme/0.0.1-alpha.40:
resolution: {integrity: sha512-e3R5XAhG23QgwZheW92vzZGf+CklnvE18UG+NJ2XsIORWVJfwxA3ix89/oFmA0sXUVX7+iI4SuhubhvbWu787A==}
dev: false
/@ibiz-template/vue-util/0.0.1-alpha.40_ugp54vtapc454oxcr74b5b6rda:
resolution: {integrity: sha512-dSLVzVA0b3bHe2Y4eOvcCCauCawYE0L2PTimgeYieVK36KGSk5wbA75JLaDJJyXhNYU3tbtK3TV9fS0EvU9upw==}
peerDependencies:
'@ibiz-template/controller': '>=0.0.1-alpha.2'
'@ibiz-template/core': '>=0.0.1-alpha.2'
'@ibiz-template/model': '>=0.0.1-alpha.2'
qs: ^6.11.0
qx-util: ^0.4.4
ramda: ^0.28.0
vue: ^2.7.13
vue-router: ^3.6.5
dependencies:
'@ibiz-template/controller': 0.0.1-alpha.40_ih5ecz32a4ibmstgfcjyi3tpam
'@ibiz-template/core': 0.0.1-alpha.40_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.39_yslesr4iih24kokbsmhl36awki
qs: 6.11.0
qx-util: 0.4.4
ramda: 0.28.0
vue: 2.7.13
vue-router: 3.6.5_vue@2.7.13
dev: false
/@ibiz/dynamic-model-api/2.1.5_qx-util@0.4.4:
......@@ -804,8 +913,8 @@ packages:
resolution: {integrity: sha512-DcTUcwT9xEcf4rp2UHyGAcmlqG4Mhe7acozl5vY2xzSrwP1z19ZVyjzQ6DsNUrvIadpiyZoQCTHFt4t2omYIZQ==}
dev: true
/@types/node/18.11.8:
resolution: {integrity: sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==}
/@types/node/18.11.9:
resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==}
dev: true
/@types/normalize-package-data/2.4.1:
......@@ -816,6 +925,10 @@ packages:
resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
dev: true
/@types/path-browserify/1.0.0:
resolution: {integrity: sha512-XMCcyhSvxcch8b7rZAtFAaierBYdeHXVvg2iYnxOV0MCQHmPuRRmGZPFDRzPayxcGiiSL1Te9UIO+f3cuj0tfw==}
dev: true
/@types/qs/6.9.7:
resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==}
dev: true
......@@ -834,8 +947,8 @@ packages:
resolution: {integrity: sha512-d1M6eDKBGWx7RbYy295VEFoOF9YDJkPI959QYnmzcmeaV+SP4D0xV7dEh3sN5XF3GvO3PhGzm+17Z598nvHQuQ==}
dev: true
/@typescript-eslint/eslint-plugin/5.41.0_huremdigmcnkianavgfk3x6iou:
resolution: {integrity: sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==}
/@typescript-eslint/eslint-plugin/5.42.0_6xw5wg2354iw4zujk2f3vyfrzu:
resolution: {integrity: sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/parser': ^5.0.0
......@@ -845,13 +958,14 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/scope-manager': 5.41.0
'@typescript-eslint/type-utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/parser': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/scope-manager': 5.42.0
'@typescript-eslint/type-utils': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/utils': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
debug: 4.3.4
eslint: 8.26.0
ignore: 5.2.0
natural-compare-lite: 1.4.0
regexpp: 3.2.0
semver: 7.3.7
tsutils: 3.21.0_typescript@4.8.4
......@@ -860,8 +974,8 @@ packages:
- supports-color
dev: true
/@typescript-eslint/parser/5.41.0_wyqvi574yv7oiwfeinomdzmc3m:
resolution: {integrity: sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==}
/@typescript-eslint/parser/5.42.0_wyqvi574yv7oiwfeinomdzmc3m:
resolution: {integrity: sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
......@@ -870,9 +984,9 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/scope-manager': 5.41.0
'@typescript-eslint/types': 5.41.0
'@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
'@typescript-eslint/scope-manager': 5.42.0
'@typescript-eslint/types': 5.42.0
'@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4
debug: 4.3.4
eslint: 8.26.0
typescript: 4.8.4
......@@ -880,16 +994,16 @@ packages:
- supports-color
dev: true
/@typescript-eslint/scope-manager/5.41.0:
resolution: {integrity: sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==}
/@typescript-eslint/scope-manager/5.42.0:
resolution: {integrity: sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.41.0
'@typescript-eslint/visitor-keys': 5.41.0
'@typescript-eslint/types': 5.42.0
'@typescript-eslint/visitor-keys': 5.42.0
dev: true
/@typescript-eslint/type-utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m:
resolution: {integrity: sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==}
/@typescript-eslint/type-utils/5.42.0_wyqvi574yv7oiwfeinomdzmc3m:
resolution: {integrity: sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '*'
......@@ -898,8 +1012,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
'@typescript-eslint/utils': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4
'@typescript-eslint/utils': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
debug: 4.3.4
eslint: 8.26.0
tsutils: 3.21.0_typescript@4.8.4
......@@ -908,13 +1022,13 @@ packages:
- supports-color
dev: true
/@typescript-eslint/types/5.41.0:
resolution: {integrity: sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==}
/@typescript-eslint/types/5.42.0:
resolution: {integrity: sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
/@typescript-eslint/typescript-estree/5.41.0_typescript@4.8.4:
resolution: {integrity: sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==}
/@typescript-eslint/typescript-estree/5.42.0_typescript@4.8.4:
resolution: {integrity: sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
typescript: '*'
......@@ -922,8 +1036,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/types': 5.41.0
'@typescript-eslint/visitor-keys': 5.41.0
'@typescript-eslint/types': 5.42.0
'@typescript-eslint/visitor-keys': 5.42.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
......@@ -934,17 +1048,17 @@ packages:
- supports-color
dev: true
/@typescript-eslint/utils/5.41.0_wyqvi574yv7oiwfeinomdzmc3m:
resolution: {integrity: sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==}
/@typescript-eslint/utils/5.42.0_wyqvi574yv7oiwfeinomdzmc3m:
resolution: {integrity: sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@types/json-schema': 7.0.11
'@types/semver': 7.3.12
'@typescript-eslint/scope-manager': 5.41.0
'@typescript-eslint/types': 5.41.0
'@typescript-eslint/typescript-estree': 5.41.0_typescript@4.8.4
'@typescript-eslint/scope-manager': 5.42.0
'@typescript-eslint/types': 5.42.0
'@typescript-eslint/typescript-estree': 5.42.0_typescript@4.8.4
eslint: 8.26.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.26.0
......@@ -954,15 +1068,15 @@ packages:
- typescript
dev: true
/@typescript-eslint/visitor-keys/5.41.0:
resolution: {integrity: sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==}
/@typescript-eslint/visitor-keys/5.42.0:
resolution: {integrity: sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
'@typescript-eslint/types': 5.41.0
'@typescript-eslint/types': 5.42.0
eslint-visitor-keys: 3.3.0
dev: true
/@vitejs/plugin-legacy/2.3.0_terser@5.15.1+vite@3.2.1:
/@vitejs/plugin-legacy/2.3.0_terser@5.15.1+vite@3.2.2:
resolution: {integrity: sha512-Bh62i0gzQvvT8AeAAb78nOnqSYXypkRmQmOTImdPZ39meHR9e2une3AIFmVo4s1SDmcmJ6qj18Sa/lRc/14KaA==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
......@@ -975,10 +1089,10 @@ packages:
regenerator-runtime: 0.13.10
systemjs: 6.13.0
terser: 5.15.1
vite: 3.2.1_sass@1.55.0+terser@5.15.1
vite: 3.2.2_sass@1.55.0+terser@5.15.1
dev: true
/@vitejs/plugin-vue2-jsx/1.0.3_vite@3.2.1+vue@2.7.13:
/@vitejs/plugin-vue2-jsx/1.0.3_vite@3.2.2+vue@2.7.13:
resolution: {integrity: sha512-JdcmeuTCRfYkQ6wPIbg0IG43l/2SuAFAK0asWOmrNQ098CfFb86gfOfHLTr5s01qduMCdfl7JOoSgxOckQxvBg==}
engines: {node: '>=14.18.0'}
peerDependencies:
......@@ -990,20 +1104,20 @@ packages:
'@babel/plugin-transform-typescript': 7.18.12_@babel+core@7.18.10
'@rollup/pluginutils': 4.2.1
'@vue/babel-preset-jsx': 1.3.1_romgntqxla5e5td6u4nrnhdgey
vite: 3.2.1_sass@1.55.0+terser@5.15.1
vite: 3.2.2_sass@1.55.0+terser@5.15.1
vue: 2.7.13
transitivePeerDependencies:
- supports-color
dev: true
/@vitejs/plugin-vue2/2.0.0_vite@3.2.1+vue@2.7.13:
/@vitejs/plugin-vue2/2.0.0_vite@3.2.2+vue@2.7.13:
resolution: {integrity: sha512-VJOCDtBNcRv7kYLQRbbERDP0OqW0EKgMQp6wwbqZRpU3kg38OP891avx6Xl3szntGkf9mK4i8k3TjsAlmkzWFg==}
engines: {node: ^14.18.0 || >= 16.0.0}
peerDependencies:
vite: ^3.0.0
vue: ^2.7.0-0
dependencies:
vite: 3.2.1_sass@1.55.0+terser@5.15.1
vite: 3.2.2_sass@1.55.0+terser@5.15.1
vue: 2.7.13
dev: true
......@@ -1365,6 +1479,24 @@ packages:
resolution: {integrity: sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==}
dev: false
/async-validator/4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
dev: false
/asynckit/0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false
/axios/1.1.3:
resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==}
dependencies:
follow-redirects: 1.15.2
form-data: 4.0.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
dev: false
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
......@@ -1479,7 +1611,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: registry.npmmirror.com/fsevents/2.3.2
fsevents: 2.3.2
dev: true
/clean-stack/2.2.0:
......@@ -1547,6 +1679,13 @@ packages:
resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
dev: true
/combined-stream/1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
dev: false
/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: true
......@@ -1747,6 +1886,11 @@ packages:
object-keys: 1.1.1
dev: true
/delayed-stream/1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
dev: false
/diff/4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
......@@ -1852,34 +1996,214 @@ packages:
is-symbol: 1.0.4
dev: true
/esbuild-android-64/0.15.10:
resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
/esbuild-android-arm64/0.15.10:
resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/esbuild-darwin-64/0.15.10:
resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/esbuild-darwin-arm64/0.15.10:
resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/esbuild-freebsd-64/0.15.10:
resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/esbuild-freebsd-arm64/0.15.10:
resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-32/0.15.10:
resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-64/0.15.10:
resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-arm/0.15.10:
resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-arm64/0.15.10:
resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-mips64le/0.15.10:
resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-ppc64le/0.15.10:
resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-riscv64/0.15.10:
resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-linux-s390x/0.15.10:
resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
/esbuild-netbsd-64/0.15.10:
resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/esbuild-openbsd-64/0.15.10:
resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/esbuild-sunos-64/0.15.10:
resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-32/0.15.10:
resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-64/0.15.10:
resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild-windows-arm64/0.15.10:
resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/esbuild/0.15.10:
resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/android-arm': registry.npmmirror.com/@esbuild/android-arm/0.15.10
'@esbuild/linux-loong64': registry.npmmirror.com/@esbuild/linux-loong64/0.15.10
esbuild-android-64: registry.npmmirror.com/esbuild-android-64/0.15.10
esbuild-android-arm64: registry.npmmirror.com/esbuild-android-arm64/0.15.10
esbuild-darwin-64: registry.npmmirror.com/esbuild-darwin-64/0.15.10
esbuild-darwin-arm64: registry.npmmirror.com/esbuild-darwin-arm64/0.15.10
esbuild-freebsd-64: registry.npmmirror.com/esbuild-freebsd-64/0.15.10
esbuild-freebsd-arm64: registry.npmmirror.com/esbuild-freebsd-arm64/0.15.10
esbuild-linux-32: registry.npmmirror.com/esbuild-linux-32/0.15.10
esbuild-linux-64: registry.npmmirror.com/esbuild-linux-64/0.15.10
esbuild-linux-arm: registry.npmmirror.com/esbuild-linux-arm/0.15.10
esbuild-linux-arm64: registry.npmmirror.com/esbuild-linux-arm64/0.15.10
esbuild-linux-mips64le: registry.npmmirror.com/esbuild-linux-mips64le/0.15.10
esbuild-linux-ppc64le: registry.npmmirror.com/esbuild-linux-ppc64le/0.15.10
esbuild-linux-riscv64: registry.npmmirror.com/esbuild-linux-riscv64/0.15.10
esbuild-linux-s390x: registry.npmmirror.com/esbuild-linux-s390x/0.15.10
esbuild-netbsd-64: registry.npmmirror.com/esbuild-netbsd-64/0.15.10
esbuild-openbsd-64: registry.npmmirror.com/esbuild-openbsd-64/0.15.10
esbuild-sunos-64: registry.npmmirror.com/esbuild-sunos-64/0.15.10
esbuild-windows-32: registry.npmmirror.com/esbuild-windows-32/0.15.10
esbuild-windows-64: registry.npmmirror.com/esbuild-windows-64/0.15.10
esbuild-windows-arm64: registry.npmmirror.com/esbuild-windows-arm64/0.15.10
'@esbuild/android-arm': 0.15.10
'@esbuild/linux-loong64': 0.15.10
esbuild-android-64: 0.15.10
esbuild-android-arm64: 0.15.10
esbuild-darwin-64: 0.15.10
esbuild-darwin-arm64: 0.15.10
esbuild-freebsd-64: 0.15.10
esbuild-freebsd-arm64: 0.15.10
esbuild-linux-32: 0.15.10
esbuild-linux-64: 0.15.10
esbuild-linux-arm: 0.15.10
esbuild-linux-arm64: 0.15.10
esbuild-linux-mips64le: 0.15.10
esbuild-linux-ppc64le: 0.15.10
esbuild-linux-riscv64: 0.15.10
esbuild-linux-s390x: 0.15.10
esbuild-netbsd-64: 0.15.10
esbuild-openbsd-64: 0.15.10
esbuild-sunos-64: 0.15.10
esbuild-windows-32: 0.15.10
esbuild-windows-64: 0.15.10
esbuild-windows-arm64: 0.15.10
dev: true
/escalade/3.1.1:
......@@ -1906,7 +2230,7 @@ packages:
dependencies:
confusing-browser-globals: 1.0.11
eslint: 8.26.0
eslint-plugin-import: 2.26.0_c2flhriocdzler6lrwbyxxyoca
eslint-plugin-import: 2.26.0_5aea5dp4n23mfv4y2mmjxole3e
object.assign: 4.1.3
object.entries: 1.1.5
semver: 6.3.0
......@@ -1930,7 +2254,7 @@ packages:
- supports-color
dev: true
/eslint-module-utils/2.7.4_pz3cez6sklduddwkjesjihuniu:
/eslint-module-utils/2.7.4_yytd4qhylm3dyr3j4r4rwmq2vy:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
peerDependencies:
......@@ -1951,7 +2275,7 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/parser': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
debug: 3.2.7
eslint: 8.26.0
eslint-import-resolver-node: 0.3.6
......@@ -1959,7 +2283,7 @@ packages:
- supports-color
dev: true
/eslint-plugin-import/2.26.0_c2flhriocdzler6lrwbyxxyoca:
/eslint-plugin-import/2.26.0_5aea5dp4n23mfv4y2mmjxole3e:
resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==}
engines: {node: '>=4'}
peerDependencies:
......@@ -1969,14 +2293,14 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 5.41.0_wyqvi574yv7oiwfeinomdzmc3m
'@typescript-eslint/parser': 5.42.0_wyqvi574yv7oiwfeinomdzmc3m
array-includes: 3.1.5
array.prototype.flat: 1.3.0
debug: 2.6.9
doctrine: 2.1.0
eslint: 8.26.0
eslint-import-resolver-node: 0.3.6
eslint-module-utils: 2.7.4_pz3cez6sklduddwkjesjihuniu
eslint-module-utils: 2.7.4_yytd4qhylm3dyr3j4r4rwmq2vy
has: 1.0.3
is-core-module: 2.10.0
is-glob: 4.0.3
......@@ -2007,8 +2331,8 @@ packages:
prettier-linter-helpers: 1.0.0
dev: true
/eslint-plugin-vue/9.6.0_eslint@8.26.0:
resolution: {integrity: sha512-zzySkJgVbFCylnG2+9MDF7N+2Rjze2y0bF8GyUNpFOnT8mCMfqqtLDJkHBuYu9N/psW1A6DVbQhPkP92E+qakA==}
/eslint-plugin-vue/9.7.0_eslint@8.26.0:
resolution: {integrity: sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
......@@ -2261,6 +2585,25 @@ packages:
resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==}
dev: true
/follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
debug:
optional: true
dev: false
/form-data/4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
dev: false
/fs-extra/10.1.0:
resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
engines: {node: '>=12'}
......@@ -2274,6 +2617,14 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
/fsevents/2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: true
optional: true
/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
......@@ -2786,7 +3137,7 @@ packages:
dependencies:
universalify: 2.0.0
optionalDependencies:
graceful-fs: registry.npmmirror.com/graceful-fs/4.2.10
graceful-fs: 4.2.10
dev: true
/jsonparse/1.3.1:
......@@ -2910,6 +3261,11 @@ packages:
wrap-ansi: 6.2.0
dev: true
/loglevel/1.8.0:
resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==}
engines: {node: '>= 0.6.0'}
dev: false
/lru-cache/6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
......@@ -3000,6 +3356,18 @@ packages:
picomatch: 2.3.1
dev: true
/mime-db/1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
dev: false
/mime-types/2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.52.0
dev: false
/mimic-fn/2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
......@@ -3062,6 +3430,10 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
/natural-compare-lite/1.4.0:
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
dev: true
/natural-compare/1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
......@@ -3248,6 +3620,10 @@ packages:
lines-and-columns: 1.2.4
dev: true
/path-browserify/1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
dev: false
/path-exists/4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
......@@ -3391,6 +3767,10 @@ packages:
hasBin: true
dev: true
/proxy-from-env/1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
dev: false
/punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'}
......@@ -3566,7 +3946,7 @@ packages:
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: registry.npmmirror.com/fsevents/2.3.2
fsevents: 2.3.2
dev: true
/rollup/2.79.1:
......@@ -3574,7 +3954,7 @@ packages:
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: registry.npmmirror.com/fsevents/2.3.2
fsevents: 2.3.2
dev: true
/run-parallel/1.2.0:
......@@ -4222,7 +4602,7 @@ packages:
vue: 2.7.13
dev: false
/vite-plugin-eslint/1.8.1_eslint@8.26.0+vite@3.2.1:
/vite-plugin-eslint/1.8.1_eslint@8.26.0+vite@3.2.2:
resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==}
peerDependencies:
eslint: '>=7'
......@@ -4232,11 +4612,11 @@ packages:
'@types/eslint': 8.4.5
eslint: 8.26.0
rollup: 2.78.1
vite: 3.2.1_sass@1.55.0+terser@5.15.1
vite: 3.2.2_sass@1.55.0+terser@5.15.1
dev: true
/vite/3.2.1_sass@1.55.0+terser@5.15.1:
resolution: {integrity: sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==}
/vite/3.2.2_sass@1.55.0+terser@5.15.1:
resolution: {integrity: sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
peerDependencies:
......@@ -4264,7 +4644,7 @@ packages:
sass: 1.55.0
terser: 5.15.1
optionalDependencies:
fsevents: registry.npmmirror.com/fsevents/2.3.2
fsevents: 2.3.2
dev: true
/vue-demi/0.13.8_vue@2.7.13:
......@@ -4448,548 +4828,3 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
dev: true
registry.npmmirror.com/@esbuild/android-arm/0.15.10:
resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.15.10.tgz}
name: '@esbuild/android-arm'
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/@esbuild/linux-loong64/0.15.10:
resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz}
name: '@esbuild/linux-loong64'
version: 0.15.10
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/@ibiz-template/command/0.0.1-alpha.37:
resolution: {integrity: sha512-7KPS16osgsOHgPekTC8W2SKMtVIF4lsY6XP5IPttkQiZU6nhBDLs4MoRyRvhHPA30aKHzgxmYT/Whl186apoqg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ibiz-template/command/-/command-0.0.1-alpha.37.tgz}
name: '@ibiz-template/command'
version: 0.0.1-alpha.37
dependencies:
qx-util: registry.npmmirror.com/qx-util/0.4.4
dev: false
registry.npmmirror.com/@ibiz-template/controller/0.0.1-alpha.38_yqoflx6tyrgc3xn2pq7rnnu37y:
resolution: {integrity: sha512-liZ/GgNy8NdpwVwilLA3HTjgvcIUJVkCuoHkBDo2LLV4TJOBCfcLQ5ongYcEpdditQsbOsmT546n4WqbZ4u7RA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ibiz-template/controller/-/controller-0.0.1-alpha.38.tgz}
id: registry.npmmirror.com/@ibiz-template/controller/0.0.1-alpha.38
name: '@ibiz-template/controller'
version: 0.0.1-alpha.38
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
'@ibiz-template/runtime': ^0.0.1-alpha.2
'@ibiz-template/service': ^0.0.1-alpha.2
lodash-es: ^4.17.21
qx-util: ^0.4.4
dependencies:
'@ibiz-template/core': registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.37_yslesr4iih24kokbsmhl36awki
'@ibiz-template/runtime': registry.npmmirror.com/@ibiz-template/runtime/0.0.1-alpha.38_5ooxsv6w6zvwkcvqaz3yejcoce
'@ibiz-template/service': registry.npmmirror.com/@ibiz-template/service/0.0.1-alpha.38_dy5ruincxm3jghhrylh5xzurr4
async-validator: registry.npmmirror.com/async-validator/4.2.5
dayjs: registry.npmmirror.com/dayjs/1.11.6
lodash-es: 4.17.21
qx-util: 0.4.4
dev: false
registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38_qzytosuu5eg3bvoa74ldx6evva:
resolution: {integrity: sha512-zLUXmu+iZvtm1uBroX0eVbaRebJsGZaGhaf1ZJ3fqfm1MF5H0pHpQMKf9V+gqtbUL0z6OyyQKKdQgUdCAL7kEg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ibiz-template/core/-/core-0.0.1-alpha.38.tgz}
id: registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38
name: '@ibiz-template/core'
version: 0.0.1-alpha.38
peerDependencies:
lodash-es: ^4.17.21
qx-util: ^0.4.4
dependencies:
axios: registry.npmmirror.com/axios/1.1.3
lodash-es: 4.17.21
loglevel: registry.npmmirror.com/loglevel/1.8.0
pluralize: registry.npmmirror.com/pluralize/8.0.0
qs: registry.npmmirror.com/qs/6.11.0
qx-util: 0.4.4
transitivePeerDependencies:
- debug
dev: false
registry.npmmirror.com/@ibiz-template/runtime/0.0.1-alpha.38_5ooxsv6w6zvwkcvqaz3yejcoce:
resolution: {integrity: sha512-TyNzpyDiQ8Gmyv3jrGcMXbkqbQpR021Wmqur2FYcUrh9wbiaYvMKf5ccLF9BaXRA5Jxmxklz10OHtw0ZVAgbGQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.38.tgz}
id: registry.npmmirror.com/@ibiz-template/runtime/0.0.1-alpha.38
name: '@ibiz-template/runtime'
version: 0.0.1-alpha.38
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
'@ibiz-template/service': ^0.0.1-alpha.2
qx-util: ^0.4.4
dependencies:
'@ibiz-template/command': registry.npmmirror.com/@ibiz-template/command/0.0.1-alpha.37
'@ibiz-template/core': registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.37_yslesr4iih24kokbsmhl36awki
'@ibiz-template/service': registry.npmmirror.com/@ibiz-template/service/0.0.1-alpha.38_dy5ruincxm3jghhrylh5xzurr4
qx-util: 0.4.4
dev: false
registry.npmmirror.com/@ibiz-template/service/0.0.1-alpha.38_dy5ruincxm3jghhrylh5xzurr4:
resolution: {integrity: sha512-IXGuuDywAtXtTCY8uF4H0jyTxZvEvwXTeGX/5kiR9Bo3rChz1WVTYi9nQRSokav5C9fdLrE1OwPON1SU/kaUHg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ibiz-template/service/-/service-0.0.1-alpha.38.tgz}
id: registry.npmmirror.com/@ibiz-template/service/0.0.1-alpha.38
name: '@ibiz-template/service'
version: 0.0.1-alpha.38
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
qx-util: ^0.4.4
ramda: ^0.28.0
dependencies:
'@ibiz-template/core': registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.37_yslesr4iih24kokbsmhl36awki
qx-util: 0.4.4
ramda: 0.28.0
dev: false
registry.npmmirror.com/@ibiz-template/vue-util/0.0.1-alpha.38_xulrwzb6nqtsdm2k5bvzegenbu:
resolution: {integrity: sha512-Ukch5xUSBaqQySncfWwXbK/xmRyhfB66vDs4Fpch+YLABwU44Az/IHUYCUuAtUWD3I6nCrvyb8hef+9M3GKLBg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.38.tgz}
id: registry.npmmirror.com/@ibiz-template/vue-util/0.0.1-alpha.38
name: '@ibiz-template/vue-util'
version: 0.0.1-alpha.38
peerDependencies:
'@ibiz-template/controller': '>=0.0.1-alpha.2'
'@ibiz-template/core': '>=0.0.1-alpha.2'
'@ibiz-template/model': '>=0.0.1-alpha.2'
qs: ^6.11.0
qx-util: ^0.4.4
vue: ^2.7.13
vue-router: ^3.6.5
dependencies:
'@ibiz-template/controller': registry.npmmirror.com/@ibiz-template/controller/0.0.1-alpha.38_yqoflx6tyrgc3xn2pq7rnnu37y
'@ibiz-template/core': registry.npmmirror.com/@ibiz-template/core/0.0.1-alpha.38_qzytosuu5eg3bvoa74ldx6evva
'@ibiz-template/model': 0.0.1-alpha.37_yslesr4iih24kokbsmhl36awki
qs: 6.11.0
qx-util: 0.4.4
vue: 2.7.13
vue-router: 3.6.5_vue@2.7.13
dev: false
registry.npmmirror.com/async-validator/4.2.5:
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz}
name: async-validator
version: 4.2.5
dev: false
registry.npmmirror.com/asynckit/0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz}
name: asynckit
version: 0.4.0
dev: false
registry.npmmirror.com/axios/1.1.3:
resolution: {integrity: sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/axios/-/axios-1.1.3.tgz}
name: axios
version: 1.1.3
dependencies:
follow-redirects: registry.npmmirror.com/follow-redirects/1.15.2
form-data: registry.npmmirror.com/form-data/4.0.0
proxy-from-env: registry.npmmirror.com/proxy-from-env/1.1.0
transitivePeerDependencies:
- debug
dev: false
registry.npmmirror.com/call-bind/1.0.2:
resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz}
name: call-bind
version: 1.0.2
dependencies:
function-bind: registry.npmmirror.com/function-bind/1.1.1
get-intrinsic: registry.npmmirror.com/get-intrinsic/1.1.2
dev: false
registry.npmmirror.com/combined-stream/1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz}
name: combined-stream
version: 1.0.8
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: registry.npmmirror.com/delayed-stream/1.0.0
dev: false
registry.npmmirror.com/dayjs/1.11.6:
resolution: {integrity: sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dayjs/-/dayjs-1.11.6.tgz}
name: dayjs
version: 1.11.6
dev: false
registry.npmmirror.com/delayed-stream/1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz}
name: delayed-stream
version: 1.0.0
engines: {node: '>=0.4.0'}
dev: false
registry.npmmirror.com/esbuild-android-64/0.15.10:
resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz}
name: esbuild-android-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-android-arm64/0.15.10:
resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz}
name: esbuild-android-arm64
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-darwin-64/0.15.10:
resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz}
name: esbuild-darwin-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-darwin-arm64/0.15.10:
resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz}
name: esbuild-darwin-arm64
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-freebsd-64/0.15.10:
resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz}
name: esbuild-freebsd-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-freebsd-arm64/0.15.10:
resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz}
name: esbuild-freebsd-arm64
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-32/0.15.10:
resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz}
name: esbuild-linux-32
version: 0.15.10
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-64/0.15.10:
resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz}
name: esbuild-linux-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-arm/0.15.10:
resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz}
name: esbuild-linux-arm
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-arm64/0.15.10:
resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz}
name: esbuild-linux-arm64
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-mips64le/0.15.10:
resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz}
name: esbuild-linux-mips64le
version: 0.15.10
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-ppc64le/0.15.10:
resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz}
name: esbuild-linux-ppc64le
version: 0.15.10
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-riscv64/0.15.10:
resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz}
name: esbuild-linux-riscv64
version: 0.15.10
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-linux-s390x/0.15.10:
resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz}
name: esbuild-linux-s390x
version: 0.15.10
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-netbsd-64/0.15.10:
resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz}
name: esbuild-netbsd-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-openbsd-64/0.15.10:
resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz}
name: esbuild-openbsd-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-sunos-64/0.15.10:
resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz}
name: esbuild-sunos-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-windows-32/0.15.10:
resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz}
name: esbuild-windows-32
version: 0.15.10
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-windows-64/0.15.10:
resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz}
name: esbuild-windows-64
version: 0.15.10
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/esbuild-windows-arm64/0.15.10:
resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz}
name: esbuild-windows-arm64
version: 0.15.10
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz}
name: follow-redirects
version: 1.15.2
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
debug:
optional: true
dev: false
registry.npmmirror.com/form-data/4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz}
name: form-data
version: 4.0.0
engines: {node: '>= 6'}
dependencies:
asynckit: registry.npmmirror.com/asynckit/0.4.0
combined-stream: registry.npmmirror.com/combined-stream/1.0.8
mime-types: registry.npmmirror.com/mime-types/2.1.35
dev: false
registry.npmmirror.com/fsevents/2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
name: fsevents
version: 2.3.2
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
name: function-bind
version: 1.1.1
dev: false
registry.npmmirror.com/get-intrinsic/1.1.2:
resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz}
name: get-intrinsic
version: 1.1.2
dependencies:
function-bind: registry.npmmirror.com/function-bind/1.1.1
has: registry.npmmirror.com/has/1.0.3
has-symbols: registry.npmmirror.com/has-symbols/1.0.3
dev: false
registry.npmmirror.com/graceful-fs/4.2.10:
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz}
name: graceful-fs
version: 4.2.10
requiresBuild: true
dev: true
optional: true
registry.npmmirror.com/has-symbols/1.0.3:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz}
name: has-symbols
version: 1.0.3
engines: {node: '>= 0.4'}
dev: false
registry.npmmirror.com/has/1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz}
name: has
version: 1.0.3
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: registry.npmmirror.com/function-bind/1.1.1
dev: false
registry.npmmirror.com/loglevel/1.8.0:
resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz}
name: loglevel
version: 1.8.0
engines: {node: '>= 0.6.0'}
dev: false
registry.npmmirror.com/mime-db/1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz}
name: mime-db
version: 1.52.0
engines: {node: '>= 0.6'}
dev: false
registry.npmmirror.com/mime-types/2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz}
name: mime-types
version: 2.1.35
engines: {node: '>= 0.6'}
dependencies:
mime-db: registry.npmmirror.com/mime-db/1.52.0
dev: false
registry.npmmirror.com/object-inspect/1.12.2:
resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz}
name: object-inspect
version: 1.12.2
dev: false
registry.npmmirror.com/pluralize/8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pluralize/-/pluralize-8.0.0.tgz}
name: pluralize
version: 8.0.0
engines: {node: '>=4'}
dev: false
registry.npmmirror.com/proxy-from-env/1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz}
name: proxy-from-env
version: 1.1.0
dev: false
registry.npmmirror.com/qs/6.11.0:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz}
name: qs
version: 6.11.0
engines: {node: '>=0.6'}
dependencies:
side-channel: registry.npmmirror.com/side-channel/1.0.4
dev: false
registry.npmmirror.com/qx-util/0.4.4:
resolution: {integrity: sha512-0jKxKmPvJz7MFVi10bEqmaX3+WPjdV38UzhqWkuWMEElIwkWvD5fdtSHyCeNiOWla7CYE9pGCe+s1SAZDpvqNw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/qx-util/-/qx-util-0.4.4.tgz}
name: qx-util
version: 0.4.4
dev: false
registry.npmmirror.com/side-channel/1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz}
name: side-channel
version: 1.0.4
dependencies:
call-bind: registry.npmmirror.com/call-bind/1.0.2
get-intrinsic: registry.npmmirror.com/get-intrinsic/1.1.2
object-inspect: registry.npmmirror.com/object-inspect/1.12.2
dev: false
......@@ -5,7 +5,6 @@ import { install as installService } from '@ibiz-template/service';
import { install as installRuntime } from '@ibiz-template/runtime';
import { install as installController } from '@ibiz-template/controller';
import { IViewRegister } from './i-view-register';
import UserRegister from './user-register';
import {
AppLayout,
ControlLayout,
......@@ -57,6 +56,8 @@ import {
} from './components/views';
import { IndexView } from './views';
import AppKeepAlive from './components/common/app-keep-alive/app-keep-alive.vue';
import { presetAllProviders } from './provider';
import { ViewShell } from './components/view-shell/view-shell';
import {
AppIcon,
ViewToolbar,
......@@ -72,27 +73,28 @@ import {
WfVersionSelect,
ExtendActionTimeLine,
ExtendActionGrid,
AppSelectTree,
} from './components/common';
// 编辑器组件
import IBizSpan from './components/editor/ibiz-span/ibiz-span';
import IBizInputBox from './components/editor/ibiz-input-box/ibiz-input-box';
import AppInputNumber from './components/editor/app-input-number/app-input-number';
import IBizCheckBoxList from './components/editor/ibiz-check-box-list/ibiz-check-box-list';
import IBizRadioButtonList from './components/editor/ibiz-radio-button-list/ibiz-radio-button-list';
import IBizDatePicker from './components/editor/ibiz-date-picker/ibiz-date-picker';
import IBizDropDownList from './components/editor/ibiz-dropdown-list/ibiz-dropdown-list';
import IBizPicker from './components/editor/ibiz-picker/ibiz-picker';
import AppSelectTree from './components/editor/app-select-tree/app-select-tree';
import IBizPickerDropDown from './components/editor/ibiz-picker-dropdown/ibiz-picker-dropdown';
import AppPickerLinkOnly from './components/editor/app-picker-linkonly/app-picker-linkonly';
import IBizMPicker from './components/editor/ibiz-mpicker/ibiz-mpicker';
import IBizFileUpload from './components/editor/ibiz-file-upload/ibiz-file-upload';
import AppFileUploadRowPreview from './components/editor/app-file-upload-row-preview/app-file-upload-row-preview';
import AppImageUpload from './components/editor/app-image-upload/app-image-upload';
import NotSupportedEditor from './components/editor/not-supported-editor/not-supported-editor';
import { presetAllProviders } from './provider';
import { ViewShell } from './components/view-shell/view-shell';
import {
IBizGridFileUpload,
IBizImageUpload,
IBizInputNumber,
IBizPickerLink,
IBizCheckbox,
IBizDatePicker,
IBizDropDownList,
IBizFileUpload,
IBizInput,
IBizMPicker,
IBizPicker,
IBizPickerDropDown,
IBizRadio,
IBizSpan,
NotSupportedEditor,
IBizGridInput,
IBizGridCheckbox,
} from './components/editor';
export const AppRegister = {
install(v: VueConstructor) {
......@@ -166,25 +168,26 @@ export const AppRegister = {
v.component('WfVersionSelect', WfVersionSelect);
v.component('ExtendActionTimeLine', ExtendActionTimeLine);
v.component('ExtendActionGrid', ExtendActionGrid);
v.component('AppSelectTree', AppSelectTree);
// 注册编辑器组件
v.component('IBizSpan', IBizSpan);
v.component('IBizInputBox', IBizInputBox);
v.component('AppInputNumber', AppInputNumber);
v.component('IBizCheckBoxList', IBizCheckBoxList);
v.component('IBizRadioButtonList', IBizRadioButtonList);
v.component('IBizInput', IBizInput);
v.component('IBizInputNumber', IBizInputNumber);
v.component('IBizCheckbox', IBizCheckbox);
v.component('IBizRadio', IBizRadio);
v.component('IBizDatePicker', IBizDatePicker);
v.component('IBizDropDownList', IBizDropDownList);
v.component('IBizPicker', IBizPicker);
v.component('IBizPickerDropDown', IBizPickerDropDown);
v.component('AppPickerLinkOnly', AppPickerLinkOnly);
v.component('IBizPickerLink', IBizPickerLink);
v.component('IBizMPicker', IBizMPicker);
v.component('IBizFileUpload', IBizFileUpload);
v.component('AppFileUploadRowPreview', AppFileUploadRowPreview);
v.component('AppImageUpload', AppImageUpload);
v.component('AppSelectTree', AppSelectTree);
v.component('IBizGridFileUpload', IBizGridFileUpload);
v.component('IBizImageUpload', IBizImageUpload);
v.component('QuickSearch', QuickSearch);
v.component('NotSupportedEditor', NotSupportedEditor);
// 扩展注册
v.use(UserRegister);
// 注册表格编辑器
v.component('IBizGridInput', IBizGridInput);
v.component('IBizGridCheckbox', IBizGridCheckbox);
},
};
import { Ref, ref, watch, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
export const AppSelectTree = defineComponent({
name: 'AppSelectTree',
props: {
value: {
type: String as PropType<Array<string> | string>,
},
multiple: {
type: Boolean,
},
nodesData: {
type: Array as PropType<IData[]>,
},
},
setup(props) {
const ns = useNamespace('app-select-tree');
const visible = ref(false);
const treeNodes: Ref<IData[]> = ref([]);
const handletreeNodes = (nodes: readonly IData[]) => {
if (nodes.length === 0) {
return [];
}
const list: IData[] = [];
nodes.forEach((codeItem: IData) => {
const tempObj: IData = {
title: codeItem.text,
value: codeItem.value,
children: [],
};
if (codeItem.children && codeItem.children.length > 0) {
tempObj.children = handletreeNodes(codeItem.children);
}
list.push(tempObj);
});
return list;
};
watch(
() => props.nodesData,
(newVal, oldVal) => {
if (newVal !== oldVal) {
treeNodes.value = handletreeNodes(newVal!);
}
},
{ immediate: true },
);
const triggerMenu = (_visible: boolean) => {
if (!_visible) {
visible.value = !visible.value;
} else {
visible.value = _visible;
}
};
return { ns, visible, treeNodes, triggerMenu };
},
render() {
return (
<div class={this.ns.b()}>
<i-dropdown
visible={this.visible}
trigger='custom'
transfer-class-name={this.ns.e('dropdown')}
transfer
on-on-clickoutside={() => {
this.triggerMenu(false);
}}
>
<div
on-click={() => {
this.triggerMenu(true);
}}
>
打开下拉树
</div>
<i-dropdownMenu slot='list'>
<i-tree data={this.treeNodes} show-checkbox></i-tree>
</i-dropdownMenu>
</i-dropdown>
</div>
);
},
});
......@@ -13,6 +13,7 @@ import { WfVersionSelect } from './wf-version-select/wf-version-select';
import { ExtendActionTimeLine } from './extend-action-timeline/extend-action-timeline';
import { ExtendActionGrid } from './extend-action-grid/extend-action-grid';
export { AppSelectTree } from '../common/app-select-tree/app-select-tree';
export {
AppIcon,
ViewToolbar,
......
import { computed, defineComponent, ref, watch } from 'vue';
import {
getCheckboxProps,
getEditorEmits,
useNamespace,
} from '@ibiz-template/vue-util';
import { isNil } from 'ramda';
import '@ibiz-template/theme/style/components/editor/ibiz-checkbox/ibiz-checkbox.scss';
export const IBizCheckbox = defineComponent({
name: 'IBizCheckbox',
props: getCheckboxProps(),
emits: getEditorEmits(),
setup(props, { emit }) {
const ns = useNamespace('checkbox');
const c = props.controller;
const editorModel = c.model;
const codeList = editorModel.codeList;
// 代码表数据
const items = ref<readonly IData[]>([]);
watch(
() => props.data,
newVal => {
c.loadCodeList(newVal).then(_codeList => {
items.value = _codeList;
});
},
{
immediate: true,
deep: true,
},
);
// 当前模式
const currentMode = computed(() => {
if (codeList && codeList.orMode) {
return codeList.orMode.toLowerCase();
}
return 'str';
});
// 值分隔符
let valueSeparator = ',';
if (codeList && codeList.valueSeparator) {
valueSeparator = codeList.valueSeparator;
}
// 选中数组
const selectArray = computed({
get() {
if (!isNil(props.value)) {
if (Object.is(currentMode.value, 'num') && items) {
const selectsArray: Array<string | number> = [];
const num: number =
typeof props.value === 'string'
? parseInt(props.value, 10)
: props.value;
items.value.forEach((item: IData) => {
// eslint-disable-next-line no-bitwise
if ((num & item.value) === item.value) {
selectsArray.push(item.value);
}
});
return selectsArray;
}
if (Object.is(currentMode.value, 'str')) {
const strVal = props.value! as String;
if (strVal !== '') {
if (codeList) {
const selects: Array<string | number> =
strVal.split(valueSeparator);
if (codeList.codeItemValueNumber) {
for (let i = 0, len = selects.length; i < len; i++) {
selects[i] = Number(selects[i]);
}
}
return selects;
}
return strVal.split(',');
}
}
}
return [];
},
set(val: Array<string | number>) {
let value: null | string | number | string[] = null;
if (Object.is(currentMode.value, 'num')) {
let temp: number = 0;
val.forEach(item => {
const numVal: number =
typeof item === 'string' ? parseInt(item, 10) : item;
// eslint-disable-next-line no-bitwise
temp |= numVal;
});
value = temp;
} else if (Object.is(currentMode.value, 'str')) {
const _datas: string[] = [];
if (items.value.length > 0) {
items.value.forEach((_item: IData) => {
const index = val.findIndex((_key: unknown) =>
Object.is(_item.value, _key),
);
if (index === -1) {
return;
}
_datas.push(_item.value);
});
value = _datas.join(valueSeparator);
}
}
emit('change', value);
},
});
const onSelectArrayChange = (value: Array<string | number>) => {
selectArray.value = value;
};
return {
ns,
items,
selectArray,
onSelectArrayChange,
};
},
render() {
return (
<div class={this.ns.b()}>
{this.infoMode ? (
this.value
) : (
<i-checkbox-group
value={this.selectArray}
on-on-change={this.onSelectArrayChange}
>
{this.items.map((_item, index: number) => (
<i-checkbox
key={index}
label={_item.value}
readonly={this.controller.model.readOnly}
>
<span class={this.ns.e('text')}>{_item.text}</span>
</i-checkbox>
))}
</i-checkbox-group>
)}
</div>
);
},
});
import { defineComponent } from 'vue';
import {
getGridInputProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-input/ibiz-input.scss';
export const IBizGridCheckbox = defineComponent({
name: 'IBizGridCheckbox',
props: getGridInputProps(),
setup(props) {
const ns = useNamespace('grid-checkbox');
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, {
isCacheValue: true,
});
return {
ns,
isInfoMode,
componentRef,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizCheckbox', {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
export { IBizCheckbox } from './ibiz-checkbox/ibiz-checkbox';
export { IBizGridCheckbox } from './ibiz-grid-checkbox/ibiz-grid-checkbox';
import { PickerEditorController } from '@ibiz-template/controller';
import { ref, watch, Ref, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-mpicker/ibiz-mpicker.scss';
export const IBizMPicker = defineComponent({
name: 'IBizMPicker',
props: {
value: {
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value: Array<string> | string | null, _tag?: string) => true,
},
setup(props, { emit }) {
const ns = useNamespace('mpicker');
const c = props.controller!;
// 当前表单项绑定值key的集合
const curValue: Ref<Array<string>> = ref([]);
// 实体数据集
const items: Ref<IData[]> = ref([]);
// 选中项key-value键值对
const selectItems: Ref<IData[]> = ref([]);
// 下拉是否打开
const open = ref(false);
// 加载中
const loading: Ref<boolean> = ref(false);
// 格式化值,把实体属性名格式化成srfkey和srfmajortext
const formatValue = (value: IData[]) => {
let result: IData[] = [];
if (c.keyName !== 'srfkey' || c.textName !== 'srfmajortext') {
value.forEach((item: IData) => {
result.push({
srfmajortext: item[c.textName] || item.srfmajortext,
srfkey: item[c.keyName],
});
});
} else {
result = value;
}
return result;
};
// 解析值,把srfkey和srfmajortext解析成实体属性名
const parseValue = (value: IData[]) => {
let result: IData[] = [];
if (c.keyName !== 'srfkey' || c.textName !== 'srfmajortext') {
value.forEach((item: IData) => {
result.push({
[c.textName]: item.srfmajortext,
[c.keyName]: item.srfkey,
});
});
} else {
result = value;
}
return result;
};
// 监听传入值
watch(
() => props.value,
newVal => {
curValue.value = [];
selectItems.value = [];
if (newVal) {
try {
selectItems.value = parseValue(JSON.parse(newVal));
selectItems.value.forEach((item: IData) => {
curValue.value.push(item[c.keyName]);
const index = items.value.findIndex(i =>
Object.is(i[c.keyName], item[c.keyName]),
);
if (index < 0) {
items.value.push({
[c.keyName]: item[c.keyName],
[c.textName]: item[c.textName] || item.srfmajortext,
});
}
});
} catch (error) {
if ((error as IData).name === 'SyntaxError') {
const srfkeys: string[] = newVal.split(',');
let srfmajortexts: string[] = [];
if (c.valueItem && props.data![c.valueItem]) {
srfmajortexts = props.data![c.valueItem].split(',');
}
if (
srfkeys &&
srfkeys.length > 0 &&
srfmajortexts &&
srfmajortexts.length > 0 &&
srfkeys.length === srfmajortexts.length
) {
srfkeys.forEach((id: string, index: number) => {
curValue.value.push(id);
selectItems.value.push({
[c.keyName]: id,
[c.textName]: srfmajortexts[index],
});
const _index = items.value.findIndex(i =>
Object.is(i[c.keyName], id),
);
if (_index < 0) {
items.value.push({
[c.keyName]: id,
[c.textName]: srfmajortexts[index],
});
}
});
}
}
}
}
},
{ immediate: true, deep: true },
);
// 处理视图关闭,往外抛值
const handleOpenViewClose = (result: IData[]) => {
const selects: IData[] = [];
if (result && Array.isArray(result)) {
result.forEach((select: IData) => {
selects.push({
[c.keyName]: select[c.keyName] || select.srfkey,
[c.textName]: select[c.textName] || select.srfmajortext,
});
const index = items.value.findIndex(item =>
Object.is(item[c.keyName], select[c.keyName]),
);
if (index < 0) {
items.value.push({
[c.textName]: select[c.textName] || select.srfmajortext,
[c.keyName]: select[c.keyName],
});
}
});
}
if (props.data) {
const value =
selects.length > 0 ? JSON.stringify(formatValue(selects)) : '';
emit('change', value);
}
};
// 打开数据选择视图
const openPickUpView = async () => {
// TODO 后续参数
// const _selectItems: IData[] = JSON.parse(JSON.stringify(selectItems.value));
// if (!Object.is(c.keyName, 'srfkey')) {
// _selectItems.forEach((item: IData, index: number) => {
// _selectItems[index].srfkey = item[c.keyName];
// });
// }
// if (!Object.is(c.textName, 'srfmajortext')) {
// _selectItems.forEach((item: IData, index: number) => {
// _selectItems[index].srfmajortext = item[c.textName] || item.srfmajortext;
// });
// }
// Object.assign(c.context, {
// srfparentdata: { srfparentkey: props.data[c.keyName] },
// });
// Object.assign(c.params, { selectedData: [..._selectItems] });
const res = await c.openPickUpView(props.data!);
if (res) {
handleOpenViewClose(res);
}
};
// 下拉选中回调
const onSelect = (selects: string[]) => {
const val: Array<IData> = [];
if (selects.length > 0) {
selects.forEach((select: string) => {
let index = items.value.findIndex(item =>
Object.is(item[c.keyName], select),
);
if (index >= 0) {
const item = items.value[index];
val.push({
[c.keyName]: item[c.keyName],
[c.textName]: item[c.textName] || item.srfmajortext,
});
} else {
index = selectItems.value.findIndex((item: IData) =>
Object.is(item[c.keyName], select),
);
if (index >= 0) {
const item = selectItems.value[index];
val.push(item);
}
}
});
const value = val.length > 0 ? JSON.stringify(formatValue(val)) : '';
emit('change', value);
} else {
emit('change', '');
}
};
// 搜索
const onSearch = async (query: string) => {
if (c.model.appDataEntity) {
loading.value = true;
try {
const res = await c.getServiceData(query, props.data!);
loading.value = false;
if (res) {
items.value = res.data as IData[];
}
} catch (error) {
loading.value = false;
}
}
};
// 下拉打开
const onSelectOpen = (flag: boolean) => {
open.value = flag;
if (open.value) {
items.value = [];
onSearch('');
}
};
return {
ns,
c,
curValue,
loading,
items,
onSearch,
onSelectOpen,
onSelect,
openPickUpView,
};
},
render() {
return (
<div class={this.ns.b()}>
<i-select
value={this.curValue}
filterable
multiple
loading={this.loading}
placeholder={this.c.placeHolder}
remote-method={this.onSearch}
on-on-open-change={this.onSelectOpen}
on-on-change={this.onSelect}
disabled={this.disabled}
>
{this.items.map((item, index) => {
return (
<i-option key={index} value={item[this.c.keyName]}>
{item[this.c.textName]}
</i-option>
);
})}
</i-select>
<div class={this.ns.e('btns')}>
{this.c.pickupView ? (
<i-button
icon='ios-search'
on-click={this.openPickUpView}
type={'text'}
></i-button>
) : null}
</div>
</div>
);
},
});
import { PickerEditorController } from '@ibiz-template/controller';
import { ref, Ref, watch, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { debounce } from 'lodash-es';
import { isNil } from 'ramda';
import '@ibiz-template/theme/style/components/editor/ibiz-picker-dropdown/ibiz-picker-dropdown.scss';
export const IBizPickerDropDown = defineComponent({
name: 'IBizPickerDropDown',
props: {
value: {
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
required: true,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value?: string | Array<string> | IData | null, _tag?: string) =>
true,
},
setup(props, { emit }) {
const ns = useNamespace('picker-dropdown');
const c = props.controller as PickerEditorController;
// 允许搜索
const allowSearch = ref(true);
// 当前值
const curValue: Ref<Array<string> | string | null> = ref('');
// 实体数据集
const items: Ref<IData[]> = ref([]);
// 是否显示所有数据
const isShowAll = ref(true);
watch(
() => props.value,
newVal => {
if (newVal || newVal === null) {
curValue.value = newVal;
const value = props.data[c.valueItem];
const index = items.value.findIndex((item: IData) =>
Object.is(item[c.keyName], value),
);
if (index !== -1) {
return;
}
// items里匹配不到当前值项值时,生成自身的选项
items.value = [];
if (!isNil(newVal) && !isNil(value)) {
items.value.push({ [c.textName]: newVal, [c.keyName]: value });
}
}
},
{ immediate: true },
);
// 获取关联数据项值
const refValue = ref('');
watch(
() => props.data[c.valueItem],
(newVal, oldVal) => {
if (newVal !== oldVal) {
refValue.value = newVal;
}
},
{ immediate: true, deep: true },
);
// 下拉是否打开
const open = ref(false);
// 加载中
const loading: Ref<boolean> = ref(false);
// 往外抛值
const onACSelect = async (item: IData) => {
// 处理回填数据
const dataItems = await c.calcFillDataItems(item);
if (dataItems.length) {
dataItems.forEach(dataItem => {
emit('change', dataItem.value, dataItem.name);
});
}
// 处理值项和本身的值
if (c.valueItem) {
emit('change', item[c.keyName], c.valueItem);
}
emit('change', item[c.textName]);
isShowAll.value = true;
};
// 值变更
const onSelect = (select: string | Array<string>) => {
const index = items.value.findIndex(item =>
Object.is(item[c.keyName], select),
);
if (index >= 0) {
onACSelect(items.value[index]);
}
};
// 在搜索中时,再次触发搜索记录搜索值,等待上次搜索触发完成后再次搜索
let waitQuery: string | null = null;
// 搜索
const onSearch = async (query: string) => {
if (c.model.appDataEntity && loading.value === false) {
loading.value = true;
try {
const res = await c.getServiceData(query, props.data!);
if (res) {
items.value = res.data as IData[];
}
} finally {
loading.value = false;
if (waitQuery != null) {
const selfQuery = waitQuery;
waitQuery = null;
await onSearch(selfQuery);
}
}
} else {
waitQuery = query;
}
};
// 搜索词改变时触发
const queryChange = debounce((query: string) => {
if (
(query !== curValue.value || curValue.value === null) &&
allowSearch.value
) {
isShowAll.value = false;
onSearch(query);
}
}, 1000);
// 下拉打开
const onSelectOpen = (flag: boolean) => {
open.value = flag;
if (open.value) {
allowSearch.value = true;
items.value = [];
const query = isShowAll.value ? '' : curValue.value;
onSearch(query as string);
}
};
// 清除
const onClear = () => {
// 清空回填数据
const dataItems = c.model.deACMode?.dataItems;
if (dataItems?.length) {
dataItems.forEach(dataItem => {
emit('change', null, dataItem.name);
});
}
if (c.valueItem) {
emit('change', null, c.valueItem);
}
emit('change', null);
};
return {
ns,
c,
refValue,
loading,
items,
isShowAll,
allowSearch,
onSearch,
queryChange,
onSelectOpen,
onClear,
onSelect,
};
},
render() {
return (
<div class={this.ns.b()}>
<i-select
value={this.refValue}
filterable
allow-clear
clearable
remote-method={this.queryChange}
loading={this.loading}
placeholder={this.c.placeHolder}
on-on-open-change={this.onSelectOpen}
on-on-change={this.onSelect}
on-on-clear={this.onClear}
disabled={this.disabled}
>
{this.items.map((item, index) => {
return (
<i-option value={item[this.c.keyName]} key={index}>
{item[this.c.textName]}
</i-option>
);
})}
</i-select>
</div>
);
},
});
import { PickerEditorController } from '@ibiz-template/controller';
import { defineComponent, PropType, ref, Ref, watch } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
export const IBizPickerLink = defineComponent({
name: 'IBizPickerLink',
props: {
value: {
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
},
},
emits: {
change: (_value: Array<string | number> | string, _tag?: string) => true,
},
setup(props, { emit }) {
const ns = useNamespace('picker-link');
const c = props.controller!;
const curValue: Ref<string> = ref('');
watch(
() => props.value,
(newVal, oldVal) => {
if (newVal && newVal !== oldVal) {
curValue.value = `${newVal}`;
}
},
{ immediate: true },
);
// 处理视图关闭,往外抛值
const handleOpenViewClose = (result: IData[]) => {
const item: IData = {};
if (result && Array.isArray(result)) {
Object.assign(item, result[0]);
}
if (c.valueItem) {
emit('change', item[c.keyName], c.valueItem);
}
emit('change', item[c.textName]);
};
// 打开数据链接视图
const openLinkView = async () => {
const res = await c.openLinkView(props.data!);
if (res) {
handleOpenViewClose(res);
}
};
return { ns, openLinkView, curValue };
},
render() {
return (
<div class={this.ns.b()}>
<a on-click={this.openLinkView}>{this.curValue}</a>
</div>
);
},
});
import { PickerEditorController } from '@ibiz-template/controller';
import { ref, watch, Ref, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { isEmpty } from 'ramda';
import '@ibiz-template/theme/style/components/editor/ibiz-picker/ibiz-picker.scss';
export const IBizPicker = defineComponent({
name: 'IBizPicker',
props: {
value: {
type: String,
},
controller: {
type: PickerEditorController,
},
data: {
type: Object as PropType<IData>,
required: true,
},
disabled: {
type: Boolean,
},
},
setup(props, { emit }) {
const ns = useNamespace('picker');
const c = props.controller!;
// 当前值
const curValue: Ref<Array<string> | string | null> = ref('');
// 实体数据集
const items: Ref<IData[]> = ref([]);
// 是否显示所有数据
const isShowAll = ref(true);
watch(
() => props.value,
newVal => {
if (newVal || newVal === null) {
curValue.value = newVal;
if (newVal === null) {
curValue.value = '';
}
const value = props.data[c.valueItem];
const index = items.value.findIndex((item: IData) =>
Object.is(item[c.keyName], value),
);
if (index !== -1) {
return;
}
// items里匹配不到当前值项值时,生成自身的选项
items.value = [];
if (!isEmpty(newVal) && !isEmpty(value)) {
items.value.push({ [c.textName]: newVal, [c.keyName]: value });
}
}
},
{ immediate: true },
);
// 处理选中数据后的处理逻辑
const handleDataSelect = async (data: IData) => {
// 处理回填数据
const dataItems = await c.calcFillDataItems(data);
if (dataItems.length) {
dataItems.forEach(dataItem => {
emit('change', dataItem.value, dataItem.name);
});
}
// 处理值项和本身的值
if (c.valueItem) {
emit('change', data[c.keyName], c.valueItem);
}
emit('change', data[c.textName]);
};
// 打开数据选择视图
const openPickUpView = async () => {
const res = await c.openPickUpView(props.data);
if (res && res[0]) {
await handleDataSelect(res[0]);
}
};
// 打开数据链接视图
const openLinkView = async () => {
await c.openLinkView(props.data);
};
// 往外抛值
const onACSelect = async (item: IData) => {
await handleDataSelect(item);
isShowAll.value = true;
};
// 搜索
const onSearch = async (query: string) => {
if (c.model.appDataEntity) {
const res = await c.getServiceData(query, props.data);
if (res) {
items.value = res.data as IData[];
}
}
};
// 清除
const onClear = () => {
// 清空回填数据
const dataItems = c.model.deACMode?.dataItems;
if (dataItems?.length) {
dataItems.forEach(dataItem => {
emit('change', null, dataItem.name);
});
}
if (c.valueItem) {
emit('change', null, c.valueItem);
}
emit('change', null);
};
// 聚焦
const onFocus = (e: IData) => {
const query = isShowAll.value ? '' : e.target.value;
onSearch(query);
};
const closeCircle = (c.linkView ? 1 : 0) + (c.pickupView ? 1 : 0);
return {
ns,
c,
curValue,
items,
openPickUpView,
openLinkView,
onACSelect,
onSearch,
onClear,
onFocus,
closeCircle,
};
},
render() {
return (
<div class={this.ns.b()}>
{this.c.noAC ? (
<i-input
value={this.curValue}
clearable
placeholder={this.c.placeHolder}
on-on-clear={this.onClear}
disabled={this.disabled}
>
{this.$slots.append}
{!this.$slots.append && this.c.pickupView ? (
<i-button
key='ios-search'
icon='ios-search'
on-click={this.openPickUpView}
></i-button>
) : null}
{!this.$slots.append && this.c.linkView ? (
<i-button
key='ios-search-outline'
icon='ios-search-outline'
on-click='openLinkView'
></i-button>
) : null}
</i-input>
) : (
<div
class={[
this.ns.e('autocomplete'),
this.ns.m(this.closeCircle.toString()),
]}
>
<i-auto-complete
value={this.curValue}
placeholder={this.c.placeHolder}
placement='bottom'
clearable
transfer-class-name={this.ns.e('transfer')}
on-on-focus={this.onFocus}
on-on-search={this.onSearch}
on-on-clear={this.onClear}
disabled={this.disabled}
>
{this.items.map(item => {
return (
<div
class={this.ns.e('transfer-item')}
on-click={() => {
this.onACSelect(item);
}}
>
{item[this.c.textName]}
</div>
);
})}
</i-auto-complete>
<div class={this.ns.e('btns')}>
{this.c.pickupView ? (
<i-button
icon='ios-search'
on-click={this.openPickUpView}
type={'text'}
></i-button>
) : null}
{this.c.linkView ? (
<i-button
on-click={this.openLinkView}
type={'text'}
class={this.ns.e('link')}
>
<ion-icon src={'./assets/img/link.svg'}></ion-icon>
</i-button>
) : null}
</div>
</div>
)}
</div>
);
},
});
export { IBizPicker } from './ibiz-picker/ibiz-picker';
export { IBizPickerDropDown } from './ibiz-picker-dropdown/ibiz-picker-dropdown';
export { IBizMPicker } from './ibiz-mpicker/ibiz-mpicker';
export { IBizPickerLink } from './ibiz-picker-link/ibiz-picker-link';
import { DatePickerEditorController } from '@ibiz-template/controller';
import { ref, watch, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-date-picker/ibiz-date-picker.scss';
export const IBizDatePicker = defineComponent({
name: 'IBizDatePicker',
props: {
value: {
type: String,
},
controller: {
type: DatePickerEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value: string) => true,
},
setup(props, { emit }) {
const ns = useNamespace('date-picker');
const c = props.controller;
const editorModel = c!.model;
const type = ref('date');
const format = ref('yyyy-MM-dd');
switch (editorModel.editorType) {
// 时间选择器
case 'DATEPICKER':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm:ss';
break;
// 时间选择控件
case 'DATEPICKEREX':
type.value = 'date';
format.value = 'yyyy-MM-dd HH:mm:ss';
break;
// 时间选择控件_无小时
case 'DATEPICKEREX_NOTIME':
type.value = 'date';
format.value = 'yyyy-MM-dd';
break;
// 时间选择控件_小时
case 'DATEPICKEREX_HOUR':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH';
break;
// 时间选择控件_分钟
case 'DATEPICKEREX_MINUTE':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm';
break;
// 时间选择控件_秒钟
case 'DATEPICKEREX_SECOND':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm:ss';
break;
// 时间选择控件_无日期
case 'DATEPICKEREX_NODAY':
type.value = 'datetime';
format.value = 'HH:mm:ss';
break;
// 时间选择控件_无日期无秒钟
case 'DATEPICKEREX_NODAY_NOSECOND':
type.value = 'datetime';
format.value = 'HH:mm';
break;
// 时间选择控件_无秒钟
case 'DATEPICKEREX_NOSECOND':
type.value = 'datetime';
format.value = 'yyyy-MM-dd HH:mm';
break;
default:
break;
}
// 值格式化
const valueFormat = c!.valueFormat;
if (valueFormat) {
const tempFormat: string = valueFormat
.replace('YYYY', 'yyyy')
.replace('DD', 'dd');
format.value = tempFormat;
}
const currentVal = ref();
watch(
() => props.value,
(newVal, oldVal) => {
if (newVal !== oldVal) {
currentVal.value = newVal || null;
}
},
{ immediate: true },
);
// 处理值变更
const handleChange = (date: string, _dateType: IData) => {
emit('change', date);
};
return { ns, c, editorModel, type, format, currentVal, handleChange };
},
render() {
return (
<div class={this.ns.b()}>
<i-CalendarPicker
type={this.type}
format={this.format}
placeholder={this.c!.placeHolder}
value={this.currentVal}
readonly={this.c!.model.readOnly}
on-on-change={this.handleChange}
disabled={this.disabled}
></i-CalendarPicker>
</div>
);
},
});
export { IBizDatePicker } from './ibiz-date-picker/ibiz-date-picker';
import { DropDownListEditorController } from '@ibiz-template/controller';
import { ref, Ref, defineComponent, PropType, computed } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-dropdown-list/ibiz-dropdown-list.scss';
export const IBizDropDownList = defineComponent({
name: 'IBizDropDownList',
props: {
value: {
type: String,
},
controller: {
type: DropDownListEditorController,
},
data: {
type: Object as PropType<IData>,
},
disabled: {
type: Boolean,
},
},
emits: {
change: (_value: string | Array<string> | null) => true,
},
setup(props, { emit }) {
const ns = useNamespace('dropdown-list');
const c = props.controller;
// 是否是树形
const hasChildren = ref(false);
// 代码表
const items: Ref<readonly IData[]> = ref([]);
c!.loadCodeList(props.data!).then((codeList: readonly IData[]) => {
items.value = codeList;
for (let i = 0; i < codeList.length; i++) {
const _item = codeList[i];
if (_item.children) {
hasChildren.value = true;
break;
}
}
});
// 当前值
const curValue: Ref<Array<string> | string | undefined> = computed({
get() {
if (props.value) {
return c!.multiple ? props.value?.split(',') : props.value;
}
return '';
},
set(select: string | Array<string>) {
const value =
Object.prototype.toString.call(select) === '[object Array]'
? (select as Array<string>).join(',')
: select;
if (value) {
emit('change', value);
} else {
emit('change', null);
}
},
});
return { ns, c, curValue, items, hasChildren };
},
render() {
return (
<div class={this.ns.b()}>
{this.hasChildren ? (
<div class={this.ns.e('tree-select')}>
<app-select-tree
value={this.curValue}
nodes-data={this.items}
multiple={this.c!.multiple}
></app-select-tree>
</div>
) : (
<div class={this.ns.e('select')}>
<i-select
v-model={this.curValue}
allow-clear
clearable
class={this.ns.e('dropdown-list')}
multiple={this.c!.multiple}
placeholder={this.c!.placeHolder}
disabled={this.disabled}
>
{this.items.map(item => {
return <i-option value={item.value}>{item.text}</i-option>;
})}
</i-select>
</div>
)}
</div>
);
},
});
export { IBizDropDownList } from './ibiz-dropdown-list/ibiz-dropdown-list';
export * from './span';
export * from './text-box';
export * from './check-box-list';
export * from './radio-button-list';
export * from './date-picker';
export * from './dropdown-list';
export * from './data-picker';
export * from './upload';
export { NotSupportedEditor } from './not-supported-editor/not-supported-editor';
......@@ -3,7 +3,8 @@ import { useNamespace } from '@ibiz-template/vue-util';
import { defineComponent } from 'vue';
import '@ibiz-template/theme/style/components/editor/not-supported-editor/not-supported-editor.scss';
export default defineComponent({
export const NotSupportedEditor = defineComponent({
name: 'NotSupportedEditor',
props: {
modelData: {
type: EditorModel,
......
import { RadioButtonListEditorController } from '@ibiz-template/controller';
import { computed, defineComponent, ref } from 'vue';
import type { PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-radio/ibiz-radio.scss';
export const IBizRadio = defineComponent({
name: 'IBizRadio',
props: {
value: [String, Number],
controller: {
type: RadioButtonListEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: string | number) => true,
},
setup(props, { emit }) {
const ns = useNamespace('radio');
const c = props.controller;
const editorModel = c.model;
const selectValue = computed({
get() {
return props.value || '';
},
set(newValue: string | number) {
emit('change', newValue);
},
});
const onSelectValueChange = (value: string | number) => {
selectValue.value = value;
};
// 代码表
const items = ref<readonly IData[]>([]);
props.controller.loadCodeList(props.data).then(codeList => {
items.value = codeList;
});
return {
ns,
editorModel,
selectValue,
items,
onSelectValueChange,
};
},
render() {
return (
<div class={this.ns.b()}>
<i-radio-group
class={this.ns.b('group')}
value={this.selectValue}
on-on-change={this.onSelectValueChange}
>
{this.items.map((_item, index: number) => (
<i-radio
key={index}
label={_item.value}
readonly={this.editorModel.readOnly}
>
<span class={this.ns.be('group', 'text')}>{_item.text}</span>
</i-radio>
))}
</i-radio-group>
</div>
);
},
});
export { IBizRadio } from './ibiz-radio/ibiz-radio';
import { ref, defineComponent, Ref, watch } from 'vue';
import type { PropType } from 'vue';
import { SpanEditorController } from '@ibiz-template/controller';
import { useNamespace } from '@ibiz-template/vue-util';
import dayjs from 'dayjs';
import '@ibiz-template/theme/style/components/editor/ibiz-span/ibiz-span.scss';
export const IBizSpan = defineComponent({
name: 'IBizSpan',
props: {
value: String,
controller: {
type: SpanEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
setup(props) {
const ns = useNamespace('span');
const c = props.controller;
const text: Ref<string> = ref('');
watch(
() => props.value,
(newVal, oldVal) => {
if (newVal !== oldVal) {
if (!newVal) {
text.value = '';
return;
}
if (c.valueFormat) {
text.value = dayjs(newVal).format(c.valueFormat);
} else {
text.value = newVal || '';
}
if (c.unitName) {
text.value += c.unitName;
}
}
},
{
immediate: true,
},
);
return {
ns,
text,
};
},
render() {
return <span class={this.ns.b()}>{this.text}</span>;
},
});
export { IBizSpan } from './ibiz-span/ibiz-span';
import { defineComponent } from 'vue';
import {
getGridInputProps,
useGridCellEditor,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-input/ibiz-input.scss';
export const IBizGridInput = defineComponent({
name: 'IBizGridInput',
props: getGridInputProps(),
setup(props) {
const ns = useNamespace('grid-input');
const { isInfoMode, componentRef, onOperateChange, onChange } =
useGridCellEditor(props.rowDataChange, {
isCacheValue: true,
});
return {
ns,
isInfoMode,
componentRef,
onOperateChange,
onChange,
};
},
render(h) {
return (
<div
ref='componentRef'
class={`${this.ns.b()} ibiz-grid-editor`}
onDblclick={evt => evt.stopPropagation()}
onClick={evt => evt.stopPropagation()}
>
{h('IBizInput', {
props: {
...this.$props,
infoMode: this.isInfoMode,
},
on: {
change: this.onChange,
operate: this.onOperateChange,
},
})}
</div>
);
},
});
import { defineComponent, ref, watch } from 'vue';
import type { PropType } from 'vue';
import { TextBoxEditorController } from '@ibiz-template/controller';
import { useNamespace } from '@ibiz-template/vue-util';
export const IBizInputNumber = defineComponent({
name: 'IBizInputNumber',
props: {
value: Number,
controller: {
type: TextBoxEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: number | null) => true,
},
setup(props, { emit }) {
const ns = useNamespace('input-number');
const c = props.controller;
const currentVal = ref<number | null>(null);
watch(
() => props.value,
(newVal, oldVal) => {
if (newVal !== oldVal) {
currentVal.value = newVal!;
}
},
{ immediate: true },
);
const handleChange = (e: number | null) => {
emit('change', e);
};
return {
ns,
c,
currentVal,
handleChange,
};
},
render() {
return (
<div class={this.ns.b()}>
<i-input-number
value={this.currentVal}
placeholder={this.c.placeHolder}
readonly={this.c.model.readOnly}
precision={this.c.model.precision}
on-on-change={this.handleChange}
></i-input-number>
</div>
);
},
});
import { computed, defineComponent, ref, watch } from 'vue';
import { debounce } from 'lodash-es';
import {
getEditorEmits,
getInputProps,
useNamespace,
} from '@ibiz-template/vue-util';
import '@ibiz-template/theme/style/components/editor/ibiz-input/ibiz-input.scss';
export const IBizInput = defineComponent({
name: 'IBizInput',
props: getInputProps(),
emits: getEditorEmits(),
setup(props, { emit }) {
const ns = useNamespace('input');
const c = props.controller;
const editorModel = c.model;
// 文本域默认行数,仅在 textarea 类型下有效
const rows = ref(2);
if (editorModel.editorType === 'TEXTAREA_10') {
rows.value = 10;
}
// 类型
const type = computed(() => {
switch (editorModel.editorType) {
case 'TEXTBOX':
return 'text';
case 'PASSWORD':
return 'password';
case 'TEXTAREA':
case 'TEXTAREA_10':
return 'textarea';
default:
return 'string';
}
});
const currentVal = ref<string | number>('');
watch(
() => props.value,
(newVal, oldVal) => {
if (newVal !== oldVal) {
if (newVal === null) {
currentVal.value = '';
} else {
currentVal.value = newVal as string | number;
}
}
},
{ immediate: true },
);
// 值变更
const handleChange = debounce((e: IData) => {
emit('change', e.target.value);
}, 500);
return {
ns,
rows,
type,
currentVal,
handleChange,
};
},
render() {
return (
<div
class={`${this.ns.b()} ${this.ns.is(
'textarea',
Object.is(this.type, 'textarea'),
)}`}
>
{this.infoMode ? (
this.currentVal
) : (
<i-input
value={this.currentVal}
placeholder={this.controller.placeHolder}
readonly={this.controller.model.readOnly}
type={this.type}
rows={this.rows}
on-on-change={this.handleChange}
class={this.ns.b('input')}
disabled={this.disabled}
></i-input>
)}
</div>
);
},
});
export { IBizInput } from './ibiz-input/ibiz-input';
export { IBizGridInput } from './ibiz-grid-input/ibiz-grid-input';
export { IBizInputNumber } from './ibiz-input-number/ibiz-input-number';
import { UploadEditorController } from '@ibiz-template/controller';
import { getCookie } from 'qx-util';
import { onMounted, ref, Ref, watch, defineComponent, PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { RuntimeError } from '@ibiz-template/core';
import '@ibiz-template/theme/style/components/editor/ibiz-file-upload/ibiz-file-upload.scss';
export const IBizFileUpload = defineComponent({
name: 'IBizFileUpload',
props: {
value: {
type: String,
},
controller: {
type: UploadEditorController,
require: true,
},
data: {
type: Object as PropType<IData>,
},
},
emits: {
change: (_value: string | null) => true,
},
setup(props, { emit }) {
const ns = useNamespace('file-upload');
const c = props.controller as UploadEditorController;
// 文件列表
const files: Ref<IData[]> = ref([]);
// 请求头
const headers: Ref<IData> = ref({});
// 上传文件路径
const uploadUrl: Ref<string> = ref(ibiz.env.baseUrl + ibiz.env.UploadFile);
// 下载文件路径
const downloadUrl: Ref<string> = ref(ibiz.env.ExportFile);
// 设置files
const setFiles = (value: string | null | undefined) => {
if (value === null) {
files.value = [];
}
if (!value) {
return;
}
const _files = JSON.parse(value);
if (
value &&
Object.prototype.toString.call(_files) === '[object Array]'
) {
files.value = _files;
} else {
files.value = [];
}
};
// 文件上传缓存对象
const uploadCache: IData = {
count: 0,
cacheFiles: [],
};
// 处理参数
const dataProcess = () => {
let _url = ibiz.env.baseUrl + ibiz.env.UploadFile;
if (c.upload_params.length > 0) {
_url += '?';
c.upload_params.forEach((item: IData, i: number) => {
_url += `${Object.keys(item)[0]}=${Object.values(item)[0]}`;
if (i < c.upload_params.length - 1) {
_url += '&';
}
});
}
uploadUrl.value = _url;
files.value.forEach((file: IData) => {
let url = `${downloadUrl.value}/${file.id}`;
if (c.export_params.length > 0) {
url += '?';
c.export_params.forEach((item: IData, i: number) => {
url += `${Object.keys(item)[0]}=${Object.values(item)[0]}`;
if (i < c.export_params.length - 1) {
url += '&';
}
});
}
// eslint-disable-next-line no-param-reassign
file.url = url;
});
};
// 设置头
const setHeaders = () => {
if (getCookie('access_token')) {
headers.value.Authorization = `Bearer ${getCookie('access_token')}`;
}
};
setHeaders();
watch(
() => props.value,
newVal => {
setFiles(newVal);
dataProcess();
},
{ immediate: true },
);
watch(
() => props.data,
newVal => {
c.getParams(newVal!);
},
{ immediate: true, deep: true },
);
onMounted(() => {
c.getParams(props.data!);
setFiles(props.value);
dataProcess();
});
// 上传前回调
const beforeUpload = () => {
uploadCache.count += 1;
};
// 上传成功回调
const onSuccess = (response: IData) => {
if (!response) {
return;
}
// 处理回调数据,并缓存
const arr: IData[] = [];
if (response?.length > 0) {
for (let index = 0; index < response.length; index++) {
const file = response[index];
arr.push({ name: file.filename, id: file.fileid });
}
} else {
arr.push({ name: response.filename, id: response.fileid });
}
uploadCache.cacheFiles.push(arr);
uploadCache.count -= 1;
// 回调都结束后的处理
if (uploadCache.count === 0) {
const result: IData[] = [];
// 添加已有的文件数据
files.value.forEach((_file: IData) => {
result.push({ name: _file.name, id: _file.id });
});
// 添加缓存的文件数据
uploadCache.cacheFiles.forEach((item: IData[]) => {
result.push(...item);
});
// 抛出值变更事件
const value: string | null =
result.length > 0 ? JSON.stringify(result) : null;
emit('change', value);
// 清空缓存的文件数据
uploadCache.cacheFiles = [];
}
};
// 上传失败回调
const onError = (error: IData) => {
uploadCache.count -= 1;
throw error;
};
// 删除回调
const onRemove = (file: IData, fileList: IData[]) => {
const arr: Array<IData> = [];
fileList.forEach((f: IData) => {
if (f.id !== file.id) {
arr.push({ name: f.name, id: f.id });
}
});
const value: string | null = arr.length > 0 ? JSON.stringify(arr) : null;
emit('change', value);
};
// 计算文件mime类型
const calcFilemime = (filetype: string) => {
let mime = 'image/png';
switch (filetype) {
case '.wps':
mime = 'application/kswps';
break;
case '.doc':
mime = 'application/msword';
break;
case '.docx':
mime =
'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
break;
case '.txt':
mime = 'text/plain';
break;
case '.zip':
mime = 'application/zip';
break;
case '.png':
mime = 'image/png';
break;
case '.gif':
mime = 'image/gif';
break;
case '.jpeg':
mime = 'image/jpeg';
break;
case '.jpg':
mime = 'image/jpeg';
break;
case '.rtf':
mime = 'application/rtf';
break;
case '.avi':
mime = 'video/x-msvideo';
break;
case '.gz':
mime = 'application/x-gzip';
break;
case '.tar':
mime = 'application/x-tar';
break;
default:
mime = 'image/png';
}
return mime;
};
/**
* 下载文件
*/
const DownloadFile = (url: string, file: IData) => {
// 发送get请求
ibiz.net
.get(
url,
{},
{},
{
responseType: 'blob',
},
)
.then((response: IData) => {
if (!response || response.status !== 200) {
throw new RuntimeError('下载文件失败');
}
// 请求成功,后台返回的是一个文件流
if (response.data) {
// 获取文件名
const filename = file.name;
const ext = `.${filename.split('.').pop()}`;
const filetype = calcFilemime(ext);
// 用blob对象获取文件流
const blob = new Blob([response.data], { type: filetype });
// 通过文件流创建下载链接
const href = URL.createObjectURL(blob);
// 创建一个a元素并设置相关属性
const a = document.createElement('a');
a.href = href;
a.download = filename;
// 添加a元素到当前网页
document.body.appendChild(a);
// 触发a元素的点击事件,实现下载
a.click();
// 从当前网页移除a元素
document.body.removeChild(a);
// 释放blob对象
URL.revokeObjectURL(href);
} else {
throw new RuntimeError('文件流数据不存在');
}
});
};
// 下载文件
const onDownload = (file: IData) => {
const url = `${downloadUrl.value}/${file.id}`;
DownloadFile(url, file);
};
return {
ns,
c,
uploadUrl,
headers,
files,
onDownload,
onError,
onRemove,
onSuccess,
beforeUpload,
};
},
render(h) {
return (
<div class={this.ns.b()}>
{h(
'IUpload',
{
ref: 'fileUpload',
props: {
action: this.uploadUrl,
headers: this.headers,
'default-file-list': this.files,
multiple: this.c.multiple,
type: this.c.isDrag ? 'drag' : 'select',
accept: this.c.accept,
'before-upload': this.beforeUpload,
'on-success': this.onSuccess,
'on-error': this.onError,
'on-remove': this.onRemove,
'on-preview': this.onDownload,
},
},
[
<i-button
icon='ios-cloud-upload-outline'
class={this.ns.b('button')}
>
上传文件
</i-button>,
],
)}
</div>
);
},
});
import { UploadEditorController } from '@ibiz-template/controller';
import { defineComponent, onMounted, ref, watch } from 'vue';
import type { PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { getCookie } from 'qx-util';
import { RuntimeError } from '@ibiz-template/core';
export const IBizGridFileUpload = defineComponent({
name: 'IBizGridFileUpload',
props: {
value: String,
controller: {
type: UploadEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: string | null) => true,
},
setup(props, { emit }) {
const ns = useNamespace('grid-file-upload');
const c = props.controller;
// 文件列表
const files = ref<IData[]>([]);
// 请求头
const headers = ref<IData>({});
// 上传文件路径
const uploadUrl = ref<string>(ibiz.env.baseUrl + ibiz.env.UploadFile);
// 下载文件路径
const downloadUrl = ref<string>(ibiz.env.baseUrl + ibiz.env.ExportFile);
// 模态框是否显示
const dialogVisible = ref<boolean>(false);
// 行为是否显示
const showActions = ref<boolean>(false);
const onDialogVisibleChange = (value: boolean) => {
dialogVisible.value = value;
};
// 设置files
const setFiles = (value: string | null | undefined) => {
if (value === null) {
files.value = [];
}
if (!value) {
return;
}
const _files = JSON.parse(value);
if (
value &&
Object.prototype.toString.call(_files) === '[object Array]'
) {
files.value = _files;
} else {
files.value = [];
}
};
// 文件上传缓存对象
const uploadCache: IData = {
count: 0,
cacheFiles: [],
};
// 处理参数
const dataProcess = () => {
let _url = ibiz.env.baseUrl + ibiz.env.UploadFile;
if (c.upload_params.length > 0) {
_url += '?';
c.upload_params.forEach((item: IData, i: number) => {
_url += `${Object.keys(item)[0]}=${Object.values(item)[0]}`;
if (i < c.upload_params.length - 1) {
_url += '&';
}
});
}
uploadUrl.value = _url;
files.value.forEach((file: IData) => {
let url = `${downloadUrl.value}/${file.id}`;
if (c.export_params.length > 0) {
url += '?';
c.export_params.forEach((item: IData, i: number) => {
url += `${Object.keys(item)[0]}=${Object.values(item)[0]}`;
if (i < c.export_params.length - 1) {
url += '&';
}
});
}
// eslint-disable-next-line no-param-reassign
file.url = url;
});
};
// 设置头
const setHeaders = () => {
if (getCookie('access_token')) {
headers.value.Authorization = `Bearer ${getCookie('access_token')}`;
}
};
setHeaders();
watch(
() => props.value,
newVal => {
setFiles(newVal);
dataProcess();
},
{ immediate: true },
);
watch(
() => props.data,
newVal => {
c.getParams(newVal);
},
{ immediate: true, deep: true },
);
onMounted(() => {
c.getParams(props.data);
setFiles(props.value);
dataProcess();
});
// 上传前回调
const beforeUpload = () => {
uploadCache.count += 1;
};
// 上传成功回调
const onSuccess = (response: IData) => {
if (!response) {
return;
}
// 处理回调数据,并缓存
const arr: IData[] = [];
if (response?.length > 0) {
for (let index = 0; index < response.length; index++) {
const file = response[index];
arr.push({ name: file.filename, id: file.fileid });
}
} else {
arr.push({ name: response.filename, id: response.fileid });
}
uploadCache.cacheFiles.push(arr);
uploadCache.count -= 1;
// 回调都结束后的处理
if (uploadCache.count === 0) {
const result: IData[] = [];
// 添加已有的文件数据
files.value.forEach((_file: IData) => {
result.push({ name: _file.name, id: _file.id });
});
// 添加缓存的文件数据
uploadCache.cacheFiles.forEach((item: IData[]) => {
result.push(...item);
});
// 抛出值变更事件
const value: string | null =
result.length > 0 ? JSON.stringify(result) : null;
emit('change', value);
// 清空缓存的文件数据
uploadCache.cacheFiles = [];
}
};
// 上传失败回调
const onError = (error: IData) => {
uploadCache.count -= 1;
throw error;
};
// 删除回调
const onRemove = (file: IData, fileList: IData[]) => {
const arr: Array<IData> = [];
fileList.forEach((f: IData) => {
if (f.id !== file.id) {
arr.push({ name: f.name, id: f.id });
}
});
const value: string | null = arr.length > 0 ? JSON.stringify(arr) : null;
emit('change', value);
};
// 计算文件mime类型
const calcFilemime = (filetype: string) => {
let mime = 'image/png';
switch (filetype) {
case '.wps':
mime = 'application/kswps';
break;
case '.doc':
mime = 'application/msword';
break;
case '.docx':
mime =
'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
break;
case '.txt':
mime = 'text/plain';
break;
case '.zip':
mime = 'application/zip';
break;
case '.png':
mime = 'image/png';
break;
case '.gif':
mime = 'image/gif';
break;
case '.jpeg':
mime = 'image/jpeg';
break;
case '.jpg':
mime = 'image/jpeg';
break;
case '.rtf':
mime = 'application/rtf';
break;
case '.avi':
mime = 'video/x-msvideo';
break;
case '.gz':
mime = 'application/x-gzip';
break;
case '.tar':
mime = 'application/x-tar';
break;
default:
mime = 'image/png';
}
return mime;
};
/**
* 下载文件
*/
const DownloadFile = (url: string, file: IData) => {
let tempDownloadUrl: string = url;
const BaseUrl = ibiz.env.baseUrl;
if (url.startsWith(BaseUrl)) {
tempDownloadUrl = url.replace(BaseUrl, '');
}
// 发送get请求
ibiz.net
.get(
tempDownloadUrl,
{},
{},
{
responseType: 'blob',
},
)
.then((response: IData) => {
if (!response || response.status !== 200) {
throw new RuntimeError('下载文件失败');
}
// 请求成功,后台返回的是一个文件流
if (response.data) {
// 获取文件名
const filename = file.name;
const ext = `.${filename.split('.').pop()}`;
const filetype = calcFilemime(ext);
// 用blob对象获取文件流
const blob = new Blob([response.data], { type: filetype });
// 通过文件流创建下载链接
const href = URL.createObjectURL(blob);
// 创建一个a元素并设置相关属性
const a = document.createElement('a');
a.href = href;
a.download = filename;
// 添加a元素到当前网页
document.body.appendChild(a);
// 触发a元素的点击事件,实现下载
a.click();
// 从当前网页移除a元素
document.body.removeChild(a);
// 释放blob对象
URL.revokeObjectURL(href);
} else {
throw new RuntimeError('文件流数据不存在');
}
});
};
// 下载文件
const onDownload = (file: IData) => {
const url = `${downloadUrl.value}/${file.id}`;
DownloadFile(url, file);
};
return {
ns,
c,
files,
headers,
uploadUrl,
dialogVisible,
showActions,
onDialogVisibleChange,
beforeUpload,
onSuccess,
onError,
onRemove,
onDownload,
};
},
render(h) {
return (
<div class={this.ns.b()}>
<i-row>
{this.files.length > 0 ? (
<i-col span={12}>
<i-button
on-click={() => {
this.dialogVisible = true;
}}
>
查看
<badge count={this.files.length}></badge>
</i-button>
</i-col>
) : null}
<i-col span={this.files.length > 0 ? 12 : 24}>
{h(
'IUpload',
{
ref: 'fileUploadRowPreview',
props: {
action: this.uploadUrl,
headers: this.headers,
'default-file-list': this.files,
multiple: this.c.multiple,
type: this.c.isDrag ? 'drag' : 'select',
accept: this.c.accept,
'show-upload-list': false,
'before-upload': this.beforeUpload,
'on-success': this.onSuccess,
'on-error': this.onError,
'on-remove': this.onRemove,
'on-preview': this.onDownload,
},
},
[<i-button icon='ios-cloud-upload-outline'>上传文件</i-button>],
)}
</i-col>
</i-row>
<i-modal
class-name={this.ns.b('upload-preview-modal')}
width='80%'
footer-hide={true}
value={this.dialogVisible}
on-on-visible-change={this.onDialogVisibleChange}
>
<ul class={this.ns.be('upload-preview-modal', 'ul')}>
{this.files.map((file, index) => (
<li key={index} class={this.ns.be('upload-preview-modal', 'li')}>
<div class={this.ns.be('upload-preview-modal', 'box')}>
<img
class={this.ns.be('upload-preview-modal', 'img')}
src={file.url}
/>
<div
class={this.ns.be('upload-preview-modal', 'actions')}
on-mouseenter={() => {
this.showActions = true;
}}
on-mouseleave={() => {
this.showActions = false;
}}
>
{this.showActions ? (
<span
class={this.ns.be('upload-preview-modal', 'download')}
>
<i-icon
type='ios-download-outline'
on-click={() => {
this.onDownload(file);
}}
></i-icon>
</span>
) : null}
{this.showActions ? (
<span
class={this.ns.be('upload-preview-modal', 'delete')}
>
<i-icon
type='ios-trash-outline'
on-click={() => {
this.onRemove(file, this.files);
}}
></i-icon>
</span>
) : null}
</div>
</div>
<div class={this.ns.be('upload-preview-modal', 'filename')}>
{file.name}
</div>
</li>
))}
</ul>
</i-modal>
</div>
);
},
});
import { UploadEditorController } from '@ibiz-template/controller';
import { defineComponent, onMounted, ref, watch } from 'vue';
import type { PropType } from 'vue';
import { useNamespace } from '@ibiz-template/vue-util';
import { getCookie } from 'qx-util';
import { RuntimeError } from '@ibiz-template/core';
import '@ibiz-template/theme/style/components/editor/ibiz-image-upload/ibiz-image-upload.scss';
export const IBizImageUpload = defineComponent({
name: 'IBizImageUpload',
props: {
value: String,
controller: {
type: UploadEditorController,
required: true,
},
data: {
type: Object as PropType<IData>,
required: true,
},
},
emits: {
change: (_value: string | null) => true,
},
setup(props, { emit }) {
const ns = useNamespace('image-upload');
const c = props.controller;
// 文件列表
const files = ref<IData[]>([]);
// 请求头
const headers = ref<IData>({});
// 上传文件路径
const uploadUrl = ref<string>(ibiz.env.baseUrl + ibiz.env.UploadFile);
// 下载文件路径
const downloadUrl = ref<string>(ibiz.env.baseUrl + ibiz.env.ExportFile);
// 设置files
const setFiles = (value: string | null | undefined) => {
if (value === null) {
files.value = [];
}
if (!value) {
return;
}
const _files = JSON.parse(value);
if (
value &&
Object.prototype.toString.call(_files) === '[object Array]'
) {
files.value = _files;
} else {
files.value = [];
}
};
// 文件上传缓存对象
const uploadCache: IData = {
count: 0,
cacheFiles: [],
};
// 处理参数
const dataProcess = () => {
let _url = ibiz.env.baseUrl + ibiz.env.UploadFile;
if (c.upload_params.length > 0) {
_url += '?';
c.upload_params.forEach((item: IData, i: number) => {
_url += `${Object.keys(item)[0]}=${Object.values(item)[0]}`;
if (i < c.upload_params.length - 1) {
_url += '&';
}
});
}
uploadUrl.value = _url;
files.value.forEach((file: IData) => {
let url = `${downloadUrl.value}/${file.id}`;
if (c.export_params.length > 0) {
url += '?';
c.export_params.forEach((item: IData, i: number) => {
url += `${Object.keys(item)[0]}=${Object.values(item)[0]}`;
if (i < c.export_params.length - 1) {
url += '&';
}
});
}
// eslint-disable-next-line no-param-reassign
file.url = url;
});
};
// 设置头
const setHeaders = () => {
if (getCookie('access_token')) {
headers.value.Authorization = `Bearer ${getCookie('access_token')}`;
}
};
setHeaders();
watch(
() => props.value,
newVal => {
setFiles(newVal);
dataProcess();
},
{ immediate: true },
);
watch(
() => props.data,
newVal => {
c.getParams(newVal);
},
{ immediate: true, deep: true },
);
onMounted(() => {
c.getParams(props.data);
setFiles(props.value);
dataProcess();
});
// 上传前回调
const beforeUpload = () => {
uploadCache.count += 1;
};
// 上传成功回调
const onSuccess = (response: IData) => {
if (!response) {
return;
}
// 处理回调数据,并缓存
const arr: IData[] = [];
if (response?.length > 0) {
for (let index = 0; index < response.length; index++) {
const file = response[index];
arr.push({ name: file.filename, id: file.fileid });
}
} else {
arr.push({ name: response.filename, id: response.fileid });
}
uploadCache.cacheFiles.push(arr);
uploadCache.count -= 1;
// 回调都结束后的处理
if (uploadCache.count === 0) {
const result: IData[] = [];
// 添加已有的文件数据
files.value.forEach((_file: IData) => {
result.push({ name: _file.name, id: _file.id });
});
// 添加缓存的文件数据
uploadCache.cacheFiles.forEach((item: IData[]) => {
result.push(...item);
});
// 抛出值变更事件
const value: string | null =
result.length > 0 ? JSON.stringify(result) : null;
emit('change', value);
// 清空缓存的文件数据
uploadCache.cacheFiles = [];
}
};
// 上传失败回调
const onError = (error: IData) => {
uploadCache.count -= 1;
throw error;
};
// 删除回调
const onRemove = (file: IData, fileList: IData[]) => {
const arr: Array<IData> = [];
fileList.forEach((f: IData) => {
if (f.id !== file.id) {
arr.push({ name: f.name, id: f.id });
}
});
const value: string | null = arr.length > 0 ? JSON.stringify(arr) : null;
emit('change', value);
};
// 计算文件mime类型
const calcFilemime = (filetype: string) => {
let mime = 'image/png';
switch (filetype) {
case '.wps':
mime = 'application/kswps';
break;
case '.doc':
mime = 'application/msword';
break;
case '.docx':
mime =
'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
break;
case '.txt':
mime = 'text/plain';
break;
case '.zip':
mime = 'application/zip';
break;
case '.png':
mime = 'image/png';
break;
case '.gif':
mime = 'image/gif';
break;
case '.jpeg':
mime = 'image/jpeg';
break;
case '.jpg':
mime = 'image/jpeg';
break;
case '.rtf':
mime = 'application/rtf';
break;
case '.avi':
mime = 'video/x-msvideo';
break;
case '.gz':
mime = 'application/x-gzip';
break;
case '.tar':
mime = 'application/x-tar';
break;
default:
mime = 'image/png';
}
return mime;
};
/**
* 下载文件
*/
const DownloadFile = (url: string, file: IData) => {
let tempDownloadUrl: string = url;
const BaseUrl = ibiz.env.baseUrl;
if (url.startsWith(BaseUrl)) {
tempDownloadUrl = url.replace(BaseUrl, '');
}
// 发送get请求
ibiz.net
.get(
tempDownloadUrl,
{},
{},
{
responseType: 'blob',
},
)
.then((response: IData) => {
if (!response || response.status !== 200) {
throw new RuntimeError('下载文件失败');
}
// 请求成功,后台返回的是一个文件流
if (response.data) {
// 获取文件名
const filename = file.name;
const ext = `.${filename.split('.').pop()}`;
const filetype = calcFilemime(ext);
// 用blob对象获取文件流
const blob = new Blob([response.data], { type: filetype });
// 通过文件流创建下载链接
const href = URL.createObjectURL(blob);
// 创建一个a元素并设置相关属性
const a = document.createElement('a');
a.href = href;
a.download = filename;
// 添加a元素到当前网页
document.body.appendChild(a);
// 触发a元素的点击事件,实现下载
a.click();
// 从当前网页移除a元素
document.body.removeChild(a);
// 释放blob对象
URL.revokeObjectURL(href);
} else {
throw new RuntimeError('文件流数据不存在');
}
});
};
// 下载文件
const onDownload = (file: IData) => {
const url = file.url;
DownloadFile(url, file);
};
const dialogImageUrl = ref<string>('');
const dialogVisible = ref<boolean>(false);
const onDialogVisibleChange = (value: boolean) => {
dialogVisible.value = value;
};
// 预览
const onPreview = (file: IData) => {
dialogImageUrl.value = file.url;
dialogVisible.value = true;
};
return {
ns,
c,
files,
headers,
uploadUrl,
dialogImageUrl,
dialogVisible,
beforeUpload,
onSuccess,
onError,
onRemove,
onDownload,
onDialogVisibleChange,
onPreview,
};
},
render(h) {
return (
<div class={this.ns.b()}>
<div class={this.ns.e('image-upload-list')}>
{this.files.map(item => (
<div key={item.id} class={this.ns.e('list-item')}>
<img src={item.url} />
<div class={this.ns.e('list-item-cover')}>
<i-icon
type='ios-eye-outline'
on-click={() => this.onPreview(item)}
></i-icon>
<i-icon
type='ios-download-outline'
on-click={() => this.onDownload(item)}
></i-icon>
<i-icon
type='ios-trash-outline'
on-click={() => this.onRemove(item, this.files)}
></i-icon>
</div>
</div>
))}
</div>
{h(
'IUpload',
{
ref: 'imageUpload',
props: {
action: this.uploadUrl,
headers: this.headers,
'default-file-list': this.files,
multiple: this.c.multiple,
type: 'drag',
accept: this.c.accept,
'show-upload-list': false,
'before-upload': this.beforeUpload,
'on-success': this.onSuccess,
'on-error': this.onError,
'on-remove': this.onRemove,
'on-preview': this.onDownload,
},
},
[
<div class={this.ns.e('btn')}>
<i-icon type='ios-add' size='30'></i-icon>
</div>,
],
)}
<i-modal
class-name={this.ns.b('modal')}
footer-hide={true}
value={this.dialogVisible}
on-on-visible-change={this.onDialogVisibleChange}
>
<img class={this.ns.be('modal', 'img')} src={this.dialogImageUrl} />
</i-modal>
</div>
);
},
});
export { IBizFileUpload } from './ibiz-file-upload/ibiz-file-upload';
export { IBizGridFileUpload } from './ibiz-grid-file-upload/ibiz-grid-file-upload';
export { IBizImageUpload } from './ibiz-image-upload/ibiz-image-upload';
......@@ -40,7 +40,7 @@ export const FormItem = defineComponent({
value: this.value,
data,
controller: this.controller.editor,
disable: this.controller.disabled,
disabled: this.controller.disabled,
},
on: {
change: this.onValueChange,
......
......@@ -21,18 +21,14 @@ export const GridColumn = defineComponent({
},
},
setup(props) {
/** 先看列是否启用行编辑,然后是否有配置编辑项,最后才看rowController控的状态 */
const showRowEdit = computed(() => {
return (
props.fieldColumn.enableRowEdit &&
props.editItem &&
props.row.showRowEdit
);
/** 先看列是否启用行编辑,然后是否有配置编辑项 */
const renderRowEdit = computed(() => {
return props.fieldColumn.enableRowEdit && props.editItem;
});
return { showRowEdit };
return { renderRowEdit };
},
render() {
if (this.showRowEdit && this.editItem) {
if (this.renderRowEdit) {
return (
<grid-edit-item
controller={this.editItem}
......
......@@ -3,6 +3,8 @@ import {
GridRowController,
} from '@ibiz-template/controller';
import { defineComponent } from 'vue';
import '@ibiz-template/theme/style/components/widgets/grid/grid-edit-item.scss';
import { useNamespace } from '@ibiz-template/vue-util';
export const GridEditItem = defineComponent({
name: 'GridEditItem',
......@@ -17,16 +19,24 @@ export const GridEditItem = defineComponent({
},
},
setup(props) {
const ns = useNamespace('grid-edit-item');
// 编辑器值变更事件
const onValueChange = (val: unknown, name?: string) => {
props.controller.setRowValue(props.row, val, name);
const rowDataChange = async (val: unknown, name?: string) => {
const _name = name || props.controller.model.codeName;
// 值不变则无后续,也不保存
if (props.row.data[_name] === val) {
return;
}
await props.controller.setRowValue(props.row, val, name);
// 保存时机由界面控制
await props.controller.grid.save(props.row.data);
};
const onStopPropagation = (e: MouseEvent) => {
e.stopPropagation();
};
return { onValueChange, onStopPropagation };
return { ns, rowDataChange, onStopPropagation };
},
render(h) {
const codeName = this.controller.model.codeName;
......@@ -38,17 +48,13 @@ export const GridEditItem = defineComponent({
nativeonClick={this.onStopPropagation}
>
{this.controller.editorProvider &&
h(this.controller.editorProvider.rowEditor, {
h(this.controller.editorProvider.gridEditor, {
props: {
value: this.row.data[codeName],
data: this.row.data,
controller: this.controller.editor,
disable: this.row.columnState[codeName]!.disabled,
},
on: {
change: (val: unknown, name?: string) => {
this.onValueChange(val, name);
},
disabled: this.row.columnState[codeName]!.disabled,
rowDataChange: this.rowDataChange.bind(this),
},
})}
</appGridEditItem>
......
......@@ -50,12 +50,12 @@ export const GridFieldColumn = defineComponent({
const c = this.controller;
const value = this.row.data[c.model.codeName];
return (
<span
<div
class={[this.ns.b(), c.isLinkColumn && this.ns.m('link-column')]}
onClick={this.onCellClick}
>
{this.codeListText || value}
</span>
<span class={this.ns.e('text')}>{this.codeListText || value}</span>
</div>
);
},
});
......
......@@ -5,6 +5,7 @@ import { PiniaVuePlugin } from 'pinia';
import router from './router';
import App from './App';
import { AppRegister } from './app-register';
import UserRegister from './user-register';
import {
MessageUtil,
OpenViewUtil,
......@@ -59,6 +60,7 @@ async function createApp(): Promise<void> {
ibiz.notification = new NotificationUtil();
ibiz.loading = new LoadingUtil();
ibiz.plugin = new PluginFactory();
Vue.use(UserRegister);
},
router,
pinia: piniaInstance,
......
export { PluginFactory } from './plugin-factory/plugin-factory';
export { RemotePluginItem } from './remote-plugin-item/remote-plugin-item';
import Vue from 'vue';
import { RuntimeError } from '@ibiz-template/core';
import { DefectModelError } from '@ibiz-template/model';
import { IPluginFactory } from '@ibiz-template/runtime';
import { IPSAppPFPluginRef, IPSSysPFPlugin } from '@ibiz/dynamic-model-api';
import {
IPluginFactory,
RemotePluginConfig,
RemotePluginItem,
} from '../remote-plugin-item/remote-plugin-item';
} from '@ibiz-template/runtime';
import { IPSAppPFPluginRef, IPSSysPFPlugin } from '@ibiz/dynamic-model-api';
import { basename, dirname, join } from 'path-browserify';
/**
* 插件工具类
......@@ -27,6 +28,15 @@ export class PluginFactory implements IPluginFactory {
*/
protected cache: Map<string, boolean> = new Map();
/**
* 本地开发测试包,只在本地开发生效
*
* @author chitanda
* @date 2022-11-02 21:11:41
* @protected
*/
protected devPackages: Map<string, () => Promise<unknown>> = new Map();
/**
* 插件缓存
*
......@@ -37,6 +47,18 @@ export class PluginFactory implements IPluginFactory {
*/
protected pluginCache: Map<string, RemotePluginItem> = new Map();
/**
* 设置开发插件,用于本地调试
*
* @author chitanda
* @date 2022-11-02 21:11:56
* @param {string} name
* @param {() => Promise<unknown>} fn
*/
setDevPlugin(name: string, fn: () => Promise<unknown>): void {
this.devPackages.set(name, fn);
}
/**
* 加载插件
*
......@@ -64,12 +86,6 @@ export class PluginFactory implements IPluginFactory {
* @return {*} {Promise<boolean>}
*/
async loadPluginRef(pluginRef: IPSAppPFPluginRef): Promise<boolean> {
if (ibiz.env.dev) {
ibiz.log.warn(
`开发模式,远程插件[${pluginRef.name}]不加载。开发测试请在本地引入!`,
);
return true;
}
if (this.pluginCache.has(pluginRef.rTObjectName)) {
return true;
}
......@@ -87,14 +103,13 @@ export class PluginFactory implements IPluginFactory {
config as unknown as RemotePluginConfig,
);
if (remotePlugin) {
await this.loadScript(remotePlugin.script);
if (remotePlugin.styles instanceof Array) {
await this.loadStyles(remotePlugin.styles);
} else {
await this.loadStyles([remotePlugin.styles]);
}
try {
await this.loadScript(remotePlugin);
this.pluginCache.set(pluginRef.rTObjectName, remotePlugin);
return true;
} catch (error) {
ibiz.log.error(error);
}
}
return false;
}
......@@ -103,50 +118,77 @@ export class PluginFactory implements IPluginFactory {
* 加载插件
*
* @author chitanda
* @date 2022-10-31 14:10:10
* @date 2022-11-02 14:11:31
* @protected
* @param {string} scriptUrl
* @param {RemotePluginItem} remotePlugin
* @return {*} {Promise<void>}
*/
protected async loadScript(scriptUrl: string): Promise<void> {
protected async loadScript(remotePlugin: RemotePluginItem): Promise<void> {
const { baseUrl, name, version, system, module } = remotePlugin.config;
const scriptUrl = this.devPackages.has(name)
? join(baseUrl, `${name}@${version}`, module)
: join(baseUrl, `${name}@${version}`, system);
if (scriptUrl) {
if (this.cache.has(scriptUrl)) {
return;
}
let data: IParams | null = null;
const url = this.parseUrl(scriptUrl);
const module = await System.import(url);
if (module) {
if (module.default) {
Vue.use(module.default);
if (this.devPackages.has(name)) {
const fn = this.devPackages.get(name)!;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const pluginModule = (await fn()) as any;
Vue.use(pluginModule.default, remotePlugin);
this.cache.set(scriptUrl, true);
const mateUrl: string = pluginModule.default.mateUrl || '';
await this.loadStyles(
remotePlugin,
mateUrl.split('/').splice(3).join('/'),
);
} else {
data = await System.import(url);
if (data) {
if (data.default) {
Vue.use(data.default, remotePlugin);
} else {
throw new RuntimeError(
`远程插件加载失败, 远程插件未找到[default]默认导出`,
);
}
this.cache.set(scriptUrl, true);
await this.loadStyles(remotePlugin, url);
} else {
throw new RuntimeError(`远程插件加载失败, 未找到文件`);
}
}
}
}
/**
* 加载插件样式文件
*
* @author chitanda
* @date 2022-10-31 12:10:23
* @date 2022-11-02 21:11:51
* @protected
* @param {(string[])} styles
* @param {RemotePluginItem} remotePlugin
* @param {string} [rootJsPath] 入口 js 文件全路径,用于计算拼接 css 文件所在路径
* @return {*} {Promise<void>}
*/
protected async loadStyles(styles: string[]): Promise<void> {
if (styles && styles.length > 0) {
const all = styles.map(styleUrl => {
if (this.cache.has(styleUrl)) {
protected async loadStyles(
remotePlugin: RemotePluginItem,
rootJsPath: string,
): Promise<void> {
const { styles } = remotePlugin.config;
if (styles) {
const arr = styles instanceof Array ? styles : [styles];
if (arr && arr.length > 0) {
const folder = dirname(rootJsPath);
const all = arr.map(styleUrl => {
const url = `${join(folder, basename(styleUrl))}`;
if (this.cache.has(url)) {
return false;
}
return new Promise((resolve, reject) => {
const url = this.parseUrl(styleUrl);
const linkDom = document.createElement('link');
linkDom.setAttribute('type', 'text/css');
linkDom.setAttribute('rel', 'stylesheet');
......@@ -159,6 +201,7 @@ export class PluginFactory implements IPluginFactory {
await Promise.all(all);
}
}
}
/**
* 编译请求文件地址
......@@ -173,6 +216,6 @@ export class PluginFactory implements IPluginFactory {
if (script.startsWith('http://') || script.startsWith('https://')) {
return script;
}
return `${ibiz.env.pluginBaseUrl}${script}`;
return `./${join(ibiz.env.pluginBaseUrl, script)}`;
}
}
......@@ -15,9 +15,9 @@ import {
* @implements {EditorProvider}
*/
export class CheckBoxListEditorProvider implements IEditorProvider {
formEditor: string = 'IBizCheckBoxList';
formEditor: string = 'IBizCheckbox';
rowEditor: string = 'IBizCheckBoxList';
gridEditor: string = 'IBizGridCheckbox';
async createController(
editorModel: CheckBoxListModel,
......
......@@ -17,7 +17,7 @@ import {
export class DataPickerEditorProvider implements IEditorProvider {
formEditor: string;
rowEditor: string;
gridEditor: string;
constructor(editorType: string) {
let componentName = 'IBizPicker';
......@@ -26,7 +26,7 @@ export class DataPickerEditorProvider implements IEditorProvider {
componentName = 'IBizPickerDropDown';
break;
case 'PICKEREX_LINK':
componentName = 'AppPickerLinkOnly';
componentName = 'IBizPickerLink';
break;
case 'ADDRESSPICKUP':
componentName = 'IBizMPicker';
......@@ -34,7 +34,7 @@ export class DataPickerEditorProvider implements IEditorProvider {
default:
}
this.formEditor = componentName;
this.rowEditor = componentName;
this.gridEditor = componentName;
}
async createController(
......
......@@ -18,7 +18,7 @@ import {
export class DatePickerEditorProvider implements IEditorProvider {
formEditor: string = 'IBizDatePicker';
rowEditor: string = 'IBizDatePicker';
gridEditor: string = 'IBizDatePicker';
async createController(
editorModel: DatePickerEditorModel,
......
......@@ -17,7 +17,7 @@ import {
export class DropDownListEditorProvider implements IEditorProvider {
formEditor: string = 'IBizDropDownList';
rowEditor: string = 'IBizDropDownList';
gridEditor: string = 'IBizDropDownList';
async createController(
editorModel: DropDownListModel,
......
......@@ -17,15 +17,15 @@ import {
export class FileUploaderEditorProvider implements IEditorProvider {
formEditor: string = 'IBizFileUpload';
rowEditor: string = 'IBizFileUpload';
gridEditor: string = 'IBizFileUpload';
constructor(editorType: string) {
if (editorType === 'PICTURE') {
this.formEditor = 'AppImageUpload';
this.rowEditor = 'AppImageUpload';
this.formEditor = 'IBizImageUpload';
this.gridEditor = 'IBizImageUpload';
} else if (editorType === 'FILEUPLOADER') {
this.formEditor = 'IBizFileUpload';
this.rowEditor = 'AppFileUploadRowPreview';
this.gridEditor = 'IBizGridFileUpload';
}
}
......
......@@ -15,9 +15,9 @@ import {
* @implements {EditorProvider}
*/
export class RadioButtonListEditorProvider implements IEditorProvider {
formEditor: string = 'IBizRadioButtonList';
formEditor: string = 'IBizRadio';
rowEditor: string = 'IBizRadioButtonList';
gridEditor: string = 'IBizRadio';
async createController(
editorModel: RadioButtonListModel,
......
......@@ -17,7 +17,7 @@ import {
export class SpanEditorProvider implements IEditorProvider {
formEditor: string = 'IBizSpan';
rowEditor: string = 'IBizSpan';
gridEditor: string = 'IBizSpan';
async createController(
editorModel: SpanEditorModel,
......
......@@ -15,14 +15,14 @@ import {
* @implements {EditorProvider}
*/
export class TextBoxEditorProvider implements IEditorProvider {
formEditor: string = 'IBizInputBox';
formEditor: string = 'IBizInput';
rowEditor: string = 'IBizInputBox';
gridEditor: string = 'IBizGridInput';
constructor(editorType?: string) {
if (editorType === 'NUMBER') {
this.formEditor = 'AppInputNumber';
this.rowEditor = 'AppInputNumber';
this.formEditor = 'IBizInputNumber';
this.gridEditor = 'IBizInputNumber';
}
}
......
......@@ -63,10 +63,13 @@ export default defineComponent({
}, 300);
});
const loading = ref(false);
const onClick = () => {
formRef.value!.validate(async (valid: boolean) => {
if (valid) {
try {
loading.value = true;
const res = await ibiz.auth.v7login(
loginData.username,
loginData.password,
......@@ -82,10 +85,12 @@ export default defineComponent({
ibiz.notification.error({
title: res.data?.message || '登录失败',
});
loading.value = false;
} catch (error) {
ibiz.notification.error({
title: (error as IData).response?.data?.message || '登录失败',
});
loading.value = false;
}
}
});
......@@ -136,7 +141,12 @@ export default defineComponent({
</i-input>
</i-form-item>
<i-form-item>
<i-button shape='circle' long on-click={onClick}>
<i-button
shape='circle'
loading={loading.value}
long
on-click={onClick}
>
登录
</i-button>
</i-form-item>
......
......@@ -56,6 +56,9 @@ export default defineConfig({
},
},
cors: true,
fs: {
strict: false
}
},
css: {
preprocessorOptions: {
......@@ -70,8 +73,8 @@ export default defineConfig({
}),
vue(),
vueJsx(),
// visualizer(),
legacy({ targets: ['ie >= 11'], externalSystemJS: true }),
IBizVitePlugin(),
// visualizer(),
],
});
......@@ -274,15 +274,15 @@
"@babel/helper-validator-identifier" "^7.18.6"
to-fast-properties "^2.0.0"
"@commitlint/cli@^17.1.2":
version "17.1.2"
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.1.2.tgz#38240f84936df5216f749f06f838dc50cc85a43d"
integrity sha512-h/4Hlka3bvCLbnxf0Er2ri5A44VMlbMSkdTRp8Adv2tRiklSTRIoPGs7OEXDv3EoDs2AAzILiPookgM4Gi7LOw==
"@commitlint/cli@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-17.2.0.tgz#75cb39181cea98ccc3c9ec122c367af4252d0b5a"
integrity sha512-kd1zykcrjIKyDRftWW1E1TJqkgzeosEkv1BiYPCdzkb/g/3BrfgwZUHR1vg+HO3qKUb/0dN+jNXArhGGAHpmaQ==
dependencies:
"@commitlint/format" "^17.0.0"
"@commitlint/lint" "^17.1.0"
"@commitlint/load" "^17.1.2"
"@commitlint/read" "^17.1.0"
"@commitlint/lint" "^17.2.0"
"@commitlint/load" "^17.2.0"
"@commitlint/read" "^17.2.0"
"@commitlint/types" "^17.0.0"
execa "^5.0.0"
lodash "^4.17.19"
......@@ -290,10 +290,10 @@
resolve-global "1.0.0"
yargs "^17.0.0"
"@commitlint/config-conventional@^17.1.0":
version "17.1.0"
resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.1.0.tgz#9bd852766e08842bfe0fe4deb40e152eb718ec1b"
integrity sha512-WU2p0c9/jLi8k2q2YrDV96Y8XVswQOceIQ/wyJvQxawJSCasLdRB3kUIYdNjOCJsxkpoUlV/b90ZPxp1MYZDiA==
"@commitlint/config-conventional@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-17.2.0.tgz#245086582cb02901eb4beaa52bc87d138238178f"
integrity sha512-g5hQqRa80f++SYS233dbDSg16YdyounMTAhVcmqtInNeY/GF3aA4st9SVtJxpeGrGmueMrU4L+BBb+6Vs5wrcg==
dependencies:
conventional-changelog-conventionalcommits "^5.0.0"
......@@ -326,28 +326,28 @@
"@commitlint/types" "^17.0.0"
chalk "^4.1.0"
"@commitlint/is-ignored@^17.1.0":
version "17.1.0"
resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.1.0.tgz#c9d5ca22679fdc657fff33a8aa23e0c0152ebbd1"
integrity sha512-JITWKDMHhIh8IpdIbcbuH9rEQJty1ZWelgjleTFrVRAcEwN/sPzk1aVUXRIZNXMJWbZj8vtXRJnFihrml8uECQ==
"@commitlint/is-ignored@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-17.2.0.tgz#07c329396e2457fd37e8707f990c3a49731a168d"
integrity sha512-rgUPUQraHxoMLxiE8GK430HA7/R2vXyLcOT4fQooNrZq9ERutNrP6dw3gdKLkq22Nede3+gEHQYUzL4Wu75ndg==
dependencies:
"@commitlint/types" "^17.0.0"
semver "7.3.7"
"@commitlint/lint@^17.1.0":
version "17.1.0"
resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.1.0.tgz#de2d3baa2b20d9ec3d5fd2f2421f6025c8439630"
integrity sha512-ltpqM2ogt/+SDhUaScFo0MdscncEF96lvQTPMM/VTTWlw7sTGLLWkOOppsee2MN/uLNNWjQ7kqkd4h6JqoM9AQ==
"@commitlint/lint@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-17.2.0.tgz#a793579d56c3e73416c750d76f09510bc8a6479f"
integrity sha512-N2oLn4Dj672wKH5qJ4LGO+73UkYXGHO+NTVUusGw83SjEv7GjpqPGKU6KALW2kFQ/GsDefSvOjpSi3CzWHQBDg==
dependencies:
"@commitlint/is-ignored" "^17.1.0"
"@commitlint/parse" "^17.0.0"
"@commitlint/rules" "^17.0.0"
"@commitlint/is-ignored" "^17.2.0"
"@commitlint/parse" "^17.2.0"
"@commitlint/rules" "^17.2.0"
"@commitlint/types" "^17.0.0"
"@commitlint/load@^17.1.2":
version "17.1.2"
resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.1.2.tgz#19c88be570d8666bbd32f9b3d81925a08328bc13"
integrity sha512-sk2p/jFYAWLChIfOIp/MGSIn/WzZ0vkc3afw+l4X8hGEYkvDe4gQUUAVxjl/6xMRn0HgnSLMZ04xXh5pkTsmgg==
"@commitlint/load@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.2.0.tgz#11c9fb23a967ff1507a28931c91aae7f978ea4ae"
integrity sha512-HDD57qSqNrk399R4TIjw31AWBG8dBjNj1MrDKZKmC/wvimtnIFlqzcu1+sxfXIOHj/+M6tcMWDtvknGUd7SU+g==
dependencies:
"@commitlint/config-validator" "^17.1.0"
"@commitlint/execute-rule" "^17.0.0"
......@@ -362,24 +362,24 @@
ts-node "^10.8.1"
typescript "^4.6.4"
"@commitlint/message@^17.0.0":
version "17.0.0"
resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-17.0.0.tgz#ae0f8ec6a3e5c8d369792a2c391952c7596cca73"
integrity sha512-LpcwYtN+lBlfZijHUdVr8aNFTVpHjuHI52BnfoV01TF7iSLnia0jttzpLkrLmI8HNQz6Vhr9UrxDWtKZiMGsBw==
"@commitlint/message@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-17.2.0.tgz#c546b7a441b9f69493257f9fe0c3c8fc37933b27"
integrity sha512-/4l2KFKxBOuoEn1YAuuNNlAU05Zt7sNsC9H0mPdPm3chOrT4rcX0pOqrQcLtdMrMkJz0gC7b3SF80q2+LtdL9Q==
"@commitlint/parse@^17.0.0":
version "17.0.0"
resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.0.0.tgz#6d508a1e2aec76f348a447994f26e9b749c02091"
integrity sha512-cKcpfTIQYDG1ywTIr5AG0RAiLBr1gudqEsmAGCTtj8ffDChbBRxm6xXs2nv7GvmJN7msOt7vOKleLvcMmRa1+A==
"@commitlint/parse@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-17.2.0.tgz#d87b09436ec741c2267b76a41972b34e53459a81"
integrity sha512-vLzLznK9Y21zQ6F9hf8D6kcIJRb2haAK5T/Vt1uW2CbHYOIfNsR/hJs0XnF/J9ctM20Tfsqv4zBitbYvVw7F6Q==
dependencies:
"@commitlint/types" "^17.0.0"
conventional-changelog-angular "^5.0.11"
conventional-commits-parser "^3.2.2"
"@commitlint/read@^17.1.0":
version "17.1.0"
resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.1.0.tgz#cf6bab410180f32f70891c97b15467c0b92ac14f"
integrity sha512-73BoFNBA/3Ozo2JQvGsE0J8SdrJAWGfZQRSHqvKaqgmY042Su4gXQLqvAzgr55S9DI1l9TiU/5WDuh8IE86d/g==
"@commitlint/read@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-17.2.0.tgz#7a67b7b611d978a344c2430cba030252c2170723"
integrity sha512-bbblBhrHkjxra3ptJNm0abxu7yeAaxumQ8ZtD6GIVqzURCETCP7Dm0tlVvGRDyXBuqX6lIJxh3W7oyKqllDsHQ==
dependencies:
"@commitlint/top-level" "^17.0.0"
"@commitlint/types" "^17.0.0"
......@@ -399,13 +399,13 @@
resolve-from "^5.0.0"
resolve-global "^1.0.0"
"@commitlint/rules@^17.0.0":
version "17.0.0"
resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.0.0.tgz#4eecc5d28cabbc5f3f73838fb02592b551f9bf62"
integrity sha512-45nIy3dERKXWpnwX9HeBzK5SepHwlDxdGBfmedXhL30fmFCkJOdxHyOJsh0+B0RaVsLGT01NELpfzJUmtpDwdQ==
"@commitlint/rules@^17.2.0":
version "17.2.0"
resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-17.2.0.tgz#b49d5ee3b5f599d7c21aab453bb055ecdc6c2e7c"
integrity sha512-1YynwD4Eh7HXZNpqG8mtUlL2pSX2jBy61EejYJv4ooZPcg50Ak7LPOyD3a9UZnsE76AXWFBz+yo9Hv4MIpAa0Q==
dependencies:
"@commitlint/ensure" "^17.0.0"
"@commitlint/message" "^17.0.0"
"@commitlint/message" "^17.2.0"
"@commitlint/to-lines" "^17.0.0"
"@commitlint/types" "^17.0.0"
execa "^5.0.0"
......@@ -492,53 +492,53 @@
dependencies:
qx-util "^0.4.4"
"@ibiz-template/controller@^0.0.1-alpha.38":
version "0.0.1-alpha.38"
resolved "https://registry.npmmirror.com/@ibiz-template/controller/-/controller-0.0.1-alpha.38.tgz#ff5e8919c89137f5dcc87f742126b270999023b2"
integrity sha512-liZ/GgNy8NdpwVwilLA3HTjgvcIUJVkCuoHkBDo2LLV4TJOBCfcLQ5ongYcEpdditQsbOsmT546n4WqbZ4u7RA==
"@ibiz-template/controller@^0.0.1-alpha.40":
version "0.0.1-alpha.40"
resolved "https://registry.yarnpkg.com/@ibiz-template/controller/-/controller-0.0.1-alpha.40.tgz#f59f42c28b7633ccaccb37fd63ad1b64a0c5fd0f"
integrity sha512-s9xXqRStODQBPvam7UVKx/U7oqj1yM/qHhZH+K0RMMLVEn/IoCp3ir1asjbgPSqBWxwJ4JM5ZIfvWm4dyyJxkg==
dependencies:
async-validator "^4.2.5"
dayjs "^1.11.5"
"@ibiz-template/core@^0.0.1-alpha.38":
version "0.0.1-alpha.38"
resolved "https://registry.npmmirror.com/@ibiz-template/core/-/core-0.0.1-alpha.38.tgz#a52d26fb591fdbe0ef570ea04d45ab660463e2c2"
integrity sha512-zLUXmu+iZvtm1uBroX0eVbaRebJsGZaGhaf1ZJ3fqfm1MF5H0pHpQMKf9V+gqtbUL0z6OyyQKKdQgUdCAL7kEg==
"@ibiz-template/core@^0.0.1-alpha.40":
version "0.0.1-alpha.40"
resolved "https://registry.yarnpkg.com/@ibiz-template/core/-/core-0.0.1-alpha.40.tgz#83773519c2befa453e5944516941f2553de67d7a"
integrity sha512-8O411O3StgmbohRkOhh1GkdSln3xH4CEIqBqc/sVtPw/1YuTP/LaLr8g/qfCiuq8KriVOk1IDkKMZrPrVqG7Qg==
dependencies:
axios "^1.1.3"
loglevel "^1.8.0"
pluralize "^8.0.0"
qs "^6.11.0"
"@ibiz-template/model@^0.0.1-alpha.37":
version "0.0.1-alpha.37"
resolved "https://registry.npmmirror.com/@ibiz-template/model/-/model-0.0.1-alpha.37.tgz#813054b0b5f399b69c6d2e0045a658b5acd7c7bb"
integrity sha512-zWYTSd3/cHricqgYkrIz9HhlJgpFGNsr9alKvaEtxPx8dnIhevAf16VpbMtUZjJ/t6XclmXHF7e+5ri3i8d8aw==
"@ibiz-template/model@^0.0.1-alpha.39":
version "0.0.1-alpha.39"
resolved "https://registry.yarnpkg.com/@ibiz-template/model/-/model-0.0.1-alpha.39.tgz#75dae9cb4486758eb7ac3f0b085f109313cbe3de"
integrity sha512-HPpCR8W6enEjWxGdYdDKJJdirO4Qx5dIpYNfZVrmhHX7dd+Ov9OnpunnIXeTLk8RFzFfQEf9ZuOTziU7QX5dfg==
dependencies:
"@ibiz/dynamic-model-api" "^2.1.5"
pluralize "^8.0.0"
"@ibiz-template/runtime@^0.0.1-alpha.38":
version "0.0.1-alpha.38"
resolved "https://registry.npmmirror.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.38.tgz#f3f168315c9aaaccf54aa66b233b5cfe444bd4d6"
integrity sha512-TyNzpyDiQ8Gmyv3jrGcMXbkqbQpR021Wmqur2FYcUrh9wbiaYvMKf5ccLF9BaXRA5Jxmxklz10OHtw0ZVAgbGQ==
"@ibiz-template/runtime@^0.0.1-alpha.40":
version "0.0.1-alpha.40"
resolved "https://registry.yarnpkg.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.40.tgz#3b60fb3d777d744037f2bc0c8492088e69d497e9"
integrity sha512-QnGZ9A32caNbPUyhHP3+rNJBM6HdxKxJh4FgNvtlpuiNga9Cw8vG0OHmM9LkMZFs4u6Gu79fationwJIBducqA==
dependencies:
"@ibiz-template/command" "^0.0.1-alpha.37"
"@ibiz-template/service@^0.0.1-alpha.38":
version "0.0.1-alpha.38"
resolved "https://registry.npmmirror.com/@ibiz-template/service/-/service-0.0.1-alpha.38.tgz#9cfa5160802e4c9232268f77ccdd224341975395"
integrity sha512-IXGuuDywAtXtTCY8uF4H0jyTxZvEvwXTeGX/5kiR9Bo3rChz1WVTYi9nQRSokav5C9fdLrE1OwPON1SU/kaUHg==
"@ibiz-template/service@^0.0.1-alpha.40":
version "0.0.1-alpha.40"
resolved "https://registry.yarnpkg.com/@ibiz-template/service/-/service-0.0.1-alpha.40.tgz#94bb0df2619e195e340a33a5db1fe058918e3bbb"
integrity sha512-DAcha7xUwxmpdC0fuL4InGlDAy2L9sABmoP3n5er8SXMzfGRKxlCt6cOtwwC5+P/4igCb/Uqv80Is8XWuqNDbg==
"@ibiz-template/theme@^0.0.1-alpha.37":
version "0.0.1-alpha.37"
resolved "https://registry.yarnpkg.com/@ibiz-template/theme/-/theme-0.0.1-alpha.37.tgz#c5c868e4532562edd782a7ee0d0e4396d7bf39fe"
integrity sha512-pEYPg1SRsVpJUeg9yf8Lwq8VlpcCzCGbeO8yorBF64HwYk3KrkW5XpQOsboSsN6MFL5/buHeSq05diKqgZNpWw==
"@ibiz-template/theme@^0.0.1-alpha.40":
version "0.0.1-alpha.40"
resolved "https://registry.yarnpkg.com/@ibiz-template/theme/-/theme-0.0.1-alpha.40.tgz#fc0c891f651d4ce25d780c2152654b31521570e9"
integrity sha512-e3R5XAhG23QgwZheW92vzZGf+CklnvE18UG+NJ2XsIORWVJfwxA3ix89/oFmA0sXUVX7+iI4SuhubhvbWu787A==
"@ibiz-template/vue-util@^0.0.1-alpha.38":
version "0.0.1-alpha.38"
resolved "https://registry.npmmirror.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.38.tgz#1321ef3dca46afb015e722dc5f5fd880ecb8d44b"
integrity sha512-Ukch5xUSBaqQySncfWwXbK/xmRyhfB66vDs4Fpch+YLABwU44Az/IHUYCUuAtUWD3I6nCrvyb8hef+9M3GKLBg==
"@ibiz-template/vue-util@^0.0.1-alpha.40":
version "0.0.1-alpha.40"
resolved "https://registry.yarnpkg.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.40.tgz#0080298397aff172a0f0ae5c4dcc853912f91236"
integrity sha512-dSLVzVA0b3bHe2Y4eOvcCCauCawYE0L2PTimgeYieVK36KGSk5wbA75JLaDJJyXhNYU3tbtK3TV9fS0EvU9upw==
"@ibiz/dynamic-model-api@^2.1.5":
version "2.1.5"
......@@ -695,10 +695,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.29.tgz#a0c58d67a42f8953c13d32f0acda47ed26dfce40"
integrity sha512-LhF+9fbIX4iPzhsRLpK5H7iPdvW8L4IwGciXQIOEcuF62+9nw/VQVsOViAOOGxY3OlOKGLFv0sWwJXdwQeTn6A==
"@types/node@^18.11.8":
version "18.11.8"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.8.tgz#16d222a58d4363a2a359656dd20b28414de5d265"
integrity sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==
"@types/node@^18.11.9":
version "18.11.9"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4"
integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
......@@ -710,6 +710,11 @@
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/path-browserify@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@types/path-browserify/-/path-browserify-1.0.0.tgz#294ec6e88b6b0d340a3897b7120e5b393f16690e"
integrity sha512-XMCcyhSvxcch8b7rZAtFAaierBYdeHXVvg2iYnxOV0MCQHmPuRRmGZPFDRzPayxcGiiSL1Te9UIO+f3cuj0tfw==
"@types/qs@^6.9.7":
version "6.9.7"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
......@@ -732,86 +737,87 @@
resolved "https://registry.yarnpkg.com/@types/systemjs/-/systemjs-6.1.1.tgz#eae17f2a080e867d01a2dd614f524ab227cf5a41"
integrity sha512-d1M6eDKBGWx7RbYy295VEFoOF9YDJkPI959QYnmzcmeaV+SP4D0xV7dEh3sN5XF3GvO3PhGzm+17Z598nvHQuQ==
"@typescript-eslint/eslint-plugin@^5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz#f8eeb1c6bb2549f795f3ba71aec3b38d1ab6b1e1"
integrity sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==
"@typescript-eslint/eslint-plugin@^5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz#36a8c0c379870127059889a9cc7e05c260d2aaa5"
integrity sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ==
dependencies:
"@typescript-eslint/scope-manager" "5.41.0"
"@typescript-eslint/type-utils" "5.41.0"
"@typescript-eslint/utils" "5.41.0"
"@typescript-eslint/scope-manager" "5.42.0"
"@typescript-eslint/type-utils" "5.42.0"
"@typescript-eslint/utils" "5.42.0"
debug "^4.3.4"
ignore "^5.2.0"
natural-compare-lite "^1.4.0"
regexpp "^3.2.0"
semver "^7.3.7"
tsutils "^3.21.0"
"@typescript-eslint/parser@^5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.41.0.tgz#0414a6405007e463dc527b459af1f19430382d67"
integrity sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==
"@typescript-eslint/parser@^5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.42.0.tgz#be0ffbe279e1320e3d15e2ef0ad19262f59e9240"
integrity sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA==
dependencies:
"@typescript-eslint/scope-manager" "5.41.0"
"@typescript-eslint/types" "5.41.0"
"@typescript-eslint/typescript-estree" "5.41.0"
"@typescript-eslint/scope-manager" "5.42.0"
"@typescript-eslint/types" "5.42.0"
"@typescript-eslint/typescript-estree" "5.42.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.41.0.tgz#28e3a41d626288d0628be14cf9de8d49fc30fadf"
integrity sha512-xOxPJCnuktUkY2xoEZBKXO5DBCugFzjrVndKdUnyQr3+9aDWZReKq9MhaoVnbL+maVwWJu/N0SEtrtEUNb62QQ==
"@typescript-eslint/scope-manager@5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz#e1f2bb26d3b2a508421ee2e3ceea5396b192f5ef"
integrity sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow==
dependencies:
"@typescript-eslint/types" "5.41.0"
"@typescript-eslint/visitor-keys" "5.41.0"
"@typescript-eslint/types" "5.42.0"
"@typescript-eslint/visitor-keys" "5.42.0"
"@typescript-eslint/type-utils@5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.41.0.tgz#2371601171e9f26a4e6da918a7913f7266890cdf"
integrity sha512-L30HNvIG6A1Q0R58e4hu4h+fZqaO909UcnnPbwKiN6Rc3BUEx6ez2wgN7aC0cBfcAjZfwkzE+E2PQQ9nEuoqfA==
"@typescript-eslint/type-utils@5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz#4206d7192d4fe903ddf99d09b41d4ac31b0b7dca"
integrity sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg==
dependencies:
"@typescript-eslint/typescript-estree" "5.41.0"
"@typescript-eslint/utils" "5.41.0"
"@typescript-eslint/typescript-estree" "5.42.0"
"@typescript-eslint/utils" "5.42.0"
debug "^4.3.4"
tsutils "^3.21.0"
"@typescript-eslint/types@5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.41.0.tgz#6800abebc4e6abaf24cdf220fb4ce28f4ab09a85"
integrity sha512-5BejraMXMC+2UjefDvrH0Fo/eLwZRV6859SXRg+FgbhA0R0l6lDqDGAQYhKbXhPN2ofk2kY5sgGyLNL907UXpA==
"@typescript-eslint/types@5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.42.0.tgz#5aeff9b5eced48f27d5b8139339bf1ef805bad7a"
integrity sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw==
"@typescript-eslint/typescript-estree@5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.41.0.tgz#bf5c6b3138adbdc73ba4871d060ae12c59366c61"
integrity sha512-SlzFYRwFSvswzDSQ/zPkIWcHv8O5y42YUskko9c4ki+fV6HATsTODUPbRbcGDFYP86gaJL5xohUEytvyNNcXWg==
"@typescript-eslint/typescript-estree@5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz#2592d24bb5f89bf54a63384ff3494870f95b3fd8"
integrity sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg==
dependencies:
"@typescript-eslint/types" "5.41.0"
"@typescript-eslint/visitor-keys" "5.41.0"
"@typescript-eslint/types" "5.42.0"
"@typescript-eslint/visitor-keys" "5.42.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
"@typescript-eslint/utils@5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.41.0.tgz#f41ae5883994a249d00b2ce69f4188f3a23fa0f9"
integrity sha512-QlvfwaN9jaMga9EBazQ+5DDx/4sAdqDkcs05AsQHMaopluVCUyu1bTRUVKzXbgjDlrRAQrYVoi/sXJ9fmG+KLQ==
"@typescript-eslint/utils@5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.42.0.tgz#f06bd43b9a9a06ed8f29600273240e84a53f2f15"
integrity sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ==
dependencies:
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
"@typescript-eslint/scope-manager" "5.41.0"
"@typescript-eslint/types" "5.41.0"
"@typescript-eslint/typescript-estree" "5.41.0"
"@typescript-eslint/scope-manager" "5.42.0"
"@typescript-eslint/types" "5.42.0"
"@typescript-eslint/typescript-estree" "5.42.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
semver "^7.3.7"
"@typescript-eslint/visitor-keys@5.41.0":
version "5.41.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.41.0.tgz#d3510712bc07d5540160ed3c0f8f213b73e3bcd9"
integrity sha512-vilqeHj267v8uzzakbm13HkPMl7cbYpKVjgFWZPIOHIJHZtinvypUhJ5xBXfWYg4eFKqztbMMpOgFpT9Gfx4fw==
"@typescript-eslint/visitor-keys@5.42.0":
version "5.42.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz#ee8d62d486f41cfe646632fab790fbf0c1db5bb0"
integrity sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg==
dependencies:
"@typescript-eslint/types" "5.41.0"
"@typescript-eslint/types" "5.42.0"
eslint-visitor-keys "^3.3.0"
"@vitejs/plugin-legacy@^2.3.0":
......@@ -1927,10 +1933,10 @@ eslint-plugin-prettier@^4.2.1:
dependencies:
prettier-linter-helpers "^1.0.0"
eslint-plugin-vue@^9.6.0:
version "9.6.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.6.0.tgz#5d1825b93d54595b1ba97106843e1d28cf3bb291"
integrity sha512-zzySkJgVbFCylnG2+9MDF7N+2Rjze2y0bF8GyUNpFOnT8mCMfqqtLDJkHBuYu9N/psW1A6DVbQhPkP92E+qakA==
eslint-plugin-vue@^9.7.0:
version "9.7.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.7.0.tgz#d391b9864f128ea2d1ee4dabeafb5f7c0cea981f"
integrity sha512-DrOO3WZCZEwcLsnd3ohFwqCoipGRSTKTBTnLwdhqAbYZtzWl0o7D+D8ZhlmiZvABKTEl8AFsqH1GHGdybyoQmw==
dependencies:
eslint-utils "^3.0.0"
natural-compare "^1.4.0"
......@@ -3051,6 +3057,11 @@ nanoid@^3.3.4:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
natural-compare-lite@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
......@@ -3244,6 +3255,11 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
path-browserify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
......@@ -4221,10 +4237,10 @@ vite-plugin-eslint@^1.8.1:
"@types/eslint" "^8.4.5"
rollup "^2.77.2"
vite@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.1.tgz#dc1f54568300a7acdd89c8611e2719c21f1334f4"
integrity sha512-ADtMkfHuWq4tskJsri2n2FZkORO8ZyhI+zIz7zTrDAgDEtct1jdxOg3YsZBfHhKjmMoWLOSCr+64qrEDGo/DbQ==
vite@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.2.tgz#280762bfaf47bcea1d12698427331c0009ac7c1f"
integrity sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw==
dependencies:
esbuild "^0.15.9"
postcss "^8.4.18"
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册