feat: 出入库记录模块和产品模块开发
This commit is contained in:
parent
df8806a5fb
commit
655adf787f
|
@ -97,7 +97,7 @@ pnpm migration:revert
|
|||
4.执行sql覆盖docker中的数据库
|
||||
|
||||
```bash
|
||||
docker exec -i huaxin-admin-mysql mysql -h 127.0.0.1 -u root -phuaxin123 hxoa < hxoa20240301.sql
|
||||
docker exec -i huaxin-admin-mysql mysql -h 127.0.0.1 -u root -phuaxin123 hxoa < hxoa_2024-03-05_151242.sql
|
||||
```
|
||||
|
||||
更多细节,请移步至[官方文档](https://typeorm.io/migrations)
|
||||
|
|
15
package.json
15
package.json
|
@ -94,6 +94,7 @@
|
|||
"passport-google-oauth20": "^2.0.0",
|
||||
"passport-jwt": "^4.0.1",
|
||||
"passport-local": "^1.0.0",
|
||||
"pinyin": "3",
|
||||
"qiniu": "^7.11.0",
|
||||
"reflect-metadata": "^0.2.1",
|
||||
"rimraf": "^5.0.5",
|
||||
|
@ -120,24 +121,24 @@
|
|||
"@types/ua-parser-js": "^0.7.39",
|
||||
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
||||
"@typescript-eslint/parser": "^5.0.0",
|
||||
"cliui": "^8.0.1",
|
||||
"commitizen": "^4.3.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"cz-customizable": "^7.0.0",
|
||||
"eslint": "^8.0.1",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"prettier": "~3.2.5",
|
||||
"husky": "^8.0.0",
|
||||
"jest": "^29.7.0",
|
||||
"prettier": "~3.2.5",
|
||||
"source-map-support": "^0.5.21",
|
||||
"standard-version": "^9.5.0",
|
||||
"supertest": "^6.3.4",
|
||||
"ts-jest": "^29.1.2",
|
||||
"ts-loader": "^9.5.1",
|
||||
"ts-node": "^10.9.2",
|
||||
"tsconfig-paths": "^4.2.0",
|
||||
"typescript": "^5.3.3",
|
||||
"cliui": "^8.0.1",
|
||||
"commitizen": "^4.3.0",
|
||||
"cz-customizable": "^7.0.0",
|
||||
"standard-version": "^9.5.0",
|
||||
"husky": "^8.0.0"
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
|
|
534
pnpm-lock.yaml
534
pnpm-lock.yaml
|
@ -149,6 +149,9 @@ dependencies:
|
|||
passport-local:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
pinyin:
|
||||
specifier: '3'
|
||||
version: 3.1.0
|
||||
qiniu:
|
||||
specifier: ^7.11.0
|
||||
version: 7.11.0
|
||||
|
@ -379,7 +382,6 @@ packages:
|
|||
dependencies:
|
||||
'@babel/highlight': 7.23.4
|
||||
chalk: 2.4.2
|
||||
dev: true
|
||||
|
||||
/@babel/compat-data@7.23.5:
|
||||
resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
|
||||
|
@ -634,7 +636,6 @@ packages:
|
|||
'@babel/helper-validator-identifier': 7.22.20
|
||||
chalk: 2.4.2
|
||||
js-tokens: 4.0.0
|
||||
dev: true
|
||||
|
||||
/@babel/parser@7.23.9:
|
||||
resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==}
|
||||
|
@ -1762,6 +1763,22 @@ packages:
|
|||
kuler: 2.0.0
|
||||
dev: false
|
||||
|
||||
/@emnapi/core@0.45.0:
|
||||
resolution: {integrity: sha512-DPWjcUDQkCeEM4VnljEOEcXdAD7pp8zSZsgOujk/LGIwCXWbXJngin+MO4zbH429lzeC3WbYLGjE2MaUOwzpyw==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@emnapi/runtime@0.45.0:
|
||||
resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@eslint-community/eslint-utils@4.4.0(eslint@8.57.0):
|
||||
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
@ -2278,6 +2295,26 @@ packages:
|
|||
engines: {node: '>=8'}
|
||||
dev: false
|
||||
|
||||
/@mapbox/node-pre-gyp@1.0.11:
|
||||
resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
detect-libc: 2.0.2
|
||||
https-proxy-agent: 5.0.1
|
||||
make-dir: 3.1.0
|
||||
node-fetch: 2.7.0
|
||||
nopt: 5.0.0
|
||||
npmlog: 5.0.1
|
||||
rimraf: 3.0.2
|
||||
semver: 7.6.0
|
||||
tar: 6.2.0
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@microsoft/tsdoc@0.14.2:
|
||||
resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
|
||||
dev: false
|
||||
|
@ -2330,6 +2367,16 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@napi-rs/wasm-runtime@0.1.1:
|
||||
resolution: {integrity: sha512-ATj9ua659JgrkICjJscaeZdmPr44cb/KFjNWuD0N6pux0SpzaM7+iOuuK11mAnQM2N9q0DT4REu6NkL8ZEhopw==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@emnapi/core': 0.45.0
|
||||
'@emnapi/runtime': 0.45.0
|
||||
'@tybys/wasm-util': 0.8.1
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@nestjs-modules/mailer@1.10.3(@nestjs/common@10.3.3)(@nestjs/core@10.3.3)(nodemailer@6.9.9):
|
||||
resolution: {integrity: sha512-k2gs2NH8Ygq4JnETX+EDBXixLAS8DDZEI/Wbr9LGL3HwO3Qz8zVh8dBJ4ESpySuWniW+a8rARzGXtTUHC4KFlw==}
|
||||
peerDependencies:
|
||||
|
@ -2791,6 +2838,159 @@ packages:
|
|||
rxjs: 7.8.1
|
||||
tslib: 2.6.2
|
||||
|
||||
/@node-rs/jieba-android-arm-eabi@1.10.0:
|
||||
resolution: {integrity: sha512-bzusJSLHm7I0qL8aQXGLt7IQ51Px35yGGEcQ/Ps4SEt0AxRSJ2/rxNET/8mlwBpOCZ5xiKE3BOBRfQajiPiI3g==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-android-arm64@1.10.0:
|
||||
resolution: {integrity: sha512-g89Oq5U2RPmtlvuQhjNj8YZc5Gq033ODb7Ot4Z/OdIHvg2WMxi2M1GQhcdKu60dO79/tazc53W6I8/y691DUfQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-darwin-arm64@1.10.0:
|
||||
resolution: {integrity: sha512-IhR5r+XxFcfhVsF93zQ3uCJy8ndotRntXzoW/JCyKqOahUo/ITQRT6vTKHKMyD9xNmjl222OZonBSo2+mlI2fQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-darwin-x64@1.10.0:
|
||||
resolution: {integrity: sha512-MBIs8ixKY4FPnifdZ7eTx6ht85TXE4kFBK4c8A/VDAbnmzBzpEyuV7tHUA2wAdfR0muC9j7/5FB4kQGZgYfc8g==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-freebsd-x64@1.10.0:
|
||||
resolution: {integrity: sha512-MuY+1QEXONxo3I/uFLFju0/pSN5bzQORhJkIdP8CYv+jZaVB4Uz6rC7A5HrgjiAXOna6QsKlRgx2bYyHfaBUrA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-linux-arm-gnueabihf@1.10.0:
|
||||
resolution: {integrity: sha512-QfSBnwISdVuTqsi4iThAO1LSbKRSqSsIWiIJgCduhYsTDDiG9+pHyfiZtcTwSf73SDXHZ400QuBNONWLQ/dSag==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-linux-arm64-gnu@1.10.0:
|
||||
resolution: {integrity: sha512-vzA2tX/6dReEd/7tZ9927glWQmKDausM6R9S5CqZx4BA4NSaWAK0xFdWsz0K7np459FXqNavLdNB5FVFJb4zzA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-linux-arm64-musl@1.10.0:
|
||||
resolution: {integrity: sha512-gxqoAVOQsn9sgYK6mFO9dsMZ/yOMvVecLZW5rGvLErjiugVvYUlESXIvCqxp2GSws8RtTqJj6p9u/lBmCCuvaw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-linux-x64-gnu@1.10.0:
|
||||
resolution: {integrity: sha512-rS5Shs8JITxJjFIjoIZ5a9O+GO21TJgKu03g2qwFE3QaN5ZOvXtz+/AqqyfT4GmmMhCujD83AGqfOGXDmItF9w==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-linux-x64-musl@1.10.0:
|
||||
resolution: {integrity: sha512-BvSiF2rR8Birh2oEVHcYwq0WGC1cegkEdddWsPrrSmpKmukJE2zyjcxaOOggq2apb8fIRsjyeeUh6X3R5AgjvA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-wasm32-wasi@1.10.0:
|
||||
resolution: {integrity: sha512-EzeAAbRrFTdYw61rd8Mfwdp/fA21d58z9vLY06CDbI+dqANfMFn1IUdwzKWi8S5J/MRhvbzonbbh3yHlz6F43Q==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
cpu: [wasm32]
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@napi-rs/wasm-runtime': 0.1.1
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-win32-arm64-msvc@1.10.0:
|
||||
resolution: {integrity: sha512-eZjRLFUAvq1/E5+xXfJRqIB99Gu6BA+6+EXf/rCLuvEjXrDQuUunhmrSoOL5MjmUXTtazS+bXq9PXV5EFYyOPw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-win32-ia32-msvc@1.10.0:
|
||||
resolution: {integrity: sha512-DrfbeCN7UcLN+MiocZabWo74XZIjfpQsJ/WMOItZzVbU2gDcJSkSyAhML9+OqId66DhGCMFFlGinocElM8iIAw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba-win32-x64-msvc@1.10.0:
|
||||
resolution: {integrity: sha512-RjBkBmjjHmj+bofiq5/han8wzbCkDk24OAPJ+YX8PX20GFSHmdjCiWapv3AooN8/RiKqlBfgodjS1JUngNWo5g==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@node-rs/jieba@1.10.0:
|
||||
resolution: {integrity: sha512-9oZMCvZVnrAMeWTSnEjJ0OSw7YcV4dJJKSioqq80oUNf3eYLGdEXsgYwCe1AYEMcfUfNVgvjznItJKrsoud0IA==}
|
||||
engines: {node: '>= 10'}
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
'@node-rs/jieba-android-arm-eabi': 1.10.0
|
||||
'@node-rs/jieba-android-arm64': 1.10.0
|
||||
'@node-rs/jieba-darwin-arm64': 1.10.0
|
||||
'@node-rs/jieba-darwin-x64': 1.10.0
|
||||
'@node-rs/jieba-freebsd-x64': 1.10.0
|
||||
'@node-rs/jieba-linux-arm-gnueabihf': 1.10.0
|
||||
'@node-rs/jieba-linux-arm64-gnu': 1.10.0
|
||||
'@node-rs/jieba-linux-arm64-musl': 1.10.0
|
||||
'@node-rs/jieba-linux-x64-gnu': 1.10.0
|
||||
'@node-rs/jieba-linux-x64-musl': 1.10.0
|
||||
'@node-rs/jieba-wasm32-wasi': 1.10.0
|
||||
'@node-rs/jieba-win32-arm64-msvc': 1.10.0
|
||||
'@node-rs/jieba-win32-ia32-msvc': 1.10.0
|
||||
'@node-rs/jieba-win32-x64-msvc': 1.10.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@nodelib/fs.scandir@2.1.5:
|
||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||
engines: {node: '>= 8'}
|
||||
|
@ -2918,6 +3118,14 @@ packages:
|
|||
/@tsconfig/node16@1.0.4:
|
||||
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
|
||||
|
||||
/@tybys/wasm-util@0.8.1:
|
||||
resolution: {integrity: sha512-GSsTwyBl4pIzsxAY5wroZdyQKyhXk0d8PCRZtrSZ2WEB1cBdrp2EgGBwHOGCZtIIPun/DL3+AykCv+J6fyRH4Q==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
tslib: 2.6.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@types/babel__core@7.20.5:
|
||||
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
|
||||
dependencies:
|
||||
|
@ -3099,6 +3307,12 @@ packages:
|
|||
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
|
||||
dev: true
|
||||
|
||||
/@types/parse-json@4.0.2:
|
||||
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/@types/pug@2.0.10:
|
||||
resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==}
|
||||
dev: false
|
||||
|
@ -3427,6 +3641,12 @@ packages:
|
|||
through: 2.3.8
|
||||
dev: true
|
||||
|
||||
/abbrev@1.1.1:
|
||||
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/abbrev@2.0.0:
|
||||
resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
|
||||
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
|
||||
|
@ -3497,6 +3717,17 @@ packages:
|
|||
resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
|
||||
dev: true
|
||||
|
||||
/agent-base@6.0.2:
|
||||
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||
engines: {node: '>= 6.0.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/agentkeepalive@4.5.0:
|
||||
resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
|
||||
engines: {node: '>= 8.0.0'}
|
||||
|
@ -3619,7 +3850,6 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
color-convert: 1.9.3
|
||||
dev: true
|
||||
|
||||
/ansi-styles@4.3.0:
|
||||
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
|
||||
|
@ -3664,10 +3894,26 @@ packages:
|
|||
engines: {node: '>= 6.0.0'}
|
||||
dev: false
|
||||
|
||||
/aproba@2.0.0:
|
||||
resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/archy@1.0.0:
|
||||
resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==}
|
||||
dev: false
|
||||
|
||||
/are-we-there-yet@2.0.0:
|
||||
resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
delegates: 1.0.0
|
||||
readable-stream: 3.6.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/arg@4.1.3:
|
||||
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
|
||||
|
||||
|
@ -3802,6 +4048,16 @@ packages:
|
|||
'@types/babel__traverse': 7.20.5
|
||||
dev: true
|
||||
|
||||
/babel-plugin-macros@2.8.0:
|
||||
resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.23.9
|
||||
cosmiconfig: 6.0.0
|
||||
resolve: 1.22.8
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9):
|
||||
resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==}
|
||||
peerDependencies:
|
||||
|
@ -3838,6 +4094,17 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/babel-plugin-preval@4.0.0:
|
||||
resolution: {integrity: sha512-fZI/4cYneinlj2k/FsXw0/lTWSC5KKoepUueS1g25Gb5vx3GrRyaVwxWCshYqx11GEU4mZnbbFhee8vpquFS2w==}
|
||||
engines: {node: '>=8', npm: '>=6'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.23.9
|
||||
babel-plugin-macros: 2.8.0
|
||||
require-from-string: 2.0.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9):
|
||||
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
|
||||
peerDependencies:
|
||||
|
@ -4111,7 +4378,6 @@ packages:
|
|||
/callsites@3.1.0:
|
||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/camel-case@3.0.0:
|
||||
resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==}
|
||||
|
@ -4149,7 +4415,6 @@ packages:
|
|||
ansi-styles: 3.2.1
|
||||
escape-string-regexp: 1.0.5
|
||||
supports-color: 5.5.0
|
||||
dev: true
|
||||
|
||||
/chalk@3.0.0:
|
||||
resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
|
||||
|
@ -4227,6 +4492,13 @@ packages:
|
|||
optionalDependencies:
|
||||
fsevents: 2.3.3
|
||||
|
||||
/chownr@2.0.0:
|
||||
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/chrome-trace-event@1.0.3:
|
||||
resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
|
||||
engines: {node: '>=6.0'}
|
||||
|
@ -4382,7 +4654,6 @@ packages:
|
|||
/color-support@1.1.3:
|
||||
resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/color@3.2.1:
|
||||
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
|
||||
|
@ -4409,6 +4680,13 @@ packages:
|
|||
dependencies:
|
||||
delayed-stream: 1.0.0
|
||||
|
||||
/commander@1.1.1:
|
||||
resolution: {integrity: sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==}
|
||||
engines: {node: '>= 0.6.x'}
|
||||
dependencies:
|
||||
keypress: 0.1.0
|
||||
dev: false
|
||||
|
||||
/commander@10.0.1:
|
||||
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
|
||||
engines: {node: '>=14'}
|
||||
|
@ -4523,6 +4801,12 @@ packages:
|
|||
/consola@2.15.3:
|
||||
resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
|
||||
|
||||
/console-control-strings@1.1.0:
|
||||
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/constantinople@4.0.1:
|
||||
resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==}
|
||||
requiresBuild: true
|
||||
|
@ -4775,6 +5059,19 @@ packages:
|
|||
dev: true
|
||||
optional: true
|
||||
|
||||
/cosmiconfig@6.0.0:
|
||||
resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@types/parse-json': 4.0.2
|
||||
import-fresh: 3.3.0
|
||||
parse-json: 5.2.0
|
||||
path-type: 4.0.0
|
||||
yaml: 1.10.2
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/cosmiconfig@8.3.6(typescript@5.3.3):
|
||||
resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
|
||||
engines: {node: '>=14'}
|
||||
|
@ -5057,6 +5354,12 @@ packages:
|
|||
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
||||
/delegates@1.0.0:
|
||||
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/denque@2.1.0:
|
||||
resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
|
||||
engines: {node: '>=0.10'}
|
||||
|
@ -5084,6 +5387,13 @@ packages:
|
|||
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
/detect-libc@2.0.2:
|
||||
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/detect-newline@3.1.0:
|
||||
resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -5361,7 +5671,6 @@ packages:
|
|||
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
|
||||
dependencies:
|
||||
is-arrayish: 0.2.1
|
||||
dev: true
|
||||
|
||||
/error-stack-parser@2.1.4:
|
||||
resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
|
||||
|
@ -5455,7 +5764,6 @@ packages:
|
|||
/escape-string-regexp@1.0.5:
|
||||
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
dev: true
|
||||
|
||||
/escape-string-regexp@2.0.0:
|
||||
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
|
||||
|
@ -6194,6 +6502,15 @@ packages:
|
|||
universalify: 2.0.1
|
||||
dev: true
|
||||
|
||||
/fs-minipass@2.1.0:
|
||||
resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
|
||||
engines: {node: '>= 8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/fs-monkey@1.0.5:
|
||||
resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==}
|
||||
dev: true
|
||||
|
@ -6215,6 +6532,23 @@ packages:
|
|||
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
|
||||
dev: true
|
||||
|
||||
/gauge@3.0.2:
|
||||
resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
aproba: 2.0.0
|
||||
color-support: 1.1.3
|
||||
console-control-strings: 1.1.0
|
||||
has-unicode: 2.0.1
|
||||
object-assign: 4.1.1
|
||||
signal-exit: 3.0.7
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
wide-align: 1.1.5
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/generate-function@2.3.1:
|
||||
resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==}
|
||||
dependencies:
|
||||
|
@ -6467,7 +6801,6 @@ packages:
|
|||
/has-flag@3.0.0:
|
||||
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/has-flag@4.0.0:
|
||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
|
||||
|
@ -6497,6 +6830,12 @@ packages:
|
|||
dependencies:
|
||||
has-symbols: 1.0.3
|
||||
|
||||
/has-unicode@2.0.1:
|
||||
resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/has@1.0.4:
|
||||
resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==}
|
||||
engines: {node: '>= 0.4.0'}
|
||||
|
@ -6634,6 +6973,18 @@ packages:
|
|||
resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
|
||||
dev: true
|
||||
|
||||
/https-proxy-agent@5.0.1:
|
||||
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
|
||||
engines: {node: '>= 6'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
agent-base: 6.0.2
|
||||
debug: 4.3.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/human-signals@1.1.1:
|
||||
resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==}
|
||||
engines: {node: '>=8.12.0'}
|
||||
|
@ -6688,7 +7039,6 @@ packages:
|
|||
dependencies:
|
||||
parent-module: 1.0.1
|
||||
resolve-from: 4.0.0
|
||||
dev: true
|
||||
|
||||
/import-local@3.1.0:
|
||||
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
|
||||
|
@ -6848,7 +7198,6 @@ packages:
|
|||
|
||||
/is-arrayish@0.2.1:
|
||||
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
|
||||
dev: true
|
||||
|
||||
/is-arrayish@0.3.2:
|
||||
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
||||
|
@ -7531,7 +7880,6 @@ packages:
|
|||
|
||||
/js-tokens@4.0.0:
|
||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||
dev: true
|
||||
|
||||
/js-yaml@3.14.1:
|
||||
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
|
||||
|
@ -7568,7 +7916,6 @@ packages:
|
|||
|
||||
/json-parse-even-better-errors@2.3.1:
|
||||
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
|
||||
dev: true
|
||||
|
||||
/json-schema-ref-resolver@1.0.1:
|
||||
resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==}
|
||||
|
@ -7679,6 +8026,10 @@ packages:
|
|||
resolution: {integrity: sha512-i/XBRTiLqRConPKioy2oq45vbv04e8x59b0mnsIRQM+7Ec/8BC7UcL5pnC4FMeGb8KwG7q4wOMw7CtNZf5tiIg==}
|
||||
dev: true
|
||||
|
||||
/keypress@0.1.0:
|
||||
resolution: {integrity: sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==}
|
||||
dev: false
|
||||
|
||||
/keyv@4.5.4:
|
||||
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
||||
dependencies:
|
||||
|
@ -7763,7 +8114,6 @@ packages:
|
|||
|
||||
/lines-and-columns@1.2.4:
|
||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||
dev: true
|
||||
|
||||
/linkify-it@5.0.0:
|
||||
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
||||
|
@ -8014,6 +8364,15 @@ packages:
|
|||
libqp: 2.0.1
|
||||
dev: false
|
||||
|
||||
/make-dir@3.1.0:
|
||||
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
semver: 6.3.1
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/make-dir@4.0.0:
|
||||
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
|
||||
engines: {node: '>=10'}
|
||||
|
@ -8208,15 +8567,41 @@ packages:
|
|||
/minimist@1.2.8:
|
||||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
||||
|
||||
/minipass@3.3.6:
|
||||
resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass@4.2.8:
|
||||
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/minipass@5.0.0:
|
||||
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
|
||||
engines: {node: '>=8'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/minipass@7.0.4:
|
||||
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
|
||||
engines: {node: '>=16 || 14 >=14.17'}
|
||||
|
||||
/minizlib@2.1.2:
|
||||
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
|
||||
engines: {node: '>= 8'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
minipass: 3.3.6
|
||||
yallist: 4.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/mjml-accordion@4.14.1:
|
||||
resolution: {integrity: sha512-dpNXyjnhYwhM75JSjD4wFUa9JgHm86M2pa0CoTzdv1zOQz67ilc4BoK5mc2S0gOjJpjBShM5eOJuCyVIuAPC6w==}
|
||||
dependencies:
|
||||
|
@ -8586,6 +8971,14 @@ packages:
|
|||
dependencies:
|
||||
minimist: 1.2.8
|
||||
|
||||
/mkdirp@1.0.4:
|
||||
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/mkdirp@2.1.6:
|
||||
resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==}
|
||||
engines: {node: '>=10'}
|
||||
|
@ -8734,6 +9127,12 @@ packages:
|
|||
resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
|
||||
dev: true
|
||||
|
||||
/node-addon-api@3.2.1:
|
||||
resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/node-emoji@1.11.0:
|
||||
resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
|
||||
dependencies:
|
||||
|
@ -8766,11 +9165,34 @@ packages:
|
|||
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
|
||||
dev: true
|
||||
|
||||
/nodejieba@2.5.2:
|
||||
resolution: {integrity: sha512-ByskJvaBrQ2eV+5M0OeD80S5NKoGaHc9zi3Z/PTKl/95eac2YF8RmWduq9AknLpkQLrLAIcqurrtC6BzjpKwwg==}
|
||||
engines: {node: '>= 10.20.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
'@mapbox/node-pre-gyp': 1.0.11
|
||||
node-addon-api: 3.2.1
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/nodemailer@6.9.9:
|
||||
resolution: {integrity: sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
dev: false
|
||||
|
||||
/nopt@5.0.0:
|
||||
resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
|
||||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
abbrev: 1.1.1
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/nopt@7.2.0:
|
||||
resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==}
|
||||
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
|
||||
|
@ -8820,6 +9242,17 @@ packages:
|
|||
path-key: 3.1.1
|
||||
dev: true
|
||||
|
||||
/npmlog@5.0.1:
|
||||
resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
are-we-there-yet: 2.0.0
|
||||
console-control-strings: 1.1.0
|
||||
gauge: 3.0.2
|
||||
set-blocking: 2.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/nth-check@2.1.1:
|
||||
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
|
||||
dependencies:
|
||||
|
@ -9109,7 +9542,6 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
dependencies:
|
||||
callsites: 3.1.0
|
||||
dev: true
|
||||
|
||||
/parse-json@4.0.0:
|
||||
resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
|
||||
|
@ -9127,7 +9559,6 @@ packages:
|
|||
error-ex: 1.3.2
|
||||
json-parse-even-better-errors: 2.3.1
|
||||
lines-and-columns: 1.2.4
|
||||
dev: true
|
||||
|
||||
/parse-passwd@1.0.0:
|
||||
resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
|
||||
|
@ -9271,7 +9702,6 @@ packages:
|
|||
/path-type@4.0.0:
|
||||
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/pause-stream@0.0.11:
|
||||
resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
|
||||
|
@ -9356,6 +9786,21 @@ packages:
|
|||
thread-stream: 2.4.1
|
||||
dev: false
|
||||
|
||||
/pinyin@3.1.0:
|
||||
resolution: {integrity: sha512-U+COtcFr2eRztdE9is+2EQCrrkTiSncizW/d58lhzINvjhCAWUOoIsaEL1DDX8GZrT5FoW69fi2dtWHjQlk/fw==}
|
||||
engines: {install-node: ^18.0.0}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
commander: 1.1.1
|
||||
optionalDependencies:
|
||||
'@node-rs/jieba': 1.10.0
|
||||
nodejieba: 2.5.2
|
||||
segmentit: 2.0.3
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/pirates@4.0.6:
|
||||
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
|
||||
engines: {node: '>= 6'}
|
||||
|
@ -9409,6 +9854,14 @@ packages:
|
|||
react-is: 18.2.0
|
||||
dev: true
|
||||
|
||||
/preval.macro@4.0.0:
|
||||
resolution: {integrity: sha512-sJJnE71X+MPr64CVD2AurmUj4JEDqbudYbStav3L9Xjcqm4AR0ymMm6sugw1mUmfI/7gw4JWA4JXo/k6w34crw==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
babel-plugin-preval: 4.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/preview-email@3.0.19:
|
||||
resolution: {integrity: sha512-DBS3Nir18YtKc8loYCCOGitmiaQ0vTdahPoiXxwNweJDpmVZo+w3tppufOhoK0m8skpRxT56llYLs3VrORnmNQ==}
|
||||
engines: {node: '>=14'}
|
||||
|
@ -9886,7 +10339,6 @@ packages:
|
|||
/resolve-from@4.0.0:
|
||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/resolve-from@5.0.0:
|
||||
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
||||
|
@ -9960,7 +10412,6 @@ packages:
|
|||
hasBin: true
|
||||
dependencies:
|
||||
glob: 7.2.3
|
||||
dev: true
|
||||
|
||||
/rimraf@4.4.1:
|
||||
resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==}
|
||||
|
@ -10063,6 +10514,14 @@ packages:
|
|||
resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
|
||||
dev: false
|
||||
|
||||
/segmentit@2.0.3:
|
||||
resolution: {integrity: sha512-7mn2XL3OdTUQ+AhHz7SbgyxLTaQRzTWQNVwiK+UlTO8aePGbSwvKUzTwE4238+OUY9MoR6ksAg35zl8sfTunQQ==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
preval.macro: 4.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/selderee@0.11.0:
|
||||
resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==}
|
||||
dependencies:
|
||||
|
@ -10076,7 +10535,6 @@ packages:
|
|||
/semver@6.3.1:
|
||||
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/semver@7.6.0:
|
||||
resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
|
||||
|
@ -10131,6 +10589,12 @@ packages:
|
|||
- supports-color
|
||||
dev: true
|
||||
|
||||
/set-blocking@2.0.0:
|
||||
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/set-cookie-parser@2.6.0:
|
||||
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
|
||||
dev: false
|
||||
|
@ -10625,7 +11089,6 @@ packages:
|
|||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
has-flag: 3.0.0
|
||||
dev: true
|
||||
|
||||
/supports-color@7.2.0:
|
||||
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
||||
|
@ -10680,6 +11143,20 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/tar@6.2.0:
|
||||
resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
chownr: 2.0.0
|
||||
fs-minipass: 2.1.0
|
||||
minipass: 5.0.0
|
||||
minizlib: 2.1.2
|
||||
mkdirp: 1.0.4
|
||||
yallist: 4.0.0
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/temp@0.9.4:
|
||||
resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
@ -11460,6 +11937,14 @@ packages:
|
|||
dependencies:
|
||||
isexe: 2.0.0
|
||||
|
||||
/wide-align@1.1.5:
|
||||
resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
string-width: 4.2.3
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/widest-line@3.1.0:
|
||||
resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -11609,6 +12094,13 @@ packages:
|
|||
/yallist@4.0.0:
|
||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||
|
||||
/yaml@1.10.2:
|
||||
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
||||
engines: {node: '>= 6'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/yargs-parser@20.2.9:
|
||||
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
|
||||
engines: {node: '>=10'}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import { ApiProperty, IntersectionType, PartialType } from '@nestjs/swagger';
|
||||
import { Transform } from 'class-transformer';
|
||||
import {
|
||||
IsArray,
|
||||
IsDate,
|
||||
IsDateString,
|
||||
IsEnum,
|
||||
IsIn,
|
||||
IsInt,
|
||||
IsNumber,
|
||||
|
@ -12,11 +14,63 @@ import {
|
|||
MinLength
|
||||
} from 'class-validator';
|
||||
import { PagerDto } from '~/common/dto/pager.dto';
|
||||
import { MaterialsInOrOutEnum } from '~/constants/enum';
|
||||
import { Storage } from '~/modules/tools/storage/storage.entity';
|
||||
import { formatToDate } from '~/utils';
|
||||
|
||||
export class MaterialsInOutDto {
|
||||
@ApiProperty({ description: '附件' })
|
||||
files: Storage[];
|
||||
@ApiProperty({ description: '产品' })
|
||||
@IsNumber()
|
||||
product: number;
|
||||
|
||||
@ApiProperty({ description: '单位(字典)' })
|
||||
@IsNumber()
|
||||
@IsOptional()
|
||||
unit: number;
|
||||
|
||||
@ApiProperty({ description: '入库或出库 0:入库 1:出库' })
|
||||
@IsEnum(MaterialsInOrOutEnum)
|
||||
inOrOut: MaterialsInOrOutEnum;
|
||||
|
||||
@ApiProperty({ description: '时间' })
|
||||
@IsOptional()
|
||||
time: Date;
|
||||
|
||||
@ApiProperty({ description: '数量' })
|
||||
@IsNumber()
|
||||
quantity: number;
|
||||
|
||||
@ApiProperty({ description: '单价' })
|
||||
@IsNumber()
|
||||
unitPrice: number;
|
||||
|
||||
@ApiProperty({ description: '金额' })
|
||||
@IsNumber()
|
||||
amount: number;
|
||||
|
||||
@ApiProperty({ description: '经办人' })
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
agent: string;
|
||||
|
||||
@ApiProperty({ description: '领料单号' })
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
issuanceNumber: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@ApiProperty({ description: '备注' })
|
||||
remark: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@ApiProperty({ description: '项目' })
|
||||
project: string;
|
||||
|
||||
// @ApiProperty({ description: '附件' })
|
||||
// @IsOptional()
|
||||
// files: Storage[];
|
||||
}
|
||||
|
||||
export class MaterialsInOutUpdateDto extends PartialType(MaterialsInOutDto) {
|
||||
|
@ -25,7 +79,18 @@ export class MaterialsInOutUpdateDto extends PartialType(MaterialsInOutDto) {
|
|||
@IsArray()
|
||||
fileIds: number[];
|
||||
}
|
||||
export class MaterialsInOutQueryDto extends IntersectionType(
|
||||
PagerDto<MaterialsInOutDto>,
|
||||
PartialType(MaterialsInOutDto)
|
||||
) {}
|
||||
export class MaterialsInOutQueryDto extends PagerDto<MaterialsInOutDto> {
|
||||
@ApiProperty({ description: '出入库时间YYYY-MM-DD' })
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@Transform(params => {
|
||||
// 开始和结束时间用的是一天的开始和一天的结束的时分秒
|
||||
const [start, end] = params.value;
|
||||
return [
|
||||
start ? `${formatToDate(start)} 00:00:00` : null,
|
||||
end ? `${formatToDate(end)} 23:59:59` : null
|
||||
];
|
||||
})
|
||||
time?: string[];
|
||||
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ export class MaterialsInOutEntity extends CommonEntity {
|
|||
inOrOut: MaterialsInOrOutEnum;
|
||||
|
||||
@Column({
|
||||
name: 'inventory_time',
|
||||
name: 'time',
|
||||
type: 'date',
|
||||
nullable: true,
|
||||
comment: '时间'
|
||||
|
@ -56,7 +56,7 @@ export class MaterialsInOutEntity extends CommonEntity {
|
|||
scale: 2,
|
||||
comment: '单价'
|
||||
})
|
||||
@ApiProperty({ description: '入库单价' })
|
||||
@ApiProperty({ description: '单价' })
|
||||
unitPrice: number;
|
||||
|
||||
@Column({
|
||||
|
|
|
@ -9,13 +9,14 @@ import { paginate } from '~/helper/paginate';
|
|||
import { Storage } from '~/modules/tools/storage/storage.entity';
|
||||
import { MaterialsInOutQueryDto, MaterialsInOutDto, MaterialsInOutUpdateDto } from './materials_in_out.dto';
|
||||
import { MaterialsInOutEntity } from './materials_in_out.entity';
|
||||
import { fieldSearch } from '~/shared/database/field-search';
|
||||
|
||||
@Injectable()
|
||||
export class MaterialsInOutService {
|
||||
constructor(
|
||||
@InjectEntityManager() private entityManager: EntityManager,
|
||||
@InjectRepository(MaterialsInOutEntity)
|
||||
private materialsInventoryRepository: Repository<MaterialsInOutEntity>,
|
||||
private materialsInOutRepository: Repository<MaterialsInOutEntity>,
|
||||
@InjectRepository(Storage)
|
||||
private storageRepository: Repository<Storage>
|
||||
) {}
|
||||
|
@ -24,23 +25,21 @@ export class MaterialsInOutService {
|
|||
*/
|
||||
async findAll({
|
||||
page,
|
||||
pageSize
|
||||
// materialsInventoryNumber,
|
||||
// title,
|
||||
// type,
|
||||
// status
|
||||
pageSize,
|
||||
...ext
|
||||
}: MaterialsInOutQueryDto): Promise<Pagination<MaterialsInOutEntity>> {
|
||||
const queryBuilder = this.materialsInventoryRepository
|
||||
.createQueryBuilder('materialsInventory')
|
||||
.leftJoin('materialsInventory.files', 'files')
|
||||
const queryBuilder = this.materialsInOutRepository
|
||||
.createQueryBuilder('materialsInOut')
|
||||
.leftJoin('materialsInOut.files', 'files')
|
||||
.addSelect(['files.id', 'files.path'])
|
||||
// .where({
|
||||
// ...(materialsInventoryNumber ? { materialsInventoryNumber: Like(`%${materialsInventoryNumber}%`) } : null),
|
||||
// ...(materialsInOutNumber ? { materialsInOutNumber: Like(`%${materialsInOutNumber}%`) } : null),
|
||||
// ...(title ? { title: Like(`%${title}%`) } : null),
|
||||
// ...(isNumber(type) ? { type } : null),
|
||||
// ...(isNumber(status) ? { status } : null)
|
||||
// })
|
||||
.andWhere('materialsInventory.isDelete = 0');
|
||||
.where(fieldSearch(ext))
|
||||
.andWhere('materialsInOut.isDelete = 0');
|
||||
|
||||
return paginate<MaterialsInOutEntity>(queryBuilder, {
|
||||
page,
|
||||
|
@ -52,7 +51,7 @@ export class MaterialsInOutService {
|
|||
* 新增
|
||||
*/
|
||||
async create(dto: MaterialsInOutDto): Promise<void> {
|
||||
await this.materialsInventoryRepository.insert(dto);
|
||||
await this.materialsInOutRepository.insert(dto);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -63,10 +62,10 @@ export class MaterialsInOutService {
|
|||
await manager.update(MaterialsInOutEntity, id, {
|
||||
...data
|
||||
});
|
||||
const materialsInventory = await this.materialsInventoryRepository
|
||||
.createQueryBuilder('materialsInventory')
|
||||
.leftJoinAndSelect('materialsInventory.files', 'files')
|
||||
.where('materialsInventory.id = :id', { id })
|
||||
const materialsInOut = await this.materialsInOutRepository
|
||||
.createQueryBuilder('materialsInOut')
|
||||
.leftJoinAndSelect('materialsInOut.files', 'files')
|
||||
.where('materialsInOut.id = :id', { id })
|
||||
.getOne();
|
||||
if (fileIds?.length) {
|
||||
const count = await this.storageRepository
|
||||
|
@ -81,7 +80,7 @@ export class MaterialsInOutService {
|
|||
.createQueryBuilder()
|
||||
.relation(MaterialsInOutEntity, 'files')
|
||||
.of(id)
|
||||
.addAndRemove(fileIds, materialsInventory.files);
|
||||
.addAndRemove(fileIds, materialsInOut.files);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -90,37 +89,37 @@ export class MaterialsInOutService {
|
|||
* 删除
|
||||
*/
|
||||
async delete(id: number): Promise<void> {
|
||||
// 合同比较重要,做逻辑删除
|
||||
await this.materialsInventoryRepository.update(id, { isDelete: 1 });
|
||||
// 出入库比较重要,做逻辑删除
|
||||
await this.materialsInOutRepository.update(id, { isDelete: 1 });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取单个合同信息
|
||||
* 获取单个出入库信息
|
||||
*/
|
||||
async info(id: number) {
|
||||
const info = await this.materialsInventoryRepository
|
||||
.createQueryBuilder('materialsInventory')
|
||||
const info = await this.materialsInOutRepository
|
||||
.createQueryBuilder('materialsInOut')
|
||||
.where({
|
||||
id
|
||||
})
|
||||
.andWhere('materialsInventory.isDelete = 0')
|
||||
.andWhere('materialsInOut.isDelete = 0')
|
||||
.getOne();
|
||||
return info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 解除附件关联
|
||||
* @param id 合同ID
|
||||
* @param id 出入库ID
|
||||
* @param fileIds 附件ID
|
||||
*/
|
||||
async unlinkAttachments(id: number, fileIds: number[]) {
|
||||
await this.entityManager.transaction(async manager => {
|
||||
const materialsInventory = await this.materialsInventoryRepository
|
||||
.createQueryBuilder('materialsInventory')
|
||||
.leftJoinAndSelect('materialsInventory.files', 'files')
|
||||
.where('materialsInventory.id = :id', { id })
|
||||
const materialsInOut = await this.materialsInOutRepository
|
||||
.createQueryBuilder('materialsInOut')
|
||||
.leftJoinAndSelect('materialsInOut.files', 'files')
|
||||
.where('materialsInOut.id = :id', { id })
|
||||
.getOne();
|
||||
const linkedFiles = materialsInventory.files
|
||||
const linkedFiles = materialsInOut.files
|
||||
.map(item => item.id)
|
||||
.filter(item => !fileIds.includes(item));
|
||||
// 附件要批量更新
|
||||
|
@ -128,7 +127,7 @@ export class MaterialsInOutService {
|
|||
.createQueryBuilder()
|
||||
.relation(MaterialsInOutEntity, 'files')
|
||||
.of(id)
|
||||
.addAndRemove(linkedFiles, materialsInventory.files);
|
||||
.addAndRemove(linkedFiles, materialsInOut.files);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ export class MaterialsInventoryService {
|
|||
}: MaterialsInventoryQueryDto): Promise<Pagination<MaterialsInventoryEntity>> {
|
||||
const queryBuilder = this.materialsInventoryRepository
|
||||
.createQueryBuilder('materialsInventory')
|
||||
.andWhere('materialsInventory.isDelete = 0');
|
||||
.where('materialsInventory.isDelete = 0');
|
||||
|
||||
return paginate<MaterialsInventoryEntity>(queryBuilder, {
|
||||
page,
|
||||
|
|
|
@ -45,4 +45,9 @@ export class ProductQueryDto extends IntersectionType(
|
|||
@IsOptional()
|
||||
@IsString()
|
||||
company: string;
|
||||
|
||||
@ApiProperty({ description: '产品名字' })
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
name?: string;
|
||||
}
|
||||
|
|
|
@ -1,9 +1,19 @@
|
|||
import { ApiHideProperty, ApiProperty } from '@nestjs/swagger';
|
||||
import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, Relation } from 'typeorm';
|
||||
import {
|
||||
BeforeInsert,
|
||||
BeforeUpdate,
|
||||
Column,
|
||||
Entity,
|
||||
JoinColumn,
|
||||
JoinTable,
|
||||
ManyToMany,
|
||||
ManyToOne,
|
||||
Relation
|
||||
} from 'typeorm';
|
||||
import { CommonEntity } from '~/common/entity/common.entity';
|
||||
import { Storage } from '../tools/storage/storage.entity';
|
||||
import { CompanyEntity } from '../company/company.entity';
|
||||
|
||||
import pinyin from 'pinyin';
|
||||
@Entity({ name: 'product' })
|
||||
export class ProductEntity extends CommonEntity {
|
||||
@Column({
|
||||
|
@ -23,6 +33,26 @@ export class ProductEntity extends CommonEntity {
|
|||
@ApiProperty({ description: '所属公司' })
|
||||
companyId: number;
|
||||
|
||||
@ApiHideProperty()
|
||||
@Column({
|
||||
name: 'name_pinyin',
|
||||
type: 'varchar',
|
||||
length: 255,
|
||||
nullable: true,
|
||||
comment: '产品名称的拼音'
|
||||
})
|
||||
namePinyin: string;
|
||||
|
||||
@BeforeInsert()
|
||||
@BeforeUpdate()
|
||||
updateNamePinyin() {
|
||||
console.log('sssssssssssssss')
|
||||
this.namePinyin = pinyin(this.name, {
|
||||
style: pinyin.STYLE_NORMAL,
|
||||
heteronym: false
|
||||
}).join('');
|
||||
}
|
||||
|
||||
@ManyToOne(() => CompanyEntity /* , { onDelete: 'CASCADE' } */)
|
||||
@JoinColumn({ name: 'company_id' })
|
||||
company: CompanyEntity;
|
||||
|
|
|
@ -28,14 +28,15 @@ export class ProductService {
|
|||
pageSize,
|
||||
...fields
|
||||
}: ProductQueryDto): Promise<Pagination<ProductEntity>> {
|
||||
const { company: companyName,...ext } = fields;
|
||||
const { company: companyName, ...ext } = fields;
|
||||
const sqb = this.productRepository
|
||||
.createQueryBuilder('product')
|
||||
.leftJoin('product.files', 'files')
|
||||
.leftJoin('product.company', 'company')
|
||||
.addSelect(['files.id', 'files.path', 'company.name', 'company.id'])
|
||||
.where(fieldSearch(ext))
|
||||
.where('product.isDelete = 0');
|
||||
.andWhere('product.isDelete = 0')
|
||||
.addOrderBy('product.namePinyin', 'ASC');
|
||||
if (companyName) {
|
||||
sqb.andWhere({
|
||||
company: {
|
||||
|
@ -60,7 +61,7 @@ export class ProductService {
|
|||
if (isExsit) {
|
||||
throw new BusinessException(ErrorEnum.PRODUCT_EXIST);
|
||||
}
|
||||
await this.productRepository.insert(dto);
|
||||
await this.productRepository.insert(this.productRepository.create(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -68,9 +69,13 @@ export class ProductService {
|
|||
*/
|
||||
async update(id: number, { fileIds, ...data }: Partial<ProductUpdateDto>): Promise<void> {
|
||||
await this.entityManager.transaction(async manager => {
|
||||
await manager.update(ProductEntity, id, {
|
||||
await manager.update(
|
||||
ProductEntity,
|
||||
id,
|
||||
this.productRepository.create({
|
||||
...data
|
||||
});
|
||||
})
|
||||
);
|
||||
const product = await this.productRepository
|
||||
.createQueryBuilder('product')
|
||||
.leftJoinAndSelect('product.files', 'files')
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { IsOptional, IsString } from 'class-validator';
|
||||
import { Transform } from 'class-transformer';
|
||||
import { IsArray, IsOptional, IsString } from 'class-validator';
|
||||
|
||||
import { PagerDto } from '~/common/dto/pager.dto';
|
||||
import { formatToDate } from '~/utils';
|
||||
|
||||
export class LoginLogQueryDto extends PagerDto {
|
||||
@ApiProperty({ description: '用户名' })
|
||||
|
@ -21,6 +23,12 @@ export class LoginLogQueryDto extends PagerDto {
|
|||
|
||||
@ApiProperty({ description: '登录时间' })
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@Transform(params => {
|
||||
// 开始和结束时间用的是一天的开始和一天的结束的时分秒
|
||||
const [start, end] = params.value;
|
||||
return [start ? `${formatToDate(start)} 00:00:00` : null, end ? `${formatToDate(end)} 23:59:59` : null];
|
||||
})
|
||||
time?: string[];
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { isNumber } from 'lodash';
|
||||
import { Like, ObjectLiteral, ObjectType } from 'typeorm';
|
||||
import { Between, Like, ObjectLiteral, ObjectType } from 'typeorm';
|
||||
export const fieldSearch = <T>(entity: Partial<T>): ObjectLiteral => {
|
||||
let result = {};
|
||||
for (let key in entity) {
|
||||
|
@ -14,6 +14,17 @@ export const fieldSearch = <T>(entity: Partial<T>): ObjectLiteral => {
|
|||
case 'boolean':
|
||||
result = { ...result, ...(entity[key] === true ? { [key]: 1 } : { [key]: 0 }) };
|
||||
break;
|
||||
case 'object':
|
||||
if (Array.isArray(entity[key])) {
|
||||
result = {
|
||||
...result,
|
||||
...(entity[key] && { createdAt: Between(entity[key][0], entity[key][1]) })
|
||||
};
|
||||
} else {
|
||||
// Handle other object types
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
result = { ...result, ...(entity[key] ? { [key]: entity[key] } : null) };
|
||||
break;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"incremental": true,
|
||||
"target": "ES2022",
|
||||
"target": "ES2020",
|
||||
"lib": ["ESNext"],
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
|
|
Loading…
Reference in New Issue