auto verify for order fulfillment and payment
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
<t-form
|
||||
v-if="order"
|
||||
class="form"
|
||||
label-width="6rem"
|
||||
label-width="7rem"
|
||||
v-entrance-transition="70"
|
||||
>
|
||||
<t-form-item label="收款金额" required-mark>
|
||||
@@ -31,8 +31,9 @@
|
||||
size="extra-small"
|
||||
theme="primary"
|
||||
variant="outline"
|
||||
content="全额收款"
|
||||
@click="fillUnpaidAmount"
|
||||
>全额收款</t-button>
|
||||
/>
|
||||
</template>
|
||||
</t-input>
|
||||
</t-form-item>
|
||||
@@ -55,6 +56,12 @@
|
||||
/>
|
||||
</div>
|
||||
</t-form-item>
|
||||
<t-form-item v-if="canDirectVerify" label="直接核销收款" content-align="right">
|
||||
<t-switch v-model="directVerify" size="small" />
|
||||
<template #help v-if="directVerify">
|
||||
<span class="red">店长直接核销后,收款会立即计入订单已收款,不再进入待核销队列。</span>
|
||||
</template>
|
||||
</t-form-item>
|
||||
<t-form-item label="备注">
|
||||
<t-textarea
|
||||
v-model="remark"
|
||||
@@ -95,7 +102,7 @@ import type { PhotoItem } from "@/types/Photo";
|
||||
import { createPackageRequestNo, formatPackageAmount, formatPackageAmountInput, parsePackageAmount } from "@/utils/package";
|
||||
import { getErrorMessage } from "@/utils/error";
|
||||
import { Message } from "@/utils/message";
|
||||
import { permissionCodes } from "@/utils/permission";
|
||||
import { gaoRoleCodes, permissionCodes } from "@/utils/permission";
|
||||
import { uploadPhotoList } from "@/utils/photo";
|
||||
|
||||
defineOptions({ name: "SalesOrderPayment" });
|
||||
@@ -114,6 +121,10 @@ const remark = ref("");
|
||||
const photoItems = ref<PhotoItem[]>([]);
|
||||
const photoUrlList = computed(() => photoItems.value.map(item => item.url));
|
||||
const requestNo = ref("");
|
||||
const directVerify = ref(false);
|
||||
const canDirectVerify = computed(() => userStore.hasRoles(gaoRoleCodes.storeManager)
|
||||
&& userStore.hasPermissions(permissionCodes.fundReceive.create)
|
||||
&& userStore.hasPermissions(permissionCodes.fundReceive.verify));
|
||||
|
||||
function openOccurredAtPicker(): void {
|
||||
draftTime.value = occurredAtText.value || Time.formatDateTime(new Date());
|
||||
@@ -162,6 +173,10 @@ async function loadData(): Promise<void> {
|
||||
|
||||
async function save(): Promise<void> {
|
||||
if (saving.value || !order.value?.id) return;
|
||||
if (directVerify.value && !canDirectVerify.value) {
|
||||
Message.warning("当前账号没有店长直接核销权限");
|
||||
return;
|
||||
}
|
||||
const amount = parsePackageAmount(amountText.value);
|
||||
const attachmentList = buildAttachments();
|
||||
if (amount === undefined || amount === 0) {
|
||||
@@ -175,15 +190,18 @@ async function save(): Promise<void> {
|
||||
if (!requestNo.value) requestNo.value = createPackageRequestNo();
|
||||
saving.value = true;
|
||||
try {
|
||||
const record = await SalesOrderAPI.receivePayment({
|
||||
const request = {
|
||||
salesOrderId: order.value.id,
|
||||
requestNo: requestNo.value,
|
||||
amount,
|
||||
occurredAt: resolveTimestamp(occurredAtText.value),
|
||||
attachmentList,
|
||||
remark: remark.value.trim() || null
|
||||
});
|
||||
Message.success("收款登记已提交");
|
||||
};
|
||||
const record = directVerify.value
|
||||
? await SalesOrderAPI.receivePaymentAndVerify(request)
|
||||
: await SalesOrderAPI.receivePayment(request);
|
||||
Message.success(directVerify.value ? "收款登记并核销成功" : "收款登记已提交");
|
||||
await router.replace(record.id && userStore.hasPermissions(permissionCodes.fundReceive.create)
|
||||
? `/management/fund-records/${record.id}`
|
||||
: `/management/sales-orders/${order.value.id}`);
|
||||
|
||||
Reference in New Issue
Block a user