CRM微信小程序

This commit is contained in:
yyy 2024-11-20 17:48:53 +08:00
parent 8b678de6b5
commit 37a9b927dd
6 changed files with 1546 additions and 966 deletions

View File

@ -1,4 +1,4 @@
export const VUE_APP_API_URL = 'http://localhost:48081/admin-api' export const VUE_APP_API_URL = 'http://192.168.0.179:48080/admin-api'
//export const VUE_APP_API_URL = 'https://apicrm.yixiang.co/admin-api' //export const VUE_APP_API_URL = 'https://apicrm.yixiang.co/admin-api'
export const VUE_APP_RESOURCES_URL = 'https://h5.yixiang.co/static' export const VUE_APP_RESOURCES_URL = 'https://h5.yixiang.co/static'
export const VUE_APP_UPLOAD_URL = VUE_APP_API_URL + '/infra/file/upload' export const VUE_APP_UPLOAD_URL = VUE_APP_API_URL + '/infra/file/upload'
@ -18,25 +18,25 @@ const orderListStatus = {}
// -1:已退款 // -1:已退款
export const orderStatus = { export const orderStatus = {
0: '未支付', 0: '未支付',
1: '待发货', 1: '待发货',
2: '待收货', 2: '待收货',
3: '待评价', 3: '待评价',
4: '已完成', 4: '已完成',
5: '退款中', 5: '退款中',
6: '已退款', 6: '已退款',
7: '退款', 7: '退款',
} }
export const orderReStatus = { export const orderReStatus = {
0: '等待买家付款', 0: '等待买家付款',
// 1: '等待卖家发货', // 1: '等待卖家发货',
1: '卖家已发货', 1: '卖家已发货',
2: '等待买家待评价', 2: '等待买家待评价',
3: '订单已完成', 3: '订单已完成',
4: '订单退款中', 4: '订单退款中',
5: '订单已退款', 5: '订单已退款',
6: '退款已完成', 6: '退款已完成',
} }
// export const orderReStatus = { // export const orderReStatus = {

View File

@ -1,6 +1,6 @@
{ {
"name" : "yshop-miniapp", "name" : "中鼐智能CRM",
"appid" : "__UNI__ADC0FB0", "appid" : "__UNI__D50CF97",
"description" : "", "description" : "",
"versionName" : "1.0.0", "versionName" : "1.0.0",
"versionCode" : 1, "versionCode" : 1,
@ -401,7 +401,7 @@
"quickapp" : {}, "quickapp" : {},
/* */ /* */
"mp-weixin" : { "mp-weixin" : {
"appid" : "wx604d2ea4702620d2", "appid" : "wx91fcb30adb2df321",
"setting" : { "setting" : {
"urlCheck" : false "urlCheck" : false
}, },

591
package-lock.json generated
View File

@ -1,8 +1,587 @@
{ {
"name": "yshop-miniapp", "name": "yshop-crm-miniapp",
"version": "1.2.0", "version": "1.0.0",
"lockfileVersion": 1, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": {
"": {
"name": "yshop-crm-miniapp",
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"@vant/area-data": "^1.5.0",
"add": "^2.0.6",
"flyio": "^0.6.14",
"jweixin-module": "^1.6.0",
"pinia": "^2.1.6",
"vant": "^4.6.2",
"weixin-js-sdk": "^1.6.3",
"yarn": "^1.22.19"
}
},
"node_modules/@vant/area-data": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/@vant/area-data/-/area-data-1.5.0.tgz",
"integrity": "sha512-SWmDhYmWiOgtAgtJqcW7N4XyGgrg/7l6t1+XSgt8BkPp2oOKO1ZUn8+46brLpT/gzRe/v8BtyTLmdBwMamrmQw=="
},
"node_modules/@vant/popperjs": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
"integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
},
"node_modules/@vant/use": {
"version": "1.5.2",
"resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.5.2.tgz",
"integrity": "sha512-CBK61iT568dCHUwFFsErGbW6/5tmrPnZJKGtcSy7Tjcrmws8Ku+YZo7IUFD9Xkj9MfSJ4pfhQ7pU2KouP5Cojg==",
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.5.0",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
},
"node_modules/@vue/shared": {
"version": "3.3.4",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz",
"integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
},
"node_modules/add": {
"version": "2.0.6",
"resolved": "https://registry.npmmirror.com/add/-/add-2.0.6.tgz",
"integrity": "sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q=="
},
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/asn1": {
"version": "0.2.6",
"resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
"integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
"dependencies": {
"safer-buffer": "~2.1.0"
}
},
"node_modules/assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
"engines": {
"node": ">=0.8"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
"engines": {
"node": "*"
}
},
"node_modules/aws4": {
"version": "1.12.0",
"resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz",
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
},
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
"dependencies": {
"tweetnacl": "^0.14.3"
}
},
"node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
},
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
"dependencies": {
"assert-plus": "^1.0.0"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
"dependencies": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"node_modules/extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
"engines": [
"node >=0.6.0"
]
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"node_modules/flyio": {
"version": "0.6.14",
"resolved": "https://registry.npmmirror.com/flyio/-/flyio-0.6.14.tgz",
"integrity": "sha512-RE2OXE1ZZmcXOKb0jCtGyquHDxpAqHg17CZ8lmQKRfl3x1kP+NBpaQDx4WgN7DNpLJjFnspTzTEQpwRGg6/xaA==",
"dependencies": {
"request": "^2.85.0"
}
},
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
"engines": {
"node": "*"
}
},
"node_modules/form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 0.12"
}
},
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
"dependencies": {
"assert-plus": "^1.0.0"
}
},
"node_modules/har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
"engines": {
"node": ">=4"
}
},
"node_modules/har-validator": {
"version": "5.1.5",
"resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
"deprecated": "this library is no longer supported",
"dependencies": {
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
"dependencies": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
},
"engines": {
"node": ">=0.8",
"npm": ">=1.3.7"
}
},
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
"node_modules/isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
},
"node_modules/jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
},
"node_modules/json-schema": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
},
"node_modules/jsprim": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz",
"integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"dependencies": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.4.0",
"verror": "1.10.0"
},
"engines": {
"node": ">=0.6.0"
}
},
"node_modules/jweixin-module": {
"version": "1.6.0",
"resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz",
"integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"engines": {
"node": "*"
}
},
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
},
"node_modules/pinia": {
"version": "2.1.6",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.1.6.tgz",
"integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==",
"dependencies": {
"@vue/devtools-api": "^6.5.0",
"vue-demi": ">=0.14.5"
},
"funding": {
"url": "https://github.com/sponsors/posva"
},
"peerDependencies": {
"@vue/composition-api": "^1.4.0",
"typescript": ">=4.4.4",
"vue": "^2.6.14 || ^3.3.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"typescript": {
"optional": true
}
}
},
"node_modules/psl": {
"version": "1.9.0",
"resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
},
"node_modules/punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"engines": {
"node": ">=6"
}
},
"node_modules/qs": {
"version": "6.5.3",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"engines": {
"node": ">=0.6"
}
},
"node_modules/request": {
"version": "2.88.2",
"resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
"dependencies": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.3",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sshpk": {
"version": "1.17.0",
"resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
"integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
"dependencies": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
},
"bin": {
"sshpk-conv": "bin/sshpk-conv",
"sshpk-sign": "bin/sshpk-sign",
"sshpk-verify": "bin/sshpk-verify"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"dependencies": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
"dependencies": {
"safe-buffer": "^5.0.1"
},
"engines": {
"node": "*"
}
},
"node_modules/tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
},
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
"bin": {
"uuid": "bin/uuid"
}
},
"node_modules/vant": {
"version": "4.6.2",
"resolved": "https://registry.npmmirror.com/vant/-/vant-4.6.2.tgz",
"integrity": "sha512-6EHCCAGM5a9VVzpBg/wZNPDFmJ8T1a4k29DPNcEMW3X670awW3rnD7+/x3dw+bE17JhhSg49V/+fQwBP2iQkAg==",
"dependencies": {
"@vant/popperjs": "^1.3.0",
"@vant/use": "^1.5.1",
"@vue/shared": "^3.0.0"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/verror": {
"version": "1.10.0",
"resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
"integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
"engines": [
"node >=0.6.0"
],
"dependencies": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"node_modules/verror/node_modules/extsprintf": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.4.1.tgz",
"integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==",
"engines": [
"node >=0.6.0"
]
},
"node_modules/vue-demi": {
"version": "0.14.5",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
"integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/weixin-js-sdk": {
"version": "1.6.3",
"resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.3.tgz",
"integrity": "sha512-5jYNtVcxWmgHNqCLSPoX6vXab9G4RPDZx0klX8IsVwGjDTwx/UDmgfF7fkRMGguRpuFv0O7tk1jb+Oay2QiV1w=="
},
"node_modules/yarn": {
"version": "1.22.19",
"resolved": "https://registry.npmmirror.com/yarn/-/yarn-1.22.19.tgz",
"integrity": "sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==",
"hasInstallScript": true,
"bin": {
"yarn": "bin/yarn.js",
"yarnpkg": "bin/yarn.js"
},
"engines": {
"node": ">=4.0.0"
}
}
},
"dependencies": { "dependencies": {
"@vant/area-data": { "@vant/area-data": {
"version": "1.5.0", "version": "1.5.0",
@ -17,7 +596,8 @@
"@vant/use": { "@vant/use": {
"version": "1.5.2", "version": "1.5.2",
"resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.5.2.tgz", "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.5.2.tgz",
"integrity": "sha512-CBK61iT568dCHUwFFsErGbW6/5tmrPnZJKGtcSy7Tjcrmws8Ku+YZo7IUFD9Xkj9MfSJ4pfhQ7pU2KouP5Cojg==" "integrity": "sha512-CBK61iT568dCHUwFFsErGbW6/5tmrPnZJKGtcSy7Tjcrmws8Ku+YZo7IUFD9Xkj9MfSJ4pfhQ7pU2KouP5Cojg==",
"requires": {}
}, },
"@vue/devtools-api": { "@vue/devtools-api": {
"version": "6.5.0", "version": "6.5.0",
@ -407,7 +987,8 @@
"vue-demi": { "vue-demi": {
"version": "0.14.5", "version": "0.14.5",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz", "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.5.tgz",
"integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==" "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==",
"requires": {}
}, },
"weixin-js-sdk": { "weixin-js-sdk": {
"version": "1.6.3", "version": "1.6.3",

View File

@ -1,43 +1,37 @@
{ {
"pages": [ "pages": [{
{ "path": "pages/index/index",
"path": "pages/index/index", "style": {
"style": { "navigationBarTitleText": ""
"navigationBarTitleText": "" }
} },
},
{ {
"path" : "pages/customer/index", "path": "pages/customer/index",
"style" : "style": {
{ "navigationBarTitleText": "客户",
"navigationBarTitleText": "客户", "enablePullDownRefresh": true
"enablePullDownRefresh": true }
}
} }, {
,{ "path": "pages/mine/mine",
"path" : "pages/mine/mine", "style": {
"style" : "navigationBarTitleText": "我的",
{ "enablePullDownRefresh": true
"navigationBarTitleText": "我的", }
"enablePullDownRefresh": true
}
} }, {
,{ "path": "pages/msg/index",
"path" : "pages/msg/index", "style": {
"style" : "navigationBarTitleText": "消息",
{ "enablePullDownRefresh": false
"navigationBarTitleText": "消息", }
"enablePullDownRefresh": false
}
} }
], ],
"subPackages": [{ "subPackages": [{
"root": "pages/components", "root": "pages/components",
"pages": [ { "pages": [{
"path": "pages/business/businessDetails", "path": "pages/business/businessDetails",
"style": { "style": {
"navigationBarTitleText": "商机详情", "navigationBarTitleText": "商机详情",
@ -46,12 +40,12 @@
} }
}, },
{ {
"path": "pages/business/selectProduct", "path": "pages/business/selectProduct",
"style": { "style": {
"navigationBarTitleText": "选择商品", "navigationBarTitleText": "选择商品",
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#ffffff" "navigationBarBackgroundColor": "#ffffff"
} }
}, },
{ {
@ -76,8 +70,8 @@
"navigationBarBackgroundColor": "#ffffff", "navigationBarBackgroundColor": "#ffffff",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
}, },
{ {
"path": "pages/login/login", "path": "pages/login/login",
"style": { "style": {
"navigationBarTitleText": "登录", "navigationBarTitleText": "登录",
@ -133,7 +127,7 @@
"navigationBarBackgroundColor": "#ffffff" "navigationBarBackgroundColor": "#ffffff"
} }
}, },
{ {
"path": "pages/clues/index", "path": "pages/clues/index",
"style": { "style": {
"navigationBarTitleText": "线索", "navigationBarTitleText": "线索",
@ -147,23 +141,21 @@
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#ffffff" "navigationBarBackgroundColor": "#ffffff"
} }
},{ }, {
"path": "pages/clues/add", "path": "pages/clues/add",
"style": { "style": {
"navigationBarTitleText": "添加线索", "navigationBarTitleText": "添加线索",
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarBackgroundColor": "#ffffff" "navigationBarBackgroundColor": "#ffffff"
} }
} }, {
,{ "path": "pages/clues/cluesDetails",
"path" : "pages/clues/cluesDetails", "style": {
"style" : "navigationBarTitleText": "线索详情",
{ "enablePullDownRefresh": false
"navigationBarTitleText": "线索详情", }
"enablePullDownRefresh": false
}
}, },
{ {
"path": "pages/clues/detail", "path": "pages/clues/detail",
"style": { "style": {
@ -190,188 +182,169 @@
"navigationBarTitleText": "添加合同", "navigationBarTitleText": "添加合同",
"enablePullDownRefresh": true "enablePullDownRefresh": true
} }
} }, {
,{ "path": "pages/receivables/index",
"path" : "pages/receivables/index", "style": {
"style" : "navigationBarTitleText": "回款",
{ "enablePullDownRefresh": false
"navigationBarTitleText": "回款",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/receivables/add",
"style" :
{
"navigationBarTitleText": "回款添加",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/invoice/index",
"style" :
{
"navigationBarTitleText": "发票",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/invoice/add",
"style" :
{
"navigationBarTitleText": "申请发票",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/customer/open",
"style" :
{
"navigationBarTitleText": "公海客户",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/contacts/index",
"style" :
{
"navigationBarTitleText": "联系人",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/contacts/detail",
"style" :
{
"navigationBarTitleText": "联系人详情",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/contacts/addPerson",
"style" :
{
"navigationBarTitleText": "添加联系人",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/product/index",
"style" :
{
"navigationBarTitleText": "商品",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/mine/index",
"style" :
{
"navigationBarTitleText": "设置",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/mine/list",
"style" :
{
"navigationBarTitleText": "通知",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/mine/news",
"style" :
{
"navigationBarTitleText": "通知详情",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/mine/edit",
"style" :
{
"navigationBarTitleText": "修改个人信息",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/mine/pass",
"style" :
{
"navigationBarTitleText": "修改密码",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/msg/wait",
"style" :
{
"navigationBarTitleText": "待办事项",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/msg/exam",
"style" :
{
"navigationBarTitleText": "审批管理",
"enablePullDownRefresh": false
}
} }
]
}, {
"path": "pages/receivables/add",
"style": {
"navigationBarTitleText": "回款添加",
"enablePullDownRefresh": false
}
}, {
"path": "pages/invoice/index",
"style": {
"navigationBarTitleText": "发票",
"enablePullDownRefresh": false
}
},
{
"path": "pages/invoice/add",
"style": {
"navigationBarTitleText": "申请发票",
"enablePullDownRefresh": false
}
},
{
"path": "pages/customer/open",
"style": {
"navigationBarTitleText": "公海客户",
"enablePullDownRefresh": false
}
},
{
"path": "pages/contacts/index",
"style": {
"navigationBarTitleText": "联系人",
"enablePullDownRefresh": false
}
},
{
"path": "pages/contacts/detail",
"style": {
"navigationBarTitleText": "联系人详情",
"enablePullDownRefresh": false
}
},
{
"path": "pages/contacts/addPerson",
"style": {
"navigationBarTitleText": "添加联系人",
"enablePullDownRefresh": false
}
},
{
"path": "pages/product/index",
"style": {
"navigationBarTitleText": "商品",
"enablePullDownRefresh": false
}
},
{
"path": "pages/mine/index",
"style": {
"navigationBarTitleText": "设置",
"enablePullDownRefresh": false
}
},
{
"path": "pages/mine/list",
"style": {
"navigationBarTitleText": "通知",
"enablePullDownRefresh": false
}
},
{
"path": "pages/mine/news",
"style": {
"navigationBarTitleText": "通知详情",
"enablePullDownRefresh": false
}
},
{
"path": "pages/mine/edit",
"style": {
"navigationBarTitleText": "修改个人信息",
"enablePullDownRefresh": false
}
},
{
"path": "pages/mine/pass",
"style": {
"navigationBarTitleText": "修改密码",
"enablePullDownRefresh": false
}
},
{
"path": "pages/msg/wait",
"style": {
"navigationBarTitleText": "待办事项",
"enablePullDownRefresh": false
}
},
{
"path": "pages/msg/exam",
"style": {
"navigationBarTitleText": "审批管理",
"enablePullDownRefresh": false
}
}
]
}], }],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": " ", "navigationBarTitleText": " ",
"navigationBarBackgroundColor": "#F8F8F8", "navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8",
"navigationStyle": "custom" "navigationStyle": "custom"
}, },
"tabBar": { "tabBar": {
"color": "#919293", "color": "#919293",
"selectedColor": "#09b4f1", "selectedColor": "#09b4f1",
"backgroundColor": "#fff", "backgroundColor": "#fff",
"borderStyle": "black", "borderStyle": "black",
"list": [{ "list": [{
"pagePath": "pages/index/index", "pagePath": "pages/index/index",
"text": "首页", "text": "首页",
"iconPath": "static/images/tabBar/index.png", "iconPath": "static/images/tabBar/index.png",
"selectedIconPath": "static/images/tabBar/index_selected.png" "selectedIconPath": "static/images/tabBar/index_selected.png"
}, },
{ {
"pagePath": "pages/customer/index", "pagePath": "pages/customer/index",
"text": "客户", "text": "客户",
"iconPath": "static/images/tabBar/customer.png", "iconPath": "static/images/tabBar/customer.png",
"selectedIconPath": "static/images/tabBar/customer-selected.png" "selectedIconPath": "static/images/tabBar/customer-selected.png"
}, { }, {
"pagePath": "pages/msg/index", "pagePath": "pages/msg/index",
"text": "消息", "text": "消息",
"iconPath": "static/images/tabBar/msg.png", "iconPath": "static/images/tabBar/msg.png",
"selectedIconPath": "static/images/tabBar/msg-select.png" "selectedIconPath": "static/images/tabBar/msg-select.png"
}, { }, {
"pagePath": "pages/mine/mine", "pagePath": "pages/mine/mine",
"text": "我的", "text": "我的",
"iconPath": "static/images/tabBar/mine.png", "iconPath": "static/images/tabBar/mine.png",
"selectedIconPath": "static/images/tabBar/mine_selected.png" "selectedIconPath": "static/images/tabBar/mine_selected.png"
} }
] ]
}, },
"uniIdRouter": {} "uniIdRouter": {}
} }

View File

@ -1,28 +1,23 @@
<template> <template>
<layout> <layout>
<!-- #ifdef MP-WEIXIN --> <!-- #ifdef MP-WEIXIN -->
<uv-navbar <uv-navbar :fixed="false" :title="title" left-arrow @leftClick="$onClickLeft" />
:fixed="false"
:title="title"
left-arrow
@leftClick="$onClickLeft"
/>
<!-- #endif --> <!-- #endif -->
<view class="wrap"> <view class="wrap">
<view class="top"></view> <view class="top"></view>
<view class="content"> <view class="content">
<view class="title">意象CRM</view> <view class="title">意象CRM</view>
<view class="font-size-base text-center text-color-assist mt-1 mb-5 ">实现线索到回款全流程管理</view> <view class="font-size-base text-center text-color-assist mt-1 mb-5 ">实现线索到回款全流程管理</view>
<view class="text-color-assist mb-2">账户</view> <view class="text-color-assist mb-2">账户</view>
<uv-input placeholder="请输入账户" prefixIcon="account" border="bottom" v-model="username"></uv-input> <uv-input placeholder="请输入账户" prefixIcon="account" border="bottom" v-model="username"></uv-input>
<view class="text-color-assist mt-5 mb-2">密码</view> <view class="text-color-assist mt-5 mb-2">密码</view>
<uv-input placeholder="请输入密码" type="password" prefixIcon="lock" border="bottom" v-model="password"></uv-input> <uv-input placeholder="请输入密码" type="password" prefixIcon="lock" border="bottom" v-model="password"></uv-input>
<button @tap="submit" style="" type="primary" class="login">立即登录</button> <button @tap="submit" style="" type="primary" class="login">立即登录</button>
</view> </view>
<!-- <view class="buttom"> <!-- <view class="buttom">
<view class="hint"> <view class="hint">
<radio value="isChecked" @tap.stop="onChange" /> <radio value="isChecked" @tap.stop="onChange" />
我已经阅读并遵守 我已经阅读并遵守
@ -30,193 +25,205 @@
<text class="link" @tap="serv(30,'隐私政策')">隐私政策</text> <text class="link" @tap="serv(30,'隐私政策')">隐私政策</text>
</view> </view>
</view> --> </view> -->
<uv-toast ref="uToast"></uv-toast> <uv-toast ref="uToast"></uv-toast>
</view> </view>
</layout> </layout>
</template> </template>
<script setup> <script setup>
import { import {
ref, ref,
computed computed
} from 'vue' } from 'vue'
import { onLoad,onShow} from '@dcloudio/uni-app' import {
import { useMainStore } from '@/store/store' onLoad,
import { onShow
userLogin } from '@dcloudio/uni-app'
} from '@/api/auth' import {
import * as util from '@/utils/util' useMainStore
import { mobile as testMobible } from '@/uni_modules/uv-ui-tools/libs/function/test' } from '@/store/store'
import cookie from '@/utils/cookie' import {
import router from '@/utils/router' userLogin
const main = useMainStore() } from '@/api/auth'
const title = ref('登录') import * as util from '@/utils/util'
const username = ref('admin') import {
const password = ref('admin123') mobile as testMobible
const isChecked = ref(false) } from '@/uni_modules/uv-ui-tools/libs/function/test'
const openid = ref(main.openid) import cookie from '@/utils/cookie'
const uToast = ref() import router from '@/utils/router'
const main = useMainStore()
const title = ref('登录')
const username = ref('admin')
const password = ref('admin123')
const isChecked = ref(false)
const openid = ref(main.openid)
const uToast = ref()
onShow(() => { onShow(() => {
// #ifdef MP-WEIXIN // #ifdef MP-WEIXIN
if(!openid.value){ if (!openid.value) {
//wechatMiniLogin(); //wechatMiniLogin();
} }
// #endif // #endif
})
const check = () => {
if(!isChecked.value){
uToast.value.show({
message: '请勾选下面协议',
type: 'error'
});
return
}
}
//
const submit = () => {
if (username.value == '') {
uToast.value.show({
message: '请填写账户',
type: 'error'
});
return
}
if (password.value == '') {
uToast.value.show({
message: '请填写密码',
type: 'error'
});
return
}
login()
}
//
const login = async () => {
let data = await userLogin({
username: username.value,
password: password.value,
socialType: 34
}) })
if (data) {
// uni.setStorage({
// key: 'userinfo',
// data: data.userInfo
// });
uni.setStorage({
key: 'accessToken',
data: data.accessToken
});
// main.SET_MEMBER(data.userInfo);
main.SET_TOKEN(data.accessToken);
uToast.value.show({
message: '登录成功',
type: 'success'
});
setTimeout(function() {
uni.switchTab({
url: '/pages/index/index' const check = () => {
}) if (!isChecked.value) {
}, 2000); uToast.value.show({
message: '请勾选下面协议',
type: 'error'
});
return
}
}
//
const submit = () => {
if (username.value == '') {
uToast.value.show({
message: '请填写账户',
type: 'error'
});
return
}
if (password.value == '') {
uToast.value.show({
message: '请填写密码',
type: 'error'
});
return
}
login()
}
//
const login = async () => {
let data = await userLogin({
username: username.value,
password: password.value,
socialType: 34
})
if (data) {
// uni.setStorage({
// key: 'userinfo',
// data: data.userInfo
// });
uni.setStorage({
key: 'accessToken',
data: data.accessToken
});
// main.SET_MEMBER(data.userInfo);
main.SET_TOKEN(data.accessToken);
uToast.value.show({
message: '登录成功',
type: 'success'
});
setTimeout(function() {
uni.switchTab({
url: '/pages/index/index'
})
}, 2000);
}
} }
}
const onChange = () => { const onChange = () => {
isChecked.value = !isChecked.value isChecked.value = !isChecked.value
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.wrap { .wrap {
background-color: #ffffff; background-color: #ffffff;
font-size: 28rpx; font-size: 28rpx;
position: relative; position: relative;
height: 100%; height: 100%;
padding-bottom: 100rpx; padding-bottom: 100rpx;
.content {
width: 600rpx;
margin: 0 auto;
.title { .content {
text-align: center; width: 600rpx;
font-size: 50rpx; margin: 0 auto;
font-weight: 500;
padding-top: 100rpx;
color: #09b4f1;
font-weight: bolder;
}
.login { .title {
background-color: #09b4f1; text-align: center;
color: #ffffff; font-size: 50rpx;
border-radius: 50rem !important; font-weight: 500;
font-size: 26rpx; padding-top: 100rpx;
padding: 8rpx 0; color: #09b4f1;
margin-top: 40rpx; font-weight: bolder;
&::after { }
border: none;
.login {
background-color: #09b4f1;
color: #ffffff;
border-radius: 50rem !important;
font-size: 26rpx;
padding: 8rpx 0;
margin-top: 40rpx;
&::after {
border: none;
}
}
.alternative {
color: $uv-tips-color;
display: flex;
justify-content: space-between;
margin-top: 30rpx;
} }
} }
.alternative {
color: $uv-tips-color;
display: flex;
justify-content: space-between;
margin-top: 30rpx;
}
}
.buttom {
bottom: 0;
.loginType {
padding: 30rpx 80rpx;
//justify-content:space-between;
.login-btn { .buttom {
background-color: #1aad19!important; bottom: 0;
width: 100%;
font-size: 26rpx; .loginType {
border-radius: 50rem !important; padding: 30rpx 80rpx;
//justify-content:space-between;
.login-btn {
background-color: #1aad19 !important;
width: 100%;
font-size: 26rpx;
border-radius: 50rem !important;
display: flex;
align-items: center;
justify-content: center;
padding: 8rpx 0;
text-align: center;
image {
width: 36rpx;
height: 30rpx;
margin-right: 10rpx;
vertical-align: middle;
}
}
}
.hint {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 8rpx 0; padding: 20rpx 40rpx;
text-align: center; font-size: 20rpx;
image { color: $uv-tips-color;
width: 36rpx;
height: 30rpx; .link {
margin-right: 10rpx; color: $uv-warning;
vertical-align: middle;
} }
} }
} }
.hint {
display: flex;
align-items: center;
justify-content: center;
padding: 20rpx 40rpx;
font-size: 20rpx;
color: $uv-tips-color;
.link {
color: $uv-warning;
}
}
} }
}
</style> </style>

View File

@ -3,15 +3,14 @@
<template v-slot:center> <template v-slot:center>
<view class="slot-wrap"> <view class="slot-wrap">
<uv-search placeholder="请输入搜索客户名称" v-model="keyword" bgColor="#ffffff" :showAction="false" <uv-search placeholder="请输入搜索客户名称" v-model="keyword" bgColor="#ffffff" :showAction="false"
:customStyle="customStyle" @focus="onSearch"></uv-search> :customStyle="customStyle" @focus="onSearch"></uv-search>
</view> </view>
</template> </template>
</uv-navbar> </uv-navbar>
<view class="container"> <view class="container">
<view class="top" style="background-color: #09b4f1;"> <view class="top" style="background-color: #09b4f1;">
<view class="statusBar" :is-back="false" style="height: 30rpx;" ></view> <view class="statusBar" :is-back="false" style="height: 30rpx;"></view>
</view> </view>
<!-- 待办 --> <!-- 待办 -->
<view class="notice"> <view class="notice">
@ -27,9 +26,10 @@
<view class="title flex"> <view class="title flex">
<text>常用功能</text> <text>常用功能</text>
</view> </view>
<uv-grid :col="4" :border="false" @click="onGrid" > <uv-grid :col="4" :border="false" @click="onGrid">
<uv-grid-item v-for="(item, index) in toolIcons2" :key="index" :customStyle="customStyle2" @click="item.name == '客户' ? gopage2(item.url) : gopage(item.url)"> <uv-grid-item v-for="(item, index) in toolIcons2" :key="index" :customStyle="customStyle2"
<uv-icon :name="item.icon" :size="30" ></uv-icon> @click="item.name == '客户' ? gopage2(item.url) : gopage(item.url)">
<uv-icon :name="item.icon" :size="30"></uv-icon>
<text class="p-1 font-size-sm">{{ item.name }}</text> <text class="p-1 font-size-sm">{{ item.name }}</text>
</uv-grid-item> </uv-grid-item>
</uv-grid> </uv-grid>
@ -39,7 +39,7 @@
<view class="title flex"> <view class="title flex">
<text>数据简报</text> <text>数据简报</text>
</view> </view>
<uv-grid :col="3" :border="false" @click="onGrid" > <uv-grid :col="3" :border="false" @click="onGrid">
<uv-grid-item v-for="(item, index) in toolIcons3" :key="index" :customStyle="customStyle2"> <uv-grid-item v-for="(item, index) in toolIcons3" :key="index" :customStyle="customStyle2">
<text class="p-1 font-size-sm">{{ item.name }}</text> <text class="p-1 font-size-sm">{{ item.name }}</text>
<text class="p-1 font-size-sm">{{ item.count }}</text> <text class="p-1 font-size-sm">{{ item.count }}</text>
@ -57,64 +57,68 @@
</view> </view>
</view> </view>
</view> </view>
<uv-row> <uv-row>
<uv-col span="8"> <uv-col span="8">
<qiun-data-charts <qiun-data-charts type="gauge" :opts="opts" :chartData="chartData" />
type="gauge" </uv-col>
:opts="opts" <uv-col span="4">
:chartData="chartData" <view class="mb-4">
/> <view class="text-color-assist font-size-medium mb-2">目标金额</view>
</uv-col> <view>¥{{isContract ? chartCountData.contractMoney : chartCountData.receivablesMoney}}</view>
<uv-col span="4"> </view>
<view class="mb-4"> <view>
<view class="text-color-assist font-size-medium mb-2">目标金额</view> <view class="text-color-assist font-size-medium mb-2">完成金额</view>
<view>¥{{isContract ? chartCountData.contractMoney : chartCountData.receivablesMoney}}</view> <view>¥{{isContract ? chartCountData.contractSuccessMoney : chartCountData.receivablesSuccessMoney}}</view>
</view> </view>
<view> </uv-col>
<view class="text-color-assist font-size-medium mb-2">完成金额</view> </uv-row>
<view>¥{{isContract ? chartCountData.contractSuccessMoney : chartCountData.receivablesSuccessMoney}}</view>
</view>
</uv-col>
</uv-row>
</view> </view>
</view> </view>
</template> </template>
<script setup> <script setup>
import {ref,computed} from 'vue' import {
import { onLoad,onShow} from '@dcloudio/uni-app' ref,
import { useMainStore } from '@/store/store' computed
import { storeToRefs } from 'pinia' } from 'vue'
import { import {
indexCount, onLoad,
indexChartCount onShow
} from '@/api/index' } from '@dcloudio/uni-app'
const main = useMainStore() import {
const statusBarHeight = ref(0) useMainStore
const rightSafeArea = ref(0) } from '@/store/store'
statusBarHeight.value = uni.getSystemInfoSync().statusBarHeight import {
storeToRefs
} from 'pinia'
import {
indexCount,
indexChartCount
} from '@/api/index'
const main = useMainStore()
const statusBarHeight = ref(0)
const rightSafeArea = ref(0)
statusBarHeight.value = uni.getSystemInfoSync().statusBarHeight
const windowInfo = uni.getWindowInfo() const windowInfo = uni.getWindowInfo()
const { left } = uni.getMenuButtonBoundingClientRect() const {
rightSafeArea.value = windowInfo.windowWidth - left + 'px' left
const customStyle = computed(() =>{ } = uni.getMenuButtonBoundingClientRect()
return { rightSafeArea.value = windowInfo.windowWidth - left + 'px'
const customStyle = computed(() => {
return {
//width:'100%' //width:'100%'
// paddingLeft:'20rpx', // paddingLeft:'20rpx',
paddingRight: rightSafeArea.value paddingRight: rightSafeArea.value
} }
}) })
const customStyle2 = computed(() =>{ const customStyle2 = computed(() => {
return { return {
paddingBottom:'40rpx', paddingBottom: '40rpx',
// paddingRight:'180rpx' // paddingRight:'180rpx'
} }
}) })
const toolIcons = ref([ const toolIcons = ref([{
{
name: '公海客户', name: '公海客户',
icon: '/static/images/index002.png', icon: '/static/images/index002.png',
url: '/pages/components/pages/customer/open', url: '/pages/components/pages/customer/open',
@ -134,10 +138,9 @@ const toolIcons = ref([
icon: '/static/images/index006.png', icon: '/static/images/index006.png',
url: '/pages/components/pages/contract/index', url: '/pages/components/pages/contract/index',
} }
]) ])
const toolIcons2 = ref([ const toolIcons2 = ref([{
{
name: '客户', name: '客户',
icon: '/static/images/1.png', icon: '/static/images/1.png',
url: '/pages/customer/index', url: '/pages/customer/index',
@ -177,12 +180,11 @@ const toolIcons2 = ref([
icon: '/static/images/8.png', icon: '/static/images/8.png',
url: '/pages/components/pages/product/index', url: '/pages/components/pages/product/index',
}, },
]) ])
const countData = ref({}) const countData = ref({})
const toolIcons3 = ref([ const toolIcons3 = ref([{
{
name: '新增商机', name: '新增商机',
count: 0, count: 0,
}, },
@ -230,246 +232,263 @@ const toolIcons3 = ref([
name: '商机未成交量', name: '商机未成交量',
count: 0, count: 0,
} }
]) ])
const chartData = ref( const chartData = ref({
{ categories: [{
categories: [{"value":0.2,"color":"#1890ff"},{"value":0.8,"color":"#2fc25b"},{"value":1,"color":"#f04864"}], "value": 0.2,
series: [ "color": "#1890ff"
{ }, {
"value": 0.8,
"color": "#2fc25b"
}, {
"value": 1,
"color": "#f04864"
}],
series: [{
name: "完成率", name: "完成率",
data: 0.2 data: 0.2
} }]
] })
}
)
const opts = ref( const opts = ref({
{ color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"],
color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding: undefined,
padding: undefined, title: {
title: { name: "完成率",
name: "完成率", fontSize: 25,
fontSize: 25, color: "#2fc25b",
color: "#2fc25b", offsetY: 0
offsetY: 0
},
subtitle: {
name: "200%",
fontSize: 15,
color: "#1890ff",
offsetY: 0
},
extra: {
gauge: {
type: "progress",
width: 15,
labelColor: "#666666",
startAngle: 0.75,
endAngle: 0.25,
startNumber: 0,
endNumber: 100,
labelFormat: "",
splitLine: {
fixRadius: -10,
splitNumber: 10,
width: 15,
color: "#FFFFFF",
childNumber: 5,
childWidth: 12
}, },
pointer: { subtitle: {
width: 24, name: "200%",
color: "auto" fontSize: 15,
color: "#1890ff",
offsetY: 0
},
extra: {
gauge: {
type: "progress",
width: 15,
labelColor: "#666666",
startAngle: 0.75,
endAngle: 0.25,
startNumber: 0,
endNumber: 100,
labelFormat: "",
splitLine: {
fixRadius: -10,
splitNumber: 10,
width: 15,
color: "#FFFFFF",
childNumber: 5,
childWidth: 12
},
pointer: {
width: 24,
color: "auto"
}
}
} }
} })
const isContract = ref(true)
const chartCountData = ref({})
onShow(() => {
getData()
getChart()
})
const getChart = async () => {
let data = await indexChartCount({
type: 2,
year: 2024,
month: 0
})
chartCountData.value = data
let resData = data.contractPer
chartData.value.series[0].data = resData > 100 ? 1 : resData / 100
opts.value.subtitle.name = resData + "%"
} }
}
)
const isContract = ref(true) const changeChart = () => {
const chartCountData = ref({}) let resData = isContract.value ? chartCountData.value.contractPer : chartCountData.value.receivablesPer
chartData.value.series[0].data = resData > 100 ? 1 : resData / 100
opts.value.subtitle.name = resData + "%"
}
onShow(()=>{ const getData = async () => {
getData() let data = await indexCount()
getChart() let brieCount = data.brieCountVO
}) toolIcons3.value[0].count = brieCount.count01
toolIcons3.value[1].count = brieCount.count02
toolIcons3.value[2].count = brieCount.count03
toolIcons3.value[3].count = brieCount.count04
toolIcons3.value[4].count = brieCount.count05
toolIcons3.value[5].count = brieCount.count06
toolIcons3.value[6].count = brieCount.count07
toolIcons3.value[7].count = brieCount.count08
toolIcons3.value[8].count = brieCount.count09
toolIcons3.value[9].count = brieCount.count10
toolIcons3.value[10].count = brieCount.count11
toolIcons3.value[11].count = brieCount.count12
main.SET_INDEX_COUNT(data)
let count = brieCount.count13 + data.contractCheckCount + data.invoiceCheckCount + data.receivablesCheckCount +
data.followBusinessCount + data.followCluesCount + data.followCustomerCount
//let str = count > 0 ? count + '' : ''
if (count > 0) {
uni.setTabBarBadge({
index: 2,
text: count + ''
})
}
const getChart = async() => {
let data = await indexChartCount({type:2,year:2024,month:0})
chartCountData.value = data
let resData = data.contractPer
chartData.value.series[0].data = resData > 100 ? 1 : resData/100
opts.value.subtitle.name = resData+"%"
}
const changeChart = () => { }
let resData = isContract.value ? chartCountData.value.contractPer : chartCountData.value.receivablesPer
chartData.value.series[0].data = resData > 100 ? 1 : resData/100
opts.value.subtitle.name = resData+"%"
}
const getData = async() => {
let data = await indexCount() const onSearch = () => {
let brieCount= data.brieCountVO gopage2('/pages/customer/index')
toolIcons3.value[0].count = brieCount.count01 }
toolIcons3.value[1].count = brieCount.count02
toolIcons3.value[2].count = brieCount.count03 const gopage = (url) => {
toolIcons3.value[3].count = brieCount.count04 uni.navigateTo({
toolIcons3.value[4].count = brieCount.count05 url
toolIcons3.value[5].count = brieCount.count06
toolIcons3.value[6].count = brieCount.count07
toolIcons3.value[7].count = brieCount.count08
toolIcons3.value[8].count = brieCount.count09
toolIcons3.value[9].count = brieCount.count10
toolIcons3.value[10].count = brieCount.count11
toolIcons3.value[11].count = brieCount.count12
main.SET_INDEX_COUNT(data)
let count = brieCount.count13+data.contractCheckCount + data.invoiceCheckCount + data.receivablesCheckCount + data.followBusinessCount + data.followCluesCount + data.followCustomerCount
//let str = count > 0 ? count + '' : ''
if(count > 0){
uni.setTabBarBadge({
index: 2,
text: count + ''
}) })
} }
const gopage2 = (url) => {
uni.switchTab({
url
})
} }
const onSearch = () => {
gopage2('/pages/customer/index')
}
const gopage = (url) => {
uni.navigateTo({
url
})
}
const gopage2 = (url) =>{
uni.switchTab({
url
})
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.container { .container {
background-color: #F7F7F7 !important; background-color: #F7F7F7 !important;
padding-bottom: 50px; padding-bottom: 50px;
min-height: 100vh; min-height: 100vh;
} }
.top { .top {
height: 110rpx; height: 110rpx;
/* #ifdef H5 */ /* #ifdef H5 */
height: 360rpx; height: 360rpx;
/* #endif */ /* #endif */
color: #fff; color: #fff;
} }
.notice { .notice {
margin: -56px 8px 10px 8px; margin: -50px 8px 10px 8px;
left: 0; left: 0;
right: 0; right: 0;
background-color: #fff; background-color: #fff;
border-radius: 10px; border-radius: 10px;
padding: 15px 0px; padding: 15px 0px;
.title {
padding: 20rpx;
font-size: 30rpx;
font-weight: 500;
justify-content: space-between;
}
}
.region {
background-color: #fff;
border-radius: 12px;
margin: 0 10px;
padding: 8px 5px;
.title {
padding: 28rpx 20rpx;
font-size: 30rpx;
font-weight: 500;
justify-content: space-between;
}
.plus {
background-color: #FFF0ED;
border-radius: 10rpx;
padding: 15rpx;
}
.nape {
width: 48%;
border-radius: 8px;
background-color: #FBFBFB;
padding: 30rpx 20rpx 30rpx 35rpx;
margin-bottom: 15rpx;
&:nth-child(2n+1){
margin-right: 4%;
}
}
}
.item-padding {
padding: 45rpx 0;
}
.gray {
color: #BFBFBF;
}
.slot-wrap {
display: flex;
align-items: center;
padding: 0 30rpx;
flex:1
}
.statusBar {
position: relative;
}
.arrow-icon {
position: absolute;
bottom: 16px;
left: 10px;
}
.charts-box{ .title {
.charts { padding: 20rpx;
width: 100%;
height:300px;
}
.introduce {
justify-content: space-between;
padding: 45rpx 12px;
.text {
font-size: 30rpx; font-size: 30rpx;
font-weight: 500; font-weight: 500;
justify-content: space-between;
} }
.screen { }
.region {
background-color: #fff;
border-radius: 12px;
margin: 0 10px;
padding: 8px 5px;
.title {
padding: 28rpx 20rpx;
font-size: 30rpx; font-size: 30rpx;
font-weight: 500; font-weight: 500;
background-color: #fff; justify-content: space-between;
padding: 10rpx 32rpx; }
border-radius: 60rpx;
.plus {
background-color: #FFF0ED;
border-radius: 10rpx;
padding: 15rpx;
}
.nape {
width: 48%;
border-radius: 8px;
background-color: #FBFBFB;
padding: 30rpx 20rpx 30rpx 35rpx;
margin-bottom: 15rpx;
&:nth-child(2n+1) {
margin-right: 4%;
}
} }
} }
.target {
margin-top: -60rpx; .item-padding {
justify-content: space-around; padding: 45rpx 0;
.text { }
background-color: #D7D7D7;
font-size: 25rpx; .gray {
padding: 10rpx 20rpx; color: #BFBFBF;
border-radius: 20rpx; }
.slot-wrap {
display: flex;
align-items: center;
padding: 0 30rpx;
flex: 1
}
.statusBar {
position: relative;
}
.arrow-icon {
position: absolute;
bottom: 16px;
left: 10px;
}
.charts-box {
.charts {
width: 100%;
height: 300px;
}
.introduce {
justify-content: space-between;
padding: 45rpx 12px;
.text {
font-size: 30rpx;
font-weight: 500;
}
.screen {
font-size: 30rpx;
font-weight: 500;
background-color: #fff;
padding: 10rpx 32rpx;
border-radius: 60rpx;
}
}
.target {
margin-top: -60rpx;
justify-content: space-around;
.text {
background-color: #D7D7D7;
font-size: 25rpx;
padding: 10rpx 20rpx;
border-radius: 20rpx;
}
} }
} }
}
</style> </style>