<!-- 会议记录 --> <script name="QualityMettingList" lang="ts" setup> import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' import type { IlistQueryType, IlistType } from './meeting-interface' import type { TableColumn } from '@/components/NormalTable/table_interface' import { delMeeting, getMeetingList } from '@/api/quality/meeting/meeting' const { proxy } = getCurrentInstance() as any // 列表查询条件 const listQuery = ref<IlistQueryType>({ createName: '', // 记录人 endTime: '', // 结束时间 startTime: '', // 开始时间 fileName: '', // 文件名 fileCode: '', // 文件编号 offset: 1, limit: 20, }) // 开始结束时间 const datetimerange = ref() watch(() => datetimerange.value, (newVal) => { listQuery.value.startTime = '' listQuery.value.endTime = '' if (Array.isArray(newVal)) { if (newVal.length) { listQuery.value.startTime = `${newVal[0]} 00:00:00` listQuery.value.endTime = `${newVal[1]} 23:59:59` } } }) const columns = ref<TableColumn[]>([ { text: '文件编号', value: 'fileCode', align: 'center' }, { text: '文件名称', value: 'fileName', align: 'center' }, { text: '记录人', value: 'createName', align: 'center' }, { text: '记录时间', value: 'updateTime', align: 'center' }, ]) const tableList = ref<IlistType[]>([]) const total = ref(0) const loadingTable = ref(true) const searchList = () => { loadingTable.value = true getMeetingList(listQuery.value).then((res) => { tableList.value = res.data.rows total.value = Number(res.data.total) loadingTable.value = false }) } searchList() const clearList = () => { datetimerange.value = [] listQuery.value = { createName: '', // 记录人 endTime: '', // 结束时间 startTime: '', // 开始时间 fileName: '', // 文件名 fileCode: '', // 文件编号 offset: 1, limit: 20, } searchList() } // 多选发生改变时 const checkoutList = ref() function handleSelectionChange(e: any) { checkoutList.value = e.map((item: { id: string }) => item.id) } // 页数发生变化后的操作,可能是页码变化,可能是每页容量变化,此函数必写 const changePage = (val: { size?: number; page?: number }) => { if (val && val.size) { listQuery.value.limit = val.size } if (val && val.page) { listQuery.value.offset = val.page } searchList() // fetchData(true) } // 编辑操作 const $router = useRouter() const handler = (type: string, row: IlistType | any) => { $router.push({ path: `/meetinglist/${type}`, query: { id: row.id, }, }) } // 删除 const deleteRow = (row: IlistType) => { ElMessageBox.confirm( `确认删除${row.fileName}吗?`, '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }, ).then(() => { delMeeting({ id: row.id }).then((res) => { ElMessage.success('操作成功') searchList() }) }) } </script> <template> <app-container> <search-area :need-clear="true" @search="searchList" @clear="clearList"> <search-item> <el-input v-model="listQuery.fileCode" placeholder="文件编号" clearable /> </search-item> <search-item> <el-input v-model="listQuery.fileName" placeholder="文件名称" clearable /> </search-item> <search-item> <el-input v-model="listQuery.createName" placeholder="记录人" clearable /> </search-item> <search-item> <el-date-picker v-model="datetimerange" type="daterange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" range-separator="至" start-placeholder="记录开始时间" end-placeholder="记录结束时间" clearable /> </search-item> </search-area> <table-container> <template #btns-right> <icon-button v-if="proxy.hasPerm('/quality/meeting/record/add')" icon="icon-add" title="新建" type="primary" @click="handler('create', {})" /> <!-- <icon-button icon="icon-export" title="导出" type="primary" /> --> </template> <normal-table :data="tableList" :total="total" :columns="columns" :query="listQuery" :list-loading="loadingTable" :is-showmulti-select="true" :is-multi="true" @change="changePage" @multi-select="handleSelectionChange" > <template #preColumns> <el-table-column label="序号" width="55" align="center"> <template #default="scope"> {{ scope.$index + 1 }} </template> </el-table-column> </template> <template #columns> <el-table-column label="操作" align="center" fixed="right" width="120" > <template #default="{ row }"> <el-button v-if="proxy.hasPerm('/quality/meeting/record/update')" size="small" type="primary" link @click="handler('update', row)" > 编辑 </el-button> <el-button size="small" type="primary" link @click="handler('detail', row)" > 详情 </el-button> <el-button v-if="proxy.hasPerm('/quality/meeting/record/delete')" size="small" type="danger" link @click="deleteRow(row)" > 删除 </el-button> </template> </el-table-column> </template> </normal-table> </table-container> </app-container> </template>