Explorar o código

Merge branch 'develop' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop

CrazyIter_Bin %!s(int64=2) %!d(string=hai) anos
pai
achega
27024a54d4

+ 12 - 5
TEAMModelBI/ClientApp/src/view/created/created.vue

@@ -723,10 +723,11 @@ export default {
       console.log(parameter, '创建学校最后的数据格式')
       proxy.$api.createdSchools(parameter).then((res) => {
         loadingCreatedschool.close()
-        res.state === 200
-          ? (ElMessage.success(proxy.$t(`commonMsg.schoolCreatedSuccess`)), router.push({ path: '/home/schoolmanage' }))
-          : res.state === 201
-            ? res.schools.length !== 0 ? ElMessage.info(proxy.$t(`commonMsg.schoolExist`)) : res.userScs.length !== 0 ? ElMessage.info('请完善学校管理员信息') : ElMessage.error('数据异常,创建失败,请检查')
+        res.state === 200 ? (ElMessage.success(proxy.$t(`commonMsg.schoolCreatedSuccess`)), router.push({ path: '/home/schoolmanage' }))
+          : res.state === 201 ? res.schools.length !== 0 ? ElMessage.info(proxy.$t(`commonMsg.schoolExist`))
+            : res.userScs.length !== 0 ? ElMessage.info('请完善学校管理员信息')
+              : res.cutArea.length !== 0 ? ElMessage.error('已有学区,开启研修计划,无法进行归属学区')
+                : ElMessage.error('数据异常,创建失败,请检查')
             : ElMessage.error(proxy.$t(`commonMsg.schoolCreatedError`))
         createdSchoolLoading.value = false
         console.log(model, 'model值')
@@ -894,8 +895,14 @@ export default {
             res.userScs.forEach((y) => {
               y.name === batchData.value[i].name && y.type === batchData.value[i].type ? batchData.value[i].state = false : ''
             })
+            res.cutArea.forEach((z) => {
+              z.name === batchData.value[i].name && z.type === batchData.value[i].type ? batchData.value[i].state = false : ''
+            })
           }
-          res.schools.length !== 0 ? ElMessage.error('学校信息有误,请重新编辑学校信息') : res.userScs.length !== 0 ? ElMessage.error('未找到匹配的管理员信息,请重新编辑') : ElMessage.error('数据异常,创建失败,请检查')
+          res.schools.length !== 0 ? ElMessage.error('学校信息有误,请重新编辑学校信息')
+            : res.userScs.length !== 0 ? ElMessage.error('未找到匹配的管理员信息,请重新编辑')
+              : res.cutArea.length !== 0 ? ElMessage.error('已有学区,开启研修计划,无法进行归属学区')
+                : ElMessage.error('数据异常,创建失败,请检查')
           // ElMessage.warning('部分学校已存在,请不要重新创建!')
           // batchCreatedResult.value=batchData.value
           batchCreatedSchool.value = true

+ 36 - 34
TEAMModelOS/ClientApp/src/api/index.js

@@ -32,6 +32,7 @@ import service from './service'
 import notice from './notice'
 import ability from './ability';
 import jyzx from './jyzx'
+import thirdparty from './thirdparty'
 import train from './train'
 import common from './common'
 import lessonRecord from './lessonRecord'
@@ -73,109 +74,110 @@ export default {
     common,
     lessonRecord,
     auth,
+    thirdparty,
     // 获取登录跳转链接
-    getLoginLink: function (data) {
+    getLoginLink: function(data) {
         return post('api/login/login', data)
     },
     // 验证登录
-    checkLogin: function (data) {
+    checkLogin: function(data) {
         return post('api/login/CheckLogin', data)
     },
     // 获取登录人员角色列表
-    getLoginRoles: function (data) {
+    getLoginRoles: function(data) {
         return post('api/role/GetLoginRoles', data)
     },
     // 查找地区对应学校列表
-    getSchoolList: function (data) {
+    getSchoolList: function(data) {
         return post('api/School/getSchool', data)
     },
     // 根据当前登录用户获取已授权的AI智慧学校
-    getAuthSchool: function (data) {
+    getAuthSchool: function(data) {
         return post('api/School/AuthorizedAISchool', data)
     },
     // 获取全部科目
-    FindSubjectsByDict: function (data) {
+    FindSubjectsByDict: function(data) {
         return post('api/subject/FindSubjectsByDict', data)
     },
     // 获取当前学校全部科目
-    FindSchoolSubjectsByDict: function (data) {
+    FindSchoolSubjectsByDict: function(data) {
         return post('api/subject/FindSchoolSubjectsByDict', data)
     },
     // 获取当前学校全部册别
-    FindSchoolVolumesByDict: function (data) {
+    FindSchoolVolumesByDict: function(data) {
         return post('api/volume/FindSchoolVolumesByDict', data)
     },
     // 获取当前学校全部学段
-    FindSchoolPeriodsByDict: function (data) {
+    FindSchoolPeriodsByDict: function(data) {
         return post('api/period/FindSchoolPeriodsByDict', data)
     },
     // 获取当前学校全部年级
-    FindSchoolGradesByDict: function (data) {
+    FindSchoolGradesByDict: function(data) {
         return post('api/grade/FindSchoolGradesByDict', data)
     },
     // 获取当前学校全部学期
-    FindSchoolTermsByDict: function (data) {
+    FindSchoolTermsByDict: function(data) {
         return post('api/term/FindSchoolTermsByDict', data)
     },
 
 
     // 获取登录人员身份信息
-    getLoginClaim: function (data) {
+    getLoginClaim: function(data) {
         return post('api/role/GetLoginClaim', data)
     },
 
     // 新建习题保存到题库
-    SaveItemBank: function (data) {
+    SaveItemBank: function(data) {
         return post('api/evaluation/ItemBank', data)
     },
 
     // 新建试卷到试卷库
-    SaveTestPaper: function (data) {
+    SaveTestPaper: function(data) {
         return post('api/Evaluation/testPaper', data)
     },
 
     // 新建试卷到试卷库
-    SaveAnalyzeHtml: function (data) {
+    SaveAnalyzeHtml: function(data) {
         return post('/import/parse-html', data)
     },
 
     // 获取所有学校信息
-    GetAllSchool: function (data) {
+    GetAllSchool: function(data) {
         return post('api/school/GetAllSchool', data)
     },
 
     // 取得所有學校(只取基本資料)
-    GetAllSchoolBaesInfo: function (data) {
+    GetAllSchoolBaesInfo: function(data) {
         return post('/school/init/get-all-school-base', data)
     },
 
     // 根据条件获取学段
-    FindPeriodsByDict: function (data) {
+    FindPeriodsByDict: function(data) {
         return post('api/period/FindPeriodsByDict', data)
     },
 
     // 根据条件获取年级
-    FindGradesByDict: function (data) {
+    FindGradesByDict: function(data) {
         return post('api/grade/FindGradesByDict', data)
     },
     // 根据条件获取学科
-    FindSubjectsByDict: function (data) {
+    FindSubjectsByDict: function(data) {
         return post('api/subject/FindSubjectsByDict', data)
     },
 
 
     /*
-      *评测
-      */
+     *评测
+     */
     // 上传图片
-    UploadFile: function (data) {
+    UploadFile: function(data) {
         return post('/api/file/uploadFile', data)
     },
 
     /**
      * 通用查询接口
      */
-    FindCollection: function (data) {
+    FindCollection: function(data) {
         return post('/api/Common/FindCollection', data)
     },
 
@@ -187,7 +189,7 @@ export default {
      * @param {Boolean} hasUser - true,代表必須存在用戶,才能發送,false,代表用戶必須不存在,才能發送
      * @param {Number} country - 手機區碼,無須+號(有phone為必填)
      */
-    SendPinCode: function (item) {
+    SendPinCode: function(item) {
         return new Promise((resolve) => {
             let srvAdr = localStorage.getItem('srvAdr')
             let url = config.state[srvAdr].coreAPIUrl
@@ -218,7 +220,7 @@ export default {
      * @param {String} url - (必要)
      * @returns {String} - 網址
      */
-    BuildOauthUrl: async function (provider, url) {
+    BuildOauthUrl: async function(provider, url) {
         return new Promise((resolve) => {
             let result = ''
             let redirect_uri = encodeURIComponent(url)
@@ -246,11 +248,11 @@ export default {
      * @param {String} code
      * @param {String} redirect_uri
      */
-    OauthLogin: function (grant_type, code, redirect_uri) {
+    OauthLogin: function(grant_type, code, redirect_uri) {
         return new Promise((resolve) => {
             let srvAdr = localStorage.getItem('srvAdr')
             let url = config.state[srvAdr].coreAPIUrl
-            let nonceStr = 'habook'  // 檢查項目
+            let nonceStr = 'habook' // 檢查項目
             let data = {
                 'client_id': config.state[srvAdr].clientID,
                 'grant_type': grant_type,
@@ -282,11 +284,11 @@ export default {
      * 大雲快速登入
      * @param {String} code
      */
-    SSOLogin: function (code) {
+    SSOLogin: function(code) {
         return new Promise((resolve, reject) => {
             let srvAdr = localStorage.getItem('srvAdr')
             let url = config.state[srvAdr].coreAPIUrl
-            let nonceStr = 'habook'  // 檢查項目
+            let nonceStr = 'habook' // 檢查項目
             let data = {
                 'grant_type': 'authorization_code',
                 'client_id': config.state[srvAdr].clientID,
@@ -307,16 +309,16 @@ export default {
     /**
      * 數據中心當前所有學校名單
      */
-    getSchoolList: function (data) {
+    getSchoolList: function(data) {
         data = (data == null) ? {} : data
         return post('/teacher/init/get-school-list', data)
     },
     /* 换取短网址 */
-    getShortUrl: function (url) {
+    getShortUrl: function(url) {
         return post('/core/get-short-url', { url })
     },
     /* 换取长网址 */
-    getLongUrl: function (url) {
+    getLongUrl: function(url) {
         return post('/core/get-long-url', { url })
     },
-}
+}

+ 7 - 0
TEAMModelOS/ClientApp/src/api/thirdparty.js

@@ -0,0 +1,7 @@
+//第三方企业登录相关API
+import { post } from '@/api/http'
+export default {
+    thirdlogins: function(data) {
+        return post('/common/login/get-bizuserlogin', data)
+    },
+}

+ 10 - 2
TEAMModelOS/ClientApp/src/router/routes.js

@@ -1633,7 +1633,15 @@ export const routes = [{
     },
     //第三方合作企业登录
     {
-        path: '/login-thirdparty',
-        component: resolve => require(['@/view/thirdparty/login.vue'], resolve)
+        name: 'thirdparty',
+        path: '/thirdparty',
+        component: resolve => require(['@/view/thirdparty/login.vue'], resolve),
+        children: []
+    },
+    {
+        path: '/thirdparty/index',
+        name: 'thirdpartyIndex',
+        component: resolve => require(['@/view/thirdparty/index.vue'], resolve),
+        children: []
     },
 ]

BIN=BIN
TEAMModelOS/ClientApp/src/view/thirdparty/img/tmd_logo.png


+ 393 - 0
TEAMModelOS/ClientApp/src/view/thirdparty/index.vue

@@ -0,0 +1,393 @@
+<template>
+  <div class="loggedbox" v-if="showModel ==='default'">
+    <div class="topbox">
+      <div class="userright">
+        <Dropdown>
+          <!-- <el-icon style="margin-right: 25px;margin-top:8px">
+            <el-avatar :size="40" :src="userBasics.picture"></el-avatar>
+          </el-icon> -->
+          <PersonalPhoto style="cursor: pointer;" :name="userBasics.name" width="40px" height="40px"></PersonalPhoto>
+          <!-- <template #dropdown>
+            <el-dropdown-menu>
+              <el-dropdown-item @click="quit">
+                <svg class="header-icon" aria-hidden="true">
+                  <use xlink:href="#icon-tuichu"></use>
+                </svg>
+                {{$t(`header.quit`)}}
+              </el-dropdown-item>
+            </el-dropdown-menu>
+          </template> -->
+          <template #list>
+            <DropdownMenu>
+              <DropdownItem>姓名:XXX</DropdownItem>
+              <DropdownItem @click="quit">
+                <svg class="header-icon" aria-hidden="true">
+                  <use xlink:href="#icon-tuichu"></use>
+                </svg>
+                退出登录
+              </DropdownItem>
+            </DropdownMenu>
+          </template>
+        </Dropdown>
+      </div>
+    </div>
+    <div class="header-basics">
+      <div class="basics-content">
+        <div class="basics-left">
+          <div class="basics-left-title">{{welcomeText}},{{userBasics.name}},欢迎来到第三方合作平台</div>
+          <div class="basics-left-weather">{{place.province}}{{place.city}} 天气:{{place.weather}}
+            温度:{{place.temp}}摄氏度 风向:{{place.windDir}} 风力:{{place.windScale}} 相对湿度:{{place.humidity}}% 能见度:{{place.vis}}公里</div>
+          <div class="basics-left-content">
+            <div class="basics-content-row">
+              <div class="basics-text">
+                <div class="basics-text-content">
+                  <el-icon>
+                    <Avatar />
+                  </el-icon>
+                  <div>醍摩豆账户:</div>
+                  <div>{{userBasics.tmdId}}</div>
+                </div>
+              </div>
+              <div class="basics-text">
+                <div class="basics-text-content">
+                  <el-icon>
+                    <OfficeBuilding />
+                  </el-icon>
+                  <div> 目前管理企业</div>
+                  <div>({{correlationFirm.length}})</div>
+                </div>
+              </div>
+              <div class="basics-text">
+                <div class="basics-text-content">
+                  <el-icon>
+                    <School />
+                  </el-icon>
+                  <div>企业关联学校</div>
+                  <div>(0)</div>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="account">
+          </div>
+        </div>
+        <img :src="bgUrl" class="bg-img" />
+      </div>
+    </div>
+    <div class="bottombox">
+      <div class="bottombox-content">
+        <div class="bottombox-content-header">
+          <div class="header-title"><span>关联企业列表</span></div>
+        </div>
+        <div class="school-List" v-if="correlationFirm.length !=0">
+          <div class="school-List-item" @click="clickItem(item)" v-for="(item,index) in correlationFirm" :key="index">
+            <div class="school-List-item-img">
+              <el-image style="" :src="item.bizPicture" fit="fill" />
+            </div>
+            <div class="enterprise-item-content">
+              <p class="enterprise-item-content-name">{{item.bizName}}</p>
+              <p class="enterprise-item-content-code"><span>信用代码:</span><span>{{item.bizCredit}}</span></p>
+            </div>
+          </div>
+        </div>
+        <div class="school-List" v-else-if="correlationFirm.length ===0">
+          <div class="notdatas">暂无关联企业</div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <div class="detailsbox" v-else-if="showModel ==='details'">
+    <Detalis @backState="changestate" :firmData="nowCorrelation"></Detalis>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      showModel: 'default',
+      userBasics: '',
+      correlationFirm: [],
+      bgUrl: require('./img/thirdparty-index.png'),
+      qiyebg: require('./img/tmd_logo.png'),
+      place: {
+        province: '',
+        city: '',
+        weather: '',
+        temp: '',
+        windDir: '',
+        windScale: '',
+        humidity: '',
+        vis: '',
+      },
+    }
+  },
+  mounted () {
+    let result = JSON.parse(localStorage.getItem('thirdUser'))
+    userBasics = result.user,
+      correlationFirm = result.correlation
+  },
+}
+</script>
+
+<style scoped>
+.loggedbox {
+  width: 100%;
+  height: 100vh;
+  background: #f0f2f5;
+}
+.header-basics,
+.center-entrance,
+.bottombox,
+.topbox {
+  padding: 12px 16px;
+}
+.basics-content {
+  height: 260px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  color: #777;
+  box-sizing: border-box;
+  background-color: #fff;
+  border-radius: 2px;
+  padding: 26px 30px;
+  overflow: hidden;
+  box-shadow: 0 0 7px 1px rgb(0 0 0 / 3%);
+}
+.basics-left {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  width: 40%;
+}
+.basics-left-title {
+  font-size: 22px;
+  color: #343844;
+}
+.basics-left-weather {
+  font-size: 16px;
+  color: #6b7687;
+  margin-top: 8%;
+}
+.basics-left-content {
+  margin-top: 18px;
+  color: #6b7687;
+  width: 100%;
+  align-items: center;
+}
+.basics-content-row {
+  display: flex;
+  flex-wrap: wrap;
+  position: relative;
+  box-sizing: border-box;
+  padding: 10px 0;
+}
+.basics-text {
+  display: block;
+  max-width: 33.3333333333%;
+  flex: 0 0 33.3333333333%;
+  text-align: center;
+}
+.basics-text-content {
+  display: flex;
+  align-items: center;
+}
+.bg-img {
+  height: 600px;
+  width: 35%;
+  margin-top: 28px;
+}
+.center-entrance-box {
+  box-sizing: border-box;
+  background-color: #fff;
+  border-radius: 2px;
+  height: auto;
+  padding: 15px 30px;
+  overflow: hidden;
+  box-shadow: 0 0 7px 1px rgb(0 0 0 / 3%);
+}
+.center-header {
+  padding: 0;
+  border-bottom: none;
+}
+.center-header-text,
+.header-title {
+  padding-bottom: 20px;
+  border-bottom: 1px solid #e8e8e8;
+  font-size: 16px;
+}
+.center-content {
+  padding-bottom: 0px;
+}
+.center-content-row {
+  padding: 10px 0px;
+  display: flex;
+  flex-wrap: wrap;
+  position: relative;
+  box-sizing: border-box;
+  justify-content: space-between;
+}
+.entrancebox {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  text-align: center;
+  color: #333;
+  padding-left: 10px;
+  padding-right: 10px;
+  max-width: 16.6666666667%;
+  flex: 0 0 16.6666666667%;
+}
+.entrancebox-item {
+  padding: 10px 20px;
+  /* margin-top: -16px;
+  margin-bottom: -16px; */
+  border-radius: 4px;
+  transition: all 0.2s;
+  cursor: pointer;
+  height: auto;
+  text-align: center;
+}
+.entrancebox-item-icons {
+  width: 50px;
+  height: 50px !important;
+  border-radius: 8px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin: 0 auto;
+  background-color: rgba(255, 156, 110, 0.3);
+  margin-top: 10px;
+}
+.schools {
+  background-color: rgba(105, 192, 255, 0.3);
+}
+.test {
+  background-color: rgba(179, 127, 235, 0.3);
+}
+.bottombox-content {
+  box-sizing: border-box;
+  background-color: #fff;
+  border-radius: 2px;
+  height: 61vh;
+  padding: 26px 30px;
+  overflow: hidden;
+  box-shadow: 0 0 7px 1px rgb(0 0 0 / 3%);
+}
+.entrancebox-item p {
+  margin-bottom: 0px;
+}
+.entrancebox-item:hover {
+  box-shadow: rgba(189, 195, 199, 0.7) 0px 3px 8px;
+}
+.school-List {
+  width: 100%;
+  height: 51vh;
+  overflow: auto;
+  display: flex;
+  justify-content: flex-start;
+  flex-wrap: wrap;
+  position: relative;
+}
+.school-List-item {
+  width: 25%;
+  height: 260px;
+  padding: 1%;
+  border: 1px solid #ccc;
+  margin-top: 1%;
+  margin-left: 4%;
+  margin-right: 4%;
+  cursor: pointer;
+}
+.school-List-item:hover {
+  box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px,
+    rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;
+}
+.school-List-item-img {
+  width: 30%;
+  margin: 0 auto;
+}
+.enterprise-item-content {
+  text-align: center;
+}
+.enterprise-item-content-name {
+  font-size: 16px;
+  font-weight: bold;
+  margin-top: 1%;
+}
+.enterprise-item-content-code {
+  font-size: 14px;
+  color: #7f8c8d;
+}
+.detailsbox {
+  width: 100%;
+  padding: 0% 1%;
+}
+.account {
+  display: flex;
+}
+.account-box {
+  width: 32%;
+}
+.basics-text-content div {
+  margin-top: 2px;
+  margin-left: 2px;
+  display: inline-block;
+  vertical-align: top;
+}
+.topbox {
+  position: relative;
+  height: 60px;
+  background-color: #fff;
+  text-align: right;
+}
+.userright {
+  /* width: 70%; */
+  /* text-align: right; */
+  position: absolute;
+  right: 20px;
+}
+.notdatas {
+  position: absolute;
+  top: 45%;
+  left: 45%;
+  font-size: 24px;
+  font-weight: bold;
+  color: #bdc3c7;
+}
+::-webkit-scrollbar {
+  width: 7px; /*滚动条宽度*/
+  height: 7px; /*滚动条高度*/
+  background-color: white;
+}
+/*定义滑块 内阴影+圆角*/
+::-webkit-scrollbar-thumb {
+  -webkit-box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.3);
+  background-color: rgba(221, 222, 224); /*滚动条的背景颜色*/
+  border-radius: 5px;
+}
+</style>
+<style>
+.header-icon {
+  width: 1.2em;
+  height: 1.2em;
+  vertical-align: -0.3em;
+  fill: currentColor;
+  overflow: hidden;
+  margin-right: 5px;
+}
+.log-icon {
+  width: 2em;
+  height: 2em;
+  vertical-align: 0.5em;
+  fill: currentColor;
+  overflow: hidden;
+  margin-right: 5px;
+}
+.log-icon:hover {
+  cursor: pointer;
+}
+.logsbox .el-icon-s-order {
+  font-size: 16px;
+}
+</style>

+ 42 - 3
TEAMModelOS/ClientApp/src/view/thirdparty/login.vue

@@ -5,7 +5,7 @@
       <div class="login_panle_form" v-show="loginModels==='default'">
         <div class="login_panle_form_title"><span>第三方企业登录</span></div>
         <div class="login-form">
-          <Form :model="form" label-width="0px">
+          <Form :model="form">
             <FormItem label="">
               <Input v-model="form.user" prefix="ios-person">
               <!-- <template #prefix>
@@ -39,7 +39,7 @@
         <div class="registerbox">
           <p>注册账号</p>
           <div class="register-form">
-            <Form :model="register" label-width="85px">
+            <Form :model="register">
               <FormItem label="用户姓名">
                 <Input v-model="register.name" placeholder="请输入用户姓名">
                 </Input>
@@ -58,7 +58,7 @@
               </FormItem>
               <FormItem>
                 <div class="applicant-btn">
-                  <Button class="loginbtn-thirdparty" @click="registerUser" type="primary">申请账号</Button>
+                  <Button class="loginbtn-thirdparty" type="primary">申请账号</Button>
                 </div>
                 <div class="back-btn">
                   <Button class="loginbtn-thirdparty" @click="loginModels='default'">返回登录</Button>
@@ -79,6 +79,45 @@ export default {
       form: { user: '', password: '', },
       loginModels: 'default',
       register: { name: '', mobile: '', pwd: '', mail: '' }
+
+    }
+  },
+  created () {
+
+  },
+  methods: {
+    logins () {
+      let uservalue = this.form.user
+      let reg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$")
+      var reg_phone = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
+      let resultEmail = reg.test(uservalue)
+      let resultPhone = reg_phone.test(uservalue)
+      console.log(resultEmail, resultPhone)
+      let data = { pwd: this.form.password }
+      if (resultEmail) {
+        data.mail = uservalue
+      } else if (resultPhone) {
+        data.mobile = uservalue
+      } else {
+        data.tmdId = uservalue
+      }
+      let users = {
+        user: {}, correlation: []
+      }
+      // console.log(this.$api)
+      this.$api.thirdparty.thirdlogins(data).then((res) => {
+        console.log(res, '登录返回')
+        res.state === 404 ? ElMessage.error('账户未注册开放平台,请核实账号')
+          : res.state === 200 ? (ElMessage.success('登录成功,请稍等...'),
+            // store.commit('thirdUserInfo', res.bizUser),
+            // store.commit('thirdCorrelationInfo', res.relBizInfos),
+            users.user = res.bizUser, users.correlation = res.relBizInfos,
+            localStorage.setItem('thirdUser', JSON.stringify(users)),
+            localStorage.setItem('openid_token', JSON.stringify(res.openid_token)))
+            : res.state === 40301 ? ElMessage.error('密码错误,请重新登录') : ''
+      }).catch((error) => {
+        ElMessage.error('登录请求失败')
+      })
     }
   }
 }