This commit is contained in:
DESKTOP-GMUNQ1B\k 2024-03-22 10:50:55 +08:00
parent 8167f71bfd
commit 47b4284326
10 changed files with 1842 additions and 1078 deletions

View File

@ -9,6 +9,14 @@
// +----------------------------------------------------------------------
import request from "@/utils/request.js";
/**
* 校验支付密码是否正确
* @param numType
*/
export function verifyPwd(data) {
return request.post("order/verifyPwd", data);
}
/**
* 获取购物车列表
* @param numType boolean true 购物车数量,false=购物车产品数量

View File

@ -16,6 +16,13 @@ export function addCart(data) {
return request.post(`user/cart/create`, data);
}
/**
* 根据店铺 获取商品
*/
export function getProductInfo1(data) {
return request.get(`order_mix`, data);
}
/**
* 根据店铺id 获取店铺信息
*/

View File

@ -0,0 +1,92 @@
<template>
<uni-popup ref="payModal" type="center" safeArea :animation="true">
<view class="payModal">
<view class="payModal-title">{{code == 101?'未设置密码':'支付密码错误'}}</view>
<view class="payModal-btns">
<view class="wrap" style="display: flex;flex: 1;" v-if="code == 101">
<view class="payModal-btns-left payModal-common" @click="handleClick(1)">设置密码</view>
<view class="payModal-btns-right payModal-common" @click="handleClick(2)">取消</view>
</view>
<view class="wrap" style="display: flex;flex: 1;" v-else>
<view class="payModal-btns-left payModal-common" @click="handleClick(1)">忘记密码</view>
<view class="payModal-btns-right payModal-common" @click="handleClick(2)">重试</view>
</view>
</view>
</view>
</uni-popup>
</template>
<script>
export default {
data() {
return {
code: ''
}
},
methods: {
//
handleOpen(code) {
this.code = code;
this.$refs.payModal.open();
},
//
handleClose() {
this.$refs.payModal.close();
},
handleClick(type) {
if (type == 1) {
this.$emit('left', this.code);
} else {
this.$emit("right", this.code);
}
}
}
}
</script>
<style lang="scss">
.payModal {
width: 600rpx;
background-color: #fff;
border-radius: 30rpx;
.payModal-title {
text-align: center;
padding: 40rpx 50rpx 50rpx;
font-size: 30rpx;
color: #333;
border-bottom: 2rpx solid #e6e6e6;
}
.payModal-btns {
display: flex;
flex: 1;
.payModal-btns-left {
height: 88rpx;
line-height: 88rpx;
flex: 1;
text-align: center;
font-weight: bold;
border-right: 2rpx solid #e6e6e6;
color: #333;
}
.payModal-btns-right {
color: #2a5ac2;
}
.payModal-common {
height: 88rpx;
line-height: 88rpx;
flex: 1;
text-align: center;
font-weight: bold;
}
}
}
</style>

248
components/popups/index.vue Normal file
View File

@ -0,0 +1,248 @@
<template>
<view>
<uni-popup ref="popup" type="bottom" :mask-background-color="isPay?'rgba(0,0,0,.8)':'transparent'" safeArea
backgroundColor="transparent" :animation="true" @maskClick="maskClick">
<view class="popup-wrap" :style="{'border-radius':isPay?'': 0}">
<view class="paybox" v-if="isPay">
<view class="paybox-title">
<view class="paybox-title-left"></view>
<view class="paybox-title-middle">请输入支付密码</view>
<view class="paybox-titler-right" @click="handleClose">
<u-icon name="close" size="18" color="#666" />
</view>
</view>
<view class="paybox-input">
<u-code-input v-model="value" mode="box" dot readonly></u-code-input>
</view>
</view>
<view class="keyboard">
<view class="keyboard-left" :style="{width:isPay?'100%':''}">
<block v-for="(item,indx) in keys" :key="indx">
<view class="keyboard-left-item active del" v-if="item=='del'" @click="handleClick(item)">
<image style="width: 48rpx;height: 48rpx;" src="@/static/del.webp" />
</view>
<view class="keyboard-left-item word active"
:style="{width:isPay?'0%':'',border:isPay?'0':''}" v-else-if="item == '.'"
@click="handleClick(item)">
{{isPay?'':item}}
</view>
<view class="keyboard-left-item word active"
:style="{width:(isPay && item == '0')?'66.66%':''}" v-else @click="handleClick(item)">
{{item}}
</view>
</block>
</view>
<view class="keyboard-right" :style="{width:isPay?'0%':''}">
<view class="keyboard-right-clear word active" @click="handleClear">清空</view>
<view class="keyboard-right-pay word active-pay" @click="handlePay">{{txt}}</view>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
name: "popups",
props: {
txt: {
type: String,
default: '付款'
},
isPay: { //
type: Boolean,
default: false
}
},
data() {
return {
keys: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '.', 'del'],
value: '',
}
},
watch: {
value(newVal, oldVal) {
//
if (newVal.length == 6 && this.isPay) {
this.handlePay();
}
}
},
methods: {
//
handleClick(item) {
if (this.value.length >= 10) return;
if (item == ".") {
if (!this.value) {
this.value = '0.';
} else {
if (this.value.indexOf('.') > -1) return;
this.value = this.value + item;
}
} else if (item == 'del') {
if (this.value == "0.")
this.value = this.value.substring(0, 0);
else
this.value = this.value.substring(0, this.value.length - 1);
} else if (item == 0) {
if (this.isPay) {
this.value = this.value + item;
} else {
if (this.value) {
if (this.value.lastIndexOf('.') != -1 && this.value.length - this.value.lastIndexOf('.') == 3)
return;
this.value = this.value + item;
} else {
this.value = this.value + item;
}
}
} else {
if (this.value.lastIndexOf('.') != -1 && this.value.length - this.value.lastIndexOf('.') == 3) return;
this.value = this.value + item;
}
this.$emit('change', this.value);
},
//
handleClear() {
this.value = '';
this.$emit('clear');
},
//
handlePay() {
// .
if (this.value && this.value.endsWith('.')) {
this.value = this.value.replace('.', '');
}
this.$emit('confirm', this.value);
this.handleClose();
},
//
handleOpen() {
this.value = '';
console.log('123:' + this.value);
this.$refs.popup.open();
},
//
handleClose() {
this.$refs.popup.close();
},
maskClick() {
// .
if (this.value && this.value.endsWith('.')) {
this.value = this.value.replace('.', '');
}
this.$emit('change', this.value);
}
}
}
</script>
<style lang="scss" scoped>
.popup-wrap {
background-color: #fff;
border-radius: 30rpx 30rpx 0 0;
.paybox {
.paybox-title {
display: flex;
justify-content: space-between;
padding: 40rpx;
.paybox-title-left {}
.paybox-title-middle {
font-size: 30rpx;
font-weight: bold;
color: #333;
}
.paybox-titler-right {}
}
.paybox-input {
display: flex;
justify-content: center;
margin-bottom: 40rpx;
/deep/.u-code-input__item {
background-color: #E6E6E6;
border-radius: 8rpx;
border: 0 !important;
}
}
}
}
.keyboard {
display: flex;
padding-bottom: 20rpx;
border-top: 2rpx solid #E6E6E6;
.keyboard-left {
width: 75%;
display: flex;
flex-wrap: wrap;
.keyboard-left-item {
width: 33.3%;
height: 120rpx;
line-height: 102rpx;
border-bottom: 2rpx solid #E6E6E6;
border-right: 2rpx solid #E6E6E6;
}
.del {
display: flex;
justify-content: center;
align-items: center;
}
}
.keyboard-right {
width: 25%;
.keyboard-right-clear {
width: 100%;
height: 240rpx;
line-height: 226rpx;
}
.keyboard-right-pay {
width: 100%;
height: 240rpx;
line-height: 226rpx;
text-align: center;
background-color: #40AE36;
color: #fff !important;
}
}
.word {
font-weight: 600;
font-size: 34rpx;
color: #000000;
text-align: center;
}
.active:active {
background-color: rgba(232, 232, 232, 0.5);
}
.active-pay:active {
opacity: .9;
}
}
</style>

View File

@ -0,0 +1,167 @@
<template>
<uni-popup ref="popup" type="bottom" mask-background-color="rgba(0,0,0,0)" safeArea backgroundColor="#fff"
:animation="true" @maskClick="maskClick">
<view style="padding:40rpx;display: flex;justify-content: center;align-items: center;">
<u-code-input v-model="value" mode="box" dot readonly></u-code-input>
</view>
<view class="keyboard">
<view class="keyboard-left">
<block v-for="(item,indx) in keys" :key="indx">
<view class="keyboard-left-item word active" v-if="item != 'del'" @click="handleClick(item)">
{{item}}
</view>
<view class="keyboard-left-item active del" v-else @click="handleClick(item)">
<image style="width: 48rpx;height: 48rpx;" src="@/static/del.webp" />
</view>
</block>
</view>
<view class="keyboard-right">
<view class="keyboard-right-clear word active" @click="handleClear">清空</view>
<view class="keyboard-right-pay word active-pay" @click="handlePay">付款</view>
</view>
</view>
</uni-popup>
</template>
<script>
export default {
name: "popups",
data() {
return {
keys: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '.', 'del'],
value: ''
}
},
methods: {
//
handleClick(item) {
if (this.value.length >= 10) return;
if (item == ".") {
if (!this.value) {
this.value = '0.';
} else {
if (this.value.indexOf('.') > -1) return;
this.value = this.value + item;
}
} else if (item == 'del') {
if (this.value == "0.")
this.value = this.value.substring(0, 0);
else
this.value = this.value.substring(0, this.value.length - 1);
} else if (item == 0) {
if (this.value) {
if (this.value.lastIndexOf('.') != -1 && this.value.length - this.value.lastIndexOf('.') == 3)
return;
this.value = this.value + item;
}
} else {
if (this.value.lastIndexOf('.') != -1 && this.value.length - this.value.lastIndexOf('.') == 3) return;
this.value = this.value + item;
}
this.$emit('change', this.value);
},
//
handleClear() {
this.value = '';
this.$emit('clear');
},
//
handlePay() {
// .
if (this.value && this.value.endsWith('.')) {
this.value = this.value.replace('.', '');
}
this.$emit('confirm', this.value);
this.handleClose();
},
//
handleOpen() {
this.$refs.popup.open();
},
//
handleClose() {
this.$refs.popup.close();
},
maskClick() {
// .
if (this.value && this.value.endsWith('.')) {
this.value = this.value.replace('.', '');
}
this.$emit('change', this.value);
}
}
}
</script>
<style lang="scss">
.keyboard {
display: flex;
padding-bottom: 20rpx;
.keyboard-left {
width: 75%;
display: flex;
flex-wrap: wrap;
.keyboard-left-item {
width: 33.3%;
height: 120rpx;
line-height: 102rpx;
border-bottom: 2rpx solid #E6E6E6;
border-right: 2rpx solid #E6E6E6;
}
.del {
display: flex;
justify-content: center;
align-items: center;
}
}
.keyboard-right {
width: 25%;
.keyboard-right-clear {
width: 100%;
height: 240rpx;
line-height: 226rpx;
}
.keyboard-right-pay {
width: 100%;
height: 240rpx;
line-height: 226rpx;
text-align: center;
background-color: #40AE36;
color: #fff !important;
}
}
.word {
font-weight: 600;
font-size: 34rpx;
color: #000000;
text-align: center;
}
.active:active {
background-color: rgba(232, 232, 232, 0.5);
}
.active-pay:active {
opacity: .9;
}
}
</style>

View File

@ -1,66 +1,73 @@
<template>
<view class="container">
<view class="v-navbar">
<view v-if="!isWeixin" class="v-navbar">
<u-navbar title="提货付款" :safeAreaInsetTop="false" :fixed="false" @leftClick="leftClick" bgColor="transparent"
leftIconColor="#fff" :titleStyle="{color:'#fff',fontWeight:'bold',fontSize:'32rpx'}">
leftIconColor="#333" :titleStyle="{color:'#333',fontWeight:'bold',fontSize:'32rpx'}">
</u-navbar>
</view>
<view v-if="merchantInfo && !isEmpty">
<view class="v-desc">
<view>
<view class="v-desc-main">确认提货付款</view>
<view class="v-desc-sub">{{merchantInfo.merchant.mer_name}}</view>
</view>
<u-image :showLoading="true" :src="merchantInfo.merchant.mer_avatar" width="182rpx" height="182rpx"
:radius="10" />
<view style="height: 50rpx;"></view>
<view class="wrap">
<view class="shop">
<image src="@/static/shop_logo.webp" style="width: 62rpx;height: 54rpx;" />
<text class="shop-name" v-if="mer_name">{{mer_name||''}}</text>
</view>
<!-- 付款金额 -->
<view class="v-con">
<view class="v-con-text">付款金额</view>
<view class="v-con-input" style="margin-right: 10px;">
<text style="color: #303133;font-size:46rpx;"></text>
<u--input type="digit" fontSize="23" v-model="cartForm.total_amount" placeholder="请输入金额"
border="none" placeholderStyle="color:#999;font-size:30rpx" @input="validateDecimal">
<view class="v-con-text">订单金额</view>
<view class="v-con-input" @click="handleOpenKeyboard">
<text style="color: #303133;font-size:32rpx;"></text>
<u--input type="text" fontSize="23" height="112rpx" placeholder="请输入金额" border="none" readonly
v-model="cartForm.total_amount" placeholderStyle="color:#999;font-size:32rpx">
</u--input>
<view class="placeholder"></view>
</view>
<view class="v-wrap" v-if="cartForm.total_amount">
<view class="v-wrap-money">
<text class="icon"></text>
<text class="num">{{cartForm.total_amount}}</text>
</view>
<view class="v-wrap-desc">
<view class="v-wrap-desc-main">实物提货券</view>
<view class="v-wrap-desc-sub">即买即用</view>
<view class="v-con-group">
<view class="v-con-group-title">
<view class="v-con-group-title-left">套餐详情</view>
<view class="v-con-group-title-right" @click.stop="handleOpen">
<text>{{isOpen?'折叠':'展开'}}</text>
<u-icon :name="isOpen?'arrow-down' : 'arrow-right'" size="15"></u-icon>
</view>
</view>
<scroll-view scroll-y>
<view class="v-con-group-list" :style="{'max-height':isOpen?'400rpx':'0'}">
<block v-for="(item,indx) in merchantInfo" :key="indx">
<view class="v-con-group-list-item">
<image :src="item.image" :showLoading="true" style="width:86rpx;height:86rpx;" />
<text class="line1">{{item.store_name}}</text>
</view>
</block>
</view>
</scroll-view>
</view>
</view>
<view class="v-btn-wrap">
<view class="v-btn" @click="submitOrder">提交订单</view>
<view class="v-btn-wrap" @click="cartForm.total_amount?submitOrder():null">
<view class="v-btn">{{Number(cartForm.total_amount||0).toFixed(2)}} 确认支付</view>
</view>
<!-- 登陆 -->
<authorize :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse" @onLoadFun="onLoadFun">
</authorize>
<authorize :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse" @onLoadFun="onLoadFun" />
</view>
<!-- 无商户信息提示 -->
<view v-else class="empty">
<image src="/static/images/no_thing.png"></image>
<text style="margin-top: 60rpx;">{{tips}}</text>
<!-- 登陆 -->
<authorize :isAuto="isAuto" :isGoIndex="false" :isShowAuth="isShowAuth" @authColse="authColse"
@onLoadFun="onLoadFun">
<!-- <view class="empty">
<authorize v-show="!isWeixin" ref="authRef" :isAuto="isAuto" :isGoIndex="false" :isShowAuth="isShowAuth"
@authColse="authColse" @onLoadFun="onLoadFun">
</authorize>
</view>
</view> -->
<!-- 键盘 -->
<popups ref="popups" @confirm="handleConfirm" @clear="handleClear" @change="handleChange"></popups>
</view>
</template>
<script>
var that;
import {
getProductInfo,
getProductInfo1,
addCart,
orderCheck
} from "@/api/payment.js";
@ -69,17 +76,23 @@
mapGetters
} from "vuex";
import authorize from '@/components/Authorize';
import { Toast } from "../../libs/uniApi";
import {
Toast
} from "../../libs/uniApi";
import popups from "@/components/popups/index.vue";
export default {
components: {
authorize
authorize,
popups
},
computed: {
...mapGetters(['isLogin']),
},
data() {
return {
isEmpty: false,
isEmpty: true,
// isWeixin: this.$wechat.isWeixin(),
isWeixin: false,
cartForm: {
product_id: '',
product_attr_unique: '',
@ -103,29 +116,67 @@ import { Toast } from "../../libs/uniApi";
isAuto: false, //
isShowAuth: false, //
mer_id: '',
tips: '暂未登陆~'
changeTxt: '展开',
isOpen: false,
keyBoardShow: false,
mer_name: ''
}
},
onLoad(opt) {
that = this;
this.mer_id = opt.mer_id;
},
onShow() {
if (!this.isLogin) {
Cache.set("login_back_url_weixin", "/" + getCurrentPages()[0].route + "?mer_id=" + this.mer_id);
this.isAuto = true;
this.isShowAuth = true;
if (this.isWeixin) {
this.$nextTick(() => {
this.$refs.authRef.toWecahtAuth();
})
}
} else {
this.checkForm.cart_id = [];
this.getProductInfoByMerid(this.mer_id);
this.checkForm.cart_id = [];
this.getProductInfoByMerid();
}
},
methods: {
validateDecimal(event) {
let val = (this.cartForm.total_amount.match(/^\d*(\.?\d{0,2})/g)[0]) || ''
this.$nextTick(() => {
this.cartForm.total_amount = val;
})
//
handleOpenKeyboard() {
if (!this.isLogin) {
Cache.set("login_back_url_weixin", "/" + getCurrentPages()[0].route + "?mer_id=" + this.mer_id);
this.isAuto = true;
this.isShowAuth = true;
if (this.isWeixin) {
this.$nextTick(() => {
this.$refs.authRef.toWecahtAuth();
})
}
} else {
this.$refs.popups.handleOpen();
}
},
//
handleConfirm(e) {
if (!e) return;
this.cartForm.total_amount = e;
this.submitOrder();
},
//
handleClear() {
this.cartForm.total_amount = '';
this.merchantInfo = [];
},
//
handleChange(e) {
this.cartForm.total_amount = e;
uni.$u.debounce(that.getProductInfoByMerid, 200)
},
leftClick(e) {
@ -133,60 +184,94 @@ import { Toast } from "../../libs/uniApi";
url: '/pages/index/index'
})
},
//
authColse: function(e) {
this.isShowAuth = e;
},
onLoadFun() {
this.getProductInfoByMerid(this.mer_id);
this.isShowAuth = false;
},
//
submitOrder() {
async submitOrder() {
if (!this.cartForm.total_amount) {
return this.$util.Tips({
title: "请输入付款金额!"
})
}
//
this.cartForm.product_id = this.merchantInfo.product_id;
this.cartForm.product_type = this.merchantInfo.product_type;
this.cartForm.product_attr_unique = this.merchantInfo.sku[''].unique;
let that = this;
addCart(this.cartForm).then(res => {
// ID
that.checkForm.cart_id.push(res.data.cart_id);
//
for (var i = 0; i < that.merchantInfo.length; i++) {
let info = {
product_id: that.merchantInfo[i].product_id,
product_attr_unique: that.merchantInfo[i].unique,
cart_num: that.merchantInfo[i].num,
is_new: 1,
product_type: 0,
source: 999,
total_amount: that.cartForm.total_amount
};
try {
let res = await addCart(info);
that.checkForm.cart_id.push(res.data.cart_id);
} catch (e) {
return that.$util.Tips({
title: err.message || err.msg || err
})
}
}
if (that.checkForm.cart_id && that.checkForm.cart_id.length > 0) {
orderCheck(that.checkForm).then(res1 => {
uni.navigateTo({
url: "/pages/payment/settlement?cartId=" + this.checkForm
.cart_id + "&money=" + this.cartForm.total_amount +
"&merName=" + this.merchantInfo.merchant.mer_name,
url: "/pages/payment/settlement",
success: (res) => {
res.eventChannel.emit('datas', res1.data.platformConsumption);
uni.setStorageSync('datas', {
platformConsumption: res1.data.platformConsumption ||
[],
productData: that.merchantInfo,
checkForm: that.checkForm,
money: that.cartForm.total_amount,
merName: that.mer_name,
money: that.cartForm.total_amount,
key: res1.data.key
})
},
fail(err) {
console.log(err)
}
})
}).catch(err=>{
Toast(err.message || err)
});
}).catch((err) => {
this.$util.Tips({
title: err.message || err.msg || err
})
})
}).catch(err => {
Toast(err.message || err)
});
}
},
getProductInfoByMerid(merid) {
let that = this;
getProductInfo({
mer_id: merid
//
handleOpen() {
this.isOpen = !this.isOpen;
},
//
getProductInfoByMerid(merid, money) {
getProductInfo1({
mer_id: that.mer_id,
money: that.cartForm.total_amount
}).then(res => {
this.merchantInfo = res.data;
if (!that.cartForm.total_amount) {
this.mer_name = res.data.merchant;
} else {
that.merchantInfo = res.data.list;
}
}).catch((err) => {
this.tips = err.message || err.smg || err;
this.$util.Tips({
that.$util.Tips({
title: err.message || err.msg || err
}, () => {
})
// #ifdef APP
setTimeout(() => {
@ -200,49 +285,6 @@ import { Toast } from "../../libs/uniApi";
that.isEmpty = true;
// #endif
})
},
//
handleSavePic() {
// URL
let imageUrl = this.qrcodeUrl; // 使
// #ifdef H5
var a = document.createElement("a");
a.download = imageUrl;
a.href = imageUrl;
document.body.appendChild(a);
a.click();
a.remove();
// #endif
// #ifndef H5
let that = this;
uni.downloadFile({
url: imageUrl,
success(res) {
if (res.statusCode === 200) {
let tempFilePath = res.tempFilePath; //
uni.saveImageToPhotosAlbum({
filePath: tempFilePath,
success() {
return that.$util.Tips({
title: '图片已保存至相册!'
});
},
fail(err) {
console.error('保存失败', err);
}
});
} else {
console.error('下载失败', res.statusCode);
}
},
fail(err) {
console.error('下载失败', err);
}
});
// #endif
}
}
}
@ -250,11 +292,11 @@ import { Toast } from "../../libs/uniApi";
<style lang="scss">
page {
background-color: #FCDFAD;
background-color: #F9F9F9;
}
.empty {
margin: 130rpx 0 150rpx;
margin: 0;
text-align: center;
image,
@ -274,7 +316,7 @@ import { Toast } from "../../libs/uniApi";
.container {
position: relative;
height: 100vh;
background-image: url("https://lihai001.oss-cn-chengdu.aliyuncs.com/def/c582c202402291601584806.webp");
// background-image: url("https://lihai001.oss-cn-chengdu.aliyuncs.com/def/c582c202402291601584806.webp");
background-size: 100% auto;
background-repeat: no-repeat;
padding-top: var(--status-bar-height);
@ -304,34 +346,56 @@ import { Toast } from "../../libs/uniApi";
}
}
.wrap {
margin: 0 52rpx 0 54rpx;
}
.shop {
display: flex;
align-items: center;
margin-bottom: 54rpx;
text {
margin-left: 32rpx;
}
}
.v-con {
position: absolute;
top: 436rpx;
left: 50%;
transform: translateX(-50%);
width: 710rpx;
height: 680rpx;
background: linear-gradient(180deg, #FEB992 0%, #FFFFFF 31%, #FFFFFF 100%);
border-radius: 20rpx;
margin: 0 auto;
box-shadow: 0 -4rpx 0px 0px #fff;
padding: 53rpx 30rpx 0 30rpx;
box-sizing: border-box;
margin: 0 auto 150rpx;
.v-con-text {
margin-bottom: 60rpx;
font-weight: 400;
font-size: 32rpx;
color: #2E2E2E;
line-height: 16rpx;
font-size: 30rpx;
color: #000000;
}
.v-con-input {
position: relative;
display: flex;
align-items: center;
margin-bottom: 83rpx;
padding: 0 0 40rpx 12rpx;
height: 112rpx;
margin-bottom: 32rpx;
border-bottom: 1rpx solid #D6D6D6;
/deep/.uni-input-input {
height: 112rpx;
font-weight: bold;
font-size: 72rpx;
}
text {
font-weight: 400;
font-size: 32rpx;
color: #000000;
}
.placeholder {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
.v-wrap {
@ -340,9 +404,6 @@ import { Toast } from "../../libs/uniApi";
padding-left: 20rpx;
width: 666rpx;
height: 210rpx;
background-image: url("https://lihai001.oss-cn-chengdu.aliyuncs.com/def/2f9c2202402291652415355.webp");
background-size: 100% 100%;
background-repeat: no-repeat;
.v-wrap-money {
display: flex;
@ -377,37 +438,92 @@ import { Toast } from "../../libs/uniApi";
}
}
}
}
.v-btn-wrap {
position: fixed;
z-index: 11;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 240rpx;
background-color: #FDD6A6;
.v-btn {
width: 650rpx;
height: 100rpx;
line-height: 100rpx;
background: #FF8056;
box-shadow: 0rpx 3rpx 3rpx 1rpx rgba(255, 94, 12, 0.4);
border-radius: 55rpx 55rpx 55rpx 55rpx;
border: 1rpx solid #FF8056;
font-weight: 600;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
.v-con-group {
.v-con-group-title {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 32rpx;
&:active {
opacity: .8;
.v-con-group-title-left {
font-weight: 400;
font-size: 30rpx;
color: #000000;
}
.v-con-group-title-right {
display: flex;
align-items: center;
text {
margin-right: 18rpx;
font-weight: 400;
font-size: 30rpx;
color: #000000;
}
}
}
.v-con-group-list {
transition: max-height linear .1s;
.v-con-group-list-item {
display: flex;
align-items: center;
margin-bottom: 14rpx;
text {
margin-left: 30rpx;
font-size: 26rpx;
color: #333333;
}
}
}
}
}
.v-btn-wrap {
width: 100%;
height: 90rpx;
line-height: 90rpx;
background: #40AE36;
border-radius: 10rpx;
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
// position: fixed;
// z-index: 11;
// bottom: 0;
// left: 0;
// display: flex;
// justify-content: center;
// align-items: center;
// width: 100%;
// height: 240rpx;
// background-color: #FDD6A6;
// .v-btn {
// width: 650rpx;
// height: 100rpx;
// line-height: 100rpx;
// background: #FF8056;
// box-shadow: 0rpx 3rpx 3rpx 1rpx rgba(255, 94, 12, 0.4);
// border-radius: 55rpx 55rpx 55rpx 55rpx;
// border: 1rpx solid #FF8056;
// font-weight: 600;
// font-size: 32rpx;
// color: #FFFFFF;
// text-align: center;
// &:active {
// opacity: .8;
// }
// }
}
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -186,8 +186,15 @@
:order_id="currentTab"></cash>
<!-- 提现提示 -->
<u-modal :show="tipShow" title="提示" content='工作日当日10点前提现当日12点到账, 当日16点前提现当日18点到账, 当日18点后提现次日12点到账, 周末节假日提现, 下一工作日18点前到账'
<u-modal :show="tipShow" title="提示"
content='工作日当日10点前提现当日12点到账, 当日16点前提现当日18点到账, 当日18点后提现次日12点到账, 周末节假日提现, 下一工作日18点前到账'
@confirm="tipShow = false"></u-modal>
<!-- 支付密码 键盘 -->
<popups ref="popups" :isPay="true" @confirm="handleConfirm" @clear="handleClear" @change="handleChange" />
<!-- 密码错误事件处理 -->
<payPwd ref="payPwd" @left="handleLeft" @right="handleRight"></payPwd>
</view>
</template>
@ -198,7 +205,6 @@
getLisApplyAPI,
getAccountApplyAPI,
postAccountApplyAPI,
} from '@/api/user.js'
import {
extractCash,
@ -217,10 +223,18 @@
import {
Toast
} from '../../../libs/uniApi';
import {
verifyPwd
} from '@/api/order.js';
import payPwd from "@/components/payPwd/index.vue";
import popups from "@/components/popups/index.vue";
export default {
components: {
cash,
authorize
authorize,
payPwd,
popups
},
data() {
return {
@ -278,7 +292,8 @@
pay_close: false,
pay_type: [],
source: '',
merId: ''
merId: '',
modes: {}
};
},
computed: {
@ -487,18 +502,20 @@
financial_bank_branch: this.mode.bank_address,
financial_type: 1
}
console.log(mode);
postCreateApplyAPI(this.merId, mode).then(res => {
this.modes = mode;
this.$refs.popups.handleOpen();
},
trueWithdraw() {
postCreateApplyAPI(this.merId, this.modes).then(res => {
//
// that.postCreate(e.detail.value.extract_price)
Toast(res.message)
setTimeout(() => {
uni.navigateBack({
delta: 1
})
}, 1000)
console.log(res);
}).catch(err => {
Toast(err)
setTimeout(() => {
@ -509,6 +526,53 @@
})
},
//
handleConfirm(e) {
//
verifyPwd({
withdrawal_pwd: e
}).then(res => {
//
const code = res.data.code;
this.$set(this.modes, 'withdrawal_pwd', e);
if (code == 100) { //
uni.showLoading({
title: '订单支付中',
mask: true
});
this.trueWithdraw();
} else {
this.$refs.payPwd.handleOpen(code);
}
}).catch(err => {
console.log(err)
})
},
// 101 102
handleLeft(code) {
uni.navigateTo({
url: "/pages/users/user_modify_pwd/index?type=payPwd"
});
this.$refs.payPwd.handleClose();
},
//
handleRight(code) {
if (code == 101) { //
this.$refs.payPwd.handleClose(code);
} else {
this.$refs.payPwd.handleClose();
this.$refs.popups.handleOpen();
}
},
handleClear() {},
handleChange() {},
async postCreate(price) {
const data = {
extract_money: price,

BIN
static/del.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/shop_logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB