ソースを参照

feat(voucherManagement): 新增查看拒绝原因功能并优化库存修改逻辑

- 修改库存接口参数名从 num 调整为 singleQty- 更新状态接口路径变更,统一使用 couponPlatform 模块- 移除冗余的菜单和门店详情接口- 新增查看拒绝原因弹窗及对应按钮控制逻辑
- 优化提示文案,提升用户体验一致性
- 调整上架按钮点击事件参数值以匹配新业务规则
congxuesong 1 ヶ月 前
コミット
c4d822ad68

+ 2 - 8
src/api/modules/voucherManagement.ts

@@ -9,10 +9,10 @@ export const delThaliById = (params: { id: string }) => {
   return http.get(PORT_NONE + `/PcGroupBuy/deleteThali`, params);
 };
 export const updateStatus = params => {
-  return http.get(PORT_NONE + `/PcGroupBuy/updateStatus1`, params);
+  return http.get(PORT_NONE + `/couponPlatform/updateCoupon`, params);
 };
 export const updateNum = params => {
-  return http.get(PORT_NONE + `/PcGroupBuy/updateNum11`, params);
+  return http.get(PORT_NONE + `/couponPlatform/updateCouponSingleQty`, params);
 };
 export const addOrUpdateCoupon = params => {
   return http.post(PORT_NONE + `/couponPlatform/addOrUpdateCoupon`, params);
@@ -20,12 +20,6 @@ export const addOrUpdateCoupon = params => {
 export const getVoucherDetail = params => {
   return http.get(PORT_NONE + `/couponPlatform/getCouponDetail`, params);
 };
-export const getMenuByStoreId = params => {
-  return http.get(PORT_NONE + `/menuPlatform/getMenuByStoreId`, params);
-};
 export const getHolidayList = (params: any) => {
   return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/couponPlatform/getHolidayList`, params);
 };
-export const getStoreDetail = (params: StoreUser.ReqUserParams) => {
-  return http.get<StoreUser.ResStoreUserList>(PORT_NONE + `/store/info/getStoreDetail`, params);
-};

+ 1 - 1
src/views/groupPackageManagement/index.vue

@@ -438,7 +438,7 @@ const handleSubmit = async () => {
     if (valid) {
       let res = await updateNum({ id: formInventory.value.id, num: formInventory.value.newInventory });
       if (res && res.code == 200) {
-        ElMessage.success("库存修改成功");
+        ElMessage.success("修改成功");
         dialogFormVisible.value = false;
         proTable.value?.getTableList();
       }

+ 90 - 5
src/views/voucherManagement/index.vue

@@ -19,7 +19,7 @@
         <el-button
           link
           type="primary"
-          @click="changeTypes(scope.row, 5)"
+          @click="changeTypes(scope.row, 1)"
           v-if="canShowButton(scope.row.status, OPERATION_PERMISSIONS.上架)"
         >
           上架
@@ -41,6 +41,14 @@
           修改库存
         </el-button>
         <el-button
+          link
+          type="primary"
+          @click="viewRejectReason(scope.row)"
+          v-if="canShowButton(scope.row.status, OPERATION_PERMISSIONS.查看拒绝原因)"
+        >
+          查看拒绝原因
+        </el-button>
+        <el-button
           type="primary"
           link
           @click="toDetail(scope.row)"
@@ -78,6 +86,28 @@
         </div>
       </template>
     </el-dialog>
+    <!-- 查看拒绝原因弹窗 -->
+    <el-dialog v-model="rejectReasonDialogVisible" title="查看拒绝原因" width="600px">
+      <div class="reject-reason-content">
+        <div class="reject-reason-item">
+          <div class="reject-reason-label">代金券名称:</div>
+          <div class="reject-reason-value">
+            {{ rejectReasonData.name || "--" }}
+          </div>
+        </div>
+        <div class="reject-reason-item">
+          <div class="reject-reason-label">拒绝原因:</div>
+          <div class="reject-reason-value reject-reason-text">
+            {{ rejectReasonData.approvalComments || "暂无拒绝原因" }}
+          </div>
+        </div>
+      </div>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="closeRejectReasonDialog"> 确定 </el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -103,6 +133,12 @@ const formInventory: any = ref({
 });
 const rowData = ref<any>();
 const activeName = ref("");
+// 查看拒绝原因弹窗相关
+const rejectReasonDialogVisible = ref(false);
+const rejectReasonData = ref<any>({
+  name: "",
+  approvalComments: ""
+});
 // 定义表单类型
 interface RuleForm {
   newInventory: string;
@@ -218,7 +254,9 @@ const OPERATION_PERMISSIONS = {
   // 编辑:草稿、审核拒绝、已售罄、已下架、已结束
   编辑: [STATUS.草稿, STATUS.审核拒绝, STATUS.已售罄, STATUS.已下架, STATUS.已结束],
   // 删除:草稿、未开始、审核拒绝、已售罄、已结束
-  删除: [STATUS.草稿, STATUS.未开始, STATUS.审核拒绝, STATUS.已售罄, STATUS.已结束]
+  删除: [STATUS.草稿, STATUS.未开始, STATUS.审核拒绝, STATUS.已售罄, STATUS.已结束],
+  // 查看拒绝原因:审核拒绝
+  查看拒绝原因: [STATUS.审核拒绝]
 } as const;
 
 // 判断按钮是否显示的工具函数
@@ -327,7 +365,7 @@ const deleteRow = row => {
   });
 };
 const handleClick = () => {};
-const changeTypes = async (row: any, status: string) => {
+const changeTypes = async (row, status) => {
   rowData.value = row;
   let res = await updateStatus({ id: row.id, status: status, approvalComments: "" });
   if (res && res.code == 200) {
@@ -347,9 +385,9 @@ const handleSubmit = async () => {
   if (!ruleFormRef.value) return;
   await ruleFormRef.value.validate(async (valid, fields) => {
     if (valid) {
-      let res = await updateNum({ id: formInventory.value.id, num: formInventory.value.newInventory });
+      let res = await updateNum({ id: formInventory.value.id, singleQty: formInventory.value.newInventory });
       if (res && res.code == 200) {
-        ElMessage.success("库存修改成功");
+        ElMessage.success("修改成功");
         dialogFormVisible.value = false;
         proTable.value?.getTableList();
       }
@@ -366,6 +404,22 @@ const closeDialog = () => {
     newInventory: ""
   };
 };
+// 查看拒绝原因
+const viewRejectReason = (row: any) => {
+  rejectReasonData.value = {
+    name: row.name || "--",
+    approvalComments: row.approvalComments || "--"
+  };
+  rejectReasonDialogVisible.value = true;
+};
+// 关闭拒绝原因弹窗
+const closeRejectReasonDialog = () => {
+  rejectReasonDialogVisible.value = false;
+  rejectReasonData.value = {
+    name: "",
+    approvalComments: ""
+  };
+};
 </script>
 
 <style lang="scss" scoped>
@@ -386,4 +440,35 @@ const closeDialog = () => {
     }
   }
 }
+.reject-reason-content {
+  padding: 20px 0;
+  .reject-reason-item {
+    display: flex;
+    margin-bottom: 20px;
+    &:last-child {
+      margin-bottom: 0;
+    }
+    .reject-reason-label {
+      flex-shrink: 0;
+      min-width: 100px;
+      font-size: 14px;
+      font-weight: 500;
+      color: #606266;
+    }
+    .reject-reason-value {
+      flex: 1;
+      font-size: 14px;
+      color: #303133;
+      word-break: break-word;
+      &.reject-reason-text {
+        min-height: 80px;
+        padding: 12px;
+        line-height: 1.6;
+        white-space: pre-wrap;
+        background-color: #f5f7fa;
+        border-radius: 4px;
+      }
+    }
+  }
+}
 </style>

+ 1 - 1
src/views/voucherManagement/newVoucher.vue

@@ -942,7 +942,7 @@ const handleSubmit = async (submitType?: string) => {
     if (!valid) return;
     let res: any = await addOrUpdateCoupon(params);
     if (res && res.code == 200) {
-      ElMessage.success("保存成功");
+      ElMessage.success("创建成功,请耐心等待审核");
       goBack();
     }
   });