lsc hai 1 día
pai
achega
4112af8059

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/index.html


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
dist/report.html


+ 1 - 1
dist/static/css/chunk-3ae1faf1.eddce432.css → dist/static/css/chunk-12d2a0da.e2921508.css

@@ -1 +1 @@
-.wechat-auth-container[data-v-6bd33d95]{min-height:100vh;background:-webkit-linear-gradient(315deg,#667eea,#764ba2);background:linear-gradient(135deg,#667eea,#764ba2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:.53333rem}.wechat-auth-container .auth-content[data-v-6bd33d95]{background:#fff;border-radius:.42667rem;padding:1.06667rem .8rem;text-align:center;box-shadow:0 .26667rem .8rem rgba(0,0,0,.1);max-width:10.66667rem;width:100%}.wechat-auth-container .auth-content .logo[data-v-6bd33d95]{margin-bottom:.8rem}.wechat-auth-container .auth-content .logo img[data-v-6bd33d95]{width:2.13333rem;height:2.13333rem;border-radius:50%}.wechat-auth-container .auth-content .auth-status .van-icon[data-v-6bd33d95],.wechat-auth-container .auth-content .auth-status .van-loading[data-v-6bd33d95]{margin-bottom:.53333rem}.wechat-auth-container .auth-content .auth-status p[data-v-6bd33d95]{margin:.26667rem 0;font-size:.42667rem;color:#333}.wechat-auth-container .auth-content .auth-status p.user-info[data-v-6bd33d95]{font-size:.37333rem;color:#666;margin-top:.26667rem}.wechat-auth-container .auth-content .auth-status p.auth-desc[data-v-6bd33d95]{font-size:.37333rem;color:#999;margin:.4rem 0 .66667rem}.wechat-auth-container .auth-content .auth-status p.error-message[data-v-6bd33d95]{font-size:.37333rem;color:#ee0a24;margin:.4rem 0 .66667rem}.wechat-auth-container .auth-content .auth-status .van-button[data-v-6bd33d95]{margin-top:.53333rem;width:5.33333rem;height:1.17333rem;border-radius:.58667rem}@media (max-width:480px){.wechat-auth-container[data-v-6bd33d95]{padding:.26667rem}.wechat-auth-container .auth-content[data-v-6bd33d95]{padding:.8rem .53333rem}.wechat-auth-container .auth-content .auth-status .van-button[data-v-6bd33d95]{width:100%}}
+.wechat-auth-container[data-v-00732f2e]{min-height:100vh;background:-webkit-linear-gradient(315deg,#667eea,#764ba2);background:linear-gradient(135deg,#667eea,#764ba2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:.53333rem}.wechat-auth-container .auth-content[data-v-00732f2e]{background:#fff;border-radius:.42667rem;padding:1.06667rem .8rem;text-align:center;box-shadow:0 .26667rem .8rem rgba(0,0,0,.1);max-width:10.66667rem;width:100%}.wechat-auth-container .auth-content .logo[data-v-00732f2e]{margin-bottom:.8rem}.wechat-auth-container .auth-content .logo img[data-v-00732f2e]{width:2.13333rem;height:2.13333rem;border-radius:50%}.wechat-auth-container .auth-content .auth-status .van-icon[data-v-00732f2e],.wechat-auth-container .auth-content .auth-status .van-loading[data-v-00732f2e]{margin-bottom:.53333rem}.wechat-auth-container .auth-content .auth-status p[data-v-00732f2e]{margin:.26667rem 0;font-size:.42667rem;color:#333}.wechat-auth-container .auth-content .auth-status p.user-info[data-v-00732f2e]{font-size:.37333rem;color:#666;margin-top:.26667rem}.wechat-auth-container .auth-content .auth-status p.auth-desc[data-v-00732f2e]{font-size:.37333rem;color:#999;margin:.4rem 0 .66667rem}.wechat-auth-container .auth-content .auth-status p.error-message[data-v-00732f2e]{font-size:.37333rem;color:#ee0a24;margin:.4rem 0 .66667rem}.wechat-auth-container .auth-content .auth-status .van-button[data-v-00732f2e]{margin-top:.53333rem;width:5.33333rem;height:1.17333rem;border-radius:.58667rem}@media (max-width:480px){.wechat-auth-container[data-v-00732f2e]{padding:.26667rem}.wechat-auth-container .auth-content[data-v-00732f2e]{padding:.8rem .53333rem}.wechat-auth-container .auth-content .auth-status .van-button[data-v-00732f2e]{width:100%}}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/css/chunk-1aab73ec.881e8204.css


+ 1 - 1
dist/static/css/chunk-1eb03832.4e6bc751.css → dist/static/css/chunk-d4d28b52.5dd7065d.css

@@ -1 +1 @@
-.appStore[data-v-3536b7cc]{width:100vw;height:100vh;background-color:#f9f8f8;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:auto}.appStore[data-v-3536b7cc],.topC[data-v-3536b7cc]{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.topC[data-v-3536b7cc]{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:1.33333rem;padding:0 .32rem;position:relative;font-family:PingFang HK;font-weight:600;font-size:.4rem;line-height:.53333rem;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.topC img[data-v-3536b7cc]{position:absolute;top:50%;left:.26667rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:.61333rem}.infoCon[data-v-3536b7cc]{margin-top:.93333rem;padding:.4rem;box-sizing:border-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:.26667rem;font-family:PingFang HK;font-weight:400;font-size:.37333rem}.infoCon .Blo[data-v-3536b7cc],.infoCon[data-v-3536b7cc]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.infoCon .Blo[data-v-3536b7cc]{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background:#fff;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.4rem .53333rem;border-radius:.26667rem}
+.appStore[data-v-6ef79dc2]{width:100vw;height:100vh;background-color:#f9f8f8;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:auto}.appStore[data-v-6ef79dc2],.topC[data-v-6ef79dc2]{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.topC[data-v-6ef79dc2]{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:1.33333rem;padding:0 .32rem;position:relative;font-family:PingFang HK;font-weight:600;font-size:.4rem;line-height:.53333rem;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.topC img[data-v-6ef79dc2]{position:absolute;top:50%;left:.26667rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:.61333rem}.infoCon[data-v-6ef79dc2]{margin-top:.93333rem;padding:.4rem;box-sizing:border-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:.26667rem;font-family:PingFang HK;font-weight:400;font-size:.37333rem}.infoCon .Blo[data-v-6ef79dc2],.infoCon[data-v-6ef79dc2]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.infoCon .Blo[data-v-6ef79dc2]{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;background:#fff;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:.4rem .53333rem;border-radius:.26667rem}

+ 0 - 5
dist/static/img/tel.747b262a.svg

@@ -1,5 +0,0 @@
-<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
-<rect width="24" height="24" rx="12" fill="#D9D9D9"/>
-<path d="M15 5C15.2652 5 15.5196 5.10536 15.7071 5.29289C15.8946 5.48043 16 5.73478 16 6V18C16 18.2652 15.8946 18.5196 15.7071 18.7071C15.5196 18.8946 15.2652 19 15 19H9C8.73478 19 8.48043 18.8946 8.29289 18.7071C8.10536 18.5196 8 18.2652 8 18V6C8 5.73478 8.10536 5.48043 8.29289 5.29289C8.48043 5.10536 8.73478 5 9 5H15ZM9 4C8.46957 4 7.96086 4.21071 7.58579 4.58579C7.21071 4.96086 7 5.46957 7 6V18C7 18.5304 7.21071 19.0391 7.58579 19.4142C7.96086 19.7893 8.46957 20 9 20H15C15.5304 20 16.0391 19.7893 16.4142 19.4142C16.7893 19.0391 17 18.5304 17 18V6C17 5.46957 16.7893 4.96086 16.4142 4.58579C16.0391 4.21071 15.5304 4 15 4H9Z" fill="#0663FE"/>
-<path d="M12 18C12.2652 18 12.5196 17.8946 12.7071 17.7071C12.8946 17.5196 13 17.2652 13 17C13 16.7348 12.8946 16.4804 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16C11.7348 16 11.4804 16.1054 11.2929 16.2929C11.1054 16.4804 11 16.7348 11 17C11 17.2652 11.1054 17.5196 11.2929 17.7071C11.4804 17.8946 11.7348 18 12 18Z" fill="#0663FE"/>
-</svg>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/app.67af65ad.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-12d2a0da.74e5c22e.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-1aab73ec.b8834f63.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-1eb03832.7fa15c55.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-3ae1faf1.88b0e02c.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
dist/static/js/chunk-61b307f8.48e68204.js


+ 1 - 0
dist/static/js/chunk-d4d28b52.94630a20.js

@@ -0,0 +1 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-d4d28b52"],{"1d10":function(t,s,c){"use strict";c("9b27")},"3e4a":function(t,s,c){t.exports=c.p+"static/img/backPage.1a3c5583.svg"},"61ba":function(t,s,c){t.exports=c.p+"static/img/sch.bc3dc09a.svg"},"9b27":function(t,s,c){},c928:function(t,s,c){t.exports=c.p+"static/img/logOut.c89838e6.svg"},fe96:function(t,s,c){"use strict";c.r(s);var i=function(){var t=this,s=t._self._c;return s("div",{staticClass:"appStore"},[s("div",{staticClass:"topC"},[s("img",{attrs:{src:c("3e4a"),alt:""},on:{click:t.backPage}}),s("div",[t._v(t._s(t.userinfo.username))])]),s("div",{staticClass:"infoCon"},[s("div",{staticStyle:{"font-size":"14px"}},[t._v("账户")]),s("div",{staticClass:"Blo"},[t._m(0),s("span",{staticStyle:{color:"#969BA3"}},[t._v(t._s(t.userinfo.schoolName))])]),s("div",{staticClass:"Blo",on:{click:t.exitLogin}},[t._m(1)])])])},e=[function(){var t=this,s=t._self._c;return s("div",{staticStyle:{display:"flex","align-items":"center",gap:"10px"}},[s("img",{attrs:{src:c("61ba"),alt:""}}),t._v(" 学校 ")])},function(){var t=this,s=t._self._c;return s("div",{staticStyle:{display:"flex","align-items":"center",gap:"10px"}},[s("img",{attrs:{src:c("c928"),alt:""}}),t._v(" 退出登录 ")])}],a=c("5530"),n=(c("14d9"),c("2f62")),o=c("c24f"),r={data:function(){return{}},computed:Object(a["a"])({},Object(n["c"])(["userinfo"])),methods:{backPage:function(){this.$router.push("/appStoreCopy")},exitLogin:function(){var t=this;this.$dialog({message:"是否现在退出登录?你将回到登录界面",showCancelButton:!0,beforeClose:function(s,c){"confirm"===s?Object(o["c"])().then((function(s){t.$toast({message:"退出成功",type:"success"}),t.$store.dispatch("user/logout"),window.location.reload(),c()})).catch((function(t){console.error(t),c()})):c()}})}}},l=r,u=(c("1d10"),c("2877")),f=Object(u["a"])(l,i,e,!1,null,"6ef79dc2",null);s["default"]=f.exports}}]);

+ 101 - 101
src/views/appStoreCopy/components/userInfoPage.vue

@@ -1,83 +1,80 @@
 <template>
-    <div class="appStore">
-        <div class="topC">
-            <img  @click="backPage" src="../../../assets/images/appStoreCopy/backPage.svg" alt="">
-            <div>{{ userinfo.username }}</div>
+  <div class="appStore">
+    <div class="topC">
+      <img @click="backPage" src="../../../assets/images/appStoreCopy/backPage.svg" alt="" />
+      <div>{{ userinfo.username }}</div>
+    </div>
+    <div class="infoCon">
+      <div style="font-size: 14px;">账户</div>
+      <!-- <div class="Blo">
+        <div style="display: flex;align-items: center;gap: 10px;">
+          <img src="../../../assets/images/appStoreCopy/tel.svg" alt="" />
+          账号
         </div>
-        <div class="infoCon">
-            <div style="font-size: 14px;">账户</div>
-            <div class="Blo">
-                <div style="display: flex;align-items: center;gap: 10px;">
-                    <img src="../../../assets/images/appStoreCopy/tel.svg" alt="">
-                    账号
-                </div>
-                <span style="color: #969BA3;">{{ userinfo.accountNumber }}</span>
-            </div>
-            <div class="Blo">
-                <div style="display: flex;align-items: center;gap: 10px;">
-                    <img src="../../../assets/images/appStoreCopy/sch.svg" alt="">
-                    学校
-                </div>
-                <span style="color: #969BA3;">{{ userinfo.schoolName }}</span>
-            </div>
-            <div @click="exitLogin" class="Blo">
-                <div style="display: flex;align-items: center;gap: 10px;">
-                    <img src="../../../assets/images/appStoreCopy/logOut.svg" alt="">
-                    退出登录
-                </div>
-            </div>
+        <span style="color: #969BA3;">{{ userinfo.accountNumber }}</span>
+      </div> -->
+      <div class="Blo">
+        <div style="display: flex;align-items: center;gap: 10px;">
+          <img src="../../../assets/images/appStoreCopy/sch.svg" alt="" />
+          学校
         </div>
-
+        <span style="color: #969BA3;">{{ userinfo.schoolName }}</span>
+      </div>
+      <div @click="exitLogin" class="Blo">
+        <div style="display: flex;align-items: center;gap: 10px;">
+          <img src="../../../assets/images/appStoreCopy/logOut.svg" alt="" />
+          退出登录
+        </div>
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
 import { mapGetters } from 'vuex'
 import { loginOut } from '@/api/user'
 
-    export default {
-        data(){
-            return{
-
-            }
-        },
-        computed: {
-            ...mapGetters(['userinfo']),
-        },
-        methods:{
-            backPage(){
-                this.$router.push('/appStoreCopy')
-            },
-            // 退出登录
-            exitLogin() {
-                this.$dialog({
-                    message: '是否现在退出登录?你将回到登录界面',
-                    showCancelButton: true,
-                    beforeClose: (action, done) => {
-                    if (action === 'confirm') {
-                        loginOut()
-                        .then(res => {
-                            this.$toast({
-                            message: '退出成功',
-                            type: 'success'
-                            })
-                            this.$store.dispatch('user/logout')
-                            window.location.reload()
-                            done()
-                        })
-                        .catch(err => {
-                            console.error(err)
-                            done()
-                        })
-                    } else {
-                        // 拦截取消操作
-                        done()
-                    }
-                    }
+export default {
+  data() {
+    return {}
+  },
+  computed: {
+    ...mapGetters(['userinfo'])
+  },
+  methods: {
+    backPage() {
+      this.$router.push('/appStoreCopy')
+    },
+    // 退出登录
+    exitLogin() {
+      this.$dialog({
+        message: '是否现在退出登录?你将回到登录界面',
+        showCancelButton: true,
+        beforeClose: (action, done) => {
+          if (action === 'confirm') {
+            loginOut()
+              .then(res => {
+                this.$toast({
+                  message: '退出成功',
+                  type: 'success'
                 })
-            },
+                this.$store.dispatch('user/logout')
+                window.location.reload()
+                done()
+              })
+              .catch(err => {
+                console.error(err)
+                done()
+              })
+          } else {
+            // 拦截取消操作
+            done()
+          }
         }
+      })
     }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
@@ -92,42 +89,45 @@ import { loginOut } from '@/api/user'
   overflow: auto;
 }
 .topC {
-    display: flex;
-    justify-content: center;
-    width: 100%;
-    align-items: center;
-    height: 50px;
-    padding: 0px 12px;
-    box-sizing: border-box;
-    position: relative;
-    font-family: PingFang HK;
-    font-weight: 600;
-    font-size: 15px;
-    line-height: 20px;
-    flex-shrink: 0;
-  img{
-    position: absolute;top: 50%;left: 10px;transform: translate(0,-50%);
+  display: flex;
+  justify-content: center;
+  width: 100%;
+  align-items: center;
+  height: 50px;
+  padding: 0px 12px;
+  box-sizing: border-box;
+  position: relative;
+  font-family: PingFang HK;
+  font-weight: 600;
+  font-size: 15px;
+  line-height: 20px;
+  flex-shrink: 0;
+  img {
+    position: absolute;
+    top: 50%;
+    left: 10px;
+    transform: translate(0, -50%);
     width: 23px;
   }
 }
-.infoCon{
-    margin-top: 35px;
-    padding: 15px;
-    box-sizing: border-box;
-    display: flex;
-    flex-direction: column;
-    gap: 10px;
-    font-family: PingFang HK;
-    font-weight: 400;
-    font-size: 14px;
+.infoCon {
+  margin-top: 35px;
+  padding: 15px;
+  box-sizing: border-box;
+  display: flex;
+  flex-direction: column;
+  gap: 10px;
+  font-family: PingFang HK;
+  font-weight: 400;
+  font-size: 14px;
 
-    .Blo{
-        display: flex;
-        justify-content: space-between;
-        background: #fff;
-        align-items: center;
-        padding: 15px 20px;
-        border-radius: 10px;
-    }
+  .Blo {
+    display: flex;
+    justify-content: space-between;
+    background: #fff;
+    align-items: center;
+    padding: 15px 20px;
+    border-radius: 10px;
+  }
 }
-</style>
+</style>

+ 316 - 309
src/views/appStoreCopy/index.vue

@@ -23,7 +23,7 @@
         get-container="#appStoreCon"
         position="left"
         :overlay-style="{ opacity: 0 }"
-        :style="{ height: '92vh', transform: 'translate3d(0,0%, 0)', width: '45%', minWidth: '150px', opacity: .95}"
+        :style="{ height: '92vh', transform: 'translate3d(0,0%, 0)', width: '45%', minWidth: '150px', opacity: 0.95 }"
       >
         <div class="popupCon">
           <div class="popTop">
@@ -33,16 +33,20 @@
             <!-- <div>关注公众号</div> -->
           </div>
           <div class="popupBot" @click="goInfo">
-            <img style="width: 40px;height: 100%;object-fit: contain;color: #000;" src="../../assets/images/appStoreCopy/toux.png" alt="" />
+            <img
+              style="width: 40px;height: 100%;object-fit: contain;color: #000;"
+              src="../../assets/images/appStoreCopy/toux.png"
+              alt=""
+            />
             <div style="flex: 1;display: flex;flex-direction: column;gap: 5px;">
               <div style="font-size: 16px;font-weight: 600;">{{ userinfo.name }}</div>
-              <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{ userSuffix() }}</div>
+              <!-- <div style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{ userSuffix() }}</div> -->
             </div>
           </div>
         </div>
       </van-popup>
 
-        <van-tabs
+      <van-tabs
         @change="getData"
         @touchmove.stop="handleTouchMove"
         background="#F9F8F8"
@@ -51,76 +55,89 @@
         v-model="tabType"
         style="position: relative"
       >
-        <img @click="openSel" style="position: absolute;right: 10px;top: 15px;" src="../../assets/images/appStoreCopy/arrowup.svg" alt="">
+        <img
+          @click="openSel"
+          style="position: absolute;right: 10px;top: 15px;"
+          src="../../assets/images/appStoreCopy/arrowup.svg"
+          alt=""
+        />
         <div v-if="selXia" class="xiaH">
-          <div class="xiaHCon" @click="CutTab(i.id)" v-for="(i,index) in typeList" :key="index">
+          <div class="xiaHCon" @click="CutTab(i.id)" v-for="(i, index) in typeList" :key="index">
             {{ i.name }}
           </div>
         </div>
-          <van-tab v-for="(i, index) in typeList" class="appBlocks" :key="index" :name="i.id" :title="i.name">
-            <template v-if="dataList.length">
-              <div v-for="(i, ind) in dataList" @click="openUrl(i.url)" :key="ind + 'a'" class="appBlock">
-                <div class="appBlockTop">
-                  <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 10px;">
-                    <img class="appBlockTopImg" :src="i.json.icon" alt="" />
-                    <!-- <img style="width: 16px;" src="../../assets/images/appStoreCopy/appde.svg" alt="" /> -->
-                  </div>
-                  <div class="appBlockTopTit">{{ i.name }}</div>
-                  <div style="display: flex;align-items: center;">
-                    <div style="display: flex;gap: 5px;">
-                      <span class="ATag">{{ i.label == 'workflow' ? '工作流' :'智能体' }}</span>
-                      <span class="ATag" v-if="i.tag">
-                        <img style="width: 30%;" :src="i.tag == 1 || !i.tag ?
-                              require('../../assets/images/appStoreCopy/dul.svg') 
-                              : require('../../assets/images/appStoreCopy/hz.svg')" 
-                              alt=""> {{ i.tag == '1' || !i.tag ? '官方' :'精选' }}
-                      </span>
-                      <span
-                       class="ATag"
-                        v-if="
-                          ['agent'].includes(i.label) ||
-                          (['workflow'].includes(i.label) && i.json.modes)
+        <van-tab v-for="(i, index) in typeList" class="appBlocks" :key="index" :name="i.id" :title="i.name">
+          <template v-if="dataList.length">
+            <div v-for="(i, ind) in dataList" @click="openUrl(i.url)" :key="ind + 'a'" class="appBlock">
+              <div class="appBlockTop">
+                <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 10px;">
+                  <img class="appBlockTopImg" :src="i.json.icon" alt="" />
+                  <!-- <img style="width: 16px;" src="../../assets/images/appStoreCopy/appde.svg" alt="" /> -->
+                </div>
+                <div class="appBlockTopTit">{{ i.name }}</div>
+                <div style="display: flex;align-items: center;">
+                  <div style="display: flex;gap: 5px;">
+                    <span class="ATag">{{ i.label == 'workflow' ? '工作流' : '智能体' }}</span>
+                    <span class="ATag" v-if="i.tag">
+                      <img
+                        style="width: 30%;"
+                        :src="
+                          i.tag == 1 || !i.tag
+                            ? require('../../assets/images/appStoreCopy/dul.svg')
+                            : require('../../assets/images/appStoreCopy/hz.svg')
                         "
-                      >
-                        <template v-if="i.label === 'agent'">聊天式</template>
-                        <template v-else-if="i.json.modes">{{
-                          wayList[i.json.modes[0]]
-                        }}</template>
-                      </span>
-                    </div>
+                        alt=""
+                      />
+                      {{ i.tag == '1' || !i.tag ? '官方' : '精选' }}
+                    </span>
+                    <span
+                      class="ATag"
+                      v-if="['agent'].includes(i.label) || (['workflow'].includes(i.label) && i.json.modes)"
+                    >
+                      <template v-if="i.label === 'agent'">聊天式</template>
+                      <template v-else-if="i.json.modes">{{ wayList[i.json.modes[0]] }}</template>
+                    </span>
                   </div>
                 </div>
-                <div class="appBlockBot">
-                  <span>{{ i.username }}</span>
-                  <div class="appBlockBotCol">
-                    <div style="display: flex;align-items: center;">
-                      <img @click.stop="delAllOP(i.id,0)" v-if="collList.some(item => item.id === i.id)" src="../../assets/images/appStoreCopy/star1.svg" alt="" />
-                      <img @click.stop="addAllOP(i,0)" v-else src="../../assets/images/appStoreCopy/star.svg" alt="" />
-                      {{ i.collectCount }}
-                    </div>
-                    <div  style="display: flex;align-items: center;">
-                      <img @click.stop="delAllOP(i.id,2)" v-if="likeList.some(item => item.id === i.id)" src="../../assets/images/appStoreCopy/xin1.svg" alt="" />
-                      <img @click.stop="addAllOP(i,2)" v-else src="../../assets/images/appStoreCopy/xin.svg" alt="" />
-                      {{ i.likeCount }}
-                    </div>
-
+              </div>
+              <div class="appBlockBot">
+                <span>{{ i.username }}</span>
+                <div class="appBlockBotCol">
+                  <div style="display: flex;align-items: center;">
+                    <img
+                      @click.stop="delAllOP(i.id, 0)"
+                      v-if="collList.some(item => item.id === i.id)"
+                      src="../../assets/images/appStoreCopy/star1.svg"
+                      alt=""
+                    />
+                    <img @click.stop="addAllOP(i, 0)" v-else src="../../assets/images/appStoreCopy/star.svg" alt="" />
+                    {{ i.collectCount }}
+                  </div>
+                  <div style="display: flex;align-items: center;">
+                    <img
+                      @click.stop="delAllOP(i.id, 2)"
+                      v-if="likeList.some(item => item.id === i.id)"
+                      src="../../assets/images/appStoreCopy/xin1.svg"
+                      alt=""
+                    />
+                    <img @click.stop="addAllOP(i, 2)" v-else src="../../assets/images/appStoreCopy/xin.svg" alt="" />
+                    {{ i.likeCount }}
                   </div>
                 </div>
               </div>
-            </template>
-            <div v-else style="position: absolute;left: 50%;top: 30%;transform: translate(-50%,-50%);">
-              暂无数据哦~
             </div>
-            <!-- <div v-if="isShow" 
+          </template>
+          <div v-else style="position: absolute;left: 50%;top: 30%;transform: translate(-50%,-50%);">
+            暂无数据哦~
+          </div>
+          <!-- <div v-if="isShow"
               class="zzcl"
             >
                 加载中...
             </div> -->
-          </van-tab>
-        </van-tabs>
-        <div>
-        </div>
-      
+        </van-tab>
+      </van-tabs>
+      <div></div>
     </div>
 
     <!-- 侧边栏遮罩层 -->
@@ -130,34 +147,34 @@
       style="position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: #000;opacity: 0"
     ></div>
 
-    <van-popup 
-    overlay-class="comCss" 
-    v-model="comShow" 
-    round 
-    :closeable="true"
-    position="bottom" 
-    class="Vpop"
-     >
-    <div class="comCssTit">
+    <van-popup overlay-class="comCss" v-model="comShow" round :closeable="true" position="bottom" class="Vpop">
+      <div class="comCssTit">
         电脑端开启更多高效体验
-    </div>
-    <img style="width: 170px;" src="../../assets/images/appStoreCopy/comp.svg" alt="">
-    <div class="cpmUrl"  @click="copyUrl">
-      <div>
-        https://cloud.cocorobo.cn/
       </div>
-      <img style="margin-left: 5px;height: 16.8px;" src="../../assets/images/appStoreCopy/copyIco.svg" alt="">
-    </div>
-    <div class="comBot">
-      复制网址,去电脑端浏览器访问吧
-    </div>
-  </van-popup>
+      <img style="width: 170px;" src="../../assets/images/appStoreCopy/comp.svg" alt="" />
+      <div class="cpmUrl" @click="copyUrl">
+        <div>
+          https://cloud.cocorobo.cn/
+        </div>
+        <img style="margin-left: 5px;height: 16.8px;" src="../../assets/images/appStoreCopy/copyIco.svg" alt="" />
+      </div>
+      <div class="comBot">
+        复制网址,去电脑端浏览器访问吧
+      </div>
+    </van-popup>
   </div>
 </template>
 
 <script>
 import { mapGetters } from 'vuex'
-import { getStoreType, getStoreCopy, insert_appStoreSave,select_appStoreSave,delete_appStoreSave,select_appStorJuri } from '@/api/appStore'
+import {
+  getStoreType,
+  getStoreCopy,
+  insert_appStoreSave,
+  select_appStoreSave,
+  delete_appStoreSave,
+  select_appStorJuri
+} from '@/api/appStore'
 import appStorePopup from './components/appStorePopup.vue'
 import { Dialog, Toast } from 'vant'
 const clickOutside = {
@@ -183,7 +200,7 @@ const clickOutside = {
 }
 
 export default {
-  name: 'appStore',
+  name: 'AppStore',
   components: {
     appStorePopup
   },
@@ -194,31 +211,27 @@ export default {
     return {
       tabType: 0,
       CeShow: false,
-      isShow: false, //loading
-      comShow:false, //电脑端链接
-      dataList: [], //应用列表
-      typeList: [], //tab栏
-      // showType: '', 
-      searchText: '', //查询框文字
-      selectJuri: 3, 
-      collList:[], //用户收藏
-      likeList:[], //用户喜欢
-      tabPage:'',
-      ZeShow:false,
-      selXia:false,
+      isShow: false, // loading
+      comShow: false, // 电脑端链接
+      dataList: [], // 应用列表
+      typeList: [], // tab栏
+      // showType: '',
+      searchText: '', // 查询框文字
+      selectJuri: 3,
+      collList: [], // 用户收藏
+      likeList: [], // 用户喜欢
+      tabPage: '',
+      ZeShow: false,
+      selXia: false,
       // selectList: [
       //   { index: 1, label: '我的' },
       //   { index: 2, label: '组织' },
       //   { index: 3, label: '所有人' }
       // ],
-      wayList: [
-				'聊天室',
-				'卡片式',
-				'沉浸式',
-			],
+      wayList: ['聊天室', '卡片式', '沉浸式'],
       // 权限标签
-      juriListData:[],
-      tagList:[],
+      juriListData: [],
+      tagList: [],
       showCardId: null
     }
   },
@@ -237,55 +250,52 @@ export default {
       }
     },
     userSuffix() {
-			let yym = "";
-			return function () {
-				// this.userinfo.role == 1 && this.userinfo.rrole == 1 && this.userinfo.type == 1 &&
-				yym = this.userinfo;
-
-				let val = yym.accountNumber;
-
-				let userName = JSON.parse(JSON.stringify(val));
-
-				const regEmail = new RegExp(
-					"^[A-Za-z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"
-				);
-
-				// // 判断用户输入账户带不带后缀
-				if (!regEmail.test(userName)) {
-					console.log("111");
-				} else {
-					const parts = userName.split("@");
-					userName = parts[0];
-				}
-
-				return userName;
-			};
-		}
+      let yym = ''
+      return function() {
+        // this.userinfo.role == 1 && this.userinfo.rrole == 1 && this.userinfo.type == 1 &&
+        yym = this.userinfo
+
+        const val = yym.accountNumber
+
+        let userName = JSON.parse(JSON.stringify(val))
+
+        const regEmail = new RegExp('^[A-Za-z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$')
+
+        // // 判断用户输入账户带不带后缀
+        if (!regEmail.test(userName)) {
+          console.log('111')
+        } else {
+          const parts = userName.split('@')
+          userName = parts[0]
+        }
+
+        return userName
+      }
+    }
   },
   methods: {
-    
     async copyUrl() {
-      const url = "https://cloud.cocorobo.cn/";
+      const url = 'https://cloud.cocorobo.cn/'
       try {
-        await navigator.clipboard.writeText(url);
+        await navigator.clipboard.writeText(url)
         Toast({
           message: '链接已复制!',
-          position: 'top',
-        });
+          position: 'top'
+        })
       } catch (err) {
-        console.error("复制失败:", err);
+        console.error('复制失败:', err)
         Toast({
           message: '复制失败,请手动复制',
-          position: 'top',
-        });
+          position: 'top'
+        })
       }
     },
     // 跳转个人信息页
-    goInfo(){
+    goInfo() {
       this.$router.push('/userInfoPage')
     },
     // 跳转查询页面
-    searchPage(){
+    searchPage() {
       this.$router.push('/searchL')
     },
     // 阻止触摸移动事件的默认行为
@@ -315,21 +325,21 @@ export default {
       }
       this.tabPage = val
       this.isShow = true
-      let params = {
+      const params = {
         uid: this.userinfo.userid,
         name: this.searchText,
         label: '',
         type: val == 'k11' ? '' : val,
         juri: selectJuri,
         stand: this.userinfo.schoolArea,
-        status:'',
-        model:'',
-        exportType:''
+        status: '',
+        model: '',
+        exportType: ''
       }
 
       getStoreCopy(params)
         .then(res => {
-          let _data = res[0]
+          const _data = res[0]
           if (_data.length > 0) {
             _data.forEach(i => {
               if (i.json) {
@@ -351,116 +361,115 @@ export default {
         })
     },
     // 添加收藏0 喜欢2
-    addAllOP(val,typeL){
-      console.log(val,typeL);
-
-      let params = [
-          {
-            uid: this.userinfo.userid, 
-            type: typeL, 
-            aid: val.id, 
-            json: '',
+    addAllOP(val, typeL) {
+      console.log(val, typeL)
+
+      const params = [
+        {
+          uid: this.userinfo.userid,
+          type: typeL,
+          aid: val.id,
+          json: ''
+        }
+      ]
+      insert_appStoreSave(params)
+        .then(res => {
+          // console.log(res);
+          // this.getData(this.tabPage)
+          if (typeL == 0) {
+            this.dataList.forEach(e => {
+              if (e.id == val.id) {
+                e.collectCount = e.collectCount + 1
+              }
+            })
+          } else {
+            this.dataList.forEach(e => {
+              if (e.id == val.id) {
+                e.likeCount = e.likeCount + 1
+              }
+            })
           }
-        ]
-        insert_appStoreSave(params)
-          .then(res => {
-            // console.log(res);
-            // this.getData(this.tabPage)
-            if (typeL == 0) {
-                this.dataList.forEach(e=>{
-                  if (e.id == val.id) {
-                    e.collectCount = e.collectCount + 1
-                  }
-                })
-            }else{
-                this.dataList.forEach(e=>{
-                  if (e.id == val.id) {
-                    e.likeCount = e.likeCount+1
-                  }
-                })
-            }
-            this.getAllOP(typeL)
-          })
-          .catch(err => {
-            console.log(err)
-            this.$message.error('添加失败')
-          })
+          this.getAllOP(typeL)
+        })
+        .catch(err => {
+          console.log(err)
+          this.$message.error('添加失败')
+        })
     },
     // 删除收藏0 喜欢2
-    delAllOP(val,type){
-      console.log(val,type);
-      
-        let kD = ''
-        if (type == 0) {
-           kD = this.collList.find(e => val === e.id )
-        } else {
-           kD = this.likeList.find(e => val === e.id )
+    delAllOP(val, type) {
+      console.log(val, type)
+
+      let kD = ''
+      if (type == 0) {
+        kD = this.collList.find(e => val === e.id)
+      } else {
+        kD = this.likeList.find(e => val === e.id)
+      }
+
+      const params = [
+        {
+          sid: kD.sid
         }
-      
-        
-        let params = [
-          {
-            sid: kD.sid
-          }
-        ]
-        
-        delete_appStoreSave(params)
-          .then(res => {
-            console.log(res);
-              // this.getData(this.tabPage)
-
-              if (type == 0) {
-                  this.dataList.forEach(e=>{
-                    if (e.id == val) {
-                      e.collectCount = e.collectCount-1
-                    }
-                  })
-              }else{
-                  this.dataList.forEach(e=>{
-                    if (e.id == val) {
-                      e.likeCount = e.likeCount-1
-                    }
-                  })
+      ]
+
+      delete_appStoreSave(params)
+        .then(res => {
+          console.log(res)
+          // this.getData(this.tabPage)
+
+          if (type == 0) {
+            this.dataList.forEach(e => {
+              if (e.id == val) {
+                e.collectCount = e.collectCount - 1
+              }
+            })
+          } else {
+            this.dataList.forEach(e => {
+              if (e.id == val) {
+                e.likeCount = e.likeCount - 1
               }
-              this.getAllOP(type)
-          })
-          .catch(err => {
-            console.log(err)
-            this.$message.error('操作失败')
-          })
+            })
+          }
+          this.getAllOP(type)
+        })
+        .catch(err => {
+          console.log(err)
+          this.$message.error('操作失败')
+        })
     },
     // 获取2点赞 与0收藏
-    getAllOP(val){
-        let params = {
-            uid: this.userinfo.userid,
-            type: val,
-				    limit: 0,
-        }
-        select_appStoreSave(params)
-          .then(res => {
-            if (val == 0) {
-              this.collList = res[0];
-            }else{
-              this.likeList = res[0];
-            }
-          })
-          .catch(err => {
-            console.log(err)
-            this.$toast.error('获取用户点赞应用失败')
-          })
+    getAllOP(val) {
+      const params = {
+        uid: this.userinfo.userid,
+        type: val,
+        limit: 0
+      }
+      select_appStoreSave(params)
+        .then(res => {
+          if (val == 0) {
+            this.collList = res[0]
+          } else {
+            this.likeList = res[0]
+          }
+        })
+        .catch(err => {
+          console.log(err)
+          this.$toast.error('获取用户点赞应用失败')
+        })
     },
     getAllStoreType() {
-      let params = {
+      const params = {
         suserid: this.userinfo.userid,
         sorg: this.userinfo.org,
         soid: this.userinfo.organizeid,
         sstand: this.userinfo.schoolArea,
-        exportType:''
+        exportType: ''
       }
 
       getStoreType(params)
         .then(res => {
-          let _data = res[0]
+          const _data = res[0]
           if (_data.length > 0) {
             this.typeList = _data
             this.typeList.unshift({ id: 'k11', name: '我的' })
@@ -478,58 +487,47 @@ export default {
       window.open(url, '_blank')
     },
     setDataTag(_list) {
-			let _result = _list;
-			_result.forEach((item) => {
-				if (
-					this.juriListData.find(
-						(i) => i.jid === item[i.type] && i.utype === "1"
-					) &&
-					item.juri == "3"
-				) {
-					item.tag = "1"; //官方
-				} else if (
-					this.juriListData.find(
-						(i) => i.jid === item[i.type] && i.utype === "2"
-					) &&
-					item.juri == "3"
-				) {
-					item.tag = "2"; //精选
-				} else if (item.role === 1 && item.juri == "2") {
-					item.tag = "3"; //专属
-				} else if (item.juri === "2") {
-					item.tag = "4"; //组织
-				} else if (item.userid === this.userinfo.userid && item.juri === "1") {
-					item.tag = "5"; //个人
-				}
-			});
-      
-			return _result;
-		},
-    openSel(){
+      const _result = _list
+      _result.forEach(item => {
+        if (this.juriListData.find(i => i.jid === item[i.type] && i.utype === '1') && item.juri == '3') {
+          item.tag = '1' // 官方
+        } else if (this.juriListData.find(i => i.jid === item[i.type] && i.utype === '2') && item.juri == '3') {
+          item.tag = '2' // 精选
+        } else if (item.role === 1 && item.juri == '2') {
+          item.tag = '3' // 专属
+        } else if (item.juri === '2') {
+          item.tag = '4' // 组织
+        } else if (item.userid === this.userinfo.userid && item.juri === '1') {
+          item.tag = '5' // 个人
+        }
+      })
+
+      return _result
+    },
+    openSel() {
       this.selXia = true
       this.ZeShow = true
     },
-    CutTab(val){
+    CutTab(val) {
       this.tabType = val
       this.selXia = false
       this.ZeShow = false
       this.getData(val)
     },
 
-   	//获取显示标权限
-		getAppStoreJuri() {
-        select_appStorJuri({})
-          .then(res => {
-            this.juriListData = res[0];
-           	if (this.dataList.length > 0) {
-							this.dataList = JSON.parse(JSON.stringify(this.setDataTag(this.dataList)));
-						}
-          })
-          .catch(err => {
-            console.log(err)
-          })
-		},
-    
+    // 获取显示标权限
+    getAppStoreJuri() {
+      select_appStorJuri({})
+        .then(res => {
+          this.juriListData = res[0]
+          if (this.dataList.length > 0) {
+            this.dataList = JSON.parse(JSON.stringify(this.setDataTag(this.dataList)))
+          }
+        })
+        .catch(err => {
+          console.log(err)
+        })
+    }
   },
   mounted() {
     this.getData()
@@ -587,14 +585,14 @@ export default {
     display: flex;
     align-items: center;
     gap: 10px;
-    background: #F3F3F3;
+    background: #f3f3f3;
     border-radius: 8px;
     padding: 5px 8px;
   }
 }
 .appBlocks {
   position: relative;
- 
+
   display: grid;
   grid-template-columns: repeat(auto-fill, minmax(40%, 1fr)); /* 自适应列 */
   align-items: start;
@@ -652,7 +650,7 @@ export default {
         display: flex;
         align-items: center;
         flex-shrink: 0;
-        img{
+        img {
           margin-right: 2px;
         }
       }
@@ -666,12 +664,12 @@ export default {
       justify-content: space-between;
       font-size: 14px !important;
       box-sizing: border-box;
-      color: rgba(40,47,60,0.8) !important;
+      color: rgba(40, 47, 60, 0.8) !important;
       .appBlockBotCol {
         display: flex;
         align-items: center;
         gap: 8px;
-        img{
+        img {
           width: 20px;
         }
       }
@@ -696,31 +694,31 @@ export default {
   overflow-x: hidden;
   width: 100%;
 }
-/deep/ .comCss{
-    background: rgba(158, 152, 152, 0.4);
-    backdrop-filter: blur(3px);
+/deep/ .comCss {
+  background: rgba(158, 152, 152, 0.4);
+  backdrop-filter: blur(3px);
 }
-/deep/ .van-tabs__wrap{
+/deep/ .van-tabs__wrap {
   padding-right: 30px !important;
 }
-.Vpop{
-      padding: 20px 30px;
-      box-sizing: border-box;
-      height: 350px;
-      display: flex;
-      flex-direction: column;
-      align-items: center;
+.Vpop {
+  padding: 20px 30px;
+  box-sizing: border-box;
+  height: 350px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
 }
-.comCssTit{
+.comCssTit {
   font-family: PingFang HK;
   font-weight: 600;
   font-size: 20px;
   line-height: 20px;
-  color: #0663FE;
+  color: #0663fe;
   margin-bottom: 20px;
 }
-.cpmUrl{
-  background: #3681FC;
+.cpmUrl {
+  background: #3681fc;
   border-radius: 12px;
   padding: 10px 20px;
   box-sizing: border-box;
@@ -733,25 +731,33 @@ export default {
   font-size: 12px;
   margin: 10px 0 20px;
 }
-.comBot{
+.comBot {
   font-family: PingFang HK;
   font-weight: 400;
   font-size: 14px;
   line-height: 20px;
   color: #000;
 }
-.zzcl{
-      position: absolute;
-      left: 0%;top: 0%;
-      background: #fff;
-      width: 100%;height: 100%;opacity: .6;
-      display: flex;justify-content: center;line-height: 350px;
-      font-size: 16px;
-      color: #000;
+.zzcl {
+  position: absolute;
+  left: 0%;
+  top: 0%;
+  background: #fff;
+  width: 100%;
+  height: 100%;
+  opacity: 0.6;
+  display: flex;
+  justify-content: center;
+  line-height: 350px;
+  font-size: 16px;
+  color: #000;
 }
-.xiaH{
-  position: absolute;left: 0;top: 44px;
-  z-index: 999;width: 100%;
+.xiaH {
+  position: absolute;
+  left: 0;
+  top: 44px;
+  z-index: 999;
+  width: 100%;
   background-color: rgb(232, 232, 233);
   border-radius: 0 0 15px 15px;
   box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
@@ -761,11 +767,12 @@ export default {
   flex-wrap: wrap;
   gap: 10px;
   min-height: 100px;
-  .xiaHCon{
+  .xiaHCon {
     // flex-shrink: 0;
     width: auto;
     height: 30px;
-    background: #fff;display: flex;
+    background: #fff;
+    display: flex;
     align-items: center;
     border-radius: 5px;
     padding: 0 10px;

+ 11 - 3
src/views/wechatAuth/index.vue

@@ -27,7 +27,7 @@
         <van-icon name="wechat" color="#07c160" size="48" />
         <p>微信授权</p>
         <p class="auth-desc">请点击下方按钮进行微信授权</p>
-        <van-button type="primary" @click="startAuth">开始授权</van-button>
+        <van-button type="primary" @click="startAuth">{{ Loading ? '授权中...' : '开始授权' }}</van-button>
       </div>
     </div>
   </div>
@@ -46,7 +46,8 @@ export default {
       userInfo: {},
       errorMessage: '',
       redirect: '',
-      code: ''
+      code: '',
+      Loading: false
     }
   },
   computed: {
@@ -99,6 +100,9 @@ export default {
 
     // 开始微信授权
     startAuth() {
+      if (this.Loading) {
+        return
+      }
       this.authStatus = 'loading'
 
       // 构建微信授权URL
@@ -118,7 +122,7 @@ export default {
 
       try {
         this.authStatus = 'loading'
-
+        this.Loading = true
         // 调用后端接口,用code换取access_token和用户信息
         const result = await this.exchangeCodeForToken(this.code)
         console.log(result)
@@ -157,6 +161,7 @@ export default {
               if (!redirect_uri || redirect_uri === 'undefined') {
                 redirect_uri = ''
               }
+              this.Loading = false
               console.log(redirect_uri)
               if (redirect_uri) {
                 Cookies.remove('redirectUri')
@@ -166,17 +171,20 @@ export default {
               }
             })
             .catch(error => {
+              this.Loading = false
               console.log('error', error)
               setTimeout(() => {
                 this.$router.replace('/login2')
               }, 2000)
             })
         } else {
+          this.Loading = false
           throw new Error(result.message || '授权失败')
         }
       } catch (error) {
         console.error('微信授权失败:', error)
         this.authStatus = 'error'
+        this.Loading = false
         this.errorMessage = error.message || '授权失败,请重试'
 
         // 如果授权失败,跳转到登录页面

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio