Browse Source

add ym card

organize
刘嘉炜 4 years ago
parent
commit
b7fbd5d5cd
  1. 2
      src/pages/order_list/order_list.vue
  2. 4
      src/subpackage/order/js/api.js
  3. 142
      src/subpackage/order/pages/ym_card/detail/detail.vue
  4. 59
      src/subpackage/order/pages/ym_card/use_record/use_record.vue
  5. BIN
      src/subpackage/order/static/images/ym_card/status_1.png
  6. BIN
      src/subpackage/order/static/images/ym_card/status_2.png
  7. BIN
      src/subpackage/order/static/images/ym_card/status_3.png

2
src/pages/order_list/order_list.vue

@ -579,7 +579,7 @@
case 8: // status 1,2,4 1 2 退4 5
return [ {id: '1,2,4', name: '全部'}, {id: 1, name: '租用中'}, {id: 2, name: '已完成'}, {id: 4, name: '已退款'},{id: 5, name: '已购买'}];
case 19: // status 0,1,2,3 0 使 1 2 退 3
return [ {id: '0,1,2,3', name: '全部'}, {id: 0, name: '待激活'}, {id: 1, name: '使用中'}, {id: 2, name: '已失效'},{id: 3, name: '已退卡'}];
return [ {id: '', name: '全部'}, {id: 0, name: '待激活'}, {id: 1, name: '使用中'}, {id: 2, name: '已失效'},{id: 3, name: '已退卡'}];
default:
return []
}

4
src/subpackage/order/js/api.js

@ -24,6 +24,10 @@ export const ORDER_API = {
rentballOrderEnd:`${ORIGIN}/admin/assistant/rentball/order/end`, // 租球机-结束计费
leaseOrderEnd:`${ORIGIN}/admin/stadium/leaseOrder/endBill`, // 租售柜-结束计费
userMonthlyCardInfo:`${ORIGIN}/admin/userMonthlyCard/get`, // 详情用户年月卡-后台
ymCardInfoFace:`${ORIGIN}/upload/file/ym_card_face`, // 年月卡用户头像上传
ymCardInfoFaceSave:`${ORIGIN}/admin/userMonthlyCard/updateFace`, // 年月卡用户头像保存
ymCardUsage:`${ORIGIN}/admin/userMonthlyCard/usages`, // 用户年月卡使用记录-后台
}
export default ORDER_API;

142
src/subpackage/order/pages/ym_card/detail/detail.vue

@ -2,47 +2,49 @@
<view class="ym-card-info">
<view class="yci-main">
<view class="yci-box ym-card-info">
<view class="yci-stadium-name">欧轩智能场馆(羽毛球永泰店)</view>
<view class="yci-stadium-name">{{ orderInfo.extension.name || '-' }}</view>
<view class="yci-line">
<view>年月卡名称年卡</view>
<view>年月卡卡号124646</view>
<view>有效期2022.08.28</view>
<view>年月卡名称{{ orderInfo.card_info.name || '-' }}</view>
<view>年月卡卡号{{ orderInfo.card_no || '-' }}</view>
<view>有效期{{ orderInfo.expired_at || '-' }}</view>
</view>
<view class="yci-btn">
<view>使用记录</view>
<view @click="toRecord">使用记录</view>
</view>
<view class="yci-status-tag">
<image mode="aspectFit" :src="getTagImgPath(orderInfo.status)"></image>
</view>
<view class="yci-status-tag"></view>
</view>
<view class="yci-box ym-user">
<view class="yci-tit">持卡人信息</view>
<a-line :value="'18316567789' || '-'">
<a-line :value="orderInfo.mobile || '-'">
<block slot="name">手机号码</block>
</a-line>
<a-line :value="'yiming' || '-'">
<a-line :value="orderInfo.nickname || '-'">
<block slot="name">用户昵称</block>
</a-line>
<view class="yu-line">照片<text>更改照片</text></view>
<image class="yu-img"></image>
<view class="yu-line">照片<text @click="changeFaceImgBtn">更改照片</text></view>
<image class="yu-img" mode="aspectFit" :src="orderInfo.user_face"></image>
</view>
<view class="yci-box yci-buy-info">
<view class="yci-box yci-buy-info" v-if="orderInfo.status == 1 || orderInfo.status == 2 || orderInfo.status == 3">
<view class="yci-tit">购卡信息</view>
<view class="ybi-name">年月卡名称年卡</view>
<s-line :keyname="'金额小计'" :value="'¥' + (orderInfo.coupons_amount || '0')"></s-line>
<s-line :keyname="'积分抵扣'" :value="'¥' + (orderInfo.coupons_amount || '0')"></s-line>
<s-line :keyname="'折扣金额'" :value="'¥' + (orderInfo.coupons_amount || '0')"></s-line>
<s-line :keyname="'优惠券优惠'" :value="'¥' + (orderInfo.coupons_amount || '0')"></s-line>
<view class="ybi-total"><text>合计支付</text>5</view>
<view class="ybi-name">年月卡名称{{ orderInfo.card_info.name || '-' }}</view>
<s-line :keyname="'金额小计'" :value="'¥' + (orderInfo.extension.amount || '0')"></s-line>
<s-line :keyname="'积分抵扣'" :value="'¥' + (orderInfo.extension.deduction_amount|| '0')"></s-line>
<s-line :keyname="'折扣金额'" :value="'¥' + (orderInfo.extension.discount_amount || '0')"></s-line>
<s-line :keyname="'优惠券优惠'" :value="'¥' + (orderInfo.extension.coupons_amount || '0')"></s-line>
<view class="ybi-total"><text>合计支付</text> {{ orderInfo.extension.pay_amount || '0' }}</view>
</view>
<view class="yci-box yci-pay-info">
<view class="yci-box yci-pay-info" v-if="orderInfo.status == 1 || orderInfo.status == 2 || orderInfo.status == 3">
<view class="yci-tit">支付信息</view>
<p-line :keyname="'订单编号'" :value="orderInfo.created_at || '-'" ></p-line>
<p-line :keyname="'支付方式'" :value="orderInfo.created_at || '-'" ></p-line>
<p-line :keyname="'支付时间'" :value="orderInfo.created_at || '-'" ></p-line>
<p-line :keyname="'微信交易号'" :value="orderInfo.created_at || '-'" ></p-line>
<p-line :keyname="'创建途径'" :value="orderInfo.created_at || '-'" ></p-line>
<p-line :keyname="'订单编号'" :value="orderInfo.order_no || '-'" ></p-line>
<p-line :keyname="'支付方式'" :value="orderInfo.extension.pay_type_text || '-'" ></p-line>
<p-line :keyname="'支付时间'" :value="orderInfo.extension.pay_time || '-'" ></p-line>
<p-line :keyname="'微信交易号'" :value="orderInfo.extension.trade_no || '-'" ></p-line>
<p-line :keyname="'创建途径'" :value="orderInfo.source || '-'" ></p-line>
</view>
</view>
@ -65,26 +67,103 @@ export default {
},
data(){
return {
orderInfo: {}
orderInfo: {
card_info: {},
extension: {}
},
optionsQuery: {},
}
},
onLoad(options){
this.getCardInfo({
id: options.id,
card_no: options.card_no
})
});
this.optionsQuery = options || {};
},
methods: {
changeFaceImgBtn(){
uni.chooseImage({
count: 1,
success: imgRes =>{
this.upLoadImg(imgRes || {});
},
failMsg: imgErr => {
console.warn('chooseImage err --->' , imgErr);
util.showNone('选择图片失败!');
}
})
},
upLoadImg(imgRes){
util.showLoad();
server.uploadFile({
url: ORDER_API.ymCardInfoFace,
filePath: imgRes.tempFilePaths[0] || '',
})
.then(e=>{
util.hideLoad();
let _res = util.jsonPar(e.data);
if(_res.code == 0){
let _url = _res.data.url || '';
this.saveFaceImg(_url);
}else{
console.error('上传图片失败--->',_res);
util.showNone(_res.message || '上传图片失败,请重试!')
}
})
.catch(err=>{
util.hideLoad();
console.error('上传图片失败--->',err);
util.showNone('上传图片失败,稍后重试!')
})
},
saveFaceImg(faceUrl){
let { optionsQuery } = this;
util.showLoad();
server.post({
url: ORDER_API.ymCardInfoFaceSave,
data: {
card_no: optionsQuery.card_no,
face: faceUrl,
},
isDefaultGet: false,
})
.then(res=>{
util.hideLoad();
if(res.data.code == 0){
util.showNone(res.data.message || '操作成功!');
let { optionsQuery } = this;
setTimeout(_=>{
this.getCardInfo({
id: optionsQuery.id,
card_no: optionsQuery.card_no
});
}, 1200);
}else{
util.showNone(res.data.message || '操作失败!');
}
})
},
getTagImgPath(status){
if(!status)return ''
return `/subpackage/order/static/images/ym_card/status_${status}.png`
},
getCardInfo({id, card_no}){
util.showLoad();
server.get({
url: ORDER_API.userMonthlyCardInfo,
data: { id, card_no },
failMsg: '加载失败!'
})
.then(res=>{
util.hideLoad();
this.orderInfo = res || {};
})
}
},
toRecord(){
let { optionsQuery } = this;
util.routeTo(`/subpackage/order/pages/ym_card/use_record/use_record?card_no=${optionsQuery.card_no}`, 'nT');
},
}
}
</script>
@ -144,10 +223,14 @@ export default {
position: absolute;
right: 0;
top: 0;
width: 66upx;
height: 66upx;
background-color: skyblue;
width: 132upx;
height: 132upx;
overflow: hidden;
border-top-right-radius: 10upx;
>image{
width: 100%;
height: 100%;
}
}
}
.ym-user{
@ -166,7 +249,6 @@ export default {
width: 218upx;
height: 218upx;
border-radius: 10upx;
background-color: skyblue;
}
}

59
src/subpackage/order/pages/ym_card/use_record/use_record.vue

@ -1,15 +1,15 @@
<template>
<view class="use-record">
<view class="ur-list">
<view class="ul-item" v-for="i in 10" :key="i">
<view class="ul-item" v-for="(e, i) in recordLs" :key="i">
<view class="ui-header">
<image class="uh-img"></image>
<view>欧轩智能场馆(永泰店)</view>
<image class="uh-img" mode="aspectFit" :src="e.stadium_logo"></image>
<view>{{ e.stadium_name || '-' }}</view>
</view>
<view class="uh-lines">
<view><text>验证方式</text>扫码器验证欧轩门闸</view>
<view><text>核销时间</text>2019-05-17 11:12:58</view>
<view><text>离场时间</text>2019-05-17 11:12:58</view>
<view><text>验证方式</text>{{ e.verify_type || '-' }}</view>
<view><text>核销时间</text>{{ e.verify_time || '-' }}</view>
<view><text>离场时间</text>{{ e.leave_time || '-' }}</view>
</view>
</view>
</view>
@ -17,8 +17,52 @@
</template>
<script>
import util from '../../../../../utils/util';
import { ORDER_API } from '../../../js/api';
import server from '../../../js/server';
export default {
data(){
return {
recordLs: [],
page: 1,
card_no: '',
}
},
onLoad(options){
this.card_no = options.card_no || '';
this.getRecordLs({
card_no: options.card_no,
});
},
onReachBottom(){
let { card_no, page } = this;
this.getRecordLs({
card_no: card_no,
page: ++page,
})
},
methods: {
getRecordLs({
card_no,
page = 1,
page_size = 15
}){
util.showLoad();
server.get({
url: ORDER_API.ymCardUsage,
data: { card_no, page_size, page },
failMsg: '加载失败!'
})
.then(res=>{
util.hideLoad();
let _ls = res.list || [];
if(page == 1)return this.recordLs = _ls;
if(!_ls.length)return util.showNone('没有更多!');
this.page = page;
this.recordLs = [...this.recordLs, ..._ls];
})
},
}
}
</script>
@ -40,7 +84,6 @@ export default {
margin-right: 10upx;
width: 30upx;
height: 30upx;
background-color: skyblue;
}
>view{
flex-grow: 1;

BIN
src/subpackage/order/static/images/ym_card/status_1.png

After

Width: 132  |  Height: 132  |  Size: 13 KiB

BIN
src/subpackage/order/static/images/ym_card/status_2.png

After

Width: 132  |  Height: 132  |  Size: 2.0 KiB

BIN
src/subpackage/order/static/images/ym_card/status_3.png

After

Width: 132  |  Height: 132  |  Size: 2.1 KiB

Loading…
Cancel
Save