|  | @@ -1,172 +1,167 @@
 | 
	
		
			
				|  |  | -import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | -import styles from './index.module.less';
 | 
	
		
			
				|  |  | -import CardType from '@/components/card-type';
 | 
	
		
			
				|  |  | -import Pagination from '@/components/pagination';
 | 
	
		
			
				|  |  | -import SearchGroupResources from './search-group-resources';
 | 
	
		
			
				|  |  | -import { favorite, materialQueryPage, materialRemove } from '../../api';
 | 
	
		
			
				|  |  | -import { NSpin, useDialog, useMessage } from 'naive-ui';
 | 
	
		
			
				|  |  | -import TheEmpty from '@/components/TheEmpty';
 | 
	
		
			
				|  |  | -import CardPreview from '@/components/card-preview';
 | 
	
		
			
				|  |  | -import MyCollogeGuide from '@/custom-plugins/guide-page/myColloge-guide';
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  name: 'share-resources',
 | 
	
		
			
				|  |  | -  setup() {
 | 
	
		
			
				|  |  | -    const message = useMessage();
 | 
	
		
			
				|  |  | -    const dialog = useDialog();
 | 
	
		
			
				|  |  | -    const state = reactive({
 | 
	
		
			
				|  |  | -      searchWord: '',
 | 
	
		
			
				|  |  | -      loading: false,
 | 
	
		
			
				|  |  | -      pageTotal: 0,
 | 
	
		
			
				|  |  | -      pagination: {
 | 
	
		
			
				|  |  | -        page: 1,
 | 
	
		
			
				|  |  | -        rows: 20
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      searchGroup: {
 | 
	
		
			
				|  |  | -        type: 'MUSIC', //
 | 
	
		
			
				|  |  | -        name: '',
 | 
	
		
			
				|  |  | -        bookVersionId: null,
 | 
	
		
			
				|  |  | -        subjectId: null,
 | 
	
		
			
				|  |  | -        sourceType: 4
 | 
	
		
			
				|  |  | -      },
 | 
	
		
			
				|  |  | -      tableList: [] as any,
 | 
	
		
			
				|  |  | -      show: false,
 | 
	
		
			
				|  |  | -      item: {} as any
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    const getList = async () => {
 | 
	
		
			
				|  |  | -      try {
 | 
	
		
			
				|  |  | -        state.loading = true;
 | 
	
		
			
				|  |  | -        const { data } = await materialQueryPage({
 | 
	
		
			
				|  |  | -          ...state.searchGroup,
 | 
	
		
			
				|  |  | -          ...state.pagination
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        state.loading = false;
 | 
	
		
			
				|  |  | -        state.pageTotal = Number(data.total);
 | 
	
		
			
				|  |  | -        const tempRows = data.rows || [];
 | 
	
		
			
				|  |  | -        const temp: any = [];
 | 
	
		
			
				|  |  | -        tempRows.forEach((row: any) => {
 | 
	
		
			
				|  |  | -          temp.push({
 | 
	
		
			
				|  |  | -            id: row.id,
 | 
	
		
			
				|  |  | -            coverImg: row.coverImg,
 | 
	
		
			
				|  |  | -            type: row.type,
 | 
	
		
			
				|  |  | -            title: row.name,
 | 
	
		
			
				|  |  | -            isCollect: !!row.favoriteFlag,
 | 
	
		
			
				|  |  | -            isSelected: row.sourceFrom === 'PLATFORM' ? true : false,
 | 
	
		
			
				|  |  | -            refFlag: row.refFlag,
 | 
	
		
			
				|  |  | -            content: row.content,
 | 
	
		
			
				|  |  | -            subjectId: row.subjectIds,
 | 
	
		
			
				|  |  | -            enableFlag: row.enableFlag ? 1 : 0,
 | 
	
		
			
				|  |  | -            openFlag: row.openFlag
 | 
	
		
			
				|  |  | -          });
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        state.tableList = temp || [];
 | 
	
		
			
				|  |  | -        setTimeout(() => {
 | 
	
		
			
				|  |  | -          showGuide.value = true;
 | 
	
		
			
				|  |  | -        }, 500);
 | 
	
		
			
				|  |  | -      } catch {
 | 
	
		
			
				|  |  | -        state.loading = false;
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    const showGuide = ref(false);
 | 
	
		
			
				|  |  | -    const onSearch = async (item: any) => {
 | 
	
		
			
				|  |  | -      state.pagination.page = 1;
 | 
	
		
			
				|  |  | -      if (item.type === 'MUSIC') {
 | 
	
		
			
				|  |  | -        const { subjectId, ...res } = item;
 | 
	
		
			
				|  |  | -        state.searchGroup = Object.assign(state.searchGroup, {
 | 
	
		
			
				|  |  | -          ...res,
 | 
	
		
			
				|  |  | -          musicalInstrumentId: subjectId,
 | 
	
		
			
				|  |  | -          subjectId: null
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -      } else {
 | 
	
		
			
				|  |  | -        state.searchGroup = Object.assign(state.searchGroup, {
 | 
	
		
			
				|  |  | -          ...item,
 | 
	
		
			
				|  |  | -          musicalInstrumentId: null
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      getList();
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    // 收藏
 | 
	
		
			
				|  |  | -    const onCollect = async (item: any) => {
 | 
	
		
			
				|  |  | -      try {
 | 
	
		
			
				|  |  | -        await favorite({
 | 
	
		
			
				|  |  | -          materialId: item.id,
 | 
	
		
			
				|  |  | -          favoriteFlag: item.isCollect ? 0 : 1,
 | 
	
		
			
				|  |  | -          type: item.type
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        item.isCollect = !item.isCollect;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // onSearch(state.searchGroup);
 | 
	
		
			
				|  |  | -      } catch {
 | 
	
		
			
				|  |  | -        //
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // 单个删除
 | 
	
		
			
				|  |  | -    const onRemove = async (item: any) => {
 | 
	
		
			
				|  |  | -      try {
 | 
	
		
			
				|  |  | -        dialog.warning({
 | 
	
		
			
				|  |  | -          title: '提示',
 | 
	
		
			
				|  |  | -          content: '该资源已下架,是否删除?',
 | 
	
		
			
				|  |  | -          positiveText: '确定',
 | 
	
		
			
				|  |  | -          negativeText: '取消',
 | 
	
		
			
				|  |  | -          onPositiveClick: async () => {
 | 
	
		
			
				|  |  | -            await materialRemove({ id: item.id });
 | 
	
		
			
				|  |  | -            message.success('删除成功');
 | 
	
		
			
				|  |  | -            onSearch(state.searchGroup);
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -      } catch {
 | 
	
		
			
				|  |  | -        //
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    onMounted(() => {
 | 
	
		
			
				|  |  | -      getList();
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    return () => (
 | 
	
		
			
				|  |  | -      <>
 | 
	
		
			
				|  |  | -        <SearchGroupResources onSearch={(item: any) => onSearch(item)} />
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <NSpin v-model:show={state.loading} style={{ 'min-height': '50vh' }}>
 | 
	
		
			
				|  |  | -          <div class={styles.list} id="myColloge-0">
 | 
	
		
			
				|  |  | -            {state.tableList.map((item: any) => (
 | 
	
		
			
				|  |  | -              <div class={styles.itemWrap}>
 | 
	
		
			
				|  |  | -                <div class={styles.itemWrapBox}>
 | 
	
		
			
				|  |  | -                  <CardType
 | 
	
		
			
				|  |  | -                    item={item}
 | 
	
		
			
				|  |  | -                    offShelf={item.enableFlag ? false : true}
 | 
	
		
			
				|  |  | -                    onOffShelf={() => onRemove(item)}
 | 
	
		
			
				|  |  | -                    disabledMouseHover={false}
 | 
	
		
			
				|  |  | -                    onClick={(val: any) => {
 | 
	
		
			
				|  |  | -                      if (val.type === 'IMG' || !item.enableFlag) return;
 | 
	
		
			
				|  |  | -                      state.show = true;
 | 
	
		
			
				|  |  | -                      state.item = val;
 | 
	
		
			
				|  |  | -                    }}
 | 
	
		
			
				|  |  | -                    onCollect={(item: any) => onCollect(item)}
 | 
	
		
			
				|  |  | -                  />
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -              </div>
 | 
	
		
			
				|  |  | -            ))}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            {!state.loading && state.tableList.length <= 0 && (
 | 
	
		
			
				|  |  | -              <TheEmpty
 | 
	
		
			
				|  |  | -                style={{ minHeight: '50vh' }}
 | 
	
		
			
				|  |  | -                description="暂无收藏资源"
 | 
	
		
			
				|  |  | -              />
 | 
	
		
			
				|  |  | -            )}
 | 
	
		
			
				|  |  | -          </div>
 | 
	
		
			
				|  |  | -        </NSpin>
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        <Pagination
 | 
	
		
			
				|  |  | -          v-model:page={state.pagination.page}
 | 
	
		
			
				|  |  | -          v-model:pageSize={state.pagination.rows}
 | 
	
		
			
				|  |  | -          v-model:pageTotal={state.pageTotal}
 | 
	
		
			
				|  |  | -          onList={getList}
 | 
	
		
			
				|  |  | -        />
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        {/* 弹窗查看 */}
 | 
	
		
			
				|  |  | -        <CardPreview v-model:show={state.show} item={state.item} />
 | 
	
		
			
				|  |  | -        {showGuide.value ? <MyCollogeGuide></MyCollogeGuide> : null}
 | 
	
		
			
				|  |  | -      </>
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, reactive, ref } from 'vue';
 | 
	
		
			
				|  |  | +import styles from './index.module.less';
 | 
	
		
			
				|  |  | +import CardType from '@/components/card-type';
 | 
	
		
			
				|  |  | +import Pagination from '@/components/pagination';
 | 
	
		
			
				|  |  | +import SearchGroupResources from './search-group-resources';
 | 
	
		
			
				|  |  | +import { favorite, materialQueryPage, materialRemove } from '../../api';
 | 
	
		
			
				|  |  | +import { NSpin, useDialog, useMessage } from 'naive-ui';
 | 
	
		
			
				|  |  | +import TheEmpty from '@/components/TheEmpty';
 | 
	
		
			
				|  |  | +import CardPreview from '@/components/card-preview';
 | 
	
		
			
				|  |  | +import MyCollogeGuide from '@/custom-plugins/guide-page/myColloge-guide';
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  name: 'share-resources',
 | 
	
		
			
				|  |  | +  setup() {
 | 
	
		
			
				|  |  | +    const message = useMessage();
 | 
	
		
			
				|  |  | +    const dialog = useDialog();
 | 
	
		
			
				|  |  | +    const state = reactive({
 | 
	
		
			
				|  |  | +      searchWord: '',
 | 
	
		
			
				|  |  | +      loading: false,
 | 
	
		
			
				|  |  | +      pageTotal: 0,
 | 
	
		
			
				|  |  | +      pagination: {
 | 
	
		
			
				|  |  | +        page: 1,
 | 
	
		
			
				|  |  | +        rows: 20
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      searchGroup: {
 | 
	
		
			
				|  |  | +        type: 'MUSIC', //
 | 
	
		
			
				|  |  | +        name: '',
 | 
	
		
			
				|  |  | +        bookVersionId: null,
 | 
	
		
			
				|  |  | +        subjectId: null,
 | 
	
		
			
				|  |  | +        sourceType: 4
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      tableList: [] as any,
 | 
	
		
			
				|  |  | +      show: false,
 | 
	
		
			
				|  |  | +      item: {} as any
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    const getList = async () => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        state.loading = true;
 | 
	
		
			
				|  |  | +        const { data } = await materialQueryPage({
 | 
	
		
			
				|  |  | +          ...state.searchGroup,
 | 
	
		
			
				|  |  | +          ...state.pagination
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        state.loading = false;
 | 
	
		
			
				|  |  | +        state.pageTotal = Number(data.total);
 | 
	
		
			
				|  |  | +        const tempRows = data.rows || [];
 | 
	
		
			
				|  |  | +        const temp: any = [];
 | 
	
		
			
				|  |  | +        tempRows.forEach((row: any) => {
 | 
	
		
			
				|  |  | +          temp.push({
 | 
	
		
			
				|  |  | +            id: row.id,
 | 
	
		
			
				|  |  | +            coverImg: row.coverImg,
 | 
	
		
			
				|  |  | +            type: row.type,
 | 
	
		
			
				|  |  | +            title: row.name,
 | 
	
		
			
				|  |  | +            isCollect: !!row.favoriteFlag,
 | 
	
		
			
				|  |  | +            isSelected: row.sourceFrom === 'PLATFORM' ? true : false,
 | 
	
		
			
				|  |  | +            refFlag: row.refFlag,
 | 
	
		
			
				|  |  | +            content: row.content,
 | 
	
		
			
				|  |  | +            subjectId: row.subjectIds,
 | 
	
		
			
				|  |  | +            enableFlag: row.enableFlag ? 1 : 0,
 | 
	
		
			
				|  |  | +            openFlag: row.openFlag
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        state.tableList = temp || [];
 | 
	
		
			
				|  |  | +        setTimeout(() => {
 | 
	
		
			
				|  |  | +          showGuide.value = true;
 | 
	
		
			
				|  |  | +        }, 500);
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        state.loading = false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const showGuide = ref(false);
 | 
	
		
			
				|  |  | +    const onSearch = async (item: any) => {
 | 
	
		
			
				|  |  | +      state.pagination.page = 1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      const { subjectId, ...res } = item;
 | 
	
		
			
				|  |  | +      state.searchGroup = Object.assign(state.searchGroup, {
 | 
	
		
			
				|  |  | +        ...res,
 | 
	
		
			
				|  |  | +        musicalInstrumentId: subjectId,
 | 
	
		
			
				|  |  | +        subjectId: null
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      getList();
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    // 收藏
 | 
	
		
			
				|  |  | +    const onCollect = async (item: any) => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        await favorite({
 | 
	
		
			
				|  |  | +          materialId: item.id,
 | 
	
		
			
				|  |  | +          favoriteFlag: item.isCollect ? 0 : 1,
 | 
	
		
			
				|  |  | +          type: item.type
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        item.isCollect = !item.isCollect;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // onSearch(state.searchGroup);
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 单个删除
 | 
	
		
			
				|  |  | +    const onRemove = async (item: any) => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        dialog.warning({
 | 
	
		
			
				|  |  | +          title: '提示',
 | 
	
		
			
				|  |  | +          content: '该资源已下架,是否删除?',
 | 
	
		
			
				|  |  | +          positiveText: '确定',
 | 
	
		
			
				|  |  | +          negativeText: '取消',
 | 
	
		
			
				|  |  | +          onPositiveClick: async () => {
 | 
	
		
			
				|  |  | +            await materialRemove({ id: item.id });
 | 
	
		
			
				|  |  | +            message.success('删除成功');
 | 
	
		
			
				|  |  | +            onSearch(state.searchGroup);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      } catch {
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onMounted(() => {
 | 
	
		
			
				|  |  | +      getList();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    return () => (
 | 
	
		
			
				|  |  | +      <>
 | 
	
		
			
				|  |  | +        <SearchGroupResources onSearch={(item: any) => onSearch(item)} />
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <NSpin v-model:show={state.loading} style={{ 'min-height': '50vh' }}>
 | 
	
		
			
				|  |  | +          <div class={styles.list} id="myColloge-0">
 | 
	
		
			
				|  |  | +            {state.tableList.map((item: any) => (
 | 
	
		
			
				|  |  | +              <div class={styles.itemWrap}>
 | 
	
		
			
				|  |  | +                <div class={styles.itemWrapBox}>
 | 
	
		
			
				|  |  | +                  <CardType
 | 
	
		
			
				|  |  | +                    item={item}
 | 
	
		
			
				|  |  | +                    offShelf={item.enableFlag ? false : true}
 | 
	
		
			
				|  |  | +                    onOffShelf={() => onRemove(item)}
 | 
	
		
			
				|  |  | +                    disabledMouseHover={false}
 | 
	
		
			
				|  |  | +                    onClick={(val: any) => {
 | 
	
		
			
				|  |  | +                      if (val.type === 'IMG' || !item.enableFlag) return;
 | 
	
		
			
				|  |  | +                      state.show = true;
 | 
	
		
			
				|  |  | +                      state.item = val;
 | 
	
		
			
				|  |  | +                    }}
 | 
	
		
			
				|  |  | +                    onCollect={(item: any) => onCollect(item)}
 | 
	
		
			
				|  |  | +                  />
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +            ))}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            {!state.loading && state.tableList.length <= 0 && (
 | 
	
		
			
				|  |  | +              <TheEmpty
 | 
	
		
			
				|  |  | +                style={{ minHeight: '50vh' }}
 | 
	
		
			
				|  |  | +                description="暂无收藏资源"
 | 
	
		
			
				|  |  | +              />
 | 
	
		
			
				|  |  | +            )}
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +        </NSpin>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <Pagination
 | 
	
		
			
				|  |  | +          v-model:page={state.pagination.page}
 | 
	
		
			
				|  |  | +          v-model:pageSize={state.pagination.rows}
 | 
	
		
			
				|  |  | +          v-model:pageTotal={state.pageTotal}
 | 
	
		
			
				|  |  | +          onList={getList}
 | 
	
		
			
				|  |  | +        />
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 弹窗查看 */}
 | 
	
		
			
				|  |  | +        <CardPreview v-model:show={state.show} item={state.item} />
 | 
	
		
			
				|  |  | +        {showGuide.value ? <MyCollogeGuide></MyCollogeGuide> : null}
 | 
	
		
			
				|  |  | +      </>
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +});
 |