Sfoglia il codice sorgente

Merge branch 'iteration-login'

liushengqiang 1 anno fa
parent
commit
4f8f6a2563

+ 3 - 1
src/components/card-preview/music-modal/index.tsx

@@ -1,5 +1,6 @@
 import { defineComponent, ref } from 'vue';
 import styles from './index.module.less';
+import { useUserStore } from '/src/store/modules/users';
 
 export default defineComponent({
   name: 'song-modal',
@@ -10,12 +11,13 @@ export default defineComponent({
     }
   },
   setup(props) {
+    const userStore = useUserStore();
     const iframeRef = ref();
     const isLoaded = ref(false);
     const origin = /(localhost|192)/.test(location.host)
       ? 'https://dev.kt.colexiu.com'
       : location.origin;
-    const src = `${origin}/instrument?id=${props.item.content}&modelType=practise`;
+    const src = `${origin}/instrument?platform=pc&modelType=practise&id=${props.item.content}&Authorization=${userStore.getToken}`;
     return () => (
       <div class={styles.musicScore}>
         <iframe

+ 3 - 1
src/views/attend-class/component/musicScore.tsx

@@ -2,6 +2,7 @@ import { defineComponent, ref, watch } from 'vue';
 import { NSkeleton } from 'naive-ui';
 import styles from './musicScore.module.less';
 import { usePageVisibility } from '@vant/use';
+import { useUserStore } from '/src/store/modules/users';
 
 export default defineComponent({
   name: 'musicScore',
@@ -16,6 +17,7 @@ export default defineComponent({
   },
   emits: ['setIframe'],
   setup(props, { emit }) {
+    const userStore = useUserStore();
     const isLoading = ref(false);
     const pageVisibility = usePageVisibility();
     /** 页面显示和隐藏 */
@@ -32,7 +34,7 @@ export default defineComponent({
     const origin = /(localhost|192)/.test(location.host)
       ? 'https://dev.kt.colexiu.com'
       : location.origin;
-    const src = `${origin}/instrument?platform=pc&modelType=practise`;
+    const src = `${origin}/instrument?platform=pc&modelType=practise&id=${props.music.content}&Authorization=${userStore.getToken}`;
     const checkView = () => {
       fetch(src)
         .then(() => {

+ 0 - 1
src/views/attend-class/index.tsx

@@ -121,7 +121,6 @@ export default defineComponent({
             content: row.content
           });
         });
-        console.log(temp);
         data.knowledgePointList = temp;
         data.itemList = data.knowledgePointList.map((m: any) => {
           return {

+ 31 - 1
src/views/attend-class/model/train-type/index.module.less

@@ -74,7 +74,7 @@
     position: absolute;
     right: 0px;
     top: 0px;
-    z-index: 10;
+    z-index: 11;
     display: flex;
     height: 30px;
     padding: 0;
@@ -230,3 +230,33 @@
     }
   }
 }
+
+
+.offShelfBg {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  border-radius: 14px;
+  background-color: rgba(0, 0, 0, 0.7);
+  z-index: 10;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+
+  .offShelfTips {
+    font-size: 22px;
+    font-weight: 600;
+    color: #FFFFFF;
+    line-height: 30px;
+    padding-bottom: 32px;
+  }
+
+  .offShelfBtn {
+    height: 44px;
+    border-radius: 10px;
+    min-width: 124px;
+  }
+}

+ 20 - 2
src/views/attend-class/model/train-type/index.tsx

@@ -47,9 +47,14 @@ export default defineComponent({
     isDisabled: {
       type: Boolean,
       default: false
+    },
+    /** 是否下架 */
+    offShelf: {
+      type: Boolean,
+      default: false
     }
   },
-  emits: ['click', 'delete', 'edit'],
+  emits: ['click', 'delete', 'edit', 'offShelf'],
   setup(props, { emit }) {
     const userStore = useUserStore();
     const dialog = useDialog();
@@ -71,7 +76,7 @@ export default defineComponent({
       const origin = /(localhost|192)/.test(location.host)
         ? 'https://dev.kt.colexiu.com'
         : location.origin;
-      const src = `${origin}/instrument?platform=pc&modelType=practise`;
+      const src = `${origin}/instrument?platform=pc&modelType=practise&id=${props.item.musicId}&Authorization=${userStore.getToken}`;
       window.open(src, '_blank');
     };
     function rgba(arg0: number, arg1: number, arg2: number, arg3: number) {
@@ -210,6 +215,19 @@ export default defineComponent({
             </NSpace>
           )}
         </div>
+
+        {/* 判断是否下架 */}
+        {props.offShelf && (
+          <div class={styles.offShelfBg}>
+            <p class={styles.offShelfTips}>该资源已被平台下架</p>
+            <NButton
+              type="primary"
+              class={styles.offShelfBtn}
+              onClick={() => emit('offShelf')}>
+              确认
+            </NButton>
+          </div>
+        )}
       </div>
     );
   }

+ 10 - 3
src/views/classList/components/classRecord.tsx

@@ -8,6 +8,7 @@ import styles from './classRecord.module.less';
 import teacherIcon from '@components/layout/images/teacherIcon.png';
 import dayjs from 'dayjs';
 import { getTimes } from '/src/utils';
+import TheEmpty from '/src/components/TheEmpty';
 export default defineComponent({
   name: 'class-record',
   setup() {
@@ -40,6 +41,10 @@ export default defineComponent({
     const getList = async () => {
       state.loading = true;
       try {
+        console.log(
+          state.searchForm.createTimer,
+          'state.searchForm.createTimer'
+        );
         const { data } = await courseSchedulePage({
           classGroupId: route.query.id,
           ...getTimes(
@@ -71,8 +76,9 @@ export default defineComponent({
           <NForm label-placement="left" inline>
             <NFormItem>
               <CDatePicker
-                v-model:timerValue={state.searchForm.createTimer}
-                separator={'-'}
+                v-model:value={state.searchForm.createTimer}
+                timerValue={state.searchForm.createTimer}
+                separator={'至'}
                 type="daterange"></CDatePicker>
             </NFormItem>
 
@@ -98,7 +104,7 @@ export default defineComponent({
               <div class={styles.tableContainer}>
                 <div class={styles.header}>
                   <div class={styles.time}>
-                    {dayjs(item.classDate).format('YYYY-MM-DD')}
+                    {dayjs(item.startTime).format('YYYY-MM-DD HH:mm')}
                   </div>
                   {route.query.name && (
                     <NTag type="primary" class={styles.ntag} strong>
@@ -127,6 +133,7 @@ export default defineComponent({
               </div>
             ))}
           </NSpace>
+          {state.tableList.length <= 0 && <TheEmpty />}
 
           <Pagination
             v-model:page={state.pagination.page}

+ 1 - 1
src/views/natural-resources/components/my-resources/index.tsx

@@ -196,7 +196,7 @@ export default defineComponent({
                   offShelf={item.enableFlag ? false : true}
                   onOffShelf={() => onRemove(item)}
                   onClick={(val: any) => {
-                    if (val.type === 'IMG') return;
+                    if (val.type === 'IMG' || !item.enableFlag) return;
                     state.show = true;
                     state.item = val;
                   }}

+ 8 - 0
src/views/prepare-lessons/api.ts

@@ -42,6 +42,14 @@ export const saveCourseware = (params: any) => {
     data: params
   });
 };
+/**
+ * 备课 - 删除课件
+ */
+export const teacherKnowledgeMaterialDelete = (params: any) => {
+  return request.post('/edu-app/teacherKnowledgeMaterial/delete', {
+    data: params
+  });
+};
 
 /**
  * 备课 - 训练列表

+ 39 - 2
src/views/prepare-lessons/components/lesson-main/courseware/index.tsx

@@ -15,7 +15,11 @@ import AttendClass from '/src/views/prepare-lessons/model/attend-class';
 import { usePrepareStore } from '/src/store/modules/prepareLessons';
 import { useCatchStore } from '/src/store/modules/catchData';
 import TheEmpty from '/src/components/TheEmpty';
-import { queryCourseware, saveCourseware } from '../../../api';
+import {
+  queryCourseware,
+  saveCourseware,
+  teacherKnowledgeMaterialDelete
+} from '../../../api';
 import Draggable from 'vuedraggable';
 import iconDelete from '../../../images/icon-delete.png';
 import { useRouter } from 'vue-router';
@@ -137,6 +141,10 @@ export default defineComponent({
 
     // 预览上课
     const onPreviewAttend = () => {
+      if (forms.coursewareList.length <= 0) {
+        message.error('课件不能为空');
+        return;
+      }
       const { href } = router.resolve({
         path: '/attend-class',
         query: {
@@ -148,6 +156,25 @@ export default defineComponent({
       window.open(href, +new Date() + '');
     };
 
+    // 单个删除
+    const onRemove = async (item: any) => {
+      try {
+        dialog.warning({
+          title: '提示',
+          content: '该资源已下架,是否删除?',
+          positiveText: '确定',
+          negativeText: '取消',
+          onPositiveClick: async () => {
+            await teacherKnowledgeMaterialDelete({ ids: item.id });
+            message.success('删除成功');
+            getList();
+          }
+        });
+      } catch {
+        //
+      }
+    };
+
     onMounted(async () => {
       // 获取教材分类列表
       await catchStore.getSubjects();
@@ -212,7 +239,13 @@ export default defineComponent({
             </NButton>
             <NButton
               type="primary"
-              onClick={() => (forms.showAttendClass = true)}>
+              onClick={() => {
+                if (forms.coursewareList.length <= 0) {
+                  message.error('课件不能为空');
+                  return;
+                }
+                forms.showAttendClass = true;
+              }}>
               开始上课
             </NButton>
           </NSpace>
@@ -249,6 +282,8 @@ export default defineComponent({
                               <CardType
                                 class={[styles.itemContent, 'handle']}
                                 isShowCollect={false}
+                                offShelf={item.removeFlag ? true : false}
+                                onOffShelf={() => onRemove(item)}
                                 item={item}
                               />
                               <div class={styles.itemOperation}>
@@ -273,6 +308,8 @@ export default defineComponent({
                           class={[styles.itemContent, 'handle']}
                           isShowCollect={false}
                           item={item}
+                          offShelf={item.removeFlag ? true : false}
+                          onOffShelf={() => onRemove(item)}
                         />
                       ))}
                     </div>

+ 4 - 2
src/views/prepare-lessons/components/lesson-main/train/assign-homework.tsx

@@ -44,14 +44,16 @@ export default defineComponent({
           page: 1,
           rows: 99
         });
-        console.log(data);
         const temp = data.rows || [];
+        const classList = [] as any;
         temp.forEach((row: any) => {
-          forms.classList.push({
+          classList.push({
             label: row.currentClass + '班',
             value: row.id
           });
         });
+
+        forms.classList = classList;
       } catch {
         //
       }

+ 25 - 10
src/views/prepare-lessons/components/lesson-main/train/index.tsx

@@ -17,7 +17,8 @@ import TheEmpty from '/src/components/TheEmpty';
 import Draggable from 'vuedraggable';
 import {
   lessonPreTrainingBatchSave,
-  lessonPreTrainingPage
+  lessonPreTrainingPage,
+  lessonPreTrainingDelete
 } from '../../../api';
 import { evaluateDifficult } from '/src/utils/contants';
 import TrainUpdate from '/src/views/attend-class/model/train-update';
@@ -141,6 +142,25 @@ export default defineComponent({
       prepareStore.setCoursewareList(forms.trainList);
     };
 
+    // 单个删除
+    const onRemove = async (item: any) => {
+      try {
+        dialog.warning({
+          title: '提示',
+          content: '该训练已下架,是否删除?',
+          positiveText: '确定',
+          negativeText: '取消',
+          onPositiveClick: async () => {
+            await lessonPreTrainingDelete({ ids: item.id });
+            message.success('删除成功');
+            getList();
+          }
+        });
+      } catch {
+        //
+      }
+    };
+
     onMounted(async () => {
       // 获取教材分类列表
       await catchStore.getSubjects();
@@ -231,18 +251,9 @@ export default defineComponent({
                       componentData={{
                         itemKey: 'id',
                         tag: 'div',
-                        //   type: 'transition-group',
-                        //   name: !forms.drag ? 'flip-list' : null,
                         animation: 200,
                         group: 'description',
                         disabled: false
-                        // ghostClass: 'ghost',
-                        //   ondragstart: () => {
-                        //     forms.drag = true;
-                        //   },
-                        //   ondragend: () => {
-                        //     forms.drag = false;
-                        //   }
                       }}
                       class={styles.list}>
                       {{
@@ -255,6 +266,8 @@ export default defineComponent({
                                 isDelete
                                 type="prepare"
                                 onDelete={(child: any) => onDelete(child)}
+                                offShelf={item.removeFlag ? true : false}
+                                onOffShelf={() => onRemove(item)}
                               />
                             </div>
                           );
@@ -267,6 +280,8 @@ export default defineComponent({
                         <TrainType
                           item={item}
                           type="prepare"
+                          offShelf={item.removeFlag ? true : false}
+                          onOffShelf={() => onRemove(item)}
                           onEdit={(child: any) => {
                             console.log('edit', child);
                             const { trainingConfigJson, id, musicId, ...res } =

+ 4 - 0
src/views/setting/api.ts

@@ -47,3 +47,7 @@ export const api_schoolUpdate = (params: object) => {
     data: params
   });
 };
+/** 获取省市区 */
+export const api_sysAreaQueryAllProvince = () => {
+  return request.get('/edu-app/open/sysArea/queryAllProvince');
+};

+ 62 - 18
src/views/setting/components/personInfo.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, reactive, ref } from 'vue';
+import { defineComponent, onMounted, reactive, ref } from 'vue';
 import styles from '../index.module.less';
 import {
   NImage,
@@ -12,30 +12,36 @@ import {
   NSpace,
   SelectOption,
   useMessage,
-  NModal
+  NModal,
+  NCalendar,
+  NCascader
 } from 'naive-ui';
-import headerD from '@/views/home/images/headerD.png';
+import headerD from '../images/headerD.png';
 import defultHeade from '@/components/layout/images/teacherIcon.png';
-import femaleIcon from '../images/femaleIcon.png';
 import maleIcon from '../images/maleIcon.png';
-import { state } from '/src/state';
+import femaleIcon from '../images/femaleIcon.png';
 import { useUserStore } from '/src/store/modules/users';
 import { api_teacherUpdate } from '/src/api/user';
 import UploadFile from '/src/components/upload-file';
 import ForgotPassword from '../modal/forgotPassword';
+import { api_sysAreaQueryAllProvince } from '../api';
 export default defineComponent({
   name: 'setting-personInfo',
-  setup(props, { emit, attrs }) {
+  setup() {
     const message = useMessage();
     const userStore = useUserStore();
     const formOptions = reactive({
       sexs: [
         { label: '男', value: 1, class: 'option' },
         { label: '女', value: 0, class: 'option' }
-      ] as SelectOption[]
+      ] as SelectOption[],
+      areaList: [] as any[]
     });
     const formRef = ref();
     const teacherForm = reactive({
+      provinceCode: '', // 省份编码
+      cityCode: '', // 城市编码
+      regionCode: '', // 区域编码
       nickname: userStore.info.nickname,
       phone: userStore.info.phone,
       gender: userStore.info.gender,
@@ -46,7 +52,18 @@ export default defineComponent({
     });
     const data = reactive({
       disabled: true,
-      openChangePwd: false
+      openChangePwd: false,
+      uploadShow: true
+    });
+
+    const getAreaList = async () => {
+      const res = await api_sysAreaQueryAllProvince();
+      if (res?.code === 200) {
+        formOptions.areaList = res.data;
+      }
+    };
+    onMounted(() => {
+      getAreaList();
     });
 
     const handleSave = () => {
@@ -77,24 +94,32 @@ export default defineComponent({
               style={{ display: data.disabled ? 'none' : '' }}
               class={[styles.defultHeade, styles.changeHead]}>
               修改头像
-              <UploadFile
-                class={[styles.uploadFile]}
-                cropper
-                onUpdate:fileList={val => {
-                  teacherForm.avatar = val;
-                }}
-              />
+              {data.uploadShow && (
+                <UploadFile
+                  class={[styles.uploadFile]}
+                  cropper
+                  onUpdate:fileList={val => {
+                    teacherForm.avatar = val;
+                    data.uploadShow = false;
+                    setTimeout(() => {
+                      data.uploadShow = true;
+                    }, 100);
+                  }}
+                />
+              )}
             </div>
           </div>
           <div class={styles.headerInfo}>
             <p class={styles.headerTitle}>
-              张晚意
+              {userStore.info.nickname}
               <NImage
                 previewDisabled
                 class={styles.sexIcon}
-                src={maleIcon}></NImage>
+                src={userStore.info.gender ? maleIcon : femaleIcon}></NImage>
+            </p>
+            <p class={styles.headerSubTitle}>
+              {userStore.info.schoolInfos?.[0]?.name} | 音乐老师
             </p>
-            <p class={styles.headerSubTitle}>武汉小学 | 音乐老师</p>
           </div>
         </div>
         <div class={styles.setInfo}>
@@ -138,6 +163,7 @@ export default defineComponent({
               <NGi>
                 <NFormItem label="性别" path="sex">
                   <NSelect
+                    class={styles.select}
                     showArrow={!data.disabled}
                     placeholder="请选择性别"
                     options={formOptions.sexs}
@@ -146,6 +172,24 @@ export default defineComponent({
                 </NFormItem>
               </NGi>
             </NGrid>
+            <NFormItem label="城区" style={{ maxWidth: '30%' }}>
+              <NCascader
+                options={formOptions.areaList}
+                labelField="name"
+                valueField="code"
+                childrenField="areas"
+                checkStrategy="child"
+                expandTrigger="hover"
+                defaultValue={
+                  userStore.info.regionCode || userStore.info.cityCode
+                }
+                onUpdate:value={(val: any, option: any, pathValues: any) => {
+                  teacherForm.provinceCode = pathValues[0]?.code;
+                  teacherForm.cityCode = pathValues[1]?.code;
+                  teacherForm.regionCode = pathValues[2]?.code;
+                }}
+              />
+            </NFormItem>
           </NForm>
         </div>
         {data.disabled ? (

+ 20 - 4
src/views/setting/components/schoolInfo/index.module.less

@@ -90,9 +90,10 @@
     min-width: 456Px;
 
     :global {
-        .n-dialog__close{
+        .n-dialog__close {
             transform: translate(0, 3Px);
         }
+
         .n-dialog__title {
             min-height: 70Px;
             justify-content: center;
@@ -138,18 +139,33 @@
 
         .nalert {
             padding: 0 30Px;
-            .n-alert{
+
+            .n-alert {
                 background: #FFE8E8;
                 text-align: center;
             }
-            .n-alert-body .n-alert-body__content{
+
+            .n-alert-body .n-alert-body__content {
                 color: #EA4132;
             }
         }
-        .actionBtn{
+
+        .actionBtn {
             width: 156Px;
             height: 47Px;
             font-size: 18Px;
         }
     }
+}
+
+.btnList {
+    width: 100%;
+
+    .btn {
+        width: 144px;
+        border-radius: 8px;
+        font-size: 18px;
+        font-weight: 600 !important;
+        margin-right: 24px;
+    }
 }

+ 90 - 22
src/views/setting/components/schoolInfo/index.tsx

@@ -1,6 +1,7 @@
 import {
   DataTableColumn,
   NButton,
+  NCascader,
   NDataTable,
   NForm,
   NFormItem,
@@ -19,6 +20,7 @@ import UploadFile from '/src/components/upload-file';
 import { Add } from '@vicons/ionicons5';
 import {
   api_schoolUpdate,
+  api_sysAreaQueryAllProvince,
   api_teacherPage,
   api_tenantInfoUpdateStatus,
   api_userResetPassword
@@ -30,15 +32,21 @@ export default defineComponent({
   name: 'school-info',
   setup() {
     const user = useUserStore();
-
+    const formOptions = reactive({
+      areaList: [] as any[]
+    });
     const forms = reactive({
       name: user.info.schoolInfos?.[0]?.name,
-      logo: user.info.schoolInfos?.[0]?.logo || user.info.avatar
+      logo: user.info.schoolInfos?.[0]?.logo || user.info.avatar,
+      provinceCode: user.info.schoolInfos?.[0]?.provinceCode || '', // 省份编码
+      cityCode: user.info.schoolInfos?.[0]?.cityCode || '', // 城市编码
+      regionCode: user.info.schoolInfos?.[0]?.regionCode || '' // 区域编码
     });
     const data = reactive({
       loading: false,
       schoolLoading: true,
       dataList: [] as any[],
+      disabled: true,
 
       modal: false,
       qrModal: false
@@ -113,6 +121,12 @@ export default defineComponent({
         }
       ];
     };
+    const getAreaList = async () => {
+      const res = await api_sysAreaQueryAllProvince();
+      if (res?.code === 200) {
+        formOptions.areaList = res.data;
+      }
+    };
 
     const getList = async () => {
       data.loading = true;
@@ -129,6 +143,7 @@ export default defineComponent({
       }
     };
     onMounted(() => {
+      getAreaList();
       getList();
     });
 
@@ -174,6 +189,7 @@ export default defineComponent({
       await api_schoolUpdate({ ...user.info.schoolInfos?.[0], ...forms });
       data.schoolLoading = true;
       message.success('修改成功');
+      data.disabled = true;
     };
     return () => (
       <div class={styles.schoolInfo}>
@@ -185,7 +201,9 @@ export default defineComponent({
               height={100}
               src={forms.logo}
             />
-            <div class={styles.changeHead}>
+            <div
+              style={{ display: data.disabled ? 'none' : '' }}
+              class={styles.changeHead}>
               修改头像
               {data.schoolLoading && (
                 <UploadFile
@@ -193,29 +211,76 @@ export default defineComponent({
                   cropper
                   onUpdate:fileList={val => {
                     forms.logo = val;
-                    changeSchoolInfo();
                   }}
                 />
               )}
             </div>
           </div>
-          <NForm model={forms} style={{ paddingTop: '30px' }}>
-            <NFormItem
-              label="学校名称"
-              path="name"
-              showRequireMark={false}
-              rule={[
-                { required: true, message: '请填写学习名称', trigger: 'blur' }
-              ]}>
-              <NInput
-                class={styles.input}
-                maxlength={20}
-                v-model:value={forms.name}
-                onBlur={() => {
-                  changeSchoolInfo();
-                }}
-              />
-            </NFormItem>
+          <NForm
+            model={forms}
+            style={{ paddingTop: '30px' }}
+            disabled={data.disabled}>
+            <NSpace>
+              <NFormItem
+                label="学校名称"
+                path="name"
+                showRequireMark={false}
+                rule={[
+                  { required: true, message: '请填写学习名称', trigger: 'blur' }
+                ]}>
+                <NInput
+                  class={styles.input}
+                  maxlength={20}
+                  v-model:value={forms.name}
+                />
+              </NFormItem>
+              <NFormItem label="城区" style={{ width: '300px' }}>
+                <NCascader
+                  options={formOptions.areaList}
+                  labelField="name"
+                  valueField="code"
+                  childrenField="areas"
+                  checkStrategy="child"
+                  expandTrigger="hover"
+                  defaultValue={
+                    user.info.schoolInfos?.[0]?.regionCode ||
+                    user.info.schoolInfos?.[0]?.cityCode
+                  }
+                  onUpdate:value={(val: any, option: any, pathValues: any) => {
+                    forms.provinceCode = pathValues[0]?.code;
+                    forms.cityCode = pathValues[1]?.code;
+                    forms.regionCode = pathValues[2]?.code;
+                  }}
+                />
+              </NFormItem>
+              <NFormItem>
+                {data.disabled ? (
+                  <NSpace class={styles.btnList} align="center" justify="end">
+                    <NButton
+                      class={styles.btn}
+                      color="#f24433"
+                      onClick={() => (data.disabled = false)}>
+                      修改信息
+                    </NButton>
+                  </NSpace>
+                ) : (
+                  <NSpace class={styles.btnList} align="center" justify="end">
+                    <NButton
+                      class={styles.btn}
+                      onClick={() => (data.disabled = true)}>
+                      取消
+                    </NButton>
+                    <NButton
+                      class={styles.btn}
+                      loading={!data.schoolLoading}
+                      type="primary"
+                      onClick={() => changeSchoolInfo()}>
+                      完成
+                    </NButton>
+                  </NSpace>
+                )}
+              </NFormItem>
+            </NSpace>
           </NForm>
         </NSpace>
 
@@ -256,7 +321,10 @@ export default defineComponent({
           preset="dialog"
           showIcon={false}>
           <div style={{ textAlign: 'center' }}>
-            <TheQrCode text="https://www.baidu.com" size={300} />
+            <TheQrCode
+              text={`${location.origin}/classroom-app/#/teaher-register?tenantId=${user.info.schoolInfos?.[0]?.tenantId}&schoolId=${user.info.schoolInfos?.[0]?.id}&schoolName=${user.info.schoolInfos?.[0]?.name}`}
+              size={300}
+            />
           </div>
         </NModal>
       </div>

BIN
src/views/setting/images/headerD.png


+ 21 - 11
src/views/setting/index.module.less

@@ -52,20 +52,21 @@
 
     .teacherHeadWrap {
       position: relative;
-
+      width: 236Px;
+      height: 132Px;
       .headerD {
-        width: 237px;
-        height: 142px;
+        width: 100%;
+        height: 100%;
       }
 
       .defultHeade {
-        width: 116px;
-        height: 116px;
+        width: 116Px;
+        height: 116Px;
         overflow: hidden;
         border-radius: 50%;
         position: absolute;
-        top: 13px;
-        left: 61px;
+        top: 8Px;
+        left: 60Px;
       }
 
       .changeHead {
@@ -141,10 +142,13 @@
       }
 
       .n-input__input-el {
-        height: 55px;
-        line-height: 55px;
+        height: 55Px;
+        line-height: 55Px;
         border-radius: 8px;
       }
+      .n-base-selection .n-base-selection-label{
+        height: 55Px;
+      }
     }
   }
 }
@@ -178,7 +182,13 @@
     text-align: center;
   }
 }
-
+.select{
+  :globla{
+    .n-base-selection{
+      height: 53Px;
+    }
+  }
+}
 .changePwdModal {
   border-radius: 16px;
   .wrap{
@@ -188,7 +198,7 @@
         border-radius: 8px;
       }
       .n-input .n-input__input-el{
-        height: 53px;
+        height: 53Px;
       }
       .n-button.n-button--disabled{
         background: #aaa;

+ 1 - 1
src/views/setting/index.tsx

@@ -21,7 +21,7 @@ export default defineComponent({
           <NTabPane name="person" tab="个人信息">
             <PersonInfo></PersonInfo>
           </NTabPane>
-          {user.info.isSuperAdmin && (
+          {!user.info.isSuperAdmin && (
             <NTabPane name="school" tab="学校设置">
               <SchoolInfo />
             </NTabPane>