review:【erp 系统】相关代码
parent
744eef46f4
commit
41583c5e41
|
@ -50,6 +50,7 @@ export namespace ErpPurchaseInApi {
|
||||||
status?: number;
|
status?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO @nehc:updatePurchaseInStatus 是不是需要?
|
||||||
/** 采购入库状态更新参数 */
|
/** 采购入库状态更新参数 */
|
||||||
export interface PurchaseInStatusParams {
|
export interface PurchaseInStatusParams {
|
||||||
id: number;
|
id: number;
|
||||||
|
|
|
@ -24,7 +24,6 @@ export namespace ErpSaleOrderApi {
|
||||||
depositPrice?: number; // 定金金额,单位:元
|
depositPrice?: number; // 定金金额,单位:元
|
||||||
items?: SaleOrderItem[]; // 销售订单产品明细列表
|
items?: SaleOrderItem[]; // 销售订单产品明细列表
|
||||||
}
|
}
|
||||||
/** ERP 销售订单产品明细 */
|
|
||||||
export interface SaleOrderItem {
|
export interface SaleOrderItem {
|
||||||
id?: number; // 订单项编号
|
id?: number; // 订单项编号
|
||||||
orderId?: number; // 采购订单编号
|
orderId?: number; // 采购订单编号
|
||||||
|
|
|
@ -17,7 +17,6 @@ export namespace ErpStockCheckApi {
|
||||||
creatorName?: string; // 创建人
|
creatorName?: string; // 创建人
|
||||||
items?: StockCheckItem[]; // 盘点产品清单
|
items?: StockCheckItem[]; // 盘点产品清单
|
||||||
}
|
}
|
||||||
// 库存盘点单产品信息
|
|
||||||
export interface StockCheckItem {
|
export interface StockCheckItem {
|
||||||
id?: number; // 编号
|
id?: number; // 编号
|
||||||
warehouseId?: number; // 仓库编号
|
warehouseId?: number; // 仓库编号
|
||||||
|
@ -33,6 +32,7 @@ export namespace ErpStockCheckApi {
|
||||||
stockCount?: number; // 账面库存
|
stockCount?: number; // 账面库存
|
||||||
remark?: string; // 备注
|
remark?: string; // 备注
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 库存盘点单分页查询参数 */
|
/** 库存盘点单分页查询参数 */
|
||||||
export interface StockCheckPageParams extends PageParam {
|
export interface StockCheckPageParams extends PageParam {
|
||||||
no?: string;
|
no?: string;
|
||||||
|
|
|
@ -26,7 +26,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -30,7 +30,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -88,6 +88,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO @xuzhiqiang:搜索的是不是缺了,placeholder
|
||||||
/** 列表的搜索表单 */
|
/** 列表的搜索表单 */
|
||||||
export function useGridFormSchema(): VbenFormSchema[] {
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
|
|
|
@ -21,8 +21,8 @@ const emit = defineEmits(['success']);
|
||||||
const formData = ref<ErpAccountApi.Account>();
|
const formData = ref<ErpAccountApi.Account>();
|
||||||
const getTitle = computed(() => {
|
const getTitle = computed(() => {
|
||||||
return formData.value?.id
|
return formData.value?.id
|
||||||
? $t('ui.actionTitle.edit', ['结算产品'])
|
? $t('ui.actionTitle.edit', ['结算账户'])
|
||||||
: $t('ui.actionTitle.create', ['结算产品']);
|
: $t('ui.actionTitle.create', ['结算账户']);
|
||||||
});
|
});
|
||||||
|
|
||||||
const [Form, formApi] = useVbenForm({
|
const [Form, formApi] = useVbenForm({
|
||||||
|
@ -31,7 +31,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-1',
|
wrapperClass: 'grid-cols-1',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -31,7 +31,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -78,12 +78,13 @@ const [Form, formApi] = useVbenForm({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// TODO @XuZhiqiang 注释风格:使用 /** */
|
||||||
// 更新采购入库项
|
// 更新采购入库项
|
||||||
const handleUpdateItems = async (items: ErpPurchaseInApi.PurchaseInItem[]) => {
|
const handleUpdateItems = async (items: ErpPurchaseInApi.PurchaseInItem[]) => {
|
||||||
if (formData.value) {
|
if (formData.value) {
|
||||||
const data = await formApi.getValues();
|
const data = await formApi.getValues();
|
||||||
formData.value = { ...data, items };
|
formData.value = { ...data, items };
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -125,10 +126,9 @@ watch(
|
||||||
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
});
|
});
|
||||||
// 计算总价
|
// 计算总价
|
||||||
const totalPrice = newItems.reduce((sum, item) => {
|
formData.value.totalPrice = newItems.reduce((sum, item) => {
|
||||||
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
}, 0);
|
}, 0);
|
||||||
formData.value.totalPrice = totalPrice;
|
|
||||||
} else {
|
} else {
|
||||||
formData.value.totalPrice = 0;
|
formData.value.totalPrice = 0;
|
||||||
}
|
}
|
||||||
|
@ -149,9 +149,7 @@ watch(
|
||||||
{ immediate: true },
|
{ immediate: true },
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/** 创建或更新采购入库 */
|
||||||
* 创建或更新采购入库
|
|
||||||
*/
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
|
@ -221,7 +219,7 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
otherPrice: 0,
|
otherPrice: 0,
|
||||||
items: [],
|
items: [],
|
||||||
};
|
};
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 加载数据
|
// 加载数据
|
||||||
|
|
|
@ -180,6 +180,7 @@ const init = (items: ErpPurchaseInApi.PurchaseInItem[] | undefined): void => {
|
||||||
return newItem;
|
return newItem;
|
||||||
})
|
})
|
||||||
: [];
|
: [];
|
||||||
|
// TODO @XuZhiqiang:使用 await 风格哈;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.reloadData(tableData.value);
|
gridApi.grid.reloadData(tableData.value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,8 +24,9 @@ const emit = defineEmits<{
|
||||||
}>();
|
}>();
|
||||||
const order = ref<ErpPurchaseOrderApi.PurchaseOrder>();
|
const order = ref<ErpPurchaseOrderApi.PurchaseOrder>();
|
||||||
const open = ref<boolean>(false);
|
const open = ref<boolean>(false);
|
||||||
const handleSelectOrder = (selectorder: ErpPurchaseOrderApi.PurchaseOrder) => {
|
|
||||||
order.value = selectorder;
|
const handleSelectOrder = (selectOrder: ErpPurchaseOrderApi.PurchaseOrder) => {
|
||||||
|
order.value = selectOrder;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOk = () => {
|
const handleOk = () => {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { getPurchaseOrderPage } from '#/api/erp/purchase/order';
|
||||||
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
||||||
|
|
||||||
const emit = defineEmits(['selectRow']);
|
const emit = defineEmits(['selectRow']);
|
||||||
|
|
||||||
const [Grid] = useVbenVxeGrid({
|
const [Grid] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useOrderGridFormSchema(),
|
schema: useOrderGridFormSchema(),
|
||||||
|
|
|
@ -71,10 +71,7 @@ const handleUpdateTotalPrice = (totalPrice: number) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO @nehc:这里的注释使用 /** */ 和别的模块一致哈;
|
/** 创建或更新采购订单 */
|
||||||
/**
|
|
||||||
* 创建或更新采购订单
|
|
||||||
*/
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
|
|
|
@ -72,8 +72,7 @@ watch(
|
||||||
await nextTick();
|
await nextTick();
|
||||||
tableData.value = [...items];
|
tableData.value = [...items];
|
||||||
await nextTick();
|
await nextTick();
|
||||||
// TODO @nehc:这里,是不是直接 await 下?
|
await gridApi.grid.reloadData(tableData.value);
|
||||||
gridApi.grid.reloadData(tableData.value);
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
@ -249,6 +248,7 @@ const init = (
|
||||||
return newItem;
|
return newItem;
|
||||||
})
|
})
|
||||||
: [];
|
: [];
|
||||||
|
// TODO @XuZhiqiang: await 风格;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.reloadData(tableData.value);
|
gridApi.grid.reloadData(tableData.value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,21 +1,17 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { ErpPurchaseOrderApi } from '#/api/erp/purchase/order';
|
import type {ErpPurchaseOrderApi} from '#/api/erp/purchase/order';
|
||||||
import type { ErpPurchaseReturnApi } from '#/api/erp/purchase/return';
|
import type {ErpPurchaseReturnApi} from '#/api/erp/purchase/return';
|
||||||
|
import {createPurchaseReturn, getPurchaseReturn, updatePurchaseReturn} from '#/api/erp/purchase/return';
|
||||||
|
|
||||||
import { computed, nextTick, ref, watch } from 'vue';
|
import {computed, nextTick, ref, watch} from 'vue';
|
||||||
|
|
||||||
import { useVbenModal } from '@vben/common-ui';
|
import {useVbenModal} from '@vben/common-ui';
|
||||||
|
|
||||||
import { message } from 'ant-design-vue';
|
import {message} from 'ant-design-vue';
|
||||||
|
|
||||||
import { useVbenForm } from '#/adapter/form';
|
import {useVbenForm} from '#/adapter/form';
|
||||||
import {
|
|
||||||
createPurchaseReturn,
|
|
||||||
getPurchaseReturn,
|
|
||||||
updatePurchaseReturn,
|
|
||||||
} from '#/api/erp/purchase/return';
|
|
||||||
|
|
||||||
import { useFormSchema } from '../data';
|
import {useFormSchema} from '../data';
|
||||||
import PurchaseReturnItemForm from './purchase-return-item-form.vue';
|
import PurchaseReturnItemForm from './purchase-return-item-form.vue';
|
||||||
import SelectPurchaseOrderForm from './select-purchase-order-form.vue';
|
import SelectPurchaseOrderForm from './select-purchase-order-form.vue';
|
||||||
|
|
||||||
|
@ -77,6 +73,7 @@ const [Form, formApi] = useVbenForm({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// TODO @XuZhiqiang:注释风格 /** */
|
||||||
// 更新采购退货项
|
// 更新采购退货项
|
||||||
const handleUpdateItems = async (
|
const handleUpdateItems = async (
|
||||||
items: ErpPurchaseReturnApi.PurchaseReturnItem[],
|
items: ErpPurchaseReturnApi.PurchaseReturnItem[],
|
||||||
|
@ -85,7 +82,7 @@ const handleUpdateItems = async (
|
||||||
const data =
|
const data =
|
||||||
(await formApi.getValues()) as ErpPurchaseReturnApi.PurchaseReturn;
|
(await formApi.getValues()) as ErpPurchaseReturnApi.PurchaseReturn;
|
||||||
formData.value = { ...data, items };
|
formData.value = { ...data, items };
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -127,10 +124,9 @@ watch(
|
||||||
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
});
|
});
|
||||||
// 计算总价
|
// 计算总价
|
||||||
const totalPrice = newItems.reduce((sum, item) => {
|
formData.value.totalPrice = newItems.reduce((sum, item) => {
|
||||||
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
}, 0);
|
}, 0);
|
||||||
formData.value.totalPrice = totalPrice;
|
|
||||||
} else {
|
} else {
|
||||||
formData.value.totalPrice = 0;
|
formData.value.totalPrice = 0;
|
||||||
}
|
}
|
||||||
|
@ -151,9 +147,7 @@ watch(
|
||||||
{ immediate: true },
|
{ immediate: true },
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/** 创建或更新采购退货 */
|
||||||
* 创建或更新采购退货
|
|
||||||
*/
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
|
|
|
@ -66,7 +66,7 @@ watch(
|
||||||
await nextTick();
|
await nextTick();
|
||||||
tableData.value = [...items];
|
tableData.value = [...items];
|
||||||
await nextTick();
|
await nextTick();
|
||||||
gridApi.grid.reloadData(tableData.value);
|
await gridApi.grid.reloadData(tableData.value);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
@ -185,6 +185,7 @@ const init = (
|
||||||
return newItem;
|
return newItem;
|
||||||
})
|
})
|
||||||
: [];
|
: [];
|
||||||
|
// TODO @XuZhiqiang: await 风格;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.reloadData(tableData.value);
|
gridApi.grid.reloadData(tableData.value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,8 +24,9 @@ const emit = defineEmits<{
|
||||||
}>();
|
}>();
|
||||||
const order = ref<ErpPurchaseOrderApi.PurchaseOrder>();
|
const order = ref<ErpPurchaseOrderApi.PurchaseOrder>();
|
||||||
const open = ref<boolean>(false);
|
const open = ref<boolean>(false);
|
||||||
const handleSelectOrder = (selectorder: ErpPurchaseOrderApi.PurchaseOrder) => {
|
|
||||||
order.value = selectorder;
|
const handleSelectOrder = (selectOrder: ErpPurchaseOrderApi.PurchaseOrder) => {
|
||||||
|
order.value = selectOrder;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOk = () => {
|
const handleOk = () => {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { getPurchaseOrderPage } from '#/api/erp/purchase/order';
|
||||||
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
||||||
|
|
||||||
const emit = defineEmits(['selectRow']);
|
const emit = defineEmits(['selectRow']);
|
||||||
|
|
||||||
const [Grid] = useVbenVxeGrid({
|
const [Grid] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useOrderGridFormSchema(),
|
schema: useOrderGridFormSchema(),
|
||||||
|
|
|
@ -144,6 +144,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 列表的搜索表单 */
|
/** 列表的搜索表单 */
|
||||||
|
// TODO @XuZhiqiang:placeholder
|
||||||
export function useGridFormSchema(): VbenFormSchema[] {
|
export function useGridFormSchema(): VbenFormSchema[] {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
|
|
@ -31,7 +31,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -71,9 +71,7 @@ const handleUpdateTotalPrice = (totalPrice: number) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/** 创建或更新销售订单 */
|
||||||
* 创建或更新销售订单
|
|
||||||
*/
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
|
|
|
@ -243,6 +243,7 @@ const init = (items: ErpSaleOrderApi.SaleOrderItem[] | undefined): void => {
|
||||||
return newItem;
|
return newItem;
|
||||||
})
|
})
|
||||||
: [];
|
: [];
|
||||||
|
// TODO @XuZhiqiang:使用 await 风格哈;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.reloadData(tableData.value);
|
gridApi.grid.reloadData(tableData.value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -79,7 +79,7 @@ const handleUpdateItems = async (items: ErpSaleOutApi.SaleOutItem[]) => {
|
||||||
if (formData.value) {
|
if (formData.value) {
|
||||||
const data = await formApi.getValues();
|
const data = await formApi.getValues();
|
||||||
formData.value = { ...data, items };
|
formData.value = { ...data, items };
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -121,10 +121,9 @@ watch(
|
||||||
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
});
|
});
|
||||||
// 计算总价
|
// 计算总价
|
||||||
const totalPrice = newItems.reduce((sum, item) => {
|
formData.value.totalPrice = newItems.reduce((sum, item) => {
|
||||||
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
}, 0);
|
}, 0);
|
||||||
formData.value.totalPrice = totalPrice;
|
|
||||||
} else {
|
} else {
|
||||||
formData.value.totalPrice = 0;
|
formData.value.totalPrice = 0;
|
||||||
}
|
}
|
||||||
|
@ -217,7 +216,7 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
otherPrice: 0,
|
otherPrice: 0,
|
||||||
items: [],
|
items: [],
|
||||||
};
|
};
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 加载数据
|
// 加载数据
|
||||||
|
|
|
@ -180,6 +180,7 @@ const init = (items: ErpSaleOutApi.SaleOutItem[] | undefined): void => {
|
||||||
return newItem;
|
return newItem;
|
||||||
})
|
})
|
||||||
: [];
|
: [];
|
||||||
|
// TODO @XuZhiqiang:使用 await 风格哈;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.reloadData(tableData.value);
|
gridApi.grid.reloadData(tableData.value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,8 +24,9 @@ const emit = defineEmits<{
|
||||||
}>();
|
}>();
|
||||||
const order = ref<ErpSaleOrderApi.SaleOrder>();
|
const order = ref<ErpSaleOrderApi.SaleOrder>();
|
||||||
const open = ref<boolean>(false);
|
const open = ref<boolean>(false);
|
||||||
const handleSelectOrder = (selectorder: ErpSaleOrderApi.SaleOrder) => {
|
|
||||||
order.value = selectorder;
|
const handleSelectOrder = (selectOrder: ErpSaleOrderApi.SaleOrder) => {
|
||||||
|
order.value = selectOrder;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOk = () => {
|
const handleOk = () => {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { getSaleOrderPage } from '#/api/erp/sale/order';
|
||||||
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
||||||
|
|
||||||
const emit = defineEmits(['selectRow']);
|
const emit = defineEmits(['selectRow']);
|
||||||
|
|
||||||
const [Grid] = useVbenVxeGrid({
|
const [Grid] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useOrderGridFormSchema(),
|
schema: useOrderGridFormSchema(),
|
||||||
|
|
|
@ -1,21 +1,17 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { ErpSaleOrderApi } from '#/api/erp/sale/order';
|
import type {ErpSaleOrderApi} from '#/api/erp/sale/order';
|
||||||
import type { ErpSaleReturnApi } from '#/api/erp/sale/return';
|
import type {ErpSaleReturnApi} from '#/api/erp/sale/return';
|
||||||
|
import {createSaleReturn, getSaleReturn, updateSaleReturn} from '#/api/erp/sale/return';
|
||||||
|
|
||||||
import { computed, nextTick, ref, watch } from 'vue';
|
import {computed, nextTick, ref, watch} from 'vue';
|
||||||
|
|
||||||
import { useVbenModal } from '@vben/common-ui';
|
import {useVbenModal} from '@vben/common-ui';
|
||||||
|
|
||||||
import { message } from 'ant-design-vue';
|
import {message} from 'ant-design-vue';
|
||||||
|
|
||||||
import { useVbenForm } from '#/adapter/form';
|
import {useVbenForm} from '#/adapter/form';
|
||||||
import {
|
|
||||||
createSaleReturn,
|
|
||||||
getSaleReturn,
|
|
||||||
updateSaleReturn,
|
|
||||||
} from '#/api/erp/sale/return';
|
|
||||||
|
|
||||||
import { useFormSchema } from '../data';
|
import {useFormSchema} from '../data';
|
||||||
import SaleReturnItemForm from './sale-return-item-form.vue';
|
import SaleReturnItemForm from './sale-return-item-form.vue';
|
||||||
import SelectSaleOrderForm from './select-sale-order-form.vue';
|
import SelectSaleOrderForm from './select-sale-order-form.vue';
|
||||||
|
|
||||||
|
@ -78,16 +74,16 @@ const [Form, formApi] = useVbenForm({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// 更新销售退货项
|
/** 更新销售退货项 */
|
||||||
const handleUpdateItems = async (items: ErpSaleReturnApi.SaleReturnItem[]) => {
|
const handleUpdateItems = async (items: ErpSaleReturnApi.SaleReturnItem[]) => {
|
||||||
if (formData.value) {
|
if (formData.value) {
|
||||||
const data = await formApi.getValues();
|
const data = await formApi.getValues();
|
||||||
formData.value = { ...data, items };
|
formData.value = { ...data, items };
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 选择采购订单
|
/** 选择采购订单 */
|
||||||
const handleUpdateOrder = (order: ErpSaleOrderApi.SaleOrder) => {
|
const handleUpdateOrder = (order: ErpSaleOrderApi.SaleOrder) => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
...formData.value,
|
...formData.value,
|
||||||
|
@ -125,10 +121,9 @@ watch(
|
||||||
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
item.totalPrice = (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
});
|
});
|
||||||
// 计算总价
|
// 计算总价
|
||||||
const totalPrice = newItems.reduce((sum, item) => {
|
formData.value.totalPrice = newItems.reduce((sum, item) => {
|
||||||
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
return sum + (item.totalProductPrice || 0) + (item.taxPrice || 0);
|
||||||
}, 0);
|
}, 0);
|
||||||
formData.value.totalPrice = totalPrice;
|
|
||||||
} else {
|
} else {
|
||||||
formData.value.totalPrice = 0;
|
formData.value.totalPrice = 0;
|
||||||
}
|
}
|
||||||
|
@ -221,7 +216,7 @@ const [Modal, modalApi] = useVbenModal({
|
||||||
otherPrice: 0,
|
otherPrice: 0,
|
||||||
items: [],
|
items: [],
|
||||||
};
|
};
|
||||||
formApi.setValues(formData.value, false);
|
await formApi.setValues(formData.value, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 加载数据
|
// 加载数据
|
||||||
|
|
|
@ -180,6 +180,7 @@ const init = (items: ErpSaleOutApi.SaleOutItem[] | undefined): void => {
|
||||||
return newItem;
|
return newItem;
|
||||||
})
|
})
|
||||||
: [];
|
: [];
|
||||||
|
// TODO @XuZhiqiang:使用 await 风格哈;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.reloadData(tableData.value);
|
gridApi.grid.reloadData(tableData.value);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,8 +24,9 @@ const emit = defineEmits<{
|
||||||
}>();
|
}>();
|
||||||
const order = ref<ErpSaleOrderApi.SaleOrder>();
|
const order = ref<ErpSaleOrderApi.SaleOrder>();
|
||||||
const open = ref<boolean>(false);
|
const open = ref<boolean>(false);
|
||||||
const handleSelectOrder = (selectorder: ErpSaleOrderApi.SaleOrder) => {
|
|
||||||
order.value = selectorder;
|
const handleSelectOrder = (selectOrder: ErpSaleOrderApi.SaleOrder) => {
|
||||||
|
order.value = selectOrder;
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOk = () => {
|
const handleOk = () => {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { getSaleOrderPage } from '#/api/erp/sale/order';
|
||||||
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
import { useOrderGridColumns, useOrderGridFormSchema } from '../data';
|
||||||
|
|
||||||
const emit = defineEmits(['selectRow']);
|
const emit = defineEmits(['selectRow']);
|
||||||
|
|
||||||
const [Grid] = useVbenVxeGrid({
|
const [Grid] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useOrderGridFormSchema(),
|
schema: useOrderGridFormSchema(),
|
||||||
|
|
|
@ -49,9 +49,7 @@ const handleUpdateItems = (items: ErpStockCheckApi.StockCheckItem[]) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/** 创建或更新库存盘点单 */
|
||||||
* 创建或更新库存盘点单
|
|
||||||
*/
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
|
|
|
@ -92,7 +92,7 @@ watch(
|
||||||
await nextTick();
|
await nextTick();
|
||||||
tableData.value = [...items];
|
tableData.value = [...items];
|
||||||
await nextTick();
|
await nextTick();
|
||||||
gridApi.grid.reloadData(tableData.value);
|
await gridApi.grid.reloadData(tableData.value);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
@ -122,7 +122,8 @@ function handleAdd() {
|
||||||
tableData.value.push(newRow);
|
tableData.value.push(newRow);
|
||||||
gridApi.grid.insertAt(newRow, -1);
|
gridApi.grid.insertAt(newRow, -1);
|
||||||
emit('update:items', [...tableData.value]);
|
emit('update:items', [...tableData.value]);
|
||||||
// 触发表格重新渲染以更新cellClassName
|
// 触发表格重新渲染以更新 cellClassName
|
||||||
|
// TODO @XuZhiqiang:使用 await 风格哈;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
gridApi.grid.refreshColumn();
|
gridApi.grid.refreshColumn();
|
||||||
});
|
});
|
||||||
|
|
|
@ -92,7 +92,7 @@ watch(
|
||||||
await nextTick();
|
await nextTick();
|
||||||
tableData.value = [...items];
|
tableData.value = [...items];
|
||||||
await nextTick();
|
await nextTick();
|
||||||
gridApi.grid.reloadData(tableData.value);
|
await gridApi.grid.reloadData(tableData.value);
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
|
|
|
@ -32,7 +32,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
},
|
},
|
||||||
labelWidth: 140,
|
labelWidth: 140,
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -27,7 +27,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
|
@ -27,7 +27,6 @@ const [Form, formApi] = useVbenForm({
|
||||||
class: 'w-full',
|
class: 'w-full',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// 一共2列
|
|
||||||
wrapperClass: 'grid-cols-2',
|
wrapperClass: 'grid-cols-2',
|
||||||
layout: 'horizontal',
|
layout: 'horizontal',
|
||||||
schema: useFormSchema(),
|
schema: useFormSchema(),
|
||||||
|
|
Loading…
Reference in New Issue