| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <template>
- <div class="coupon-center">
- <BaseHeader></BaseHeader>
- <div class="content">
- <div>
- <div class="coupon-title">
- <router-link to="/">
- <img src="../assets/images/logo.png" width="120" alt="">
- </router-link>
- <p>领券中心</p>
- <Input search style="width:400px" @on-search='search' enter-button="搜索" placeholder="搜索优惠券" />
- </div>
- <div class="fontsize_18 recommend">推荐好券</div>
- <empty v-if="list.length===0" />
- <ul class="coupon-list" v-else>
- <li v-for="(item, index) in list" class="coupon-item" :key="index">
- <div class="c-left">
- <div>
- <span v-if="item.couponType === 'PRICE'" class="fontsize_12 global_color">¥<span class="price">{{item.price | unitPrice}}</span></span>
- <span v-if="item.couponType === 'DISCOUNT'" class="fontsize_12 global_color"><span class="price">{{item.couponDiscount}}</span>折</span>
- <span class="describe">满{{item.consumeThreshold}}元可用</span>
- </div>
- <p>使用范围:{{useScope(item.scopeType, item.storeName)}}</p>
- <p>有效期:{{item.endTime}}</p>
- </div>
- <b></b>
- <a class="c-right" @click="receive(item)">立即领取</a>
- <i class="circle-top"></i>
- <i class="circle-bottom"></i>
- </li>
- </ul>
- <Page :total="total" @on-change="changePageNum"
- v-if="list.length && total > params.pageNumber"
- class="pageration"
- @on-page-size-change="changePageSize"
- :page-size="params.pageSize"
- show-sizer>
- </Page>
- </div>
- </div>
- <BaseFooter></BaseFooter>
- </div>
- </template>
- <script>
- import {couponList, receiveCoupon} from '@/api/member.js'
- export default {
- data () {
- return {
- list: [], // 优惠券列表
- total: 0, // 优惠券总数
- params: { // 请求参数
- pageNumber: 1,
- pageSize: 20
- }
- }
- },
- methods: {
- search (item) {
- this.params.couponName = item
- this.params.pageNumber = 1
- this.getList()
- },
- getList () {
- this.$Spin.show()
- couponList(this.params).then(res => {
- this.$Spin.hide()
- this.loading = false
- if (res.success) {
- this.list = res.result.records
- this.total = res.result.total
- }
- }).catch(() => { this.$Spin.hide() })
- },
- changePageNum (val) {
- this.params.pageNumber = val;
- this.getList()
- },
- changePageSize (val) {
- this.pageNumber = 1;
- this.params.pageSize = val;
- this.getList()
- },
- receive (item) {
- receiveCoupon(item.id).then(res => {
- if (res.success) {
- this.$Modal.confirm({
- title: '领取优惠券',
- content: '<p>优惠券领取成功,可到我的优惠券页面查看</p>',
- okText: '我的优惠券',
- cancelText: '立即使用',
- onOk: () => {
- this.$router.push('/home/Coupons')
- },
- onCancel: () => {
- if (item.storeId !== 'platform') {
- this.$router.push({path: '/merchant', query: {id: item.storeId}})
- } else {
- if (item.scopeType === 'PORTION_GOODS_CATEGORY') {
- this.$router.push({path: '/goodsList', query: {categoryId: item.scopeId}})
- } else {
- this.$router.push({path: '/goodsList'})
- }
- }
- }
- });
- }
- })
- },
- useScope (type, storeName) {
- let shop = '平台';
- let goods = '全部商品'
- if (storeName !== 'platform') shop = storeName
- switch (type) {
- case 'ALL':
- goods = '全部商品'
- break;
- case 'PORTION_GOODS':
- goods = '部分商品'
- break;
- case 'PORTION_GOODS_CATEGORY':
- goods = '部分分类商品'
- break;
- }
- return `${shop}${goods}可用`
- }
- },
- mounted () {
- this.getList()
- }
- }
- </script>
- <style lang="scss" scoped>
- @import '../assets/styles/coupon.scss';
- .content{
- width: 100%;
- background-color: #fff;
- > div {
- margin: 10px auto;
- width: 1200px;
- }
- }
- .coupon-title {
- display: flex;
- align-items: center;
- p{
- font-size: 18px;
- margin-right: 500px;
- }
- border-bottom: 2px solid $theme_color;
- }
- .recommend {
- margin: 20px auto;
- font-weight: bold;
- width: 200px;
- text-align: center;
- }
- .coupon-item {
- b{
- background: url('../assets/images/small-circle.png') top left repeat-y;
- }
- }
- .pageration {
- text-align: right;
- padding-bottom: 10px;
- }
- </style>
|