add package
This commit is contained in:
@@ -46,11 +46,12 @@
|
||||
/>
|
||||
<div v-if="isEditMode" class="edit-point-tip red">涉及积分变动的数据不能修改,已产生积分流水的登记记录不会因修改客户、事件或时间而重算;如需修改这些事实,请删除后重新创建,删除会自动回流积分。</div>
|
||||
<event-selector
|
||||
v-model="selectedEventIdList"
|
||||
:model-value="selectedEventIdList"
|
||||
class="event-selector"
|
||||
:event-list="eventList"
|
||||
:disabled="isEditMode"
|
||||
required-mark
|
||||
@update:model-value="handleEventSelectionChange"
|
||||
/>
|
||||
<event-option-selector
|
||||
class="option-selector"
|
||||
@@ -219,6 +220,7 @@ import type { EventItem, EventOptionSelectionMap } from "@/types/EventItem";
|
||||
import type { EventRecord } from "@/types/EventRecord";
|
||||
import type { PointAction } from "@/types/Point";
|
||||
import { getAttachmentReadURL } from "@/utils/attachment";
|
||||
import { isPackagePurchaseEvent } from "@/utils/event";
|
||||
import { buildEventOptionSelectionMap, resolveSelectedOptionGroupList, validateEventOptionSelection } from "@/utils/eventOption";
|
||||
import { getEventRecordPhotoURL, hasPhotoAttachment } from "@/utils/eventRecord";
|
||||
import { getEventNumberValuePlaceholder, resolveEventNumberValue } from "@/utils/eventValue";
|
||||
@@ -434,6 +436,27 @@ const eventNameMap = computed(() => {
|
||||
return map;
|
||||
});
|
||||
|
||||
async function handleEventSelectionChange(eventIdList: string[]): Promise<void> {
|
||||
const packageEvent = eventIdList
|
||||
.map(eventId => eventList.value.find(item => item.id === eventId))
|
||||
.find(item => isPackagePurchaseEvent(item));
|
||||
if (!isEditMode.value && packageEvent?.id) {
|
||||
if (!userStore.hasPermissions(permissionCodes.customerPackage.create)) {
|
||||
Message.warning("当前账号没有套餐购买权限");
|
||||
return;
|
||||
}
|
||||
await router.push({
|
||||
name: "CustomerPackagePurchase",
|
||||
query: {
|
||||
eventId: packageEvent.id,
|
||||
...(selectedCustomer.value?.id ? { customerId: selectedCustomer.value.id } : {})
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
selectedEventIdList.value = eventIdList;
|
||||
}
|
||||
|
||||
function appendRecordEvent(record: EventRecord): void {
|
||||
if (!record.event?.id || eventList.value.some(item => item.id === record.event?.id)) {
|
||||
return;
|
||||
@@ -683,6 +706,10 @@ function validateForm(): boolean {
|
||||
Message.warning("请至少选择一个登记事件");
|
||||
return false;
|
||||
}
|
||||
if (selectedEventIdList.value.some(eventId => isPackagePurchaseEvent(eventList.value.find(item => item.id === eventId)))) {
|
||||
Message.warning("套餐购买事件必须通过客户套餐购买页面登记");
|
||||
return false;
|
||||
}
|
||||
for (const eventId of selectedEventIdList.value) {
|
||||
const event = eventList.value.find(item => item.id === eventId);
|
||||
if (!event) {
|
||||
@@ -769,11 +796,17 @@ async function loadPageData(): Promise<void> {
|
||||
return;
|
||||
}
|
||||
|
||||
selectedEventIdList.value = eventList.value.slice(0, 1).map(item => item.id).filter((item): item is string => Boolean(item));
|
||||
const defaultEvent = eventList.value.find(item => !isPackagePurchaseEvent(item));
|
||||
selectedEventIdList.value = defaultEvent?.id ? [defaultEvent.id] : [];
|
||||
}
|
||||
|
||||
async function loadRecordForEdit(): Promise<void> {
|
||||
const record = await EventRecordAPI.detail(routeId.value);
|
||||
if (isPackagePurchaseEvent(record.event)) {
|
||||
Message.warning("套餐购买记录不能通过普通登记页编辑,请在客户套餐详情中查看");
|
||||
await router.replace({ name: "EventRecordDetail", params: { id: routeId.value } });
|
||||
return;
|
||||
}
|
||||
editingRecord.value = record;
|
||||
appendRecordEvent(record);
|
||||
selectedCustomerList.value = record.customer ? [record.customer] : [];
|
||||
|
||||
Reference in New Issue
Block a user