| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- <template>
- <view class="container">
- <view class="search-wrap" v-if="!info && type == 'member1'">
- <view class="header">会员信息</view>
- <view class="search-box">
- <view class="search-title">询问客户信息查询会员</view>
- <view class="search-content">
- <input placeholder="请输入会员信息" v-model="searchText" placeholder-style="font-size:0.16rem;color:#ACACAC;" @confirm="searchMember()" />
- <button class="primary-btn" @click="searchMember">查询</button>
- <button class="default-btn" plain="true" @click="addSwitch">录入</button>
- </view>
- <view class="search-desc">可查询会员账号、手机号、昵称、会员码(可使用扫码枪)、会员动态码</view>
- <view class="search-tips">使用扫码枪时,光标必须在输入框内,方可进行使用</view>
- </view>
- </view>
- <view class="info-wrap" v-if="info && type == 'member1'">
- <view class="header">会员信息</view>
- <view class="headimg-content">
- <view class="headimg"><image :src="info.headimg ? $util.img(info.headimg) : $util.img(defaultImg.head)" @error="info.headimg = defaultImg.head"></image></view>
- <view class="header-info">
- <view class="name">
- {{ info.nickname }}
- <text v-if="info.member_level">{{ info.member_level_name }}</text>
- </view>
- <view class="header-info-item">
- <view>电话:{{ info.mobile }}</view>
- <view>性别:{{ info.sex == 0 ? '未知' : info.sex == 1 ? '男' : '女' }}</view>
- <view>生日:{{ info.birthday ? $util.timeFormat(info.birthday, 'y-m-d') : '--' }}</view>
- <view>注册时间:{{ info.reg_time | timeFormat }}</view>
- </view>
- </view>
- </view>
- <view class="content-data">
- <view class="content-data-item">
- <view class="item-title">余额</view>
- <view class="item-value">{{ (parseFloat(info.balance_money) + parseFloat(info.balance)) | moneyFormat }}</view>
- <view class="item-btn" @click="recharge()">充值</view>
- </view>
- <view class="content-data-item">
- <view class="item-title">积分</view>
- <view class="item-value">{{ parseInt(info.point) }}</view>
- <view class="item-btn"></view>
- </view>
- <view class="content-data-item">
- <view class="item-title">优惠券(张)</view>
- <view class="item-value">{{ info.coupon_num }}</view>
- <view class="item-btn" @click="coupon()">查看</view>
- </view>
- </view>
- <view class="member-card-wrap">
- <view class="common-tab-wrap" id="tab">
- <view class="tab-item active-bar"><text class="text">会员卡项</text></view>
- <view class="active" :style="activeStyle"></view>
- </view>
- <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="$util.img('public/uniapp/cashier/card_empty.png')" mode="widthFix"></image>
- <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 class="num">{{ memberCardData.currData.total_num - memberCardData.currData.total_use_num }}</text>
- 次
- </view>
- </view>
- <scroll-view scroll-y="true" class="item-wrap">
- <view class="uni-flex" v-if="memberCardData.currData.item_list">
- <view
- class="card-item"
- :class="{
- active: memberCardData.selected['item_' + item.item_id],
- 'item-mum-1': itemNum == 1,
- 'item-mum-2': itemNum == 2,
- 'item-mum-3': itemNum == 3,
- '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 :src="$util.img(item.sku_image, { size: 'small' })" mode="widthFix"></image></view>
- <view class="info">
- <view>
- <view class="name">
- <text class="tag">{{ item.is_virtual ? '服务' : '商品' }}</text>
- {{ item.sku_name }}
- </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="operation-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="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image>
- <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 class="info-wrap" v-if="info && type == 'card'">
- <view class="header">会员卡项</view>
- <view class="headimg-content">
- <view class="headimg"><image :src="info.headimg ? $util.img(info.headimg) : $util.img(defaultImg.head)" @error="info.headimg = defaultImg.head"></image></view>
- <view class="header-info">
- <view class="name">
- {{ info.nickname }}
- <text v-if="info.member_level">{{ info.member_level_name }}</text>
- </view>
- <view class="header-info-item">
- <view>电话:{{ info.mobile }}</view>
- <view>性别:{{ info.sex == 0 ? '未知' : info.sex == 1 ? '男' : '女' }}</view>
- <view>生日:{{ info.birthday && memberInfo.birthday ? memberInfo.birthday : '--' }}</view>
- <view>注册时间:{{ info.reg_time | timeFormat }}</view>
- </view>
- </view>
- </view>
- <view class="member-card-wrap">
- <view class="common-tab-wrap" id="tab">
- <view class="tab-item active-bar"><text class="text">会员卡项</text></view>
- <view class="active" :style="activeStyle"></view>
- </view>
- <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="$util.img('public/uniapp/cashier/card_empty.png')" mode="widthFix"></image>
- <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 class="num">{{ memberCardData.currData.total_num - memberCardData.currData.total_use_num }}</text>
- 次
- </view>
- </view>
- <scroll-view scroll-y="true" class="item-wrap">
- <view class="uni-flex" v-if="memberCardData.currData.item_list">
- <view
- class="card-item"
- :class="{
- active: memberCardData.selected['item_' + item.item_id],
- 'item-mum-1': itemNum == 1,
- 'item-mum-2': itemNum == 2,
- 'item-mum-3': itemNum == 3,
- '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 :src="$util.img(item.sku_image, { size: 'small' })" mode="widthFix"></image></view>
- <view class="info">
- <view>
- <view class="name">
- <text class="tag">{{ item.is_virtual ? '服务' : '商品' }}</text>
- {{ item.sku_name }}
- </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="operation-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="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image>
- <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 class="coupon-box" v-if="info && type == 'coupon'">
- <i class="iconguanbi1 iconfont " @click="type = 'member'"></i>
- <view class="content-list">
- <view class="content-item" v-for="(item, index) in memberCoupon" v-if="memberCoupon.length > 0">
- <view class="item-title">{{ item.coupon_name }}</view>
- <view class="item-content" v-if="item.type == 'reward' || item.type == 'random'">
- <text>¥</text>
- {{ item.money }}
- </view>
- <view class="item-content" v-if="item.type == 'discount'">
- {{ item.discount }}
- <text>折</text>
- </view>
- <view class="item-line"></view>
- <view class="item-bottom">
- <view class="item-desc" v-if="item.type == 'reward' || item.type == 'random'">满{{ item.at_least }}可用</view>
- <view class="item-desc" v-if="item.type == 'discount'">满{{ item.at_least }}可用,最多优惠{{ item.discount_limit }}元</view>
- <view class="item-time">{{ $util.timeFormat(item.start_time) }}至{{ $util.timeFormat(item.end_time) }}</view>
- </view>
- </view>
- <view class="empty" v-if="memberCoupon.length == 0">
- <image :src="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image>
- <view class="tips">暂无优惠券</view>
- </view>
- </view>
- </view>
- <view class="coupon-box" v-if="info && type == 'hongbao'">
- <text class="iconguanbi1 iconfont " @click="type = 'member'"></text>
- <view class="content-list">
- <view class="content-item" v-for="(item, index) in memberHongbao" v-if="memberHongbao.length > 0">
- <view class="item-title">{{ item.name }}</view>
- <view class="item-content">
- <text>¥</text>
- {{ item.money }}
- </view>
- <view class="item-line"></view>
- <view class="item-bottom">
- <view class="item-time">{{ $util.timeFormat(item.start_time) }}至{{ $util.timeFormat(item.end_time) }}</view>
- </view>
- </view>
- <view class="empty" v-if="memberHongbao.length == 0">
- <image :src="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image>
- <view class="tips">暂无红包</view>
- </view>
- </view>
- </view>
- <!-- 录入会员 -->
- <view class="form-box" v-if="!info && type == 'addmember'">
- <view class="header">录入会员</view>
- <view class="form-content">
- <view>
- <view class="form-item">
- <view class="form-label">
- <text class="required">*</text>
- 手机号:
- </view>
- <view class="form-inline search-wrap"><input type="number" class="form-input" v-model="memberData.mobile" placeholder="请输入会员手机号" /></view>
- </view>
- <view class="form-item">
- <view class="form-label">
- <text class="required"></text>
- 会员名称:
- </view>
- <view class="form-inline search-wrap"><input type="text" class="form-input" v-model="memberData.nickname" placeholder="请输入会员昵称" /></view>
- </view>
- <view class="form-item">
- <view class="form-label">
- <text class="required"></text>
- 性别:
- </view>
- <view class="form-inline search-wrap"><uni-data-checkbox v-model="memberData.sex" selectedColor="#8558FA" :localdata="sex"></uni-data-checkbox></view>
- </view>
- <view class="form-item">
- <view class="form-label">
- <text class="required"></text>
- 生日:
- </view>
- <view class="form-inline">
- <uni-datetime-picker :start="startDate" v-model="memberData.birthday" type="date" :clearIcon="false" @change="changeTime" />
- </view>
- </view>
- <view class="form-item">
- <view class="form-label">
- <text class="required"></text>
- 会员等级:
- </view>
- <view class="form-inline">
- <select-lay
- :zindex="10"
- :value="memberData.member_level"
- name="names"
- placeholder="请选择会员等级"
- :options="memberLevelList"
- @selectitem="selectMemberLevel"
- ></select-lay>
- </view>
- </view>
- </view>
- <view class="form-item">
- <view class="form-label"></view>
- <view class="form-inline">
- <button type="primary" class="primary-btn" @click="addMember">确定录入</button>
- <button type="primary" class="default-btn" @click="type = 'member'">返回搜索</button>
- </view>
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- import uniDataCheckbox from '@/components/uni-data-checkbox/uni-data-checkbox.vue';
- import ncMember from './nc-member.js';
- export default {
- components: {
- uniDataCheckbox
- },
- name: 'ncMember',
- props: {},
- mixins: [ncMember],
- computed: {
- info() {
- if (this.memberInfo) this.type = 'card';
- return this.memberInfo;
- }
- },
- watch: {
- info: function(nVal, oVal) {
- if ((nVal && !oVal) || (nVal && oVal && nVal.member_id != oVal.member_id) || !nVal) {
- this.memberCardData.page = 0;
- this.memberCardData.index = 0;
- this.memberCardData.list = [];
- this.memberCardData.currData = {};
- this.memberCardData.selected = {};
- if (nVal) this.getMemberCard();
- }
- }
- }
- };
- </script>
- <style lang="scss">
- @import './nc-member.scss';
- </style>
|