You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
274 lines
10 KiB
274 lines
10 KiB
<template>
|
|
<view class="card-detail">
|
|
<view class="cd-box cb-card">
|
|
<view class="cc-stadium">
|
|
<view class="cs-txt">{{ water_card.stadium_name || '' }}</view>
|
|
</view>
|
|
<view class="cc-lines">
|
|
<kv-line label-style="color: #1A1A1A;" label="水阀卡卡号:">{{ water_card.water_card_no || '' }}</kv-line>
|
|
<kv-line label-style="color: #1A1A1A;" label="手机号码:">{{ water_card.mobile || '' }}</kv-line>
|
|
<kv-line label-style="color: #1A1A1A;" label="微信昵称:">{{ water_card.nick_name || '' }}</kv-line>
|
|
<kv-line label-style="color: #1A1A1A;font-weitht: 500;" label="可用时长:"><text class="cl-orange">{{ water_card.valid_duration_text || '' }}</text></kv-line>
|
|
</view>
|
|
<view class="cc-btns">
|
|
<view class="cb-item" @click="toRecords">消费记录</view>
|
|
<view class="cb-item red" @click="deductionBtn">扣费</view>
|
|
<view class="cb-item orange" @click="rechargeBtn">充值</view>
|
|
</view>
|
|
</view>
|
|
<view class="cd-box cd-record">
|
|
<view class="cr-tit">购卡记录</view>
|
|
<view class="cr-time">购卡 {{ water_card_order.pay_time || '-' }}</view>
|
|
<view class="cr-lines">
|
|
<kv-line label="名称:">{{ water_card.water_card_name || '-' }}</kv-line>
|
|
<kv-line label="时长:">{{ water_card_order.duration_text || '-' }}</kv-line>
|
|
<kv-line label="售价:">¥{{ water_card_order.amount || '0' }}</kv-line>
|
|
<kv-line label="支付金额:">¥{{ water_card_order.pay_amount || '0' }}</kv-line>
|
|
<kv-line label="途径:">{{ water_card.resource_text || '-' }}</kv-line>
|
|
</view>
|
|
</view>
|
|
|
|
<recharge-popup ref="rechangePopup"></recharge-popup>
|
|
<deduction-popup ref="deductionPopup"></deduction-popup>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import kv_line from "@/components/kv_line.vue";
|
|
import rechargePopup from "../../components/popup/recharge.vue";
|
|
import deductionPopup from "../../components/popup/deduction.vue";
|
|
|
|
import { SHOWER_API } from "../../js/api";
|
|
import server from "../../js/server";
|
|
import { routeTo, showLoad, hideLoad, showNone, formatDate, jsonStr, showModal } from "@/utils/util";
|
|
export default {
|
|
components: {
|
|
'kv-line': kv_line,
|
|
'recharge-popup': rechargePopup,
|
|
'deduction-popup': deductionPopup
|
|
},
|
|
computed: {
|
|
water_card(){
|
|
let { cardInfo } = this;
|
|
return cardInfo?.water_card || {};
|
|
},
|
|
water_card_order(){
|
|
let { cardInfo } = this;
|
|
return cardInfo?.water_card_order || {};
|
|
}
|
|
},
|
|
data(){
|
|
return {
|
|
cardInfo: {}
|
|
}
|
|
},
|
|
onLoad(options){
|
|
let { id, brand_id } = options;
|
|
this.getCardInfo({ id, brand_id });
|
|
},
|
|
methods: {
|
|
rechargeBtn(){
|
|
let { water_card } = this;
|
|
this.$refs.rechangePopup.init({
|
|
water_card_no: water_card?.water_card_no || '',
|
|
mobile: water_card?.mobile || '',
|
|
valid_duration_text: water_card?.valid_duration_text || '',
|
|
success: rData => {
|
|
let _query = {
|
|
type: 5,
|
|
brand_id: water_card?.brand_id || '',
|
|
amount: rData?.pay_amount || 0,
|
|
stadiumInfo: {
|
|
id: water_card?.stadium_id || '',
|
|
name: water_card?.stadium_name || '',
|
|
logo: water_card?.stadium_logo || '',
|
|
},
|
|
};
|
|
uni.navigateTo({
|
|
url: `/subpackage/common/pages/pay_type_select?query=${jsonStr(_query)}`,
|
|
events: { payConfirm: pData => this.rechargePayConfirm({ rData, pData }) },
|
|
})
|
|
}
|
|
});
|
|
},
|
|
async rechargePayConfirm({ rData, pData }){
|
|
let { water_card } = this;
|
|
let _reqData = {
|
|
brand_id: water_card?.brand_id || '',
|
|
stadium_id: water_card?.stadium_id || '',
|
|
water_card_no: water_card?.water_card_no || '',
|
|
duration: rData?.duration || 0,
|
|
mobile: water_card?.mobile || '',
|
|
pay_type: this.getTextForType(pData?.payTypeName || ''),
|
|
pay_amount: pData?.amount || 0,
|
|
// 后端:都要传,,,(我也不知道什么原因
|
|
card_no: pData?.selectedCardNo || '',
|
|
order_no: pData?.selectedCardNo || ''
|
|
}
|
|
let _rechargeRes = await this.rechargePayReq(_reqData);
|
|
if(_rechargeRes === 'SUCCESS'){
|
|
setTimeout(_=>{
|
|
this.getCardInfo({ id: water_card?.id, brand_id: water_card?.brand_id });
|
|
}, 1200)
|
|
}
|
|
},
|
|
rechargePayReq(data){
|
|
showLoad();
|
|
return server.post({
|
|
url: SHOWER_API.CardRecharge,
|
|
data,
|
|
isDefaultGet: false,
|
|
})
|
|
.then(res => {
|
|
hideLoad();
|
|
let _data = res?.data || {};
|
|
if(_data.code === 0){
|
|
showModal({
|
|
title: '提示',
|
|
content: _data.message || '操作成功!'
|
|
})
|
|
return "SUCCESS";
|
|
// this.initData?.success?.('SUCCESS');
|
|
}else{
|
|
return Promise.reject(_data);
|
|
}
|
|
|
|
})
|
|
.catch(err => {
|
|
hideLoad();
|
|
showModal({
|
|
title: '提示',
|
|
content: err.message || '操作失败!'
|
|
})
|
|
console.warn('deduction deductionReq err --->', err);
|
|
})
|
|
},
|
|
|
|
// // 0: 微信支付 1: 支付宝支付 2: 储值卡支付 3:商家主动 4:押金抵扣 5:任务奖品 6:抖音团购兑换 7:付款码支付
|
|
getTextForType(payTxt){
|
|
switch(payTxt){
|
|
case '微信支付': return 0;
|
|
case '支付宝支付': return 1;
|
|
case '储值卡支付': return 2;
|
|
case '商家主动': return 3;
|
|
case '押金抵扣': return 4;
|
|
case '任务奖品': return 5;
|
|
case '抖音团购兑换': return 6;
|
|
case '付款码支付': return 7;
|
|
default: return 8;
|
|
}
|
|
},
|
|
deductionBtn(){
|
|
let { water_card } = this;
|
|
this.$refs.deductionPopup.init({
|
|
water_card_no: water_card?.water_card_no || '',
|
|
mobile: water_card?.mobile || '',
|
|
valid_duration_text: water_card?.valid_duration_text || '',
|
|
valid_duration: water_card?.valid_duration || '',
|
|
// 扣减提交参数
|
|
brand_id: water_card?.brand_id || '',
|
|
stadium_id: water_card?.stadium_id || '',
|
|
|
|
success: () => {
|
|
this.getCardInfo({ id: water_card?.id, brand_id: water_card?.brand_id });
|
|
}
|
|
});
|
|
},
|
|
toRecords(){
|
|
let { water_card } = this;
|
|
let _qryStr = `brand_id=${water_card?.brand_id || ''}&water_card_no=${water_card?.water_card_no || ''}`;
|
|
routeTo(`/subpackage/shower/pages/card/use_record?${_qryStr}`, 'nT');
|
|
},
|
|
getCardInfo({
|
|
id = '', brand_id = ''
|
|
}){
|
|
showLoad();
|
|
return server.get({
|
|
url: SHOWER_API.CardDetails,
|
|
data: { brand_id, id },
|
|
failMsg: '获取用水卡信息失败'
|
|
})
|
|
.then(res => {
|
|
hideLoad();
|
|
this.cardInfo = res || {};
|
|
|
|
})
|
|
.catch(err => {
|
|
hideLoad();
|
|
console.warn('card detail getCardInfo err --->', err);
|
|
// return Promise.reject(err);
|
|
})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.card-detail{
|
|
padding: 24upx;
|
|
@include isPd(24upx);
|
|
.cd-box{
|
|
position: relative;
|
|
padding: 30upx;
|
|
background: #fff;
|
|
border-radius: 10upx;
|
|
&+.cd-box{
|
|
margin-top: 24upx;
|
|
}
|
|
}
|
|
.cb-card{
|
|
.cc-stadium{
|
|
.cs-txt{
|
|
@include flcw(28upx, 40upx, #333333, 500);
|
|
@include tHide;
|
|
}
|
|
&::after{
|
|
content: '';
|
|
display: block;
|
|
margin-top: 26upx;
|
|
height: 1px;
|
|
background: #D8D8D8;
|
|
}
|
|
}
|
|
.cc-lines{
|
|
padding-top: 20upx;
|
|
.cl-orange{
|
|
color: #FF873D;
|
|
font-weight: 500;
|
|
}
|
|
}
|
|
.cc-btns{
|
|
margin-top: 30upx;
|
|
@include ctf;
|
|
.cb-item{
|
|
width: 176upx;
|
|
text-align: center;
|
|
border: 2upx solid #9A9A9D;
|
|
border-radius: 10upx;
|
|
@include flcw(32upx, 76upx, #9a9a9d, 500);
|
|
&.red{
|
|
color: #EA5061;
|
|
border-color: #EA5061;
|
|
}
|
|
&.orange{
|
|
color: #FF873D;
|
|
border-color: #FF873D;
|
|
}
|
|
&+.cb-item{
|
|
margin-left: 58upx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.cd-record{
|
|
.cr-tit{
|
|
@include flcw(28upx, 40upx, #9C9C9F);
|
|
}
|
|
.cr-time{
|
|
margin-top: 20upx;
|
|
@include flcw(28upx, 52upx, #1A1A1A, 500);
|
|
}
|
|
}
|
|
|
|
}
|
|
</style>
|