Explorar o código

Merge branch 'iteration-login'

liushengqiang hai 1 ano
pai
achega
2925ff632e

+ 12 - 10
src/views/attend-class/index.tsx

@@ -110,16 +110,18 @@ export default defineComponent({
         const tempRows = res.data.rows || [];
         const temp: any = [];
         tempRows.forEach((row: any) => {
-          temp.push({
-            id: row.id,
-            materialId: row.materialId,
-            coverImg: row.coverImg,
-            type: row.materialType,
-            title: row.materialName,
-            isCollect: !!row.favoriteFlag,
-            isSelected: row.source === 'PLATFORM' ? true : false,
-            content: row.content
-          });
+          if (!row.removeFlag) {
+            temp.push({
+              id: row.id,
+              materialId: row.materialId,
+              coverImg: row.coverImg,
+              type: row.materialType,
+              title: row.materialName,
+              isCollect: !!row.favoriteFlag,
+              isSelected: row.source === 'PLATFORM' ? true : false,
+              content: row.content
+            });
+          }
         });
         data.knowledgePointList = temp;
         data.itemList = data.knowledgePointList.map((m: any) => {

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

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

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

@@ -47,6 +47,7 @@ export const saveCourseware = (params: any) => {
  */
 export const teacherKnowledgeMaterialDelete = (params: any) => {
   return request.post('/edu-app/teacherKnowledgeMaterial/delete', {
+    requestType: 'form',
     data: params
   });
 };

+ 17 - 3
src/views/prepare-lessons/components/lesson-main/courseware/index.tsx

@@ -62,7 +62,8 @@ export default defineComponent({
             title: row.materialName,
             isCollect: !!row.favoriteFlag,
             isSelected: row.source === 'PLATFORM' ? true : false,
-            content: row.content
+            content: row.content,
+            removeFlag: row.removeFlag
           });
         });
 
@@ -141,7 +142,14 @@ export default defineComponent({
 
     // 预览上课
     const onPreviewAttend = () => {
-      if (forms.coursewareList.length <= 0) {
+      // 获取上架的数据
+      let count = 0;
+      forms.coursewareList.forEach((item: any) => {
+        if (!item.removeFlag) {
+          count++;
+        }
+      });
+      if (count <= 0) {
         message.error('课件不能为空');
         return;
       }
@@ -240,7 +248,13 @@ export default defineComponent({
             <NButton
               type="primary"
               onClick={() => {
-                if (forms.coursewareList.length <= 0) {
+                let count = 0;
+                forms.coursewareList.forEach((item: any) => {
+                  if (!item.removeFlag) {
+                    count++;
+                  }
+                });
+                if (count <= 0) {
                   message.error('课件不能为空');
                   return;
                 }

+ 1 - 0
src/views/prepare-lessons/components/lesson-main/train/assign-homework.tsx

@@ -114,6 +114,7 @@ export default defineComponent({
               options={BOOK_DATA.grades}
               clearable
               onUpdate:value={() => {
+                forms.classGroupId = null;
                 getClassList();
               }}
             />

+ 1 - 1
src/views/prepare-lessons/model/select-music/index.module.less

@@ -130,7 +130,7 @@
 }
 
 .spaceSection {
-  width: 76%;
+  width: 69%;
 
   &>div {
     line-height: var(--n-blank-height);

+ 4 - 1
src/views/setting/components/personInfo.tsx

@@ -185,7 +185,9 @@ export default defineComponent({
                 checkStrategy="child"
                 expandTrigger="hover"
                 defaultValue={
-                  userStore.info.regionCode || userStore.info.cityCode
+                  userStore.info.regionCode ||
+                  userStore.info.cityCode ||
+                  userStore.info.provinceCode
                 }
                 onUpdate:value={(val: any, option: any, pathValues: any) => {
                   teacherForm.provinceCode = pathValues[0]?.code;
@@ -231,6 +233,7 @@ export default defineComponent({
           showIcon={false}
           title="修改密码">
           <ForgotPassword
+            phone={userStore.info.phone}
             onClose={() => {
               data.openChangePwd = false;
             }}

+ 19 - 44
src/views/setting/components/schoolInfo/index.module.less

@@ -41,12 +41,12 @@
 .formWrap {
     :global {
         .n-input {
-            min-width: 284px;
-            height: 50px;
+            width: 284Px;
             border-radius: 8Px;
 
             .n-input__input-el {
-                height: 100%;
+                height: 50Px;
+                font-size: 16Px;
             }
 
             &.n-input--disabled {
@@ -56,13 +56,13 @@
         }
 
         .n-base-selection {
-            height: 50px;
-            min-width: 284px;
+            height: 50Px;
+            width: 284Px;
             border-radius: 8Px;
 
             .n-base-selection-label {
-                height: 100%;
-
+                height: 50Px;
+                font-size: 16Px;
             }
         }
 
@@ -101,34 +101,6 @@
             font-weight: bold;
             font-size: 15Px;
         }
-
-        .n-input {
-            height: 50px;
-            border-radius: 8Px;
-
-            .n-input__input-el {
-                height: 100%;
-            }
-
-            &.n-input--disabled {
-                background-color: #F5F6FA;
-                color: rgba(149, 149, 152, 1);
-            }
-        }
-
-        .n-base-selection {
-            border-radius: 8Px;
-
-            .n-base-selection-label {
-                height: 50px;
-
-            }
-        }
-
-        .n-base-selection.n-base-selection--disabled .n-base-selection-label {
-            background-color: #F5F6FA;
-            color: rgba(149, 149, 152, 1);
-        }
     }
 
     .errorBtn {
@@ -162,11 +134,11 @@
         }
 
         .n-input {
-            height: 50px;
             border-radius: 8Px;
 
             .n-input__input-el {
-                height: 100%;
+                height: 50Px;
+                font-size: 16Px;
             }
 
             &.n-input--disabled {
@@ -179,8 +151,8 @@
             border-radius: 8Px;
 
             .n-base-selection-label {
-                height: 50px;
-
+                height: 50Px;
+                font-size: 16Px;
             }
         }
 
@@ -206,7 +178,7 @@
         }
 
         .n-form-item-label__text {
-            height: 50px;
+            height: 50Px;
             display: flex;
             align-items: center;
             justify-content: center;
@@ -222,7 +194,9 @@
 
             .n-alert-body .n-alert-body__content {
                 color: #EA4132;
+                font-size: 14Px;
             }
+            
         }
 
         .actionBtn {
@@ -237,10 +211,11 @@
     width: 100%;
 
     .btn {
-        width: 144px;
-        border-radius: 8px;
-        font-size: 18px;
+        width: 144Px;
+        height: 45Px;
+        border-radius: 8Px;
+        font-size: 18Px;
         font-weight: 600 !important;
-        margin-right: 24px;
+        margin-right: 24Px;
     }
 }

+ 125 - 97
src/views/setting/components/schoolInfo/index.tsx

@@ -57,11 +57,29 @@ export default defineComponent({
       return [
         {
           title: '老师姓名',
-          key: 'nickname'
+          key: 'nickname',
+          render: (row: any) => {
+            return (
+              <div
+                style={{ userSelect: 'all', cursor: 'pointer' }}
+                onClick={() => copyTo(row.nickname)}>
+                {row.nickname}
+              </div>
+            );
+          }
         },
         {
           title: '手机号码',
-          key: 'phone'
+          key: 'phone',
+          render: (row: any) => {
+            return (
+              <div
+                style={{ userSelect: 'all', cursor: 'pointer' }}
+                onClick={() => copyTo(row.phone)}>
+                {row.phone}
+              </div>
+            );
+          }
         },
         {
           title: '性别',
@@ -77,10 +95,10 @@ export default defineComponent({
             return (
               <div>
                 {row.status === 'ACTIVATION' ? (
-                  <NButton text>{row.statusName}</NButton>
+                  <NButton text>启用</NButton>
                 ) : (
                   <NButton class={styles.errorBtn} text>
-                    {row.statusName}
+                    停用
                   </NButton>
                 )}
               </div>
@@ -205,102 +223,112 @@ export default defineComponent({
       console.log(url);
       return url;
     };
+
+    const copyTo = (text: string) => {
+      const input = document.createElement('input');
+      input.value = text;
+      document.body.appendChild(input);
+      input.select();
+      input.setSelectionRange(0, input.value.length);
+      document.execCommand('Copy');
+      document.body.removeChild(input);
+      message.success('复制成功');
+    };
     return () => (
       <div class={styles.schoolInfo}>
-        <NSpace wrapItem={false} align="center">
-          <div class={styles.logo}>
-            <NImage
-              previewDisabled={false}
-              width={100}
-              height={100}
-              src={forms.logo}
-            />
-            <div
-              style={{ display: data.disabled ? 'none' : '' }}
-              class={styles.changeHead}>
-              修改头像
-              {data.schoolLoading && (
-                <UploadFile
-                  class={[styles.uploadFile]}
-                  cropper
-                  onUpdate:fileList={val => {
-                    forms.logo = val;
-                  }}
-                />
-              )}
-            </div>
-          </div>
-          <NForm
-            ref={formRef}
-            class={styles.formWrap}
-            model={forms}
-            style={{ paddingTop: '30px', paddingLeft: '80px' }}
-            disabled={data.disabled}>
-            <NSpace size={100}>
-              <NFormItem
-                label="学校名称"
-                path="name"
-                showRequireMark={false}
-                rule={[
-                  { required: true, message: '请填写学校名称', trigger: 'blur' }
-                ]}>
-                <NInput
-                  bordered={!data.disabled}
-                  maxlength={20}
-                  v-model:value={forms.name}
-                />
-              </NFormItem>
-              <NFormItem label="城区">
-                <NCascader
-                  placeholder="请选择城区"
-                  bordered={!data.disabled}
-                  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>
+        <NForm
+          ref={formRef}
+          class={styles.formWrap}
+          model={forms}
+          style={{ padding: '30px 0' }}
+          disabled={data.disabled}>
+          <NSpace size={[30, 20]}>
+            <div class={styles.logo}>
+              <NImage
+                previewDisabled={false}
+                width={100}
+                height={100}
+                src={forms.logo}
+              />
+              <div
+                style={{ display: data.disabled ? 'none' : '' }}
+                class={styles.changeHead}>
+                修改头像
+                {data.schoolLoading && (
+                  <UploadFile
+                    class={[styles.uploadFile]}
+                    cropper
+                    onUpdate:fileList={val => {
+                      forms.logo = val;
+                    }}
+                  />
                 )}
-              </NFormItem>
-            </NSpace>
-          </NForm>
-        </NSpace>
+              </div>
+            </div>
+            <NFormItem
+              label="学校名称"
+              path="name"
+              showRequireMark={false}
+              rule={[
+                { required: true, message: '请填写学校名称', trigger: 'blur' }
+              ]}>
+              <NInput
+                bordered={!data.disabled}
+                maxlength={20}
+                v-model:value={forms.name}
+              />
+            </NFormItem>
+            <NFormItem label="城区">
+              <NCascader
+                placeholder="请选择城区"
+                bordered={!data.disabled}
+                options={formOptions.areaList}
+                labelField="name"
+                valueField="code"
+                childrenField="areas"
+                checkStrategy="child"
+                expandTrigger="hover"
+                defaultValue={
+                  user.info.schoolInfos?.[0]?.regionCode ||
+                  user.info.schoolInfos?.[0]?.cityCode ||
+                  user.info.schoolInfos?.[0]?.provinceCode
+                }
+                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 style={{ padding: '32px 0' }}>
           <NButton

+ 8 - 8
src/views/setting/index.module.less

@@ -201,10 +201,10 @@
 
     :global {
       .n-input {
-        border-radius: 8px;
+        border-radius: 5Px;
       }
-      .n-input .n-input__input-el {
-        height: 53px;
+      .n-input .n-input__input-el{
+        height: 50Px;
       }
 
       .n-button.n-button--disabled {
@@ -213,18 +213,18 @@
     }
   }
   .sendMsg {
-    height: 53px;
-    min-width: 108px;
+    min-width: 108Px;
+    height: 50Px;
   }
 
   .pwdIcon {
-    width: 24px;
-    height: 24px;
+    width: 24Px;
+    height: 24Px;
     cursor: pointer;
   }
   .submitBtm {
     width: 45%;
-    height: 47px;
+    height: 46Px;
   }
 }
 

+ 20 - 4
src/views/setting/modal/add-teacher/index.tsx

@@ -8,9 +8,10 @@ import {
   NAlert,
   NCascader
 } from 'naive-ui';
-import { Prop, PropType, defineComponent, reactive, ref } from 'vue';
+import { PropType, defineComponent, reactive, ref } from 'vue';
 import { api_teacherAdd } from '../../api';
 import { useUserStore } from '/src/store/modules/users';
+import styles from './index.module.less';
 export default defineComponent({
   name: 'teacher-operation',
   emits: ['close'],
@@ -85,7 +86,13 @@ export default defineComponent({
             rule={[
               {
                 required: true,
-                message: '请输入老师姓名'
+                message: '请输入老师姓名',
+                trigger: 'blur'
+              },
+              {
+                pattern: /^(?:[\u4e00-\u9fa5·]{2,16})$/,
+                message: '请输入中文姓名,不要包含空格,及特殊符号',
+                trigger: 'blur'
               }
             ]}>
             <NInput
@@ -125,7 +132,16 @@ export default defineComponent({
               </n-button>
             </NSpace>
           </NFormItem>
-          <NFormItem label="城区">
+          <NFormItem
+            label="城区"
+            path="provinceCode"
+            rule={[
+              {
+                required: true,
+                message: '请选择城区',
+                trigger: 'change'
+              }
+            ]}>
             <NCascader
               to="body"
               placeholder="请选择城区"
@@ -136,7 +152,7 @@ export default defineComponent({
               checkStrategy="child"
               expandTrigger="hover"
               onUpdate:value={(val: any, option: any, pathValues: any) => {
-                forms.provinceCode = pathValues[0]?.code;
+                forms.provinceCode = pathValues[0]?.code + '';
                 forms.cityCode = pathValues[1]?.code;
                 forms.regionCode = pathValues[2]?.code;
               }}

+ 14 - 4
src/views/setting/modal/forgotPassword.tsx

@@ -28,16 +28,20 @@ interface FormState {
 export default defineComponent({
   name: 'forgotPassword',
   emits: ['close'],
+  props: {
+    phone: {
+      type: String,
+      default: ''
+    }
+  },
   setup(props, { emit }) {
-    const router = useRouter();
     const formRef = ref();
     const message = useMessage();
     const loading = ref(false);
-    const LOGIN_NAME = PageEnum.BASE_LOGIN_NAME;
     const showPwd = ref(false);
     const userStore = useUserStore();
     const formInline = reactive({
-      mobile: '',
+      mobile: props.phone,
       password: '',
       code: '',
       isCaptcha: true
@@ -131,6 +135,7 @@ export default defineComponent({
                 }
               ]}>
               <NInput
+                readonly
                 maxlength={11}
                 v-model:value={formInline.mobile}
                 placeholder="请输入手机号"></NInput>
@@ -138,7 +143,12 @@ export default defineComponent({
             <NFormItem
               path="code"
               rule={[
-                { required: true, message: '请输入验证码', trigger: 'blur' }
+                { required: true, message: '请输入验证码', trigger: 'blur' },
+                {
+                  pattern: /^\d+$/,
+                  message: '请输入数字验证码',
+                  trigger: 'blur'
+                }
               ]}>
               <NInputGroup>
                 <NInput

+ 2 - 2
src/views/xiaoku-music/index.module.less

@@ -95,7 +95,7 @@
     .wrapList {
         width: 512px;
         min-width: 294Px;
-        min-height: 300Px;
+        min-height: 100%;
         background: #fff;
         border-radius: 16Px;
     }
@@ -104,7 +104,7 @@
         display: flex;
         align-items: center;
         justify-content: center;
-        min-height: 300Px;
+        height: 50vh;
     }
 }
 

+ 8 - 6
src/views/xiaoku-music/index.tsx

@@ -357,12 +357,14 @@ export default defineComponent({
             </div>
           </div>
         </div>
-        <PlayItem
-          show={data.showPlayer}
-          playState={data.playState}
-          item={activeItem.value}
-          onChange={value => handleChangeAudio(value)}
-        />
+        {data.list.length !== 0 && (
+          <PlayItem
+            show={data.showPlayer}
+            playState={data.playState}
+            item={activeItem.value}
+            onChange={value => handleChangeAudio(value)}
+          />
+        )}
       </div>
     );
   }