-
+
新增区间
-
+
-
+
-
+
-
+
删除
@@ -69,11 +67,15 @@
+
+
+
+
@@ -105,6 +107,7 @@ const buildEmptyForm = () => ({
});
const formData = ref(buildEmptyForm());
+const isDetailMode = ref(false);
const formRules = ref({
ruleName: [{ required: true, message: '请输入规则名称', trigger: 'blur' }],
@@ -125,14 +128,15 @@ const columns = ref([
// search: { el: 'select' },
// },
{ prop: 'createdTime', label: '创建时间', align: 'center' },
- { prop: 'action', label: '操作', align: 'center', fixed: 'right', width: 220 },
+ { prop: 'action', label: '操作', align: 'center', fixed: 'right', width: 320 },
]);
const isShowDialog = ref(false);
const dialogTitle = ref('新增');
-const onOpenDialog = async (row?: any) => {
- dialogTitle.value = row ? '编辑' : '新增';
+const onOpenDialog = async (row?: any, isDetail = false) => {
+ isDetailMode.value = isDetail;
+ dialogTitle.value = isDetail ? '查看详情' : row ? '编辑' : '新增';
if (row?.id) {
const res: any = await pointsruleDetailGet({ id: row.id });
formData.value = {
@@ -150,7 +154,7 @@ const onOpenDialog = async (row?: any) => {
} else {
formData.value = buildEmptyForm();
}
- if (!formData.value.details?.length) onAddDetailRow();
+ if (!formData.value.details?.length && !isDetail) onAddDetailRow();
isShowDialog.value = true;
};
@@ -162,6 +166,30 @@ const onRemoveDetailRow = (index: number) => {
formData.value.details.splice(index, 1);
};
+// 验证名次范围是否重叠
+const validateRankOverlap = () => {
+ const details = formData.value.details;
+ if (details.length <= 1) return true;
+
+ for (let i = 0; i < details.length; i++) {
+ const item1 = details[i];
+ if (!item1.startRank || !item1.endRank) continue;
+
+ for (let j = i + 1; j < details.length; j++) {
+ const item2 = details[j];
+ if (!item2.startRank || !item2.endRank) continue;
+
+ // 检查是否重叠
+ const isOverlap = !(item1.endRank < item2.startRank || item2.endRank < item1.startRank);
+ if (isOverlap) {
+ ElMessage.error(`名次范围 ${item1.startRank}-${item1.endRank} 与 ${item2.startRank}-${item2.endRank} 存在重叠,请调整!`);
+ return false;
+ }
+ }
+ }
+ return true;
+};
+
const onDelete = async (id: number) => {
await pointsruleDeleteDelete({ id });
ElMessage.success('删除成功');
@@ -185,6 +213,10 @@ const onSubmit = () => {
ElMessage.warning('请至少配置一个排名区间');
return;
}
+ // 验证名次范围是否重叠
+ if (!validateRankOverlap()) {
+ return;
+ }
const payload = {
id: formData.value.id,
ruleName: formData.value.ruleName,
@@ -211,6 +243,7 @@ const onSubmit = () => {
// 取消
const onCancel = () => {
isShowDialog.value = false;
+ isDetailMode.value = false;
};
diff --git a/src/views/match/shop/index.vue b/src/views/match/shop/index.vue
index c4fd817..7f858b7 100644
--- a/src/views/match/shop/index.vue
+++ b/src/views/match/shop/index.vue
@@ -169,7 +169,12 @@ const formRules = ref({
{ required: true, message: '请上传营业执照', trigger: 'blur' }
],
contactPhone: [
- { required: true, message: '请输入联系电话', trigger: 'blur' }
+ { required: true, message: '请输入联系电话', trigger: 'blur' },
+ {
+ pattern: /^1[3-9]\d{9}$/,
+ message: '请输入正确的手机号格式',
+ trigger: 'blur'
+ }
],
});
diff --git a/src/views/match/user/general/index.vue b/src/views/match/user/general/index.vue
index 322eb84..7ea8d01 100644
--- a/src/views/match/user/general/index.vue
+++ b/src/views/match/user/general/index.vue
@@ -1,12 +1,10 @@