Bladeren bron

feat: 查询学校自动解析code

zhangjie 1 maand geleden
bovenliggende
commit
e704528d0c
3 gewijzigde bestanden met toevoegingen van 19 en 3 verwijderingen
  1. 2 2
      src/api/user.ts
  2. 14 0
      src/constants/app.ts
  3. 3 1
      src/views/login/login/index.vue

+ 2 - 2
src/api/user.ts

@@ -11,8 +11,8 @@ export function login(data: LoginData): Promise<UserState> {
   return axios.post('/api/admin/common/login', data);
 }
 
-export function schoolList(): Promise<SchoolItem[]> {
-  return axios.post('/api/admin/client/school/list', {});
+export function schoolList(code: string): Promise<SchoolItem[]> {
+  return axios.post('/api/admin/client/school/list', {}, { params: { code } });
 }
 
 export function schoolDetailInfo(code: string): Promise<SchoolInfo> {

+ 14 - 0
src/constants/app.ts

@@ -24,6 +24,20 @@ export function getOrgCode() {
   return domain;
 }
 
+export function getOrgCodeFromDomain(domain: string) {
+  let code = '';
+  if (!domain) return '';
+  console.log('domain', domain);
+
+  const hostname = domain.split('://')[1];
+  if (!hostname) return '';
+
+  const ipFormat = new RegExp(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/);
+  if (ipFormat.test(hostname) || hostname.includes('localhost')) return '';
+  code = hostname.split('.')[0];
+  return code;
+}
+
 export const PLATFORM = 'WEB';
 
 if (!localStorage.getItem('deviceId')) {

+ 3 - 1
src/views/login/login/index.vue

@@ -71,6 +71,7 @@
   import type { LoginData } from '@/api/types/user';
   import { FormRules, OptionListItem } from '@/types/global';
   import { objAssign } from '@/utils/utils';
+  import { getOrgCodeFromDomain } from '@/constants/app';
 
   defineOptions({
     name: 'Login',
@@ -118,7 +119,8 @@
   const schools = ref<OptionListItem[]>([]);
   async function getSchools() {
     if (!appStore.domain) return;
-    const resData = await schoolList();
+    const code = getOrgCodeFromDomain(appStore.domain);
+    const resData = await schoolList(code);
     schools.value = (resData || []).map((item) => {
       return { value: item.code, label: item.name };
     });