Browse Source

更新登录

lex 1 year ago
parent
commit
8629a23ecd

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
     "dev": "vite",
     "start": "npm run dev",
     "build": "vue-tsc --noEmit && vite build",
+    "build:dev": "vue-tsc --noEmit && vite build --mode development",
     "serve": "vite preview",
     "lint": "eslint --ext .js,.jsx,.vue,.ts,.tsx src",
     "generate": "plop",

+ 5 - 4
src/helpers/request.ts

@@ -14,6 +14,7 @@ export interface SearchInitParams {
 
 const request = extend({
   // requestType: 'form',
+  noAuthorization: false, // 默认添加token,在有的情况下
   hideLoading: true, // 默认都不显示加载
   timeout: 20000,
   timeoutMessage: '请求超时'
@@ -37,15 +38,15 @@ request.interceptors.request.use(
     initRequest = options.initRequest || false;
     const Authorization = storage.get(ACCESS_TOKEN) || '';
     const authHeaders: any = {};
-    console.log(url);
+
     if (
       Authorization &&
       ![
         '/edu-oauth/userlogin',
         '/edu-oauth/smsLogin',
-        '/edu-oauth/open/sendSms',
-        '/edu-app/open/userOrder/registerGoods'
-      ].includes(url)
+        '/edu-oauth/open/sendSms'
+      ].includes(url) &&
+      !options.noAuthorization
     ) {
       authHeaders.Authorization = Authorization;
     }

+ 17 - 40
src/router/router-root.ts

@@ -1,34 +1,14 @@
 // 不需要登录的路由
 export default [
   {
-    path: '/courseware-play',
-    component: () => import('@/views/courseware-play/index'),
-    meta: {
-      title: '课件播放'
-    }
-  },
-  {
-    path: '/co-ai',
-    component: () => import('@/views/co-ai/index'),
-    meta: {
-      title: '小酷AI'
-    }
-  },
-  {
     path: '/student-register',
+    name: 'student-register',
     component: () => import('@/views/student-register/index'),
     meta: {
       title: '学生注册'
     }
   },
   {
-    path: '/student-digital-tools',
-    component: () => import('@/views/student-register/digital-tools/index'),
-    meta: {
-      title: '数字化乐器学练工具'
-    }
-  },
-  {
     path: '/goods-list',
     component: () => import('@/views/student-register/shop-mall/goods-list'),
     meta: {
@@ -44,42 +24,39 @@ export default [
     }
   },
   {
-    path: '/order-detail',
-    component: () => import('@/views/student-register/order-detail'),
+    path: '/student-digital-tools',
+    component: () => import('@/views/student-register/digital-tools/index'),
     meta: {
-      title: '订单详情'
+      title: '数字化乐器学练工具'
     }
   },
   {
-    path: '/knowledge-library',
-    component: () => import('@/views/knowledge-library/index'),
+    path: '/courseware-play',
+    component: () => import('@/views/courseware-play/index'),
     meta: {
-      title: '知识库'
+      title: '课件播放'
     }
   },
   {
-    path: '/payment-result',
-    name: 'payment-result',
-    component: () => import('@/views/payment-result/index'),
+    path: '/co-ai',
+    component: () => import('@/views/co-ai/index'),
     meta: {
-      title: '支付详情'
+      title: '小酷AI'
     }
   },
   {
-    path: '/shopAddress',
-    name: 'shopAddress',
-    component: () => import('@/views/student-register/shop-address/index'),
+    path: '/knowledge-library',
+    component: () => import('@/views/knowledge-library/index'),
     meta: {
-      title: '支付详情'
+      title: '知识库'
     }
   },
   {
-    path: '/addressOperation',
-    name: 'addressOperation',
-    component: () =>
-      import('@/views/student-register/shop-address/address-operation'),
+    path: '/payment-result',
+    name: 'payment-result',
+    component: () => import('@/views/payment-result/index'),
     meta: {
-      title: '收货地址'
+      title: '支付详情'
     }
   },
   {

+ 24 - 0
src/router/routes-common.ts

@@ -17,6 +17,30 @@ export default [
         meta: {
           isRegister: false
         } as metaType
+      },
+      {
+        path: '/order-detail',
+        component: () => import('@/views/student-register/order-detail'),
+        meta: {
+          title: '订单详情'
+        }
+      },
+      {
+        path: '/shopAddress',
+        name: 'shopAddress',
+        component: () => import('@/views/student-register/shop-address/index'),
+        meta: {
+          title: '支付详情'
+        }
+      },
+      {
+        path: '/addressOperation',
+        name: 'addressOperation',
+        component: () =>
+          import('@/views/student-register/shop-address/address-operation'),
+        meta: {
+          title: '收货地址'
+        }
       }
     ]
   },

+ 0 - 4
src/state.ts

@@ -80,10 +80,6 @@ export const goWechatAuth = (wxAppId: string, urlString?: string) => {
 
 const goAuth = (wxAppId: string, urlString?: string) => {
   // 用户授权
-  console.log(
-    urlString || window.location.href,
-    'urlString || window.location.href'
-  );
   const urlNow = encodeURIComponent(urlString || window.location.href);
   console.log(urlNow, 'urlNow');
   const scope = 'snsapi_base'; //snsapi_userinfo   //静默授权 用户无感知

+ 2 - 1
src/store/modules/student-register-store.ts

@@ -15,7 +15,7 @@ export const useStudentRegisterStore = defineStore('student-register-store', {
     token: storage.get(ACCESS_TOKEN, ''),
     selectGoods: [] as any,
     selectVip: [] as any,
-    schoolId: ''
+    schoolId: storage.get('register_school_id', '')
   }),
   getters: {
     getToken(): string {
@@ -98,6 +98,7 @@ export const useStudentRegisterStore = defineStore('student-register-store', {
      */
     setShoolId(schoolId: string) {
       this.schoolId = schoolId;
+      storage.set('register_school_id', schoolId);
     },
     /**
      * 退出登录

+ 1 - 1
src/views/layout/auth.tsx

@@ -46,7 +46,7 @@ export default defineComponent({
       if (state.user.status === 'init' || state.user.status === 'error') {
         this.loading = true;
         try {
-          const res = await request.get('/api-web/schoolStaff/queryUserInfo', {
+          const res = await request.get('/edu-app/user/getUserInfo', {
             initRequest: true, // 初始化接口
             requestType: 'form',
             hideLoading: true

+ 23 - 6
src/views/student-register/index.module.less

@@ -293,12 +293,26 @@
 
     .goSelect {
       margin-top: 5px;
-      width: 79px;
       height: 29px;
       background-color: transparent;
       border: 0;
-      background: url('./images/icon-button-go.png') no-repeat center;
-      background-size: contain;
+      background: #FF8057 linear-gradient(121deg, #FFD892 0%, #FFCB75 100%);
+      border-radius: 12px;
+      font-size: 14px;
+      font-weight: 600;
+      color: #5B2C03;
+
+      :global {
+        .van-button__text {
+          display: flex;
+          align-items: center;
+        }
+
+        .van-icon {
+          font-size: 12px;
+          font-weight: bold;
+        }
+      }
     }
   }
 }
@@ -365,8 +379,11 @@
       height: 40px;
       line-height: 40px;
       width: 148px;
-      background: url('./images/icon-button-buy.png') no-repeat center;
-      background-size: contain;
+      background: #FF8057 linear-gradient(121deg, #FFD892 0%, #FFCB75 100%);
+      border-radius: 12px;
+      font-size: 18px;
+      font-weight: 600;
+      color: #5B2C03;
       border: 0;
     }
   }
@@ -382,4 +399,4 @@
       height: 190px !important;
     }
   }
-}
+}

+ 14 - 4
src/views/student-register/index.tsx

@@ -30,6 +30,8 @@ export default defineComponent({
     const route = useRoute();
     const studentRegisterStore = useStudentRegisterStore();
     const router = useRouter();
+    // 初始化学校编号
+    studentRegisterStore.setShoolId(route.query.sId as any);
     const forms = reactive({
       schoolId: route.query.sId as any,
       popupShow: false,
@@ -63,7 +65,10 @@ export default defineComponent({
     const getRegisterGoods = async () => {
       try {
         const { data } = await request.get(
-          '/edu-app/open/userOrder/registerGoods/' + forms.schoolId
+          '/edu-app/open/userOrder/registerGoods/' + forms.schoolId,
+          {
+            noAuthorization: true // 是否请求接口的时候添加toekn
+          }
         );
 
         // 默认选中商品
@@ -298,7 +303,10 @@ export default defineComponent({
                       type="primary"
                       onClick={() => {
                         router.push('/goods-list');
-                      }}></Button>
+                      }}>
+                      进入商城选购
+                      <Icon name="arrow" />
+                    </Button>
                   </div>
                 </div>
               ) : (
@@ -360,7 +368,7 @@ export default defineComponent({
                     router.push('/goods-list');
                   }}>
                   <Icon name="add-o" />
-                  添加购买
+                  进入商城选购
                 </Button>
               )}
           </>
@@ -389,7 +397,9 @@ export default defineComponent({
               }}>
               <Button
                 disabled={forms.submitLoading}
-                loading={forms.submitLoading}></Button>
+                loading={forms.submitLoading}>
+                确认购买
+              </Button>
             </div>
           </div>
         </MSticky>

+ 5 - 4
src/views/student-register/layout/auth.tsx

@@ -1,14 +1,13 @@
 import { defineComponent } from 'vue';
 import styles from './index.module.less';
 import { state, setLogin, setLogout, setLoginError } from '@/state';
-import { browser } from '@/helpers/utils';
+import { useStudentRegisterStore } from '@/store/modules/student-register-store';
 import { RouterView } from 'vue-router';
 import { storage } from '@/helpers/storage';
 import { ACCESS_TOKEN } from '@/store/mutation-types';
 import OEmpty from '@/components/m-empty';
 import request from '@/helpers/request';
 
-const browserInfo = browser();
 export default defineComponent({
   name: 'Auth-loayout',
   data() {
@@ -52,7 +51,7 @@ export default defineComponent({
           });
           setLogin(res.data);
         } catch (e: any) {
-          // console.log(e, 'e')
+          console.log(e, 'e');
           const message = e.message;
           if (
             message.indexOf('5000') === -1 &&
@@ -67,9 +66,11 @@ export default defineComponent({
       }
       if (state.user.status === 'logout') {
         try {
+          const studentRegisterStore = useStudentRegisterStore();
           const route = this.$route;
           const query = {
-            returnUrl: this.$route.path,
+            sId: studentRegisterStore.getSchoolId,
+            // returnUrl: this.$route.path,
             ...this.$route.query
           } as any;
           if (route.meta.isRegister) {

+ 99 - 0
src/views/student-register/request.ts

@@ -0,0 +1,99 @@
+import { extend } from 'umi-request';
+import cleanDeep from 'clean-deep';
+import { showLoadingToast, showToast, closeToast } from 'vant';
+import { createStorage } from '@/helpers/storage';
+import { ACCESS_TOKEN } from '@/store/mutation-types';
+const storage = createStorage({ prefixKey: '', storage: sessionStorage });
+import { useStudentRegisterStore } from '@/store/modules/student-register-store';
+const studentRegisterStore = useStudentRegisterStore();
+
+export interface SearchInitParams {
+  rows?: string | number;
+  page?: string | number;
+}
+
+const request = extend({
+  // requestType: 'form',
+  noAuthorization: false, // 默认添加token,在有的情况下
+  hideLoading: true, // 默认都不显示加载
+  timeout: 20000,
+  timeoutMessage: '请求超时'
+});
+
+// 是否是初始化接口
+let initRequest = false;
+let toast: ReturnType<typeof setTimeout>;
+
+request.interceptors.request.use(
+  (url, options: any) => {
+    if (!options.hideLoading) {
+      clearTimeout(toast);
+      showLoadingToast({
+        message: '加载中...',
+        forbidClick: true,
+        duration: 0
+      });
+    }
+
+    initRequest = options.initRequest || false;
+    const Authorization = storage.get(ACCESS_TOKEN) || '';
+    const authHeaders: any = {};
+    if (
+      Authorization &&
+      ![
+        '/edu-oauth/userlogin',
+        '/edu-oauth/smsLogin',
+        '/edu-oauth/open/sendSms'
+      ].includes(url) &&
+      !options.noAuthorization
+    ) {
+      authHeaders.Authorization = Authorization;
+    }
+
+    return {
+      url,
+      options: {
+        ...options,
+        params: cleanDeep(options.params),
+        data: cleanDeep(options.data),
+        headers: {
+          ...options.headers,
+          ...authHeaders
+        }
+      }
+    };
+  },
+  { global: false }
+);
+
+request.interceptors.response.use(
+  async res => {
+    toast = setTimeout(() => {
+      closeToast();
+    }, 100);
+    if (res.status > 299 || res.status < 200) {
+      clearTimeout(toast);
+      const msg = '服务器错误,状态码' + res.status;
+      showToast(msg);
+      throw new Error(msg);
+    }
+    const data = await res.clone().json();
+    // 999 为特殊code码
+    if (data.code !== 200 && data.errCode !== 0 && data.code !== 999) {
+      let msg = data.msg || data.message || '处理失败,请重试';
+      if (!(data.code === 403 || data.code === 5000)) {
+        clearTimeout(toast);
+        showToast(msg);
+      }
+      if (data.code === 5000 || data.code === 403) {
+        msg += ' authentication ' + data.code;
+        studentRegisterStore.studentLoutOut();
+      }
+      throw new Error(msg);
+    }
+    return res;
+  },
+  { global: false }
+);
+
+export default request;