|%c9{ArjJ
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
literal 0
HcmV?d00001
diff --git a/src/myImg/loginImg/yqx.png b/src/myImg/loginImg/yqx.png
new file mode 100644
index 0000000000000000000000000000000000000000..0633c5be8809ebaa08c1151969d43643fca25a60
GIT binary patch
literal 6296
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
literal 0
HcmV?d00001
diff --git a/src/myImg/loginImg/ywc.png b/src/myImg/loginImg/ywc.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9f08d77d82f8cf962325ac19702ae7a381dc747
GIT binary patch
literal 4263
zcmeHL`8!l?A3tMqJTamk#;&1*6w!<&JEhEIixP^gjf83>JIxq7kL74AX;4ildlFL2
zlL_-=DfLL!$&yB8OO_<>sQ!redaw6~bMEUp-~B${bALadlXT3+LRe5*5C8yS0^Z!7
zw{~n^e}KGug;Qk#Z$VtPw>St?cFS@BK-7a^ZgwK{%xBk#PiGy%T=)9ks<8H|7N;fj
zTXG_4Km8Z?lI?lGwEe=uqDyH@F8U%Rvu8J7VUfHN0HT^;Q*
zJ%kz(=6r>!`pe&23oCL@0VUd6zB%W?Z`ez6Z1n^|eTEq{401}F-=^v!g|XH76E6kI
z){4N)AR%%CX4wPmi=((gJHt5Mvu8yK5_}Dzu1@oYT}%{GBJ;6#cIG-tQT4*RGiU$l
zWJ=?zX%kC-t(=pSjAvC5n&f2n@-Zz#-zP
z??iE$e;{Fb6lY~-*#Ic8)112lxyh3vgnNw?(rYaW6UfWJ%Ja9c?93Fl?ML3mzHrrX
z0Xfz3Nn;+KHx35}NKOO-Q%jN@A;@-yqWc=9Mnez^1uogAD?ZFLyx5AFpL$7RbNuiH
zc`RunsN70slpzc?oL|_$?Z@rQS?j^r55aJBXfE`;n!6w4t4nrDD$tWhgWSu0%UdCn
ze5tpRIL*T#MCaoa!gT?{RPQR2;Ec%dK=;;8rngkaA_1_q6l+jN!TfFq7jChN;&Ukk
z97gqIGAlVVtUXN=zr?qG0-o<|O^`Zw9YL7)pBPUfd_qwpcbdM}e!Gh>k}3I`w+X%=
zB!|F!5u7Q|OvKhI=q*p)>pakwOHtL#m|4?$0p`V2R(fE--l#%w0D~lqdlWNGAI-ip
zmGKsQ^eCPpiC>PAK1W4Cey+{TSqSuE)tNgp9ZL
zm9OQXCli!P#EaBk=Sj-$micIlB6-!Ahv)w5%>@ecs~GX_!(+>Y~HTeBxU
z{c!Ho*TkXK>%5r0NB2pb&gUuWjCa2gL+ap<2R8N(@D%H$LYj+t5wF9~pY;)$;N7l<
zFWS$@!oAmA_C3_$DF(FBt5kWOizfnW>ZGd8&f{hxt@pcAwUlyFD*ks;aJwA|rvaBB
zas)7RWTCyndKC1vt^ucMi)z3WBJ{OYV?AG}Hrr1o_i6KvfQ;Q&it#)DvGH{0kltare95rw&zFdgcgz
zk@CK~SYPPUtHIX*GI0@|?;W7g*T@#FQsMhr(}T8ZTnbPL&cznghGE$~i>c0nL!h(Z
z=g%s%#gBA7c~{N+gp9{!n9A@(VSD<*(w|55AFkC-XY$vE$+6#{S?WrxpX$oAMSvY@~KL@oijvHM5Zg0l!
zQC@u+({LxDA7h#0{*526FT`|+qZODhxCwgY$P=k*t}(t67_L9yD0VVTmVH{#OJzHe
zYIQK)7p=gh0V7UM!*X7?{6*
ze02N>JP(j2x5;=
z8HpW%j>x_Rr80-^im0oiW#aYH_LhFd!c!6~ZSnhky!o*csQJ?NvgRX5HaImDcAGJd
zb_ohautS$4C)4YAQ%W5;IN?P+kw({j2tW3q(Pq(dZ7DVh5}jXq2+bv!N_Iw_RwAPX
zm`k%3^9x^pL8SMq>!U6YRTX&^9$xU`Cw0Y_)6JlDY4Qf3IU5zP0)KBO(v0x$g!bth
z#!XC}OiJ%`>3fMG6>jX33Iq)46KPOzZ#BP!obmOE7TfTcUE=j=V3OR%$N;tH6+XH_
zAUf~`PbzO4I5nZ{aJT4+7QPVI5s&hLQ!4_l8$hmnoS2xWS3%A@sKrjS39In&Tt>fD
zSO_KN>XC(uLSxxzMPC_m4q8mKNxrQ~HU!P8Jkc>A1-;G^i)hatYBx!kps5Fu87;^;
z75=(tIc5@c^_XZ=pn{)oMmI!qo&UslxJM<-+02C|N+7N2JVdDHopwnyNt>`O6B{&z
z>$LGca6@J21&U2pB&?|NU9hIPZO!STEe=cPS6*I3>ft5nLP}7nx4BD6cy5lWxZb
zrEF`JO;^QV5@*9E?Sl4o;`f(8uGNk=;u`xhX1bv9C!g=g!=5!B-<_{SnknSKkzr;-
zr(*jt^iFu}(b!r3dlz>}^_A{;1<=Z?f!1Uw|%R;
zm%!+EFzTEyieXJ1z
zLe}`-p4~oc!>W8wReS5i0iSLlR}R6tOLX%54^+@S0f@ehgH)aSQKZ4Q;su9Dux5mu
z-Ah_$gMHG9bu-SyHXZhg0twjuVeLm~rUrCK$K7q(YDfOTMPsy6(26!-tFYQNLXgv3
z+gZ}@7drFzgDiZvT!kH(p@RG)YcZ;DjR?$-{k!2^vQPEGXxpoKSm?*qk3Sy!jUCE!
zw#lYg@WQ*bKLiU5eu4r&PhLCLgzI!eQT6NTj;C6owE|0g
zGVaKb&5w$h$|xCjXf@Z%{U;cy%rw)_GQ5Q&e7Zb1mFO4iv_yKsXy{8cDLaamYo>U!
zi&0VMT~GUOrmKzPrQ097uN!K4Q=1h%^yH=FW|AK!r;WDG3fXR!AHUg~O?P4mNB32(
zO`}6K95p;De5`(2Z+3rwpO#f%psn1ur}=|1rL$W~Vt$&n@yr(X(g_7xa0iLBQ+d&j
z@~e^yyh`SWGtZ6rph`XbpM9}{3#BhviD>^SRHwuEAEh|Lm;sa`U(>&TCNwJgB}H~L
z{Wmm<7Q`pN@$8vac^>^C^qah;#aNcG@gCeSK-QQO3y%nM;`j&J9#v?z4}Cq&?_~h}
z{R@;$6g`l5{A#;Ts;0#avq-h1-wqY-TwBxyu=x+3)g4jOUkv=JB;~a$;1`TLPEc}1
zah_V6l5+NRzMGu3)UjY})^?8CNpr9-fAm+6#`kH|fowV}r)r;~)NJNjF7O-ZT`Pw@
zNnYh(TFBW(y(Sst`et02&}WZklGtB+zY5HZfaxy`}pX#*Z>wRp<-w$asZ_#OU3w
zfa+Ch;`1o%{TS8ey;7q&ow7c$W@%fh4XEHH5w-yITgZ(7wppTs#gMzXmVgZ&jG|1i
z3FRI{cPt8@Y|EivQ~RI{t6Y$Tn#n%j}#+bE41N{!29&uYQ2b0KKG$c&>#iBjjX
zC{0bZ?IBA%Du~t-U=9x6$SKo7QZ?sxz>fZ@4`xx=FC~3-fQ<}96WEUo*uP0eYn4Wy
zV}|o4bO4JwZCyt{5bf!%%f2ll`>u%heFyURXwzgXs$3sAufDd@y#6HZkTe6wjsy0c
zxe{#HQb*({!U--74R?7b5^I2_i%a0tY2%mgh7k62>HxIgiC>&n@W@zQ2
zchczQdnq1La%@YV7&+aTFQ-cNM`2Ve2@m-~T^5we!dBO3iA89n0b)pWZ`kwQM#uKNyH)zBoFNBe@V%=*3C%Ws9K)C%ykq>b$heH;r)34
N2#0OVD-XKI{0B4++BE {
+ const count = ref(0)
+ const doubleCount = computed(() => count.value * 2)
+ function increment() {
+ count.value++
+ }
+
+ return { count, doubleCount, increment }
+})
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..80f1639
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,71 @@
+import { createRouter, createWebHistory } from 'vue-router'
+import MyMain from "@/views/My-main.vue";
+import login from "@/views/login/index.vue";
+import Admin from "@/views/auth/admin/index.vue";
+import Group from "@/views/auth/group/index.vue";
+import Order from "@/views/vppz/order/index.vue";
+import Staff from "@/views/vppz/staff/index.vue";
+import Dashboard from "@/views/dashboard/index.vue";
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: [
+ {
+ path: '/',
+ name: 'My-main',
+ component: MyMain,
+ children: [
+ {
+ path: '/dashboard',
+ meta: {id: 1, name: '控制台', icon: 'platform', path: '/dashboard', describe: '用于展示当前系统中的统计数据、统计报表及重要实时数据'},
+ component: Dashboard
+ },
+ {
+ path: '/auth',
+ meta: {id: 2, name: '权限管理', icon: 'Grid'},
+ children: [
+ {
+ path: '/auth/admin',
+ alias: ['admin'],
+ meta: {id: 1, name: '账号管理', icon: 'Avatar', path: '/auth/admin', describe: "管理员可以进行编辑,权限修改后需要登出才会生效"},
+ component: Admin
+ },
+ {
+ path: '/auth/group',
+ meta: {id: 2, name: '菜单管理', icon: 'Menu', path: '/auth/group', describe: "菜单规则通常对应一个控制器的方法,同时菜单栏数据也从规则中获取"},
+ component: Group
+ }
+ ]
+ },
+ {
+ path: '/vppz',
+ meta: {id: 3, name: 'DIDI陪诊', icon: 'BellFilled'},
+ children: [
+ {
+ path: '/vppz/staff',
+ alias: ['staff'],
+ meta: {
+ id: '1', name: '陪护管理', icon: 'checked', path: '/vppz/staff', describe: '陪护师可以进行创建和' +
+ '修改,设置对应生效状态控制C端选择'
+ },
+ component: Staff
+ },
+ {
+ path: '/vppz/order',
+ meta: {
+ id: '2', name: '订单管理', icon: 'List', path: '/vppz/order', describe: 'c端下单后可以查看所有订单状态,已支付的订单可以完成' +
+ '陪护状态修改'
+ },
+ component: Order
+ }
+ ]
+ }
+ ]
+ },
+ {
+ path: '/login',
+ component: login
+ },
+ ],
+})
+ export default router
diff --git a/src/store/index.ts b/src/store/index.ts
new file mode 100644
index 0000000..4adbc5f
--- /dev/null
+++ b/src/store/index.ts
@@ -0,0 +1,8 @@
+import {createStore} from 'vuex'
+import menu from './menu'
+
+export default createStore({
+ modules: {
+ menu
+ }
+})
diff --git a/src/store/menu.ts b/src/store/menu.ts
new file mode 100644
index 0000000..cabbe67
--- /dev/null
+++ b/src/store/menu.ts
@@ -0,0 +1,38 @@
+
+// 引入VUEX
+import vuex from 'vuex'
+
+// 用于存储数据
+const state = {
+ isCollapse: false,
+ selectMenus: [],
+}
+// 用于操作数据
+const mutations = {
+ collapseMenu(state: any) {
+ state.isCollapse = !state.isCollapse
+ },
+ addMenu(state: any, payload: any) {
+ // 对数据进行去重
+ if (state.selectMenus.findIndex(item => item.path === payload.path) === -1) {
+ state.selectMenus.push(payload)
+ }
+ },
+ closeMenu(state: any, payload: any) {
+ // 找到点击数据的索引
+ const index = state.selectMenus.findIndex(val => val.path === payload.path)
+
+ // 通过索引删除,index表示删除的位置 1表示删除的个数
+ state.selectMenus.splice(index, 1)
+
+ },
+}
+// 用于响应组件的动作
+const actions = {
+
+}
+// 暴露STORE
+export default {
+ state,
+ mutations,
+}
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..3c82cd3
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,32 @@
+import axios from 'axios'
+import {ElMessage} from 'element-plus'
+
+const http = axios.create({
+ baseURL: '/api',
+ timeout: 5000
+})
+// 添加拦截器,request是请求,response是响应
+http.interceptors.request.use(function (config) {
+ // 在发送请求之前做些什么,localStorage缓存
+ const token = localStorage.getItem('pz-token')
+ // 不需要添加token的白名单
+ const whiteList = ['/get/code', '/user/authentication', '/login']
+ if (token && !whiteList.includes(config.url)) {
+ config.headers['x-token'] = token
+ }
+ return config;
+}, function (error) {
+ // 对请求错误做些什么
+ return Promise.reject(error);
+});
+// 添加响应拦截器
+http.interceptors.response.use(function (response) {
+ // 对接口异常的数据,给用户提示
+ if (response.data.code === -1) {
+ ElMessage.error(response.data.message)
+ }
+ return response;
+}, function (error) {
+ return Promise.reject(error);
+});
+export default http
diff --git a/src/views/My-main.vue b/src/views/My-main.vue
new file mode 100644
index 0000000..a309b35
--- /dev/null
+++ b/src/views/My-main.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/auth/admin/index.vue b/src/views/auth/admin/index.vue
new file mode 100644
index 0000000..0a8d203
--- /dev/null
+++ b/src/views/auth/admin/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/views/auth/group/index.vue b/src/views/auth/group/index.vue
new file mode 100644
index 0000000..0a8d203
--- /dev/null
+++ b/src/views/auth/group/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
new file mode 100644
index 0000000..0a8d203
--- /dev/null
+++ b/src/views/dashboard/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
new file mode 100644
index 0000000..5942bee
--- /dev/null
+++ b/src/views/login/index.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+ {{ formType === 0 ? '返回登录' : '注册账号' }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ countdown.validText }}
+
+
+
+
+
+ {{ formType ? '注册账号' : '登录' }}
+
+
+
+
+
+
+
+
diff --git a/src/views/vppz/order/index.vue b/src/views/vppz/order/index.vue
new file mode 100644
index 0000000..12b32fa
--- /dev/null
+++ b/src/views/vppz/order/index.vue
@@ -0,0 +1,11 @@
+
+
+
+ 12333333333
+
+
+
diff --git a/src/views/vppz/staff/index.vue b/src/views/vppz/staff/index.vue
new file mode 100644
index 0000000..0a8d203
--- /dev/null
+++ b/src/views/vppz/staff/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/tsconfig.app.json b/tsconfig.app.json
new file mode 100644
index 0000000..e14c754
--- /dev/null
+++ b/tsconfig.app.json
@@ -0,0 +1,14 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "exclude": ["src/**/__tests__/*"],
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..100cf6a
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ },
+ {
+ "path": "./tsconfig.app.json"
+ },
+ {
+ "path": "./tsconfig.vitest.json"
+ }
+ ]
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 0000000..f094063
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,19 @@
+{
+ "extends": "@tsconfig/node20/tsconfig.json",
+ "include": [
+ "vite.config.*",
+ "vitest.config.*",
+ "cypress.config.*",
+ "nightwatch.conf.*",
+ "playwright.config.*"
+ ],
+ "compilerOptions": {
+ "composite": true,
+ "noEmit": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "types": ["node"]
+ }
+}
diff --git a/tsconfig.vitest.json b/tsconfig.vitest.json
new file mode 100644
index 0000000..571995d
--- /dev/null
+++ b/tsconfig.vitest.json
@@ -0,0 +1,11 @@
+{
+ "extends": "./tsconfig.app.json",
+ "exclude": [],
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.vitest.tsbuildinfo",
+
+ "lib": [],
+ "types": ["node", "jsdom"]
+ }
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..66a9077
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,35 @@
+import {fileURLToPath, URL} from 'node:url'
+
+import {defineConfig} from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueJsx from '@vitejs/plugin-vue-jsx'
+
+//
+// const {createProxyMiddleware} = require('http-proxy-middleware');
+// app.use('/api', createProxyMiddleware({
+// target: '/https:/v3pz.itndedu.com/v3pz/',
+// changeOrigin: true,
+// pathRewrite: {'^/api': ''}
+// }));
+//
+// // https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ vue(),
+ vueJsx(),
+ ],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
+ },
+ server: {
+ proxy: {
+ '/api': {
+ target: 'https://v3pz.itndedu.com/v3pz/',
+ changeOrigin: true,
+ rewrite: (path): any => path.replace("/api", ''),
+ },
+ },
+ },
+})
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 0000000..4b1c897
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,14 @@
+import { fileURLToPath } from 'node:url'
+import { mergeConfig, defineConfig, configDefaults } from 'vitest/config'
+import viteConfig from './vite.config'
+
+export default mergeConfig(
+ viteConfig,
+ defineConfig({
+ test: {
+ environment: 'jsdom',
+ exclude: [...configDefaults.exclude, 'e2e/**'],
+ root: fileURLToPath(new URL('./', import.meta.url))
+ }
+ })
+)