init
This commit is contained in:
577
fuintUniapp/pages/settlement/goods.vue
Normal file
577
fuintUniapp/pages/settlement/goods.vue
Normal file
@@ -0,0 +1,577 @@
|
||||
<template>
|
||||
<view class="container p-bottom">
|
||||
<view class="flow-mode">
|
||||
<selectSwitch :switchList="orderModeList" checked_bj_color="#00acac" @change="switchMode"/>
|
||||
</view>
|
||||
<!-- 快递配送:配送地址 -->
|
||||
<view @click="onSelectAddress" v-if="orderMode == false" class="flow-delivery">
|
||||
<view class="flow-delivery__detail dis-flex flex-y-center">
|
||||
<view class="detail-location dis-flex">
|
||||
<text class="iconfont icon-dingwei"></text>
|
||||
</view>
|
||||
<view class="detail-content flex-box">
|
||||
<block v-if="address">
|
||||
<view class="detail-content__title dis-flex">
|
||||
<text class="f-30">{{ address.name }}</text>
|
||||
<text class="detail-content__title-phone f-28">{{ address.mobile }}</text>
|
||||
</view>
|
||||
<view class="address-info detail-content__describe">
|
||||
<text class="region">{{ address.provinceName }}{{ address.cityName }}{{ address.regionName }}</text>
|
||||
<text class="detail">{{ address.detail }}</text>
|
||||
<text class="icon"> » </text>
|
||||
</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="detail-content__describe dis-flex select-address">
|
||||
<text class="col-6">请选择配送地址 <text class="icon"> > </text></text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="detail-arrow dis-flex">
|
||||
<text class="iconfont icon-arrow-right"></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 门店自提:自提地址 -->
|
||||
<view v-if="orderMode == true" class="flow-delivery">
|
||||
<view class="flow-delivery__detail dis-flex flex-y-center">
|
||||
<view class="detail-location dis-flex">
|
||||
<text class="iconfont icon-dingwei"></text>
|
||||
</view>
|
||||
<view class="detail-content flex-box">
|
||||
<block>
|
||||
<view class="store">
|
||||
<view class="f-30 store-name">{{ storeInfo ? storeInfo.name : '' }}</view>
|
||||
<view class="f-30 store-phone">{{ storeInfo ? storeInfo.phone : '' }}</view>
|
||||
<text class="f-30 store-address">{{ storeInfo ? storeInfo.address : '' }}</text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="detail-arrow dis-flex">
|
||||
<text class="iconfont icon-arrow-right"></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 商品列表 -->
|
||||
<view class="m-top20">
|
||||
<view v-for="(item, index) in goodsCart" :key="index" class="checkout_list">
|
||||
<view class="flow-shopList dis-flex">
|
||||
<!-- 商品图片 -->
|
||||
<view class="flow-list-left">
|
||||
<image mode="scaleToFill" :src="item.goodsInfo.logo"></image>
|
||||
</view>
|
||||
<view class="flow-list-right flex-box">
|
||||
<!-- 商品名称 -->
|
||||
<text class="goods-name twolist-hidden">{{ item.goodsInfo.name }}</text>
|
||||
|
||||
<!-- 商品规格 -->
|
||||
<view class="goods-props clearfix">
|
||||
<view class="goods-props-item" v-for="(props, idx) in item.specList" :key="idx">
|
||||
<text class="group-name">{{ props.specName }}: </text>
|
||||
<text>{{ props.specValue }};</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 商品数量和单价 -->
|
||||
<view class="flow-list-cont dis-flex flex-x-between flex-y-center">
|
||||
<text class="small"> x {{ item.num }} </text>
|
||||
<text class="flow-cont">¥{{ item.goodsInfo.price }} </text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flow-num-box b-f">
|
||||
<text>共{{ totalNum }}件,合计:</text>
|
||||
<text class="flow-money col-m">¥{{ totalPrice }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 订单折扣 -->
|
||||
<view class="flow-all-money b-f m-top20">
|
||||
<view class="detail-title">费用明细</view>
|
||||
<!-- 卡券 -->
|
||||
<view class="flow-all-list dis-flex">
|
||||
<text class="flex-five">使用卡券抵扣:</text>
|
||||
<view class="flex-five t-r">
|
||||
<view v-if="couponList.length > 0" @click="handleShowPopup()">
|
||||
<text class="col-m" v-if="useCouponInfo">-¥{{ useCouponInfo.amount }}</text>
|
||||
<text class="col-m" v-else>共有卡券{{ couponList.length }}张</text>
|
||||
<text class="right-arrow iconfont icon-arrow-right"></text>
|
||||
</view>
|
||||
<text v-else>无卡券可用</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 积分抵扣 -->
|
||||
<view class="points flow-all-list dis-flex flex-y-center" v-if="usePoint > 0">
|
||||
<view class="block-left flex-five" @click="handleShowPoints()">
|
||||
<text class="title">使用{{ usePoint }}积分抵扣:</text>
|
||||
<text class="iconfont icon-help"></text>
|
||||
</view>
|
||||
<view class="flex-five dis-flex flex-x-end flex-y-center">
|
||||
<text class="points-money col-m">-¥{{ usePointAmount }}</text>
|
||||
<u-switch v-model="isUsePoints" size="48" active-color="#00acac" @change="getCartList()"></u-switch>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 会员折扣 -->
|
||||
<view class="points flow-all-list dis-flex flex-y-center">
|
||||
<view class="block-left flex-five">
|
||||
<text class="title">会员支付折扣:</text>
|
||||
</view>
|
||||
<view class="flex-five dis-flex flex-x-end flex-y-center">
|
||||
<text>{{ (memberDiscount < 10 && memberDiscount > 0) ? memberDiscount : '无折扣' }}折</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 运费 -->
|
||||
<view class="points flow-all-list dis-flex flex-y-center" v-if="deliveryFee > 0 && orderMode == false">
|
||||
<view class="block-left flex-five">
|
||||
<text class="title">配送费用:</text>
|
||||
</view>
|
||||
<view class="flex-five dis-flex flex-x-end flex-y-center">
|
||||
<text class="points-money col-m">¥{{ deliveryFee }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 支付方式 -->
|
||||
<view class="pay-method flow-all-money b-f m-top20">
|
||||
<view class="flow-all-list dis-flex">
|
||||
<text class="flex-five">支付方式</text>
|
||||
</view>
|
||||
<!-- 微信支付 -->
|
||||
<view class="pay-item dis-flex flex-x-between" @click="handleSelectPayType(PayTypeEnum.WECHAT.value)">
|
||||
<view class="item-left dis-flex flex-y-center">
|
||||
<view class="item-left_icon wechat">
|
||||
<text class="iconfont icon-weixinzhifu"></text>
|
||||
</view>
|
||||
<view class="item-left_text">
|
||||
<text>{{ PayTypeEnum.WECHAT.name }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item-right col-m" v-if="curPayType == PayTypeEnum.WECHAT.value">
|
||||
<text class="iconfont icon-duihao"></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 买家留言 -->
|
||||
<view class="flow-all-money b-f m-top20">
|
||||
<view class="ipt-wrapper">
|
||||
<textarea v-model="remark" rows="3" maxlength=100 placeholder="买家留言 (选填,100字以内)" type="text"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 提交订单 -->
|
||||
<view class="flow-fixed-footer b-f m-top10">
|
||||
<view class="dis-flex chackout-box">
|
||||
<view class="chackout-left pl-12">
|
||||
<view class="col-amount-do">支付金额:
|
||||
<text class="pay-amount">¥{{ payPrice ? payPrice.toFixed(2) : '0.00' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="chackout-right" @click="onSubmitOrder()">
|
||||
<view class="flow-btn f-32" :class="{ disabled }">提交订单</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 积分说明弹窗 -->
|
||||
<u-modal v-model="showPoints" :title="`积分说明`">
|
||||
<scroll-view class="points-content" :scroll-y="true">
|
||||
<text>积分兑换金额</text>
|
||||
</scroll-view>
|
||||
</u-modal>
|
||||
|
||||
<!-- 卡券弹出框 -->
|
||||
<u-popup v-model="showPopup" mode="bottom">
|
||||
<view class="popup__coupon">
|
||||
<view class="coupon__title f-30">选择卡券</view>
|
||||
<!-- 卡券列表 -->
|
||||
<view class="coupon-list">
|
||||
<scroll-view :scroll-y="true" style="height: 565rpx;">
|
||||
<view class="coupon-item" v-for="(item, index) in couponList" :key="index">
|
||||
<view class="item-wrapper"
|
||||
:class="[item.status == 'A' ? 'color-default': 'color-gray']"
|
||||
@click="handleSelectCoupon(index)">
|
||||
<view class="coupon-type">{{ item.type }}</view>
|
||||
<view class="tip dis-flex flex-dir-column flex-x-center">
|
||||
<text class="money">¥{{ item.amount }}</text>
|
||||
<text class="pay-line">{{ item.description }}</text>
|
||||
</view>
|
||||
<view class="split-line"></view>
|
||||
<view class="content dis-flex flex-dir-column flex-x-between">
|
||||
<view class="title">{{ item.name }}</view>
|
||||
<view class="bottom dis-flex flex-y-center">
|
||||
<view class="time flex-box">
|
||||
<block>{{ item.effectiveDate }}</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<!-- 不使用卡券 -->
|
||||
<view class="coupon__do_not dis-flex flex-y-center flex-x-center">
|
||||
<view class="control dis-flex flex-y-center flex-x-center" @click="handleNotUseCoupon()">
|
||||
<text class="f-26">不使用卡券</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<!-- 支付方式弹窗 -->
|
||||
<u-popup v-model="showPayPopup" mode="bottom" :closeable="true">
|
||||
<view class="pay-type-popup">
|
||||
<view class="title">请选择支付方式</view>
|
||||
<view class="pop-content">
|
||||
<!-- 微信支付 -->
|
||||
<view class="pay-item dis-flex flex-x-between" @click="doSubmitOrder(PayTypeEnum.WECHAT.value)">
|
||||
<view class="item-left dis-flex flex-y-center">
|
||||
<view class="item-left_icon wechat">
|
||||
<text class="iconfont icon-weixinzhifu"></text>
|
||||
</view>
|
||||
<view class="item-left_text">
|
||||
<text>{{ PayTypeEnum.WECHAT.name }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 余额支付 -->
|
||||
<view class="pay-item dis-flex flex-x-between" @click="doSubmitOrder(PayTypeEnum.BALANCE.value)">
|
||||
<view class="item-left dis-flex flex-y-center">
|
||||
<view class="item-left_icon balance">
|
||||
<text class="iconfont icon-qiandai"></text>
|
||||
</view>
|
||||
<view class="item-left_text">
|
||||
<text>{{ PayTypeEnum.BALANCE.name }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as Verify from '@/utils/verify'
|
||||
import * as CartApi from '@/api/cart'
|
||||
import * as SettlementApi from '@/api/settlement'
|
||||
import DeliveryTypeEnum from '@/common/enum/order/DeliveryType'
|
||||
import PayTypeEnum from '@/common/enum/order/PayType'
|
||||
import { wxPayment } from '@/utils/app'
|
||||
import selectSwitch from "@/components/xuan-switch/xuan-switch.vue";
|
||||
import * as AddressApi from '@/api/address'
|
||||
import * as settingApi from '@/api/setting'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
selectSwitch
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 枚举类
|
||||
PayTypeEnum,
|
||||
// 当前页面参数
|
||||
options: {},
|
||||
// 当前选中的支付方式
|
||||
curPayType: PayTypeEnum.WECHAT.value,
|
||||
// 买家留言
|
||||
remark: '',
|
||||
// 禁用submit按钮
|
||||
disabled: false,
|
||||
// 按钮禁用
|
||||
disabled: false,
|
||||
goodsCart: [],
|
||||
// 优惠券列表
|
||||
couponList: [],
|
||||
totalPrice: 0,
|
||||
payPrice: 0,
|
||||
totalNum: 0,
|
||||
deliveryFee: 0,
|
||||
orderModeList: ['门店自提', '物流配送'],
|
||||
orderMode: true,
|
||||
address: null,
|
||||
useCouponInfo: null,
|
||||
selectCouponId: 0,
|
||||
myPoint: 0,
|
||||
usePoint: 0,
|
||||
usePointAmount: 0.00,
|
||||
// 是否使用积分抵扣
|
||||
isUsePoints: true,
|
||||
// 是否显示积分说明
|
||||
showPoints: false,
|
||||
// 会员折扣
|
||||
memberDiscount: 0,
|
||||
// 是否显示卡券弹窗
|
||||
showPopup: false,
|
||||
storeInfo: null,
|
||||
// 支付方式弹窗
|
||||
showPayPopup: false,
|
||||
// 订单ID
|
||||
orderId: ""
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
this.options = options;
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
const app = this;
|
||||
if (app.orderId) {
|
||||
app.navToOrderResult(app.orderId);
|
||||
}
|
||||
// 获取购物车信息
|
||||
app.getCartList();
|
||||
// 获取默认收货地址
|
||||
app.getDefaultAddress();
|
||||
// 获取店铺信息
|
||||
app.getStoreInfo();
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 获取购物车信息
|
||||
getCartList() {
|
||||
const app = this
|
||||
if (!app.isUsePoints) {
|
||||
app.usePoint = 0;
|
||||
app.usePointAmount = 0;
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
// 配送或自取
|
||||
let orderMode = "oneself";
|
||||
if (!app.orderMode) {
|
||||
orderMode = "express";
|
||||
}
|
||||
CartApi.list(app.options.cartIds, app.options.goodsId, app.options.skuId, app.options.buyNum, app.selectCouponId, app.isUsePoints, orderMode)
|
||||
.then(result => {
|
||||
app.goodsCart = result.data.list;
|
||||
app.totalNum = result.data.totalNum;
|
||||
app.totalPrice = result.data.totalPrice;
|
||||
app.payPrice = result.data.payPrice;
|
||||
app.couponList = result.data.couponList;
|
||||
app.useCouponInfo = result.data.useCouponInfo;
|
||||
app.usePoint = result.data.usePoint;
|
||||
app.myPoint = result.data.myPoint;
|
||||
app.deliveryFee = result.data.deliveryFee;
|
||||
if (app.usePoint < 1) {
|
||||
app.isUsePoints = false;
|
||||
}
|
||||
app.usePointAmount = result.data.usePointAmount;
|
||||
app.memberDiscount = result.data.memberDiscount ? result.data.memberDiscount : 0;
|
||||
resolve(result);
|
||||
})
|
||||
.catch(err => reject(err))
|
||||
})
|
||||
},
|
||||
|
||||
// 获取默认收货地址
|
||||
getDefaultAddress() {
|
||||
const app = this
|
||||
AddressApi.detail(0)
|
||||
.then(result => {
|
||||
app.address = result.data.address ? result.data.address : null;
|
||||
})
|
||||
},
|
||||
|
||||
// 显示积分说明
|
||||
handleShowPoints() {
|
||||
this.showPoints = true;
|
||||
},
|
||||
|
||||
// 显示卡券弹窗
|
||||
handleShowPopup() {
|
||||
this.showPopup = true;
|
||||
},
|
||||
|
||||
// 选择卡券
|
||||
handleSelectCoupon(index) {
|
||||
const app = this;
|
||||
// 当前选择的卡券
|
||||
const couponItem = app.couponList[index];
|
||||
// 记录选中的卡券id
|
||||
if (couponItem.status != 'A') {
|
||||
app.$error('该卡券不可用');
|
||||
return false;
|
||||
}
|
||||
app.selectCouponId = couponItem.userCouponId;
|
||||
// 重新获取购物车信息
|
||||
app.getCartList();
|
||||
// 隐藏卡券弹层
|
||||
app.showPopup = false;
|
||||
},
|
||||
|
||||
// 不使用卡券
|
||||
handleNotUseCoupon() {
|
||||
const app = this;
|
||||
app.selectCouponId = 0;
|
||||
// 重新获取购物车信息
|
||||
app.getCartList();
|
||||
// 隐藏卡券弹层
|
||||
app.showPopup = false;
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
handleSelectPayType(value) {
|
||||
this.curPayType = value
|
||||
},
|
||||
|
||||
// 快递配送:选择收货地址
|
||||
onSelectAddress() {
|
||||
this.$navTo('pages/address/index', { from: 'checkout' })
|
||||
},
|
||||
|
||||
// 切换配送模式
|
||||
switchMode(mode) {
|
||||
const app = this;
|
||||
app.orderMode = mode;
|
||||
if (mode && !app.storeInfo) {
|
||||
app.getStoreInfo();
|
||||
}
|
||||
app.getCartList();
|
||||
},
|
||||
|
||||
// 获取店铺详情
|
||||
getStoreInfo() {
|
||||
const app = this;
|
||||
if (!app.storeInfo) {
|
||||
settingApi.storeDetail()
|
||||
.then(result => {
|
||||
app.storeInfo = result.data.storeInfo;
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 弹出支付方式
|
||||
onSubmitOrder() {
|
||||
const app = this
|
||||
if (app.disabled) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (app.totalPrice < 0 || app.goodsCart.length < 1) {
|
||||
app.disabled = true
|
||||
return false
|
||||
}
|
||||
|
||||
// 表单验证
|
||||
if (!app.orderMode && app.address == undefined) {
|
||||
app.$toast('请先选择配送地址哦')
|
||||
return false
|
||||
}
|
||||
|
||||
// 配送或自取
|
||||
let orderMode = "oneself";
|
||||
if (!app.orderMode) {
|
||||
orderMode = "express";
|
||||
}
|
||||
if (!app.payPrice) {
|
||||
app.doSubmitOrder(PayTypeEnum.BALANCE.value)
|
||||
} else {
|
||||
app.showPayPopup = true;
|
||||
}
|
||||
},
|
||||
|
||||
// 订单提交
|
||||
doSubmitOrder(payType) {
|
||||
const app = this;
|
||||
if (app.disabled) {
|
||||
app.$toast('请勿重复提交订单');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (app.totalPrice < 0 || app.goodsCart.length < 1) {
|
||||
app.$toast('提交订单商品有误');
|
||||
app.disabled = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 表单验证
|
||||
if (!app.orderMode && app.address == undefined) {
|
||||
app.$toast('请先选择配送地址哦');
|
||||
return false;
|
||||
}
|
||||
|
||||
// 配送或自取
|
||||
let orderMode = "oneself";
|
||||
if (!app.orderMode) {
|
||||
orderMode = "express";
|
||||
}
|
||||
|
||||
// 按钮禁用
|
||||
app.disabled = true;
|
||||
|
||||
// 请求api
|
||||
SettlementApi.submit(0, "", "goods", app.remark, 0, app.usePoint, app.selectCouponId, app.options.cartIds, app.options.goodsId, app.options.skuId, app.options.buyNum, orderMode, payType)
|
||||
.then(result => {
|
||||
app.onSubmitCallback(result);
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.result) {
|
||||
const errData = err.result.data;
|
||||
if (errData.isCreated) {
|
||||
app.navToOrderResult(errData.orderInfo.id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
app.disabled = false;
|
||||
})
|
||||
},
|
||||
|
||||
// 订单提交成功后回调
|
||||
onSubmitCallback(result) {
|
||||
const app = this;
|
||||
if (result.code != '200' && !result.data) {
|
||||
if (result.message) {
|
||||
app.$error(result.message);
|
||||
} else {
|
||||
app.$error('订单提交失败');
|
||||
}
|
||||
app.disabled = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 发起微信支付
|
||||
if (result.data.payType == PayTypeEnum.WECHAT.value) {
|
||||
// #ifdef H5
|
||||
app.orderId = result.data.orderInfo.id;
|
||||
// #endif
|
||||
wxPayment(result.data.payment).then(() => {
|
||||
app.$success('支付成功');
|
||||
}).catch(err => {
|
||||
app.$error('支付失败');
|
||||
}).finally(() => {
|
||||
app.disabled = false;
|
||||
app.navToOrderResult(result.data.orderInfo.id, '');
|
||||
})
|
||||
}
|
||||
|
||||
// 余额支付
|
||||
if (result.data.payType == PayTypeEnum.BALANCE.value) {
|
||||
app.disabled = false;
|
||||
app.navToOrderResult(result.data.orderInfo.id, result.message);
|
||||
}
|
||||
},
|
||||
|
||||
// 跳转到订单结果页
|
||||
navToOrderResult(orderId, message) {
|
||||
if (!message || message == undefined) {
|
||||
message = "";
|
||||
}
|
||||
this.$navTo('pages/order/result?orderId='+orderId+'&message=' + message);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "./style.scss";
|
||||
</style>
|
||||
227
fuintUniapp/pages/settlement/index.vue
Normal file
227
fuintUniapp/pages/settlement/index.vue
Normal file
@@ -0,0 +1,227 @@
|
||||
<template>
|
||||
<view class="container p-bottom">
|
||||
<!-- 清单列表 -->
|
||||
<view class="m-top20">
|
||||
<view v-for="(item, index) in storeRule" :key="index" class="checkout_list">
|
||||
<view class="flow-shopList dis-flex">
|
||||
<view class="flow-list-right flex-box">
|
||||
<text class="goods-name twolist-hidden">预存¥{{ item.store }} 到账 ¥{{ item.upStore }}</text>
|
||||
<view class="flow-list-cont dis-flex flex-x-between flex-y-center">
|
||||
<text class="small">X{{ item.num }} </text>
|
||||
<text class="flow-cont">¥{{ item.amount.toFixed(2) }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flow-num-box b-f">
|
||||
<text>共{{ totalNum }}张,合计:</text>
|
||||
<text class="flow-money col-m">¥{{ totalAmount.toFixed(2) }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 支付方式 -->
|
||||
<view class="pay-method flow-all-money b-f m-top20">
|
||||
<view class="flow-all-list dis-flex">
|
||||
<text class="flex-five">支付方式</text>
|
||||
</view>
|
||||
<!-- 微信支付 -->
|
||||
<view class="pay-item dis-flex flex-x-between" @click="handleSelectPayType(PayTypeEnum.WECHAT.value)">
|
||||
<view class="item-left dis-flex flex-y-center">
|
||||
<view class="item-left_icon wechat">
|
||||
<text class="iconfont icon-weixinzhifu"></text>
|
||||
</view>
|
||||
<view class="item-left_text">
|
||||
<text>{{ PayTypeEnum.WECHAT.name }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="item-right col-m" v-if="curPayType == PayTypeEnum.WECHAT.value">
|
||||
<text class="iconfont icon-duihao"></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 买家留言 -->
|
||||
<view class="flow-all-money b-f m-top20">
|
||||
<view class="ipt-wrapper">
|
||||
<textarea v-model="remark" rows="3" maxlength=100 placeholder="买家留言 (选填,100字以内)" type="text"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 提交订单 -->
|
||||
<view class="flow-fixed-footer b-f m-top10">
|
||||
<view class="dis-flex chackout-box">
|
||||
<view class="chackout-left pl-12">
|
||||
<view class="col-amount-do">应付金额:¥{{ totalAmount.toFixed(2) }}</view>
|
||||
<view class="col-amount-view">实得金额:¥{{ getTotalAmount.toFixed(2) }}</view>
|
||||
</view>
|
||||
<view class="chackout-right" @click="onSubmitOrder()">
|
||||
<view class="flow-btn f-32" :class="{ disabled }">提交订单</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as Verify from '@/utils/verify'
|
||||
import * as CouponApi from '@/api/coupon'
|
||||
import * as SettlementApi from '@/api/settlement'
|
||||
import PayTypeEnum from '@/common/enum/order/PayType'
|
||||
import { wxPayment } from '@/utils/app'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
// 枚举类
|
||||
PayTypeEnum,
|
||||
// 当前页面参数
|
||||
options: {},
|
||||
// 当前选中的支付方式
|
||||
curPayType: PayTypeEnum.WECHAT.value,
|
||||
// 买家留言
|
||||
remark: '',
|
||||
// 禁用submit按钮
|
||||
disabled: false,
|
||||
// 按钮禁用
|
||||
disabled: false,
|
||||
couponId: 0,
|
||||
selectNum: "",
|
||||
storeRule: [],
|
||||
totalAmount: 0,
|
||||
getTotalAmount: 0,
|
||||
totalNum: 0
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad(options) {
|
||||
this.options = options
|
||||
this.couponId = options.couponId
|
||||
this.selectNum = options.selectNum
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow() {
|
||||
// 获取当前订单信息
|
||||
this.getCouponDetail()
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
// 获取卡券信息
|
||||
getCouponDetail() {
|
||||
const app = this
|
||||
return new Promise((resolve, reject) => {
|
||||
CouponApi.detail(app.couponId)
|
||||
.then(result => {
|
||||
app.initData()
|
||||
app.couponInfo = result.data
|
||||
let ruleItem = app.couponInfo.inRule.split(",")
|
||||
let selected = app.selectNum.split(",")
|
||||
ruleItem.forEach(function(item, index) {
|
||||
let rule = item.split("_")
|
||||
let num = selected[index]
|
||||
let amount = parseFloat(rule[0]) * num
|
||||
app.totalAmount += parseFloat(amount)
|
||||
app.getTotalAmount += parseFloat(rule[1] * num)
|
||||
app.totalNum += parseInt(num)
|
||||
if (num > 0) {
|
||||
app.storeRule.push({"store": parseFloat(rule[0]), "num": parseInt(num), "amount": parseFloat(amount), "upStore": parseFloat(rule[1])})
|
||||
}
|
||||
})
|
||||
resolve(result)
|
||||
})
|
||||
.catch(err => reject(err))
|
||||
})
|
||||
},
|
||||
|
||||
initData() {
|
||||
this.storeRule = [],
|
||||
this.totalAmount = 0,
|
||||
this.getTotalAmount = 0,
|
||||
this.totalNum = 0
|
||||
},
|
||||
|
||||
// 选择支付方式
|
||||
handleSelectPayType(value) {
|
||||
this.curPayType = value
|
||||
},
|
||||
|
||||
// 订单提交
|
||||
onSubmitOrder() {
|
||||
const app = this
|
||||
if (app.disabled) {
|
||||
app.$toast('请勿重复提交订单哦');
|
||||
return false
|
||||
}
|
||||
// 表单验证
|
||||
if (!app.onVerifyFrom()) {
|
||||
return false
|
||||
}
|
||||
// 按钮禁用
|
||||
app.disabled = true
|
||||
// 请求api
|
||||
SettlementApi.submit(app.couponId, app.selectNum, "prestore", app.remark, 0, 0, 0, "", 0, 0, 0, "", "JSAPI")
|
||||
.then(result => app.onSubmitCallback(result))
|
||||
.catch(err => {
|
||||
if (err.result) {
|
||||
const errData = err.result.data
|
||||
if (errData.isCreated) {
|
||||
app.navToMyOrder(errData.orderInfo.id)
|
||||
return false
|
||||
}
|
||||
}
|
||||
app.disabled = false
|
||||
})
|
||||
},
|
||||
|
||||
// 订单提交成功后回调
|
||||
onSubmitCallback(result) {
|
||||
const app = this
|
||||
// 发起微信支付
|
||||
if (result.data.payType == PayTypeEnum.WECHAT.value) {
|
||||
wxPayment(result.data.payment)
|
||||
.then(() => app.$success('支付成功'))
|
||||
.catch(err => app.$error('支付失败'))
|
||||
.finally(() => {
|
||||
app.disabled = false
|
||||
app.navToMyOrder(result.data.orderInfo.id)
|
||||
})
|
||||
}
|
||||
|
||||
// 余额支付
|
||||
if (result.data.payType == PayTypeEnum.BALANCE.value) {
|
||||
app.$success('支付成功')
|
||||
app.disabled = false
|
||||
app.navToMyOrder(result.data.orderInfo.id)
|
||||
}
|
||||
},
|
||||
|
||||
// 跳转到我的订单(等待1秒)
|
||||
navToMyOrder(orderId) {
|
||||
setTimeout(() => {
|
||||
this.$navTo('pages/order/detail?orderId='+orderId)
|
||||
}, 1000)
|
||||
},
|
||||
|
||||
// 表单验证
|
||||
onVerifyFrom() {
|
||||
const app = this
|
||||
if (app.hasError) {
|
||||
app.$toast(app.errorMsg)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "./style.scss";
|
||||
</style>
|
||||
493
fuintUniapp/pages/settlement/style.scss
Normal file
493
fuintUniapp/pages/settlement/style.scss
Normal file
@@ -0,0 +1,493 @@
|
||||
// 弹出层-支付方式
|
||||
.pay-type-popup {
|
||||
padding: 25rpx 25rpx 70rpx 25rpx;
|
||||
.title {
|
||||
font-size: 30rpx;
|
||||
margin-bottom: 50rpx;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pop-content {
|
||||
min-height: 140rpx;
|
||||
padding: 0 20rpx;
|
||||
|
||||
.pay-item {
|
||||
padding: 30rpx;
|
||||
font-size: 30rpx;
|
||||
background: #fff;
|
||||
border: 1rpx solid $fuint-theme;
|
||||
border-radius: 8rpx;
|
||||
color: #888;
|
||||
margin-bottom: 12rpx;
|
||||
text-align: center;
|
||||
|
||||
.item-left_icon {
|
||||
margin-right: 20rpx;
|
||||
font-size: 48rpx;
|
||||
|
||||
&.wechat {
|
||||
color: #00c800;
|
||||
}
|
||||
|
||||
&.balance {
|
||||
color: $fuint-theme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.flow-mode {
|
||||
background: #FFFFFF;
|
||||
padding: 20rpx;
|
||||
text-align: center;
|
||||
}
|
||||
// 配送信息
|
||||
.flow-delivery {
|
||||
padding: 10rpx 20rpx 40rpx 20rpx;
|
||||
background: #fff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAANCAYAAADVGpDCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3Yjk4M2ExYy1jMDhkLTQ1OTktYTI0Ny1kZjNjYzdiYTQ5ZTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDQwNkY3RkU5N0NGMTFFNUI3N0M4NTU4MzM2RjlFODIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDQwNkY3RkQ5N0NGMTFFNUI3N0M4NTU4MzM2RjlFODIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNzgwZWI1NS03OGFhLTQzOTUtODQ4OC1lOWI5YmVlYTY1ZDciIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1OTRiYzUyMy1jMzc3LTExNzgtYTdkZS04NGY3YmM1ZGIxMDMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz556PLxAAACBElEQVR42tyaSyhEYRTHP48imlKibDQeSSlkSlEWLCRFsZNH5FE2FqQ8ErIRC9lIkTwXSpMkWWChhEJCSnlkoUZGSsr78f98n43CMFPu/Z/6NZuZ2zn33/+cb869XkmLx8IDEQaGQJbgiytQDSY3MyL+LYnL/HxPXSoHDIJQQq2WQQk4Dbbb/yUB29LJ+6e3B66VB3ZITbUIEqSpCGoJBP1ghtBUD6ARpEtTGSEhXzd+awE9oJzQUPegWdf3QlBPMhgDMYRa7YNisGWkpP5qrBQtVBShUHugUE9hs4fUtwG0utlEjRivoA/Ug1sj3vjffr8FNJEK1auPFHcE9UTq5pdK2PwcoAzMG7mjuRrRYEIfK9jiDJSCBZJ6ynSTsBBqNQ0qgdPISbq6vJCFbJOaagrEk5gqWNczRGiqG1Ah1LLMafRkf5pYIUKtZnMJDXUNasAIST2ZYFioRx9ssQaKwJFZEv5uYmWDXVJTrYBEElP562PfPKGpnkAbSDOTqb6aWAGgW6iHol5kQj2CdtAJngnqkc1hHMQRNr9DPaXWzZj8Z2PZtFCxhEIdaKE2CGqRJ4060AH8CLUaALX6f5VpBZLhI9SaeZXQVHKNLt84SCIxVbhQi5YuQlNd6OVElZlN9TGxrGBUn2PZ4lyoTdIsST0FQj0UDSLUak6ot3gcBLVY3wQYAJoVXxmNERajAAAAAElFTkSuQmCC') bottom left repeat-x;
|
||||
background-size: 120rpx auto;
|
||||
|
||||
.detail-location {
|
||||
font-size: 36rpx;
|
||||
}
|
||||
.detail-content {
|
||||
padding: 0 20rpx;
|
||||
.detail-content__title-phone {
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
.detail-content__describe {
|
||||
font-size: 28rpx;
|
||||
color: #777;
|
||||
}
|
||||
.address-info {
|
||||
.icon {
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.select-address {
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
.icon {
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.detail-content__title {
|
||||
margin-bottom: 6rpx;
|
||||
}
|
||||
.store-name,.store-phone,.store-address {
|
||||
margin-bottom: 6rpx;
|
||||
font-size: 28rpx;
|
||||
color: #777;
|
||||
}
|
||||
}
|
||||
|
||||
// 费用明细
|
||||
.flow-all-money {
|
||||
.detail-title {
|
||||
padding-top: 10rpx;
|
||||
margin-bottom: 10rpx;
|
||||
font-weight: bold;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
.ipt-wrapper {
|
||||
margin-right: 25rpx;
|
||||
textarea {
|
||||
font-size: 28rpx;
|
||||
width: 100%;
|
||||
padding: 10rpx;
|
||||
border: solid 1rpx #f4f4f4;
|
||||
border-radius: 5rpx;
|
||||
height: 100rpx;
|
||||
margin-bottom: 100rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 商品列表
|
||||
.checkout_list {
|
||||
padding: 20rpx 30rpx 4rpx 30rpx;
|
||||
background: #fff;
|
||||
border-bottom: 1rpx solid rgb(248, 248, 248);
|
||||
.flow-shopList {
|
||||
padding: 5rpx 0 10rpx;
|
||||
border-bottom: 1rpx solid rgb(248, 248, 248);
|
||||
&:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.flow-header-left {
|
||||
padding-left: 90rpx;
|
||||
}
|
||||
|
||||
/* 会员价 */
|
||||
.flow-shopList {
|
||||
|
||||
.flow-list-right {
|
||||
.flow-cont {
|
||||
|
||||
&.price-delete {
|
||||
font-size: 26rpx;
|
||||
color: #777;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.goods-name{
|
||||
font-size: 30rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* 优惠券选择 */
|
||||
.popup__coupon {
|
||||
width: 750rpx;
|
||||
background: #fff;
|
||||
box-sizing: border-box;
|
||||
padding: 30rpx;
|
||||
|
||||
.coupon__do_not {
|
||||
.control {
|
||||
width: 90%;
|
||||
height: 82rpx;
|
||||
margin-top: 30rpx;
|
||||
margin-bottom: 1rpx;
|
||||
color: #fff;
|
||||
background: $fuint-theme;
|
||||
border: 1rpx solid $fuint-theme;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.coupon__title {
|
||||
text-align: center;
|
||||
margin-bottom: 30rpx;
|
||||
}
|
||||
|
||||
.coupon-item {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
margin-bottom: 22rpx;
|
||||
}
|
||||
|
||||
.item-wrapper {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
background: #fff;
|
||||
border-radius: 8rpx;
|
||||
color: #fff;
|
||||
height: 180rpx;
|
||||
|
||||
.coupon-type {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 10;
|
||||
width: 128rpx;
|
||||
padding: 6rpx 0;
|
||||
background: #fa2209;
|
||||
font-size: 20rpx;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
transform: rotate(45deg);
|
||||
transform-origin: 64rpx 64rpx;
|
||||
}
|
||||
|
||||
&.color-default {
|
||||
background: linear-gradient(-128deg, #6bf6f6, #008a8a);
|
||||
}
|
||||
|
||||
&.color-gray {
|
||||
background: linear-gradient(-113deg, #bdbdbd, #a2a1a2);
|
||||
.coupon-type {
|
||||
background: #9e9e9e;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
padding: 30rpx 20rpx;
|
||||
border-radius: 16rpx 0 0 16rpx;
|
||||
|
||||
.title {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
.time {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.receive {
|
||||
height: 46rpx;
|
||||
width: 122rpx;
|
||||
line-height: 46rpx;
|
||||
text-align: center;
|
||||
border: 1rpx solid #fff;
|
||||
border-radius: 6rpx;
|
||||
color: #fff;
|
||||
font-size: 24rpx;
|
||||
|
||||
&.state {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tip {
|
||||
position: relative;
|
||||
flex: 0 0 32%;
|
||||
text-align: center;
|
||||
border-radius: 0 16rpx 16rpx 0;
|
||||
|
||||
.money {
|
||||
font-weight: bold;
|
||||
font-size: 52rpx;
|
||||
}
|
||||
|
||||
.pay-line {
|
||||
font-size: 22rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.split-line {
|
||||
position: relative;
|
||||
flex: 0 0 0;
|
||||
border-left: 4rpx solid #fff;
|
||||
margin: 0 10rpx 0 6rpx;
|
||||
background: #fff;
|
||||
|
||||
&:before,
|
||||
{
|
||||
border-radius: 0 0 16rpx 16rpx;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
&:after {
|
||||
border-radius: 16rpx 16rpx 0 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 24rpx;
|
||||
height: 12rpx;
|
||||
background: #f7f7f7;
|
||||
left: -14rpx;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* 积分抵扣 */
|
||||
.points {
|
||||
|
||||
.title {
|
||||
margin-right: 5rpx;
|
||||
}
|
||||
|
||||
.icon-help {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.points-money {
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 积分说明
|
||||
.points-content {
|
||||
padding: 30rpx 48rpx;
|
||||
font-size: 28rpx;
|
||||
line-height: 50rpx;
|
||||
text-align: left;
|
||||
color: #606266;
|
||||
height: 620rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 支付方式 */
|
||||
.pay-method {
|
||||
|
||||
.pay-item {
|
||||
padding: 20rpx 0;
|
||||
font-size: 28rpx;
|
||||
border-bottom: 1rpx solid rgb(248, 248, 248);
|
||||
|
||||
.item-left_icon {
|
||||
margin-right: 20rpx;
|
||||
font-size: 32rpx;
|
||||
|
||||
&.wechat {
|
||||
color: #00c800;
|
||||
}
|
||||
|
||||
&.balance {
|
||||
color: #ff9700;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 商品规格
|
||||
.goods-props {
|
||||
padding-top: 10rpx;
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
|
||||
.goods-props-item {
|
||||
float: left;
|
||||
.group-name {
|
||||
margin-right: 6rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 右侧箭头
|
||||
.right-arrow {
|
||||
margin-left: 16rpx;
|
||||
// color: #777;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
// 底部操作栏
|
||||
.flow-fixed-footer {
|
||||
position: fixed;
|
||||
bottom: var(--window-bottom);
|
||||
width: 100%;
|
||||
height: 180rpx;
|
||||
background: #fff;
|
||||
border-top: 1px solid #eee;
|
||||
z-index: 11;
|
||||
padding-top: 25rpx;
|
||||
.chackout-left {
|
||||
font-size: 28rpx;
|
||||
height: 98rpx;
|
||||
color: #777;
|
||||
flex: 4;
|
||||
padding-left: 12px;
|
||||
text-align: right;
|
||||
padding-right: 40rpx;
|
||||
.col-amount-do {
|
||||
font-size:35rpx;
|
||||
padding-top: 2rpx;
|
||||
height: 100%;
|
||||
.pay-amount {
|
||||
color: #f03c3c;
|
||||
font-weight: bold;
|
||||
}
|
||||
.delivery-fee {
|
||||
margin-top: 8rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chackout-right {
|
||||
font-size: 34rpx;
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
.flow-btn {
|
||||
background: linear-gradient(to right, $fuint-theme, $fuint-theme);
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
height: 92rpx;
|
||||
line-height: 92rpx;
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-right: 20rpx;
|
||||
// 禁用按钮
|
||||
&.disabled {
|
||||
background: #CCCCCC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 共几张卡券 */
|
||||
.flow-num-box {
|
||||
font-size: 28rpx;
|
||||
color: #777;
|
||||
padding: 16rpx 24rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* app.scss */
|
||||
.flow-shopList {
|
||||
padding: 18rpx 0;
|
||||
|
||||
.flow-list-left {
|
||||
margin-right: 20rpx;
|
||||
|
||||
image {
|
||||
width: 120rpx;
|
||||
height: 100rpx;
|
||||
border: 1rpx solid #eee;
|
||||
border-radius: 5rpx;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.flow-list-right {
|
||||
|
||||
.flow-cont {
|
||||
font-size: 28rpx;
|
||||
color: #fa2209;
|
||||
}
|
||||
|
||||
.small {
|
||||
font-size: 26rpx;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.flow-list-cont {
|
||||
padding-top: 10rpx;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.flow-all-money {
|
||||
padding: 0 24rpx;
|
||||
color: #444;
|
||||
|
||||
.flow-all-list {
|
||||
font-size: 28rpx;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1rpx solid rgb(248, 248, 248);
|
||||
}
|
||||
|
||||
.flow-all-list:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.flow-all-list-cont {
|
||||
font-size: 28rpx;
|
||||
padding: 10rpx 0;
|
||||
}
|
||||
|
||||
.flow-arrow {
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user