<script lang="ts" setup>
|
import type { ErpPurchaseRequestApi } from '#/api/erp/purchase/request';
|
|
import { ref, computed } from 'vue';
|
|
import { useVbenModal } from '@vben/common-ui';
|
|
import { message, Select } from 'ant-design-vue';
|
|
import { generatePurchaseOrder } from '#/api/erp/purchase/request';
|
import { getSupplierSimpleList } from '#/api/erp/purchase/supplier';
|
|
const emit = defineEmits(['success']);
|
|
const requestId = ref<number>();
|
const supplierId = ref<number>();
|
const supplierOptions = ref<{ id: number; name: string }[]>([]);
|
|
const supplierSelectOptions = computed(() => {
|
return supplierOptions.value.map((s) => ({
|
label: s.name,
|
value: s.id,
|
}));
|
});
|
|
const [Modal, modalApi] = useVbenModal({
|
async onConfirm() {
|
if (!supplierId.value) {
|
message.warning('请选择供应商');
|
return;
|
}
|
modalApi.lock();
|
try {
|
const orderId = await generatePurchaseOrder(requestId.value!, supplierId.value!);
|
await modalApi.close();
|
emit('success');
|
message.success(`生成采购订单成功,订单编号:${orderId}`);
|
} finally {
|
modalApi.unlock();
|
}
|
},
|
async onOpenChange(isOpen: boolean) {
|
if (!isOpen) {
|
requestId.value = undefined;
|
supplierId.value = undefined;
|
return;
|
}
|
const data = modalApi.getData<{ id: number; supplierId?: number }>();
|
requestId.value = data.id;
|
supplierId.value = data.supplierId;
|
// 获取供应商列表
|
supplierOptions.value = await getSupplierSimpleList();
|
},
|
});
|
</script>
|
|
<template>
|
<Modal title="生成采购订单" class="w-1/3">
|
<div class="mb-4">
|
<span class="mr-2">选择供应商:</span>
|
<Select
|
v-model:value="supplierId"
|
:options="supplierSelectOptions"
|
style="width: 200px"
|
placeholder="请选择供应商"
|
show-search
|
:filter-option="(input: string, option: any) => option.label.toLowerCase().includes(input.toLowerCase())"
|
/>
|
</div>
|
</Modal>
|
</template>
|