Files
ZangShiQi/addon/cashier/source/os/components/ns-member-card-popup/ns-member-card-popup.vue
2026-04-04 17:27:12 +08:00

129 lines
5.6 KiB
Vue
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="container">
<uni-popup ref="memberCardPopup">
<view class="pop-box member-info-wrap">
<view class="pop-header">
<view class="pop-header-text">会员卡项</view>
<view class="pop-header-close" @click="$refs.memberCardPopup.close()">
<text class="iconguanbi1 iconfont"></text>
</view>
</view>
<view class="info-wrap" v-if="globalMemberInfo">
<view class="headimg-content">
<view class="headimg">
<image :src="globalMemberInfo.headimg ? $util.img(globalMemberInfo.headimg) : $util.img(defaultImg.head)" @error="globalMemberInfo.headimg = defaultImg.head"/>
</view>
<view class="header-info">
<view class="name">
{{ globalMemberInfo.nickname }}
<text v-if="globalMemberInfo.member_level">{{ globalMemberInfo.member_level_name }}</text>
</view>
<view class="header-info-item">
<view>电话{{ globalMemberInfo.mobile }}</view>
<view>性别{{ globalMemberInfo.sex == 0 ? '未知' : globalMemberInfo.sex == 1 ? '男' : '女' }}</view>
<view>生日{{ globalMemberInfo.birthday }}</view>
<view>注册时间{{ globalMemberInfo.reg_time | timeFormat }}</view>
</view>
</view>
</view>
<view class="member-card-wrap">
<view class="card-wrap">
<scroll-view scroll-y="true" class="card-list" @scrolltolower="getMemberCard()">
<block v-if="memberCardData.list.length">
<view class="card-item" :class="{ active: memberCardData.index == index }" v-for="(item, index) in memberCardData.list" :key="index" @click="selectMemberCard(item, index)">
<view class="card-name">{{ item.goods_name }}</view>
<view class="info">
<view v-if="item.total_num > 0">可用{{ item.total_num - item.total_use_num }}</view>
<view v-else>不限次</view>
<view v-if="item.end_time > 0">{{ $util.timeFormat(item.end_time, 'Y/m/d') }}</view>
<view v-else>长期有效</view>
</view>
</view>
</block>
<view v-else class="empty">
<image src="@/static/card/card_empty.png" mode="widthFix"/>
<view class="tips">暂无可用卡项</view>
</view>
</scroll-view>
<view class="item-list">
<view class="title">
<view>可用服务/商品</view>
<view v-if="memberCardData.currData.card_type == 'commoncard'">
<text>以下服务/商品剩余可用</text>
<text class="num">{{ memberCardData.currData.total_num - memberCardData.currData.total_use_num }}</text>
<text></text>
</view>
</view>
<scroll-view scroll-y="true" class="item-wrap">
<view class="uni-flex justify-between content" v-if="memberCardData.currData.item_list">
<view class="card-item" :class="{
active: memberCardData.selected['item_' + item.item_id],
'not-select': !checkStatus(item) && !memberCardData.selected['item_' + item.item_id]
}" @click="selectMemberCardItem(item, index)" v-for="(item, index) in memberCardData.currData.item_list">
<view class="image">
<image v-if="item.sku_image == '@/static/goods/goods.png'" src="@/static/goods/goods.png" mode="widthFix"/>
<image v-else :src="$util.img(item.sku_image.split(',')[0], { size: 'small' })" @error="item.sku_image = '@/static/goods/goods.png'" mode="widthFix"/>
</view>
<view class="info">
<view>
<view class="name">
<text class="tag">{{ item.is_virtual ? '服务' : '商品' }}</text>
<text>{{ item.sku_name }}</text>
</view>
<block v-if="memberCardData.currData.card_type != 'commoncard'">
<view class="num" v-if="item.num > 0">剩余可用{{ item.num - item.use_num }}</view>
<view class="num" v-else>不限次</view>
</block>
</view>
<view class="action-wrap">
<view class="price">
<text class="util"></text>
{{ item.price }}
</view>
<view class="number-wrap" v-if="memberCardData.selected['item_' + item.item_id]">
<text class="iconfont iconjian" @click.stop="itemDec(memberCardData.selected['item_' + item.item_id])"></text>
<input type="number" v-model="memberCardData.selected['item_' + item.item_id].input_num" />
<text class="iconfont iconjia" @click.stop="itemInc(memberCardData.selected['item_' + item.item_id])"></text>
</view>
</view>
</view>
</view>
</view>
<view class="empty" v-else>
<image src="@/static/goods/goods_empty.png" mode="widthFix"/>
<view class="tips">暂无相关数据</view>
</view>
</scroll-view>
<view class="button-wrap">
<button type="default" class="primary-btn" :disabled="memberCardData.itemIndex == -1" @click="selectGoods()">加入购物车</button>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import uniDataCheckbox from '@/components/uni-data-checkbox/uni-data-checkbox.vue';
import UniPopup from "../uni-popup/uni-popup";
import index from './index.js';
export default {
name: 'nsMember',
components: {
UniPopup,
uniDataCheckbox
},
mixins: [index]
};
</script>
<style lang="scss" scoped>
@import './index.scss';
</style>