From 3baaad59171ded6aca17340fcc907acbeeb45b7b Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期二, 08 四月 2025 08:14:43 +0800 Subject: [PATCH] Merge branch 'main' of http://lanpucloud.cn:1111/r/eims-master --- eims-ui/apps/web-antd/src/views/eims/fault-know/index.vue | 194 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 194 insertions(+), 0 deletions(-) diff --git a/eims-ui/apps/web-antd/src/views/eims/fault-know/index.vue b/eims-ui/apps/web-antd/src/views/eims/fault-know/index.vue new file mode 100644 index 0000000..5d298b3 --- /dev/null +++ b/eims-ui/apps/web-antd/src/views/eims/fault-know/index.vue @@ -0,0 +1,194 @@ +<script setup lang="ts"> +import type { Recordable } from '@vben/types'; + +import { ref } from 'vue'; +import { useRouter } from 'vue-router'; + +import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui'; +import { $t } from '@vben/locales'; +import { getVxePopupContainer } from '@vben/utils'; + +import { Modal, Popconfirm, Space } from 'ant-design-vue'; + +import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table'; +import { delFaultKnow, faultKnowExport, listFaultKnow } from '#/api/eims/fault-know'; +import { commonDownloadExcel } from '#/utils/file/download'; + +import { columns, querySchema } from './data'; +import EquTypeTree from './equ-type-tree.vue'; +import faultKnowDrawer from './fault-know-drawer.vue'; + +// 宸﹁竟閮ㄩ棬鐢� +const selectDeptId = ref<string[]>([]); + +defineExpose({ + tableSelect +}); + +const formOptions: VbenFormProps = { + commonConfig: { + labelWidth: 80, + componentProps: { + allowClear: true + } + }, + schema: querySchema(), + wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4', + handleReset: async () => { + selectDeptId.value = []; + // eslint-disable-next-line no-use-before-define + const { formApi, reload } = tableApi; + await formApi.resetForm(); + const formValues = formApi.form.values; + formApi.setLatestSubmissionValues(formValues); + await reload(formValues); + }, + // 鏃ユ湡閫夋嫨鏍煎紡鍖� + fieldMappingTime: [['deployDate', ['params[beginTime]', 'params[endTime]'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59']]] +}; + +const gridOptions: VxeGridProps = { + checkboxConfig: { + // 楂樹寒 + highlight: true, + // 缈婚〉鏃朵繚鐣欓�変腑鐘舵�� + reserve: true + // 鐐瑰嚮琛岄�変腑 + // trigger: 'row' + }, + columns, + height: 'auto', + keepSource: true, + pagerConfig: {}, + proxyConfig: { + ajax: { + query: async ({ page }, formValues = {}) => { + // 閮ㄩ棬鏍戦�夋嫨澶勭悊 + if (selectDeptId.value.length === 1 && selectDeptId.value[0] !== '0') { + formValues.equTypeId = selectDeptId.value[0]; + } else { + Reflect.deleteProperty(formValues, 'equTypeId'); + } + return await listFaultKnow({ + pageNum: page.currentPage, + pageSize: page.pageSize, + ...formValues + }); + } + } + }, + rowConfig: { + isHover: true, + keyField: 'id' + }, + sortConfig: { + // 杩滅▼鎺掑簭 + remote: true, + // 鏀寔澶氬瓧娈垫帓搴� 榛樿鍏抽棴 + multiple: true + }, + id: 'eims-fault-know-index' +}; + +const [BasicTable, tableApi] = useVbenVxeGrid({ + formOptions, + gridOptions, + gridEvents: { + sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams) + } +}); + +const [FaultKnowDrawer, faultKnowDrawerApi] = useVbenDrawer({ + connectedComponent: faultKnowDrawer +}); + +function handleAdd() { + faultKnowDrawerApi.setData({}); + faultKnowDrawerApi.open(); +} + +async function handleEdit(record: Recordable<any>) { + faultKnowDrawerApi.setData({ id: record.id }); + faultKnowDrawerApi.open(); +} + +async function handleDelete(row: Recordable<any>) { + await delFaultKnow(row.id); + await tableApi.query(); +} + +function handleMultiDelete() { + const rows = tableApi.grid.getCheckboxRecords(); + const ids = rows.map((row: any) => row.id); + Modal.confirm({ + title: '鎻愮ず', + okType: 'danger', + content: `纭鍒犻櫎閫変腑鐨�${ids.length}鏉¤褰曞悧锛焋, + onOk: async () => { + await delFaultKnow(ids); + await tableApi.query(); + } + }); +} + +function handleDownloadExcel() { + commonDownloadExcel(faultKnowExport, '鏁呴殰鐭ヨ瘑', tableApi.formApi.form.values, { + fieldMappingTime: formOptions.fieldMappingTime + }); +} + + +// 閫変腑鏁版嵁 +function tableSelect() { + return tableApi.grid.getCheckboxRecords(); +} +</script> + +<template> + <Page :auto-content-height="true"> + <div class="flex h-full gap-[8px]"> + <EquTypeTree v-model:select-dept-id="selectDeptId" class="w-[260px]" @reload="() => tableApi.reload()" @select="() => tableApi.reload()" /> + <BasicTable class="flex-1 overflow-hidden" table-title="璁惧鍒楄〃"> + <template #toolbar-tools> + <Space> + <a-button v-access:code="['eims:faultKnow:export']" @click="handleDownloadExcel"> + {{ $t('pages.common.export') }} + </a-button> + <a-button + :disabled="!vxeCheckboxChecked(tableApi)" + danger + type="primary" + v-access:code="['eims:faultKnow:remove']" + @click="handleMultiDelete" + > + {{ $t('pages.common.delete') }} + </a-button> + <a-button type="primary" v-access:code="['eims:faultKnow:add']" @click="handleAdd"> + {{ $t('pages.common.add') }} + </a-button> + </Space> + </template> + + <template #equName="{ row }"> + <Space> + <a-button type="link"> {{ row.equName }}</a-button> + </Space> + </template> + + <template #action="{ row }"> + <Space> + <ghost-button v-access:code="['eims:faultKnow:edit']" @click.stop="handleEdit(row)"> + {{ $t('pages.common.edit') }} + </ghost-button> + <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="纭鍒犻櫎锛�" @confirm="handleDelete(row)"> + <ghost-button danger v-access:code="['eims:faultKnow:remove']" @click.stop=""> + {{ $t('pages.common.delete') }} + </ghost-button> + </Popconfirm> + </Space> + </template> + </BasicTable> + </div> + <FaultKnowDrawer @reload="tableApi.query()" /> + </Page> +</template> -- Gitblit v1.9.3