commit ae7a79d670eabea921f20ad622e95692dab4a97e
Author: zhuxiaojiong <645680426@qq.com>
Date: Sat Jun 28 10:15:55 2025 +0800
'init'
diff --git a/.env b/.env
new file mode 100644
index 0000000..b5c472a
--- /dev/null
+++ b/.env
@@ -0,0 +1,3 @@
+NODE_ENV=production
+VUE_APP_PREVIEW=false
+VUE_APP_API_BASE_URL=/api
\ No newline at end of file
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..dd1700e
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,4 @@
+NODE_ENV=development
+VUE_APP_PREVIEW=true
+VUE_APP_API_BASE_URL=/api
+GIT_TEST_DEBUG_UNSAFE_DIRECTORIES=true
\ No newline at end of file
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..a9e44c8
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,3 @@
+NODE_ENV=production
+VUE_APP_PREVIEW=true
+VUE_APP_API_BASE_URL=/api
\ No newline at end of file
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..a801add
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,11 @@
+public/* linguist-vendored
+
+# Automatically normalize line endings (to LF) for all text-based files.
+* text=auto eol=lf
+
+# Declare files that will always have CRLF line endings on checkout.
+*.{cmd,[cC][mM][dD]} text eol=crlf
+*.{bat,[bB][aA][tT]} text eol=crlf
+
+# Denote all files that are truly binary and should not be modified.
+*.{ico,png,jpg,jpeg,gif,webp,svg,woff,woff2} binary
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1f8602b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,22 @@
+.DS_Store
+node_modules
+/dist
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw*
+package-lock.json
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..3ebc1f5
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,6 @@
+FROM nginx
+
+RUN rm /etc/nginx/conf.d/default.conf
+
+ADD deploy/nginx.conf /etc/nginx/conf.d/default.conf
+COPY dist/ /usr/share/nginx/html/
diff --git a/Dockerfile_Test b/Dockerfile_Test
new file mode 100644
index 0000000..730b2f9
--- /dev/null
+++ b/Dockerfile_Test
@@ -0,0 +1,6 @@
+FROM nginx
+
+RUN rm /etc/nginx/conf.d/default.conf
+
+ADD deploy/nginx_test.conf /etc/nginx/conf.d/default.conf
+COPY dist/ /usr/share/nginx/html/
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7a1c2a3
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+ 企微侧边栏
\ No newline at end of file
diff --git a/deploy/caddy.conf b/deploy/caddy.conf
new file mode 100644
index 0000000..acd5c0e
--- /dev/null
+++ b/deploy/caddy.conf
@@ -0,0 +1,9 @@
+0.0.0.0:80 {
+ gzip
+ root /usr/share/nginx/html
+
+ rewrite {
+ r .*
+ to {path} /
+ }
+}
\ No newline at end of file
diff --git a/deploy/nginx.conf b/deploy/nginx.conf
new file mode 100644
index 0000000..ca1cd10
--- /dev/null
+++ b/deploy/nginx.conf
@@ -0,0 +1,39 @@
+server {
+ listen 80;
+ server_name _;
+ # gzip config
+ gzip on;
+ gzip_min_length 1k;
+ gzip_comp_level 6;
+ gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
+ gzip_vary on;
+ gzip_disable "MSIE [1-6]\.";
+
+ root /usr/share/nginx/html/dist;
+ include /etc/nginx/mime.types;
+
+ index index.html index.htm;
+ try_files $uri $uri/ @router;
+ location @router {
+ rewrite ^.*$ /index.html last;
+ }
+# location /api {
+# proxy_pass https://preview.pro.antdv.com/api;
+# proxy_set_header X-Forwarded-Proto $scheme;
+# proxy_set_header X-Real-IP $remote_addr;
+# }
+ location /api/live {
+ proxy_pass http://120.77.165.155:8100;
+ }
+ location /api/Complaint {
+ proxy_pass http://120.77.165.155:8095;
+ }
+ location /api/Wework {
+ proxy_pass http://cmsext.soft.dn8188.com;
+ }
+ location /api {
+ proxy_pass http://120.77.165.155:8089;
+ }
+
+}
+
diff --git a/deploy/nginx_test.conf b/deploy/nginx_test.conf
new file mode 100644
index 0000000..2bbe05e
--- /dev/null
+++ b/deploy/nginx_test.conf
@@ -0,0 +1,36 @@
+server {
+ listen 80;
+ server_name _;
+ # gzip config
+ gzip on;
+ gzip_min_length 1k;
+ gzip_comp_level 6;
+ gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
+ gzip_vary on;
+ gzip_disable "MSIE [1-6]\.";
+
+ root /usr/share/nginx/html/dist;
+ include /etc/nginx/mime.types;
+
+ index index.html index.htm;
+ try_files $uri $uri/ @router;
+ location @router {
+ rewrite ^.*$ /index.html last;
+ }
+
+# location /api {
+# proxy_pass https://preview.pro.antdv.com/api;
+# proxy_set_header X-Forwarded-Proto $scheme;
+# proxy_set_header X-Real-IP $remote_addr;
+# }
+ location /api/live {
+ proxy_pass http://120.77.165.155:8100;
+ }
+ location /api/Complaint {
+ proxy_pass http://192.168.11.81:8095;
+ }
+ location /api {
+ proxy_pass http://192.168.11.81:8089;
+ }
+}
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..a0a9ff1
--- /dev/null
+++ b/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ 重要线索
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..b3a32b0
--- /dev/null
+++ b/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "vite",
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build"
+ },
+ "dependencies": {
+ "axios": "^1.4.0",
+ "jweixin-1.6.0": "^1.0.0",
+ "jwxwork": "^0.1.12",
+ "store": "^2.0.12",
+ "vant": "^4.0.0",
+ "vue": "^3.2.45",
+ "vue-router": "^4.0.13",
+ "vuex": "^4.1.0",
+ "weixin-js-sdk": "^1.6.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^3.2.0",
+ "less": "^4.2.0",
+ "unplugin-vue-components": "^0.22.11",
+ "vite": "^4.4.7"
+ }
+}
diff --git a/public/WW_verify_0IfsovoUayKyAZbU.txt b/public/WW_verify_0IfsovoUayKyAZbU.txt
new file mode 100644
index 0000000..aa6200d
--- /dev/null
+++ b/public/WW_verify_0IfsovoUayKyAZbU.txt
@@ -0,0 +1 @@
+0IfsovoUayKyAZbU
\ No newline at end of file
diff --git a/public/WW_verify_QvdKsO1xv8R5wTeJ.txt b/public/WW_verify_QvdKsO1xv8R5wTeJ.txt
new file mode 100644
index 0000000..c38d095
--- /dev/null
+++ b/public/WW_verify_QvdKsO1xv8R5wTeJ.txt
@@ -0,0 +1 @@
+QvdKsO1xv8R5wTeJ
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..63e1251
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/api/complaint.js b/src/api/complaint.js
new file mode 100644
index 0000000..11a486c
--- /dev/null
+++ b/src/api/complaint.js
@@ -0,0 +1,22 @@
+import request from '@/utils/request'
+
+const api = {
+ DetailByAppid: '/api/Complaint/DetailByAppid',
+ Status: '/api/Complaint/Status',
+}
+
+export function detailByAppid (parameter) {
+ return request({
+ url: api.DetailByAppid,
+ method: 'get',
+ params: parameter
+ })
+}
+
+export function changeStatus (data) {
+ return request({
+ url: api.Status,
+ method: 'post',
+ data: data
+ })
+}
diff --git a/src/api/importanceItem.js b/src/api/importanceItem.js
new file mode 100644
index 0000000..e94f5d7
--- /dev/null
+++ b/src/api/importanceItem.js
@@ -0,0 +1,22 @@
+import request from '@/utils/request'
+
+const api = {
+ List: '/api/ImportanceItem/list',
+ Statistics: '/api/ImportanceItem/statistics'
+}
+
+export function list (parameter) {
+ return request({
+ url: api.List,
+ method: 'get',
+ params: parameter
+ })
+}
+
+export function statistics (parameter) {
+ return request({
+ url: api.Statistics,
+ method: 'get',
+ params: parameter
+ })
+}
\ No newline at end of file
diff --git a/src/api/live.js b/src/api/live.js
new file mode 100644
index 0000000..beecdba
--- /dev/null
+++ b/src/api/live.js
@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+const api = {
+ Details: '/api/live/Details',
+ Schedules: '/api/live/Schedules',
+ Rooms: '/api/live/Rooms',
+}
+
+export function getRooms () {
+ return request({
+ url: api.Rooms,
+ method: 'get',
+ })
+}
+
+export function getSchedules () {
+ return request({
+ url: api.Schedules,
+ method: 'get',
+ })
+}
+
+export function getDetails (parameter) {
+ return request({
+ url: api.Details,
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/src/api/wxwork.js b/src/api/wxwork.js
new file mode 100644
index 0000000..61771c3
--- /dev/null
+++ b/src/api/wxwork.js
@@ -0,0 +1,13 @@
+import request from '@/utils/request'
+
+const api = {
+ AgentConfig: '/api/Wework/AgentConfig',
+}
+
+export function getAgentConfig (parameter) {
+ return request({
+ url: api.AgentConfig,
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/src/assets/images/cr.png b/src/assets/images/cr.png
new file mode 100644
index 0000000..fbaf2ba
Binary files /dev/null and b/src/assets/images/cr.png differ
diff --git a/src/assets/images/cr2.png b/src/assets/images/cr2.png
new file mode 100644
index 0000000..b43f0b8
Binary files /dev/null and b/src/assets/images/cr2.png differ
diff --git a/src/assets/style/common.less b/src/assets/style/common.less
new file mode 100644
index 0000000..c5d1f54
--- /dev/null
+++ b/src/assets/style/common.less
@@ -0,0 +1,229 @@
+html {
+ font-size: 14px;
+}
+
+@media (min-width: 768px) {
+ html {
+ font-size: 16px;
+ }
+}
+
+html {
+ position: relative;
+ height: 100vh;
+}
+
+body {
+ margin-bottom: 60px;
+ width: 100%;
+ max-width: 750px;
+ margin: 0 auto;
+}
+#app {
+ position: relative;
+ height: calc(var(--vh) * 100);
+ font-size: 0;
+}
+[v-cloak] {
+ display: none
+}
+
+:root {
+ --vh: 1vh;
+}
+
+.hide {
+ display: none !important;
+}
+
+p {
+ margin: 0;
+ padding: 0;
+}
+.head {
+ display: flex;
+ align-items: center;
+ height: 1.28rem;
+ padding: 0 .3rem;
+ box-sizing: border-box;
+ background: #F8F8F8;
+}
+
+.head span:first-child {
+ color: #999;
+ font-size: .32rem;
+ font-weight: 500;
+ margin-right: .7rem;
+}
+
+.head span:last-child {
+ color: #333;
+ font-size: .36rem;
+ font-weight: 500;
+}
+
+.tabs {
+ display: flex;
+ align-items: center;
+ height: 1.18rem;
+ padding: 0 .38rem;
+ font-size: .36rem;
+ color: #999;
+ font-weight: 500;
+}
+
+.tab {
+ display: inline-block;
+ height: .66rem;
+ cursor: pointer;
+}
+
+.tab:first-child {
+ margin-right: .3rem;
+}
+
+.active {
+ position: relative;
+ color: #333;
+}
+
+.active::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ transform: translateX(-50%);
+ display: inline-block;
+ width: .7rem;
+ height: .08rem;
+ background: #1890FF;
+ border-radius: 4px;
+}
+.amount {
+ font-weight: 400;
+ color: #EC2F37;
+}
+
+.details {
+ display: inline-block;
+ margin-bottom: 10px;
+}
+
+.details > p {
+ flex: 1;
+ font-size: .28rem;
+ color: #EC2F37;
+}
+
+.content {
+ margin: .2rem .38rem 0;
+ font-weight: 500;
+}
+
+.item-title {
+ margin-bottom: 10px;
+}
+
+.item-title > span {
+ font-size: 0.28rem;
+ margin-right: .2rem;
+}
+
+.title-time {
+ display: inline-block;
+ font-size: 0.32rem;
+ margin-right: .2rem;
+}
+
+.item-head {
+ margin-bottom: .1rem;
+ display: flex;
+}
+.item-head > span > img {
+ width: 0.28rem;
+}
+.item-head > span {
+ margin: 0.2rem;
+ font-size: .28rem;
+ color: #EC2F37;
+}
+
+.item-head > .time {
+ display: inline-block;
+ font-size: .28rem;
+ color: #EC2F37;
+ margin: auto 0;
+ font-weight: bold;
+}
+.item-head > .contentIcon {
+ display: flex;
+ margin: auto 0.2rem auto 0.05rem;
+ font-weight: bold;
+}
+.info-box {
+ position: relative;
+ padding: 0 0 .1rem .4rem;
+ margin-bottom: .4rem;
+}
+
+.info-box::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: .18rem;
+ display: inline-block;
+ width: .01rem;
+ height: 100%;
+ background-color: #d9d6d6;
+}
+.remarks {
+ font-size: .20rem;
+ color: #333;
+ text-align: justify;
+ word-break: break-all;
+}
+.remarks > p {
+ margin-top: 5px;
+}
+.sign-way {
+ font-size: .16rem;
+ color: #999;
+ margin-top: 5px;
+ font-weight: normal;
+}
+.keyword {
+ color: #ff0000 !important;
+ text-decoration: underline
+}
+.tag {
+ margin-right: 10px;
+ margin-top: 7px;
+ background-color: #f4f7ff;
+ color: #999 !important;
+ border: aliceblue;
+ cursor: pointer !important;
+}
+.tag-click {
+ margin-right: 10px;
+ margin-top: 7px;
+ background-color: #1890FF !important;
+ color: white !important;
+ border: aliceblue;
+ cursor: pointer !important;
+}
+.wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+}
+
+.block {
+ width: 120px;
+ height: 120px;
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #fff;
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..c8b6740
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,6 @@
+import { createApp } from 'vue';
+import App from './App.vue';
+import router from './router/index'
+import { Toast } from 'vant';
+
+createApp(App).use(router).use(Toast).mount('#app');
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..5582cc7
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,44 @@
+
+import {createRouter, createWebHistory} from 'vue-router'
+
+const routes = [
+ {
+ path: '/',
+ name: 'Home',
+ component: () => import('@/views/Index.vue'),
+ meta: {
+ title: '重要线索'
+ }
+ },
+ {
+ path: '/customer/risk',
+ name: 'Risk',
+ component: () => import('@/views/customer/risk.vue'),
+ meta: {
+ title: '潜在风险'
+ }
+ },
+ {
+ path: '/wx/openchat',
+ name: 'openchat',
+ component: () => import('@/views/wx/openchat.vue'),
+ meta: {
+ title: '打开聊天'
+ }
+ },
+ {
+ path: '/customer/liveStreamsDetail',
+ name: 'liveStreamsDetail',
+ component: () => import('@/views/customer/liveStreamsDetail.vue'),
+ meta: {
+ title: '直播间互动详情'
+ }
+ },
+]
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes
+})
+
+export default router
\ No newline at end of file
diff --git a/src/store/app-mixin.js b/src/store/app-mixin.js
new file mode 100644
index 0000000..c910ae9
--- /dev/null
+++ b/src/store/app-mixin.js
@@ -0,0 +1,32 @@
+import { mapState } from 'vuex'
+
+const baseMixin = {
+ computed: {
+ ...mapState({
+ layout: state => state.app.layout,
+ navTheme: state => state.app.theme,
+ primaryColor: state => state.app.color,
+ colorWeak: state => state.app.weak,
+ fixedHeader: state => state.app.fixedHeader,
+ fixedSidebar: state => state.app.fixedSidebar,
+ contentWidth: state => state.app.contentWidth,
+ autoHideHeader: state => state.app.autoHideHeader,
+
+ isMobile: state => state.app.isMobile,
+ sideCollapsed: state => state.app.sideCollapsed,
+ multiTab: state => state.app.multiTab
+ }),
+ isTopMenu () {
+ return this.layout === 'topmenu'
+ }
+ },
+ methods: {
+ isSideMenu () {
+ return !this.isTopMenu
+ }
+ }
+}
+
+export {
+ baseMixin
+}
diff --git a/src/store/device-mixin.js b/src/store/device-mixin.js
new file mode 100644
index 0000000..2510707
--- /dev/null
+++ b/src/store/device-mixin.js
@@ -0,0 +1,11 @@
+import { mapState } from 'vuex'
+
+const deviceMixin = {
+ computed: {
+ ...mapState({
+ isMobile: state => state.app.isMobile
+ })
+ }
+}
+
+export { deviceMixin }
diff --git a/src/store/getters.js b/src/store/getters.js
new file mode 100644
index 0000000..5a5ad70
--- /dev/null
+++ b/src/store/getters.js
@@ -0,0 +1,16 @@
+const getters = {
+ isMobile: state => state.app.isMobile,
+ lang: state => state.app.lang,
+ theme: state => state.app.theme,
+ color: state => state.app.color,
+ token: state => state.user.token,
+ avatar: state => state.user.avatar,
+ nickname: state => state.user.name,
+ welcome: state => state.user.welcome,
+ roles: state => state.user.roles,
+ userInfo: state => state.user.info,
+ addRouters: state => state.permission.addRouters,
+ multiTab: state => state.app.multiTab
+}
+
+export default getters
diff --git a/src/store/i18n-mixin.js b/src/store/i18n-mixin.js
new file mode 100644
index 0000000..715b0c8
--- /dev/null
+++ b/src/store/i18n-mixin.js
@@ -0,0 +1,16 @@
+import { mapState } from 'vuex'
+
+const i18nMixin = {
+ computed: {
+ ...mapState({
+ currentLang: state => state.app.lang
+ })
+ },
+ methods: {
+ setLang (lang) {
+ this.$store.dispatch('setLang', lang)
+ }
+ }
+}
+
+export default i18nMixin
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..adb8c8a
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,26 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+//import app from './modules/app'
+//import user from './modules/user'
+
+// default router permission control
+// 默认路由模式为静态路由 (router.config.js)
+// import permission from './modules/static-router'
+
+// dynamic router permission control (Experimental)
+// 动态路由模式(api请求后端生成)
+// import permission from './modules/async-router'
+
+import getters from './getters'
+
+Vue.use(Vuex)
+
+export default new Vuex.Store({
+ modules: {
+ },
+ state: {},
+ mutations: {},
+ actions: {},
+ getters
+})
diff --git a/src/store/modules/app.js b/src/store/modules/app.js
new file mode 100644
index 0000000..a3ec761
--- /dev/null
+++ b/src/store/modules/app.js
@@ -0,0 +1,99 @@
+import storage from 'store'
+import {
+ SIDEBAR_TYPE,
+ TOGGLE_MOBILE_TYPE,
+ TOGGLE_NAV_THEME,
+ TOGGLE_LAYOUT,
+ TOGGLE_FIXED_HEADER,
+ TOGGLE_FIXED_SIDEBAR,
+ TOGGLE_CONTENT_WIDTH,
+ TOGGLE_HIDE_HEADER,
+ TOGGLE_COLOR,
+ TOGGLE_WEAK,
+ TOGGLE_MULTI_TAB,
+ // i18n
+ APP_LANGUAGE
+} from '@/store/mutation-types'
+import { loadLanguageAsync } from '@/locales'
+
+const app = {
+ state: {
+ sideCollapsed: false,
+ isMobile: false,
+ theme: 'dark',
+ layout: '',
+ contentWidth: '',
+ fixedHeader: false,
+ fixedSidebar: false,
+ autoHideHeader: false,
+ color: '',
+ weak: false,
+ multiTab: true,
+ lang: 'zh-CN',
+ _antLocale: {}
+ },
+ mutations: {
+ [SIDEBAR_TYPE]: (state, type) => {
+ state.sideCollapsed = type
+ storage.set(SIDEBAR_TYPE, type)
+ },
+ [TOGGLE_MOBILE_TYPE]: (state, isMobile) => {
+ state.isMobile = isMobile
+ },
+ [TOGGLE_NAV_THEME]: (state, theme) => {
+ state.theme = theme
+ storage.set(TOGGLE_NAV_THEME, theme)
+ },
+ [TOGGLE_LAYOUT]: (state, mode) => {
+ state.layout = mode
+ storage.set(TOGGLE_LAYOUT, mode)
+ },
+ [TOGGLE_FIXED_HEADER]: (state, mode) => {
+ state.fixedHeader = mode
+ storage.set(TOGGLE_FIXED_HEADER, mode)
+ },
+ [TOGGLE_FIXED_SIDEBAR]: (state, mode) => {
+ state.fixedSidebar = mode
+ storage.set(TOGGLE_FIXED_SIDEBAR, mode)
+ },
+ [TOGGLE_CONTENT_WIDTH]: (state, type) => {
+ state.contentWidth = type
+ storage.set(TOGGLE_CONTENT_WIDTH, type)
+ },
+ [TOGGLE_HIDE_HEADER]: (state, type) => {
+ state.autoHideHeader = type
+ storage.set(TOGGLE_HIDE_HEADER, type)
+ },
+ [TOGGLE_COLOR]: (state, color) => {
+ state.color = color
+ storage.set(TOGGLE_COLOR, color)
+ },
+ [TOGGLE_WEAK]: (state, mode) => {
+ state.weak = mode
+ storage.set(TOGGLE_WEAK, mode)
+ },
+ [APP_LANGUAGE]: (state, lang, antd = {}) => {
+ state.lang = lang
+ state._antLocale = antd
+ storage.set(APP_LANGUAGE, lang)
+ },
+ [TOGGLE_MULTI_TAB]: (state, bool) => {
+ storage.set(TOGGLE_MULTI_TAB, bool)
+ state.multiTab = bool
+ }
+ },
+ actions: {
+ setLang ({ commit }, lang) {
+ return new Promise((resolve, reject) => {
+ commit(APP_LANGUAGE, lang)
+ loadLanguageAsync(lang).then(() => {
+ resolve()
+ }).catch((e) => {
+ reject(e)
+ })
+ })
+ }
+ }
+}
+
+export default app
diff --git a/src/store/modules/async-router.js b/src/store/modules/async-router.js
new file mode 100644
index 0000000..bd9e38f
--- /dev/null
+++ b/src/store/modules/async-router.js
@@ -0,0 +1,33 @@
+/**
+ * 向后端请求用户的菜单,动态生成路由
+ */
+import { constantRouterMap } from '@/config/router.config'
+import { generatorDynamicRouter } from '@/router/generator-routers'
+
+const permission = {
+ state: {
+ routers: constantRouterMap,
+ addRouters: []
+ },
+ mutations: {
+ SET_ROUTERS: (state, routers) => {
+ state.addRouters = routers
+ state.routers = constantRouterMap.concat(routers)
+ }
+ },
+ actions: {
+ GenerateRoutes ({ commit }, data) {
+ return new Promise((resolve, reject) => {
+ const { token } = data
+ generatorDynamicRouter(token).then(routers => {
+ commit('SET_ROUTERS', routers)
+ resolve()
+ }).catch(e => {
+ reject(e)
+ })
+ })
+ }
+ }
+}
+
+export default permission
diff --git a/src/store/modules/static-router.js b/src/store/modules/static-router.js
new file mode 100644
index 0000000..924a879
--- /dev/null
+++ b/src/store/modules/static-router.js
@@ -0,0 +1,84 @@
+import { asyncRouterMap, constantRouterMap } from '@/config/router.config'
+import cloneDeep from 'lodash.clonedeep'
+
+/**
+ * 过滤账户是否拥有某一个权限,并将菜单从加载列表移除
+ *
+ * @param permission
+ * @param route
+ * @returns {boolean}
+ */
+function hasPermission (permission, route) {
+ if (route.meta && route.meta.permission) {
+ if (permission === undefined) {
+ return false
+ }
+ for (let i = 0, len = permission.length; i < len; i++) {
+ for (let j = 0, len2 = route.meta.permission.length; j < len2; j++) {
+ var p = permission[i]
+ var p2 = route.meta.permission[j]
+ if (p.toLowerCase() === p2.toLowerCase()) {
+ return true
+ }
+ }
+ }
+ return false
+ }
+ return true
+}
+
+/**
+ * 单账户多角色时,使用该方法可过滤角色不存在的菜单
+ *
+ * @param roles
+ * @param route
+ * @returns {*}
+ */
+// eslint-disable-next-line
+function hasRole(roles, route) {
+ if (route.meta && route.meta.roles) {
+ return route.meta.roles.includes(roles.id)
+ } else {
+ return true
+ }
+}
+
+function filterAsyncRouter (routerMap, role) {
+ const accessedRouters = routerMap.filter(route => {
+ var yes = hasPermission(role.permissionList, route)
+ if (yes) {
+ if (route.children && route.children.length) {
+ route.children = filterAsyncRouter(route.children, role)
+ }
+ return true
+ }
+ return false
+ })
+ return accessedRouters
+}
+
+const permission = {
+ state: {
+ routers: constantRouterMap,
+ addRouters: []
+ },
+ mutations: {
+ SET_ROUTERS: (state, routers) => {
+ state.addRouters = routers
+ state.routers = constantRouterMap.concat(routers)
+ }
+ },
+ actions: {
+ GenerateRoutes ({ commit }, data) {
+ return new Promise(resolve => {
+ const { role } = data
+ const routerMap = cloneDeep(asyncRouterMap)
+ const accessedRouters = filterAsyncRouter(routerMap, role)
+ commit('SET_ROUTERS', accessedRouters)
+ resolve()
+ })
+ }
+ }
+}
+
+export default permission
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 0000000..e58604b
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,106 @@
+import storage from 'store'
+import expirePlugin from 'store/plugins/expire'
+import { login, getInfo, logout } from '@/api/login'
+import { ACCESS_TOKEN } from '@/store/mutation-types'
+import { welcome } from '@/utils/util'
+
+storage.addPlugin(expirePlugin)
+const user = {
+ state: {
+ token: '',
+ name: '',
+ welcome: '',
+ avatar: '',
+ roles: [],
+ info: {}
+ },
+
+ mutations: {
+ SET_TOKEN: (state, token) => {
+ state.token = token
+ },
+ SET_NAME: (state, { name, welcome }) => {
+ state.name = name
+ state.welcome = welcome
+ },
+ SET_AVATAR: (state, avatar) => {
+ state.avatar = avatar
+ },
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ },
+ SET_INFO: (state, info) => {
+ state.info = info
+ }
+ },
+
+ actions: {
+ // 登录
+ Login ({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ login(userInfo).then(response => {
+ if (response.data) {
+ storage.set(ACCESS_TOKEN, response.data, new Date().getTime() + 7 * 24 * 60 * 60 * 1000)
+ commit('SET_TOKEN', response.data)
+ }
+ resolve(response)
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+
+ // 获取用户信息
+ GetInfo ({ commit }) {
+ return new Promise((resolve, reject) => {
+ // 请求后端获取用户信息 /api/user/info
+ getInfo().then(response => {
+ const result = response
+ if (result.data && result.data.Permissions.length > 0) {
+ var parts = result.data.Permissions.split(',')
+ for (var i = parts.length - 1; i >= 0; i--) {
+ if (parts[i].length === 0) {
+ parts.slice(i, 1)
+ }
+ }
+ const role = { }
+ role.permissions = parts
+ role.permissionList = parts
+ // 覆盖响应体的 role, 供下游使用
+ result.role = role
+
+ commit('SET_ROLES', role)
+ commit('SET_INFO', result)
+ commit('SET_NAME', { name: result.name, welcome: welcome() })
+ commit('SET_AVATAR', result.avatar)
+ // 下游
+ resolve(result)
+ } else {
+ reject(new Error('getInfo: roles must be a non-null array !'))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+
+ // 登出
+ Logout ({ commit, state }) {
+ return new Promise((resolve) => {
+ logout(state.token).then(() => {
+ commit('SET_TOKEN', '')
+ commit('SET_ROLES', [])
+ storage.remove(ACCESS_TOKEN)
+ resolve()
+ }).catch((err) => {
+ console.log('logout fail:', err)
+ // resolve()
+ }).finally(() => {
+ })
+ })
+ }
+
+ }
+}
+
+export default user
diff --git a/src/store/mutation-types.js b/src/store/mutation-types.js
new file mode 100644
index 0000000..b2bf731
--- /dev/null
+++ b/src/store/mutation-types.js
@@ -0,0 +1,24 @@
+export const ACCESS_TOKEN = '__admin_token__'
+
+export const SIDEBAR_TYPE = 'sidebar_type'
+export const TOGGLE_MOBILE_TYPE = 'is_mobile'
+export const TOGGLE_NAV_THEME = 'nav_theme'
+export const TOGGLE_LAYOUT = 'layout'
+export const TOGGLE_FIXED_HEADER = 'fixed_header'
+export const TOGGLE_FIXED_SIDEBAR = 'fixed_sidebar'
+export const TOGGLE_CONTENT_WIDTH = 'content_width'
+export const TOGGLE_HIDE_HEADER = 'auto_hide_header'
+export const TOGGLE_COLOR = 'color'
+export const TOGGLE_WEAK = 'weak'
+export const TOGGLE_MULTI_TAB = 'multi_tab'
+export const APP_LANGUAGE = 'app_language'
+
+export const CONTENT_WIDTH_TYPE = {
+ Fluid: 'Fluid',
+ Fixed: 'Fixed'
+}
+
+export const NAV_THEME = {
+ LIGHT: 'light',
+ DARK: 'dark'
+}
diff --git a/src/utils/axios.js b/src/utils/axios.js
new file mode 100644
index 0000000..3b91f6b
--- /dev/null
+++ b/src/utils/axios.js
@@ -0,0 +1,35 @@
+const VueAxios = {
+ vm: {},
+ // eslint-disable-next-line no-unused-vars
+ install (Vue, instance) {
+ if (this.installed) {
+ return
+ }
+ this.installed = true
+
+ if (!instance) {
+ // eslint-disable-next-line no-console
+ console.error('You have to install axios')
+ return
+ }
+
+ Vue.axios = instance
+
+ Object.defineProperties(Vue.prototype, {
+ axios: {
+ get: function get () {
+ return instance
+ }
+ },
+ $http: {
+ get: function get () {
+ return instance
+ }
+ }
+ })
+ }
+}
+
+export {
+ VueAxios
+}
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..8112ee3
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,64 @@
+import axios from 'axios'
+import storage from 'store'
+import { VueAxios } from './axios'
+import { ACCESS_TOKEN } from '@/store/mutation-types'
+import { Toast } from 'vant';
+
+// 创建 axios 实例
+const request = axios.create({
+ // API 请求的默认前缀
+ baseURL: import.meta.env.VUE_APP_API_BASE_URL,
+ timeout: 60000 // 请求超时时间
+})
+
+// 异常拦截处理器
+const errorHandler = (error) => {
+ console.log(error)
+ if (error.response) {
+ const data = error.response.data
+ // 从 localstorage 获取 token
+ const token = storage.get(ACCESS_TOKEN)
+ if (error.response.status === 403) {
+ Toast.fail(data.message)
+ }
+ if (error.response.status === 401 && !(data.result)) {
+ Toast.fail('Authorization verification failed')
+ if (token) {
+ setTimeout(() => {
+ window.location.reload()
+ }, 1500)
+ }
+ }
+ }
+ return Promise.reject(error)
+}
+
+// request interceptor
+request.interceptors.request.use(config => {
+ const token = storage.get(ACCESS_TOKEN)
+ // 如果 token 存在
+ // 让每个请求携带自定义 token 请根据实际情况自行修改
+ if (token) {
+ config.headers['Authorization'] = token
+ }
+ return config
+}, errorHandler)
+
+// response interceptor
+request.interceptors.response.use((response) => {
+ return response.data
+}, errorHandler)
+
+const installer = {
+ vm: {},
+ install (Vue) {
+ Vue.use(VueAxios, request)
+ }
+}
+
+export default request
+
+export {
+ installer as VueAxios,
+ request as axios
+}
diff --git a/src/utils/util.js b/src/utils/util.js
new file mode 100644
index 0000000..2e6866e
--- /dev/null
+++ b/src/utils/util.js
@@ -0,0 +1,95 @@
+export function timeFix () {
+ const time = new Date()
+ const hour = time.getHours()
+ return hour < 9 ? '早上好' : hour <= 11 ? '上午好' : hour <= 13 ? '中午好' : hour < 20 ? '下午好' : '晚上好'
+}
+
+export function welcome () {
+ const arr = ['休息一会儿吧', '准备吃什么呢?', '要不要打一把 DOTA', '我猜你可能累了']
+ const index = Math.floor(Math.random() * arr.length)
+ return arr[index]
+}
+
+/**
+ * 触发 window.resize
+ */
+export function triggerWindowResizeEvent () {
+ const event = document.createEvent('HTMLEvents')
+ event.initEvent('resize', true, true)
+ event.eventType = 'message'
+ window.dispatchEvent(event)
+}
+
+export function handleScrollHeader (callback) {
+ let timer = 0
+
+ let beforeScrollTop = window.pageYOffset
+ callback = callback || function () {}
+ window.addEventListener(
+ 'scroll',
+ event => {
+ clearTimeout(timer)
+ timer = setTimeout(() => {
+ let direction = 'up'
+ const afterScrollTop = window.pageYOffset
+ const delta = afterScrollTop - beforeScrollTop
+ if (delta === 0) {
+ return false
+ }
+ direction = delta > 0 ? 'down' : 'up'
+ callback(direction)
+ beforeScrollTop = afterScrollTop
+ }, 50)
+ },
+ false
+ )
+}
+
+export function isIE () {
+ const bw = window.navigator.userAgent
+ const compare = (s) => bw.indexOf(s) >= 0
+ const ie11 = (() => 'ActiveXObject' in window)()
+ return compare('MSIE') || ie11
+}
+
+/**
+ * Remove loading animate
+ * @param id parent element id or class
+ * @param timeout
+ */
+export function removeLoadingAnimate (id = '', timeout = 1500) {
+ if (id === '') {
+ return
+ }
+ setTimeout(() => {
+ document.body.removeChild(document.getElementById(id))
+ }, timeout)
+}
+export function scorePassword (pass) {
+ let score = 0
+ if (!pass) {
+ return score
+ }
+ // award every unique letter until 5 repetitions
+ const letters = {}
+ for (let i = 0; i < pass.length; i++) {
+ letters[pass[i]] = (letters[pass[i]] || 0) + 1
+ score += 5.0 / letters[pass[i]]
+ }
+
+ // bonus points for mixing it up
+ const variations = {
+ digits: /\d/.test(pass),
+ lower: /[a-z]/.test(pass),
+ upper: /[A-Z]/.test(pass),
+ nonWords: /\W/.test(pass)
+ }
+
+ let variationCount = 0
+ for (var check in variations) {
+ variationCount += (variations[check] === true) ? 1 : 0
+ }
+ score += (variationCount - 1) * 10
+
+ return parseInt(score)
+}
diff --git a/src/utils/wechatPlugin.js b/src/utils/wechatPlugin.js
new file mode 100644
index 0000000..415e092
--- /dev/null
+++ b/src/utils/wechatPlugin.js
@@ -0,0 +1,11 @@
+import wx from 'weixin-js-sdk'
+
+const plugin = {
+ install(Vue) {
+ Vue.wechat = wx
+ },
+ $wechat: wx
+}
+
+export default plugin
+export const install = plugin.install
\ No newline at end of file
diff --git a/src/views/Index.vue b/src/views/Index.vue
new file mode 100644
index 0000000..fd4a04b
--- /dev/null
+++ b/src/views/Index.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ {{ detail.count + '次 ' + detail.eventName }}
+
+
+
+
+
+
+
{{ sidebar.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/customer/liveStreamsDetail.vue b/src/views/customer/liveStreamsDetail.vue
new file mode 100644
index 0000000..41b158a
--- /dev/null
+++ b/src/views/customer/liveStreamsDetail.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.msg }}
+
{{ item.msgtime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/customer/risk.vue b/src/views/customer/risk.vue
new file mode 100644
index 0000000..337945e
--- /dev/null
+++ b/src/views/customer/risk.vue
@@ -0,0 +1,300 @@
+
+
+
+ 页面加载错误!
+
+
+
+
+
+
+
+
+
+
+
状态:{{model.statusStr}}
+
+ 修改
+
+
+
+
+ 暂无记录
+
+
+

+
+ {{ log.signTypeStr }}
+ {{log.sourceStr}}
+ {{ log.ctime }}
+
+
+
+
+
+
+
+
+
+
+ 暂无记录
+
+
+

+
+ {{ follow.title }}
+ {{ follow.ctime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ status.title }}
+
+
+
+
+
0/2000
+
+
+
+
+
+
+
+
+
diff --git a/src/views/wx/openchat.vue b/src/views/wx/openchat.vue
new file mode 100644
index 0000000..afc6954
--- /dev/null
+++ b/src/views/wx/openchat.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..023661f
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,52 @@
+import vue from "@vitejs/plugin-vue";
+import Components from "unplugin-vue-components/vite";
+import { VantResolver } from "unplugin-vue-components/resolvers";
+import { defineConfig } from 'vite'
+
+import path from 'path';
+export default defineConfig({
+ plugins: [
+ vue(),
+ Components({
+ resolvers: [VantResolver()],
+ }),
+ ],
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, "src"),
+ "comps": path.resolve(__dirname, "src/components"),
+ },
+ },
+ server: {
+ proxy: {
+ // 接口地址代理
+ '/api/Wework': {
+ target: 'http://localhost:5015', // 接口的域名
+ secure: false, // 如果是https接口,需要配置这个参数
+ changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
+ rewrite: path => path.replace(/^\/api/, '/api')
+ },
+ // 接口地址代理
+ '/api/Complaint': {
+ target: 'http://192.168.11.81:8095', // 接口的域名
+ secure: false, // 如果是https接口,需要配置这个参数
+ changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
+ rewrite: path => path.replace(/^\/api/, '/api')
+ },
+ // 接口地址代理
+ '/api/live': {
+ target: 'http://120.77.165.155:8100', // 接口的域名
+ secure: false, // 如果是https接口,需要配置这个参数
+ changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
+ rewrite: path => path.replace(/^\/api/, '/api')
+ },
+ // 接口地址代理
+ '/api': {
+ target: 'http://localhost:5244', // 接口的域名
+ secure: false, // 如果是https接口,需要配置这个参数
+ changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
+ rewrite: path => path.replace(/^\/api/, '/api')
+ },
+ }
+ },
+})
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..7c24805
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,870 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@antfu/utils@^0.7.2":
+ version "0.7.5"
+ resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.5.tgz#c36f37add92a7de57b9c29ae0c1f399706bff345"
+ integrity sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==
+
+"@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
+ version "7.22.7"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae"
+ integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==
+
+"@esbuild/android-arm64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz#9e00eb6865ed5f2dbe71a1e96f2c52254cd92903"
+ integrity sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==
+
+"@esbuild/android-arm@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.17.tgz#1aa013b65524f4e9f794946b415b32ae963a4618"
+ integrity sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==
+
+"@esbuild/android-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.17.tgz#c2bd0469b04ded352de011fae34a7a1d4dcecb79"
+ integrity sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==
+
+"@esbuild/darwin-arm64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz#0c21a59cb5bd7a2cec66c7a42431dca42aefeddd"
+ integrity sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==
+
+"@esbuild/darwin-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz#92f8763ff6f97dff1c28a584da7b51b585e87a7b"
+ integrity sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==
+
+"@esbuild/freebsd-arm64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz#934f74bdf4022e143ba2f21d421b50fd0fead8f8"
+ integrity sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==
+
+"@esbuild/freebsd-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz#16b6e90ba26ecc865eab71c56696258ec7f5d8bf"
+ integrity sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==
+
+"@esbuild/linux-arm64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz#179a58e8d4c72116eb068563629349f8f4b48072"
+ integrity sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==
+
+"@esbuild/linux-arm@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz#9d78cf87a310ae9ed985c3915d5126578665c7b5"
+ integrity sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==
+
+"@esbuild/linux-ia32@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz#6fed202602d37361bca376c9d113266a722a908c"
+ integrity sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==
+
+"@esbuild/linux-loong64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz#cdc60304830be1e74560c704bfd72cab8a02fa06"
+ integrity sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==
+
+"@esbuild/linux-mips64el@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz#c367b2855bb0902f5576291a2049812af2088086"
+ integrity sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==
+
+"@esbuild/linux-ppc64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz#7fdc0083d42d64a4651711ee0a7964f489242f45"
+ integrity sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==
+
+"@esbuild/linux-riscv64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz#5198a417f3f5b86b10c95647b8bc032e5b6b2b1c"
+ integrity sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==
+
+"@esbuild/linux-s390x@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz#7459c2fecdee2d582f0697fb76a4041f4ad1dd1e"
+ integrity sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==
+
+"@esbuild/linux-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz#948cdbf46d81c81ebd7225a7633009bc56a4488c"
+ integrity sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==
+
+"@esbuild/netbsd-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz#6bb89668c0e093c5a575ded08e1d308bd7fd63e7"
+ integrity sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==
+
+"@esbuild/openbsd-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz#abac2ae75fef820ef6c2c48da4666d092584c79d"
+ integrity sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==
+
+"@esbuild/sunos-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz#74a45fe1db8ea96898f1a9bb401dcf1dadfc8371"
+ integrity sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==
+
+"@esbuild/win32-arm64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz#fd95ffd217995589058a4ed8ac17ee72a3d7f615"
+ integrity sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==
+
+"@esbuild/win32-ia32@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz#9b7ef5d0df97593a80f946b482e34fcba3fa4aaf"
+ integrity sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==
+
+"@esbuild/win32-x64@0.18.17":
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz#bcb2e042631b3c15792058e189ed879a22b2968b"
+ integrity sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==
+
+"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@rollup/pluginutils@^5.0.2":
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
+ integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^2.0.2"
+ picomatch "^2.3.1"
+
+"@types/estree@^1.0.0":
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
+ integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
+
+"@vant/popperjs@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz#e0eff017124b5b2352ef3b36a6df06277f4400f2"
+ integrity sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==
+
+"@vant/use@^1.5.1":
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/@vant/use/-/use-1.5.2.tgz#d1877f293e6d1a0a8428d3d3f4b587a3f745324d"
+ integrity sha512-CBK61iT568dCHUwFFsErGbW6/5tmrPnZJKGtcSy7Tjcrmws8Ku+YZo7IUFD9Xkj9MfSJ4pfhQ7pU2KouP5Cojg==
+
+"@vitejs/plugin-vue@^3.2.0":
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz#a1484089dd85d6528f435743f84cdd0d215bbb54"
+ integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==
+
+"@vue/compiler-core@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128"
+ integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==
+ dependencies:
+ "@babel/parser" "^7.21.3"
+ "@vue/shared" "3.3.4"
+ estree-walker "^2.0.2"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-dom@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151"
+ integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==
+ dependencies:
+ "@vue/compiler-core" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/compiler-sfc@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df"
+ integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==
+ dependencies:
+ "@babel/parser" "^7.20.15"
+ "@vue/compiler-core" "3.3.4"
+ "@vue/compiler-dom" "3.3.4"
+ "@vue/compiler-ssr" "3.3.4"
+ "@vue/reactivity-transform" "3.3.4"
+ "@vue/shared" "3.3.4"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.0"
+ postcss "^8.1.10"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-ssr@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777"
+ integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==
+ dependencies:
+ "@vue/compiler-dom" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.0.0-beta.11":
+ version "6.5.0"
+ resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
+ integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
+
+"@vue/reactivity-transform@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929"
+ integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==
+ dependencies:
+ "@babel/parser" "^7.20.15"
+ "@vue/compiler-core" "3.3.4"
+ "@vue/shared" "3.3.4"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.0"
+
+"@vue/reactivity@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253"
+ integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
+ dependencies:
+ "@vue/shared" "3.3.4"
+
+"@vue/runtime-core@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1"
+ integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==
+ dependencies:
+ "@vue/reactivity" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/runtime-dom@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566"
+ integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==
+ dependencies:
+ "@vue/runtime-core" "3.3.4"
+ "@vue/shared" "3.3.4"
+ csstype "^3.1.1"
+
+"@vue/server-renderer@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c"
+ integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==
+ dependencies:
+ "@vue/compiler-ssr" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/shared@3.3.4", "@vue/shared@^3.0.0":
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
+ integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
+
+acorn@^8.9.0:
+ version "8.10.0"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
+ integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+axios@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
+ integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
+ dependencies:
+ follow-redirects "^1.15.0"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+copy-anything@^2.0.1:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480"
+ integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+ dependencies:
+ is-what "^3.14.1"
+
+csstype@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
+ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
+
+debug@^3.2.6:
+ version "3.2.7"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+errno@^0.1.1:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+esbuild@^0.18.10:
+ version "0.18.17"
+ resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.17.tgz#2aaf6bc6759b0c605777fdc435fea3969e091cad"
+ integrity sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.18.17"
+ "@esbuild/android-arm64" "0.18.17"
+ "@esbuild/android-x64" "0.18.17"
+ "@esbuild/darwin-arm64" "0.18.17"
+ "@esbuild/darwin-x64" "0.18.17"
+ "@esbuild/freebsd-arm64" "0.18.17"
+ "@esbuild/freebsd-x64" "0.18.17"
+ "@esbuild/linux-arm" "0.18.17"
+ "@esbuild/linux-arm64" "0.18.17"
+ "@esbuild/linux-ia32" "0.18.17"
+ "@esbuild/linux-loong64" "0.18.17"
+ "@esbuild/linux-mips64el" "0.18.17"
+ "@esbuild/linux-ppc64" "0.18.17"
+ "@esbuild/linux-riscv64" "0.18.17"
+ "@esbuild/linux-s390x" "0.18.17"
+ "@esbuild/linux-x64" "0.18.17"
+ "@esbuild/netbsd-x64" "0.18.17"
+ "@esbuild/openbsd-x64" "0.18.17"
+ "@esbuild/sunos-x64" "0.18.17"
+ "@esbuild/win32-arm64" "0.18.17"
+ "@esbuild/win32-ia32" "0.18.17"
+ "@esbuild/win32-x64" "0.18.17"
+
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+fast-glob@^3.2.12:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+follow-redirects@^1.15.0:
+ version "1.15.2"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+ integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+graceful-fs@^4.1.2:
+ version "4.2.11"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+iconv-lite@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-core-module@^2.11.0:
+ version "2.12.1"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
+ integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
+ dependencies:
+ has "^1.0.3"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-what@^3.14.1:
+ version "3.14.1"
+ resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
+ integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
+jweixin-1.6.0@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/jweixin-1.6.0/-/jweixin-1.6.0-1.0.0.tgz#d65ec53e738a95b5c54cd5f42a3f34f0e82e29d5"
+ integrity sha512-QH69Y/j4h8p9dy6wqIplXmhjLy67AGJswvrjwWUD84HUdB22QyHaX1PmV7oJFbsYL+Vn9Qe1uIx/2NFKkD51Bg==
+
+jwxwork@^0.1.12:
+ version "0.1.12"
+ resolved "https://registry.npmmirror.com/jwxwork/-/jwxwork-0.1.12.tgz#a845ee4c563822eeb9d192b2892879d1c8051f67"
+ integrity sha512-/+MBOWCHqbTgSMg43TugYy7d6aSHkIC+L4uvfScZFA1i+rMTRNQobyf+vSSlmCArIlKk4i5aoW0ToeaJCmMJNQ==
+
+less@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/less/-/less-4.2.0.tgz#cbefbfaa14a4cd388e2099b2b51f956e1465c450"
+ integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==
+ dependencies:
+ copy-anything "^2.0.1"
+ parse-node-version "^1.0.1"
+ tslib "^2.3.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ needle "^3.1.0"
+ source-map "~0.6.0"
+
+local-pkg@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
+ integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
+
+magic-string@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
+ integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.13"
+
+magic-string@^0.30.0:
+ version "0.30.2"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca"
+ integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
+make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@^1.4.1:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+minimatch@^5.1.1:
+ version "5.1.6"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+ integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+needle@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44"
+ integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.6.3"
+ sax "^1.2.4"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+parse-node-version@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+postcss@^8.1.10, postcss@^8.4.26:
+ version "8.4.27"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057"
+ integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+resolve@^1.22.1:
+ version "1.22.2"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
+ integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
+ dependencies:
+ is-core-module "^2.11.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rollup@^3.25.2:
+ version "3.27.0"
+ resolved "https://registry.npmmirror.com/rollup/-/rollup-3.27.0.tgz#15bd07e2e1cbfa9255bf6a3f04a432621c2f3550"
+ integrity sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+"safer-buffer@>= 2.1.2 < 3.0.0":
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+semver@^5.6.0:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+store@^2.0.12:
+ version "2.0.12"
+ resolved "https://registry.npmmirror.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593"
+ integrity sha512-eO9xlzDpXLiMr9W1nQ3Nfp9EzZieIQc10zPPMP5jsVV7bLOziSFFBP0XoDXACEIFtdI+rIz0NwWVA/QVJ8zJtw==
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+tslib@^2.3.0:
+ version "2.6.1"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410"
+ integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==
+
+unplugin-vue-components@^0.22.11:
+ version "0.22.12"
+ resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz#39013f77be72d32df9d6ca1599e592a484015612"
+ integrity sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==
+ dependencies:
+ "@antfu/utils" "^0.7.2"
+ "@rollup/pluginutils" "^5.0.2"
+ chokidar "^3.5.3"
+ debug "^4.3.4"
+ fast-glob "^3.2.12"
+ local-pkg "^0.4.2"
+ magic-string "^0.27.0"
+ minimatch "^5.1.1"
+ resolve "^1.22.1"
+ unplugin "^1.0.1"
+
+unplugin@^1.0.1:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.4.0.tgz#b771373aa1bc664f50a044ee8009bd3a7aa04d85"
+ integrity sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==
+ dependencies:
+ acorn "^8.9.0"
+ chokidar "^3.5.3"
+ webpack-sources "^3.2.3"
+ webpack-virtual-modules "^0.5.0"
+
+vant@^4.0.0:
+ version "4.6.3"
+ resolved "https://registry.npmmirror.com/vant/-/vant-4.6.3.tgz#e36a2dc2fa94253b8218094d88e9b0cd62b3437d"
+ integrity sha512-hkiBzM1dhEj9EWSjRnyB7gd6SiVa3/+qthNZtlJdj42C+pXIN+oq0UhKz5PRHWi8fHyPfycnqRzyvEJxouT+zw==
+ dependencies:
+ "@vant/popperjs" "^1.3.0"
+ "@vant/use" "^1.5.1"
+ "@vue/shared" "^3.0.0"
+
+vite@^4.4.7:
+ version "4.4.7"
+ resolved "https://registry.npmmirror.com/vite/-/vite-4.4.7.tgz#71b8a37abaf8d50561aca084dbb77fa342824154"
+ integrity sha512-6pYf9QJ1mHylfVh39HpuSfMPojPSKVxZvnclX1K1FyZ1PXDOcLBibdq5t1qxJSnL63ca8Wf4zts6mD8u8oc9Fw==
+ dependencies:
+ esbuild "^0.18.10"
+ postcss "^8.4.26"
+ rollup "^3.25.2"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vue-router@^4.0.13:
+ version "4.0.13"
+ resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.13.tgz#47f06e2f8ff6120bfff3c27ade1356cc9de7d870"
+ integrity sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0"
+
+vue@^3.2.45:
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
+ integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==
+ dependencies:
+ "@vue/compiler-dom" "3.3.4"
+ "@vue/compiler-sfc" "3.3.4"
+ "@vue/runtime-dom" "3.3.4"
+ "@vue/server-renderer" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+vuex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c"
+ integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0-beta.11"
+
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
+
+webpack-virtual-modules@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c"
+ integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==
+
+weixin-js-sdk@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz#ff50484d8118ce1208f11248cf4a1c0831577514"
+ integrity sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ==