Browse Source

超级会员

huangzhiguo 2 years ago
parent
commit
8a6f9fcb2e

+ 7 - 0
src/router/modules/member.js

@@ -51,6 +51,13 @@ const memberRouter = {
           component: () => import('@/views/member/coupon/list.vue'),
           component: () => import('@/views/member/coupon/list.vue'),
           name: 'MemberCoupon',
           name: 'MemberCoupon',
           meta: { title: '超级会员专属优惠券', activeMenu: '/member/coupon' }
           meta: { title: '超级会员专属优惠券', activeMenu: '/member/coupon' }
+        },
+        {
+          path: 'detail',
+          hidden: true,
+          component: () => import('@/views/member/coupon/detail.vue'),
+          name: 'MemberDetail',
+          meta: { title: '超级会员专属优惠券', activeMenu: '/member/coupon/' }
         }
         }
       ]
       ]
     },
     },

+ 91 - 41
src/views/member/coupon/list.vue

@@ -16,16 +16,16 @@
           </div>
           </div>
           <div class="filter-control">
           <div class="filter-control">
             <span>优惠状态:</span>
             <span>优惠状态:</span>
-            <el-select v-model="listQuery.couponStatus" style="width:120px;" clearable @change="getList">
+            <el-select v-model="listQuery.status" style="width:120px;" clearable @change="getList">
               <el-option value="" label="请选择" />
               <el-option value="" label="请选择" />
-              <el-option :value="1" label="未生效" />
-              <el-option :value="2" label="已生效" />
-              <el-option :value="3" label="已关闭" />
-              <el-option :value="4" label="已失效" />
+              <el-option :value="0" label="未生效" />
+              <el-option :value="1" label="已生效" />
+              <el-option :value="2" label="已关闭" />
+              <el-option :value="3" label="已失效" />
             </el-select>
             </el-select>
           </div>
           </div>
           <div class="filter-control">
           <div class="filter-control">
-            <span>购买时间:</span>
+            <span>优惠月份:</span>
             <el-date-picker
             <el-date-picker
               v-model="time"
               v-model="time"
               type="daterange"
               type="daterange"
@@ -44,20 +44,30 @@
         </div>
         </div>
         <el-table :data="tableData" height="550" border style="width: 100%">
         <el-table :data="tableData" height="550" border style="width: 100%">
           <el-table-column label="优惠月份" width="180">
           <el-table-column label="优惠月份" width="180">
-            <template>
-              <el-table-column label="开始时间" prop="couponStartTime" /> - <el-table-column label="结束时间" prop="couponEndTime" />
+            <template slot-scope="{ row }">
+              {{ row.useTime }} -- {{ row.endTime }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="coupon" label="优惠券" width="780">
+            <template slot-scope="{ row }">
+              <p v-for="item in row.couponList" :key="item.index">
+                优惠券{{ item.index + 1 }} : <b>{{ item.couponType === 0 ? '活动券' : item.couponType === 1 ? '品类券' : '店铺券' }}</b>
+                ¥{{ item.couponAmount }},满{{ item.touchPrice }}可用
+                {{ item.productType ? item.productType === '1' ? ',全商城商品通用' : ',仅可购买指定商品' : '' }}
+                {{ item.categoryType ? item.categoryType === '1' ? ',仅可购买产品类商品' : ',仅可购买仪器类商品' : '' }}
+                <span v-if="item.couponType === 3">,仅可购买店铺“{{ item.shopName }}”的商品</span>
+              </p>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column prop="coupon" label="优惠券" width="280" />
-          <el-table-column prop="couponStatus" label="优惠状态">
+          <el-table-column prop="status" label="优惠状态">
             <template slot-scope="{ row }">
             <template slot-scope="{ row }">
-              <span v-if="row.couponStatus === 0" class="el-span-zero">
+              <span v-if="row.status === '0'" class="el-span-zero">
                 未生效
                 未生效
               </span>
               </span>
-              <span v-else-if="row.couponStatus === 1" class="el-span-one">
+              <span v-else-if="row.status === '1'" class="el-span-one">
                 已生效
                 已生效
               </span>
               </span>
-              <span v-else-if="row.couponStatus === 2" class="el-span-two">
+              <span v-else-if="row.status === '2'" class="el-span-two">
                 已关闭
                 已关闭
               </span>
               </span>
               <span v-else class="el-span-three">
               <span v-else class="el-span-three">
@@ -65,13 +75,21 @@
               </span>
               </span>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
+          <el-table-column label="操作">
+            <template slot-scope="{ row }">
+              <el-button type="text">编辑</el-button>
+              <el-button type="text" :hidden="row.status !== 2 ? false : true" @click="closeCoupon(row)">关闭</el-button>
+              <el-button type="text" :hidden="row.status === 2 ? false : true" @click="openCoupon(row)">开启</el-button>
+              <el-button type="text" @click="deleteCoupon(row)">删除</el-button>
+            </template>
+          </el-table-column>
         </el-table>
         </el-table>
 
 
         <!-- 页码 -->
         <!-- 页码 -->
         <pagination
         <pagination
           :total="total"
           :total="total"
-          :page-sizes="[100]"
-          :page-size="100"
+          :page-sizes="[20, 30, 50, 100]"
+          :page-size="20"
           :page.sync="listQuery.pageNum"
           :page.sync="listQuery.pageNum"
           :limit.sync="listQuery.pageSize"
           :limit.sync="listQuery.pageSize"
         />
         />
@@ -99,9 +117,18 @@
         </div>
         </div>
       </template>
       </template>
     </el-tabs>
     </el-tabs>
+    <el-dialog title="提示" :visible.sync="dialogTableVisible" width="50%">
+      <span>{{ msg }}</span>
+      <div slot="footer">
+        <el-button type="primary" @click="renovate()">确定</el-button>
+        <el-button type="primary" @click="dialogTableVisible = false">取消</el-button>
+      </div>
+    </el-dialog>
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
+import { fetchCouponList, fetchCloseCoupon, fetchOpenCoupon, fetchDeleteCoupon } from '@/api/member/coupon/coupon'
+
 const defaultCoupon = {
 const defaultCoupon = {
   type: '',
   type: '',
   money: '',
   money: '',
@@ -165,7 +192,7 @@ export default {
       pickerOptions,
       pickerOptions,
       listQuery: {
       listQuery: {
         couponType: '',
         couponType: '',
-        couponStatus: '',
+        status: '',
         couponStartTime: '',
         couponStartTime: '',
         couponEndTime: '',
         couponEndTime: '',
         pageNum: 0,
         pageNum: 0,
@@ -174,30 +201,10 @@ export default {
       // 超级会员优惠券
       // 超级会员优惠券
       total: 0,
       total: 0,
       time: '',
       time: '',
+      tableData: [],
       couponList: [],
       couponList: [],
-      tableData: [
-        {
-          couponStartTime: '2016-05-03',
-          couponEndTime: '2016-08-03',
-          coupon: '王小虎',
-          couponStatus: 0
-        }, {
-          couponStartTime: '2016-05-03',
-          couponEndTime: '2016-08-03',
-          coupon: '王小虎',
-          couponStatus: 1
-        }, {
-          couponStartTime: '2016-05-03',
-          couponEndTime: '2016-08-03',
-          coupon: '王小虎',
-          couponStatus: 2
-        }, {
-          couponStartTime: '2016-05-03',
-          couponEndTime: '2016-08-03',
-          coupon: '王小虎',
-          couponStatus: 3
-        }
-      ]
+      dialogTableVisible: false,
+      msg: ''
     }
     }
   },
   },
   created() {
   created() {
@@ -205,8 +212,51 @@ export default {
     this.getList()
     this.getList()
   },
   },
   methods: {
   methods: {
-    getList() {
-      console.log(1111)
+    async getList() {
+      if (this.time && this.time.length > 0) {
+        this.listQuery.couponStartTime = this.time[0]
+        this.listQuery.couponEndTime = this.time[1]
+      } else {
+        this.listQuery.couponStartTime = ''
+        this.listQuery.couponEndTime = ''
+      }
+      const res = await fetchCouponList(this.listQuery)
+      this.tableData = res.data.results
+      this.total = res.data.totalRecord
+    },
+    // 关闭超级会员专属优惠券
+    async closeCoupon(row) {
+      const res = await fetchCloseCoupon(row.id)
+      this.dialogTableVisible = true
+      if (res.code === 1) {
+        this.msg = '关闭超级会员专属优惠券完成'
+      } else {
+        this.msg = '关闭超级会员专属优惠券失败'
+      }
+    },
+    // 开启超级会员专属优惠券
+    async openCoupon(row) {
+      const res = await fetchOpenCoupon(row.id)
+      this.dialogTableVisible = true
+      if (res.code === 1) {
+        this.msg = '开启超级会员专属优惠券完成'
+      } else {
+        this.msg = '开启超级会员专属优惠券失败'
+      }
+    },
+    // 删除超级会员专属优惠券
+    async deleteCoupon(row) {
+      const res = await fetchDeleteCoupon(row.id)
+      this.dialogTableVisible = true
+      if (res.code === 1) {
+        this.msg = '删除超级会员专属优惠券完成'
+      } else {
+        this.msg = '删除超级会员专属优惠券失败'
+      }
+    },
+    renovate() {
+      this.dialogTableVisible = false
+      this.getlist()
     },
     },
     handleAdd() {
     handleAdd() {
       // 新增优惠券
       // 新增优惠券

+ 5 - 3
src/views/member/meal/index.vue

@@ -60,15 +60,17 @@ export default {
     }
     }
   },
   },
   created() {
   created() {
-    this.getData()
+    this.getList()
   },
   },
   methods: {
   methods: {
-    async getData() {
+    // 获取超级会员套餐配置
+    async getList() {
       const res = await fetchFindPackage()
       const res = await fetchFindPackage()
       this.form.price1 = res.data.price1
       this.form.price1 = res.data.price1
       this.form.price2 = res.data.price2
       this.form.price2 = res.data.price2
       this.form.proportion = res.data.proportion
       this.form.proportion = res.data.proportion
     },
     },
+    // 修改超级会员套餐配置
     async updateMeal() {
     async updateMeal() {
       const res = await updatePrice(this.form)
       const res = await updatePrice(this.form)
       if (res.code === 1) {
       if (res.code === 1) {
@@ -78,7 +80,7 @@ export default {
     // 提示信息确认刷新数据
     // 提示信息确认刷新数据
     renovate() {
     renovate() {
       this.dialogTableVisible = false
       this.dialogTableVisible = false
-      this.getData()
+      this.getList()
     }
     }
   }
   }
 }
 }

+ 54 - 42
src/views/member/member/record-list.vue

@@ -1,65 +1,40 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
     <div class="filter-container">
     <div class="filter-container">
-      <div class="filter-control">
-        <span>机构名称:</span>
-        <el-input
-          v-model="listQuery.clubName"
-          placeholder="机构名称"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>联系人:</span>
-        <el-input
-          v-model="listQuery.linkMan"
-          placeholder="联系人"
-          clearable
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
-      <div class="filter-control">
-        <span>手机号:</span>
-        <el-input
-          v-model="listQuery.mobile"
-          placeholder="手机号"
-          clearable
-          style="width:160px;"
-          @keyup.enter.native="getList"
-          @clear="getList"
-        />
-      </div>
+      <div class="filter-control handel_club">
+        <span class="handel_span">机构名称: {{ clubName }}</span>
+        <span class="handel_span">联系人: {{ linkMan }}</span>
+        <span class="handel_span">手机号: {{ mobile }}</span>
+      </div><br>
       <div class="filter-control">
       <div class="filter-control">
         <span>购买套餐:</span>
         <span>购买套餐:</span>
         <el-select v-model="listQuery.packageId" style="width:120px;" clearable @change="getList">
         <el-select v-model="listQuery.packageId" style="width:120px;" clearable @change="getList">
           <el-option value="" label="请选择" />
           <el-option value="" label="请选择" />
           <el-option :value="0" label="系统赠送" />
           <el-option :value="0" label="系统赠送" />
           <el-option :value="1" label="1个月" />
           <el-option :value="1" label="1个月" />
-          <el-option :value="1" label="3个月" />
-          <el-option :value="1" label="12个月" />
+          <el-option :value="3" label="3个月" />
+          <el-option :value="12" label="12个月" />
         </el-select>
         </el-select>
       </div>
       </div>
       <div class="filter-control">
       <div class="filter-control">
         <span>会员状态:</span>
         <span>会员状态:</span>
         <el-select v-model="listQuery.status" style="width:120px;" clearable @change="getList">
         <el-select v-model="listQuery.status" style="width:120px;" clearable @change="getList">
           <el-option value="" label="请选择" />
           <el-option value="" label="请选择" />
-          <el-option value="" label="全部" />
           <el-option :value="1" label="已生效" />
           <el-option :value="1" label="已生效" />
           <el-option :value="2" label="已过期" />
           <el-option :value="2" label="已过期" />
+          <el-option :value="3" label="暂未生效" />
         </el-select>
         </el-select>
-      </div><br>
+      </div>
       <div class="filter-control">
       <div class="filter-control">
         <span>购买时间:</span>
         <span>购买时间:</span>
         <el-date-picker
         <el-date-picker
-          v-model="time"
+          v-model="purchaseTime"
           type="daterange"
           type="daterange"
           unlink-panels
           unlink-panels
           range-separator="至"
           range-separator="至"
           start-placeholder="开始日期"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
           end-placeholder="结束日期"
+          value-format="yyyy-MM-dd HH:mm:ss"
           :picker-options="pickerOptions"
           :picker-options="pickerOptions"
           @change="getList"
           @change="getList"
         />
         />
@@ -67,12 +42,13 @@
       <div class="filter-control">
       <div class="filter-control">
         <span>到期时间:</span>
         <span>到期时间:</span>
         <el-date-picker
         <el-date-picker
-          v-model="time"
+          v-model="expireTime"
           type="daterange"
           type="daterange"
           unlink-panels
           unlink-panels
           range-separator="至"
           range-separator="至"
           start-placeholder="开始日期"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
           end-placeholder="结束日期"
+          value-format="yyyy-MM-dd HH:mm:ss"
           :picker-options="pickerEndOptions"
           :picker-options="pickerEndOptions"
           @change="getList"
           @change="getList"
         />
         />
@@ -162,6 +138,7 @@ export default {
     }
     }
   },
   },
   data() {
   data() {
+    // 购买时间
     const pickerOptions = {
     const pickerOptions = {
       shortcuts: [
       shortcuts: [
         {
         {
@@ -211,6 +188,7 @@ export default {
         }
         }
       ]
       ]
     }
     }
+    // 到期时间
     const pickerEndOptions = {
     const pickerEndOptions = {
       shortcuts: [
       shortcuts: [
         {
         {
@@ -263,14 +241,14 @@ export default {
     return {
     return {
       pickerOptions,
       pickerOptions,
       pickerEndOptions,
       pickerEndOptions,
-      time: '',
+      // 购买时间
+      purchaseTime: '',
+      // 到期时间
+      expireTime: '',
       isLoading: true,
       isLoading: true,
       listQuery: {
       listQuery: {
         clubId: 0, // 机构Id
         clubId: 0, // 机构Id
         userId: 0, // 用户Id
         userId: 0, // 用户Id
-        clubName: '', // 机构名称
-        linkMan: '', // 联系人
-        mobile: '', // 手机号
         packageId: '', // 购买套餐
         packageId: '', // 购买套餐
         status: '', // 会员状态
         status: '', // 会员状态
         startPayTime: '', // 购买开始时间
         startPayTime: '', // 购买开始时间
@@ -280,6 +258,9 @@ export default {
         pageNum: 1,
         pageNum: 1,
         pageSize: 20
         pageSize: 20
       },
       },
+      clubName: '', // 机构名称
+      linkMan: '', // 联系人
+      mobile: '', // 手机号
       tableData: [],
       tableData: [],
       total: 0
       total: 0
     }
     }
@@ -291,13 +272,44 @@ export default {
   methods: {
   methods: {
     async getList() {
     async getList() {
       this.isLoading = true
       this.isLoading = true
+      // 购买时间
+      if (this.purchaseTime && this.purchaseTime.length > 0) {
+        this.listQuery.startPayTime = this.purchaseTime[0]
+        this.listQuery.endPayTime = this.purchaseTime[1]
+      } else {
+        this.listQuery.startPayTime = ''
+        this.listQuery.endPayTime = ''
+      }
+      // 到期时间
+      if (this.expireTime && this.expireTime.length > 0) {
+        this.listQuery.startEndTime = this.expireTime[0]
+        this.listQuery.endEndTime = this.expireTime[1]
+      } else {
+        this.listQuery.startEndTime = ''
+        this.listQuery.endEndTime = ''
+      }
+      // 获取数据列表
       const res = await findHistory(this.listQuery)
       const res = await findHistory(this.listQuery)
       this.tableData = res.data.results
       this.tableData = res.data.results
       this.total = res.data.totalRecord
       this.total = res.data.totalRecord
+      this.clubName = res.data.results[0].clubName
+      this.linkMan = res.data.results[0].linkMan
+      this.mobile = res.data.results[0].mobile
       this.isLoading = false
       this.isLoading = false
     }
     }
   }
   }
 }
 }
 </script>
 </script>
 
 
-<style></style>
+<style>
+  .handel_span {
+    padding-left: 20px;
+    font-size: 20px;
+  }
+  .handel_club{
+    width: 100%;
+    height: 50px;
+    margin-top: 10px;
+    /* background-color: rgb(187, 183, 183); */
+  }
+</style>

+ 12 - 4
src/views/member/product/list.vue

@@ -64,10 +64,18 @@
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column prop="productName" label="商品名称" />
           <el-table-column prop="productName" label="商品名称" />
-          <el-table-column prop="shopName" label="供应商" />
+          <el-table-column prop="shopName" label="供应商" width="250px" />
           <el-table-column prop="price" label="机构价" />
           <el-table-column prop="price" label="机构价" />
-          <el-table-column prop="discount" label="会员折扣" />
-          <el-table-column prop="discountPrice" label="会员价" />
+          <el-table-column prop="discount" label="会员折扣">
+            <template slot-scope="{ row }">
+              {{ row.priceType === 1 ? row.discount+'%' : '---' }} {{ row.priceType === 1 ? '%':'' }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="discountPrice" label="会员价">
+            <template slot-scope="{ row }">
+              ¥{{ row.priceType === 2 ? row.discountPrice : row.price * row.discount * 0.01 }}
+            </template>
+          </el-table-column>
           <el-table-column prop="sort" label="排序值" />
           <el-table-column prop="sort" label="排序值" />
           <el-table-column prop="status" label="优惠状态">
           <el-table-column prop="status" label="优惠状态">
             <template slot-scope="{ row }">
             <template slot-scope="{ row }">
@@ -79,7 +87,7 @@
               </span>
               </span>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column prop="addTime" label="添加时间" />
+          <el-table-column prop="addTime" label="添加时间" width="200px" />
           <el-table-column label="操作">
           <el-table-column label="操作">
             <template>
             <template>
               <el-button type="text" size="mini">编辑</el-button>
               <el-button type="text" size="mini">编辑</el-button>