瀏覽代碼

添加禁用标识

lex 2 年之前
父節點
當前提交
8aefdde0ae

+ 15 - 1
src/components/card-type/index.module.less

@@ -22,8 +22,11 @@
     cursor: pointer;
   }
 
+
+
   // 鼠标经过时样式
-  &:hover {
+  &:hover,
+  &.showAddBtn {
     transform: scale(1.01);
     transition: all .3s ease-in-out;
 
@@ -139,6 +142,17 @@
     opacity: 0;
     z-index: 99;
     transition: all .3s ease-in-out;
+
+    &.addBtnDisabled {
+      background-color: #fff;
+      color: #999;
+      font-weight: bold !important;
+      --n-border: 1px solid #fff !important;
+      --n-border-hover: 1px solid #fff !important;
+      --n-border-pressed: 1px solid #fff !important;
+      --n-border-focus: 1px solid #fff !important;
+      --n-border-disabled: 1px solid #fff !important;
+    }
   }
 
 

+ 9 - 3
src/components/card-type/index.tsx

@@ -19,6 +19,7 @@ type itemType = {
   title: string;
   isCollect: boolean;
   isSelected: boolean; // 精选
+  exist?: boolean; // 是否已经选
 };
 
 export default defineComponent({
@@ -118,7 +119,8 @@ export default defineComponent({
           class={[
             styles['card-section'],
             props.isShowAdd ? '' : styles.course,
-            props.isActive ? styles.isActive : ''
+            props.isActive ? styles.isActive : '',
+            props.item.exist ? styles.showAddBtn : '' // 是否已添加
           ]}>
           {{
             cover: () => (
@@ -220,13 +222,17 @@ export default defineComponent({
                 {props.isShowAdd && (
                   <NButton
                     type="primary"
-                    class={styles.addBtn}
+                    class={[
+                      styles.addBtn,
+                      props.item.exist ? styles.addBtnDisabled : ''
+                    ]}
+                    disabled={props.item.exist}
                     onClick={(e: MouseEvent) => {
                       e.stopPropagation();
                       e.preventDefault();
                       emit('add', props.item);
                     }}>
-                    添加
+                    {props.item.exist ? '已添加' : '添加'}
                   </NButton>
                 )}
               </div>

+ 4 - 4
src/views/natural-resources/model/add-teaching/index.tsx

@@ -65,7 +65,7 @@ const initState = () => ({
   id: null, // 教材id
   name: '',
   currentGradeNum: null,
-  bookType: null, // 上下册
+  // bookType: null, // 上下册
   coverImg: '', // 封面
   enableFlag: true, // 状态
   type: 'COURSEWARE', // 教材类型:COURSEWARE,THEORY,可用值:COURSEWARE,THEORY
@@ -117,7 +117,7 @@ export default defineComponent({
         form.id = data.id;
         form.name = data.name;
         form.currentGradeNum = data.currentGradeNum;
-        form.bookType = data.bookType;
+        // form.bookType = data.bookType;
         form.coverImg = data.coverImg;
         form.lessonList = [];
         const lessonList = data.lessonList || [];
@@ -220,7 +220,7 @@ export default defineComponent({
                     filterable
                   />
                 </NFormItem>
-                <NFormItem
+                {/* <NFormItem
                   path="bookType"
                   style={{ width: '360px' }}
                   rule={{
@@ -234,7 +234,7 @@ export default defineComponent({
                     v-model:value={form.bookType}
                     clearable
                   />
-                </NFormItem>
+                </NFormItem> */}
               </div>
             </div>
 

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

@@ -114,6 +114,7 @@ export const lessonTrainingAdd = (params: any) => {
     data: params
   });
 };
+
 /**
  * 备课 - 开始上课
  */
@@ -122,3 +123,12 @@ export const courseScheduleStart = (params: any) => {
     data: params
   });
 };
+
+/**
+ * 备课 - 查询标签树列表
+ */
+export const musicTagTree = (params?: any) => {
+  return request.get('/edu-app/musicTag/tree', {
+    params: params
+  });
+};

+ 27 - 13
src/views/prepare-lessons/components/directory-main/select-lessonware/index.tsx

@@ -15,7 +15,11 @@ import {
 import AddTeaching, {
   BOOK_DATA
 } from '/src/views/natural-resources/model/add-teaching';
-import { lessonCoursewarePage, lessonCoursewareRemove } from '../../../api';
+import {
+  lessonCoursewarePage,
+  lessonCoursewareRemove,
+  musicTagTree
+} from '../../../api';
 import iconUploadBg from '../images/icon-upload-bg.svg';
 import { useCatchStore } from '/src/store/modules/catchData';
 import { useThrottleFn } from '@vueuse/core';
@@ -31,11 +35,12 @@ export default defineComponent({
       loading: false,
       list: [] as any[],
       teachingStatus: false,
+      musicTagList: [] as any[],
       selectItem: {} as any,
       bookVersionId: null,
       keyword: null,
-      currentGradeNum: null,
-      bookType: null
+      currentGradeNum: null
+      // bookType: null
     });
 
     const getLessonCourseware = async () => {
@@ -48,8 +53,8 @@ export default defineComponent({
           enableFlag: 1,
           bookVersionId: forms.bookVersionId,
           keyword: forms.keyword,
-          currentGradeNum: forms.currentGradeNum,
-          bookType: forms.bookType
+          currentGradeNum: forms.currentGradeNum
+          // bookType: forms.bookType
         });
 
         forms.list = data.rows;
@@ -86,14 +91,26 @@ export default defineComponent({
 
     onMounted(async () => {
       // 获取教材分类列表
-      await catchStore.getMusicSheetCategory();
+      try {
+        const { data } = await musicTagTree({});
+        console.log(data);
+        const temp = data || [];
+        temp.forEach((item: any) => {
+          forms.musicTagList.push({
+            id: item.id,
+            name: item.name
+          });
+        });
+      } catch {
+        //
+      }
       getLessonCourseware();
     });
     return () => (
       <div class={styles.selectLessonware}>
         <div class={styles.attendClassSearch}>
           <NInput
-            placeholder="请输入班级名称"
+            placeholder="请输入教材名称"
             clearable
             v-model:value={forms.keyword}
             onKeyup={(e: KeyboardEvent) => {
@@ -113,10 +130,7 @@ export default defineComponent({
           <NSelect
             placeholder="全部版本"
             clearable
-            options={[
-              { id: null, name: '全部版本' },
-              ...catchStore.getMusicCategories
-            ]}
+            options={[{ id: null, name: '全部版本' }, ...forms.musicTagList]}
             labelField="name"
             valueField="id"
             v-model:value={forms.bookVersionId}
@@ -132,7 +146,7 @@ export default defineComponent({
             filterable
             onUpdate:value={() => throttledFn()}
           />
-          <NSelect
+          {/* <NSelect
             placeholder="全部册别"
             options={
               [
@@ -143,7 +157,7 @@ export default defineComponent({
             v-model:value={forms.bookType}
             clearable
             onUpdate:value={() => throttledFn()}
-          />
+          /> */}
         </div>
         <NScrollbar class={styles.classList}>
           <NSpin show={forms.loading} class={styles.content}>

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

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

+ 20 - 2
src/views/prepare-lessons/components/resource-main/components/resource-item/index.tsx

@@ -62,6 +62,9 @@ export default defineComponent({
         const tempRows = data.rows || [];
         const temp: any = [];
         tempRows.forEach((row: any) => {
+          const index = prepareStore.getCoursewareList.findIndex(
+            (course: any) => course.materialId === row.id
+          );
           temp.push({
             id: row.id,
             coverImg: row.coverImg,
@@ -69,11 +72,11 @@ export default defineComponent({
             title: row.name,
             isCollect: !!row.favoriteFlag,
             isSelected: row.sourceFrom === 'PLATFORM' ? true : false,
-            content: row.content
+            content: row.content,
+            exist: index !== -1 ? true : false // 是否存在
           });
         });
         state.tableList.push(...temp);
-
         state.finshed = data.pages <= data.current ? true : false;
       } catch {
         state.loading = false;
@@ -94,6 +97,21 @@ export default defineComponent({
         onSearch(state.searchGroup);
       }
     );
+    watch(
+      () => prepareStore.coursewareList,
+      () => {
+        state.tableList.forEach((item: any) => {
+          const index = prepareStore.getCoursewareList.findIndex(
+            (course: any) => course.materialId === item.id
+          );
+          item.exist = index !== -1 ? true : false; // 是否存在
+        });
+      },
+      {
+        deep: true,
+        immediate: true
+      }
+    );
 
     const throttledFn = useThrottleFn(() => {
       state.pagination.page = state.pagination.page + 1;

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

@@ -58,7 +58,6 @@ export default defineComponent({
           });
         });
         state.tableList.push(...temp);
-
         state.finshed = data.pages <= data.current ? true : false;
       } catch {
         state.loading = false;

+ 22 - 2
src/views/prepare-lessons/model/select-resources/select-item/index.tsx

@@ -1,4 +1,4 @@
-import { PropType, defineComponent, onMounted, reactive } from 'vue';
+import { PropType, defineComponent, onMounted, reactive, watch } from 'vue';
 import ResourceSearchGroup from './resource-search-group';
 import { NScrollbar, NSpin, useDialog, useMessage } from 'naive-ui';
 import styles from './index.module.less';
@@ -63,6 +63,9 @@ export default defineComponent({
         const tempRows = data.rows || [];
         const temp: any = [];
         tempRows.forEach((row: any) => {
+          const index = prepareStore.getCoursewareList.findIndex(
+            (course: any) => course.materialId === row.id
+          );
           temp.push({
             id: row.id,
             coverImg: row.coverImg,
@@ -70,7 +73,8 @@ export default defineComponent({
             title: row.name,
             isCollect: !!row.favoriteFlag,
             isSelected: row.sourceFrom === 'PLATFORM' ? true : false,
-            content: row.content
+            content: row.content,
+            exist: index !== -1 ? true : false // 是否存在
           });
         });
         state.tableList.push(...temp);
@@ -133,6 +137,22 @@ export default defineComponent({
       });
     };
 
+    watch(
+      () => prepareStore.coursewareList,
+      () => {
+        state.tableList.forEach((item: any) => {
+          const index = prepareStore.getCoursewareList.findIndex(
+            (course: any) => course.materialId === item.id
+          );
+          item.exist = index !== -1 ? true : false; // 是否存在
+        });
+      },
+      {
+        deep: true,
+        immediate: true
+      }
+    );
+
     onMounted(() => {
       getList();
     });