| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <template>
- <view class="coupon">
- <mescroll-uni @getData="getCouponData" refs="mescroll" :size="10">
- <block slot="list">
- <block v-if="couponData.length">
- <view
- class="coupon-item"
- v-for="(item, index) in couponData"
- :key="index"
- :style="{ backgroundImage: 'url(' + $util.img('upload/uniapp/shop_uniapp/member/coupon_bg.png') + ')' }"
- @click="isChecked(item)"
- >
- <view class="coupon-title">
- <text class="coupon-money uni-using-hide">
- <text>¥</text>
- {{ parseInt(item.money) }}
- </text>
- <text class="uni-using-hide">满{{ parseInt(item.at_least) }}可用</text>
- </view>
- <view class="coupon-content">
- <text class="coupon-name uni-line-hide">{{ item.coupon_name }}</text>
- <text class="coupon-time">{{ item.expireTime }}</text>
- </view>
- <view class="checkbox-wrap"><text class="checkbox iconfont" :class="item.checked ? 'iconfuxuankuang1 color-base-text' : 'iconfuxuankuang2'"></text></view>
- </view>
- </block>
- <ns-empty v-else-if="!couponData.length && emptyShow"></ns-empty>
- </block>
- </mescroll-uni>
- <view class="footer-wrap" v-if="couponData.length"><button type="primary" @click="save()" :disabled="!Boolean(couponArr.length)">发放优惠券</button></view>
- <loading-cover ref="loadingCover"></loading-cover>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- emptyShow: false,
- memberId: 0,
- couponData: [],
- couponArr: [],
- repeatFlag: false
- };
- },
- onLoad(option) {
- option.member_id ? (this.memberId = option.member_id) : this.$util.redirectTo('/pages/member/list', {}, 'redirectTo');
- if (!this.$util.checkToken('/pages/member/detail?member_id=' + this.memberId)) return;
- },
- methods: {
- isChecked(item) {
- item.checked = !item.checked;
- if (item.checked) this.couponArr.push(item.coupon_type_id);
- else this.couponArr.splice(this.couponArr.indexOf(item.coupon_type_id), 1);
- },
- getCouponData(mescroll) {
- let data = {
- page_size: mescroll.size,
- page: mescroll.num,
- member_id: this.memberId,
- status: 1
- };
- this.mescroll = mescroll;
- this.$api.sendRequest({
- url: '/coupon/shopapi/coupon/lists',
- data: data,
- success: res => {
- let newArr = [];
- let msg = res.message;
- if (res.code == 0 && res.data) {
- newArr = res.data.list;
- } else {
- this.$util.showToast({ title: msg });
- }
- mescroll.endSuccess(newArr.length);
- //设置列表数据
- if (mescroll.num == 1) this.dataList = []; //如果是第一页需手动制空列表
- newArr.forEach(v => {
- this.$set(v, 'checked', false);
- if (v.validity_type == 0) v.expireTime = '有效期:' + this.$util.timeStampTurnTime(v.end_time);
- else if (v.validity_type == 1) v.expireTime = '领取之日起' + v.fixed_term + '天有效';
- });
- this.couponData = this.couponData.concat(newArr); //追加新数据
- this.emptyShow = true;
- if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
- }
- });
- },
- save() {
- if (this.repeatFlag) return;
- this.repeatFlag = true;
- let parent = this.couponArr.toString();
- this.$api.sendRequest({
- url: '/coupon/shopapi/coupon/send',
- data: {
- member_id: this.memberId,
- parent: parent
- },
- success: res => {
- this.repeatFlag = false;
- if (res.code == 0) {
- this.$util.showToast({
- title: '优惠券发放成功'
- });
- setTimeout(() => {
- this.$util.redirectTo('/pages/member/list');
- }, 1000);
- } else {
- this.$util.showToast({
- title: res.message
- });
- }
- }
- });
- }
- }
- };
- </script>
- <style lang="scss">
- .coupon {
- overflow: hidden;
- }
- .disabled {
- background-color: #ccc;
- }
- .coupon-item {
- display: flex;
- margin: 30rpx 30rpx 0;
- height: 170rpx;
- background-size: contain;
- background-repeat: no-repeat;
- .coupon-title {
- padding-left: 10rpx;
- display: flex;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- width: 198rpx;
- color: #fff;
- box-sizing: border-box;
- }
- .coupon-content {
- display: flex;
- flex-direction: column;
- padding: 0 30rpx;
- width: 356rpx;
- .coupon-name {
- margin-top: 10rpx;
- line-height: 1.5;
- height: 86rpx;
- }
- .coupon-time {
- margin-top: 10rpx;
- border-top: 2rpx dashed $color-line;
- padding-top: 6rpx;
- font-size: $font-size-tag;
- }
- }
- .coupon-money {
- text-align: center;
- font-size: 50rpx;
- text {
- font-size: 30rpx;
- }
- }
- .checkbox {
- color: $color-tip;
- margin-right: 10rpx;
- }
- }
- .footer-wrap {
- position: fixed;
- width: 100%;
- bottom: 0;
- padding: 40rpx 0;
- z-index: 10;
- /* #ifdef MP */
- padding-bottom: 40rpx;
- padding-bottom: 40rpx;
- /* #endif */
- /* #ifndef MP */
- padding-bottom: calc(constant(safe-area-inset-bottom) + 100rpx);
- padding-bottom: calc(env(safe-area-inset-bottom) + 100rpx);
- /* #endif */
- }
- </style>
|