wenjie 7 месяцев назад
Родитель
Сommit
d5e3892f99

+ 1 - 1
src/api/common.js

@@ -38,7 +38,7 @@ export function generateCode(data) {
   })
 }
 
-// 获取会员激活码列表
+// 获取集团列表
 export function getGroupList(data) {
   return request({
     url: '/vipserver/group/groupList',

+ 13 - 12
src/views/operationManage/comboManage/checkoutCode.vue

@@ -2,7 +2,7 @@
   <div class="orderManage app-container">
     <div class="search">
       <div>
-        <el-input v-model="query.id" size="small" placeholder="请输入激活ID" class="item-width-200"></el-input>
+        <el-input v-model="query.id" size="small" placeholder="请输入完整激活ID" class="item-width-200"></el-input>
         <el-input v-model="query.serialNumber" size="small" placeholder="请输入激活码" class="item-width-200 ml10"></el-input>
         <el-input v-model="query.phone" size="small" placeholder="请输入激活手机号" class="item-width-200 ml10"></el-input>
         <el-date-picker v-model="date" size="small" value-format="yyyy-MM-dd" class="item-width-350 ml10"
@@ -74,12 +74,15 @@
       </el-table-column>
       <el-table-column prop="activationDay" align="center" label="时间段/天数" show-overflow-tooltip>
         <template slot-scope="scope">
-          {{ scope.row.activationDay||'--' }}
+          <span v-if="scope.row.activationType == 1">{{ timeFormat(scope.row.startTime) }}至{{ timeFormat(scope.row.endTime) }}</span>
+          <span v-else>
+          {{ scope.row.activationDay}}
+          </span>
         </template>
       </el-table-column>
       <el-table-column prop="startTime" align="center" label="创建时间" show-overflow-tooltip>
         <template slot-scope="scope">
-          {{ timeFormat(scope.row.targetStartTime) }}
+          {{ timeFormat(scope.row.createTime) }}
         </template>
       </el-table-column>
       <el-table-column align="center" label="状态" show-overflow-tooltip>
@@ -93,11 +96,15 @@
           <span>--</span>
         </template>
       </el-table-column>
-      <el-table-column prop="phone" align="center" label="激活手机号" show-overflow-tooltip>
+      <el-table-column align="center" label="激活手机号" show-overflow-tooltip>
+        <template slot-scope="scope">
+          {{ scope.row.phone|| '--' }}
+        </template>
       </el-table-column>
       <el-table-column align="center" label="激活时间" show-overflow-tooltip>
         <template slot-scope="scope">
-          {{ timeFormat(scope.row.useTime) }}
+          <span v-if="scope.row.phone==null">--</span>
+          <span v-else>{{ timeFormat(scope.row.useTime) }}</span>
         </template>
       </el-table-column>
       <el-table-column prop="address" align="center" label="操作">
@@ -170,13 +177,6 @@ export default {
     };
   },
   watch: {
-    // query: {
-    //   handler: debounce(function(val) {
-    //     this.getList()
-
-    //   }),
-    //   deep:true
-    // },
     date(val) {
       if (val) {
         this.query.startTime = Date.parse(val[0]);
@@ -191,6 +191,7 @@ export default {
 
   },
   methods: {
+    // 同步和校园数据,待完成
     synchronization(){
       this.getList();
     },

+ 101 - 64
src/views/operationManage/comboManage/vipActivation.vue

@@ -15,7 +15,7 @@
           class="item-width-200 ml10"
         ></el-input>
         <el-input
-          v-model="query.groupPlanNameType"
+          v-model="query.planningName"
           size="small"
           placeholder="请输入产品策划名称"
           class="item-width-200 ml10"
@@ -26,21 +26,6 @@
           placeholder="请输入订单号"
           class="item-width-200 ml10"
         ></el-input>
-        <!-- <el-select
-          v-model="query.miniApp"
-          size="small"
-          clearable
-          class="item-width-200 ml10"
-          placeholder="请选择所属小程序"
-        >
-          <el-option
-            v-for="item in options"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          >
-          </el-option>
-        </el-select> -->
         <el-select
           v-model="query.groupType"
           size="small"
@@ -166,7 +151,7 @@
       </el-table-column>
       <el-table-column align="center" label="未激活数量" show-overflow-tooltip>
         <template slot-scope="scope">
-          {{ scope.row.totalTicket-scope.row.useTicket || "--" }}
+          {{ scope.row.totalTicket - scope.row.useTicket || "--" }}
         </template>
       </el-table-column>
       <el-table-column align="center" label="已激活数量" show-overflow-tooltip>
@@ -222,7 +207,12 @@
       >
       </el-pagination>
     </div>
-    <el-dialog title="生成激活码" :visible.sync="vipDialogVisible" width="50%">
+    <el-dialog
+      title="生成激活码"
+      :visible.sync="vipDialogVisible"
+      :before-close="closeVipDialog"
+      width="50%"
+    >
       <el-descriptions class="margin-top" :column="3" border>
         <el-descriptions-item>
           <template slot="label"> 计费号 </template>
@@ -260,6 +250,8 @@
         <el-form-item label="激活码有效期:" prop="validDay">
           <el-input
             v-model="setQuery.validDay"
+            onkeyup="this.value=this.value.replace(/\D/g,'')"
+            onafterpaste="this.value=this.value.replace(/\D/g,'')"
             class="item-width-100"
           ></el-input>
@@ -288,21 +280,27 @@
             ></el-radio>
           </el-radio-group>
           <div v-if="setQuery.activationType == '时间段'">
-            <el-date-picker
-              v-model="date"
-              type="daterange"
-              range-separator="至"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-            >
-            </el-date-picker>
+            <el-form-item prop="startTime">
+              <el-date-picker
+                v-model="date"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
           </div>
           <div v-if="setQuery.activationType == '天数'">
-            <el-input
-              v-model="setQuery.activationDay"
-              class="item-width-100"
-            ></el-input>
-            天
+            <el-form-item prop="activationDay">
+              <el-input
+                v-model="setQuery.activationDay"
+                onkeyup="this.value=this.value.replace(/\D/g,'')"
+                onafterpaste="this.value=this.value.replace(/\D/g,'')"
+                class="item-width-100"
+              ></el-input>
+              天
+            </el-form-item>
           </div>
         </el-form-item>
         <div
@@ -315,13 +313,16 @@
         >
           注:会员有效期为用户使用激活码后会员生效时间。时间段为用户使用激活码后仅在对应时间段内拥有会员权益;天数为用户使用激活码后对应天数内拥有会员权益。时间段激活码无法叠加使用,天数激活码可叠加使用累计天数。
         </div>
-        <el-form-item label="激活码数量:" prop="totalTicket">
+        <el-form-item label="激活码数量:">
           <el-input
             v-model="setQuery.totalTicket"
+            onkeyup="this.value=this.value.replace(/\D/g,'')"
+            onafterpaste="this.value=this.value.replace(/\D/g,'')"
             class="item-width-100"
+            @blur="totalTicketChange"
           ></el-input>
           <span style="color: red; font-size: 12px; margin-left: 10px"
-            >注:默认为订购数量,激活码数量必须大于订购数量</span
+            >注:默认为订购数量,激活码数量必须大于订购数量,输入数字须为整数</span
           >
         </el-form-item>
         <el-form-item label="激活码开头:" prop="startString">
@@ -330,12 +331,12 @@
             class="item-width-100"
           ></el-input>
           <span style="color: red; font-size: 12px; margin-left: 10px"
-            >注:只能输入大小写英文和数字,创建激活码放在激活码开头</span
+            >注:只能输入大小写英文和数字,创建激活码放在激活码开头</span
           >
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button @click="vipDialogVisible = false">取 消</el-button>
+        <el-button @click="activationCancel('setQuery')">取 消</el-button>
         <el-button
           type="primary"
           :loading="updataLoading"
@@ -417,11 +418,22 @@ export default {
       },
       rules: {
         validDay: [
-          { required: true, message: "请输入激活码有效期", trigger: "blur" },
+          {
+            required: true,
+            message: "请输入激活码有效期且必须为整数",
+            trigger: "blur",
+          },
         ],
-        vipSetmenu: [
+        selectType: [
           { required: true, message: "请选择会员套餐", trigger: "change" },
         ],
+        activationType: [
+          {
+            required: true,
+            message: "请选择有效期(天数必须为整数)",
+            trigger: "change",
+          },
+        ],
         endTime: [
           {
             required: true,
@@ -429,11 +441,22 @@ export default {
             trigger: "change",
           },
         ],
-        totalTicket: [
-          { required: true, message: "请输入激活码数量", trigger: "blur" },
+        activationDay: [
+          {
+            required: true,
+            message: "请输入天数",
+            trigger: "blur",
+          },
+        ],
+        startTime: [
+          {
+            required: true,
+            message: "请选择会员有效期",
+            trigger: "change",
+          },
         ],
         startString: [
-          { required: true, message: "请输入激活码开头", trigger: "blur" },
+          { required: true,pattern:/^[a-z0-9A-Z]+$/, message: "请正确输入激活码开头", trigger: "blur" },
         ],
       },
       vipDialogVisible: false,
@@ -454,13 +477,6 @@ export default {
     };
   },
   watch: {
-    // query: {
-    //   handler: debounce(function(val) {
-    //     this.getList()
-
-    //   }),
-    //   deep:true
-    // },
     date(val) {
       if (val) {
         this.setQuery.startTime = new Date(val[0]).getTime();
@@ -473,12 +489,22 @@ export default {
   },
   filters: {},
   methods: {
+    // 重置表单
+    activationCancel() {
+      this.$refs["setQuery"].resetFields();
+      this.vipDialogVisible = false;
+    },
+    closeVipDialog(done) {
+      this.$refs["setQuery"].resetFields();
+      done();
+    },
     //  生成弹窗
     gotoGenerating(item) {
       this.get_setmealList();
       this.vipDialogVisible = true;
       this.codeData = item;
       this.setQuery.groupOrderNo = item.orderNo;
+      this.setQuery.totalTicket = Math.floor(item.orderNum);
     },
 
     // 套餐选择
@@ -488,7 +514,16 @@ export default {
       this.setQuery.planningName = label;
     },
 
-    // 提交生成
+    // 判断激活套餐是否大于于订购数量
+    totalTicketChange() {
+      if (Math.trunc(this.codeData.orderNum) > this.setQuery.totalTicket) {
+        this.$message.error("激活码数量必须大于订购数量");
+        this.setQuery.totalTicket = "";
+        return;
+      }
+    },
+
+    // 提交生成逻辑处理
     vipsubmitForm(formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
@@ -499,26 +534,29 @@ export default {
           } else {
             this.setQuery.activationType = 2;
           }
-      console.log(this.setQuery.activationType, "-----type");
-          generateCode(this.setQuery).then((res) => {
-            this.updataLoading = false;
-            if (res.state == "Success") {
-              this.vipDialogVisible = false;
-              this.setQuery.validDay = "";
-              this.setQuery.activationType = "";
-              this.date = "";
-              this.setQuery.totalTicket = "";
-              setQuery.startString = "";
-              this.getList();
-            }
-          });
+          this.submit_generateCode();
         } else {
-          console.log("error submit!!");
           return false;
         }
       });
     },
 
+    // 提交接口调用
+    submit_generateCode() {
+      generateCode(this.setQuery).then((res) => {
+        this.updataLoading = false;
+        if (res.state == "Success") {
+          this.vipDialogVisible = false;
+          this.getList();
+          this.setQuery.validDay = "";
+          this.setQuery.activationType = "";
+          this.date = "";
+          this.setQuery.totalTicket = "";
+          setQuery.startString = "";
+        }
+      });
+    },
+
     // 查看激活码
     codeDetails(item) {
       this.$router.push({
@@ -533,10 +571,9 @@ export default {
     get_setmealList() {
       this.loading = true;
       getList().then((res) => {
-      this.loading = false;
+        this.loading = false;
         if (res.state == "Success") {
           this.optionsList = res.content.records;
-          this.total = res.content.total;
         }
       });
     },