| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- <template>
- <div class="payTheBill">
- <div class="head card">
- <div class="p1">{{Merchant.restaurant_name}}</div>
- <div class="p2">{{Merchant.restaurant_address}}</div>
- </div>
- <div class="phone card flex_r flex_jb">
- <span>联系方式</span>
- <span>{{ userinfo.mobile }}</span>
- </div>
- <div class="commodity card">
- <div class="li tit">
- <span class="s1">商品名称</span>
- <span class="s2">数量</span>
- <span class="s2">原价</span>
- </div>
- <div class="li li2" v-for="(i,s) in cartList" :key="s">
- <span class="s1 ellipsis">{{ i.product_name }}</span>
- <span class="s2">{{ i.number }}</span>
- <span class="s2">{{ $h.Mul($h.Add(i.product_price, i.spec_price),i.number) }}</span>
- </div>
- </div>
- <div class="money card">
- <div class="li flex_r flex_jb">
- <span>消费金额</span>
- <span>¥{{ cartTotal || 0 }}</span>
- </div>
- <div class="li flex_r flex_jb">
- <span>消费金抵扣<span class="corg">{{Integral}}%</span></span>
- <span class="corg">-¥{{ deduction || 0 }}</span>
- </div>
- <div class="li flex_r flex_jb">
- <span>实付金额</span>
- <span>¥{{ actuallypaid || 0 }}</span>
- </div>
- </div>
- <div class="money card">
- <div class="li flex_r flex_jb">
- <span>赠送茶宝</span>
- <span>{{ chabao || 0 }}</span>
- </div>
- </div>
- <div class="btnbar">
- <div class="btn" @click="payBill">确认支付</div>
- </div>
- <div class="mag">*核对商品无误后即可付款,然后订单详情页会显示取餐码,将取餐码告知店员即可取餐</div>
- </div>
- </template>
- <script>
- import { ToPayOpre } from "@/utils/reqTools.js";
- let toPayOpre = new ToPayOpre();
- import { post } from "@/request/api.js";
- export default {
- name: "payTheBill",
- props: {},
- components: {},
- data() {
- return {
- Merchant: {},
- cartList: [],
- cartTotal: 0,
- userinfo: {},
- Integral: 0,
- deduction: 0,
- actuallypaid: 0,
- chabao: 0,
- };
- },
- methods: {
- getMerchant(da) {
- post("local/getMerchantById", da).then(res => {
- if (res.code == 0) {
- this.Merchant = res.data;
- }
- })
- },
- getIntegral(){
- post("local/getIntegral",{type:1}).then(res=>{
- if (res.code == 0) {
- let i1 = res.data.integral, i2 = res.data.chabao;
- this.Integral = this.$h.Mul(i1,100);
- this.deduction = this.$h.Mul(this.cartTotal,i1).toFixed(2);
- this.actuallypaid = this.$h.Sub(this.cartTotal,this.deduction);
- this.chabao = this.$h.Mul(this.actuallypaid,i2).toFixed(2);
- }
- })
- },
- getCartList(id) {
- post("local/myCart", {
- restaurant_id: id,
- }).then(res => {
- if (res.code == 0) {
- let data = res.data;
- let totals = 0;
- data.forEach(itm => {
- totals = this.$h.Add(totals, this.$h.Mul(this.$h.Add(itm.product_price, itm.spec_price), itm.number));
- })
- this.cartList = data;
- this.cartTotal = totals;
- this.getIntegral();
- }
- })
- },
- async getuserInfo() {
- this.userinfo = await uni.userfun();
- },
- payBill(){
- let Arr = []
- for (const it of this.cartList) {
- let spec = JSON.parse(it.spec)
- let product_details = spec.product_details
- Arr.push({
- product_id: it.product_id,
- amount: it.number,
- product_details
- })
- }
- let product_detail = JSON.stringify(Arr)
- let da = {
- brand_id: this.Merchant.brand_id,
- restaurant_id: this.Merchant.restaurant_id,
- phone: this.userinfo.mobile,
- total_amount: this.actuallypaid,
- product_detail
- }
- post("local/merchantOrder", da).then(res => {
- if (res.code == 0 && res.data.prepayid) {
- toPayOpre.toPay(res.data, (rea) => {
- if (!rea) {
- // 支付成功
- this.goto("/pagesB/orderingfood/orderlist")
- } else {
- // 支付失败
- }
- });
- }
- })
- }
- },
- onReady() {
- this.getuserInfo();
- },
- onLoad(da) {
- this.getMerchant(da);
- this.getCartList(da.restaurant_id);
- },
- onShow() {},
- mounted() {},
- };
- </script>
- <style scoped lang='scss'>
- page {
- min-height: 100%;
- background-color: #ECECEC;
- }
- .payTheBill {
- padding: 32rpx;
- }
- .head{
- .p2{
- font-size: 26rpx;
- color: #999;
- margin-top: 10rpx;
- }
- }
- .commodity {
- .li{
- margin-bottom: 8rpx;
- &:last-child{
- margin-bottom: 0;
- }
- }
- .tit {
- font-weight: bold;
- margin-bottom: 18rpx;
- .s1, .s2 {
- font-size: 30rpx;
- }
- }
- .s1, .s2 {
- display: inline-block;
- font-size: 26rpx;
- }
- .s1 {
- width: calc(100% - 240rpx);
- }
- .s2 {
- width: 120rpx;
- text-align: center;
- }
- }
- .money{
- .li{
- margin-bottom: 16rpx;
- &:last-child{
- margin-bottom: 0;
- }
- span{
- font-size: 30rpx;
- }
- }
- .corg{
- color: #18bb88;
- margin-left: 5rpx;
- }
- }
- .btnbar{
- padding: 20rpx 0;
- .btn{
- height: 80rpx;
- line-height: 80rpx;
- border-radius: 16rpx;
- background-color: #18bb88;
- text-align: center;
- color: #fff;
- }
- }
- .mag{
- font-size: 26rpx;
- color: #999;
- }
- .card {
- background-color: #fff;
- border-radius: 26rpx;
- margin-bottom: 30rpx;
- padding: 28rpx 30rpx;
- font-size: 32rpx;
- &:last-child {
- margin-bottom: 0;
- }
- }
- </style>
|