import SaveForm from '@/components/save-form' import Pagination from '@/components/pagination' import { DataTableColumn, NButton, NDataTable, NDatePicker, NDescriptions, NDescriptionsItem, NFormItem, NInput, NModal, NSelect, NSpace, NTag, useDialog, useMessage } from 'naive-ui' import { defineComponent, onMounted, reactive, ref, provide } from 'vue' import { fetchKnowledgeList, fetchDelKnowledge, knowledgePointStatus } from '../api' import { knowledgeTypeData, lessonType } from '../knowledgeTypeData' import KnowledgeModel from './component/knowledgeModel' import { useRoute, useRouter } from 'vue-router' import { filterTimes, getTimes } from '@/utils/dateUtil' export default defineComponent({ name: 'knowledge-manage', setup() { const router = useRouter() const route = useRoute() const state = reactive({ loading: false, pagination: { page: 1, rows: 10, pageTotal: 0 }, dataList: [] as any, visiableKnowledge: false, modalType: 'add', materail: null as any }) const searchForm = reactive({ keyword: null as any, time: null, courseTypeCode: null, operatorId: null, enableFlag: null }) const dialog = useDialog() const message = useMessage() // 获取知识点列表 const knowledge = reactive({ list: [] as any, index: -1 }) const getList = async () => { try { state.loading = true const { time, ...resset } = searchForm const { data } = await fetchKnowledgeList({ ...resset, ...filterTimes(time, ['startUpdateTime', 'endUpdateTime']), page: state.pagination.page, rows: state.pagination.rows }) state.loading = false state.pagination.pageTotal = Number(data.total) state.dataList = data.rows || [] } catch { state.loading = false } } onMounted(() => { console.log(route.query) if (route.query.keyword) { searchForm.keyword = route.query.keyword } getList() }) // 打开详情 const openDetail = (row: any) => { router.push({ path: '/knowledgeDetail', query: { id: row.id, name: row.name, courseTypeCode: row.courseTypeCode } }) } const columns = (): DataTableColumn[] => { return [ { title: '知识点', key: 'id', render: (row: any) => (
{row.name} {row.id}
) }, { title: '课程类型', key: 'courseTypeName', render: (row: any) => ( <> {row.courseTypeName} {row.autoPlayFlag == 1 ? '是' : '否'} ) }, { title: '学习信息', key: 'totalMaterialNum', render: (row: any) => ( <> {row.totalMaterialNum} {(row.totalMaterialTimeSecond || 0) + 's'} ) }, { title: '上传信息', key: 'updateTime', render: (row: any) => ( <> {row.operatorName} {row.updateTime} ) }, { title: '状态', key: 'enableFlag', render(row: any) { return ( {row.enableFlag ? '已启用' : '未启用'} ) } }, { title: '操作', key: 'operation', fixed: 'right', render(row: any) { return ( changeState(row)} > {row.enableFlag ? '停用' : '启用'} {/* 一级分类下是否有子项 */} {!(row.children && row.children.length > 0) && ( openDetail(row)} v-auth="knowledgePointListByLessonCDId1604717561400045569" > 详情 )} {/* 是否是一级分类,一级分类下面是否有素材 */} {row.parentId <= 0 && !row.materialFlag && ( { state.modalType = 'add-child' state.visiableKnowledge = true state.materail = { parentId: row.id, courseTypeCode: row.courseTypeCode } }} > 添加子项 )} { state.modalType = 'update' state.visiableKnowledge = true state.materail = row }} > 修改 { handleDelete(row) }} > 删除 ) } } ] } const saveForm = ref() const onSubmit = () => { state.pagination.page = 1 getList() } // 启用停用 const changeState = async (row: any, open = true) => { dialog.warning({ title: '警告', content: `是否${row.enableFlag ? '停用' : '启用'}此知识点?`, positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { console.log('row', row) const res = await knowledgePointStatus(row.id) if (res.data) { getList() message.success('修改成功') } } }) } // 删除 const handleDelete = async (row: any) => { dialog.warning({ title: '警告', content: '是否确认删除此知识点?', positiveText: '确定', negativeText: '取消', onPositiveClick: async () => { console.log('row', row) const res = await fetchDelKnowledge(row.id) if (res.data) { onSubmit() message.success('删除成功') } } }) } const onSearch = () => { saveForm.value?.submit() } const onBtnReset = () => { saveForm.value?.reset() } return () => (
Object.assign(searchForm, val)} > {/* */} 搜索 重置 { state.visiableKnowledge = true state.modalType = 'add' state.materail = null }} > 新增知识点 row.id} > { state.materail = null }} > { if (val) { openDetail(val) return } console.log(val) state.visiableKnowledge = false getList() }} onClose={() => { state.visiableKnowledge = false state.materail = null }} >
) } })