新增了个人中心

master
doublekou 12 months ago
parent d8b146a7a0
commit ed5abb7b95

@ -2,3 +2,5 @@ VITE_API_URL=/api
VITE_API_TIME_OUT=30000 VITE_API_TIME_OUT=30000
VITE_PASSWORD_SECRET_KEY===ad-distribute= VITE_PASSWORD_SECRET_KEY===ad-distribute=
VITE_IMAGE_DOMAIN=https://hccake-img.oss-cn-shanghai.aliyuncs.com VITE_IMAGE_DOMAIN=https://hccake-img.oss-cn-shanghai.aliyuncs.com
# 用来回显图片
VITE_SERVERURL=http://39.100.77.21:8001

@ -2,3 +2,5 @@ VITE_API_URL=/api
VITE_API_TIME_OUT=10000 VITE_API_TIME_OUT=10000
VITE_PASSWORD_SECRET_KEY===ad-distribute= VITE_PASSWORD_SECRET_KEY===ad-distribute=
VITE_IMAGE_DOMAIN=https://hccake-img.oss-cn-shanghai.aliyuncs.com VITE_IMAGE_DOMAIN=https://hccake-img.oss-cn-shanghai.aliyuncs.com
# 用来回显图片
VITE_SERVERURL=http://39.100.77.21:8000

Binary file not shown.

@ -232,7 +232,7 @@
<!--引入高德地图JSAPI --> <!--引入高德地图JSAPI -->
<script <script
type="text/javascript" type="text/javascript"
src="https://webapi.amap.com/maps?v=2.0&key=1d3839a0fe4ad113f7d88ec3775107b7&plugin=AMap.Autocomplete,AMap.PlaceSearch,AMap.SearchNearBy,AMap.Geocoder,AMap.Geolocation,AMap.Marker" src="https://webapi.amap.com/maps?v=2.0&key=1d3839a0fe4ad113f7d88ec3775107b7&plugin=AMap.Autocomplete,AMap.PlaceSearch,AMap.SearchNearBy,AMap.Geocoder,AMap.Geolocation,AMap.Marker,AMap.DistrictSearch"
></script> ></script>
<!-- <script <!-- <script
type="text/javascript" type="text/javascript"
@ -240,5 +240,10 @@
></script> --> ></script> -->
<!--引入UI组件库1.1版本) --> <!--引入UI组件库1.1版本) -->
<!-- <script src="https://webapi.amap.com/ui/1.1/main.js"></script> --> <!-- <script src="https://webapi.amap.com/ui/1.1/main.js"></script> -->
<style>
::v-deep .amap-sug-result {
margin-left: 222px !important;
}
</style>
</body> </body>
</html> </html>

@ -29,9 +29,11 @@
"ant-design-vue": "^3.2.20", "ant-design-vue": "^3.2.20",
"area-data": "^5.0.6", "area-data": "^5.0.6",
"axios": "^1.4.0", "axios": "^1.4.0",
"babel-polyfill": "^6.26.0",
"cropperjs": "^1.5.13", "cropperjs": "^1.5.13",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"js-cookie": "^3.0.5",
"json-bigint": "^1.0.0", "json-bigint": "^1.0.0",
"mitt": "^3.0.0", "mitt": "^3.0.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
@ -41,6 +43,7 @@
"vue-area-linkage": "^5.1.0", "vue-area-linkage": "^5.1.0",
"vue-clipboard3": "^2.0.0", "vue-clipboard3": "^2.0.0",
"vue-i18n": "^9.2.2", "vue-i18n": "^9.2.2",
"vue-image-crop-upload": "^3.0.3",
"vue-router": "^4.2.1" "vue-router": "^4.2.1"
}, },
"devDependencies": { "devDependencies": {

@ -38,6 +38,9 @@ dependencies:
axios: axios:
specifier: ^1.4.0 specifier: ^1.4.0
version: 1.4.0 version: 1.4.0
babel-polyfill:
specifier: ^6.26.0
version: 6.26.0
cropperjs: cropperjs:
specifier: ^1.5.13 specifier: ^1.5.13
version: 1.5.13 version: 1.5.13
@ -47,6 +50,9 @@ dependencies:
dayjs: dayjs:
specifier: ^1.11.7 specifier: ^1.11.7
version: 1.11.7 version: 1.11.7
js-cookie:
specifier: ^3.0.5
version: 3.0.5
json-bigint: json-bigint:
specifier: ^1.0.0 specifier: ^1.0.0
version: 1.0.0 version: 1.0.0
@ -74,6 +80,9 @@ dependencies:
vue-i18n: vue-i18n:
specifier: ^9.2.2 specifier: ^9.2.2
version: 9.2.2(vue@3.3.4) version: 9.2.2(vue@3.3.4)
vue-image-crop-upload:
specifier: ^3.0.3
version: 3.0.3
vue-router: vue-router:
specifier: ^4.2.1 specifier: ^4.2.1
version: 4.2.1(vue@3.3.4) version: 4.2.1(vue@3.3.4)
@ -1174,7 +1183,7 @@ packages:
dev: false dev: false
/@transloadit/prettier-bytes@0.0.7: /@transloadit/prettier-bytes@0.0.7:
resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==, tarball: https://registry.npm.taobao.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz} resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
/@tsconfig/node10@1.0.9: /@tsconfig/node10@1.0.9:
resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
@ -1383,13 +1392,13 @@ packages:
dev: true dev: true
/@uppy/companion-client@2.2.2: /@uppy/companion-client@2.2.2:
resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==, tarball: https://registry.npm.taobao.org/@uppy/companion-client/-/companion-client-2.2.2.tgz} resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==}
dependencies: dependencies:
'@uppy/utils': 4.1.3 '@uppy/utils': 4.1.3
namespace-emitter: 2.0.1 namespace-emitter: 2.0.1
/@uppy/core@2.3.4: /@uppy/core@2.3.4:
resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==, tarball: https://registry.npm.taobao.org/@uppy/core/-/core-2.3.4.tgz} resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==}
dependencies: dependencies:
'@transloadit/prettier-bytes': 0.0.7 '@transloadit/prettier-bytes': 0.0.7
'@uppy/store-default': 2.1.1 '@uppy/store-default': 2.1.1
@ -1401,15 +1410,15 @@ packages:
preact: 10.13.2 preact: 10.13.2
/@uppy/store-default@2.1.1: /@uppy/store-default@2.1.1:
resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==, tarball: https://registry.npm.taobao.org/@uppy/store-default/-/store-default-2.1.1.tgz} resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==}
/@uppy/utils@4.1.3: /@uppy/utils@4.1.3:
resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==, tarball: https://registry.npm.taobao.org/@uppy/utils/-/utils-4.1.3.tgz} resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==}
dependencies: dependencies:
lodash.throttle: 4.1.1 lodash.throttle: 4.1.1
/@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4): /@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4):
resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==, tarball: https://registry.npm.taobao.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz} resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==}
peerDependencies: peerDependencies:
'@uppy/core': ^2.3.3 '@uppy/core': ^2.3.3
dependencies: dependencies:
@ -1709,7 +1718,7 @@ packages:
- vue - vue
/@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1): /@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.6)(slate@0.72.8)(snabbdom@3.5.1):
resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==, tarball: https://registry.npm.taobao.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz} resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==}
peerDependencies: peerDependencies:
'@wangeditor/core': 1.x '@wangeditor/core': 1.x
dom7: ^3.0.0 dom7: ^3.0.0
@ -1728,7 +1737,7 @@ packages:
dev: false dev: false
/@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1): /@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1):
resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==, tarball: https://registry.npm.taobao.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz} resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==}
peerDependencies: peerDependencies:
'@wangeditor/core': 1.x '@wangeditor/core': 1.x
dom7: ^3.0.0 dom7: ^3.0.0
@ -1822,7 +1831,7 @@ packages:
snabbdom: 3.5.1 snabbdom: 3.5.1
/@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.3.4): /@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.3.4):
resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==, tarball: https://registry.npm.taobao.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz} resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==}
peerDependencies: peerDependencies:
'@wangeditor/editor': '>=5.1.0' '@wangeditor/editor': '>=5.1.0'
vue: ^3.0.5 vue: ^3.0.5
@ -1832,7 +1841,7 @@ packages:
dev: false dev: false
/@wangeditor/editor@5.1.23: /@wangeditor/editor@5.1.23:
resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==, tarball: https://registry.npm.taobao.org/@wangeditor/editor/-/editor-5.1.23.tgz} resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==}
dependencies: dependencies:
'@uppy/core': 2.3.4 '@uppy/core': 2.3.4
'@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4)
@ -1858,7 +1867,7 @@ packages:
dev: false dev: false
/@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1): /@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.5.1):
resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==, tarball: https://registry.npm.taobao.org/@wangeditor/list-module/-/list-module-1.0.5.tgz} resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==}
peerDependencies: peerDependencies:
'@wangeditor/core': 1.x '@wangeditor/core': 1.x
dom7: ^3.0.0 dom7: ^3.0.0
@ -1872,7 +1881,7 @@ packages:
dev: false dev: false
/@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.4)(slate@0.72.8)(snabbdom@3.5.1): /@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.4)(slate@0.72.8)(snabbdom@3.5.1):
resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==, tarball: https://registry.npm.taobao.org/@wangeditor/table-module/-/table-module-1.1.4.tgz} resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==}
peerDependencies: peerDependencies:
'@wangeditor/core': 1.x '@wangeditor/core': 1.x
dom7: ^3.0.0 dom7: ^3.0.0
@ -1892,7 +1901,7 @@ packages:
dev: false dev: false
/@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.5.1): /@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.5.1):
resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==, tarball: https://registry.npm.taobao.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz} resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==}
peerDependencies: peerDependencies:
'@uppy/core': ^2.0.3 '@uppy/core': ^2.0.3
'@uppy/xhr-upload': ^2.0.3 '@uppy/xhr-upload': ^2.0.3
@ -1914,7 +1923,7 @@ packages:
dev: false dev: false
/@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.4)(slate@0.72.8)(snabbdom@3.5.1): /@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.4)(slate@0.72.8)(snabbdom@3.5.1):
resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==, tarball: https://registry.npm.taobao.org/@wangeditor/video-module/-/video-module-1.1.4.tgz} resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==}
peerDependencies: peerDependencies:
'@uppy/core': ^2.1.4 '@uppy/core': ^2.1.4
'@uppy/xhr-upload': ^2.0.7 '@uppy/xhr-upload': ^2.0.7
@ -2139,6 +2148,21 @@ packages:
- debug - debug
dev: false dev: false
/babel-polyfill@6.26.0:
resolution: {integrity: sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==}
dependencies:
babel-runtime: 6.26.0
core-js: 2.6.12
regenerator-runtime: 0.10.5
dev: false
/babel-runtime@6.26.0:
resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==}
dependencies:
core-js: 2.6.12
regenerator-runtime: 0.11.1
dev: false
/balanced-match@1.0.2: /balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true dev: true
@ -2421,6 +2445,12 @@ packages:
is-what: 3.14.1 is-what: 3.14.1
dev: true dev: true
/core-js@2.6.12:
resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==}
deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
requiresBuild: true
dev: false
/core-js@3.29.1: /core-js@3.29.1:
resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==} resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==}
requiresBuild: true requiresBuild: true
@ -2621,7 +2651,7 @@ packages:
dev: true dev: true
/dom7@3.0.0: /dom7@3.0.0:
resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==, tarball: https://registry.npm.taobao.org/dom7/-/dom7-3.0.0.tgz} resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==}
dependencies: dependencies:
ssr-window: 3.0.0 ssr-window: 3.0.0
@ -3491,7 +3521,7 @@ packages:
optional: true optional: true
/immer@9.0.21: /immer@9.0.21:
resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==, tarball: https://registry.npm.taobao.org/immer/-/immer-9.0.21.tgz} resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==}
/import-fresh@3.3.0: /import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@ -3609,7 +3639,7 @@ packages:
dev: true dev: true
/is-hotkey@0.2.0: /is-hotkey@0.2.0:
resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==, tarball: https://registry.npm.taobao.org/is-hotkey/-/is-hotkey-0.2.0.tgz} resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==}
/is-negative-zero@2.0.2: /is-negative-zero@2.0.2:
resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
@ -3709,7 +3739,7 @@ packages:
dev: true dev: true
/is-url@1.2.4: /is-url@1.2.4:
resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==, tarball: https://registry.npm.taobao.org/is-url/-/is-url-1.2.4.tgz} resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==}
dev: false dev: false
/is-weakref@1.0.2: /is-weakref@1.0.2:
@ -3737,6 +3767,11 @@ packages:
minimatch: 3.1.2 minimatch: 3.1.2
dev: true dev: true
/js-cookie@3.0.5:
resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
engines: {node: '>=14'}
dev: false
/js-tokens@4.0.0: /js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@ -3942,20 +3977,20 @@ packages:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
/lodash.clonedeep@4.5.0: /lodash.clonedeep@4.5.0:
resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==, tarball: https://registry.npm.taobao.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz} resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
/lodash.debounce@4.0.8: /lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, tarball: https://registry.npm.taobao.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz} resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
/lodash.find@4.6.0: /lodash.find@4.6.0:
resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==} resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==}
dev: false dev: false
/lodash.foreach@4.5.0: /lodash.foreach@4.5.0:
resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==, tarball: https://registry.npm.taobao.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz} resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==}
/lodash.isequal@4.5.0: /lodash.isequal@4.5.0:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==, tarball: https://registry.npm.taobao.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz} resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
/lodash.isfunction@3.0.9: /lodash.isfunction@3.0.9:
resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==}
@ -3986,10 +4021,10 @@ packages:
dev: true dev: true
/lodash.throttle@4.1.1: /lodash.throttle@4.1.1:
resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==, tarball: https://registry.npm.taobao.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz} resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
/lodash.toarray@4.4.0: /lodash.toarray@4.4.0:
resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==, tarball: https://registry.npm.taobao.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz} resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==}
/lodash.uniq@4.5.0: /lodash.uniq@4.5.0:
resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
@ -4123,7 +4158,7 @@ packages:
dev: false dev: false
/mime-match@1.0.2: /mime-match@1.0.2:
resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==, tarball: https://registry.npm.taobao.org/mime-match/-/mime-match-1.0.2.tgz} resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==}
dependencies: dependencies:
wildcard: 1.1.2 wildcard: 1.1.2
@ -4198,7 +4233,7 @@ packages:
dev: true dev: true
/mitt@3.0.0: /mitt@3.0.0:
resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==, tarball: https://registry.npm.taobao.org/mitt/-/mitt-3.0.0.tgz} resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==}
dev: false dev: false
/mlly@1.2.0: /mlly@1.2.0:
@ -4225,7 +4260,7 @@ packages:
dev: true dev: true
/namespace-emitter@2.0.1: /namespace-emitter@2.0.1:
resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==, tarball: https://registry.npm.taobao.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz} resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==}
/nanoid@3.3.4: /nanoid@3.3.4:
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
@ -4623,7 +4658,7 @@ packages:
source-map-js: 1.0.2 source-map-js: 1.0.2
/preact@10.13.2: /preact@10.13.2:
resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==, tarball: https://registry.npm.taobao.org/preact/-/preact-10.13.2.tgz} resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==}
/prelude-ls@1.1.2: /prelude-ls@1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
@ -4649,7 +4684,7 @@ packages:
dev: true dev: true
/prismjs@1.29.0: /prismjs@1.29.0:
resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, tarball: https://registry.npm.taobao.org/prismjs/-/prismjs-1.29.0.tgz} resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
engines: {node: '>=6'} engines: {node: '>=6'}
dev: false dev: false
@ -4741,6 +4776,14 @@ packages:
strip-indent: 3.0.0 strip-indent: 3.0.0
dev: true dev: true
/regenerator-runtime@0.10.5:
resolution: {integrity: sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==}
dev: false
/regenerator-runtime@0.11.1:
resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==}
dev: false
/regenerator-runtime@0.13.11: /regenerator-runtime@0.13.11:
resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
@ -4962,7 +5005,7 @@ packages:
slate: 0.72.8 slate: 0.72.8
/slate@0.72.8: /slate@0.72.8:
resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==, tarball: https://registry.npm.taobao.org/slate/-/slate-0.72.8.tgz} resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==}
dependencies: dependencies:
immer: 9.0.21 immer: 9.0.21
is-plain-object: 5.0.0 is-plain-object: 5.0.0
@ -4995,7 +5038,7 @@ packages:
dev: true dev: true
/snabbdom@3.5.1: /snabbdom@3.5.1:
resolution: {integrity: sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==, tarball: https://registry.npm.taobao.org/snabbdom/-/snabbdom-3.5.1.tgz} resolution: {integrity: sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==}
engines: {node: '>=8.3.0'} engines: {node: '>=8.3.0'}
/source-map-js@1.0.2: /source-map-js@1.0.2:
@ -5047,7 +5090,7 @@ packages:
dev: true dev: true
/ssr-window@3.0.0: /ssr-window@3.0.0:
resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==, tarball: https://registry.npm.taobao.org/ssr-window/-/ssr-window-3.0.0.tgz} resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==}
/string-argv@0.3.1: /string-argv@0.3.1:
resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
@ -5217,7 +5260,7 @@ packages:
dev: false dev: false
/tiny-warning@1.0.3: /tiny-warning@1.0.3:
resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==, tarball: https://registry.npm.taobao.org/tiny-warning/-/tiny-warning-1.0.3.tgz} resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==}
/to-fast-properties@2.0.0: /to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
@ -5604,6 +5647,12 @@ packages:
'@vue/devtools-api': 6.5.0 '@vue/devtools-api': 6.5.0
vue: 3.3.4 vue: 3.3.4
/vue-image-crop-upload@3.0.3:
resolution: {integrity: sha512-VeBsU0oI1hXeCvdpnu19DM/r3KTlI8SUXTxsHsU4MhDXR0ahRziiL9tf4FbILGx+gRVNZhGbl32yuM6TiaGNhA==}
dependencies:
babel-runtime: 6.26.0
dev: false
/vue-router@4.2.1(vue@3.3.4): /vue-router@4.2.1(vue@3.3.4):
resolution: {integrity: sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==} resolution: {integrity: sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==}
peerDependencies: peerDependencies:
@ -5704,7 +5753,7 @@ packages:
dev: true dev: true
/wildcard@1.1.2: /wildcard@1.1.2:
resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==, tarball: https://registry.npm.taobao.org/wildcard/-/wildcard-1.1.2.tgz} resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==}
/word-wrap@1.2.3: /word-wrap@1.2.3:
resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}

@ -33,6 +33,7 @@ export interface LoginUserInfo {
type: number type: number
organizationId: number organizationId: number
nickname: string nickname: string
phoneNumber: string
avatar?: string avatar?: string
salesmanType: number salesmanType: number
} }

@ -126,3 +126,4 @@ export interface SysMenuI18n {
// 地区语言标签 // 地区语言标签
languageTag: string languageTag: string
} }

@ -5,7 +5,7 @@ import type { PageParam } from '@/api/types'
*/ */
export type SysUserPageParam = CustomerListQO & PageParam export type SysUserPageParam = CustomerListQO & PageParam
/** /**
* 线 *
*/ */
export type CustomerListQO = { export type CustomerListQO = {
//标签 //标签

@ -8,12 +8,13 @@ import type {
GeopoliticalCustomersDTO, GeopoliticalCustomersDTO,
CustomerDTO, CustomerDTO,
customId, customId,
auditDTO auditDTO,
} from '@/api/geopoliticalCustomers/types'
import type {
GeopoliticalCustomersPageParam, GeopoliticalCustomersPageParam,
storePageParam storePageParam
} from '@/api/geopoliticalCustomers/types' } from '@/api/geopoliticalCustomers/types'
// import type {
// } from '@/api/geopoliticalCustomers/types'
/** /**
* *

@ -0,0 +1,34 @@
import httpClient from '@/utils/axios'
import type { ApiResult } from '@/api/types'
import type { SysPassDTO, SysConfigurationDTO } from '@/api/personCenter/types'
/**
*
* @param passDto
*/
export function updatePass(passDto: SysPassDTO) {
return httpClient.put<ApiResult<void>>(`/system/user/pass/${passDto.userId}`, {
oldPass: passDto.oldPass,
pass: passDto.pass,
confirmPass: passDto.confirmPass
})
}
/**
*
* @param saveConfigurationDto
*/
export function saveConfiguration(saveConfigurationDto: SysConfigurationDTO) {
return httpClient.put<ApiResult<void>>(`system/user`, {
gender: saveConfigurationDto.gender,
userId: saveConfigurationDto.userId,
nickname: saveConfigurationDto.nickname,
phone: saveConfigurationDto.phone,
username: saveConfigurationDto.username
})
}
/**
*
*/
export function getUserInfo(userId: number | undefined) {
return httpClient.get<ApiResult>(`system/user/${userId}`)
}

@ -0,0 +1,17 @@
//个人中心修改密码
export interface SysPassDTO {
userId: number | undefined
oldPass: string
pass: string
confirmPass: string
}
//个人中心保存配置
export interface SysConfigurationDTO {
gender: number | undefined
userId: number | undefined
// jobNumber: number
nickname: string | undefined
phone: string | undefined
username: string | undefined
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -2,6 +2,7 @@
<span v-if="loading" :class="[$style.action, $style.account]"> <span v-if="loading" :class="[$style.action, $style.account]">
<a-spin size="small" style="margin-left: 8px; margin-right: 8px" /> <a-spin size="small" style="margin-left: 8px; margin-right: 8px" />
</span> </span>
<header-dropdown v-else overlay-class-name="avatar-dropdown"> <header-dropdown v-else overlay-class-name="avatar-dropdown">
<span :class="[$style.action, $style.account]"> <span :class="[$style.action, $style.account]">
<a-avatar size="small" :class="$style.avatar" :src="currentUser.avatar" alt="avatar" /> <a-avatar size="small" :class="$style.avatar" :src="currentUser.avatar" alt="avatar" />
@ -11,15 +12,17 @@
<template #overlay> <template #overlay>
<a-menu :class="$style.menu" @click="onMenuClick"> <a-menu :class="$style.menu" @click="onMenuClick">
<template v-if="props.menu"> <template v-if="props.menu">
<a-menu-item key="center"> <router-link to="/system/usercenter">
<UserOutlined /> <a-menu-item key="center">
个人中心 <UserOutlined />
</a-menu-item> 个人中心
<a-menu-item key="settings"> </a-menu-item>
</router-link>
<!-- <a-menu-item key="settings">
<SettingOutlined /> <SettingOutlined />
个人设置 个人设置
</a-menu-item> </a-menu-item>
<a-menu-divider style="margin: 4px 0" /> <a-menu-divider style="margin: 4px 0" /> -->
</template> </template>
<a-menu-item key="logout"> <a-menu-item key="logout">

@ -26,7 +26,6 @@ window.globalProvincesAndCitiesAndAutonomousRegions = provincesAndCitiesAndAuton
const app = createApp(App) const app = createApp(App)
app.use(createPinia()) app.use(createPinia())
if (enableI18n) { if (enableI18n) {
// 加载完 i18n 文件后再注册路由和渲染,防止发起请求时 401错误弹窗无法国际化 // 加载完 i18n 文件后再注册路由和渲染,防止发起请求时 401错误弹窗无法国际化
installI18n(app).then(() => { installI18n(app).then(() => {

@ -1,6 +1,7 @@
// notFound 路由,使用函数获取,方便使用不同的路由名称,支持登录后 content 中显示异常信息 // notFound 路由,使用函数获取,方便使用不同的路由名称,支持登录后 content 中显示异常信息
import type { RouteRecordRaw } from 'vue-router' import type { RouteRecordRaw } from 'vue-router'
import { loginPath } from '@/config' import { loginPath } from '@/config'
// import PersonCenter from '@/views/personCenter/index.vue'
export const ExceptionComponentImport = () => import('@/views/basic/exception/index.vue') export const ExceptionComponentImport = () => import('@/views/basic/exception/index.vue')
@ -50,6 +51,28 @@ const constantRoutes: RouteRecordRaw[] = [
} }
}, },
// { // {
// path: '/user',
// // name: 'personcenterPage',
// component: () => import('@/layout/index.vue'),
// // hidden: true,
// redirect: 'noredirect',
// children: [
// {
// path: 'center',
// component: () => import('@/views/center/updateEmail.vue'),
// name: '个人中心',
// meta: { title: '个人中心', withoutLayout: true }
// }
// ]
// },
// {
// //个人中心
// path: '/user/center',
// name: '个人中心',
// component: () => import('@/views/user/center/updateEmail.vue'),
// meta: { title: '个人中心', withoutLayout: true }
// },
// {
// // OAuth2 授权码登录处理页 // // OAuth2 授权码登录处理页
// path: '/clueaccess/clueImport', // path: '/clueaccess/clueImport',
// name: 'clueImport', // name: 'clueImport',

@ -8,6 +8,7 @@ import type { SysMenuRouterVO } from '@/api/system/menu/types'
export interface UserInfo extends LoginUserInfo { export interface UserInfo extends LoginUserInfo {
roleCodes: string[] roleCodes: string[]
permissions: string[] permissions: string[]
gender: number | undefined
} }
const accessTokenKey = getStorageKey('access-token') const accessTokenKey = getStorageKey('access-token')

@ -0,0 +1,145 @@
<template>
<a-modal
:title="title"
:visible="visible"
:mask-closable="false"
:body-style="{ paddingBottom: '8px' }"
:confirm-loading="submitLoading"
:width="500"
@ok="handleSubmit"
@cancel="handleClose"
>
<a-form :model="formModel" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-form-item label="旧密码" v-bind="validateInfos.oldPass">
<a-input-password v-model:value="formModel.oldPass" type="password" />
</a-form-item>
<a-form-item label="新密码" v-bind="validateInfos.pass">
<a-input-password v-model:value="formModel.pass" type="password" />
</a-form-item>
<a-form-item label="确认密码" v-bind="validateInfos.confirmPass">
<a-input-password v-model:value="formModel.confirmPass" type="password" />
</a-form-item>
</a-form>
</a-modal>
</template>
<script setup lang="ts">
// import { overrideProperties } from '@/utils/bean-utils'
import { passEncrypt } from '@/utils/password-utils'
import { useAdminForm, useFormAction, FormAction, labelCol, wrapperCol } from '@/hooks/form'
import type { FormRequestMapping } from '@/hooks/form'
import { useModal } from '@/hooks/modal'
//
import { updatePass } from '@/api/personCenter'
import type { SysPassDTO } from '@/api/personCenter/types'
const emits = defineEmits<{
(e: 'submit-success'): void
}>()
const { title, visible, openModal, closeModal } = useModal()
const { formAction, isCreateForm, isUpdateForm } = useFormAction()
interface formModelItem {
userId: number | undefined
oldPass: string
pass: string
confirmPass: string
}
//
const formModel = reactive<formModelItem>({
userId: undefined,
oldPass: '',
pass: '',
confirmPass: ''
})
//
interface formRuleItem {
oldPass: Array<object>
pass: Array<object>
confirmPass: Array<object>
}
const confirmPass = (rule: any, value: any, callback: any) => {
if (value) {
if (formModel.pass !== value) {
callback(new Error('两次输入的密码不一致'))
} else {
callback()
}
} else {
callback(new Error('请再次输入密码'))
}
}
//
const formRule = ref<formRuleItem>({
oldPass: [{ required: true, message: '请输入旧密码', trigger: 'blur' }],
pass: [
{ required: true, message: '请输入新密码', trigger: 'blur' },
{ min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
],
confirmPass: [{ required: true, validator: confirmPass, trigger: 'blur' }]
})
//
const formRequestMapping: FormRequestMapping<SysPassDTO> = {
[FormAction.CREATE]: updatePass
// [FormAction.UPDATE]: updatePass
}
const { submitLoading, validateAndSubmit, resetFields, validateInfos } = useAdminForm(
formAction,
formRequestMapping,
formModel,
formRule
)
/* 表单提交处理 */
const handleSubmit = () => {
validateAndSubmit(
{
...formModel,
oldPass: passEncrypt(formModel.oldPass),
pass: passEncrypt(formModel.pass),
confirmPass: passEncrypt(formModel.confirmPass)
},
{
onSuccess: () => {
closeModal()
emits('submit-success')
}
}
)
}
/* 弹窗关闭方法 */
const handleClose = () => {
closeModal()
submitLoading.value = false
}
// interface recordItem{
// userId:
// }
defineExpose({
open(newFormAction: FormAction, record: number | undefined) {
openModal()
resetFields()
if (newFormAction === FormAction.CREATE) {
title.value = '修改密码'
}
formModel.userId = record
// else {
// title.value = ''
// formRule.value = {
// username: [{ required: true, message: '!' }],
// nickname: [{ required: true, message: '!' }]
// }
// overrideProperties(formModel, record)
// }
formAction.value = newFormAction
}
})
</script>

@ -0,0 +1,777 @@
<template>
<div class="app-container">
<a-row :gutter="20">
<a-col :xs="24" :sm="24" :md="10" :lg="10" :xl="10" style="margin-bottom: 10px">
<a-card class="box-card" title="个人信息">
<!-- <div slot="header" class="clearfix">
<span>个人信息</span>
</div> -->
<div>
<div v-if="user" style="text-align: center">
<div class="a-upload">
<!-- :src="user.avatarName ? baseApi + '/avatar/' + user.avatarName : Avatar" -->
<!-- {{ 'http://39.100.77.21:8001/avatar/' + currentUser.avatar }} -->
<!-- {{ envs.VITE_SERVERURL + '/avatar/' + currentUser.avatar }} -->
<img
:src="
currentUser.avatar
? envs.VITE_SERVERURL + '/avatar/' + currentUser.avatar
: Avatar
"
title="点击上传头像"
class="avatar"
@click="toggleShow"
/>
<!-- :params="params" -->
<myUpload
v-model="show"
:headers="headers"
:url="updateAvatarApi"
:on-error="errorImg"
@crop-upload-success="cropUploadSuccess"
/>
</div>
</div>
<ul class="user-info">
<li>
<div style="height: 100%">
<login-outlined /> 登录账号
<!-- <svg-icon icon-class="login" /> 登录账号 -->
<div class="user-right">{{ currentUser.username || '' }}</div>
</div>
</li>
<li>
<smile-outlined /> 用户昵称
<!-- <svg-icon icon-class="user1" /> 用户昵称 -->
<div class="user-right">{{ currentUser.nickname }}</div>
</li>
<li>
<user-outlined /> 用户角色
<div class="user-right">{{ userRole }}</div>
<!-- <svg-icon icon-class="user" /> 用户角色 -->
<!-- <div v-for="item in user.roles" :key="item.id" class="user-right">
&nbsp;{{ item.name }}
</div> -->
</li>
<!-- <li v-if="user.organizeName">
<svg-icon icon-class="dept" /> 所属小组
<div class="user-right">{{ user.organizeName }}</div>
</li> -->
<li>
<phone-outlined /> 手机号码
<!-- <svg-icon icon-class="phone" /> 手机号码 -->
<div class="user-right">{{ currentUser.phoneNumber }}</div>
</li>
<!-- <li v-if="user.email">
<experiment-outlined /> 用户邮箱
<div class="user-right">{{ user.email }}</div>
</li> -->
<li>
<safety-certificate-outlined /> 安全设置
<!-- <svg-icon icon-class="anq" /> 安全设置 -->
<div class="user-right">
<a @click="modifyPassword"></a>
<!-- <a @click="$refs.email.dialog = true">修改邮箱</a> -->
</div>
</li>
</ul>
</div>
</a-card>
</a-col>
<a-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14">
<!-- 用户资料 -->
<a-card class="box-card">
<!-- @tab-click="handleClick" -->
<a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="1" tab="用户资料">
<a-form
ref="form"
:model="formModel"
style="margin-top: 10px"
size="small"
:label-col="{ sm: { span: 24 }, md: { span: 3 } }"
:wrapper-col="{ sm: { span: 24 }, md: { span: 20 } }"
>
<!-- <a-form-item label="工号">
<a-input v-model="form.jobNumber" style="width: 35%" />
<span style="color: #C0C0C0;margin-left: 10px;">工号</span>
</a-form-item> -->
<a-form-item
label="昵称"
:rules="[
{ required: true, message: '请输入用户昵称', trigger: 'blur' },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
]"
>
<a-input v-model:value="formModel.nickName" style="width: 40%" />
<span style="color: #c0c0c0; margin-left: 10px">用户昵称不作为登录使用</span>
</a-form-item>
<a-form-item
label="手机号"
:rules="[{ required: true, trigger: 'blur', validator: validPhone }]"
>
<a-input v-model:value="formModel.phone" style="width: 40%" />
<span style="color: #c0c0c0; margin-left: 10px">手机号码不能重复</span>
</a-form-item>
<a-form-item label="性别">
<a-radio-group v-model:value="formModel.gender" style="width: 178px">
<a-radio label="男" :value="1"></a-radio>
<a-radio label="女" :value="2"></a-radio>
</a-radio-group>
</a-form-item>
<!-- <a-form-item label="企微验证">
<a-input v-model="form.greetMessage" style="width: 35%;" />
<span style="color: #C0C0C0;margin-left: 10px;">用作企微好友添加验证模板</span>
</a-form-item> -->
<a-form-item :wrapper-col="{ offset: 3, span: 4 }">
<a-button :loading="saveLoading" size="mini" type="primary" @click="doSubmit"
>保存配置</a-button
>
</a-form-item>
</a-form>
</a-tab-pane>
<!-- 线索规则 -->
<!-- <a-tab-pane v-if="user.isManager" key="2" tab="规则线索">
<div>
<div class="pan-item">
<label class="pan-label">线索回收</label>
<a-input
v-model="configureRule.recycleNumber"
type="Number"
style="width: 120px"
/>
<a-select
v-model="configureRule.recycleUnit"
placeholder="请选择"
class="ml-10"
style="width: 90px"
>
<a-option label="天" value="0" />
<a-option label="周" value="1" />
<a-option label="月" value="2" />
</a-select>
<span style="color: #c0c0c0; margin-left: 10px; font-size: 14px"
>线索指定时长内没有完结自动进入公海</span
>
</div>
<div class="pan-item">
<label class="pan-label">线索公示</label>
<a-input v-model="configureRule.idleNumber" type="Number" style="width: 120px" />
<a-select
v-model="configureRule.idleUnit"
placeholder="请选择"
class="ml-10"
style="width: 90px"
>
<a-option label="时" value="0" />
<a-option label="天" value="1" />
</a-select>
<span style="color: #c0c0c0; margin-left: 10px; font-size: 14px"
>线索进入公海后公示时长</span
>
</div>
<div class="pan-item">
<label class="pan-label" />
<a-button
:loading="saveLoading"
size="mini"
class=""
type="primary"
@click="configureRuleSubmit"
>保存配置</a-button
>
</div>
</div>
</a-tab-pane> -->
<!-- 操作日志 -->
<!-- <a-tab-pane v-if="user.addWeChatFlag" key="3" tab="企微模版">
<div class="u-flex">
<a-input
v-if="inputVisible"
ref="saveTagInput"
v-model="inputValue"
class="input-new-tag"
type="textarea"
:rows="2"
placeholder="请输入内容"
/>
<a-button
v-if="inputVisible"
class="filter-item ml-10"
size="mini"
type="primary"
@click.stop="toAdd"
>
保存
</a-button>
<a-button
v-if="inputVisible"
class="filter-item"
size="mini"
@click.stop="inputVisible = false"
>
取消
</a-button>
<a-button
v-else-if="!inputVisible"
class="filter-item"
size="mini"
type="primary"
icon="a-icon-plus"
@click.stop="showInput"
>
新增
</a-button>
</div> -->
<!-- <a-table
:data="templateArr"
:loading="templateLoading"
:header-cell-style="{ 'text-align': 'left' }"
style="width: 100%"
>
<a-table-column prop="greatMessage" label="消息内容" />
<a-table-column prop="status" label="是否默认">
<template #default="scope">
<span :style="{ color: scope.row.isDefault == 1 ? '#67c23a' : '' }">{{
scope.row.isDefault == 1 ? '当前默认' : '否'
}}</span>
</template>
</a-table-column>
<a-table-column prop="createTime" label="创建日期">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</a-table-column>
<a-table-column align="center">
<template #default="scope">
<a-button
slot="reference"
type="danger"
size="mini"
@click="toDelete(scope.row.id)"
>删除</a-button
>
<a-button
v-if="scope.row.isDefault != 1"
size="mini"
type="primary"
@click="toEdit(scope.row.id)"
>设置默认</a-button
>
</template>
</a-table-column>
</a-table> -->
<!-- </a-tab-pane> -->
<!--分页组件-->
<!-- <a-pagination
:total="total"
:current-page="page + 1"
style="margin-top: 8px;"
layout="total, prev, pager, next, sizes"
@size-change="sizeChange"
@current-change="pageChange"
/>
</a-tab-pane> -->
</a-tabs>
</a-card>
</a-col>
</a-row>
<!-- <updateEmail ref="email" :email="user.email" /> -->
<updatePass ref="pass" />
<!-- 修改密码弹窗 -->
<updatepass-modal ref="gupdatepassModalRef" />
</div>
</template>
<script setup lang="ts">
import 'babel-polyfill'
import myUpload from 'vue-image-crop-upload'
// import { mapGetters } from 'vuex'
import updatePass from './center/updatePass.vue'
// import { getToken } from '@/utils/auth'
// import store from '@/store'
// import Cookies from 'js-cookie'
// import { isvalidPhone } from '@/utils/validate'
// import crud from '@/mixins/crud'
// import { editUser } from '@/api/system/user'
import Avatar from '@/assets/images/avatar.png'
// import {
// wechatSendMessageList,
// wechatSendMessageAdd,
// changeIsDefault,
// wechatSendMessageDel,
// getpoolQuery,
// setPoolConfigure
// } from '@/api/index'
//
import UpdatepassModal from '@/views/system/userCenter/center/updatePass.vue'
import { FormAction } from '@/hooks/form'
//
import { saveConfiguration, getUserInfo } from '@/api/personCenter'
//
import { useUserStore } from '@/stores/user-store'
// import { fileAbsoluteUrl } from '@/utils/file-utils'
// import { serverAddress } from '../../../../vite.config'
// import config from '@/../vite.config'
const envs = import.meta.env
const activeKey = ref('1')
const user = ref({
username: ''
})
//myUpload
const show = ref<boolean>(false)
//
const userStore = useUserStore()
const currentUser = computed(() => {
const userInfo = userStore.userInfo
console.log(userInfo, 'userInfo')
return {
nickname: userInfo?.nickname,
username: userInfo?.username,
phoneNumber: userInfo?.phoneNumber,
avatar: userInfo?.avatar ? userInfo?.avatar : '',
gender: userInfo?.gender,
userId: userInfo?.userId
}
})
interface formModelItem {
nickName?: string
phone?: string
gender: number | undefined
}
//
const formModel = reactive<formModelItem>({
nickName: '',
phone: '',
gender: undefined
})
const formRule = ref<any>({
nickName: [
{ required: true, message: '请输入用户昵称', trigger: 'blur' },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
]
})
//
const userRole = ref<string>('')
// const serverAddress = ref<any>('')
onMounted(() => {
formModel.nickName = currentUser.value.nickname
formModel.phone = currentUser.value.phoneNumber
formModel.gender = currentUser.value.gender
// console.log(serverAddress, 'serverAddress')
getUserInfoData()
// baseUrl.value = import.meta.env.VITE_API_URL
// console.log(baseUrl.value, 'baseUrl')
})
const getUserInfoData = () => {
doRequest(getUserInfo(toRaw(currentUser.value.userId)), {
onSuccess: (res: any) => {
if (res.code === 200) {
console.log(res.data.roleList[0].name, 'res')
userRole.value = res.data.roleList[0].name
currentUser.value.avatar = res.data.avatar ? res.data.avatar : ''
// fileAbsoluteUrl(userInfo?.avatar)
console.log(currentUser.value.avatar, 'currentUser.value.avatar')
}
}
})
}
//
const isvalidPhone = (phone: string) => {
const reg = /^1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}$/
return reg.test(phone)
}
//
const validPhone = (rule: any, value: any, callback: any) => {
if (!value) {
callback(new Error('请输入电话号码'))
} else if (!isvalidPhone(value)) {
callback(new Error('请输入正确的11位手机号码'))
} else {
callback()
}
}
//ref
const gupdatepassModalRef = ref<InstanceType<typeof UpdatepassModal>>()
//
const modifyPassword = () => {
gupdatepassModalRef.value?.open(FormAction.CREATE, currentUser.value.userId)
}
//
const saveLoading = ref<boolean>(false)
//
const { accessToken } = useUserStore()
const headers = ref({
Authorization: 'Bearer ' + accessToken
// 'Access-Control-Allow-Origin': '*'
})
console.log(headers.value.Authorization, 'Authorization')
const toggleShow = () => {
show.value = !show.value
}
const cropUploadSuccess = (jsonData: any, field: any) => {
// store.dispatch('GetInfo').then(() => {})
getUserInfoData()
// const userStore = useUserStore()
// const currentUser = computed(() => {
// const userInfo = userStore.userInfo
// console.log(userInfo, 'userInfo')
// return {
// nickname: userInfo?.nickname,
// username: userInfo?.username,
// phoneNumber: userInfo?.phoneNumber,
// avatar: userInfo?.avatar ? fileAbsoluteUrl(userInfo?.avatar) : '',
// gender: userInfo?.gender,
// userId: userInfo?.userId
// }
// })
}
const baseUrl = import.meta.env.VITE_API_URL
const updateAvatarApi = baseUrl + '/system/user/avatar'
console.log(updateAvatarApi, 'baseUrl')
const router = useRouter()
import { loginPath } from '@/config'
import { logout } from '@/api/auth'
import { useMultiTabStore } from '@/stores/multitab-store'
const multiTabStore = useMultiTabStore()
// //
const errorImg = (err: any) => {
const response = JSON.parse(err.message)
const code = response.code
if (code === 401) {
// accessToken
if (!userStore.accessToken) {
setTimeout(() => {
router.push(loginPath)
}, 200)
return
}
// accessToken
logout().then(() => {
userStore.clean()
setTimeout(() => {
router.push(loginPath)
}, 200)
})
multiTabStore.routeList = []
// store.dispatch('LogOut').then(() => {
// //
// Cookies.set('point', 401)
// location.reload()
// })
}
}
const form = ref<FormInstance>()
import type { FormInstance } from 'ant-design-vue'
import { doRequest } from '@/utils/axios/request'
import { message } from 'ant-design-vue'
import { env } from 'process'
const doSubmit = () => {
// if (this.$refs['form']) {
// this.$refs['form'].validate(valid => {
// if (valid) {
// this.saveLoading = true
// editUser(this.form)
// .then(() => {
// this.editSuccessNotify()
// store.dispatch('GetInfo').then(() => {})
// this.saveLoading = false
// })
// .catch(() => {
// this.saveLoading = false
// })
// }
// })
// }
form.value
?.validate()
.then(() => {
doRequest(
saveConfiguration(
toRaw({
gender: currentUser.value.gender,
userId: currentUser.value.userId,
nickname: '管理员',
phone: currentUser.value.phoneNumber,
username: currentUser.value.username
})
),
{
onSuccess: (res: any) => {
// if (res.code === 200) {
message.success('编辑成功')
// }
}
}
)
// if (formModel.customStoreEntities.length === 0) {
// message.info('')
// } else {
// formModel.enrollStatus = 0
// submitOperate()
// // handleSubmit()
// }
})
.catch(err => {
console.log('校验失败err', err)
})
}
// const params = ref({
// userId: currentUser.value.userId
// })
//tab
// const handleClick = (tab: any, event: any) => {
// if (tab.name === 'template') {
// totemplateArr()
// }
// if (tab.name === 'clueRule') {
// getpoolQuery()
// }
// }
// const totemplateArr = () => {
// this.templateLoading = true
// wechatSendMessageList().then(res => {
// this.templateLoading = false
// this.templateArr = res.data
// })
// }
// export default {
// name: 'Center',
// components: { updatePass, myUpload },
// // mixins: [crud],
// data() {
// //
// const validPhone = (rule, value, callback) => {
// if (!value) {
// callback(new Error(''))
// } else if (!isvalidPhone(value)) {
// callback(new Error('11'))
// } else {
// callback()
// }
// }
// return {
// show: false,
// Avatar: Avatar,
// c: 3,
// activeName: 'first',
// saveLoading: false,
// inputVisible: false, // input
// inputValue: '',
// templateLoading: false,
// baseApi: '',
// headers: {
// Authorization: 'Bearer ' //+ getToken()
// },
// form: {},
// configureRule: {
// recycleNumber: '',
// recycleUnit: '0',
// jobNumber: '',
// idleNumber: '',
// idleUnit: '0',
// id: ''
// }, // 线
// rules: {
// nickName: [
// { required: true, message: '', trigger: 'blur' },
// { min: 2, max: 20, message: ' 2 20 ', trigger: 'blur' }
// ],
// phone: [{ required: true, trigger: 'blur', validator: validPhone }]
// },
// templateArr: [],
// user: {
// username: ''
// }
// }
// },
// computed: {
// // ...mapGetters(['user', 'updateAvatarApi', 'baseImgUrl'])
// },
// created() {
// // this.form = {
// // id: this.user.id,
// // nickName: this.user.nickName,
// // gender: this.user.gender,
// // phone: this.user.phone,
// // jobNumber: this.user.jobNumber
// // }
// // this.baseApi = this.baseImgUrl
// // store.dispatch('GetInfo').then(() => {})
// },
// methods: {
// totemplateArr() {
// this.templateLoading = true
// wechatSendMessageList().then(res => {
// this.templateLoading = false
// this.templateArr = res.data
// })
// },
// showInput() {
// this.inputVisible = true
// this.$nextTick(() => {
// this.$refs.saveTagInput.focus()
// })
// },
// handleInputConfirm() {
// this.inputVisible = false
// this.inputValue = ''
// },
// toAdd() {
// wechatSendMessageAdd({
// greatMessage: this.inputValue
// }).then(res => {
// this.handleInputConfirm()
// this.totemplateArr()
// })
// },
// toEdit(id) {
// changeIsDefault({
// isDefault: 1,
// id: id
// }).then(res => {
// this.$notify({
// title: '',
// message: '',
// type: 'success'
// })
// this.totemplateArr()
// })
// },
// toDelete(id) {
// wechatSendMessageDel({
// id: id
// }).then(res => {
// this.$notify({
// title: '',
// message: '',
// type: 'success'
// })
// this.totemplateArr()
// })
// },
// handleClick(tab, event) {
// if (tab.name === 'template') {
// this.totemplateArr()
// }
// if (tab.name === 'clueRule') {
// this.getpoolQuery()
// }
// },
// beforeInit() {
// this.url = 'api/logs/user'
// return true
// },
// // 线
// getpoolQuery() {
// getpoolQuery({ companyId: this.user.companyId }).then(res => {
// if (res.data) {
// this.configureRule = res.data
// }
// })
// },
// configureRuleSubmit() {
// if (!this.configureRule.recycleNumber || Number(this.configureRule.recycleNumber) <= 0) {
// this.$message.warning('线')
// return false
// }
// if (!this.configureRule.idleNumber || Number(this.configureRule.idleNumber) < 0) {
// this.$message.warning('线')
// return false
// }
// this.configureRule.companyId = this.user.companyId
// this.saveLoading = true
// setPoolConfigure(this.configureRule)
// .then(res => {
// this.saveLoading = false
// this.$message.success('')
// this.getpoolQuery()
// })
// .catch(() => {
// this.saveLoading = false
// this.$message.error('')
// })
// }
// }
// }
</script>
<style lang="less" scoped>
.app-container {
padding: 20px;
margin: 20px;
background: #fff;
}
.box-card {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}
::v-deep .ant-form-small .ant-form-item-label > label {
height: 32px;
}
.u-flex {
display: flex;
align-items: baseline;
}
.pan-item {
display: flex;
align-items: center;
margin-bottom: 18px;
.pan-label {
width: 90px;
text-align: right;
vertical-align: middle;
float: left;
font-size: 14px;
color: #606266;
padding: 0 12px 0 0;
box-sizing: border-box;
}
}
.input-new-tag {
margin-left: 10px;
vertical-align: bottom;
}
.avatar {
width: 120px;
height: 120px;
border-radius: 50%;
}
.user-info {
padding-left: 0;
list-style: none;
li {
border-bottom: 1px solid #f0f3f4;
padding: 11px 0;
font-size: 13px;
}
.user-right {
float: right;
max-width: 60%;
text-align: right;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
a {
color: #317ef3;
}
}
}
//
::v-deep .ant-form-item-control-input-content {
line-height: 32px !important;
}
</style>

@ -0,0 +1 @@
declare module 'vue-image-crop-upload'

@ -1,23 +1,13 @@
{ {
"extends": "@vue/tsconfig/tsconfig.dom.json", "extends": "@vue/tsconfig/tsconfig.dom.json",
"include": [ "include": ["types/**/*.ts", "src/**/*", "src/**/*.vue", "vite.config.ts"],
"types/**/*.ts", "exclude": ["src/**/__tests__/*"],
"src/**/*",
"src/**/*.vue"
],
"exclude": [
"src/**/__tests__/*"
],
"compilerOptions": { "compilerOptions": {
"composite": true, "composite": true,
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@/*": [ "@/*": ["./src/*"],
"./src/*" "#/*": ["./pro-components/*"]
], }
"#/*": [
"./pro-components/*"
]
},
} }
} }

@ -38,7 +38,6 @@ declare module '@vue/runtime-core' {
AListItem: typeof import('ant-design-vue/es')['ListItem'] AListItem: typeof import('ant-design-vue/es')['ListItem']
AListItemMeta: typeof import('ant-design-vue/es')['ListItemMeta'] AListItemMeta: typeof import('ant-design-vue/es')['ListItemMeta']
AMenu: typeof import('ant-design-vue/es')['Menu'] AMenu: typeof import('ant-design-vue/es')['Menu']
AMenuDivider: typeof import('ant-design-vue/es')['MenuDivider']
AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
AModal: typeof import('ant-design-vue/es')['Modal'] AModal: typeof import('ant-design-vue/es')['Modal']
AnnouncementRibbon: typeof import('./../src/components/Notify/AnnouncementRibbon.vue')['default'] AnnouncementRibbon: typeof import('./../src/components/Notify/AnnouncementRibbon.vue')['default']
@ -96,6 +95,7 @@ declare module '@vue/runtime-core' {
IconSelectorModal: typeof import('./../src/components/IconSelector/IconSelectorModal.vue')['default'] IconSelectorModal: typeof import('./../src/components/IconSelector/IconSelectorModal.vue')['default']
InteractionOutlined: typeof import('@ant-design/icons-vue')['InteractionOutlined'] InteractionOutlined: typeof import('@ant-design/icons-vue')['InteractionOutlined']
LockOutlined: typeof import('@ant-design/icons-vue')['LockOutlined'] LockOutlined: typeof import('@ant-design/icons-vue')['LockOutlined']
LoginOutlined: typeof import('@ant-design/icons-vue')['LoginOutlined']
LogoutOutlined: typeof import('@ant-design/icons-vue')['LogoutOutlined'] LogoutOutlined: typeof import('@ant-design/icons-vue')['LogoutOutlined']
Lov: typeof import('./../src/components/Lov/Lov.vue')['default'] Lov: typeof import('./../src/components/Lov/Lov.vue')['default']
LovModal: typeof import('./../src/components/Lov/LovModal.vue')['default'] LovModal: typeof import('./../src/components/Lov/LovModal.vue')['default']
@ -104,6 +104,7 @@ declare module '@vue/runtime-core' {
MinusCircleOutlined: typeof import('@ant-design/icons-vue')['MinusCircleOutlined'] MinusCircleOutlined: typeof import('@ant-design/icons-vue')['MinusCircleOutlined']
MobileOutlined: typeof import('@ant-design/icons-vue')['MobileOutlined'] MobileOutlined: typeof import('@ant-design/icons-vue')['MobileOutlined']
OperationGroup: typeof import('./../src/components/Operation/OperationGroup.vue')['default'] OperationGroup: typeof import('./../src/components/Operation/OperationGroup.vue')['default']
PhoneOutlined: typeof import('@ant-design/icons-vue')['PhoneOutlined']
PlusOutlined: typeof import('@ant-design/icons-vue')['PlusOutlined'] PlusOutlined: typeof import('@ant-design/icons-vue')['PlusOutlined']
QuestionCircleOutlined: typeof import('@ant-design/icons-vue')['QuestionCircleOutlined'] QuestionCircleOutlined: typeof import('@ant-design/icons-vue')['QuestionCircleOutlined']
RotateCaptcha: typeof import('./../src/components/Captcha/RotateCaptcha.vue')['default'] RotateCaptcha: typeof import('./../src/components/Captcha/RotateCaptcha.vue')['default']
@ -116,6 +117,7 @@ declare module '@vue/runtime-core' {
SelectLanguage: typeof import('./../src/components/SelectLanguage/index.vue')['default'] SelectLanguage: typeof import('./../src/components/SelectLanguage/index.vue')['default']
SettingOutlined: typeof import('@ant-design/icons-vue')['SettingOutlined'] SettingOutlined: typeof import('@ant-design/icons-vue')['SettingOutlined']
SliderCaptcha: typeof import('./../src/components/Captcha/SliderCaptcha.vue')['default'] SliderCaptcha: typeof import('./../src/components/Captcha/SliderCaptcha.vue')['default']
SmileOutlined: typeof import('@ant-design/icons-vue')['SmileOutlined']
SoundOutlined: typeof import('@ant-design/icons-vue')['SoundOutlined'] SoundOutlined: typeof import('@ant-design/icons-vue')['SoundOutlined']
SwapOutlined: typeof import('@ant-design/icons-vue')['SwapOutlined'] SwapOutlined: typeof import('@ant-design/icons-vue')['SwapOutlined']
SyncOutlined: typeof import('@ant-design/icons-vue')['SyncOutlined'] SyncOutlined: typeof import('@ant-design/icons-vue')['SyncOutlined']

@ -20,22 +20,24 @@ import { projectTitle } from './src/config'
import { antdvStyleDeps } from './src/utils/resolvers' import { antdvStyleDeps } from './src/utils/resolvers'
//项目 //项目
// const serverAddress = 'http://admin.ballcat.cn' // export const serverAddress = 'http://admin.ballcat.cn'
//xy //xy
// const serverAddress = 'http://172.18.0.225:8000' // export const serverAddress = 'http://172.18.0.225:8000'
//jt //jt
// const serverAddress = 'http://172.18.1.8:8000' // export const serverAddress = 'http://172.18.1.8:8000'
//ts //ts
// const serverAddress = 'http://172.18.0.228:8000' // export const serverAddress = 'http://172.18.0.228:8000'
//测试 //测试
const serverAddress = 'http://39.100.77.21:8000' export const serverAddress = 'http://39.100.77.21:8000'
//线上ip //线上ip
// const serverAddress = 'http://175.27.212.74:80' // export const serverAddress = 'http://175.27.212.74:80'
//线上域名 //线上域名
// const serverAddress = 'https://baiyea.net' // export const serverAddress = 'https://byffp.top'
// const serverAddress = 'http://8.130.96.163:8100' // export const serverAddress = 'http://8.130.96.163:8100'
// https://vitejs.dev/config/ // https://vitejs.dev/config/
// export const serverAddress = process.env.VUE_APP_BASE_API
export default defineConfig({ export default defineConfig({
server: { server: {
port: 8001, port: 8001,

Loading…
Cancel
Save