<template>
|
<div>
|
<BasicTable @register="registerTable">
|
<template #toolbar>
|
<!-- <a-button type="primary" @click="handleRenew"> 批量更新 </a-button> -->
|
<a-button
|
type="primary"
|
@click="handleCreate(item['DO_METHOD'])"
|
:preIcon="item['ICON_URL']"
|
v-for="item in buttons.filter((m) => m['BUTTON_TYPE'] == 0)"
|
:key="item"
|
>
|
{{ item['FUNC_NAME'] }}
|
</a-button>
|
</template>
|
<template #action="{ record }">
|
<!-- b87079a98deb456a9cfa506bfd1a7bc6 -->
|
<TableAction :actions="GenerateActionButton(record)" />
|
</template>
|
</BasicTable>
|
<MaterialDrawer @register="registerDrawer" @success="handleSuccess" />
|
<MaterialModal @register="registerModal" />
|
</div>
|
</template>
|
<script lang="ts" setup>
|
import { BasicTable, useTable, TableAction, PopConfirm, ActionItem } from '/@/components/Table';
|
import { useDrawer } from '/@/components/Drawer';
|
import MaterialDrawer from './MaterialDrawer.vue';
|
import MaterialModal from './MaterialModal.vue';
|
import { columns, searchFormSchema } from './Material.data';
|
import { DeleteMaterial, getMaterialListByPage } from '../../../../api/tigerapi/bas/MaterialInfo';
|
import { useModal } from '/@/components/Modal';
|
import { getListByPage } from '/@/api/tigerapi/system';
|
import { useGo } from '/@/hooks/web/usePage';
|
import { useRouter } from 'vue-router';
|
import { onMounted, ref } from 'vue';
|
import { getRoleButtons } from '/@/api/sys/menu';
|
import { isNullOrEmpty } from '/@/utils/is';
|
import { useUserStore } from '/@/store/modules/user';
|
|
const go = useGo();
|
const { currentRoute } = useRouter();
|
const [registerDrawer, { openDrawer }] = useDrawer();
|
const [registerModal, { openModal: openMaterialModal }] = useModal();
|
const buttons = ref([]);
|
const [registerTable, { reload }] = useTable({
|
title: '物料列表',
|
api: getListByPage,
|
searchInfo: {
|
TABLE_NAME: 'BAS_ITEM',
|
option: {
|
//根据据点查询,必需带这个参数
|
UserId: useUserStore().getUserInfo.userId,
|
ByOrg: true,
|
CurOrg: useUserStore().getUserInfo.orgCode,
|
},
|
},
|
columns,
|
formConfig: {
|
labelWidth: 120,
|
schemas: searchFormSchema,
|
},
|
useSearchForm: true,
|
showTableSetting: true,
|
bordered: true,
|
showIndexColumn: false,
|
actionColumn: {
|
width: 100,
|
title: '操作',
|
dataIndex: 'action',
|
slots: { customRender: 'action' },
|
},
|
});
|
|
/**
|
* @description: 获取权限按钮列表
|
* @param {*} params
|
* @return {*}
|
*/
|
function GenerateActionButton(record: Recordable) {
|
let actionItem = [] as ActionItem[];
|
buttons.value.map((x) => {
|
if (x['BUTTON_TYPE'] == 1) {
|
let url = '';
|
let color = undefined as 'success' | 'error' | 'warning' | undefined;
|
let _click = null as any;
|
let _popConfirm = undefined as PopConfirm | undefined;
|
if (x['DO_METHOD'] == 'Edit') {
|
url = 'clarity:note-edit-line';
|
_click = handleEdit.bind(null, record);
|
} else {
|
_click = x['ICON_URL'];
|
if (x['DO_METHOD'] == 'Delete') {
|
url = 'ant-design:delete-outlined';
|
color = 'error';
|
_popConfirm = {
|
title: '是否确认删除?',
|
placement: 'left',
|
confirm: handleDelete.bind(null, record),
|
};
|
}
|
}
|
actionItem.push({
|
icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'],
|
onClick: _click,
|
color: color,
|
popConfirm: _popConfirm,
|
});
|
}
|
});
|
return actionItem;
|
}
|
|
function handleCreate(fnName: string) {
|
openDrawer(true, {
|
isUpdate: false,
|
});
|
}
|
function handleRenew() {
|
openMaterialModal(true, {
|
data: 'content',
|
info: 'Info',
|
});
|
}
|
function handleSuccess() {
|
reload();
|
}
|
|
function handleEdit(record: Recordable) {
|
openDrawer(true, {
|
record,
|
isUpdate: true,
|
});
|
}
|
function handleDelete(record: Recordable) {
|
console.log(record);
|
//删除物料
|
const apiAction = DeleteMaterial(record);
|
apiAction.then((action) => {
|
if (action.IsSuccessed) {
|
reload();
|
}
|
});
|
}
|
|
onMounted(async () => {
|
buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string);
|
});
|
</script>
|