浏览代码

feat(ticket): 更新票券管理界面显示与逻辑

- 修改代金券详情页的“单次可用数量”为“单日可用数量”,并添加单位“张”
- 更新代金券列表页状态展示逻辑,优化审核状态的显示条件
- 调整代金券操作按钮(编辑、删除、查看详情)的权限控制逻辑
- 将“查看拒绝原因”按钮移至操作列末尾,并保留其仅对代金券可见的限制
- 优化库存校验提示文案,明确指出不可小于剩余库存的具体数值及单位
- 更新代金券和优惠券的状态枚举注释,使其更准确反映业务含义
- 移除代金券操作权限中的“草稿”状态项,相关逻辑改为独立判断
- 修改新建/编辑代金券和优惠券页面的部分表单项标签,增加单位标识如“(张)”或“(¥)”
- 统一提交按钮文字为“提交”,去除原有的“新建/编辑优惠券”动态文本
- 修复获取状态标签函数中对于代金券草稿状态的错误处理逻辑
congxuesong 2 周之前
父节点
当前提交
7d136d41ba

+ 4 - 4
src/views/ticketManagement/detail.vue

@@ -85,18 +85,18 @@
         <!-- 使用规则模块 -->
         <div class="model">
           <h3 style="font-weight: bold">使用规则:</h3>
-          <!-- 单可用数量 -->
+          <!-- 单可用数量 -->
           <div class="detail-item">
-            <div class="detail-label">单可用数量</div>
+            <div class="detail-label">单可用数量</div>
             <div class="detail-value">
-              {{ voucherModel.singleCanUse || "--" }}
+              {{ voucherModel.singleCanUse + "张" || "--" }}
             </div>
           </div>
           <!-- 限购数量 -->
           <div class="detail-item">
             <div class="detail-label">限购数量</div>
             <div class="detail-value">
-              {{ voucherModel.purchaseLimitCode || "--" }}
+              {{ voucherModel.purchaseLimitCode + "张" || "--" }}
             </div>
           </div>
           <!-- 适用范围 -->

+ 28 - 35
src/views/ticketManagement/index.vue

@@ -27,8 +27,10 @@
       <template #status="scope">
         <!-- 代金券:显示状态和审核状态两行 -->
         <template v-if="activeName === '1'">
-          <p style="margin: 0; line-height: 1.5">状态:{{ getStatusLabel(scope.row.status, scope.row.dataType) || "--" }}</p>
-          <p style="margin: 0; line-height: 1.5">审核状态:{{ scope.row.statusName || "--" }}</p>
+          <p style="margin: 0; line-height: 1.5">
+            状态:{{ scope.row.dataType === 1 ? "草稿" : scope.row.statusName ? scope.row.statusName : "--" }}
+          </p>
+          <p style="margin: 0; line-height: 1.5" v-if="scope.row.dataType == 0">审核状态:{{ scope.row.reviewType || "--" }}</p>
         </template>
         <!-- 优惠券:只显示状态一行 -->
         <template v-else>
@@ -64,20 +66,11 @@
         >
           修改库存
         </el-button>
-        <!-- 查看拒绝原因按钮(仅代金券) -->
-        <el-button
-          v-if="isVoucher && canShowButton(scope.row.status, VOUCHER_OPERATION_PERMISSIONS.查看拒绝原因)"
-          link
-          type="primary"
-          @click="viewRejectReason(scope.row)"
-        >
-          查看拒绝原因
-        </el-button>
         <!-- 查看详情按钮 -->
         <el-button
           v-if="
             isVoucher
-              ? canShowButton(scope.row.status, currentOperationPermissions.查看详情) && scope.row.dataType != 1
+              ? canShowButton(scope.row.status, currentOperationPermissions.查看详情) && scope.row.dataType == 0
               : canShowButton(scope.row.status, currentOperationPermissions.查看详情)
           "
           link
@@ -90,8 +83,7 @@
         <el-button
           v-if="
             isVoucher
-              ? canShowButton(scope.row.status, currentOperationPermissions.编辑) ||
-                (scope.row.dataType == 1 && scope.row.status == 0)
+              ? canShowButton(scope.row.status, currentOperationPermissions.编辑) || scope.row.dataType == 1
               : canShowButton(scope.row.status, currentOperationPermissions.编辑)
           "
           link
@@ -104,8 +96,7 @@
         <el-button
           v-if="
             isVoucher
-              ? canShowButton(scope.row.status, currentOperationPermissions.删除) ||
-                (scope.row.dataType == 1 && scope.row.status == 0)
+              ? canShowButton(scope.row.status, currentOperationPermissions.删除) || scope.row.dataType == 1
               : canShowButton(scope.row.status, currentOperationPermissions.删除)
           "
           link
@@ -114,6 +105,15 @@
         >
           删除
         </el-button>
+        <!-- 查看拒绝原因按钮(仅代金券) -->
+        <el-button
+          v-if="isVoucher && canShowButton(scope.row.status, VOUCHER_OPERATION_PERMISSIONS.查看拒绝原因)"
+          link
+          type="primary"
+          @click="viewRejectReason(scope.row)"
+        >
+          查看拒绝原因
+        </el-button>
       </template>
     </ProTable>
     <el-dialog v-model="dialogFormVisible" title="修改库存" width="500">
@@ -212,7 +212,7 @@ const rules = reactive<FormRules<RuleForm>>({
           // 验证新库存值不能小于剩余库存
           const currentQty = Number(formInventory.value.singleQty) || 0;
           if (numValue < currentQty) {
-            callback(new Error(`库存不能小于剩余库存(${currentQty})`));
+            callback(new Error(`库存不能小于剩余库存(${currentQty})`));
             return;
           }
         }
@@ -352,9 +352,8 @@ const allTabOptions = [
   { label: "优惠券", name: "2" }
 ];
 
-// 状态枚举:1草稿 1待审核 2未开始 3审核拒绝 4已售罄 5进行中 6已下架 7已结束
+// 状态枚举: 1待审核 2未开始 3审核拒绝 4已售罄 5进行中 6已下架 7已结束
 const VO_STATUS = {
-  草稿: 1,
   待审核: 1,
   未开始: 2,
   审核拒绝: 3,
@@ -363,7 +362,8 @@ const VO_STATUS = {
   已下架: 6,
   已结束: 7
 } as const;
-// 状态枚举:1草稿 1待审核 2未开始 3审核拒绝 4已售罄 5进行中 6已下架 7已结束
+
+// 状态枚举:0进行中 1已结束 2未开始 3已下架 4已售罄 5草稿
 const CO_STATUS = {
   进行中: 0,
   已结束: 1,
@@ -372,7 +372,8 @@ const CO_STATUS = {
   已售罄: 4,
   草稿: 5
 } as const;
-// 代金券操作按钮权限配置:定义每个操作按钮在哪些状态下显示
+
+// 代金券操作按钮权限配置:定义每个操作按钮在哪些状态下显示 草稿单独判断
 const VOUCHER_OPERATION_PERMISSIONS = {
   // 查看详情:待审核、未开始、审核拒绝、进行中、已售罄、已下架
   查看详情: [VO_STATUS.待审核, VO_STATUS.未开始, VO_STATUS.审核拒绝, VO_STATUS.进行中, VO_STATUS.已售罄, VO_STATUS.已下架],
@@ -382,10 +383,10 @@ const VOUCHER_OPERATION_PERMISSIONS = {
   下架: [VO_STATUS.进行中],
   // 修改库存:未开始、进行中、已售罄
   修改库存: [VO_STATUS.未开始, VO_STATUS.进行中, VO_STATUS.已售罄],
-  // 编辑:草稿、审核拒绝、已售罄、已下架、已结束
-  编辑: [VO_STATUS.草稿, VO_STATUS.审核拒绝, VO_STATUS.已售罄, VO_STATUS.已下架, VO_STATUS.已结束],
-  // 删除:草稿、未开始、审核拒绝、已售罄、已结束
-  删除: [VO_STATUS.草稿, VO_STATUS.未开始, VO_STATUS.审核拒绝, VO_STATUS.已售罄, VO_STATUS.已结束],
+  // 编辑:审核拒绝、已售罄、已下架、已结束
+  编辑: [VO_STATUS.审核拒绝, VO_STATUS.已售罄, VO_STATUS.已下架, VO_STATUS.已结束],
+  // 删除:未开始、审核拒绝、已售罄、已结束
+  删除: [VO_STATUS.未开始, VO_STATUS.审核拒绝, VO_STATUS.已售罄, VO_STATUS.已结束],
   // 查看拒绝原因:审核拒绝
   查看拒绝原因: [VO_STATUS.审核拒绝]
 } as const;
@@ -421,17 +422,9 @@ const isVoucher = computed(() => activeName.value === "1");
 const isCoupon = computed(() => activeName.value === "2");
 
 // 获取状态标签
-const getStatusLabel = (status: number, dataType?: number) => {
-  // 代金券且状态为1时,根据dataType判断
-  if (isVoucher.value && status === 1) {
-    if (dataType === 0) {
-      return "待审核";
-    } else if (dataType === 1) {
-      return "草稿";
-    }
-  }
+const getStatusLabel = (status: any) => {
   // 根据当前选中的tab选择对应的状态枚举
-  const statusEnum = isVoucher.value ? VO_STATUS : CO_STATUS;
+  const statusEnum = CO_STATUS;
   // 从状态枚举中查找对应的标签
   for (const [label, value] of Object.entries(statusEnum)) {
     if (value === status) {

+ 4 - 4
src/views/ticketManagement/newCoupon.vue

@@ -14,7 +14,7 @@
             <el-input maxlength="50" v-model="couponModel.name" placeholder="请输入" clearable />
           </el-form-item>
           <!-- 面值 -->
-          <el-form-item label="面值()" prop="nominalValue">
+          <el-form-item label="面值()" prop="nominalValue">
             <el-input v-model="couponModel.nominalValue" maxlength="15" placeholder="请输入" clearable />
           </el-form-item>
           <!-- 开始领取时间 -->
@@ -42,7 +42,7 @@
             <el-input v-model="couponModel.specifiedDay" maxlength="15" placeholder="请输入" clearable />
           </el-form-item>
           <!-- 库存 -->
-          <el-form-item label="库存" prop="singleQty">
+          <el-form-item label="库存(张)" prop="singleQty">
             <el-input v-model="couponModel.singleQty" maxlength="15" placeholder="请输入" clearable />
           </el-form-item>
           <!-- 用户领取规则 -->
@@ -73,7 +73,7 @@
             </el-radio-group>
           </el-form-item>
           <!-- 最低消费金额 -->
-          <el-form-item label="最低消费金额" prop="minimumSpendingAmount" v-if="couponModel.hasMinimumSpend === 1">
+          <el-form-item label="最低消费金额(¥)" prop="minimumSpendingAmount" v-if="couponModel.hasMinimumSpend === 1">
             <el-input v-model="couponModel.minimumSpendingAmount" maxlength="15" placeholder="请输入" clearable />
           </el-form-item>
           <!-- 补充说明 -->
@@ -93,7 +93,7 @@
     <!-- 底部按钮区域 -->
     <div class="button-container">
       <el-button @click="() => handleSubmit('draft')"> 存草稿 </el-button>
-      <el-button type="primary" @click="() => handleSubmit()"> {{ type == "add" ? "新建" : "编辑" }}优惠券 </el-button>
+      <el-button type="primary" @click="() => handleSubmit()"> 提交 </el-button>
     </div>
   </div>
 </template>

+ 5 - 5
src/views/ticketManagement/newVoucher.vue

@@ -173,19 +173,19 @@
           <!-- 库存模块 -->
           <div class="model">
             <h3 style="font-weight: bold">库存:</h3>
-            <el-form-item label="库存" prop="singleQty">
+            <el-form-item label="库存(张)" prop="singleQty">
               <el-input v-model="voucherModel.singleQty" maxlength="15" placeholder="请输入" clearable />
             </el-form-item>
           </div>
           <!-- 使用规则模块 -->
           <div class="model">
             <h3 style="font-weight: bold">使用规则:</h3>
-            <!-- 单可用数量 -->
-            <el-form-item label="单次可用数量" prop="singleCanUse">
+            <!-- 单可用数量 -->
+            <el-form-item label="单日可用数量(张)" prop="singleCanUse">
               <el-input v-model="voucherModel.singleCanUse" maxlength="15" placeholder="请输入" clearable />
             </el-form-item>
             <!-- 限购数量 -->
-            <el-form-item label="限购数量" prop="purchaseLimitCode">
+            <el-form-item label="限购数量(张)" prop="purchaseLimitCode">
               <el-input v-model="voucherModel.purchaseLimitCode" maxlength="15" placeholder="请输入" clearable />
             </el-form-item>
             <!-- 适用范围 -->
@@ -227,7 +227,7 @@
     <!-- 底部按钮区域 -->
     <div class="button-container">
       <el-button @click="handleSubmit('draft')"> 存草稿 </el-button>
-      <el-button type="primary" @click="handleSubmit()"> {{ type == "add" ? "新建" : "编辑" }}代金券 </el-button>
+      <el-button type="primary" @click="handleSubmit()"> 提交 </el-button>
     </div>
   </div>
 </template>