<template> <div> <!--引用表格--> <BasicTable @register="registerTable" :rowSelection="rowSelection" size="small"> <!--插槽:table标题--> <template #tableTitle> <a-button type="primary" v-auth="'cuspCode:cusp_customer_profile:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增(add)</a-button> <a-button type="primary" v-auth="'cuspCode:cusp_customer_profile:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出(export)</a-button> <!-- <j-upload-button type="primary" v-auth="'cuspCode:cusp_customer_profile:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button> --> <a-dropdown v-if="selectedRowKeys.length > 0"> <template #overlay> <a-menu> <a-menu-item key="1" @click="batchHandleDelete"> <Icon icon="ant-design:delete-outlined"></Icon> 删除(delete) </a-menu-item> </a-menu> </template> <a-button v-auth="'cuspCode:cusp_customer_profile:deleteBatch'">批量操作(batch operation) <Icon icon="mdi:chevron-down"></Icon> </a-button> </a-dropdown> <!-- 高级查询 --> <!-- <super-query :config="superQueryConfig" @search="handleSuperQuery" /> --> </template> <!--操作栏--> <template #action="{ record }"> <TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/> </template> <!--字段回显插槽--> <template v-slot:bodyCell="{ column, record, index, text }"> </template> </BasicTable> <!-- 表单区域 --> <CuspCustomerProfileModal @register="registerModal" @success="handleSuccess"></CuspCustomerProfileModal> </div> </template> <script lang="ts" name="cuspCode-cuspCustomerProfile" setup> import {ref, reactive, computed, unref,onMounted} from 'vue'; import {BasicTable, useTable, TableAction} from '/@/components/Table'; import { useListPage } from '/@/hooks/system/useListPage' import {useModal} from '/@/components/Modal'; import CuspCustomerProfileModal from './components/CuspCustomerProfileModal.vue' import {columns, searchFormSchema, superQuerySchema,getIntermediatorOptions} from './CuspCustomerProfile.data'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './CuspCustomerProfile.api'; import {downloadFile} from '/@/utils/common/renderUtils'; import { useUserStore } from '/@/store/modules/user'; const queryParam = reactive<any>({}); const checkedKeys = ref<Array<string | number>>([]); const userStore = useUserStore(); //注册model const [registerModal, {openModal}] = useModal(); //注册table数据 const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({ tableProps:{ title: '客户档案', api: list, columns, canResize:false, formConfig: { //labelWidth: 120, schemas: searchFormSchema, autoSubmitOnEnter:true, showAdvancedButton:true, fieldMapToNumber: [ ], fieldMapToTime: [ ], }, actionColumn: { width: 200, fixed:'right' }, beforeFetch: (params) => { return Object.assign(params, queryParam); }, }, exportConfig: { name:"客户档案", url: getExportUrl, params: queryParam, }, importConfig: { url: getImportUrl, success: handleSuccess }, }) const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext onMounted(() => { getIntermediatorOptions() }) // 高级查询配置 const superQueryConfig = reactive(superQuerySchema); /** * 高级查询事件 */ function handleSuperQuery(params) { Object.keys(params).map((k) => { queryParam[k] = params[k]; }); reload(); } /** * 新增事件 */ function handleAdd() { openModal(true, { isUpdate: false, showFooter: true, }); } /** * 编辑事件 */ function handleEdit(record: Recordable) { openModal(true, { record, isUpdate: true, showFooter: true, }); } /** * 详情 */ function handleDetail(record: Recordable) { openModal(true, { record, isUpdate: true, showFooter: false, }); } /** * 删除事件 */ async function handleDelete(record) { await deleteOne({id: record.id}, handleSuccess); } /** * 批量删除事件 */ async function batchHandleDelete() { await batchDelete({ids: selectedRowKeys.value},handleSuccess); } /** * 成功回调 */ function handleSuccess() { (selectedRowKeys.value = []) && reload(); } /** * 操作栏 */ function getTableAction(record){ return [ { label: '编辑(edit)', onClick: handleEdit.bind(null, record), auth: 'cuspCode:cusp_customer_profile:edit' } ] } /** * 下拉操作栏 */ function getDropDownAction(record){ return [ { label: '详情(detail)', onClick: handleDetail.bind(null, record), }, { label: '删除(delete)', popConfirm: { title: '是否确认删除(Are you sure to delete)', confirm: handleDelete.bind(null, record), placement: 'topLeft' }, auth: 'cuspCode:cusp_customer_profile:delete' } ] } </script> <style lang="less" scoped> :deep(.ant-picker),:deep(.ant-input-number){ width: 100%; } </style>