lex-xin 5 місяців тому
батько
коміт
f5094b12ee

+ 1 - 5
dev-dist/sw.js

@@ -82,11 +82,7 @@ define(['./workbox-88bf3160'], (function (workbox) { 'use strict';
     "revision": "3ca0b8505b4bec776b69afdba2768812"
   }, {
     "url": "index.html",
-<<<<<<< Updated upstream
-    "revision": "0.4v8s4holqi"
-=======
-    "revision": "0.m978hf0c288"
->>>>>>> Stashed changes
+    "revision": "0.3v6rh5n8l9g"
   }], {});
   workbox.cleanupOutdatedCaches();
   workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

+ 1 - 1
public/version.json

@@ -1 +1 @@
-{"version":1735906362016}
+{"version":1736407581806}

+ 0 - 47
src/components/layout/index.tsx

@@ -665,23 +665,6 @@ export default defineComponent({
             {/* </div> */}
           </div>
         </div>
-        {/* <img
-          src={toolStartClass}
-          id="moveNPopover2"
-          style={{
-            display: ['/', '/home', '/classList', '/prepare-lessons'].includes(
-              route.path
-            )
-              ? 'none'
-              : 'block'
-          }}
-          class={[
-            styles.toolClassImg,
-            'moveNPopover2',
-            isDragIng.value ? styles.isDragIng : ''
-          ]}
-          alt=""
-        /> */}
         <NPopover
           raw
           trigger="click"
@@ -731,38 +714,8 @@ export default defineComponent({
                 <img src={setTimeIcon} alt="" />
                 计时器
               </div>
-              {/* <div
-                class={[
-                  styles.booxToolItem,
-                  !startClassStatus.value && styles.booxToolDisabled
-                ]}
-                onClick={() => {
-                  if (!startClassStatus.value) return;
-                  showClass.value = true;
-                }}>
-                <img
-                  src={toolStartClass}
-                  class={[styles.toolClassImg]}
-                  alt=""
-                />
-                开始上课
-              </div> */}
             </div>
             <div>
-              {/* <div
-                class={[
-                  styles.booxToolItem,
-                  !helpNoteStatus.value && styles.booxToolDisabled
-                ]}
-                onClick={() => {
-                  if (!helpNoteStatus.value) return;
-                  // 默认滚动到页面顶部,在显示指引
-                  document.querySelector('#WrapcoreViewWrap')?.scrollTo(0, 0);
-                  startShowModal('iconNote');
-                }}>
-                <img src={iconNote} alt="" />
-                功能引导
-              </div> */}
 
               <div
                 class={styles.booxToolItem}

+ 234 - 261
src/components/layout/layoutTop.tsx

@@ -27,20 +27,19 @@ import boxBg from './images/boxBg.png';
 import { useRouter, useRoute } from 'vue-router';
 import { storeToRefs } from 'pinia';
 import opinionIcon from './images/opinionIcon.png';
-import inviteIcon from './images/invite_student_icon.png';
+// import inviteIcon from './images/invite_student_icon.png';
 import gnydIcon from './images/gnyd.png';
 import classHistoryIcon from './images/classHistoryIcon.png';
 import 'animate.css';
 import ForgotPassword from '/src/views/setting/modal/forgotPassword';
 import ImGroup from './imGroup';
 import SuggestionOption from './modals/suggestion-option';
-import dayjs from 'dayjs';
 import ClassModal from '/src/views/home/modals/class-modal';
 import { suggestMessageUnread } from '/src/api/user';
 import { eventGlobal } from '/src/utils';
 import { usePrepareStore } from '/src/store/modules/prepareLessons';
 import { schoolDetail } from '/src/views/studentList/api';
-import AddStudentModel from '/src/views/studentList/modals/addStudentModel';
+// import AddStudentModel from '/src/views/studentList/modals/addStudentModel';
 import { modalClickMask } from '/src/state';
 import { teacherJobType } from '/src/utils/contants';
 
@@ -220,45 +219,40 @@ export default defineComponent({
       }
     });
     return () => (
-      <>
-        <div class={styles.layoutTop}>
-          <div class={styles.layoutLeft}>
-            <NImage
-              src={schoolIcon}
-              class={styles.schoolIcon}
-              previewDisabled></NImage>
-            <p>
-              {/* {info.value.schoolInfos[0].tenantName} |{' '} */}
-              {(info.value?.schoolInfos && info.value?.schoolInfos[0].name) ||
-                ''}
-            </p>
-          </div>
-          <div class={styles.layoutRight}>
-            <NTooltip showArrow={false}>
-              {{
-                trigger: () => (
-                  <div
-                    class={[
-                      styles.optons,
-                      !helpNoteStatus.value && styles.booxToolDisabled
-                    ]}
-                    id="home-1"
-                    onClick={() => {
-                      if (!helpNoteStatus.value) return;
-                      // 默认滚动到页面顶部,在显示指引
-                      document
-                        .querySelector('#WrapcoreViewWrap')
-                        ?.scrollTo(0, 0);
-                      console.log(route.name, 'guideInfo');
-                      eventGlobal.emit('teacher-guideInfo', route.name);
-                    }}>
-                    <NImage src={gnydIcon} previewDisabled></NImage>
-                  </div>
-                ),
-                default: '功能引导'
-              }}
-            </NTooltip>
-            {/* <NTooltip showArrow={false}>
+      <div class={styles.layoutTop}>
+        <div class={styles.layoutLeft}>
+          <NImage
+            src={schoolIcon}
+            class={styles.schoolIcon}
+            previewDisabled></NImage>
+          <p>
+            {(info.value?.schoolInfos && info.value?.schoolInfos[0].name) || ''}
+          </p>
+        </div>
+        <div class={styles.layoutRight}>
+          <NTooltip showArrow={false}>
+            {{
+              trigger: () => (
+                <div
+                  class={[
+                    styles.optons,
+                    !helpNoteStatus.value && styles.booxToolDisabled
+                  ]}
+                  id="home-1"
+                  onClick={() => {
+                    if (!helpNoteStatus.value) return;
+                    // 默认滚动到页面顶部,在显示指引
+                    document.querySelector('#WrapcoreViewWrap')?.scrollTo(0, 0);
+                    console.log(route.name, 'guideInfo');
+                    eventGlobal.emit('teacher-guideInfo', route.name);
+                  }}>
+                  <NImage src={gnydIcon} previewDisabled></NImage>
+                </div>
+              ),
+              default: '功能引导'
+            }}
+          </NTooltip>
+          {/* <NTooltip showArrow={false}>
               {{
                 trigger: () => (
                   <div class={styles.optons} onClick={showInviteQrcode}>
@@ -270,249 +264,228 @@ export default defineComponent({
                 default: '邀请学生'
               }}
             </NTooltip> */}
-            <NPopover
-              width={380}
-              class={styles.popoverClassModel}
-              placement={'bottom'}
-              v-model:show={classRecordStatus.value}
-              trigger="click"
-              displayDirective="show"
-              v-slots={{
-                trigger: () => (
-                  <NTooltip showArrow={false}>
-                    {{
-                      trigger: () => (
-                        <div class={styles.optons}>
-                          <NImage
-                            src={classHistoryIcon}
-                            previewDisabled></NImage>
-                        </div>
-                      ),
-                      default: '上课记录'
-                    }}
-                  </NTooltip>
-                )
-              }}>
-              <ClassModal
-                onConfirm={() => {
-                  classRecordStatus.value = false;
-                }}
-              />
-            </NPopover>
+          <NPopover
+            width={380}
+            class={styles.popoverClassModel}
+            placement={'bottom'}
+            v-model:show={classRecordStatus.value}
+            trigger="click"
+            displayDirective="show"
+            v-slots={{
+              trigger: () => (
+                <NTooltip showArrow={false}>
+                  {{
+                    trigger: () => (
+                      <div class={styles.optons}>
+                        <NImage src={classHistoryIcon} previewDisabled></NImage>
+                      </div>
+                    ),
+                    default: '上课记录'
+                  }}
+                </NTooltip>
+              )
+            }}>
+            <ClassModal
+              onConfirm={() => {
+                classRecordStatus.value = false;
+              }}
+            />
+          </NPopover>
+          <NTooltip showArrow={false}>
+            {{
+              trigger: () => (
+                <div class={styles.optons} onClick={showOption} id="home-2">
+                  <NBadge dot={suggestionStatus.value} color={'#FF1036'}>
+                    <NImage src={opinionIcon} previewDisabled></NImage>
+                  </NBadge>
+                </div>
+              ),
+              default: '意见反馈'
+            }}
+          </NTooltip>
+          {/* </div> */}
+          <div onClick={() => (showImGroup.value = true)}>
             <NTooltip showArrow={false}>
               {{
                 trigger: () => (
-                  <div class={styles.optons} onClick={showOption} id="home-2">
-                    <NBadge dot={suggestionStatus.value} color={'#FF1036'}>
-                      <NImage src={opinionIcon} previewDisabled></NImage>
-                    </NBadge>
-                  </div>
+                  <NBadge
+                    value={noReadCount.value}
+                    max={99}
+                    class={[
+                      noReadCount.value > 0 ? '' : styles.messageBadgeHide,
+                      styles.messageBadge,
+                      noReadCount.value > 0 ? '' : styles.messageBadgeNo
+                    ]}
+                    {...{ id: 'home-3' }}
+                    color={'#FF1036'}>
+                    <NImage
+                      class={[
+                        styles.messageIcon,
+                        noReadCount.value > 0 ? styles.animation : ''
+                      ]}
+                      preview-disabled
+                      src={messageIcon}></NImage>
+                  </NBadge>
                 ),
-                default: '意见反馈'
+                default: '聊天'
               }}
             </NTooltip>
-            {/* </div> */}
-            <div onClick={() => (showImGroup.value = true)}>
-              <NTooltip showArrow={false}>
-                {{
-                  trigger: () => (
-                    <NBadge
-                      value={noReadCount.value}
-                      max={99}
-                      class={[
-                        noReadCount.value > 0 ? '' : styles.messageBadgeHide,
-                        styles.messageBadge,
-                        noReadCount.value > 0 ? '' : styles.messageBadgeNo
-                      ]}
-                      {...{ id: 'home-3' }}
-                      color={'#FF1036'}>
-                      <NImage
-                        class={[
-                          styles.messageIcon,
-                          noReadCount.value > 0 ? styles.animation : ''
-                        ]}
-                        preview-disabled
-                        src={messageIcon}></NImage>
-                    </NBadge>
-                  ),
-                  default: '聊天'
-                }}
-              </NTooltip>
-            </div>
+          </div>
 
-            <div class={styles.line}></div>
-            <NPopover
-              show-arrow={false}
-              trigger="click"
-              v-model:show={userInfoStatus.value}
-              onUpdate:show={val => {
-                showHeadFlag.value = val;
-              }}
-              class={styles.popoverHeader}
-              placement="bottom-end"
-              raw={true}
-              v-slots={{
-                trigger: () => (
-                  <div class={styles.mesgWrap} style={{ cursor: 'pointer' }}>
-                    <NImage
-                      preview-disabled
-                      class={styles.teacherIcon}
-                      src={
-                        info.value.avatar ? info.value.avatar : teacherIcon
-                      }></NImage>
-                    <NIcon
-                      class={
-                        showHeadFlag.value
-                          ? styles.rotueLeft
-                          : styles.rotueRight
-                      }>
-                      <svg
-                        xmlns="http://www.w3.org/2000/svg"
-                        viewBox="0 0 24 24">
-                        <path
-                          d="M7.38 21.01c.49.49 1.28.49 1.77 0l8.31-8.31a.996.996 0 0 0 0-1.41L9.15 2.98c-.49-.49-1.28-.49-1.77 0s-.49 1.28 0 1.77L14.62 12l-7.25 7.25c-.48.48-.48 1.28.01 1.76z"
-                          fill="currentColor"></path>
-                      </svg>
-                    </NIcon>
-                  </div>
-                )
-              }}>
-              <div class={styles.propWrap}>
-                <div class={styles.teacherInfo}>
+          <div class={styles.line}></div>
+          <NPopover
+            show-arrow={false}
+            trigger="click"
+            v-model:show={userInfoStatus.value}
+            onUpdate:show={val => {
+              showHeadFlag.value = val;
+            }}
+            class={styles.popoverHeader}
+            placement="bottom-end"
+            raw={true}
+            v-slots={{
+              trigger: () => (
+                <div class={styles.mesgWrap} style={{ cursor: 'pointer' }}>
                   <NImage
+                    preview-disabled
                     class={styles.teacherIcon}
-                    src={info.value.avatar ? info.value.avatar : teacherIcon}
+                    src={
+                      info.value.avatar ? info.value.avatar : teacherIcon
+                    }></NImage>
+                  <NIcon
+                    class={
+                      showHeadFlag.value ? styles.rotueLeft : styles.rotueRight
+                    }>
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+                      <path
+                        d="M7.38 21.01c.49.49 1.28.49 1.77 0l8.31-8.31a.996.996 0 0 0 0-1.41L9.15 2.98c-.49-.49-1.28-.49-1.77 0s-.49 1.28 0 1.77L14.62 12l-7.25 7.25c-.48.48-.48 1.28.01 1.76z"
+                        fill="currentColor"></path>
+                    </svg>
+                  </NIcon>
+                </div>
+              )
+            }}>
+            <div class={styles.propWrap}>
+              <div class={styles.teacherInfo}>
+                <NImage
+                  class={styles.teacherIcon}
+                  src={info.value.avatar ? info.value.avatar : teacherIcon}
+                  previewDisabled></NImage>
+                <div class={styles.userInfos}>
+                  <NTooltip class={styles.nameTool}>
+                    {{
+                      trigger: () => (
+                        <p class={styles.teacherName}>{info.value.nickname}</p>
+                      ),
+                      default: () => info.value.nickname
+                    }}
+                  </NTooltip>
+                  {info.value.teacherJobType && (
+                    <span class={styles.roleType}>
+                      {teacherJobType[info.value.teacherJobType]}
+                    </span>
+                  )}
+                </div>
+              </div>
+              <div class={styles.propWrapList}>
+                <div
+                  class={styles.propWrapItem}
+                  onClick={() => oncheckEditStatus(gotoPerson)}>
+                  <NImage
+                    class={styles.smallIcon}
+                    src={personIcon}
                     previewDisabled></NImage>
-                  <div class={styles.userInfos}>
-                    <NTooltip class={styles.nameTool}>
-                      {{
-                        trigger: () => (
-                          <p class={styles.teacherName}>
-                            {info.value.nickname}
-                          </p>
-                        ),
-                        default: () => info.value.nickname
-                      }}
-                    </NTooltip>
-                    {info.value.teacherJobType && (
-                      <span class={styles.roleType}>
-                        {teacherJobType[info.value.teacherJobType]}
-                      </span>
-                    )}
-                  </div>
+                  <p class={styles.smallTitle}>个人信息</p>
                 </div>
-                <div class={styles.propWrapList}>
+                {info.value.isSuperAdmin ||
+                info.value.teacherJobType === 'HEADMASTER' ? (
                   <div
                     class={styles.propWrapItem}
-                    onClick={() => oncheckEditStatus(gotoPerson)}>
-                    <NImage
-                      class={styles.smallIcon}
-                      src={personIcon}
-                      previewDisabled></NImage>
-                    <p class={styles.smallTitle}>个人信息</p>
-                  </div>
-                  {info.value.isSuperAdmin ||
-                  info.value.teacherJobType === 'HEADMASTER' ? (
-                    <div
-                      class={styles.propWrapItem}
-                      onClick={() => {
-                        oncheckEditStatus(gotoSchool);
-                      }}>
-                      <NImage
-                        class={styles.smallIcon}
-                        src={schoolDot}
-                        previewDisabled></NImage>
-                      <p class={styles.smallTitle}>学校信息</p>
-                    </div>
-                  ) : null}
-
-                  <div class={styles.propWrapItem} onClick={() => resetPwd()}>
+                    onClick={() => {
+                      oncheckEditStatus(gotoSchool);
+                    }}>
                     <NImage
                       class={styles.smallIcon}
-                      src={clockIcon}
+                      src={schoolDot}
                       previewDisabled></NImage>
-                    <p class={styles.smallTitle}>修改密码</p>
+                    <p class={styles.smallTitle}>学校信息</p>
                   </div>
+                ) : null}
 
-                  <div
-                    class={styles.propWrapItem}
-                    onClick={() => oncheckEditStatus(aboutUs)}>
-                    <NImage
-                      class={styles.smallIcon}
-                      src={iconAboutus}
-                      previewDisabled></NImage>
-                    <p class={styles.smallTitle}>关于我们</p>
-                  </div>
+                <div class={styles.propWrapItem} onClick={() => resetPwd()}>
+                  <NImage
+                    class={styles.smallIcon}
+                    src={clockIcon}
+                    previewDisabled></NImage>
+                  <p class={styles.smallTitle}>修改密码</p>
                 </div>
+
                 <div
-                  class={styles.logoutInfo}
-                  onClick={() => {
-                    users.logout();
-                    router.replace('/login');
-                  }}>
-                  <div class={styles.propWrapItem}>
-                    <NImage
-                      class={styles.smallIcon}
-                      src={closeIcon}
-                      previewDisabled></NImage>
-                    <p class={styles.smallTitle}>退出登录</p>
-                  </div>
+                  class={styles.propWrapItem}
+                  onClick={() => oncheckEditStatus(aboutUs)}>
+                  <NImage
+                    class={styles.smallIcon}
+                    src={iconAboutus}
+                    previewDisabled></NImage>
+                  <p class={styles.smallTitle}>关于我们</p>
+                </div>
+              </div>
+              <div
+                class={styles.logoutInfo}
+                onClick={() => {
+                  users.logout();
+                  router.replace('/login');
+                }}>
+                <div class={styles.propWrapItem}>
+                  <NImage
+                    class={styles.smallIcon}
+                    src={closeIcon}
+                    previewDisabled></NImage>
+                  <p class={styles.smallTitle}>退出登录</p>
                 </div>
               </div>
-            </NPopover>
-            <div class={styles2.isHidden}></div>
-          </div>
-          <NModal
-            maskClosable={modalClickMask}
-            class={styles.changePwdModal}
-            v-model:show={showWord.value}
-            preset="dialog"
-            showIcon={false}
-            title="修改密码">
-            <ForgotPassword
-              phone={info.value.phone}
-              onClose={() => {
-                showWord.value = false;
-              }}
-            />
-          </NModal>
-
-          <NModal
-            maskClosable={modalClickMask}
-            v-model:show={showImGroup.value}
-            showIcon={false}
-            class={showImGroupLoading.value ? styles.hideModal : ''}
-            {...{ id: 'imGroupDiv' }}
-            displayDirective="show">
-            <ImGroup />
-          </NModal>
-
-          <NModal
-            maskClosable={modalClickMask}
-            class={['modalTitle', 'background', styles.suggestWrap]}
-            v-model:show={showSuggestionViseble.value}
-            display-directive="show"
-            showIcon={false}>
-            <SuggestionOption
-              ref={suggestionOptionRef}
-              onClose={() =>
-                (showSuggestionViseble.value = false)
-              }></SuggestionOption>
-          </NModal>
-
-          {/* {state.addStudentVisible ? (
-            <div
-              v-model:show={state.addStudentVisible}
-              class={['n-modal-mask', styles.popBox]}>
-              <AddStudentModel
-                activeRow={state.activeRow}
-                onClose={() => {
-                  state.addStudentVisible = false;
-                }}></AddStudentModel>
             </div>
-          ) : null} */}
+          </NPopover>
+          <div class={styles2.isHidden}></div>
         </div>
-      </>
+        <NModal
+          maskClosable={modalClickMask}
+          class={styles.changePwdModal}
+          v-model:show={showWord.value}
+          preset="dialog"
+          showIcon={false}
+          title="修改密码">
+          <ForgotPassword
+            phone={info.value.phone}
+            onClose={() => {
+              showWord.value = false;
+            }}
+          />
+        </NModal>
+
+        <NModal
+          maskClosable={modalClickMask}
+          v-model:show={showImGroup.value}
+          showIcon={false}
+          class={showImGroupLoading.value ? styles.hideModal : ''}
+          {...{ id: 'imGroupDiv' }}
+          displayDirective="show">
+          <ImGroup />
+        </NModal>
+
+        <NModal
+          maskClosable={modalClickMask}
+          class={['modalTitle', 'background', styles.suggestWrap]}
+          v-model:show={showSuggestionViseble.value}
+          display-directive="show"
+          showIcon={false}>
+          <SuggestionOption
+            ref={suggestionOptionRef}
+            onClose={() =>
+              (showSuggestionViseble.value = false)
+            }></SuggestionOption>
+        </NModal>
+      </div>
     );
   }
 });

+ 274 - 274
src/router/routes/index.ts

@@ -1,274 +1,274 @@
-import { RouteRecordRaw } from 'vue-router';
-
-export const constantRoutes: RouteRecordRaw[] = [
-  {
-    name: 'login',
-    path: '/login',
-    component: () => import('@/views/login/index'),
-    meta: {
-      title: '登录',
-      singleLayout: 'blank'
-    }
-  },
-  {
-    name: '/Layout',
-    path: '/',
-    component: () => import('@/components/layout/index'),
-    children: [
-      {
-        //默认 显示home组件
-        path: '',
-        name: 'Home',
-        component: () => import('@/views/home/index'),
-        meta: {
-          title: '主页',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        name: 'prepare-lessons',
-        path: '/prepare-lessons',
-        component: () => import('@/views/prepare-lessons/index'),
-        meta: {
-          title: '备课',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        path: '/studentList',
-        name: 'studentList',
-        component: () => import('@/views/studentList/index'),
-        meta: {
-          title: '学生列表',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        path: '/classList',
-        name: 'classList',
-        component: () => import('@/views/classList/index'),
-        meta: {
-          title: '班级列表',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        path: '/classDetail',
-        name: 'classDetail',
-        component: () => import('@/views/classList/classDetail'),
-        meta: {
-          title: '班级详情',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        path: '/classStudentDetail',
-        name: 'classStudentDetail',
-        component: () => import('@/views/studentList/studentDetail'),
-        meta: {
-          title: '学员详情',
-          singleLayout: 'blank',
-          isClass: true
-        }
-      },
-      {
-        path: '/studentDetail',
-        name: 'studentDetail',
-        component: () => import('@/views/studentList/studentDetail'),
-        meta: {
-          title: '学员详情',
-          singleLayout: 'blank',
-          isClass: false
-        }
-      },
-
-      {
-        path: '/afterWorkDetail',
-        name: 'afterWorkDetail',
-        component: () => import('@/views/classList/components/afterWorkDetail'),
-        meta: {
-          title: '作业详情',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        path: '/classStudentRecode',
-        name: 'classStudentRecode',
-        component: () =>
-          import('@/views/classList/components/classStudentRecode'),
-        meta: {
-          title: '练习记录',
-          singleLayout: 'blank'
-        }
-      },
-      {
-        path: '/xiaoku-ai',
-        name: 'xiaoku-ai',
-        component: () => import('@/views/xiaoku-ai/index'),
-        meta: {
-          title: 'AI学练'
-        }
-      },
-      {
-        path: '/xiaoku-music',
-        name: 'xiaoku-music',
-        component: () => import('@/views/xiaoku-music/index'),
-        meta: {
-          title: '曲谱库'
-        }
-      },
-      {
-        path: '/xiaoku-list',
-        name: 'xiaoku-list',
-        component: () => import('@/views/xiaoku-list/index'),
-        meta: {
-          title: 'AI学练'
-        }
-      },
-      {
-        path: '/xiaoku-detail',
-        name: 'xiaoku-detail',
-        component: () => import('@/views/xiaoku-list/detail'),
-        meta: {
-          title: 'AI学练'
-        }
-      },
-      {
-        path: '/setting',
-        name: 'base-setting',
-        component: () => import('@/views/setting/index'),
-        meta: {
-          title: '设置'
-        }
-      },
-      {
-        path: '/aboutUs',
-        name: 'aboutUs',
-        component: () => import('@/views/aboutUs/index'),
-        meta: {
-          title: '关于我们'
-        }
-      },
-      {
-        path: '/data-module',
-        name: 'data-module',
-        component: () => import('@/views/data-module/index'),
-        meta: {
-          title: '数据'
-        }
-      },
-      {
-        path: '/natural-resources',
-        name: 'natural-resources',
-        component: () => import('@/views/natural-resources/index'),
-        meta: {
-          title: '资源'
-        }
-      },
-      {
-        path: '/notation',
-        name: 'notation',
-        component: () => import('@/views/notation/index'),
-        meta: {
-          title: '制谱'
-        }
-      },
-      {
-        path: '/content-instruments',
-        name: 'content-instruments',
-        component: () =>
-          import('@/views/content-information/content-instrument'),
-        meta: {
-          title: '乐器百科'
-        }
-      },
-      {
-        path: '/content-instruments-detail',
-        name: 'content-instruments-detail',
-        component: () =>
-          import('@/views/content-information/content-instrument/detail'),
-        meta: {
-          title: '乐器百科详情'
-        }
-      },
-      {
-        path: '/content-musician',
-        name: 'content-musician',
-        component: () => import('@/views/content-information/content-musician'),
-        meta: {
-          title: '音乐家'
-        }
-      },
-      {
-        path: '/content-music',
-        name: 'content-music',
-        component: () => import('@/views/content-information/content-music'),
-        meta: {
-          title: '名曲鉴赏'
-        }
-      },
-      {
-        path: '/content-music-detail',
-        name: 'content-music-detail',
-        component: () =>
-          import('@/views/content-information/content-music/detail'),
-        meta: {
-          title: '名曲鉴赏'
-        }
-      },
-      {
-        path: '/content-knowledge',
-        name: 'content-knowledge',
-        component: () =>
-          import('@/views/content-information/content-knowledge'),
-        meta: {
-          title: '乐理知识'
-        }
-      },
-      {
-        path: '/homework-record',
-        name: 'homework-record',
-        component: () => import('@/views/homework-record'),
-        meta: {
-          title: '作业'
-        }
-      },
-      {
-        path: '/homework-record-detail',
-        name: 'homework-record-detail',
-        component: () => import('@/views/homework-record/detail'),
-        meta: {
-          title: '作业详情'
-        }
-      }
-    ]
-  },
-  {
-    name: 'attend-class',
-    path: '/attend-class',
-    component: () => import('@/views/attend-class/index'),
-    meta: {
-      title: '开始上课',
-      singleLayout: 'blank'
-    }
-  },
-  {
-    name: '404',
-    path: '/404',
-    component: () => import('@/views/404/index'),
-    meta: {
-      title: '未找到',
-      singleLayout: 'blank'
-    }
-  },
-  // 匹配无效路径的路由
-  {
-    name: 'not-found',
-    path: '/:path(.*)*',
-    component: () => import('@/views/404/index'),
-    meta: {
-      title: '未找到',
-      singleLayout: 'blank'
-    }
-  }
-];
+import { RouteRecordRaw } from 'vue-router';
+
+export const constantRoutes: RouteRecordRaw[] = [
+  {
+    name: 'login',
+    path: '/login',
+    component: () => import('@/views/login/index'),
+    meta: {
+      title: '登录',
+      singleLayout: 'blank'
+    }
+  },
+  {
+    name: '/Layout',
+    path: '/',
+    component: () => import('@/components/layout/index'),
+    children: [
+      {
+        //默认 显示home组件
+        path: '',
+        name: 'Home',
+        component: () => import('@/views/home/index'),
+        meta: {
+          title: '主页',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        name: 'prepare-lessons',
+        path: '/prepare-lessons',
+        component: () => import('@/views/prepare-lessons/index'),
+        meta: {
+          title: '备课',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        path: '/studentList',
+        name: 'studentList',
+        component: () => import('@/views/studentList/index'),
+        meta: {
+          title: '学生列表',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        path: '/classList',
+        name: 'classList',
+        component: () => import('@/views/classList/index'),
+        meta: {
+          title: '班级列表',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        path: '/classDetail',
+        name: 'classDetail',
+        component: () => import('@/views/classList/classDetail'),
+        meta: {
+          title: '班级详情',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        path: '/classStudentDetail',
+        name: 'classStudentDetail',
+        component: () => import('@/views/studentList/studentDetail'),
+        meta: {
+          title: '学员详情',
+          singleLayout: 'blank',
+          isClass: true
+        }
+      },
+      {
+        path: '/studentDetail',
+        name: 'studentDetail',
+        component: () => import('@/views/studentList/studentDetail'),
+        meta: {
+          title: '学员详情',
+          singleLayout: 'blank',
+          isClass: false
+        }
+      },
+
+      {
+        path: '/afterWorkDetail',
+        name: 'afterWorkDetail',
+        component: () => import('@/views/classList/components/afterWorkDetail'),
+        meta: {
+          title: '作业详情',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        path: '/classStudentRecode',
+        name: 'classStudentRecode',
+        component: () =>
+          import('@/views/classList/components/classStudentRecode'),
+        meta: {
+          title: '练习记录',
+          singleLayout: 'blank'
+        }
+      },
+      {
+        path: '/xiaoku-ai',
+        name: 'xiaoku-ai',
+        component: () => import('@/views/xiaoku-ai/index'),
+        meta: {
+          title: 'AI学练'
+        }
+      },
+      {
+        path: '/xiaoku-music',
+        name: 'xiaoku-music',
+        component: () => import('@/views/xiaoku-music/index'),
+        meta: {
+          title: '曲谱库'
+        }
+      },
+      {
+        path: '/xiaoku-list',
+        name: 'xiaoku-list',
+        component: () => import('@/views/xiaoku-list/index'),
+        meta: {
+          title: 'AI学练'
+        }
+      },
+      {
+        path: '/xiaoku-detail',
+        name: 'xiaoku-detail',
+        component: () => import('@/views/xiaoku-list/detail'),
+        meta: {
+          title: 'AI学练'
+        }
+      },
+      {
+        path: '/setting',
+        name: 'base-setting',
+        component: () => import('@/views/setting/index'),
+        meta: {
+          title: '设置'
+        }
+      },
+      {
+        path: '/aboutUs',
+        name: 'aboutUs',
+        component: () => import('@/views/aboutUs/index'),
+        meta: {
+          title: '关于我们'
+        }
+      },
+      {
+        path: '/data-module',
+        name: 'data-module',
+        component: () => import('@/views/data-module/index'),
+        meta: {
+          title: '数据'
+        }
+      },
+      {
+        path: '/natural-resources',
+        name: 'natural-resources',
+        component: () => import('@/views/natural-resources/index'),
+        meta: {
+          title: '资源'
+        }
+      },
+      {
+        path: '/notation',
+        name: 'notation',
+        component: () => import('@/views/notation/index'),
+        meta: {
+          title: '制谱'
+        }
+      },
+      {
+        path: '/content-instruments',
+        name: 'content-instruments',
+        component: () =>
+          import('@/views/content-information/content-instrument'),
+        meta: {
+          title: '乐器百科'
+        }
+      },
+      {
+        path: '/content-instruments-detail',
+        name: 'content-instruments-detail',
+        component: () =>
+          import('@/views/content-information/content-instrument/detail'),
+        meta: {
+          title: '乐器百科详情'
+        }
+      },
+      {
+        path: '/content-musician',
+        name: 'content-musician',
+        component: () => import('@/views/content-information/content-musician'),
+        meta: {
+          title: '音乐家'
+        }
+      },
+      {
+        path: '/content-music',
+        name: 'content-music',
+        component: () => import('@/views/content-information/content-music'),
+        meta: {
+          title: '名曲鉴赏'
+        }
+      },
+      {
+        path: '/content-music-detail',
+        name: 'content-music-detail',
+        component: () =>
+          import('@/views/content-information/content-music/detail'),
+        meta: {
+          title: '名曲鉴赏'
+        }
+      },
+      {
+        path: '/content-knowledge',
+        name: 'content-knowledge',
+        component: () =>
+          import('@/views/content-information/content-knowledge'),
+        meta: {
+          title: '乐理知识'
+        }
+      },
+      {
+        path: '/homework-record',
+        name: 'homework-record',
+        component: () => import('@/views/homework-record'),
+        meta: {
+          title: '作业'
+        }
+      },
+      {
+        path: '/homework-record-detail',
+        name: 'homework-record-detail',
+        component: () => import('@/views/homework-record/detail'),
+        meta: {
+          title: '作业详情'
+        }
+      }
+    ]
+  },
+  {
+    name: 'attend-class',
+    path: '/attend-class',
+    component: () => import('@/views/attend-class/index'),
+    meta: {
+      title: '开始上课',
+      singleLayout: 'blank'
+    }
+  },
+  {
+    name: '404',
+    path: '/404',
+    component: () => import('@/views/404/index'),
+    meta: {
+      title: '未找到',
+      singleLayout: 'blank'
+    }
+  },
+  // 匹配无效路径的路由
+  {
+    name: 'not-found',
+    path: '/:path(.*)*',
+    component: () => import('@/views/404/index'),
+    meta: {
+      title: '未找到',
+      singleLayout: 'blank'
+    }
+  }
+];

+ 8 - 8
src/views/classList/index.tsx

@@ -19,7 +19,7 @@ import CreateClass from './modals/createClass';
 import RestStudentBox from './modals/restStudentBox';
 import { getgradeNumList, classArray } from './contants';
 import add from '@/views/studentList/images/add.png';
-import ClassGuide from '@/custom-plugins/guide-page/class-guide';
+// import ClassGuide from '@/custom-plugins/guide-page/class-guide';
 import { useRoute, useRouter } from 'vue-router';
 import TheEmpty from '/src/components/TheEmpty';
 import TheTooltip from '/src/components/TheTooltip';
@@ -83,7 +83,7 @@ export default defineComponent({
       getList();
       setCache({ current: state.searchForm, saveKey: route.path });
     };
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     state.gradeNumList = getgradeNumList();
     const onReset = () => {
       state.searchForm = {
@@ -124,11 +124,11 @@ export default defineComponent({
         state.pagination.pageTotal = res.data.total;
         state.loading = false;
 
-        setTimeout(() => {
-          if (state.tableList.length > 0) {
-            showGuide.value = true;
-          }
-        }, 500);
+        // setTimeout(() => {
+        //   if (state.tableList.length > 0) {
+        //     showGuide.value = true;
+        //   }
+        // }, 500);
       } catch (e) {
         state.loading = false;
         console.log(e);
@@ -710,7 +710,7 @@ export default defineComponent({
             </NSpace>
           </div>
         </NModal>
-        {showGuide.value ? <ClassGuide></ClassGuide> : null}
+        {/* {showGuide.value ? <ClassGuide></ClassGuide> : null} */}
 
         {state.addStudentVisible ? (
           <div

+ 0 - 628
src/views/home/index copy.tsx

@@ -1,628 +0,0 @@
-import { defineComponent, onMounted, reactive, ref } from 'vue';
-import styles from './index.module.less';
-import {
-  NImage,
-  NButton,
-  NPopselect,
-  NModal,
-  useMessage,
-  NSpin,
-  NSelect
-} from 'naive-ui';
-import headerD from './images/headerD.png';
-import defultHeade from '@/components/layout/images/teacherIcon.png';
-import blackBoardBg from './images/blackboard_bg.png';
-import teacherMan from './images/teacher_man.png';
-import teacherWoman from './images/teacher_woman.png';
-
-import homeText1 from './images/home/home-text-1.png';
-import homeText2 from './images/home/home-text-2.png';
-import iconTo from './images/icon-to.png';
-import t1 from './images/t1.png';
-import t2 from './images/t2.png';
-import t3 from './images/t3.png';
-import { useRouter } from 'vue-router';
-import { useUserStore } from '/src/store/modules/users';
-// import SelectClass from './modals/selectClass';
-import dayjs from 'dayjs';
-import { gradeToCN, weekToCN } from '/src/utils/contants';
-import { useCatchStore } from '/src/store/modules/catchData';
-import TeachGroup from './modals/teachGroup';
-import {
-  classGroupList,
-  courseSchedulePage,
-  getGradeLevelList,
-  getGradeYearList
-} from './api';
-import TheEmpty from '/src/components/TheEmpty';
-import HomeGuide from '/src/custom-plugins/guide-page/home-guide';
-import TimerMeter from '/src/components/timerMeter';
-import { vaildUrl } from '/src/utils/urlUtils';
-import { iframeDislableKeyboard, px2vw } from '/src/utils';
-import PlaceholderTone from '@/components/layout/modals/placeholderTone';
-import PreviewWindow from '../preview-window';
-import UpdatePassword from '/src/components/layout/modals/update-password';
-import AttendClass from '../prepare-lessons/model/attend-class';
-import { useResizeObserver } from '@vueuse/core';
-import { modalClickMask } from '/src/state';
-// import { state } from '/src/state';
-export const formatDateToDay = () => {
-  const hours = dayjs().hour();
-  if (hours < 12) {
-    return '早上好'; //如果小时数小于12则输出“早上好!”
-  } else if (hours > 12 && hours < 18) {
-    return '下午好'; //如果小时数大于12并且小于18,输入“下午好!”
-  } else {
-    return '晚上好'; //如果上面两个条件都不符合,则输出“晚上好!”
-  }
-};
-
-export default defineComponent({
-  name: 'home-page',
-  setup() {
-    const catchStore = useCatchStore();
-    const router = useRouter();
-    const userStore = useUserStore();
-    const showUpdatePassword = ref(false);
-    const showModalBeat = ref(false);
-    const showModalTone = ref(false);
-    const showModalTime = ref(false);
-    const forms = reactive({
-      showAttendClass: false,
-      // useStatus: false,
-      studentList: [] as any,
-      bookVersionId: null,
-      classGroupId: null,
-      category: null,
-      subjectId: null,
-      musicTagList: [] as any,
-      loading: false,
-      list: [] as any,
-      unit: null,
-      unitList: [],
-      subjectList: [] as any,
-      gradeList: [] as any,
-      classLoading: false,
-      total: 0, // 上课数量
-      // 上次上课的数据
-      lastClassSelect: {
-        currentClass: null,
-        name: '',
-        upgradeFlag: false, // 是否为历史班
-        gradeYear: null as any,
-        gradeLevel: null as any
-      },
-      classSelect: {
-        currentGradeNum: null,
-        currentClass: null,
-        name: '',
-        upgradeFlag: false, // 是否为历史班
-        gradeLevel: null as any,
-        gradeYear: null
-      } as any,
-      popSelectOptions: [] as any,
-      popSelectYearList: [] as any,
-      popSelectLevelList: [] as any,
-      showGuide: false,
-      showPreview: false,
-      itemPreview: {} as any,
-      homeLeftHeight: 'auto'
-    });
-    const teachList = ref({} as any);
-
-    // 获取年级班级
-    const getClassList = async () => {
-      try {
-        const { data } = await classGroupList({
-          gradeLevel: forms.classSelect.gradeLevel,
-          gradeYear: forms.classSelect.gradeYear
-        });
-        const cList = data || [];
-        const gradeList: any = [];
-        const popSelectOptions: any = [];
-        // getLastClassRecode()
-        cList.forEach((item: any, index: number) => {
-          // 判断是否已经有班级了
-          if (index === 0) {
-            if (forms.lastClassSelect.currentClass) {
-              forms.classSelect.currentClass =
-                forms.lastClassSelect.currentClass;
-              forms.classSelect.name = forms.lastClassSelect.name;
-              forms.classSelect.upgradeFlag = forms.lastClassSelect.upgradeFlag;
-            } else {
-              const temp = item.classGroupList[0];
-              forms.classSelect.currentGradeNum = item.currentGradeNum;
-              forms.classSelect.currentClass = temp.id;
-              forms.classSelect.name = temp.name;
-            }
-          }
-
-          const classList: any = [];
-          item.classGroupList.forEach((i: any) => {
-            classList.push({
-              label: i.currentClass + '班',
-              value: i.id,
-              lastStudy: i.lastStudy
-            });
-
-            popSelectOptions.push({
-              label: i.name,
-              value: i.id,
-              currentGradeNum: item.currentGradeNum,
-              lastStudy: i.lastStudy
-            });
-          });
-
-          gradeList.push({
-            label: gradeToCN[item.currentGradeNum],
-            value: item.currentGradeNum,
-            childrens: classList
-          });
-        });
-        forms.popSelectOptions = popSelectOptions;
-        forms.gradeList = gradeList;
-      } catch {
-        //
-      }
-    };
-    const getLastClassRecode = async () => {
-      const { data } = await courseSchedulePage({
-        page: 1,
-        rows: 1,
-        teacherId: userStore.getUserInfo.id
-      });
-      if (data.rows.length > 0 && data.rows[0]) {
-        const tempRow = data.rows[0];
-        // forms.lastClassSelect.currentClass = tempRow.classGroupId;
-        // forms.lastClassSelect.name = tempRow.classGroupName;
-        forms.lastClassSelect = {
-          currentClass: tempRow.classGroupId,
-          name: tempRow.classGroupName,
-          upgradeFlag: tempRow.upgradeFlag,
-          gradeYear: tempRow.gradeYear + '',
-          gradeLevel: tempRow.gradeLevel + ''
-        };
-      }
-    };
-
-    // 获取学年
-    const getYearList = async () => {
-      try {
-        const { data } = await getGradeYearList();
-        const temp = data || [];
-        temp.forEach((i: any) => {
-          i.name = i.name + '学年';
-        });
-        forms.popSelectYearList = temp || [];
-        if (temp.length > 0) {
-          if (forms.lastClassSelect.gradeYear) {
-            forms.classSelect.gradeYear = forms.lastClassSelect.gradeYear;
-          } else {
-            forms.classSelect.gradeYear = temp[0].id;
-          }
-        }
-      } catch (e: any) {
-        //
-      }
-    };
-    // 获取学级
-    const getLevelList = async () => {
-      try {
-        const { data } = await getGradeLevelList();
-        const temp = data || [];
-        temp.forEach((i: any) => {
-          i.name = i.name + '级';
-        });
-        temp.unshift({
-          id: '',
-          name: '全部学级'
-        });
-        forms.popSelectLevelList = temp || [];
-        if (temp.length > 0) {
-          if (forms.lastClassSelect.gradeLevel) {
-            forms.classSelect.gradeLevel =
-              forms.lastClassSelect.gradeLevel + '';
-          } else {
-            forms.classSelect.gradeLevel = temp[0].id;
-          }
-        }
-      } catch {
-        //
-      }
-    };
-
-    const getCourseSchedulePage = async () => {
-      forms.classLoading = true;
-      try {
-        const { data } = await courseSchedulePage({
-          classGroupId: forms.classSelect.currentClass,
-          gradeLevel: forms.classSelect.gradeLevel,
-          gradeYear: forms.classSelect.gradeYear,
-          page: 1,
-          rows: 4,
-          teacherId: userStore.getUserInfo.id
-        });
-
-        const result = data.rows || [];
-        forms.total = data.total || 0;
-        const dateTime: any = {};
-        result.forEach((item: any) => {
-          const tempTime = dayjs(item.classDate).format('MM-DD');
-          if (!dateTime[tempTime]) {
-            dateTime[tempTime] = [];
-          }
-
-          const lessonCourseware = item.lessonCoursewareJson
-            ? JSON.parse(item.lessonCoursewareJson)
-            : {};
-          dateTime[tempTime].push({
-            classGroup: forms.classSelect.name,
-            teacherName: item.teacherName,
-            conent:
-              lessonCourseware.lessonCoursewareName +
-              ' | ' +
-              lessonCourseware.lessonCoursewareDetailName +
-              ' | ' +
-              lessonCourseware.lessonCoursewareKnowledgeDetailName,
-            image: item.teacherAvatar,
-            subjectName: item.subjectName
-          });
-        });
-
-        teachList.value = dateTime;
-      } catch (e: any) {
-        //
-        console.log(e);
-      }
-
-      forms.classLoading = false;
-    };
-
-    onMounted(async () => {
-      useResizeObserver(
-        document.querySelector('#homeInfoLeft-home') as any,
-        (entries: any) => {
-          const entry = entries[0];
-          const { height } = entry.contentRect;
-          forms.homeLeftHeight = height + 'px';
-        }
-      );
-
-      forms.classLoading = true;
-      await getLastClassRecode();
-
-      await getYearList();
-      await getLevelList();
-      await getClassList();
-      // await catchStore.getSubjects();
-
-      await getCourseSchedulePage();
-
-      if (!userStore.getUserInfo.account.updatePasswordFlag) {
-        showUpdatePassword.value = true;
-      } else {
-        forms.showGuide = true;
-      }
-
-      forms.classLoading = false;
-    });
-    return () => (
-      <div class={styles.homeWrap}>
-        <div class={styles.homeInfoLeft} id="homeInfoLeft-home">
-          <div class={styles.homeBanner}>
-            <div class={styles.applyInfo} id="home-1">
-              <div class={styles.centerInfo} id="home-0"></div>
-
-              <div class={styles.userInfo}>
-                <div class={styles.userName}>
-                  Hi,{userStore.getUserInfo?.nickname} {formatDateToDay()}~
-                </div>
-              </div>
-              {userStore.getUserInfo.gender === 1 ? (
-                <img src={teacherMan} class={styles.teacherMan} />
-              ) : (
-                <img src={teacherWoman} class={styles.teacherWoman} />
-              )}
-
-              <div class={styles.blackborad}>
-                <img src={blackBoardBg} class={styles.blackBoardBg} />
-              </div>
-              <div class={styles.applyContainer}>
-                <div class={[styles.applyItem, styles.applyItem1]}>
-                  <p>合理的规划教学内容,让学生更好掌握知识</p>
-                  <div
-                    class={[styles.applyBtn, styles.applyBtn1]}
-                    onClick={() => {
-                      // 备课
-                      router.push({
-                        path: '/prepare-lessons'
-                      });
-                    }}>
-                    <img src={homeText1} />
-                  </div>
-                </div>
-                <div class={[styles.applyItem, styles.applyItem2]}>
-                  <p>从这里开始,带领学生在知识的海洋中遨游</p>
-                  <div
-                    class={[styles.applyBtn, styles.applyBtn2]}
-                    onClick={() => {
-                      forms.showAttendClass = true;
-                    }}>
-                    <img src={homeText2} />
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-
-          <div class={styles.toolContainer}>
-            <div class={styles.toolTips}>
-              <div class={styles.toolTitle}>工具箱</div>
-              <div class={styles.toolContent}>
-                这里是常用的教学辅助工具,可帮助学生集中注意力、提高演奏效率,使演奏更完整平稳。让您在课堂上完成更好的教学。
-              </div>
-            </div>
-            <img src={iconTo} class={styles.iconTo} />
-            <div class={styles.toolFunction} id="home-3">
-              <div class={[styles.toolItem, styles.item1]}>
-                <img src={t1} />
-                {/* <p class={styles.toolMemo}>提升效率,练习好节奏</p> */}
-                <NButton
-                  class={styles.btn1}
-                  onClick={() => {
-                    showModalBeat.value = true;
-                  }}>
-                  节拍器
-                </NButton>
-              </div>
-              <div class={[styles.toolItem, styles.item2]}>
-                <img src={t2} />
-                {/* <p class={styles.toolMemo}>精准调音,一劳永逸</p> */}
-                <NButton
-                  class={styles.btn2}
-                  onClick={() => {
-                    showModalTone.value = true;
-                  }}>
-                  调音器
-                </NButton>
-              </div>
-              <div class={[styles.toolItem, styles.item3]}>
-                <img src={t3} />
-                {/* <p class={styles.toolMemo}>创造时间,集中注意力</p> */}
-                <NButton
-                  class={styles.btn3}
-                  onClick={() => {
-                    showModalTime.value = true;
-                  }}>
-                  计时器
-                </NButton>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div
-          class={styles.homeInfoRight}
-          style={{ height: forms.homeLeftHeight }}>
-          <div class={styles.rightTeachingWrap}>
-            <div class={styles.headerContainer}>
-              <div
-                class={styles.HeaderWrap}
-                onClick={() => router.push('/setting')}>
-                <NImage
-                  previewDisabled
-                  class={styles.headerD}
-                  src={headerD}></NImage>
-                <NImage
-                  previewDisabled
-                  class={styles.defultHeade}
-                  src={userStore.getUserInfo.avatar || defultHeade}></NImage>
-              </div>
-            </div>
-            <div class={styles.headerInfo}>
-              <p class={styles.headerTitle}>{userStore.getUserInfo.nickname}</p>
-              {userStore.getUserInfo.schoolInfos &&
-                userStore.getUserInfo.schoolInfos.length > 0 && (
-                  <p class={styles.headerSubTitle}>
-                    {userStore.getUserInfo.schoolInfos[0].name}
-                    {/* | 音乐老师 */}
-                  </p>
-                )}
-            </div>
-            <div class={styles.rightTeachingWrapTitle}>
-              <h3 class={styles.rightTitle}>
-                <div class={styles.titleDot}></div>上课记录
-              </h3>
-
-              <div class={styles.classSearchList}>
-                <NSelect
-                  v-model:value={forms.classSelect.gradeYear}
-                  class={styles.lookMoreSearch}
-                  placeholder="全部学年"
-                  options={forms.popSelectYearList}
-                  labelField="name"
-                  valueField="id"
-                  onUpdate:value={async (val: any) => {
-                    forms.classSelect.gradeYear = val;
-                    forms.lastClassSelect.currentClass = null;
-                    forms.classSelect.currentClass = null;
-                    await getClassList();
-                    await getCourseSchedulePage();
-                  }}></NSelect>
-                <NSelect
-                  v-model:value={forms.classSelect.gradeLevel}
-                  class={styles.lookMoreSearch}
-                  placeholder="全部学级"
-                  options={forms.popSelectLevelList}
-                  labelField="name"
-                  valueField="id"
-                  onUpdate:value={async (val: any) => {
-                    forms.classSelect.gradeLevel = val;
-                    forms.lastClassSelect.currentClass = null;
-                    forms.classSelect.currentClass = null;
-                    await getClassList();
-                    await getCourseSchedulePage();
-                  }}></NSelect>
-                <NSelect
-                  v-model:value={forms.classSelect.currentClass}
-                  class={styles.lookMoreSearch}
-                  placeholder="选择班级"
-                  options={forms.popSelectOptions}
-                  onUpdate:value={(val: any) => {
-                    forms.popSelectOptions.forEach((item: any) => {
-                      if (item.value === val) {
-                        forms.classSelect.currentGradeNum =
-                          item.currentGradeNum;
-                        forms.classSelect.currentClass = item.value;
-                        forms.classSelect.name = item.label;
-                        forms.classSelect.upgradeFlag = item.upgradeFlag;
-                        getCourseSchedulePage();
-                      }
-                    });
-                  }}></NSelect>
-              </div>
-            </div>
-            <NSpin show={forms.classLoading} style={{ minHeight: '40vh' }}>
-              {Object.keys(teachList.value).length > 0 && (
-                <div class={styles.teachListWrap}>
-                  {Object.keys(teachList.value).map(key => (
-                    <TeachGroup
-                      list={teachList.value[key]}
-                      keys={key}></TeachGroup>
-                  ))}
-                </div>
-              )}
-
-              {Object.keys(teachList.value).length <= 0 &&
-                !forms.classLoading && <TheEmpty />}
-            </NSpin>
-
-            {forms.total > 4 && (
-              <div class={styles.teachListWrapWall}>
-                <span
-                  onClick={() => {
-                    // setTabsCaches('attendclass', 'tabName', {
-                    //   path: '/classDetail'
-                    // });
-                    sessionStorage.setItem('classDetailTabs', 'attendclass');
-                    router.push({
-                      path: '/classDetail',
-                      query: {
-                        name: forms.classSelect.name,
-                        id: forms.classSelect.currentClass,
-                        gradeYear: forms.classSelect.gradeYear,
-                        upgradeFlag: forms.classSelect.upgradeFlag ? 1 : 0 // 是否为历史班
-                      }
-                    });
-                  }}>
-                  查看全部
-                </span>
-              </div>
-            )}
-          </div>
-        </div>
-
-        <NModal
-          maskClosable={modalClickMask}
-          class={['modalTitle background']}
-          title={'节拍器'}
-          preset="card"
-          v-model:show={showModalBeat.value}
-          style={{ width: '687px' }}>
-          <div class={styles.modeWrap}>
-            <iframe
-              src={`${vaildUrl()}/metronome/?id=${new Date().getTime()}`}
-              scrolling="no"
-              frameborder="0"
-              width="100%"
-              onLoad={(val: any) => {
-                iframeDislableKeyboard(val.target);
-              }}
-              height={'650px'}></iframe>
-          </div>
-        </NModal>
-
-        <NModal
-          maskClosable={modalClickMask}
-          v-model:show={showModalTime.value}
-          class={['modalTitle background']}
-          title={'计时器'}
-          preset="card"
-          style={{ width: px2vw(772) }}>
-          <div>
-            <TimerMeter></TimerMeter>
-          </div>
-        </NModal>
-
-        <NModal
-          maskClosable={modalClickMask}
-          class={['background']}
-          v-model:show={showModalTone.value}>
-          <div>
-            <PlaceholderTone
-              onClose={() => {
-                showModalTone.value = false;
-              }}></PlaceholderTone>
-          </div>
-        </NModal>
-
-        {/* 弹窗查看 */}
-        <PreviewWindow
-          v-model:show={forms.showPreview}
-          type="attend"
-          params={forms.itemPreview}
-        />
-
-        {forms.showGuide ? <HomeGuide></HomeGuide> : null}
-
-        <NModal
-          maskClosable={modalClickMask}
-          v-model:show={showUpdatePassword.value}
-          class={['modalTitle', styles.showUpdatePassword]}
-          style="--n-title-font-weight: 600;"
-          preset="card"
-          title={'修改密码'}
-          closable={false}
-          maskClosable={false}
-          closeOnEsc={false}>
-          <UpdatePassword
-            onSubmit={() => {
-              // 密码更新成功
-              showUpdatePassword.value = true;
-              forms.showGuide = true;
-              userStore.logout().then(() => {
-                // 移除标签页
-                router
-                  .replace({
-                    name: 'login'
-                  })
-                  .finally(() => location.reload());
-              });
-            }}
-          />
-        </NModal>
-
-        <NModal
-          maskClosable={modalClickMask}
-          v-model:show={forms.showAttendClass}
-          preset="card"
-          showIcon={false}
-          class={['modalTitle background', styles.attendClassModal]}
-          title={'选择班级'}
-          blockScroll={false}>
-          <AttendClass
-            onClose={() => (forms.showAttendClass = false)}
-            type="change"
-            onConfirm={(item: any) => {
-              router.push({
-                path: '/prepare-lessons',
-                query: {
-                  ...item
-                }
-              });
-            }}
-          />
-        </NModal>
-      </div>
-    );
-  }
-});

+ 16 - 16
src/views/home/index.tsx

@@ -66,28 +66,29 @@ export default defineComponent({
       list: [] as any,
       unit: null,
       classLoading: false,
-      showGuide: false,
-      homeLeftHeight: 'auto',
+      // showGuide: false,
+      // homeLeftHeight: 'auto',
       subjectSyncVisiable: false
     });
 
     onMounted(async () => {
-      useResizeObserver(
-        document.querySelector('#homeInfoLeft-home') as any,
-        (entries: any) => {
-          const entry = entries[0];
-          const { height } = entry.contentRect;
-          forms.homeLeftHeight = height + 'px';
-        }
-      );
+      // useResizeObserver(
+      //   document.querySelector('#homeInfoLeft-home') as any,
+      //   (entries: any) => {
+      //     const entry = entries[0];
+      //     const { height } = entry.contentRect;
+      //     forms.homeLeftHeight = height + 'px';
+      //   }
+      // );
 
       forms.classLoading = true;
 
       if (!userStore.getUserInfo.account.updatePasswordFlag) {
         showUpdatePassword.value = true;
-      } else {
-        forms.showGuide = true;
       }
+      //  else {
+      //   forms.showGuide = true;
+      // }
 
       forms.classLoading = false;
     });
@@ -177,7 +178,7 @@ export default defineComponent({
                     forms.previewModal = true;
                     forms.previewParams.src = src + '&backBtnType=microapp';
                   } else {
-                    window.open(src);
+                    window.open(src, '_blank');
                   }
                 }}>
                 <img src={t2} class={styles.tFun} />
@@ -223,7 +224,7 @@ export default defineComponent({
           </div>
         </div>
 
-        {forms.showGuide ? <HomeGuide></HomeGuide> : null}
+        {/* {forms.showGuide ? <HomeGuide></HomeGuide> : null} */}
 
         <NModal
           maskClosable={modalClickMask}
@@ -246,13 +247,12 @@ export default defineComponent({
           preset="card"
           title={'修改密码'}
           closable={false}
-          maskClosable={false}
           closeOnEsc={false}>
           <UpdatePassword
             onSubmit={() => {
               // 密码更新成功
               showUpdatePassword.value = true;
-              forms.showGuide = true;
+              // forms.showGuide = true;
               userStore.logout().then(() => {
                 // 移除标签页
                 router

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

@@ -14,7 +14,7 @@ import {
 } from 'naive-ui';
 import TheEmpty from '@/components/TheEmpty';
 import CardPreview from '@/components/card-preview';
-import MyCollogeGuide from '@/custom-plugins/guide-page/myColloge-guide';
+// import MyCollogeGuide from '@/custom-plugins/guide-page/myColloge-guide';
 import { modalClickMask } from '/src/state';
 export default defineComponent({
   name: 'share-resources',
@@ -75,14 +75,14 @@ export default defineComponent({
           });
         });
         state.tableList = temp || [];
-        setTimeout(() => {
-          showGuide.value = true;
-        }, 500);
+        // setTimeout(() => {
+        //   showGuide.value = true;
+        // }, 500);
       } catch {
         state.loading = false;
       }
     };
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     const onSearch = async (item: any) => {
       state.pagination.page = 1;
 
@@ -180,7 +180,7 @@ export default defineComponent({
 
         {/* 弹窗查看 */}
         <CardPreview v-model:show={state.show} item={state.item} />
-        {showGuide.value ? <MyCollogeGuide></MyCollogeGuide> : null}
+        {/* {showGuide.value ? <MyCollogeGuide></MyCollogeGuide> : null} */}
 
         <NModal
           maskClosable={modalClickMask}

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

@@ -24,10 +24,8 @@ import UploadModal, { formatUrlType } from './upload-modal';
 import CardPreview from '@/components/card-preview';
 import resourceDefault from '../../images/resource-default.png';
 import resourceChecked from '../../images/resource-checked.png';
-import MyResourcesGuide from '@/custom-plugins/guide-page/myResources-guide';
+// import MyResourcesGuide from '@/custom-plugins/guide-page/myResources-guide';
 import SaveModal from './save-modal';
-import deepClone from '/src/helpers/deep-clone';
-import UploadCover from './upload-cover';
 import { modalClickMask } from '/src/state';
 export default defineComponent({
   name: 'share-resources',
@@ -65,7 +63,7 @@ export default defineComponent({
       type: 'remove',
       removeItem: {} as any
     });
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     const getList = async () => {
       try {
         state.loading = true;
@@ -99,9 +97,9 @@ export default defineComponent({
           });
         });
         state.tableList = temp || [];
-        setTimeout(() => {
-          showGuide.value = true;
-        }, 500);
+        // setTimeout(() => {
+        //   showGuide.value = true;
+        // }, 500);
       } catch {
         state.loading = false;
       }
@@ -445,7 +443,7 @@ export default defineComponent({
           />
         </NModal>
 
-        {showGuide.value ? <MyResourcesGuide></MyResourcesGuide> : null}
+        {/* {showGuide.value ? <MyResourcesGuide></MyResourcesGuide> : null} */}
 
         <NModal
           maskClosable={modalClickMask}

+ 6 - 6
src/views/natural-resources/components/share-resources/index.tsx

@@ -8,7 +8,7 @@ import { NModal, NSpin } from 'naive-ui';
 import TheEmpty from '/src/components/TheEmpty';
 import CardPreview from '/src/components/card-preview';
 import AddTeaching from '../../model/add-teaching';
-import ShareResourcesGuide from '@/custom-plugins/guide-page/shareResources-guide';
+// import ShareResourcesGuide from '@/custom-plugins/guide-page/shareResources-guide';
 import { modalClickMask } from '/src/state';
 
 export default defineComponent({
@@ -36,7 +36,7 @@ export default defineComponent({
       show: false,
       item: {} as any
     });
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     const SearchGroupResourcesRef = ref();
     const getList = async () => {
       try {
@@ -66,9 +66,9 @@ export default defineComponent({
           });
         });
         state.tableList = temp || [];
-        setTimeout(() => {
-          showGuide.value = true;
-        }, 500);
+        // setTimeout(() => {
+        //   showGuide.value = true;
+        // }, 500);
       } catch {
         state.loading = false;
       }
@@ -187,7 +187,7 @@ export default defineComponent({
           blockScroll={false}>
           <AddTeaching onClose={() => (state.teachingStatus = false)} />
         </NModal>
-        {showGuide.value ? <ShareResourcesGuide></ShareResourcesGuide> : null}
+        {/* {showGuide.value ? <ShareResourcesGuide></ShareResourcesGuide> : null} */}
       </>
     );
   }

+ 3 - 3
src/views/prepare-lessons/components/directory-main/index.tsx

@@ -14,7 +14,7 @@ import { useRoute } from 'vue-router';
 import { eventGlobal } from '/src/utils';
 // import TheNoticeBar from '/src/components/TheNoticeBar';
 import { getSubjectList2 } from '/src/api/user';
-import LessonsGuide from '@/custom-plugins/guide-page/lessons-guide';
+// import LessonsGuide from '@/custom-plugins/guide-page/lessons-guide';
 import { modalClickMask } from '/src/state';
 
 export default defineComponent({
@@ -473,9 +473,9 @@ export default defineComponent({
             />
           </NModal>
         </div>
-        {forms.showSelectBookStatus && !props.sidebarShow && (
+        {/* {forms.showSelectBookStatus && !props.sidebarShow && (
           <LessonsGuide></LessonsGuide>
-        )}
+        )} */}
       </>
     );
   }

+ 2 - 5
src/views/prepare-lessons/components/lesson-main/train/index.tsx

@@ -26,8 +26,6 @@ import TrainType from '/src/views/attend-class/model/train-type';
 import TheEmpty from '/src/components/TheEmpty';
 import Draggable from 'vuedraggable';
 import {
-  lessonPreTrainingBatchSave,
-  lessonPreTrainingPage,
   lessonPreTrainingDelete,
   lessonPreTrainingV2Detail,
   lessonPreTrainingV2Save
@@ -35,16 +33,15 @@ import {
 import { evaluateDifficult } from '/src/utils/contants';
 import TrainUpdate from '/src/views/attend-class/model/train-update';
 import AssignHomework from './assign-homework';
-import Trainguide from '@/custom-plugins/guide-page/train-guide';
+// import Trainguide from '@/custom-plugins/guide-page/train-guide';
 import { eventGlobal } from '/src/utils';
-import iconTips from '../../../images/icon-tips.png';
+// import iconTips from '../../../images/icon-tips.png';
 import { typeFormat } from '../../resource-main/components/select-music';
 import TheMessageDialog from '/src/components/TheMessageDialog';
 import { useResizeObserver } from '@vueuse/core';
 import useDrag from '@/hooks/useDrag';
 import Dragbom from '@/hooks/useDrag/dragbom';
 import { useUserStore } from '@/store/modules/users';
-import request from '/src/utils/request';
 import { modalClickMask } from '/src/state';
 export default defineComponent({
   name: 'courseware-modal',

+ 2 - 5
src/views/prepare-lessons/index.tsx

@@ -2,7 +2,6 @@ import {
   defineComponent,
   onMounted,
   ref,
-  computed,
   onUnmounted,
   reactive
 } from 'vue';
@@ -13,10 +12,8 @@ import ResourceMain from './components/resource-main';
 import { useResizeObserver } from '@vueuse/core';
 import { onBeforeRouteLeave } from 'vue-router';
 import { usePrepareStore } from '/src/store/modules/prepareLessons';
-import { storeToRefs } from 'pinia';
-import LessonsGuideIn from '@/custom-plugins/guide-page/lessons-guideIn';
+// import LessonsGuideIn from '@/custom-plugins/guide-page/lessons-guideIn';
 import { eventGlobal } from '/src/utils';
-import { setGuidance } from '/src/custom-plugins/guide-page/api';
 export default defineComponent({
   name: 'prepare-lessons',
   setup() {
@@ -92,7 +89,7 @@ export default defineComponent({
         <div class={[styles.resourceMain]}>
           {state.sidebarShow && <ResourceMain ref={resourceMainRef} />}
         </div>
-        {state.sidebarShow && <LessonsGuideIn></LessonsGuideIn>}
+        {/* {state.sidebarShow && <LessonsGuideIn></LessonsGuideIn>} */}
       </div>
     );
   }

+ 7 - 10
src/views/setting/components/schoolInfo/index.tsx

@@ -12,7 +12,7 @@ import {
   NSpace,
   useMessage
 } from 'naive-ui';
-import { defineComponent, nextTick, onMounted, reactive, ref } from 'vue';
+import { defineComponent, onMounted, reactive, ref } from 'vue';
 import styles from './index.module.less';
 import { useUserStore } from '/src/store/modules/users';
 import UploadFile from '/src/components/upload-file';
@@ -27,11 +27,8 @@ import {
   updateAdmin
 } from '../../api';
 import AddTeacher from '../../modal/add-teacher';
-import TheQrCode from '/src/components/TheQrCode';
-import logo from '@/common/images/logo.png';
-import { stringifyQuery } from '/src/router';
 import AddteacherModel from '../../modal/addteacherModel';
-import TeacherGuide from '@/custom-plugins/guide-page/teacher-guide';
+// import TeacherGuide from '@/custom-plugins/guide-page/teacher-guide';
 import TheEmpty from '/src/components/TheEmpty';
 import TheMessageDialog from '/src/components/TheMessageDialog';
 import { modalClickMask } from '/src/state';
@@ -70,7 +67,7 @@ export default defineComponent({
       oldTecherform: {} as any,
       oldLoading: false
     });
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     const columns = (): DataTableColumn[] => {
       return [
         {
@@ -219,9 +216,9 @@ export default defineComponent({
       if (res?.code === 200 && Array.isArray(res?.data?.rows)) {
         data.dataList = res.data.rows;
       }
-      setTimeout(() => {
-        showGuide.value = true;
-      }, 500);
+      // setTimeout(() => {
+      //   showGuide.value = true;
+      // }, 500);
     };
 
     const onChangeManage = async () => {
@@ -488,7 +485,7 @@ export default defineComponent({
               }}></AddteacherModel>
           </div>
         ) : null}
-        {showGuide.value ? <TeacherGuide></TeacherGuide> : null}
+        {/* {showGuide.value ? <TeacherGuide></TeacherGuide> : null} */}
 
         <NModal
           maskClosable={modalClickMask}

+ 9 - 13
src/views/studentList/index.tsx

@@ -5,9 +5,7 @@ import {
   NDataTable,
   NForm,
   NFormItem,
-  NImage,
   NModal,
-  NSelect,
   NSpace,
   NTooltip,
   useMessage
@@ -15,12 +13,10 @@ import {
 import SearchInput from '@/components/searchInput';
 import CSelect from '@/components/CSelect';
 import Pagination from '@/components/pagination';
-import add from './images/add.png';
 import { useRoute, useRouter } from 'vue-router';
-import { getStudentList, schoolDetail } from './api';
+import { getStudentList } from './api';
 import { classGroupList } from '@/views/classList/api';
-import AddStudentModel from './modals/addStudentModel';
-import Studentguide from '@/custom-plugins/guide-page/student-guide';
+// import Studentguide from '@/custom-plugins/guide-page/student-guide';
 import TheEmpty from '/src/components/TheEmpty';
 // import NoticeModal from './modals/noticeModal';
 import { useUserStore } from '/src/store/modules/users';
@@ -68,7 +64,7 @@ export default defineComponent({
     state.gradeNumList = getgradeNumList();
     const route = useRoute();
     const router = useRouter();
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     const message = useMessage();
     const search = () => {
       state.pagination.page = 1;
@@ -131,11 +127,11 @@ export default defineComponent({
         });
         state.tableList = res.data.rows;
         state.pagination.pageTotal = res.data.total;
-        if (state.tableList.length > 0) {
-          setTimeout(() => {
-            showGuide.value = true;
-          }, 500);
-        }
+        // if (state.tableList.length > 0) {
+        //   setTimeout(() => {
+        //     showGuide.value = true;
+        //   }, 500);
+        // }
       } catch (e) {
         console.log(e);
       }
@@ -521,7 +517,7 @@ export default defineComponent({
             row={state.activeRow}
           />
         </NModal>
-        {showGuide.value ? <Studentguide></Studentguide> : null}
+        {/* {showGuide.value ? <Studentguide></Studentguide> : null} */}
       </div>
     );
   }

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

@@ -49,7 +49,7 @@ import {
   // api_subjectList
 } from '../xiaoku-ai/api';
 import { useUserStore } from '/src/store/modules/users';
-import Musicguide from '@/custom-plugins/guide-page/music-guide';
+// import Musicguide from '@/custom-plugins/guide-page/music-guide';
 import TheEmpty from '/src/components/TheEmpty';
 import { modalClickMask, state } from '/src/state';
 import { useResizeObserver } from '@vueuse/core';
@@ -99,7 +99,7 @@ export default defineComponent({
       trackName: '切换声部' as any // 分轨名字
     });
     const subjects = ref('');
-    const showGuide = ref(false);
+    // const showGuide = ref(false);
     const userStore = useUserStore();
     let musicsrc = '';
     const formatParentCurrentValue = (list: any) => {
@@ -194,9 +194,9 @@ export default defineComponent({
         getFavitor(data.list[data.listActive]);
       }
       data.loading = false;
-      setTimeout(() => {
-        showGuide.value = true;
-      }, 500);
+      // setTimeout(() => {
+      //   showGuide.value = true;
+      // }, 500);
     };
 
     const handleGetList = async () => {
@@ -1111,7 +1111,7 @@ export default defineComponent({
            }}
           />
         )}
-        {showGuide.value ? <Musicguide></Musicguide> : null}
+        {/* {showGuide.value ? <Musicguide></Musicguide> : null} */}
 
         <NModal
           maskClosable={modalClickMask}