Browse Source

优化样式

lex 1 year ago
parent
commit
348e352e93

+ 37 - 46
dev-dist/sw.js

@@ -13,29 +13,31 @@
 
 // If the loader is already loaded, just stop.
 if (!self.define) {
-  const registry = {};
+  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(() => {
-        const promise = registry[uri];
+    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`);
         }
@@ -45,31 +47,27 @@ if (!self.define) {
   };
 
   self.define = (depsNames, factory) => {
-    const uri =
-      nextDefineUri ||
-      ('document' in self ? document.currentScript.src : '') ||
-      location.href;
+    const uri = nextDefineUri || ("document" in self ? document.currentScript.src : "") || location.href;
     if (registry[uri]) {
       // Module is already loading or loaded.
       return;
     }
-    const exports = {};
+    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 => {
+    registry[uri] = Promise.all(depsNames.map(
+      depName => specialDeps[depName] || require(depName)
+    )).then(deps => {
       factory(...deps);
       return exports;
     });
   };
 }
-define(['./workbox-5357ef54'], function (workbox) {
-  'use strict';
+define(['./workbox-5357ef54'], (function (workbox) { 'use strict';
 
   self.skipWaiting();
   workbox.clientsClaim();
@@ -79,23 +77,16 @@ define(['./workbox-5357ef54'], function (workbox) {
    * requests for URLs in the manifest.
    * See https://goo.gl/S9QRab
    */
-  workbox.precacheAndRoute(
-    [
-      {
-        url: 'registerSW.js',
-        revision: '3ca0b8505b4bec776b69afdba2768812'
-      },
-      {
-        url: 'index.html',
-        revision: '0.dm3q4j1upco'
-      }
-    ],
-    {}
-  );
+  workbox.precacheAndRoute([{
+    "url": "registerSW.js",
+    "revision": "3ca0b8505b4bec776b69afdba2768812"
+  }, {
+    "url": "index.html",
+    "revision": "0.siufbk958rg"
+  }], {});
   workbox.cleanupOutdatedCaches();
-  workbox.registerRoute(
-    new workbox.NavigationRoute(workbox.createHandlerBoundToURL('index.html'), {
-      allowlist: [/^\/$/]
-    })
-  );
-});
+  workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
+    allowlist: [/^\/$/]
+  }));
+
+}));

+ 1 - 1
public/version.json

@@ -1 +1 @@
-{"version":1712838598183}
+{"version":1712912689200}

BIN
src/views/attend-class/model/chapter/images/arrow-active.png


BIN
src/views/attend-class/model/chapter/images/arrow-default.png


BIN
src/views/attend-class/model/chapter/images/icon-d-active.png


BIN
src/views/attend-class/model/chapter/images/icon-d.png


+ 5 - 4
src/views/attend-class/model/chapter/index.module.less

@@ -20,9 +20,10 @@
   cursor: pointer;
   border-radius: 10px;
   font-size: max(17px, 12Px);
+  margin-bottom: 8px;
 
   &:hover {
-    background: #F5F6FA;
+    background: #E8F4FF;
   }
 
   .title {
@@ -47,7 +48,7 @@
 
     &.titleSelect {
       color: #198CFE;
-      font-weight: bold;
+      // font-weight: bold;
 
       .dir {
         background: url('./images/icon-d-active.png') no-repeat center;
@@ -83,11 +84,11 @@
   }
 
   &.childSelect {
-    background: #F5F6FA;
+    background: #E8F4FF;
 
     .title {
       color: #198CFE;
-      font-weight: bold;
+      // font-weight: bold;
     }
   }
 }

+ 15 - 2
src/views/prepare-lessons/components/directory-main/index.module.less

@@ -145,6 +145,7 @@
     }
 
     .changeDir {
+      position: relative;
       background: #E8F4FF;
       border-radius: 18px;
       font-weight: 500;
@@ -156,6 +157,18 @@
       align-items: center;
       cursor: pointer;
 
+      &:hover {
+
+        // background-color: #ecf4fa;
+        // color: #1888f7;
+        &::before {
+          content: '';
+          position: absolute;
+          inset: 0;
+          background-color: rgba(255, 255, 255, 0.2);
+        }
+      }
+
       svg {
         width: max(11px, 9Px);
         height: max(10px, 8Px);
@@ -216,7 +229,7 @@
 
     &.titleSelect {
       color: var(--n-color);
-      font-weight: bold;
+      // font-weight: bold;
 
       .dir {
         background: url('./images/icon-d-active.png') no-repeat center;
@@ -257,7 +270,7 @@
 
     .title {
       color: var(--n-color);
-      font-weight: bold;
+      // font-weight: bold;
     }
   }
 }

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

@@ -12,6 +12,7 @@ import { usePrepareStore } from '/src/store/modules/prepareLessons';
 import { useUserStore } from '/src/store/modules/users';
 import { useRoute } from 'vue-router';
 import { eventGlobal } from '/src/utils';
+import TheNoticeBar from '/src/components/TheNoticeBar';
 
 export default defineComponent({
   name: 'directory-main',
@@ -191,10 +192,10 @@ export default defineComponent({
         onChangeClass(item);
       });
 
-      console.log(
-        prepareStore.getBaseCourseware,
-        'prepareStore.getBaseCourseware'
-      );
+      // console.log(
+      //   prepareStore.getBaseCourseware,
+      //   'prepareStore.getBaseCourseware'
+      // );
     });
     return () => (
       <div class={styles.directoryList}>
@@ -215,8 +216,12 @@ export default defineComponent({
                 />
               </div>
               <div class={styles.itemContent}>
-                <h2>{prepareStore.getBaseCourseware.name}</h2>
-                <div class={styles.subjects}>{formatSubjectNames.value}</div>
+                <h2>
+                  <TheNoticeBar text={prepareStore.getBaseCourseware.name} />
+                </h2>
+                <div class={styles.subjects}>
+                  <TheNoticeBar text={formatSubjectNames.value} />
+                </div>
                 <div
                   class={styles.changeDir}
                   onClick={() => (forms.coursewareStatus = true)}>

+ 28 - 8
src/views/prepare-lessons/components/lesson-main/courseware-head/index.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, onMounted, reactive } from 'vue';
+import { defineComponent, onMounted, reactive, ref } from 'vue';
 import styles from './index.module.less';
 import { NButton, NInput, NSelect, NSwitch, NTooltip } from 'naive-ui';
 import { usePrepareStore } from '/src/store/modules/prepareLessons';
@@ -8,6 +8,8 @@ export default defineComponent({
   name: 'courseware-head',
   setup(props, { emit, expose }) {
     const prepareStore = usePrepareStore();
+    // 第一个课件标题,第二个课件声部
+    const checkForms = ref<any[]>(['', '']);
     const forms = reactive({
       subjects: [] as any,
       openFlagEnable: true, // 是否支持修改公开状态
@@ -27,14 +29,24 @@ export default defineComponent({
       return forms;
     };
 
+    const updateDefaultInfo = (item: any) => {
+      forms.subjects = item.subjects;
+      forms.openFlagEnable = item.openFlagEnable;
+      forms.autoPlay = item.autoPlay;
+      forms.name = item.name;
+      forms.openFlag = item.openFlag;
+    };
+
+    const checkCoursewareForm = () => {
+      //
+      checkForms.value[0] = forms.name ? '' : 'error';
+      checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
+    };
+
     onMounted(() => {
-      eventGlobal.on('updateCoursewareHeadInfo', (item: any) => {
-        forms.subjects = item.subjects;
-        forms.openFlagEnable = item.openFlagEnable;
-        forms.autoPlay = item.autoPlay;
-        forms.name = item.name;
-        forms.openFlag = item.openFlag;
-      });
+      eventGlobal.on('updateCoursewareHeadInfo', updateDefaultInfo);
+
+      eventGlobal.on('checkCoursewareForm', checkCoursewareForm);
     });
 
     expose({
@@ -58,6 +70,10 @@ export default defineComponent({
               v-model:value={forms.name}
               maxlength={20}
               clearable
+              status={checkForms.value[0]}
+              onUpdate:value={() => {
+                checkForms.value[0] = forms.name ? '' : 'error';
+              }}
             />
           </div>
           <div class={[styles.btnItem, styles.block]}>
@@ -65,6 +81,7 @@ export default defineComponent({
               <span>*</span>课件声部
             </span>
             <NSelect
+              status={checkForms.value[1]}
               placeholder="请选择声部(可多选)"
               class={styles.btnSubjectList}
               options={prepareStore.getSubjectList}
@@ -88,6 +105,9 @@ export default defineComponent({
                   </>
                 )
               }}
+              onUpdate:value={() => {
+                checkForms.value[1] = forms.subjects?.length > 0 ? '' : 'error';
+              }}
             />
           </div>
           <div class={styles.btnItem}>

+ 10 - 0
src/views/prepare-lessons/components/lesson-main/courseware/addCourseware.module.less

@@ -243,6 +243,16 @@
       }
     }
 
+    :global {
+      .n-form-item-label {
+        padding-bottom: 0;
+        align-items: center;
+        font-size: max(18px, 13Px);
+        font-weight: 600;
+        padding-right: 10px;
+      }
+    }
+
   }
 
   :global {

+ 27 - 5
src/views/prepare-lessons/components/lesson-main/courseware/addCourseware.tsx

@@ -21,7 +21,9 @@ import {
   NInput,
   NTooltip,
   NImage,
-  NIcon
+  NIcon,
+  NForm,
+  NFormItem
 } from 'naive-ui';
 import CardType from '/src/components/card-type';
 // import AttendClass from '/src/views/prepare-lessons/model/attend-class';
@@ -129,6 +131,7 @@ export default defineComponent({
       addOtherSource: false,
       addOtherIndex: 0 // 添加其它的索引
     });
+    const coursewareListRef = ref();
     const showModalMask = ref(false);
 
     // 获取列表
@@ -356,6 +359,8 @@ export default defineComponent({
     // 提交
     const onSubmit = async () => {
       try {
+        coursewareListRef.value.validate();
+        eventGlobal.emit('checkCoursewareForm');
         if (!forms.name) {
           message.error('请输入课件标题');
           return;
@@ -615,7 +620,10 @@ export default defineComponent({
     );
 
     return () => (
-      <div class={styles.coursewareModal}>
+      <NForm
+        class={styles.coursewareModal}
+        model={forms.coursewareList}
+        ref={coursewareListRef}>
         <NScrollbar
           class={[styles.listContainer, 'listContainerWrap']}
           {...{ id: 'lessons-2' }}>
@@ -661,17 +669,31 @@ export default defineComponent({
                     }
                   }}>
                   <div class={styles.knowledgePoint}>
-                    <div class={styles.btnItem}>
+                    {/* <div class={styles.btnItem}>
                       <span class={styles.btnTitle}>
                         <span>*</span>知识点名称:
                       </span>
+
+                    </div> */}
+                    <NFormItem
+                      class={styles.btnItem}
+                      label="知识点名称"
+                      path={`coursewareList[${index}].name`}
+                      showFeedback={false}
+                      requireMarkPlacement="left"
+                      rule={[
+                        {
+                          required: true,
+                          trigger: ['change', 'blur']
+                        }
+                      ]}>
                       <NInput
                         placeholder="未命名知识点"
                         v-model:value={item.name}
                         maxlength={15}
                         clearable
                       />
-                    </div>
+                    </NFormItem>
                   </div>
 
                   <NSpace class={styles.operationGroup}>
@@ -958,7 +980,7 @@ export default defineComponent({
             }}
           />
         </NModal>
-      </div>
+      </NForm>
     );
   }
 });

+ 2 - 2
src/views/prepare-lessons/components/lesson-main/index.module.less

@@ -117,8 +117,8 @@
 
       &:not(.n-button--disabled):hover,
       &:not(.n-button--disabled):active {
-        background: #FDEBED;
-        color: #EC3A4E;
+        background: #FDEFF0;
+        color: #EF6171;
       }
 
       .n-button__border {