import { defineComponent, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; import { NButton, NForm, NFormItem, NSpace } from 'naive-ui'; import iconUpload from '../../images/icon-upload.svg'; import iconEdit from '../../images/icon-edit.svg'; import iconSelectAll from '../../images/icon-selectall.svg'; import iconSelectAllDefault from '../../images/icon-selectall-default.svg'; import iconPen from '../../images/icon-pen.svg'; import iconDelete from '../../images/icon-delete.svg'; import TheSearch from '/src/components/TheSearch'; import { resourceTypeArray } from '/src/utils/searchArray'; import { useCatchStore } from '/src/store/modules/catchData'; export default defineComponent({ name: 'search-group', emits: ['search', 'upload', 'edit', 'selectAll', 'delete', 'update'], setup(props, { emit }) { const resourceList = ref([] as any[]); const catchStore = useCatchStore(); const forms = reactive({ type: '', // keyword: '', bookVersionId: null, subjectId: null }); const state = reactive({ isEdit: false, // 是否编辑 isSelectAll: false }); const onSearch = () => { emit('search', forms); }; onMounted(async () => { resourceList.value = [ { label: '全部', value: '' }, ...resourceTypeArray ]; // 获取声部列表 await catchStore.getSubjects(); }); return () => ( <div class={styles.searchGroup}> <div class={styles.searchCatatory}> <NSpace size="small" class={styles.btnType}> {resourceList.value.map( (item: any) => item.value !== 'MUSIC' && ( <NButton type={forms.type === item.value ? 'primary' : 'default'} secondary={forms.type === item.value ? false : true} round size="small" focusable={false} onClick={() => { forms.type = item.value; onSearch(); }}> {item.label} </NButton> ) )} </NSpace> <NSpace> {state.isEdit ? ( <> <NButton type="primary" class={styles.addTrain} focusable={false} strong onClick={() => { state.isSelectAll = !state.isSelectAll; emit('selectAll', state.isSelectAll); }}> <img src={ state.isSelectAll ? iconSelectAll : iconSelectAllDefault } class={styles.iconSelectAll} /> 全选 </NButton> <NButton type="error" class={[styles.addTrain, styles.error]} focusable={false} strong onClick={() => emit('delete')}> <img src={iconDelete} class={styles.iconDelete} /> 删除 </NButton> <NButton type="primary" class={styles.addTrain} focusable={false} strong onClick={() => emit('update')}> <img src={iconPen} class={styles.iconPen} /> 修改 </NButton> <NButton type="primary" class={styles.addTrain} focusable={false} strong onClick={() => { state.isEdit = false; emit('edit', state.isEdit); }}> 完成编辑 </NButton> </> ) : ( <> <NButton type="primary" class={styles.addTrain} focusable={false} {...{ id: 'myResources-0' }} strong onClick={() => emit('upload')}> <img src={iconUpload} class={styles.iconUpload} /> 上传资源 </NButton> <NButton type="primary" class={styles.addTrain} focusable={false} strong onClick={() => { state.isEdit = true; emit('edit', state.isEdit); }}> <img src={iconEdit} class={styles.iconEdit} /> 编辑资源 </NButton> </> )} </NSpace> </div> <NForm labelAlign="left" labelPlacement="left"> <NFormItem label="乐器:"> <NSpace class={styles.spaceSection}> {catchStore.getSubjectAllList.map((subject: any) => ( <NButton secondary={forms.subjectId === subject.id} quaternary={forms.subjectId !== subject.id} strong focusable={false} type={forms.subjectId === subject.id ? 'primary' : 'default'} onClick={() => { forms.subjectId = subject.id; onSearch(); }}> {subject.name} </NButton> ))} </NSpace> </NFormItem> <TheSearch class={styles.inputSearch} round onSearch={(val: string) => { forms.keyword = val; onSearch(); }} /> </NForm> </div> ); } });