|
@@ -1,312 +1,309 @@
|
|
|
-import { defineComponent, onMounted, reactive } from 'vue';
|
|
|
-import styles from './index.module.less';
|
|
|
-import {
|
|
|
- NButton,
|
|
|
- NCascader,
|
|
|
- NImage,
|
|
|
- NInput,
|
|
|
- NModal,
|
|
|
- NScrollbar,
|
|
|
- NSelect,
|
|
|
- NSpace,
|
|
|
- NSpin,
|
|
|
- useDialog,
|
|
|
- useMessage
|
|
|
-} from 'naive-ui';
|
|
|
-import AddTeaching, {
|
|
|
- BOOK_DATA
|
|
|
-} from '/src/views/natural-resources/model/add-teaching';
|
|
|
-import {
|
|
|
- lessonCoursewarePage,
|
|
|
- lessonCoursewareRemove,
|
|
|
- bookVersionPage
|
|
|
-} from '../../../api';
|
|
|
-import iconUploadBg from '../images/icon-upload-bg.png';
|
|
|
-import { useCatchStore } from '/src/store/modules/catchData';
|
|
|
-import { useThrottleFn } from '@vueuse/core';
|
|
|
-
|
|
|
-export default defineComponent({
|
|
|
- name: 'select-lessonware',
|
|
|
- emits: ['close', 'confirm'],
|
|
|
- setup(props, { emit }) {
|
|
|
- const catchStore = useCatchStore();
|
|
|
- const dialog = useDialog();
|
|
|
- const message = useMessage();
|
|
|
- const forms = reactive({
|
|
|
- loading: false,
|
|
|
- list: [] as any[],
|
|
|
- teachingStatus: false,
|
|
|
- musicTagList: [] as any[],
|
|
|
- selectItem: {} as any,
|
|
|
- bookVersionId: null,
|
|
|
- keyword: null,
|
|
|
- currentGradeNum: null,
|
|
|
- instrumentId: null,
|
|
|
- removeVisiable: false,
|
|
|
- removeRow: {} as any
|
|
|
- // bookType: null
|
|
|
- });
|
|
|
-
|
|
|
- const getLessonCourseware = async () => {
|
|
|
- forms.loading = true;
|
|
|
- try {
|
|
|
- const { data } = await lessonCoursewarePage({
|
|
|
- page: 1,
|
|
|
- rows: 99,
|
|
|
- type: 'COURSEWARE',
|
|
|
- enableFlag: 1,
|
|
|
- bookVersionId: forms.bookVersionId,
|
|
|
- keyword: forms.keyword,
|
|
|
- currentGradeNum: forms.currentGradeNum,
|
|
|
- instrumentId: forms.instrumentId
|
|
|
- // bookType: forms.bookType
|
|
|
- });
|
|
|
-
|
|
|
- forms.list = data.rows;
|
|
|
- } catch {
|
|
|
- //
|
|
|
- }
|
|
|
- forms.loading = false;
|
|
|
- };
|
|
|
-
|
|
|
- // 删除教材
|
|
|
- const onDelete = async (item: any) => {
|
|
|
- try {
|
|
|
- await lessonCoursewareRemove({ id: forms.removeRow.id });
|
|
|
- message.success('删除成功');
|
|
|
- getLessonCourseware();
|
|
|
- forms.removeVisiable = false;
|
|
|
- } catch (e) {
|
|
|
- console.log(e);
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
- const throttledFn = useThrottleFn(() => getLessonCourseware(), 500);
|
|
|
-
|
|
|
- const onDetail = (item: any) => {
|
|
|
- emit('confirm', item);
|
|
|
- emit('close');
|
|
|
- };
|
|
|
-
|
|
|
- onMounted(async () => {
|
|
|
- // 获取教材分类列表
|
|
|
- try {
|
|
|
- await catchStore.getSubjects();
|
|
|
- const { data } = await bookVersionPage({
|
|
|
- page: 1,
|
|
|
- rows: 99,
|
|
|
- type: 'COURSEWARE'
|
|
|
- });
|
|
|
- const temp = data.rows || [];
|
|
|
- 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="请输入教材名称"
|
|
|
- clearable
|
|
|
- v-model:value={forms.keyword}
|
|
|
- onKeyup={(e: KeyboardEvent) => {
|
|
|
- if (e.code === 'Enter') {
|
|
|
- throttledFn();
|
|
|
- }
|
|
|
- }}
|
|
|
- onClear={() => {
|
|
|
- forms.keyword = null;
|
|
|
- throttledFn();
|
|
|
- }}>
|
|
|
- {{
|
|
|
- prefix: () => (
|
|
|
- <span
|
|
|
- class="icon-search-input"
|
|
|
- onClick={() => throttledFn()}></span>
|
|
|
- )
|
|
|
- }}
|
|
|
- </NInput>
|
|
|
- <NCascader
|
|
|
- placeholder="请选择乐器"
|
|
|
- v-model:value={forms.instrumentId}
|
|
|
- onUpdate:value={() => throttledFn()}
|
|
|
- options={
|
|
|
- [
|
|
|
- { name: '全部乐器', id: null },
|
|
|
- ...catchStore.getSubjectList
|
|
|
- ] as any
|
|
|
- }
|
|
|
- checkStrategy="child"
|
|
|
- showPath={false}
|
|
|
- childrenField="instruments"
|
|
|
- expandTrigger="hover"
|
|
|
- labelField="name"
|
|
|
- valueField="id"
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- style={{ width: '400px' }}
|
|
|
- />
|
|
|
- <NSelect
|
|
|
- placeholder="全部版本"
|
|
|
- clearable
|
|
|
- options={[{ id: null, name: '全部版本' }, ...forms.musicTagList]}
|
|
|
- labelField="name"
|
|
|
- valueField="id"
|
|
|
- v-model:value={forms.bookVersionId}
|
|
|
- onUpdate:value={() => throttledFn()}
|
|
|
- />
|
|
|
- <NSelect
|
|
|
- placeholder="全部年级"
|
|
|
- options={
|
|
|
- [{ label: '全部年级', value: null }, ...BOOK_DATA.grades] as any
|
|
|
- }
|
|
|
- v-model:value={forms.currentGradeNum}
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- onUpdate:value={() => throttledFn()}
|
|
|
- />
|
|
|
- {/* <NSelect
|
|
|
- placeholder="全部册别"
|
|
|
- options={
|
|
|
- [
|
|
|
- { label: '全部册别', value: null },
|
|
|
- ...BOOK_DATA.bookTypes
|
|
|
- ] as any
|
|
|
- }
|
|
|
- v-model:value={forms.bookType}
|
|
|
- clearable
|
|
|
- onUpdate:value={() => throttledFn()}
|
|
|
- /> */}
|
|
|
- </div>
|
|
|
- <NScrollbar class={styles.classList}>
|
|
|
- <NSpin show={forms.loading} class={styles.content}>
|
|
|
- <NSpace size={[50, 40]}>
|
|
|
- <div
|
|
|
- class={styles.item}
|
|
|
- key={`item--1`}
|
|
|
- onClick={() => {
|
|
|
- forms.selectItem = {};
|
|
|
- forms.teachingStatus = true;
|
|
|
- }}>
|
|
|
- <div class={styles.cover}>
|
|
|
- <div class={styles.itemImg}>
|
|
|
- <div class={styles.itemBg}></div>
|
|
|
- <NImage
|
|
|
- objectFit="cover"
|
|
|
- src={iconUploadBg}
|
|
|
- lazy
|
|
|
- previewDisabled={true}
|
|
|
- onLoad={e => {
|
|
|
- (e.target as any).dataset.loaded = 'true';
|
|
|
- }}
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- {forms.list.map((item: any, index: number) => {
|
|
|
- return (
|
|
|
- <div
|
|
|
- class={styles.item}
|
|
|
- key={`item-${index}`}
|
|
|
- onClick={() => onDetail(item)}>
|
|
|
- <div class={styles.cover}>
|
|
|
- <div class={styles.itemImg}>
|
|
|
- <div class={styles.itemBg}></div>
|
|
|
- <NImage
|
|
|
- objectFit="cover"
|
|
|
- src={item.coverImg}
|
|
|
- lazy
|
|
|
- previewDisabled={true}
|
|
|
- onLoad={e => {
|
|
|
- (e.target as any).dataset.loaded = 'true';
|
|
|
- }}
|
|
|
- />
|
|
|
- {item.customFlag && (
|
|
|
- <>
|
|
|
- <div class={styles.iconCustom}></div>
|
|
|
- <div class={styles.editContainer}>
|
|
|
- <div class={styles.editBtnGroup}>
|
|
|
- <NButton
|
|
|
- size="small"
|
|
|
- class={styles.delBtn}
|
|
|
- color="#EA4132"
|
|
|
- onClick={(e: MouseEvent) => {
|
|
|
- e.stopPropagation();
|
|
|
- // onDelete(item);
|
|
|
- forms.removeVisiable = true;
|
|
|
- forms.removeRow = item;
|
|
|
- }}>
|
|
|
- 删除
|
|
|
- </NButton>
|
|
|
- <NButton
|
|
|
- size="small"
|
|
|
- class={styles.editBtn}
|
|
|
- color="#FFFFFF"
|
|
|
- onClick={(e: MouseEvent) => {
|
|
|
- e.stopPropagation();
|
|
|
- forms.selectItem = item;
|
|
|
- forms.teachingStatus = true;
|
|
|
- }}>
|
|
|
- 编辑
|
|
|
- </NButton>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </>
|
|
|
- )}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class={styles.itemName}>{item.name}</div>
|
|
|
- </div>
|
|
|
- );
|
|
|
- })}
|
|
|
- </NSpace>
|
|
|
- </NSpin>
|
|
|
- </NScrollbar>
|
|
|
-
|
|
|
- {/* 添加自定义教材 */}
|
|
|
- <NModal
|
|
|
- v-model:show={forms.teachingStatus}
|
|
|
- preset="card"
|
|
|
- showIcon={false}
|
|
|
- class={['modalTitle background', styles.teachingModal]}
|
|
|
- title={'自定义教材'}
|
|
|
- blockScroll={false}>
|
|
|
- <AddTeaching
|
|
|
- item={forms.selectItem}
|
|
|
- onClose={() => (forms.teachingStatus = false)}
|
|
|
- onConfirm={() => {
|
|
|
- getLessonCourseware();
|
|
|
- forms.selectItem = {};
|
|
|
- }}
|
|
|
- />
|
|
|
- </NModal>
|
|
|
-
|
|
|
- <NModal
|
|
|
- v-model:show={forms.removeVisiable}
|
|
|
- preset="card"
|
|
|
- class={['modalTitle', styles.removeVisiable]}
|
|
|
- title={'删除教材'}>
|
|
|
- <div class={styles.studentRemove}>
|
|
|
- <p>是否删除该教材</p>
|
|
|
-
|
|
|
- <NSpace class={styles.btnGroup} justify="center">
|
|
|
- <NButton round type="primary" onClick={onDelete}>
|
|
|
- 确定
|
|
|
- </NButton>
|
|
|
- <NButton round onClick={() => (forms.removeVisiable = false)}>
|
|
|
- 取消
|
|
|
- </NButton>
|
|
|
- </NSpace>
|
|
|
- </div>
|
|
|
- </NModal>
|
|
|
- </div>
|
|
|
- );
|
|
|
- }
|
|
|
-});
|
|
|
+import { defineComponent, onMounted, reactive } from 'vue';
|
|
|
+import styles from './index.module.less';
|
|
|
+import {
|
|
|
+ NButton,
|
|
|
+ NCascader,
|
|
|
+ NImage,
|
|
|
+ NInput,
|
|
|
+ NModal,
|
|
|
+ NScrollbar,
|
|
|
+ NSelect,
|
|
|
+ NSpace,
|
|
|
+ NSpin,
|
|
|
+ useDialog,
|
|
|
+ useMessage
|
|
|
+} from 'naive-ui';
|
|
|
+import AddTeaching, {
|
|
|
+ BOOK_DATA
|
|
|
+} from '/src/views/natural-resources/model/add-teaching';
|
|
|
+import {
|
|
|
+ lessonCoursewarePage,
|
|
|
+ lessonCoursewareRemove,
|
|
|
+ bookVersionPage
|
|
|
+} from '../../../api';
|
|
|
+import iconUploadBg from '../images/icon-upload-bg.png';
|
|
|
+import { useCatchStore } from '/src/store/modules/catchData';
|
|
|
+import { useThrottleFn } from '@vueuse/core';
|
|
|
+import iconEdit from '../images/icon-edit.png';
|
|
|
+import iconDelete from '../images/icon-delete.png';
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'select-lessonware',
|
|
|
+ emits: ['close', 'confirm'],
|
|
|
+ setup(props, { emit }) {
|
|
|
+ const catchStore = useCatchStore();
|
|
|
+ const dialog = useDialog();
|
|
|
+ const message = useMessage();
|
|
|
+ const forms = reactive({
|
|
|
+ loading: false,
|
|
|
+ list: [] as any[],
|
|
|
+ teachingStatus: false,
|
|
|
+ musicTagList: [] as any[],
|
|
|
+ selectItem: {} as any,
|
|
|
+ bookVersionId: null,
|
|
|
+ keyword: null,
|
|
|
+ currentGradeNum: null,
|
|
|
+ instrumentId: null,
|
|
|
+ removeVisiable: false,
|
|
|
+ removeRow: {} as any
|
|
|
+ // bookType: null
|
|
|
+ });
|
|
|
+
|
|
|
+ const getLessonCourseware = async () => {
|
|
|
+ forms.loading = true;
|
|
|
+ try {
|
|
|
+ const { data } = await lessonCoursewarePage({
|
|
|
+ page: 1,
|
|
|
+ rows: 99,
|
|
|
+ type: 'COURSEWARE',
|
|
|
+ enableFlag: 1,
|
|
|
+ bookVersionId: forms.bookVersionId,
|
|
|
+ keyword: forms.keyword,
|
|
|
+ currentGradeNum: forms.currentGradeNum,
|
|
|
+ instrumentId: forms.instrumentId
|
|
|
+ // bookType: forms.bookType
|
|
|
+ });
|
|
|
+
|
|
|
+ forms.list = data.rows;
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ forms.loading = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ // 删除教材
|
|
|
+ const onDelete = async (item: any) => {
|
|
|
+ try {
|
|
|
+ await lessonCoursewareRemove({ id: forms.removeRow.id });
|
|
|
+ message.success('删除成功');
|
|
|
+ getLessonCourseware();
|
|
|
+ forms.removeVisiable = false;
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const throttledFn = useThrottleFn(() => getLessonCourseware(), 500);
|
|
|
+
|
|
|
+ const onDetail = (item: any) => {
|
|
|
+ emit('confirm', item);
|
|
|
+ emit('close');
|
|
|
+ };
|
|
|
+
|
|
|
+ onMounted(async () => {
|
|
|
+ // 获取教材分类列表
|
|
|
+ try {
|
|
|
+ await catchStore.getSubjects();
|
|
|
+ const { data } = await bookVersionPage({
|
|
|
+ page: 1,
|
|
|
+ rows: 99,
|
|
|
+ type: 'COURSEWARE'
|
|
|
+ });
|
|
|
+ const temp = data.rows || [];
|
|
|
+ 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="请输入教材名称"
|
|
|
+ clearable
|
|
|
+ v-model:value={forms.keyword}
|
|
|
+ onKeyup={(e: KeyboardEvent) => {
|
|
|
+ if (e.code === 'Enter') {
|
|
|
+ throttledFn();
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ onClear={() => {
|
|
|
+ forms.keyword = null;
|
|
|
+ throttledFn();
|
|
|
+ }}>
|
|
|
+ {{
|
|
|
+ prefix: () => (
|
|
|
+ <span
|
|
|
+ class="icon-search-input"
|
|
|
+ onClick={() => throttledFn()}></span>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </NInput>
|
|
|
+ <NCascader
|
|
|
+ placeholder="请选择乐器"
|
|
|
+ v-model:value={forms.instrumentId}
|
|
|
+ onUpdate:value={() => throttledFn()}
|
|
|
+ options={
|
|
|
+ [
|
|
|
+ { name: '全部乐器', id: null },
|
|
|
+ ...catchStore.getSubjectList
|
|
|
+ ] as any
|
|
|
+ }
|
|
|
+ checkStrategy="child"
|
|
|
+ showPath={false}
|
|
|
+ childrenField="instruments"
|
|
|
+ expandTrigger="hover"
|
|
|
+ labelField="name"
|
|
|
+ valueField="id"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ style={{ width: '400px' }}
|
|
|
+ />
|
|
|
+ <NSelect
|
|
|
+ placeholder="全部版本"
|
|
|
+ clearable
|
|
|
+ options={[{ id: null, name: '全部版本' }, ...forms.musicTagList]}
|
|
|
+ labelField="name"
|
|
|
+ valueField="id"
|
|
|
+ v-model:value={forms.bookVersionId}
|
|
|
+ onUpdate:value={() => throttledFn()}
|
|
|
+ />
|
|
|
+ <NSelect
|
|
|
+ placeholder="全部年级"
|
|
|
+ options={
|
|
|
+ [{ label: '全部年级', value: null }, ...BOOK_DATA.grades] as any
|
|
|
+ }
|
|
|
+ v-model:value={forms.currentGradeNum}
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ onUpdate:value={() => throttledFn()}
|
|
|
+ />
|
|
|
+ {/* <NSelect
|
|
|
+ placeholder="全部册别"
|
|
|
+ options={
|
|
|
+ [
|
|
|
+ { label: '全部册别', value: null },
|
|
|
+ ...BOOK_DATA.bookTypes
|
|
|
+ ] as any
|
|
|
+ }
|
|
|
+ v-model:value={forms.bookType}
|
|
|
+ clearable
|
|
|
+ onUpdate:value={() => throttledFn()}
|
|
|
+ /> */}
|
|
|
+ </div>
|
|
|
+ <NScrollbar class={styles.classList}>
|
|
|
+ <NSpin show={forms.loading} class={styles.content}>
|
|
|
+ <NSpace size={[50, 40]}>
|
|
|
+ <div
|
|
|
+ class={styles.item}
|
|
|
+ key={`item--1`}
|
|
|
+ onClick={() => {
|
|
|
+ forms.selectItem = {};
|
|
|
+ forms.teachingStatus = true;
|
|
|
+ }}>
|
|
|
+ <div class={styles.cover}>
|
|
|
+ <div class={styles.itemImg}>
|
|
|
+ <div class={styles.itemBg}></div>
|
|
|
+ <NImage
|
|
|
+ objectFit="cover"
|
|
|
+ src={iconUploadBg}
|
|
|
+ lazy
|
|
|
+ previewDisabled={true}
|
|
|
+ onLoad={e => {
|
|
|
+ (e.target as any).dataset.loaded = 'true';
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ {forms.list.map((item: any, index: number) => {
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ class={styles.item}
|
|
|
+ key={`item-${index}`}
|
|
|
+ onClick={() => onDetail(item)}>
|
|
|
+ <div class={styles.cover}>
|
|
|
+ <div class={styles.itemImg}>
|
|
|
+ <div class={styles.itemBg}></div>
|
|
|
+ <NImage
|
|
|
+ objectFit="cover"
|
|
|
+ src={item.coverImg}
|
|
|
+ lazy
|
|
|
+ previewDisabled={true}
|
|
|
+ onLoad={e => {
|
|
|
+ (e.target as any).dataset.loaded = 'true';
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ {item.customFlag && (
|
|
|
+ <>
|
|
|
+ <div class={styles.iconCustom}></div>
|
|
|
+ <div class={styles.editContainer}>
|
|
|
+ <div class={styles.editBtnGroup}>
|
|
|
+ <img
|
|
|
+ src={iconEdit}
|
|
|
+ class={styles.imgBtn}
|
|
|
+ onClick={(e: MouseEvent) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ forms.selectItem = item;
|
|
|
+ forms.teachingStatus = true;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ src={iconDelete}
|
|
|
+ class={styles.imgBtn}
|
|
|
+ onClick={(e: MouseEvent) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ forms.removeVisiable = true;
|
|
|
+ forms.removeRow = item;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class={styles.itemName}>{item.name}</div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </NSpace>
|
|
|
+ </NSpin>
|
|
|
+ </NScrollbar>
|
|
|
+
|
|
|
+ {/* 添加自定义教材 */}
|
|
|
+ <NModal
|
|
|
+ v-model:show={forms.teachingStatus}
|
|
|
+ preset="card"
|
|
|
+ showIcon={false}
|
|
|
+ class={['modalTitle background', styles.teachingModal]}
|
|
|
+ title={'自定义教材'}
|
|
|
+ blockScroll={false}>
|
|
|
+ <AddTeaching
|
|
|
+ item={forms.selectItem}
|
|
|
+ onClose={() => (forms.teachingStatus = false)}
|
|
|
+ onConfirm={() => {
|
|
|
+ getLessonCourseware();
|
|
|
+ forms.selectItem = {};
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </NModal>
|
|
|
+
|
|
|
+ <NModal
|
|
|
+ v-model:show={forms.removeVisiable}
|
|
|
+ preset="card"
|
|
|
+ class={['modalTitle', styles.removeVisiable]}
|
|
|
+ title={'删除教材'}>
|
|
|
+ <div class={styles.studentRemove}>
|
|
|
+ <p>是否删除该教材</p>
|
|
|
+
|
|
|
+ <NSpace class={styles.btnGroup} justify="center">
|
|
|
+ <NButton round type="primary" onClick={onDelete}>
|
|
|
+ 确定
|
|
|
+ </NButton>
|
|
|
+ <NButton round onClick={() => (forms.removeVisiable = false)}>
|
|
|
+ 取消
|
|
|
+ </NButton>
|
|
|
+ </NSpace>
|
|
|
+ </div>
|
|
|
+ </NModal>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|