<template>
|
<div>
|
<BasicTable @register="registerTable">
|
<template #toolbar>
|
<!-- <a-button type="primary" @click="handleRenew"> 批量更新 </a-button> -->
|
<a-button type="primary" @click="handleCreate" v-if="HasRole"> 新增物料 </a-button>
|
</template>
|
<template #action="{ record }">
|
<!-- b87079a98deb456a9cfa506bfd1a7bc6 -->
|
<TableAction
|
:actions="[
|
{
|
icon: 'clarity:note-edit-line',
|
onClick: handleEdit.bind(null, record),
|
},
|
{
|
icon: 'ant-design:delete-outlined',
|
color: 'error',
|
popConfirm: {
|
title: '是否确认删除?',
|
placement: 'left',
|
confirm: handleDelete.bind(null, record),
|
},
|
},
|
// {
|
// icon: 'binding|svg',
|
// tooltip: '绑定工艺',
|
// onClick: handleBinding.bind(null, record),
|
// },
|
]"
|
/>
|
</template>
|
</BasicTable>
|
<MaterialDrawer @register="registerDrawer" @success="handleSuccess" />
|
<MaterialModal @register="registerModal" />
|
</div>
|
</template>
|
<script lang="ts" setup>
|
import { BasicTable, useTable, TableAction } 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 { getMenuButtons } from '/@/api/sys/menu';
|
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 HasRole = ref(false);
|
const [registerTable, { reload }] = useTable({
|
title: '物料列表',
|
api: getListByPage,
|
searchInfo: { TABLE_NAME: 'BAS_ITEM' },
|
columns,
|
formConfig: {
|
labelWidth: 120,
|
schemas: searchFormSchema,
|
},
|
useSearchForm: true,
|
showTableSetting: true,
|
bordered: true,
|
showIndexColumn: false,
|
actionColumn: {
|
width: 100,
|
title: '操作',
|
dataIndex: 'action',
|
slots: { customRender: 'action' },
|
},
|
});
|
function handleCreate() {
|
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 getMenuButtons(currentRoute.value.meta.menuCode as string)).Data.Items;
|
const roles = useUserStore().getUserInfo.roles;
|
HasRole.value = roles.some((item) => item.MENU_CODE === buttons.value[0]['FUNC_CODE']);
|
});
|
|
/**
|
* @description: 跳转产品工艺绑定页面
|
* @param {*} record
|
* @return {*}
|
*/
|
function handleBinding(record: Recordable) {
|
const id = {
|
ID: record.ID,
|
Name: 'ProdRouteBinding',
|
CODE: record.ITEM_CODE,
|
Title: `产品[${record.ITEM_CODE}]工艺绑定`,
|
colSlots: [],
|
crudColSlots: [],
|
dense: true,
|
pageTitle: `产品工艺绑定`,
|
pageContent: `这里是管理产品的工艺绑定,一个产品可以绑定多个工艺路线`,
|
};
|
go(`/ProdRouteBinding/CP/${encodeURI(JSON.stringify(id))}`);
|
// let obj = JSON.stringify(id);
|
// push({
|
// path: '/ProdRouteBinding',
|
// state: {obj}, //HTML5 History API 的传参,参数隐藏不在地址栏显示(history)
|
// })
|
}
|
</script>
|