diff --git a/src/api/PointAPI.ts b/src/api/PointAPI.ts index 231afed..1738d38 100644 --- a/src/api/PointAPI.ts +++ b/src/api/PointAPI.ts @@ -6,7 +6,8 @@ import type { PointAdjustRequest, PointLedger, PointLedgerPage, - PointRule + PointRule, + GroovyScript } from "@/types/Point"; import { getCurrentStoreId, withCurrentStoreId, withCurrentStorePage } from "@/utils/store"; @@ -94,6 +95,11 @@ async function ruleDetail(id: string): Promise { }); } +/** 查询积分规则可选的 Groovy 脚本。 */ +async function ruleScriptList(): Promise { + return await axios.post(`${BASE_URI}/rule/script/list`); +} + async function ruleCreate(rule: PointRule): Promise { return await axios.post(`${BASE_URI}/rule/create`, withCurrentStoreId(rule)); } @@ -120,6 +126,7 @@ export default { adjust, ruleList, ruleDetail, + ruleScriptList, ruleCreate, ruleUpdate, ruleSort, diff --git a/src/pages/event/EventEdit.vue b/src/pages/event/EventEdit.vue index 964ef86..e1ac1ce 100644 --- a/src/pages/event/EventEdit.vue +++ b/src/pages/event/EventEdit.vue @@ -22,9 +22,6 @@ borderless /> - -
-
@@ -171,15 +168,6 @@ @confirm="confirmLimitPicker" /> - - - ([]); -const storePickerColumns = computed(() => [ - currentStoreStore.storeList - .map(item => ({ - label: item.name || item.code || "未命名门店", - value: item.id || "" - })) - .filter(item => item.value) -]); -const selectedStoreName = computed(() => { - const store = currentStoreStore.storeList.find(item => item.id === formModel.storeId); - return store?.name || store?.code || "请选择门店"; -}); - -function openStorePicker(): void { - if (!isCreateMode.value) { - return; - } - if (!currentStoreStore.storeList.length) { - Message.warning("暂无可选门店"); - return; - } - - storePickerDraft.value = [formModel.storeId]; - storePickerVisible.value = true; -} - -async function confirmStorePicker(): Promise { - const storeId = String(storePickerDraft.value[0] || ""); - if (!storeId) { - return; - } - - formModel.storeId = storeId; - storePickerVisible.value = false; -} - // ---------- 颜色 ---------- const colorPickerVisible = ref(false); @@ -600,7 +548,7 @@ function resolveTimestamp(valueText: string): number | undefined { function validateForm(): boolean { if (!formModel.storeId) { - Message.warning("请选择门店"); + Message.warning("当前门店不可用"); return false; } if (!formModel.name.trim()) { @@ -729,15 +677,10 @@ async function saveEventItem(): Promise { async function prepareStoreScope(): Promise { if (isGlobalManager.value) { await currentStoreStore.loadStoreList(); - const queryStoreId = String(route.query.storeId || ""); - formModel.storeId = currentStoreStore.storeList.some(item => item.id === queryStoreId) - ? queryStoreId - : currentStoreStore.currentStoreId; - return; + } else { + await currentStoreStore.loadLoginStore(); } - - const store = await currentStoreStore.loadLoginStore(); - formModel.storeId = store?.id || ""; + formModel.storeId = currentStoreStore.currentStoreId; } async function fillForm(): Promise { diff --git a/src/pages/event/EventList.vue b/src/pages/event/EventList.vue index cb3d6b6..dd7f04a 100644 --- a/src/pages/event/EventList.vue +++ b/src/pages/event/EventList.vue @@ -328,10 +328,7 @@ async function loadData(): Promise { } async function toCreate(): Promise { - await router.push({ - path: "/management/registration-events/create", - query: currentStoreStore.currentStoreId ? { storeId: currentStoreStore.currentStoreId } : undefined - }); + await router.push("/management/registration-events/create"); } async function toSort(): Promise { diff --git a/src/pages/point/PointLedgerDetail.vue b/src/pages/point/PointLedgerDetail.vue index a56397c..3e744e1 100644 --- a/src/pages/point/PointLedgerDetail.vue +++ b/src/pages/point/PointLedgerDetail.vue @@ -64,6 +64,7 @@ + @@ -254,6 +255,15 @@ function getRulePointText(rule: PointRule): string { return `${0 < rule.pointValue ? "发放" : "消耗"} ${Math.abs(rule.pointValue)} 分`; } +function getRuleScriptText(rule: PointRule): string { + const script = rule.groovyScript; + if (!script) { + return rule.groovyScriptId || "未绑定脚本"; + } + const version = script.latest?.version; + return `${script.name || script.code || "未命名脚本"}${version === undefined ? "" : `(v${version})`}`; +} + function getRuleStatusText(status?: PointRuleStatus): string { return ({ DRAFT: "草稿", diff --git a/src/pages/point/PointRuleDetail.vue b/src/pages/point/PointRuleDetail.vue index 9c13339..e64885c 100644 --- a/src/pages/point/PointRuleDetail.vue +++ b/src/pages/point/PointRuleDetail.vue @@ -34,7 +34,27 @@ - + @@ -60,7 +80,8 @@