车间能级提升-智能设备管理系统
朱桂飞
2025-02-17 2c3d6ae9d456ad2cf0b3047d6421ef6f36d216d0
eims-ui/apps/web-antd/src/views/eims/equ/index.vue
@@ -4,21 +4,27 @@
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { Page, useVbenDrawer, type VbenFormProps } from '@vben/common-ui';
import { Page, useVbenDrawer, useVbenModal, type VbenFormProps } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { getVxePopupContainer } from '@vben/utils';
import { Dropdown, Menu, MenuItem, Modal, Popconfirm, Space } from 'ant-design-vue';
import { Modal, Popconfirm, Space } from 'ant-design-vue';
import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps } from '#/adapter/vxe-table';
import { useVbenVxeGrid, vxeCheckboxChecked, type VxeGridProps, vxeSortEvent } from '#/adapter/vxe-table';
import { delEqu, equExport, listEqu } from '#/api/eims/equ';
import { commonDownloadExcel } from '#/utils/file/download';
import { columns, querySchema } from './data';
import equDrawer from './equ-drawer.vue';
import equImportModal from './equ-import-modal.vue';
import EquTypeTree from './equ-type-tree.vue';
// 左边部门用
const selectDeptId = ref<string[]>([]);
defineExpose({
  tableSelect
});
const formOptions: VbenFormProps = {
  commonConfig: {
@@ -76,19 +82,37 @@
    isHover: true,
    keyField: 'equId'
  },
  sortConfig: {
    // 远程排序
    remote: true,
    // 支持多字段排序 默认关闭
    multiple: true
  },
  id: 'eims-equ-index'
};
const [BasicTable, tableApi] = useVbenVxeGrid({
  formOptions,
  gridOptions
  gridOptions,
  gridEvents: {
    sortChange: (sortParams) => vxeSortEvent(tableApi, sortParams)
  }
});
const [EquDrawer, equDrawerApi] = useVbenDrawer({
  connectedComponent: equDrawer
});
/**
 * 导入
 */
const [EquImportModal, equImportModalApi] = useVbenModal({
  connectedComponent: equImportModal
});
function handleImport() {
  equImportModalApi.open();
}
function handleAdd() {
  equDrawerApi.setData({});
@@ -126,35 +150,30 @@
}
const router = useRouter();
function handleDetail(record: Recordable<any>) {
  router.push(`/equ/detail/${record.equId}`);
}
// 选中数据
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()"
      />
      <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:equ:export']" @click="handleDownloadExcel">
              {{ $t('pages.common.export') }}
            </a-button>
            <a-button
              :disabled="!vxeCheckboxChecked(tableApi)"
              danger
              type="primary"
              v-access:code="['eims:equ:remove']"
              @click="handleMultiDelete"
            >
            <a-button v-access:code="['eims:equ:import']" @click="handleImport">
              {{ $t('pages.common.import') }}
            </a-button>
            <a-button :disabled="!vxeCheckboxChecked(tableApi)" danger type="primary" v-access:code="['eims:equ:remove']" @click="handleMultiDelete">
              {{ $t('pages.common.delete') }}
            </a-button>
            <a-button type="primary" v-access:code="['eims:equ:add']" @click="handleAdd">
@@ -171,28 +190,22 @@
        <template #action="{ row }">
          <Space>
            <ghost-button v-access:code="['system:role:edit']" @click.stop="handleEdit(row)">
            <ghost-button v-access:code="['eims:equ:edit']" @click.stop="handleEdit(row)">
              {{ $t('pages.common.edit') }}
            </ghost-button>
            <ghost-button v-if="row.menuType !== 'F'" class="btn-success" v-access:code="['eims:equ:list']" @click="handleDetail(row)">
              {{ $t('pages.common.info') }}
            </ghost-button>
            <Popconfirm :get-popup-container="getVxePopupContainer" placement="left" title="确认删除?" @confirm="handleDelete(row)">
              <ghost-button danger v-access:code="['system:role:remove']" @click.stop="">
              <ghost-button danger v-access:code="['eims:equ:remove']" @click.stop="">
                {{ $t('pages.common.delete') }}
              </ghost-button>
            </Popconfirm>
          </Space>
          <Dropdown :get-popup-container="getVxePopupContainer" placement="bottomRight">
            <template #overlay>
              <Menu>
                <MenuItem key="1" @click="handleDetail(row)"> 详情 </MenuItem>
              </Menu>
            </template>
            <a-button size="small" type="link">
              {{ $t('pages.common.more') }}
            </a-button>
          </Dropdown>
        </template>
      </BasicTable>
    </div>
    <EquDrawer @reload="tableApi.query()" />
    <EquImportModal @reload="tableApi.query()" />
  </Page>
</template>