<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),
|
};
|
}
|
}
|
if (x['DO_METHOD'] == 'goRule') {
|
_click = goRule.bind(null, record);
|
}
|
actionItem.push({
|
icon: isNullOrEmpty(x['ICON_URL']) ? url : x['ICON_URL'],
|
onClick: _click,
|
color: color,
|
popConfirm: _popConfirm,
|
name: '',
|
});
|
}
|
});
|
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();
|
}
|
});
|
}
|
|
function goRule(record: Recordable) {
|
const id = {
|
CODE: record['ITEM_CODE'],
|
ID: record['ID'],
|
Name: 'BAS_ITEM_CUST',
|
SessionName: 'BAS_ITEM_CUST_update',
|
Title: `编辑物料条码规则:${record['ITEM_CODE']}`,
|
IsExist: 'RULE_CODE',
|
IsID: false,
|
crudColSlots: {
|
BAS_ITEM_CUST: ['BAS_CUSTOMER1add', 'BAS_CODE_RULE1add'],
|
} /* 增删改表单字段的插槽列表,一般用于弹出选择框按钮 */,
|
colSlotsInHigh: ['BAS_CODE_RULE1add'],
|
drawers: [
|
{
|
name: 'BAS_ITEM_CUST',
|
dataType: 'BAS_ITEM_CUST', //如果这里给了值,则会替换name的实体名去查义数据库
|
code: 'ITEM_CODE',
|
type: 'one',
|
keyName: 'BAS_ITEM_CUST',
|
order: '',
|
},
|
], //drawers是右边弹出增改侧框的名字列表
|
};
|
// 将对象转换为JSON字符串并保存到sessionStorage
|
sessionStorage.removeItem(`${id.SessionName}_params`);
|
sessionStorage.setItem(`${id.SessionName}_params`, encodeURI(JSON.stringify(id)));
|
go(
|
`/BAS_ITEM_CUST/High/${encodeURI(JSON.stringify({ sName: id.SessionName, Name: id.Name }))}`,
|
);
|
}
|
|
onMounted(async () => {
|
buttons.value = await getRoleButtons(currentRoute.value.meta.menuCode as string);
|
});
|
</script>
|