Kaynağa Gözat

修改样式

lex 1 yıl önce
ebeveyn
işleme
2c871073e6

+ 92 - 0
dev-dist/sw.js

@@ -0,0 +1,92 @@
+/**
+ * Copyright 2018 Google Inc. All Rights Reserved.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// If the loader is already loaded, just stop.
+if (!self.define) {
+  let registry = {};
+
+  // Used for `eval` and `importScripts` where we can't get script URL by other means.
+  // In both cases, it's safe to use a global var because those functions are synchronous.
+  let nextDefineUri;
+
+  const singleRequire = (uri, parentUri) => {
+    uri = new URL(uri + ".js", parentUri).href;
+    return registry[uri] || (
+      
+        new Promise(resolve => {
+          if ("document" in self) {
+            const script = document.createElement("script");
+            script.src = uri;
+            script.onload = resolve;
+            document.head.appendChild(script);
+          } else {
+            nextDefineUri = uri;
+            importScripts(uri);
+            resolve();
+          }
+        })
+      
+      .then(() => {
+        let promise = registry[uri];
+        if (!promise) {
+          throw new Error(`Module ${uri} didn’t register its module`);
+        }
+        return promise;
+      })
+    );
+  };
+
+  self.define = (depsNames, factory) => {
+    const uri = nextDefineUri || ("document" in self ? document.currentScript.src : "") || location.href;
+    if (registry[uri]) {
+      // Module is already loading or loaded.
+      return;
+    }
+    let exports = {};
+    const require = depUri => singleRequire(depUri, uri);
+    const specialDeps = {
+      module: { uri },
+      exports,
+      require
+    };
+    registry[uri] = Promise.all(depsNames.map(
+      depName => specialDeps[depName] || require(depName)
+    )).then(deps => {
+      factory(...deps);
+      return exports;
+    });
+  };
+}
+define(['./workbox-5357ef54'], (function (workbox) { 'use strict';
+
+  self.skipWaiting();
+  workbox.clientsClaim();
+
+  /**
+   * The precacheAndRoute() method efficiently caches and responds to
+   * requests for URLs in the manifest.
+   * See https://goo.gl/S9QRab
+   */
+  workbox.precacheAndRoute([{
+    "url": "registerSW.js",
+    "revision": "3ca0b8505b4bec776b69afdba2768812"
+  }, {
+    "url": "index.html",
+    "revision": "0.q61cia0b9"
+  }], {});
+  workbox.cleanupOutdatedCaches();
+  workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
+    allowlist: [/^\/$/]
+  }));
+
+}));

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

@@ -12,6 +12,7 @@ import beatImage from './images/beatImage.png';
 import toneImage from './images/toneImage.png';
 import setTimeImage from './images/setTimeImage.png';
 import dragingBoxIcon from './images/dragingBoxIcon.png';
+import { useRoute } from 'vue-router';
 export default defineComponent({
   name: 'layoutView',
   setup() {
@@ -19,6 +20,7 @@ export default defineComponent({
     const showModalBeat = ref(false);
     const showModalTone = ref(false);
     const showModalTime = ref(false);
+    const route = useRoute();
     const isDragIng = ref(false);
     const initMoveable = async () => {
       if (document.querySelector('.wrap')) {
@@ -172,9 +174,15 @@ export default defineComponent({
           placement={directionType.value as 'left' | 'right'}
           v-slots={{
             trigger: () => (
+              // 首页不显示工具箱
               <img
                 src={isDragIng.value ? dragingBoxIcon : toolbox}
                 id="moveNPopover"
+                style={{
+                  display: ['/', '/home'].includes(route.path)
+                    ? 'none'
+                    : 'block'
+                }}
                 class={[
                   styles.toolboxImg,
                   'moveNPopover',

+ 14 - 5
src/views/attend-class/index.tsx

@@ -33,7 +33,7 @@ import Pen from './component/tools/pen';
 import AudioPay from './component/audio-pay';
 import TrainSettings from './model/train-settings';
 import { useRoute } from 'vue-router';
-import { queryCourseware } from '../prepare-lessons/api';
+import { lessonPreTrainingPage, queryCourseware } from '../prepare-lessons/api';
 
 export type ToolType = 'init' | 'pen' | 'whiteboard';
 export type ToolItem = {
@@ -85,6 +85,7 @@ export default defineComponent({
       videoRefs: {} as any[],
       audioRefs: {} as any[],
       modelAttendStatus: false, // 布置作业提示弹窗
+      modalAttendMessage: '本节课未设置课后训练,是否继续?',
       modelTrainStatus: false, // 训练设置
       homeworkStatus: true // 布置作业完成时
     });
@@ -669,10 +670,20 @@ export default defineComponent({
             styles.assignHomework,
             activeData.model ? '' : styles.sectionAnimateUp
           ]}
-          onClick={() => {
+          onClick={async () => {
             if (data.type === 'preview') {
               window.close();
             } else {
+              const res = await lessonPreTrainingPage({
+                coursewareKnowledgeDetailId: data.detailId,
+                subjectId: data.subjectId,
+                page: 1,
+                rows: 99
+              });
+              console.log(res, 'res');
+              if (res.data.rows && res.data.rows.length) {
+                data.modalAttendMessage = '本节课已设置课后训练,是否布置?';
+              }
               data.modelAttendStatus = true;
             }
           }}>
@@ -762,9 +773,7 @@ export default defineComponent({
           preset="card"
           class={styles.attendClassModal}
           title={'课后训练'}>
-          <div class={styles.modelAttendContent}>
-            本节课已设置课后训练,是否布置?
-          </div>
+          <div class={styles.modelAttendContent}>{data.modalAttendMessage}</div>
           <NSpace class={styles.modelAttendBtnGroup}>
             <NButton
               type="default"

+ 1 - 1
src/views/attend-class/model/train-settings/index.tsx

@@ -61,7 +61,7 @@ export default defineComponent({
         const { data } = await lessonPreTrainingPage({
           coursewareKnowledgeDetailId: props.detailId,
           subjectId: props.subjectId,
-          pag: 1,
+          page: 1,
           rows: 99
         });
         const tempRows = data.rows || [];

+ 10 - 0
src/views/home/index.module.less

@@ -333,17 +333,26 @@
     .item2 {
       background: url('./images/t2_bg.png')no-repeat right bottom #FFF1EF;
       background-size: 28px;
+
+      .toolMemo {
+        color: #F86C58;
+      }
     }
 
     .item3 {
       background: url('./images/t3_bg.png')no-repeat right bottom #FFF7E2;
       background-size: 28px;
+
+      .toolMemo {
+        color: #F28D1E;
+      }
     }
   }
 }
 
 
 .homeInfoRight {
+  display: flex;
   margin-left: 20px;
   width: 450px;
 }
@@ -556,6 +565,7 @@
   .HeaderWrap {
     position: relative;
     display: inline-block;
+    cursor: pointer;
 
     .headerD {
       width: 237px;

+ 49 - 18
src/views/home/index.tsx

@@ -7,6 +7,7 @@ import {
   NForm,
   NFormItem,
   NSelect,
+  NPopselect,
   NSpace,
   NModal,
   NCascader,
@@ -87,7 +88,8 @@ export default defineComponent({
         currentGradeNum: null,
         currentClass: null,
         name: ''
-      } as any
+      } as any,
+      popSelectOptions: [] as any
     });
     const teachList = ref({} as any);
 
@@ -198,6 +200,7 @@ export default defineComponent({
         const { data } = await classGroupList({ removeZeroClass: true });
         const cList = data || [];
         const gradeList: any = [];
+        const popSelectOptions: any = [];
         cList.forEach((item: any, index: number) => {
           if (index === 0) {
             const temp = item.classGroupList[0];
@@ -215,6 +218,13 @@ export default defineComponent({
               value: i.id,
               lastStudy: i.lastStudy
             });
+
+            popSelectOptions.push({
+              label: i.name,
+              value: i.id,
+              currentGradeNum: item.currentGradeNum,
+              lastStudy: i.lastStudy
+            });
           });
 
           gradeList.push({
@@ -223,7 +233,7 @@ export default defineComponent({
             childrens: classList
           });
         });
-
+        forms.popSelectOptions = popSelectOptions;
         forms.gradeList = gradeList;
       } catch {
         //
@@ -526,7 +536,9 @@ export default defineComponent({
         <div class={styles.homeInfoRight}>
           <div class={styles.rightTeachingWrap}>
             <div class={styles.headerContainer}>
-              <div class={styles.HeaderWrap}>
+              <div
+                class={styles.HeaderWrap}
+                onClick={() => router.push('/setting')}>
                 <NImage
                   previewDisabled
                   class={styles.headerD}
@@ -549,23 +561,42 @@ export default defineComponent({
             </div>
             <div class={styles.rightTeachingWrapTitle}>
               <h3 class={styles.rightTitle}>
-                <div class={styles.titleDot}></div>使用记录
+                <div class={styles.titleDot}></div>上课记录
               </h3>
               {forms.classSelect.name && (
-                <div
-                  class={styles.lookMore}
-                  onClick={() => (forms.useStatus = true)}>
-                  {forms.classSelect.name}
-                  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
-                    <path
-                      d="M6 9l6 6l6-6"
-                      fill="none"
-                      stroke="currentColor"
-                      stroke-width="2"
-                      stroke-linecap="round"
-                      stroke-linejoin="round"></path>
-                  </svg>
-                </div>
+                <NPopselect
+                  v-model:value={forms.classSelect.currentClass}
+                  options={forms.popSelectOptions}
+                  trigger="click"
+                  onUpdate:value={(val: any) => {
+                    console.log(val, '1212');
+                    forms.popSelectOptions.forEach((item: any) => {
+                      if (item.value === val) {
+                        forms.classSelect = {
+                          currentGradeNum: item.currentGradeNum,
+                          currentClass: item.value,
+                          name: item.label
+                        };
+                        getCourseSchedulePage();
+                      }
+                    });
+                  }}>
+                  <div
+                    class={styles.lookMore}
+                    // onClick={() => (forms.useStatus = true)}
+                  >
+                    {forms.classSelect.name}
+                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+                      <path
+                        d="M6 9l6 6l6-6"
+                        fill="none"
+                        stroke="currentColor"
+                        stroke-width="2"
+                        stroke-linecap="round"
+                        stroke-linejoin="round"></path>
+                    </svg>
+                  </div>
+                </NPopselect>
               )}
             </div>
             <NSpin show={forms.classLoading} style={{ minHeight: '40vh' }}>

+ 21 - 9
src/views/prepare-lessons/components/lesson-main/courseware/index.tsx

@@ -36,6 +36,7 @@ export default defineComponent({
       coursewareList: [] as any,
       loadingStatus: false,
       showAttendClass: false,
+      removeIds: [] as any, // 临时删除的编号
       drag: false
     });
 
@@ -68,8 +69,13 @@ export default defineComponent({
           });
         });
 
-        forms.coursewareList = temp || [];
         prepareStore.setCoursewareList(temp || []);
+
+        console.log(forms.removeIds, 'remove', temp);
+        forms.coursewareList =
+          temp.map((item: any) => {
+            if (!forms.removeIds.includes(item.id)) return item;
+          }) || [];
       } catch {
         //
       }
@@ -103,11 +109,12 @@ export default defineComponent({
     // 删除
     const onDelete = (item: any) => {
       //
+      forms.removeIds.push(item.id);
       const index = forms.coursewareList.findIndex(
         (c: any) => c.id === item.id
       );
       forms.coursewareList.splice(index, 1);
-      prepareStore.setCoursewareList(forms.coursewareList);
+      // prepareStore.setCoursewareList(forms.coursewareList);
     };
 
     // 完成编辑
@@ -141,6 +148,8 @@ export default defineComponent({
             message.success('编辑成功');
 
             prepareStore.setCoursewareList(forms.coursewareList);
+            // 重置临时删除编号
+            forms.removeIds = [];
           } catch {
             //
           }
@@ -181,6 +190,7 @@ export default defineComponent({
           positiveText: '确定',
           negativeText: '取消',
           onPositiveClick: async () => {
+            forms.removeIds.push(item.id);
             await teacherKnowledgeMaterialDelete({ ids: item.id });
             message.success('删除成功');
             getList();
@@ -216,6 +226,7 @@ export default defineComponent({
                 type="error"
                 onClick={() => {
                   forms.drag = false;
+                  forms.removeIds = [];
                   getList();
                 }}>
                 退出编辑
@@ -223,8 +234,11 @@ export default defineComponent({
               <NButton
                 type="error"
                 onClick={() => {
+                  forms.coursewareList.forEach((item: any) => {
+                    forms.removeIds.push(item.id);
+                  });
                   forms.coursewareList = [];
-                  prepareStore.setCoursewareList([]);
+                  // prepareStore.setCoursewareList([]);
                 }}>
                 清空资源
               </NButton>
@@ -278,8 +292,7 @@ export default defineComponent({
             <div
               class={[
                 styles.listSection,
-                !forms.loadingStatus &&
-                prepareStore.getCoursewareList.length <= 0
+                !forms.loadingStatus && forms.coursewareList.length <= 0
                   ? styles.emptySection
                   : ''
               ]}>
@@ -339,10 +352,9 @@ export default defineComponent({
                 </>
               )}
 
-              {!forms.loadingStatus &&
-                prepareStore.getCoursewareList.length <= 0 && (
-                  <TheEmpty description="暂无课件" />
-                )}
+              {!forms.loadingStatus && forms.coursewareList.length <= 0 && (
+                <TheEmpty description="暂无课件" />
+              )}
             </div>
           </NSpin>
         </NScrollbar>

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

@@ -78,7 +78,7 @@ export default defineComponent({
         const { data } = await lessonPreTrainingPage({
           coursewareKnowledgeDetailId: prepareStore.getSelectKey,
           subjectId: prepareStore.getSubjectId,
-          pag: 1,
+          page: 1,
           rows: 99
         });
         const tempRows = data.rows || [];

+ 1 - 1
src/views/prepare-lessons/components/resource-main/components/select-music/index.tsx

@@ -48,7 +48,7 @@ export default defineComponent({
         tempRows.forEach((row: any) => {
           temp.push({
             id: row.id,
-            coverImg: row.titleImg,
+            coverImg: row.musicSvg,
             type: 'MUSIC',
             title: row.musicSheetName,
             isCollect: false,

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

@@ -45,7 +45,7 @@ export default defineComponent({
         tempRows.forEach((row: any) => {
           temp.push({
             id: row.id,
-            coverImg: row.titleImg,
+            coverImg: row.musicSvg,
             type: 'MUSIC',
             title: row.musicSheetName,
             isCollect: false,