use Message instead of Toast
This commit is contained in:
@@ -86,7 +86,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Toast } from "tdesign-mobile-vue";
|
||||
import { Message } from "@/utils/message";
|
||||
import { useUserStore } from "timi-web";
|
||||
import CustomerAPI from "@/api/CustomerAPI";
|
||||
import PointAPI from "@/api/PointAPI";
|
||||
@@ -149,7 +149,7 @@ async function loadCustomerByCode(code: string): Promise<void> {
|
||||
try {
|
||||
const matched = await CustomerAPI.findByCode(normalizedCode);
|
||||
if (!matched?.id) {
|
||||
Toast.warning("未找到客户");
|
||||
Message.warning("未找到客户");
|
||||
return;
|
||||
}
|
||||
selectedCustomerId.value = matched.id;
|
||||
@@ -160,7 +160,7 @@ async function loadCustomerByCode(code: string): Promise<void> {
|
||||
});
|
||||
await loadAccount();
|
||||
} catch {
|
||||
Toast.error("客户信息加载失败");
|
||||
Message.error("客户信息加载失败");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ async function loadAccount(): Promise<void> {
|
||||
} catch {
|
||||
customer.value = undefined;
|
||||
account.value = undefined;
|
||||
Toast.error("客户信息加载失败");
|
||||
Message.error("客户信息加载失败");
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Toast } from "tdesign-mobile-vue";
|
||||
import { Message } from "@/utils/message";
|
||||
import { useUserStore } from "timi-web";
|
||||
import type { PointAction } from "@/types/Point";
|
||||
import CustomerAPI from "@/api/CustomerAPI";
|
||||
@@ -141,7 +141,7 @@ async function loadCustomerByCode(code: string): Promise<void> {
|
||||
try {
|
||||
const matched = await CustomerAPI.findByCode(normalizedCode);
|
||||
if (!matched?.id) {
|
||||
Toast.warning("未找到客户");
|
||||
Message.warning("未找到客户");
|
||||
return;
|
||||
}
|
||||
selectedCustomerId.value = matched.id;
|
||||
@@ -150,7 +150,7 @@ async function loadCustomerByCode(code: string): Promise<void> {
|
||||
} catch {
|
||||
selectedCustomer.value = undefined;
|
||||
account.value = undefined;
|
||||
Toast.error("客户信息加载失败");
|
||||
Message.error("客户信息加载失败");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ async function loadCustomerAccount(): Promise<void> {
|
||||
} catch {
|
||||
selectedCustomer.value = undefined;
|
||||
account.value = undefined;
|
||||
Toast.error("客户信息加载失败");
|
||||
Message.error("客户信息加载失败");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,23 +243,23 @@ function confirmPointActionPicker(value: Array<string | number>): void {
|
||||
async function submitAdjust(): Promise<void> {
|
||||
const pointDelta = parsePointDelta();
|
||||
if (!selectedCustomerId.value) {
|
||||
Toast.warning("请选择客户");
|
||||
Message.warning("请选择客户");
|
||||
return;
|
||||
}
|
||||
if (!currentStoreStore.currentStoreId) {
|
||||
Toast.warning("当前门店未设置");
|
||||
Message.warning("当前门店未设置");
|
||||
return;
|
||||
}
|
||||
if (!pointDelta) {
|
||||
Toast.warning("调整积分不能为 0,且必须是整数");
|
||||
Message.warning("调整积分不能为 0,且必须是整数");
|
||||
return;
|
||||
}
|
||||
if (!remark.value.trim()) {
|
||||
Toast.warning("请填写调整原因");
|
||||
Message.warning("请填写调整原因");
|
||||
return;
|
||||
}
|
||||
if (pointDelta < 0 && Math.abs(pointDelta) > (account.value?.balance ?? 0)) {
|
||||
Toast.warning("扣分后余额不能小于 0");
|
||||
Message.warning("扣分后余额不能小于 0");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -272,13 +272,13 @@ async function submitAdjust(): Promise<void> {
|
||||
pointDelta,
|
||||
remark: remark.value.trim()
|
||||
});
|
||||
Toast.success("积分调整已提交");
|
||||
Message.success("积分调整已提交");
|
||||
await router.replace({
|
||||
name: "PointLedgerList",
|
||||
query: { customerId: selectedCustomerId.value }
|
||||
});
|
||||
} catch (error) {
|
||||
Toast.error(getErrorMessage(error, "积分调整失败"));
|
||||
Message.error(getErrorMessage(error, "积分调整失败"));
|
||||
} finally {
|
||||
isSaving.value = false;
|
||||
}
|
||||
@@ -293,7 +293,7 @@ onMounted(async () => {
|
||||
await prepareStoreScope();
|
||||
await loadCustomerAccount();
|
||||
} catch (error) {
|
||||
Toast.error(getErrorMessage(error, "门店信息加载失败"));
|
||||
Message.error(getErrorMessage(error, "门店信息加载失败"));
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Toast, type DropdownValue } from "tdesign-mobile-vue";
|
||||
import type { DropdownValue } from "tdesign-mobile-vue";
|
||||
import { Time, type PageResult, useUserStore } from "timi-web";
|
||||
import CustomerAPI from "@/api/CustomerAPI";
|
||||
import PointAPI from "@/api/PointAPI";
|
||||
@@ -165,6 +165,7 @@ import { useSettingStore } from "@/store/settingStore";
|
||||
import type { Customer } from "@/types/Customer";
|
||||
import type { PointLedger, PointLedgerChangeType, PointLedgerPage } from "@/types/Point";
|
||||
import { getCustomerPhotoURL } from "@/utils/customer";
|
||||
import { Message } from "@/utils/message";
|
||||
import { gaoRoleCodes, permissionCodes } from "@/utils/permission";
|
||||
|
||||
type DateFilter = "all" | "today" | "last7" | "last30" | "custom";
|
||||
@@ -228,14 +229,14 @@ async function loadCustomerByCode(code: string): Promise<void> {
|
||||
try {
|
||||
const matched = await CustomerAPI.findByCode(normalizedCode);
|
||||
if (!matched?.id) {
|
||||
Toast.warning("未找到客户");
|
||||
Message.warning("未找到客户");
|
||||
return;
|
||||
}
|
||||
selectedCustomerId.value = matched.id;
|
||||
customer.value = matched;
|
||||
await reload();
|
||||
} catch {
|
||||
Toast.error("客户信息加载失败");
|
||||
Message.error("客户信息加载失败");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,7 +354,7 @@ async function load(): Promise<void> {
|
||||
page.index += 1;
|
||||
isNoMore.value = pageResult.list.length >= pageResult.total || list.length < page.size;
|
||||
} catch {
|
||||
Toast.error("积分流水加载失败");
|
||||
Message.error("积分流水加载失败");
|
||||
} finally {
|
||||
if (token === loadToken) {
|
||||
isLoading.value = false;
|
||||
@@ -492,7 +493,7 @@ onMounted(async () => {
|
||||
try {
|
||||
await preparePage();
|
||||
} catch {
|
||||
Toast.error("积分流水页面加载失败");
|
||||
Message.error("积分流水页面加载失败");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DialogPlugin, Toast } from "tdesign-mobile-vue";
|
||||
import { DialogPlugin } from "tdesign-mobile-vue";
|
||||
import { Time, useUserStore } from "timi-web";
|
||||
import EventAPI from "@/api/EventAPI";
|
||||
import PointAPI from "@/api/PointAPI";
|
||||
@@ -197,11 +197,26 @@ import PointRuleTierEditor from "@/pages/point/component/PointRuleTierEditor.vue
|
||||
import { useCurrentStoreStore } from "@/store/currentStoreStore";
|
||||
import { useNavBarStore } from "@/store/navBarStore";
|
||||
import type { EventItem } from "@/types/EventItem";
|
||||
import type { PointAction, PointRule, PointRuleMode, PointRuleStatus, PointRuleTier, PointRuleTierForm, PointRuleTriggerType } from "@/types/Point";
|
||||
import type {
|
||||
PointAction,
|
||||
PointRule,
|
||||
PointRuleMode,
|
||||
PointRuleStatus,
|
||||
PointRuleTier,
|
||||
PointRuleTierForm,
|
||||
PointRuleTriggerType
|
||||
} from "@/types/Point";
|
||||
import { getEventValueUnitText } from "@/utils/eventValue";
|
||||
import { getErrorMessage } from "@/utils/error";
|
||||
import { gaoRoleCodes, permissionCodes } from "@/utils/permission";
|
||||
import { formatTierBoundaryValue, getTierMinValue, isLastTier, resolveNonNegativeInteger, resolveTierBoundaryValue } from "@/utils/pointRule";
|
||||
import {
|
||||
formatTierBoundaryValue,
|
||||
getTierMinValue,
|
||||
isLastTier,
|
||||
resolveNonNegativeInteger,
|
||||
resolveTierBoundaryValue
|
||||
} from "@/utils/pointRule";
|
||||
import { Message } from "@/utils/message";
|
||||
|
||||
type PickerValue = string | number;
|
||||
|
||||
@@ -316,7 +331,7 @@ async function confirmStorePicker(value: Array<string | number>): Promise<void>
|
||||
await loadEventList();
|
||||
} catch {
|
||||
eventList.value = [];
|
||||
Toast.error("登记事件加载失败");
|
||||
Message.error("登记事件加载失败");
|
||||
}
|
||||
}
|
||||
storePickerVisible.value = false;
|
||||
@@ -324,7 +339,7 @@ async function confirmStorePicker(value: Array<string | number>): Promise<void>
|
||||
|
||||
function openEventPicker(): void {
|
||||
if (!eventPickerColumns.value[0]?.length) {
|
||||
Toast.warning("暂无可选登记事件");
|
||||
Message.warning("暂无可选登记事件");
|
||||
return;
|
||||
}
|
||||
eventPickerDraft.value = [formModel.eventId];
|
||||
@@ -344,7 +359,7 @@ function openSourceEventPicker(): void {
|
||||
return;
|
||||
}
|
||||
if (!sourceEventPickerColumns.value[0]?.length) {
|
||||
Toast.warning("暂无可用的 NUMBER 来源事件");
|
||||
Message.warning("暂无可用的 NUMBER 来源事件");
|
||||
return;
|
||||
}
|
||||
sourceEventPickerDraft.value = [formModel.sourceEventId];
|
||||
@@ -358,7 +373,7 @@ function confirmSourceEventPicker(value: Array<string | number>): void {
|
||||
const nextSourceEvent = sourceEventList.value.find(item => item.id === sourceEventId);
|
||||
if (formModel.sourceEventId && previousSourceEvent?.valueUnit !== nextSourceEvent?.valueUnit) {
|
||||
formModel.tiers = [createTierForm(undefined, true, nextSourceEvent?.valueUnit)];
|
||||
Toast.warning("来源事件单位已变化,原分档已清空,请重新配置");
|
||||
Message.warning("来源事件单位已变化,原分档已清空,请重新配置");
|
||||
}
|
||||
formModel.sourceEventId = sourceEventId;
|
||||
}
|
||||
@@ -617,36 +632,36 @@ function buildCondition(): PointRule["conditionJson"] {
|
||||
|
||||
function validateForm(): boolean {
|
||||
if (!formModel.storeId) {
|
||||
Toast.warning("请选择门店");
|
||||
Message.warning("请选择门店");
|
||||
return false;
|
||||
}
|
||||
if (!formModel.eventId) {
|
||||
Toast.warning("请选择登记事件");
|
||||
Message.warning("请选择登记事件");
|
||||
return false;
|
||||
}
|
||||
if (!formModel.name.trim()) {
|
||||
Toast.warning("请输入规则名称");
|
||||
Message.warning("请输入规则名称");
|
||||
return false;
|
||||
}
|
||||
if (formModel.triggerType === "CUSTOMER_EVENT_VALUE_TIER") {
|
||||
if (formModel.pointMode !== "TIER") {
|
||||
Toast.warning("分档规则必须使用分档积分模式");
|
||||
Message.warning("分档规则必须使用分档积分模式");
|
||||
return false;
|
||||
}
|
||||
if (!selectedSourceEvent.value) {
|
||||
Toast.warning("请选择 NUMBER 类型的来源事件");
|
||||
Message.warning("请选择 NUMBER 类型的来源事件");
|
||||
return false;
|
||||
}
|
||||
if (selectedSourceValueUnit.value !== "CENT" && selectedSourceValueUnit.value !== "COUNT") {
|
||||
Toast.warning("来源事件必须配置数值单位");
|
||||
Message.warning("来源事件必须配置数值单位");
|
||||
return false;
|
||||
}
|
||||
if (!resolvePositiveInteger(formModel.windowAmountText)) {
|
||||
Toast.warning("累计窗口必须是正整数");
|
||||
Message.warning("累计窗口必须是正整数");
|
||||
return false;
|
||||
}
|
||||
if (!formModel.tiers.length || !(formModel.tiers.length < 100)) {
|
||||
Toast.warning("分档数量必须是 1-100 档");
|
||||
Message.warning("分档数量必须是 1-100 档");
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < formModel.tiers.length; i++) {
|
||||
@@ -654,17 +669,17 @@ function validateForm(): boolean {
|
||||
const min = getTierMinValue(formModel.tiers, i, selectedSourceValueUnit.value);
|
||||
const pointValue = resolveNonNegativeInteger(tier.pointValueText);
|
||||
if (min === undefined) {
|
||||
Toast.warning(`第 ${i + 1} 档的上一档最大值无效`);
|
||||
Message.warning(`第 ${i + 1} 档的上一档最大值无效`);
|
||||
return false;
|
||||
}
|
||||
if (pointValue === undefined) {
|
||||
Toast.warning(`第 ${i + 1} 档积分数量必须是大于等于 0 的整数`);
|
||||
Message.warning(`第 ${i + 1} 档积分数量必须是大于等于 0 的整数`);
|
||||
return false;
|
||||
}
|
||||
if (!isLastTier(formModel.tiers, i)) {
|
||||
const max = resolveTierBoundaryValue(tier.maxText, selectedSourceValueUnit.value);
|
||||
if (max === undefined || max < min) {
|
||||
Toast.warning(selectedSourceValueUnit.value === "CENT"
|
||||
Message.warning(selectedSourceValueUnit.value === "CENT"
|
||||
? `第 ${i + 1} 档最大值必须是不小于最小值且最多两位小数`
|
||||
: `第 ${i + 1} 档最大值必须是不小于最小值的整数`);
|
||||
return false;
|
||||
@@ -672,25 +687,25 @@ function validateForm(): boolean {
|
||||
}
|
||||
}
|
||||
} else if (formModel.pointMode === "FIXED" && !resolvePositiveInteger(formModel.pointValueText)) {
|
||||
Toast.warning("积分数量必须是正整数");
|
||||
Message.warning("积分数量必须是正整数");
|
||||
return false;
|
||||
}
|
||||
if (formModel.triggerType === "AFTER_COUNT_EVERY_TIME" && !resolvePositiveInteger(formModel.thresholdText)) {
|
||||
Toast.warning("请输入有效的触发阈值");
|
||||
Message.warning("请输入有效的触发阈值");
|
||||
return false;
|
||||
}
|
||||
if (formModel.pointMode === "SOURCE_VALUE") {
|
||||
const min = resolvePositiveInteger(formModel.minText);
|
||||
const max = resolvePositiveInteger(formModel.maxText);
|
||||
if (!min || !max || max < min) {
|
||||
Toast.warning("积分数量范围必须是正整数,且最大值不能小于最小值");
|
||||
Message.warning("积分数量范围必须是正整数,且最大值不能小于最小值");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
const beginAt = resolveTimestamp(formModel.beginAtText);
|
||||
const endAt = resolveTimestamp(formModel.endAtText);
|
||||
if (beginAt !== undefined && endAt !== undefined && endAt < beginAt) {
|
||||
Toast.warning("生效结束时间不能早于开始时间");
|
||||
Message.warning("生效结束时间不能早于开始时间");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@@ -722,10 +737,10 @@ async function saveRule(): Promise<void> {
|
||||
} else {
|
||||
await PointAPI.ruleUpdate(payload);
|
||||
}
|
||||
Toast.success("积分规则已保存");
|
||||
Message.success("积分规则已保存");
|
||||
await router.replace("/management/points/rules");
|
||||
} catch (error) {
|
||||
Toast.error(getErrorMessage(error, "积分规则保存失败"));
|
||||
Message.error(getErrorMessage(error, "积分规则保存失败"));
|
||||
} finally {
|
||||
isSaving.value = false;
|
||||
}
|
||||
@@ -759,10 +774,10 @@ async function removeRule(): Promise<void> {
|
||||
isRemoving.value = true;
|
||||
try {
|
||||
await PointAPI.ruleRemove(formModel.id);
|
||||
Toast.success("积分规则已删除");
|
||||
Message.success("积分规则已删除");
|
||||
await router.replace("/management/points/rules");
|
||||
} catch (error) {
|
||||
Toast.error(getErrorMessage(error, "积分规则删除失败"));
|
||||
Message.error(getErrorMessage(error, "积分规则删除失败"));
|
||||
} finally {
|
||||
isRemoving.value = false;
|
||||
}
|
||||
@@ -817,7 +832,7 @@ onMounted(async () => {
|
||||
try {
|
||||
await fillForm();
|
||||
} catch (error) {
|
||||
Toast.error(getErrorMessage(error, "积分规则加载失败"));
|
||||
Message.error(getErrorMessage(error, "积分规则加载失败"));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { type DropdownValue, Toast } from "tdesign-mobile-vue";
|
||||
import { type DropdownValue } from "tdesign-mobile-vue";
|
||||
import EventAPI from "@/api/EventAPI";
|
||||
import PointAPI from "@/api/PointAPI";
|
||||
import { useCurrentStoreStore } from "@/store/currentStoreStore";
|
||||
@@ -71,6 +71,7 @@ import type { EventItem } from "@/types/EventItem";
|
||||
import type { PointRule, PointRuleStatus } from "@/types/Point";
|
||||
import { gaoRoleCodes, permissionCodes } from "@/utils/permission";
|
||||
import { type Page, type PageResult, useUserStore } from "timi-web";
|
||||
import { Message } from "@/utils/message.ts";
|
||||
|
||||
defineOptions({
|
||||
name: "PointRuleList"
|
||||
@@ -158,7 +159,7 @@ async function load(): Promise<void> {
|
||||
page.index += 1;
|
||||
isNoMore.value = pageResult.list.length >= pageResult.total || list.length < page.size;
|
||||
} catch {
|
||||
Toast.error("积分规则加载失败");
|
||||
Message.error("积分规则加载失败");
|
||||
} finally {
|
||||
if (token === loadToken) {
|
||||
isLoading.value = false;
|
||||
@@ -274,7 +275,7 @@ onMounted(async () => {
|
||||
try {
|
||||
await preparePage();
|
||||
} catch {
|
||||
Toast.error("积分规则页面加载失败");
|
||||
Message.error("积分规则页面加载失败");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Toast } from "tdesign-mobile-vue";
|
||||
import { Message } from "@/utils/message";
|
||||
import { VueDraggableNext } from "vue-draggable-next";
|
||||
import EventAPI from "@/api/EventAPI";
|
||||
import PointAPI from "@/api/PointAPI";
|
||||
@@ -95,10 +95,10 @@ async function saveSort(): Promise<void> {
|
||||
await PointAPI.ruleSort(idList);
|
||||
ruleList.value.forEach((item, index) => { item.priority = index; });
|
||||
sortDirty.value = false;
|
||||
Toast.success("积分规则排序已保存");
|
||||
Message.success("积分规则排序已保存");
|
||||
await router.back();
|
||||
} catch {
|
||||
Toast.error("积分规则排序保存失败");
|
||||
Message.error("积分规则排序保存失败");
|
||||
} finally {
|
||||
isSaving.value = false;
|
||||
}
|
||||
@@ -110,7 +110,7 @@ onMounted(async () => {
|
||||
try {
|
||||
await loadData();
|
||||
} catch {
|
||||
Toast.error("启用积分规则加载失败");
|
||||
Message.error("启用积分规则加载失败");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
import type { EventValueUnit } from "@/types/EventItem";
|
||||
import type { PointAction, PointRuleTierForm } from "@/types/Point";
|
||||
import { formatTierBoundaryValue, getTierMinText, getTierMinValue, isLastTier, resolveNonNegativeInteger, resolveTierBoundaryValue } from "@/utils/pointRule";
|
||||
import { Toast } from "tdesign-mobile-vue";
|
||||
import { Message } from "@/utils/message";
|
||||
|
||||
defineOptions({
|
||||
name: "PointRuleTierEditor"
|
||||
@@ -173,20 +173,20 @@ function confirmTierEditor(): void {
|
||||
: getTierMinValue(tiers.value, index, valueUnit.value);
|
||||
const pointValue = resolveNonNegativeInteger(tierEditorDraft.pointValueText);
|
||||
if (min === undefined) {
|
||||
Toast.warning(index < 1
|
||||
Message.warning(index < 1
|
||||
? valueUnit.value === "CENT" ? "首档最小值必须是非负且最多两位小数" : "首档最小值必须是非负整数"
|
||||
: "请先修正上一档的最大值");
|
||||
return;
|
||||
}
|
||||
if (pointValue === undefined) {
|
||||
Toast.warning("积分数量必须是大于等于 0 的整数,允许填写 0");
|
||||
Message.warning("积分数量必须是大于等于 0 的整数,允许填写 0");
|
||||
return;
|
||||
}
|
||||
const shouldAddTier = tierEditorAdding.value && isLastTier(tiers.value, index);
|
||||
if (!isLastTier(tiers.value, index) || shouldAddTier) {
|
||||
const max = resolveTierBoundaryValue(tierEditorDraft.maxText, valueUnit.value);
|
||||
if (max === undefined || max < min) {
|
||||
Toast.warning(valueUnit.value === "CENT" ? "当前档最大值必须是不小于最小值且最多两位小数" : "当前档最大值必须是不小于最小值的整数");
|
||||
Message.warning(valueUnit.value === "CENT" ? "当前档最大值必须是不小于最小值且最多两位小数" : "当前档最大值必须是不小于最小值的整数");
|
||||
return;
|
||||
}
|
||||
tier.maxText = formatTierBoundaryValue(max, valueUnit.value);
|
||||
@@ -206,7 +206,7 @@ function confirmTierEditor(): void {
|
||||
|
||||
function addTier(): void {
|
||||
if (!(tiers.value.length < 100)) {
|
||||
Toast.warning("最多配置 100 档");
|
||||
Message.warning("最多配置 100 档");
|
||||
return;
|
||||
}
|
||||
const lastTierIndex = tiers.value.length - 1;
|
||||
|
||||
Reference in New Issue
Block a user