<template>
|
<div>
|
<BasicTable @register="registerTable">
|
<template #toolbar>
|
<a-button color="primary" @click="addTool" preIcon="add_02|svg"> 新增 </a-button>
|
<a-button ghost color="success" @click="aoaToExcel" preIcon="excel-export|svg">
|
导出
|
</a-button>
|
</template>
|
<template #action="{ record }">
|
<TableAction
|
:actions="[
|
{
|
icon: 'clarity:note-edit-line',
|
tooltip: '修改',
|
onClick: handleEdit.bind(null, record),
|
},
|
{
|
icon: 'ant-design:delete-outlined',
|
tooltip: '删除',
|
color: 'error',
|
popConfirm: {
|
title: '是否确认删除?',
|
placement: 'left',
|
confirm: handleDelete.bind(null, record),
|
},
|
},
|
]"
|
/>
|
</template>
|
</BasicTable>
|
<Loading :loading="compState.loading" :tip="compState.tip" />
|
<!-- <WmsItemDrawer @register="registerDrawer" @success="handleSuccess" /> -->
|
<FeederDrawer @register="registerDrawer" @success="handleSuccess" />
|
</div>
|
</template>
|
<script lang="ts" setup>
|
import { reactive, unref } from 'vue';
|
import { aoaToSheetXlsx } from '/@/components/Excel';
|
import { BasicTable, useTable, TableAction } from '/@/components/Table';
|
import FeederDrawer from './FeederDrawer.vue';
|
import { useDrawer } from '/@/components/Drawer';
|
import { columns, searchFormSchema } from './smt_feeder.data';
|
import { getListByPage, Save, Delete } from '/@/api/tigerapi/mes/smt/feeder';
|
import { useGo } from '/@/hooks/web/usePage';
|
import { Loading } from '/@/components/Loading';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
|
const { t } = useI18n();
|
const { createMessage } = useMessage();
|
const [registerDrawer, { openDrawer }] = useDrawer();
|
const go = useGo();
|
const compState = reactive({
|
absolute: false,
|
loading: false,
|
tip: '加载中...',
|
});
|
const [registerTable, { getForm, getPaginationRef, reload }] = useTable({
|
title: '飞达信息',
|
api: getListByPage,
|
columns,
|
formConfig: {
|
labelWidth: 120,
|
schemas: searchFormSchema,
|
},
|
actionColumn: {
|
width: 120,
|
title: '操作',
|
dataIndex: 'action',
|
slots: { customRender: 'action' },
|
fixed: 'right', //undefined,
|
},
|
ellipsis: true,
|
useSearchForm: true,
|
showTableSetting: true,
|
bordered: true,
|
showIndexColumn: false,
|
});
|
let arr: any[] = [];
|
//导出
|
function aoaToExcel() {
|
const totals = getPaginationRef().total;
|
if (totals < 30000) {
|
arr = [];
|
compState.loading = true;
|
const col = getForm().getFieldsValue();
|
getListByPage(col).then((res) => {
|
res.items.forEach((element) => {
|
arr.push({
|
飞达编码: element.FEEDER_CODE,
|
飞达名称: element.FEEDER_NAME,
|
飞达类型: element.FEEDER_TYPE,
|
最大使用次数: element.MAX_COUNT,
|
预警使用次数: element.ALERT_COUNT,
|
已使用次数: element.USED_COUNT,
|
是否使用中: element.IS_USE,
|
是否打印: element.IS_PRINT,
|
工单号: element.WORK_ORDER,
|
产线编码: element.LINE_CODE,
|
贴片机编码: element.SMT_CODE,
|
站位号: element.SLOT_NO,
|
加工面: element.PCB_SURFACE,
|
物料编码: element.ITEM_CODE,
|
备注: element.REMARK,
|
创建人: element.CREATE_USER,
|
创建时间: element.CREATE_TIME,
|
});
|
});
|
const arrHeader = columns.map((column) => column.title);
|
const arrData = arr.map((item) => {
|
return Object.keys(item).map((key) => item[key]);
|
});
|
// 保证data顺序与header一致
|
if (arr.length < 30000) {
|
aoaToSheetXlsx({
|
data: arrData,
|
header: arrHeader,
|
filename: '飞达信息.xlsx',
|
});
|
} else {
|
createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
|
}
|
|
compState.loading = false;
|
});
|
} else {
|
createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
|
}
|
}
|
//添加
|
function addTool() {
|
openDrawer(true, {
|
isUpdate: false,
|
});
|
}
|
//编辑
|
function handleEdit(record: any) {
|
openDrawer(true, {
|
isUpdate: true,
|
record,
|
});
|
}
|
function handleSuccess() {
|
reload();
|
}
|
//报废
|
function handleBao(record: any) {
|
const apiAction = Save(record, unref(true), true);
|
apiAction.then((action) => {
|
if (action.IsSuccessed) {
|
createMessage.success(t('已报废'));
|
reload();
|
} else {
|
createMessage.success(t('报废操作失败'));
|
}
|
});
|
}
|
//删除
|
function handleDelete(record: any) {
|
const apiAction = Delete(record.ID);
|
apiAction.then((action) => {
|
if (action.IsSuccessed) {
|
createMessage.success(t('已删除'));
|
reload();
|
} else {
|
createMessage.success(t('删除操作失败'));
|
}
|
});
|
}
|
</script>
|