Bläddra i källkod

feat: 代金券部分对接接口

Sun 3 år sedan
förälder
incheckning
c2556b6d48
3 ändrade filer med 81 tillägg och 37 borttagningar
  1. 5 1
      src/assets/styles/index.scss
  2. 26 19
      src/views/business/coupon/add.vue
  3. 50 17
      src/views/business/coupon/index.vue

+ 5 - 1
src/assets/styles/index.scss

@@ -213,4 +213,8 @@ aside {
 ::-webkit-scrollbar-track-piece { background-color: #f5f5f5; border-radius: 6px; }
 ::-webkit-scrollbar-thumb { background-color: #cccccc; border-radius: 6px; }
 ::-webkit-scrollbar-corner { background-color: #f5f5f5; }
-::-webkit-resizer { background-repeat: no-repeat; background-position: bottom right; }
+::-webkit-resizer { background-repeat: no-repeat; background-position: bottom right; }
+
+.del {
+  color: #F56C6C;
+}

+ 26 - 19
src/views/business/coupon/add.vue

@@ -1,41 +1,44 @@
 <template>
   <div class="app-container coupon-add">
+    <br>
     <el-row>
       <el-col :span="23">
         <el-form ref="addItem" :model="addData" :rules="rules" label-width="160px">
           <el-form-item label="代金券名称:" prop="title">
             <el-input v-model="addData.title" placeholder="请输入代金券名称" :maxlength="32" show-word-limit />
           </el-form-item>
-          <!-- <el-form-item label="主图:" prop="mainImg">
-            <Upload v-model="addData.mainImg" :accept="accept" :limit="isVideoMode? 1:3" :type="4"/>
-            <div class="tip" style="font-size: 12px;color: #777"> 可选上传3张图片 或 1个视频(限.mp4格式)。</div>
-          </el-form-item> -->
+          <el-form-item label="使用场景:" prop="changjing">
+            <el-radio-group v-model="addData.changjing">
+              <el-radio :label="1">门店消费</el-radio>
+              <el-radio :label="2">盲票购买</el-radio>
+            </el-radio-group>
+          </el-form-item>
           <el-form-item label="面值:" prop="discount">
             <el-input v-model.number="addData.discount" type="number" placeholder="请输入代金券面值">
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
-          <el-form-item label="门店默认承担比例:" prop="bili">
-            <el-input v-model.number="addData.amount" type="number" placeholder="请输入面值">
+          <el-form-item label="门店默认承担比例:" prop="channelSharedRate">
+            <el-input v-model.number="addData.channelSharedRate" type="number" placeholder="请输入面值">
               <template slot="append">%</template>
             </el-input>
           </el-form-item>
-          <el-form-item label="最低消费金额:" prop="discount">
-            <el-input v-model.number="addData.discount" type="number" placeholder="请输入可使用的最低消费金额">
+          <el-form-item label="最低消费金额:" prop="minOrderAmt">
+            <el-input v-model.number="addData.minOrderAmt" type="number" placeholder="请输入可使用的最低消费金额">
               <template slot="append">元</template>
             </el-input>
           </el-form-item>
-          <el-form-item label="有效期类型:" prop="contactTel">
-            <el-input v-model="addData.contactTel" placeholder="请输入有效期类型">
+          <el-form-item label="有效期:" prop="dueDays">
+            <el-input v-model.number="addData.dueDays" placeholder="请输入有效期">
               <template slot="prepend">领取之日起</template>
               <template slot="append">天有效</template>
             </el-input>
           </el-form-item>
-          <el-form-item label="使用说明:" prop="detailAddress">
-            <el-input type="textarea" rows="4" v-model="addData.detailAddress" placeholder="使用说明仅用户可见"/>
+          <el-form-item label="使用说明:" prop="description">
+            <el-input type="textarea" rows="4" v-model="addData.description" placeholder="请输入使用说明 对用户可见"/>
           </el-form-item>
-          <el-form-item label="使用范围:" prop="detailAddress">
-            <el-radio-group v-model="radio">
+          <el-form-item label="使用范围:" prop="boxIds">
+            <el-radio-group v-model="addData.boxIds">
               <el-radio :label="1">进票门店</el-radio>
               <el-radio :label="2">所有盲票</el-radio>
               <el-radio :label="3">制定盲票</el-radio>
@@ -53,7 +56,7 @@
   </div>
 </template>
 <script>
-
+import { getCouponDetail, addCoupon } from '@/api/business/coupon'
 export default {
   name: 'CouponAdd',
   data() {
@@ -62,9 +65,13 @@ export default {
       addData: {},
       addIng: false,
       rules: {
-        title: [
-          { required: true, message: '请输入代金券名称', trigger: 'blur' }
-        ],
+        title: [{ required: true, message: '请输入代金券名称', trigger: 'blur' }],
+        discount: [{ required: true, message: '请输入代金券面值', trigger: 'blur' }],
+        channelSharedRate: [{ required: true, message: '请输入门店默认承担比例', trigger: 'blur' }],
+        minOrderAmt: [{ required: true, message: '请输入最低消费金额', trigger: 'blur' }],
+        dueDays: [{ required: true, message: '请输入有效期', trigger: 'blur' }],
+        description: [{ required: true, message: '请输入使用说明', trigger: 'blur' }],
+        boxIds: [{ required: true, message: '请选择使用范围', trigger: 'blur' }]
       }
     }
   },
@@ -80,7 +87,7 @@ export default {
       this.$refs.addItem.validate((valid, items) => {
         if (valid) {
           this.addIng = true
-          action(this.addData).then(res => {
+          addCoupon(this.addData).then(res => {
             this.addIng = false
             if (res.code === 0) {
               this.$message({

+ 50 - 17
src/views/business/coupon/index.vue

@@ -1,18 +1,18 @@
 <template>
   <div class="app-container coupon-list">
     <el-form v-show="showSearch" :model="queryParams" ref="queryForm" :inline="true" size="small">
-      <el-form-item label="代金券名称" prop="title">
+      <el-form-item label="优惠券名称" prop="title">
         <el-input
           v-model="queryParams.title"
-          placeholder="请输入代金券名称"
+          placeholder="请输入优惠券名称"
           clearable
           @keyup.enter.native="queryParams.pageNum = 1;getList()"
         />
       </el-form-item>
       <el-form-item label="状态" prop="status">
-        <el-select v-model="queryParams.status" placeholder="请选择代金券状态" clearable>
-          <el-option label="上架" value="1" />
-          <el-option label="下架" value="2" />
+        <el-select v-model="queryParams.status" placeholder="请选择优惠券状态" clearable>
+          <el-option label="上架" value="on" />
+          <el-option label="下架" value="off" />
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -28,26 +28,28 @@
           size="mini"
           @click="$router.push('/coupon/add')"
           v-hasPermi="['business:coupon:add']"
-        >添加门店代金券</el-button>
+        >添加门店优惠券</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
     <el-table v-loading="loading" :data="tableData">
-      <el-table-column label="代金券ID" prop="id" min-width="70" />
-      <el-table-column label="代金券名称" prop="title" />
-      <el-table-column label="代金券金额" prop="amount" />
-      <el-table-column label="已领取数量" prop="quiety" />
-      <el-table-column label="有效期限" prop="lastMessageTime" />
+      <el-table-column label="优惠券ID" prop="couponId" width="80" />
+      <el-table-column label="优惠券名称" prop="title" />
+      <el-table-column label="优惠券金额" prop="discount" />
+      <el-table-column label="优惠券类型" prop="discount" />
+      <el-table-column label="已领取数量" prop="quantity" />
+      <el-table-column label="有效期限(天)" prop="dueDays" />
       <el-table-column label="状态" prop="status">
         <template slot-scope="{row}">
-          {{ JSON.parse(row.status).desc }}
+          <el-tag :type="JSON.parse(row.status).value === 'on' ? 'success' : 'info'">{{ JSON.parse(row.status).desc }}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column fixed="right" align="right" label="操作" width="120">
+      <el-table-column fixed="right" align="right" label="操作" width="150">
         <template slot-scope="{row}">
-          <el-button type="text">查看</el-button>
-          <el-button type="text">下架</el-button>
-          <!-- <el-button type="text">门店承担比例</el-button> -->
+          <el-button v-hasPermi="['business:coupon:edit']" type="text" @click="$router.push('/coupon/add?id=' + row.couponId)">编辑</el-button>
+          <el-button v-if="JSON.parse(row.status).value === 'off'" v-hasPermi="['business:coupon:on']" type="text" @click="setStatus(row, 'on')">上架</el-button>
+          <el-button v-if="JSON.parse(row.status).value === 'on'" v-hasPermi="['business:coupon:off']" type="text" @click="setStatus(row, 'off')">下架</el-button>
+          <el-button v-hasPermi="['business:coupon:off']" class="del" type="text" @click="del(row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -55,7 +57,7 @@
   </div>
 </template>
 <script>
-import { getCouponList } from '@/api/business/coupon'
+import { getCouponList, delCoupon, setCouponStatus } from '@/api/business/coupon'
 export default {
   name: 'CouponList',
   data() {
@@ -87,6 +89,37 @@ export default {
       }).catch(() => {
         this.loading = false
       })
+    },
+    setStatus(item, status) {
+      this.$confirm(`确认${status === 'on' ? '上架' : '下架'}代金券 “${item.title}” 吗?`, `${status === 'on' ? '上架' : '下架'}代金券`, {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        setCouponStatus({
+          couponId: item.couponId,
+          status
+        }).then(res => {
+          if (res.code === 0) {
+            this.$message.success('操作已完成!')
+            this.getList()
+          }
+        })
+      })
+    },
+    del(item) {
+      this.$confirm(`确认删除代金券 “${item.title}” 吗?`, '删除代金券', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        delCoupon(item.couponId).then(res => {
+          if (res.code === 0) {
+            this.$message.success('操作已完成!')
+            this.getList()
+          }
+        })
+      })
     }
   }
 }