Ver código fonte

feat(memberLevelConfig): 扩展会员等级权益配置功能

- 调整对话框宽度从80px增加到860px,标签宽度从120px增加到160px
- 将"参加主赛"选项文本更新为"参加系列赛主赛"
- 将"两年内"选项文本更新为"两个自然年内"
- 为条件配置新增逻辑关系选择器,支持"且"和"或"操作
- 在类型定义中添加logic字段用于表示条件间的关系
fugui001 4 semanas atrás
pai
commit
4a6f7bf44c

+ 2 - 0
src/api/system/physical/memberLevelConfig/types.ts

@@ -160,12 +160,14 @@ export interface MemberLevelConfigForm extends BaseEntity {
     count: number;
     timeScope: string;
     description: string;
+    logic?: 'and' | 'or'; // 新增字段,表示该条件与前一个的关系
   }>;
   retentionConditions2: Array<{
     type: string;
     count: number;
     timeScope: string;
     description: string;
+    logic?: 'and' | 'or'; // 新增字段,表示该条件与前一个的关系
   }>;
 }
 

+ 21 - 9
src/views/system/physical/memberLevelConfig/index.vue

@@ -154,8 +154,8 @@
     </el-card>
 
     <!-- 添加或修改会员等级权益配置对话框 -->
-    <el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
-      <el-form ref="memberLevelConfigFormRef" :model="form" :rules="rules" label-width="120px" style="max-width: 800px; margin: 0 auto">
+    <el-dialog :title="dialog.title" v-model="dialog.visible" width="860px" append-to-body>
+      <el-form ref="memberLevelConfigFormRef" :model="form" :rules="rules" label-width="160px" style="max-width: 860px; margin: 0 auto">
         <el-form-item label="等级编码" prop="levelCode">
           <el-select v-model="form.levelCode" placeholder="请选择等级编码" @change="handleLevelCodeChange">
             <el-option v-for="dict in member_level_type" :key="dict.value" :label="dict.value" :value="dict.value"></el-option>
@@ -243,7 +243,7 @@
               <el-select v-model="cond.type" placeholder="条件类型" size="small" style="width: 100%">
                 <el-option value="register" label="注册并实名" />
                 <el-option value="tournament" label="参加现场赛事" />
-                <el-option value="main_tournament" label="参加主赛" />
+                <el-option value="main_tournament" label="参加系列赛主赛" />
                 <el-option value="championship" label="获得冠军" />
               </el-select>
             </el-col>
@@ -262,10 +262,16 @@
               <el-select v-model="cond.timeScope" placeholder="时间范围" size="small" style="width: 100%">
                 <el-option value="none" label="不限时间" />
                 <el-option value="natural_year" label="自然年内" />
-                <el-option value="two_years" label="两年内" />
+                <el-option value="two_years" label="两个自然年内" />
               </el-select>
             </el-col>
-            <el-col :span="5">
+            <el-col :span="3">
+              <el-select v-model="cond.logic" placeholder="关系" size="small" style="width: 100%">
+                <el-option value="and" label="且" />
+                <el-option value="or" label="或" />
+              </el-select>
+            </el-col>
+            <el-col :span="2">
               <el-button size="small" type="danger" @click="removePromotionCondition(index)">删除</el-button>
             </el-col>
           </el-row>
@@ -286,7 +292,7 @@
               <el-select v-model="cond.type" placeholder="条件类型" @change="updateDescription(cond)" size="small" style="width: 100%">
                 <el-option value="register" label="注册并实名" />
                 <el-option value="tournament" label="参加现场赛事" />
-                <el-option value="main_tournament" label="参加主赛" />
+                <el-option value="main_tournament" label="参加系列赛主赛" />
                 <el-option value="championship" label="获得冠军" />
               </el-select>
             </el-col>
@@ -306,10 +312,16 @@
               <el-select v-model="cond.timeScope" placeholder="时间范围" size="small" style="width: 100%" @change="updateDescription(cond)">
                 <el-option value="none" label="不限时间" />
                 <el-option value="natural_year" label="自然年内" />
-                <el-option value="two_years" label="两年内" />
+                <el-option value="two_years" label="两个自然年内" />
               </el-select>
             </el-col>
-            <el-col :span="5">
+            <el-col :span="3">
+              <el-select v-model="cond.logic" placeholder="关系" size="small" style="width: 100%">
+                <el-option value="and" label="且" />
+                <el-option value="or" label="或" />
+              </el-select>
+            </el-col>
+            <el-col :span="2">
               <el-button size="small" type="danger" @click="removeRetentionCondition(index)">删除</el-button>
             </el-col>
           </el-row>
@@ -620,7 +632,7 @@ const generateConditionDescription = (cond: any) => {
   const timeMap = {
     none: '',
     natural_year: '自然年内',
-    two_years: '两年内'
+    two_years: '两个自然年内'
   };
 
   const prefix = timeMap[cond.timeScope] || '';