Forráskód Böngészése

update:优惠券已经套餐管理

ct 1 hete
szülő
commit
72e6d32961

+ 4 - 0
.env.prod-knt

@@ -26,6 +26,10 @@ VUE_APP_COS_REGION = ap-chongqing
 VUE_APP_VIDEO_LINE_1 = https://jnmytcpv.ylrzcloud.com
 # 线路二地址
 VUE_APP_VIDEO_LINE_2 = https://jnmyobs.ylrztop.com
+#火山云视频地址域名
+VUE_APP_VIDE0_URL = https://cdjnmyvolcengine.ylrztop.com
+#火山云视频点播空间名
+VUE_APP_HSY_SPACE = cdjnmy-2114522511
 # 生产环境配置
 ENV = 'production'
 

+ 0 - 39
.env.prod-knt2

@@ -1,39 +0,0 @@
-# 页面标题
-VUE_APP_TITLE = 康年堂SCRM管理系统
-# 首页菜单标题
-VUE_APP_TITLE_INDEX = 康年堂
-# 公司名称
-VUE_APP_COMPANY_NAME = 陕西康年堂医药连锁有限公司
-# ICP备案号
-VUE_APP_ICP_RECORD = 陕ICP备2023011686号-5
-# ICP网站访问地址
-VUE_APP_ICP_URL =https://beian.miit.gov.cn
-# 网站LOG
-VUE_APP_LOG_URL =@/assets/logo/knt.jpg
-# 存储桶配置
-VUE_APP_OBS_ACCESS_KEY_ID = K2UTJGIN7UTZJR2XMXYG
-# 存储桶配置
-VUE_APP_OBS_SECRET_ACCESS_KEY = sbyeNJLbcYmH6copxeFP9pAoksM4NIT9Zw4x0SRX
-# 存储桶配置
-VUE_APP_OBS_SERVER = https://obs.cn-north-4.myhuaweicloud.com
-# 存储桶配置
-VUE_APP_OBS_BUCKET = jnmy-hw079058881
-# 存储桶配置
-VUE_APP_COS_BUCKET = jnmy-1323137866
-# 存储桶配置
-VUE_APP_COS_REGION = ap-chongqing
-# 线路一地址
-VUE_APP_VIDEO_LINE_1 = https://jnmytcpv.ylrzcloud.com
-# 线路二地址
-VUE_APP_VIDEO_LINE_2 = https://jnmyobs.ylrztop.com
-# 生产环境配置
-ENV = 'production'
-
-#FS管理系统/生产环境
-VUE_APP_BASE_API = '/prod-api'
-
-#默认 1、会员 2、企微
-VUE_APP_COURSE_DEFAULT = 1
-
-# 路由懒加载
-VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 8 - 0
src/api/hisStore/storeProductPackage.js

@@ -77,3 +77,11 @@ export function getProductsCompanyIds(data) {
     data: data
   })
 }
+
+//批量复制套餐包
+export function bulkCopy(packageId) {
+  return request({
+    url: '/store/store/storeProductPackage/bulkCopy/' + packageId,
+    method: 'get'
+  })
+}

+ 61 - 2
src/views/hisStore/storeCouponIssue/index.vue

@@ -65,6 +65,7 @@
       <el-table-column label="最低消费" align="center" prop="useMinPrice" />
       <el-table-column label="优惠券有效期限(天)" align="center" prop="couponTime" />
       <el-table-column label="总数量" align="center" prop="totalCount" />
+      <el-table-column label="领取数量" align="center" prop="receiveCount" />
       <el-table-column label="剩余领取数量" align="center" prop="remainCount" />
       <el-table-column label="类型" align="center" prop="couponType" >
           <template slot-scope="scope">
@@ -107,7 +108,28 @@
 
     <!-- 添加或修改优惠券领取对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="优惠券开始时间" prop="startTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.startTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择开始时间" disabled >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="优惠券结束时间" prop="limitTime">
+          <el-date-picker clearable size="small" style="width: 200px"
+                          v-model="form.limitTime"
+                          type="date"
+                          value-format="yyyy-MM-dd"
+                          placeholder="选择结束时间"
+                          :picker-options="pickerOptions"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="优惠券领取数量" prop="totalCount">
+          <el-input-number v-model="form.totalCount" :min=totalCount placeholder="请输入优惠券领取数量" />
+        </el-form-item>
          <el-form-item label="状态">
             <el-radio-group v-model="form.status">
               <el-radio :label="item.dictValue" v-for="item in statusOptions" >{{item.dictLabel}}</el-radio>
@@ -129,6 +151,19 @@ export default {
   name: "HisStoreCouponIssue",
   data() {
     return {
+      pickerOptions: {
+        disabledDate: (time) => {
+          // 如果没有选择开始时间,则不限制
+          if (!this.limitTime) {
+            return false;
+          }
+          // 设置可选时间为当前日期之后
+          const limitTime = new Date(this.limitTime);
+          return time.getTime() < limitTime.getTime();
+        }
+      },
+      limitTime:null,
+      totalCount:null,
       couponTypeOptions:[],
       statusOptions:[],
       dateRange:[],
@@ -198,9 +233,29 @@ export default {
     getList() {
       this.loading = true;
       listStoreCouponIssue(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-        this.storeCouponIssueList = response.rows;
+        if (response.rows.length > 0) {
+          this.storeCouponIssueList = response.rows.map(item => {
+            // 计算领取数量
+            const receiveCount = item.remainCount;
+            // 计算剩余数量 = 总数量 - 领取数量
+            const remainCount = item.totalCount - receiveCount;
+
+            // 返回新的对象,包含计算后的值
+            return {
+              ...item,
+              receiveCount,
+              remainCount,
+            };
+          });
+        } else {
+          this.storeCouponIssueList = response.rows
+        }
+
         this.total = response.total;
         this.loading = false;
+      }).catch(error => {
+        this.loading = false;
+        console.error('获取优惠券列表失败:', error);
       });
     },
     // 取消按钮
@@ -248,6 +303,8 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
+      this.limitTime = null;
+      this.totalCount = null;
       this.title = "添加优惠券领取";
     },
     /** 修改按钮操作 */
@@ -256,6 +313,8 @@ export default {
       const id = row.id || this.ids
       getStoreCouponIssue(id).then(response => {
         this.form = response.data;
+        this.limitTime = response.data.limitTime;
+        this.totalCount = response.data.totalCount;
         this.form.status = response.data.status.toString();
         this.open = true;
         this.title = "修改优惠券领取";

+ 29 - 3
src/views/hisStore/storeProductPackage/index.vue

@@ -86,6 +86,18 @@
         >导出</el-button>
       </el-col>
 
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          :disabled="multiple"
+          @click="bulkCopy"
+          v-hasPermi="['store:storeProductPackage:add']"
+        >批量复制</el-button>
+      </el-col>
+
 	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
@@ -193,8 +205,8 @@
                 <el-radio :label="item.dictValue" v-for="item in statusOptions" >{{item.dictLabel}}</el-radio>
               </el-radio-group>
         </el-form-item>
-         <el-form-item label="公司" prop="companyId">
-           <el-select style="width: 220px" filterable v-model="form1.companyId" placeholder="请选择公司名" clearable size="small">
+         <el-form-item label="公司" prop="companyIds">
+           <el-select style="width: 220px" filterable v-model="form1.companyIds" multiple placeholder="请选择公司名" clearable size="small">
              <el-option
                v-for="item in companyOptions"
                :key="item.companyId"
@@ -351,7 +363,7 @@
 </template>
 
 <script>
-import { listStoreProductPackage, getStoreProductPackage, delStoreProductPackage, addStoreProductPackage, updateStoreProductPackage, exportStoreProductPackage,modifyStoreProductPackages,getProductsCompanyIds } from "@/api/hisStore/storeProductPackage";
+import { listStoreProductPackage, getStoreProductPackage, delStoreProductPackage, addStoreProductPackage, updateStoreProductPackage, exportStoreProductPackage,modifyStoreProductPackages,getProductsCompanyIds,bulkCopy } from "@/api/hisStore/storeProductPackage";
 import Editor from '@/components/Editor/wang';
 import productAttrValueSelect from "../components/productAttrValueSelect";
 import Material from '@/components/Material'
@@ -477,6 +489,20 @@ export default {
     this.getCompanyList();
   },
   methods: {
+    /** 批量复制 */
+    bulkCopy(row) {
+      const packageIds = row.packageId || this.ids;
+      this.$confirm('是否确认复制套餐包编号为"' + packageIds + '"的数据项?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return bulkCopy(packageIds);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("批量复制成功");
+      }).catch(() => {});
+    },
     handleCompanyChange(){
       if (!this.products || this.products.length === 0) {
         // this.$message.warning('请先选择商品');