Jelajahi Sumber

优惠券查询

YY 2 tahun lalu
induk
melakukan
d48f0aa7f1

+ 39 - 1
src/views/system/coupon/index.vue

@@ -4,7 +4,15 @@
       <el-col :span="24" class="main animate__animated animate__backInRight">
         <el-col :span="24" class="one"> <span>优惠券管理</span> </el-col>
         <el-col :span="24" class="two">
-          <search-1 :form="searchForm" :statusList="statusList" @onSubmit="search" @toReset="toClose"></search-1>
+          <search-1
+            :form="searchForm"
+            :statusList="statusList"
+            @onSubmit="search"
+            @toReset="toClose"
+            @querySearch="querySearch"
+            :shopList="shopList"
+            :discount_typeList="discount_typeList"
+          ></search-1>
         </el-col>
         <el-col :span="24" class="thr">
           <el-button type="primary" size="mini" @click="toAdd()">新增</el-button>
@@ -34,6 +42,7 @@ const _ = require('lodash');
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions } = createNamespacedHelpers('coupon');
 const { mapActions: dictData } = createNamespacedHelpers('dictData');
+const { mapActions: shop } = createNamespacedHelpers('shop');
 
 export default {
   name: 'card-1',
@@ -62,6 +71,15 @@ export default {
         { label: '商铺', model: 'shop.name' },
         { label: '优惠券名称', model: 'name' },
         { label: '优惠券数量', model: 'num' },
+        {
+          label: '减免方式',
+          model: 'discount_type',
+          format: (i) => {
+            let data = that.discount_typeList.find((f) => f.value == i);
+            if (data) return data.label;
+            else return '暂无';
+          },
+        },
         {
           label: '是否使用',
           model: 'status',
@@ -78,6 +96,11 @@ export default {
       issueList: [],
       // 是否使用
       statusList: [],
+      // 商铺
+      shopList: [],
+
+      // 减免方式
+      discount_typeList: [],
     };
   },
   async created() {
@@ -85,6 +108,8 @@ export default {
     await this.searchOther();
   },
   methods: {
+    ...shop({ shopQuery: 'query' }),
+
     ...dictData({ dictQuery: 'query' }),
     ...mapActions(['query', 'fetch', 'create', 'update', 'delete']),
     // 查询
@@ -132,6 +157,19 @@ export default {
       if (this.$checkRes(res)) {
         this.$set(this, `statusList`, res.data);
       }
+
+      // 减免方式
+      res = await this.dictQuery({ code: 'coupon_discount_type' });
+      if (this.$checkRes(res)) {
+        this.$set(this, `discount_typeList`, res.data);
+      }
+    },
+    // 店铺名称远程查询
+    async querySearch(value) {
+      let res = await this.shopQuery({ name: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, 'shopList', res.data);
+      }
     },
   },
   computed: {

+ 46 - 2
src/views/system/coupon/parts/search-1.vue

@@ -3,6 +3,35 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-form :model="form" ref="form" label-width="130px">
+          <el-col :span="6">
+            <el-form-item label="店铺名称" prop="type">
+              <el-select
+                v-model="form.shop"
+                filterable
+                remote
+                reserve-keyword
+                placeholder="请输入商铺名称"
+                :remote-method="querySearch"
+                :loading="loading"
+                @change="handleSelect"
+              >
+                <el-option v-for="item in shopList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="优惠券名称" prop="name">
+              <el-input v-model="form.name" placeholder="请输入优惠券名称" size="small"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="减免方式" prop="discount_type">
+              <el-select v-model="form.discount_type" clearable filterable placeholder="请选择减免方式" size="small" style="width: 100%">
+                <el-option v-for="i in discount_typeList" :key="i.label" :label="i.label" :value="i.value"> </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+
           <el-col :span="6">
             <el-form-item label="是否使用" prop="status">
               <el-select v-model="form.status" clearable filterable placeholder="请选择" style="width: 100%" size="small">
@@ -24,13 +53,28 @@
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'search-1',
-  props: { form: { type: Object }, statusList: { type: Array } },
+  props: {
+    form: { type: Object },
+    statusList: { type: Array },
+    shopList: { type: Array },
+    discount_typeList: { type: Array },
+  },
   components: {},
   data: function () {
-    return {};
+    return {
+      loading: false,
+    };
   },
   created() {},
   methods: {
+    querySearch(value) {
+      this.loading = true;
+      this.$emit('querySearch', value);
+      this.loading = false;
+    },
+    handleSelect(value) {
+      this.$set(this.form, `shop`, value);
+    },
     onSubmit() {
       this.$emit('onSubmit');
     },

+ 0 - 1
src/views/system/order/parts/card-1.vue

@@ -29,7 +29,6 @@ const { mapActions } = createNamespacedHelpers('order');
 const { mapActions: shop } = createNamespacedHelpers('shop');
 export default {
   name: 'card-1',
-  // props: { list: { type: Array }, total: { type: Number }, statusList: { type: Array }  },
   props: { statusList: { type: Array } },
   components: { search1: () => import('./search-1.vue') },
   data: function () {