Files
admin-vben5/apps/web-antd/src/views/property/costManagement/costItemSetting/index.vue
dev_ljl a43cb1b390
Some checks failed
/ Explore-Gitea-Actions (push) Failing after 5m21s
feat:工单处理权重修改为处理优先级
2025-08-21 17:11:47 +08:00

181 lines
5.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
import { Page, useVbenModal, type VbenFormProps } from '@vben/common-ui';
import { getVxePopupContainer } from '@vben/utils';
import {useAccess} from "@vben/access";
import { Modal, Popconfirm, Space } from 'ant-design-vue';
import {
useVbenVxeGrid,
vxeCheckboxChecked,
type VxeGridProps
} from '#/adapter/vxe-table';
import {
costItemSettingList,
costItemSettingRemove, costItemSettingUpdate,
} from '#/api/property/costManagement/costItemSetting';
import type { CostItemSettingForm } from '#/api/property/costManagement/costItemSetting/model';
import costItemSettingModal from './costItemSetting-modal.vue';
import costItemSettingDetal from './costItemSetting-detail.vue';
import { columns, querySchema } from './data';
import {TableSwitch} from "#/components/table";
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',
};
const gridOptions: VxeGridProps = {
checkboxConfig: {
// 高亮
highlight: true,
// 翻页时保留选中状态
reserve: true,
// 点击行选中
// trigger: 'row',
},
// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新
// columns: columns(),
columns,
height: 'auto',
keepSource: true,
pagerConfig: {},
proxyConfig: {
ajax: {
query: async ({ page }, formValues = {}) => {
return await costItemSettingList({
pageNum: page.currentPage,
pageSize: page.pageSize,
...formValues,
});
},
},
},
rowConfig: {
keyField: 'id',
},
// 表格全局唯一表示 保存列配置需要用到
id: 'property-costItemSetting-index'
};
const [BasicTable, tableApi] = useVbenVxeGrid({
formOptions,
gridOptions,
});
const [CostItemSettingModal, modalApi] = useVbenModal({
connectedComponent: costItemSettingModal,
});
function handleAdd() {
modalApi.setData({});
modalApi.open();
}
const [costItemSettingDetalModal, costItemSettingDetalApi] = useVbenModal({
connectedComponent: costItemSettingDetal,
});
async function handleInfo(row: Required<CostItemSettingForm>) {
costItemSettingDetalApi.setData({ id: row.id });
costItemSettingDetalApi.open();
}
async function handleEdit(row: Required<CostItemSettingForm>) {
modalApi.setData({ id: row.id });
modalApi.open();
}
async function handleDelete(row: Required<CostItemSettingForm>) {
await costItemSettingRemove(row.id);
await tableApi.query();
}
function handleMultiDelete() {
const rows = tableApi.grid.getCheckboxRecords();
const ids = rows.map((row: Required<CostItemSettingForm>) => row.id);
Modal.confirm({
title: '提示',
okType: 'danger',
content: `确认删除选中的${ids.length}条记录吗?`,
onOk: async () => {
await costItemSettingRemove(ids);
await tableApi.query();
},
});
}
const { hasAccessByCodes } = useAccess();
</script>
<template>
<Page :auto-content-height="true">
<BasicTable table-title="费用项设置列表">
<template #toolbar-tools>
<Space>
<a-button
:disabled="!vxeCheckboxChecked(tableApi)"
danger
type="primary"
v-access:code="['property:costItemSetting:remove']"
@click="handleMultiDelete">
{{ $t('pages.common.delete') }}
</a-button>
<a-button
type="primary"
v-access:code="['property:costItemSetting:add']"
@click="handleAdd"
>
{{ $t('pages.common.add') }}
</a-button>
</Space>
</template>
<!-- 冒号数字类型没冒号字符串-->
<template #state="{ row }">
<TableSwitch
checkedValue="1"
unCheckedValue="0"
v-model:value="row.state"
:api="() => costItemSettingUpdate(row)"
:disabled=" !hasAccessByCodes(['property:costItemSetting:edit'])"
@reload="() => tableApi.query()"
/>
</template>
<template #action="{ row }">
<Space>
<ghost-button
@click.stop="handleInfo(row)"
>
{{ $t('pages.common.info') }}
</ghost-button>
<ghost-button
v-access:code="['property:costItemSetting: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="['property:costItemSetting:remove']"
@click.stop=""
>
{{ $t('pages.common.delete') }}
</ghost-button>
</Popconfirm>
</Space>
</template>
</BasicTable>
<CostItemSettingModal @reload="tableApi.query()" />
<costItemSettingDetalModal/>
</Page>
</template>