大佛寺机器扫码h5页面
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.

390 lines
9.4 KiB

1 year ago
<template>
<view class="content u-flex-col u-col-center">
<view v-if="temple=='大佛寺'" class="u-flex u-row-center" style="width: 750rpx;height: 136rpx;">
<u-image width="357rpx" height="82rpx" src="../../static/home/title.png"></u-image>
</view>
<u-image v-if="temple=='能仁寺'" width="750rpx" height="136rpx" src="../../static/home/nr.jpg"></u-image>
3 months ago
<u-image v-if="temple=='百花寺'" width="750rpx" height="136rpx" src="../../static/home/bh2.png"></u-image>
1 year ago
<u-image width="750rpx" height="356rpx" src="../../static/home/top.jpg"></u-image>
<u-form class="form u-m-t-30" ref="uForm">
<u-form-item label="功德主" labelWidth="120rpx" :border-bottom="false" :label-style="labelStyle" prop="master">
<u-input class="ipt" v-model="form.master" :border="true" :clearable="false" placeholder="" borderColor="#562511"></u-input>
</u-form-item>
<u-form-item label="付款人" labelWidth="120rpx" :border-bottom="false" :label-style="labelStyle" prop="name">
<u-input class="ipt" v-model="form.name" :border="true" :clearable="false" placeholder="" borderColor="#562511"></u-input>
</u-form-item>
<u-form-item label="手机" labelWidth="120rpx" :border-bottom="false" :label-style="labelStyle" prop="phone">
<u-input class="ipt" type="number" v-model="form.phone" :border="true" :clearable="false" placeholder="" borderColor="#562511"></u-input>
</u-form-item>
<u-form-item label="祝福语" labelWidth="120rpx" :border-bottom="false" :label-style="labelStyle" prop="wish">
<u-input
class="ipt"
v-model="form.wish"
type="textarea"
:autoHeight="true"
:border="true"
:clearable="false"
placeholder="请填写祝福语,最多20个字!"
borderColor="#562511"
></u-input>
</u-form-item>
</u-form>
<view class="u-flex u-m-t-30 u-m-l-50 category-title">
<view class="title">乐捐项目</view>
<view class="title">功德金额</view>
</view>
<view class="u-m-t-20 u-m-l-50">
<view class="a u-m-t-15 u-flex-col" v-for="(item, index) in categories" :key="index">
<view class="b u-flex">
<view class="category u-flex">
<view class="item" @click="showSelect(index)">
{{item.category}}
<!-- <u-input
class="ipt"
v-model="item.category"
type="select"
:border="true"
:clearable="false"
placeholder=""
borderColor="#562511"
@click="showSelect(index)"
></u-input> -->
</view>
<view class="item u-m-l-10" @click="showKeyboardFunc(index)">{{item.amount}}</view>
<!-- <u-input
class="ipt u-m-l-10"
v-model="item.amount"
type="number"
:border="true"
:clearable="false"
:disabled="true"
placeholder=""
borderColor="#562511"
@click="showKeyboardFunc(index)"
></u-input> -->
</view>
<u-icon v-if="index > 0" name="minus" color="#562511" class="u-m-l-10" @click="reduce(index)"></u-icon>
</view>
<view class="line u-m-t-15"></view>
</view>
</view>
<view class="bottom u-flex u-col-top">
<view class="add u-flex u-row-center" @click="add">+ 新增捐赠</view>
<view class="sure u-flex u-row-center" @click="sure">确认支付</view>
</view>
<u-gap height="150"></u-gap>
<u-select v-model="show" :list="list" @confirm="selectComleted"></u-select>
<u-keyboard mode="number" :tips="tips" @change="valChange" @backspace="backspace" v-model="showKeyboard"></u-keyboard>
</view>
</template>
<script>
export default {
data() {
return {
browser: '',
temple: '',
machineNo: '',
form: {
master: '',
name: '',
phone: '',
wish: ''
},
list: [],
show: false,
showKeyboard: false,
tips: '',
index: 0,
categories: [
{
category: '',
amount: ''
}
],
labelStyle: {
fontWeight: 'bold',
fontSize: '36rpx',
color: '#562511'
}
};
},
onLoad() {
this.browser = this.browserJudgment();
3 months ago
// if (this.browser == 'Other') {
// uni.redirectTo({
// url:'../error/error'
// })
// }
5 months ago
1 year ago
this.getTempleAndMachineNo();
this.getCategories();
5 months ago
3 months ago
// if(this.temple === '能仁寺'){
// uni.reLaunch({
// url:'../underMaintenance/underMaintenance'
// })
// }
1 year ago
},
methods: {
valChange(val) {
if ('.' == val) {
if ('' == this.categories[this.index].amount || this.categories[this.index].amount.indexOf('.') > -1) {
return;
}
}
if (this.categories[this.index].amount.indexOf('.') > -1) {
if (this.categories[this.index].amount.split('.')[1].length >=2) {
return;
}
}
this.categories[this.index].amount += val;
this.tips = this.categories[this.index].amount;
console.log(this.categories[this.index].amount);
},
backspace() {
if (this.categories[this.index].amount.length) this.categories[this.index].amount = this.categories[this.index].amount.substr(0, this.categories[this.index].amount.length - 1);
this.tips = this.categories[this.index].amount;
console.log(this.categories[this.index].amount);
},
browserJudgment() {
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.match(/Alipay/i) == 'alipay') {
return 'Ali';
} else if (userAgent.match(/MicroMessenger/i) == 'micromessenger') {
return 'Wx';
} else {
return 'Other';
}
},
getTempleAndMachineNo() {
var url = window.location.href;
console.log(url);
console.log(url.indexOf('temple'));
if (url.indexOf('temple') > -1) {
var obj = this.getAllUrlParams(url);
this.machineNo = obj.machineNo;
switch (obj.temple) {
case '1':
this.temple = '大佛寺';
break;
case '2':
this.temple = '能仁寺';
break;
case '3':
this.temple = '百花寺';
break;
}
5 months ago
1 year ago
}
},
getAllUrlParams(url) {
var obj = {};
if (!url) {
return obj;
}
url = url.split('?')[1];
var arr = url.split('&');
for (var i = 0; i < arr.length; i++) {
// 分离成key:value的形式
var a = arr[i].split('=');
var paramName = a[0];
var paramValue = a[1];
obj[paramName] = paramValue;
}
return obj;
},
getCategories() {
this.$u
.post('http://dafosi.zhihuizongjiao.cn:7878/api/app/getcategories', {
temple: this.temple
})
.then(res => {
if (1 == res.code) {
this.list = res.data;
}
});
},
donation() {
var register = JSON.stringify(this.categories);
var amount = 0;
for (var i = 0; i < this.categories.length; i++) {
amount += parseFloat(this.categories[i].amount);
}
this.$u
.post('http://dafosi.zhihuizongjiao.cn:7878/api/app/donation', {
browser: this.browser,
temple: this.temple,
master: this.form.master,
name: this.form.name,
phone: this.form.phone,
wish: this.form.wish,
register,
amount,
machineNo: this.machineNo
})
.then(res => {
if (1 == res.code) {
// 登记成功
// 跳转支付
window.location.href = res.data.url;
} else {
// 登记失败
uni.showModal({
title: '登记出错',
content: res.msg
});
}
});
},
add() {
var obj = new Object();
obj.category = '';
obj.amount = '';
this.categories.push(obj);
},
reduce(index) {
this.categories.splice(index, 1);
},
showSelect(index) {
this.index = index;
this.show = true;
},
showKeyboardFunc(index) {
this.tips = '';
this.index = index;
this.showKeyboard = true;
},
selectComleted(e) {
this.categories[this.index].category = e[0].label;
},
sure() {
var flag = true;
5 months ago
console.log(this.categories)
1 year ago
for (var i = 0; i < this.categories.length; i++) {
var obj = this.categories[i];
5 months ago
console.log(obj.amount)
if (obj.category == '' || obj.amount == '' || obj.amount == '0') {
1 year ago
flag = false;
}
}
if (flag) {
if (this.form.wish.length > 20) {
uni.showModal({
title: '温馨提示',
content: '祝福语最多20个字!',
showCancel: false
});
return;
}
this.donation();
} else {
uni.showModal({
title: '温馨提示',
content: '乐捐项目或功德金额为空!',
showCancel: false
});
}
}
}
};
</script>
<style lang="scss">
.content {
width: 100vw;
min-height: 100vh;
background: url(../../static/home/background.png);
background-size: cover;
.form {
width: 500rpx;
.ipt {
background: #ffffff;
color: '#562511';
}
}
.category-title {
width: 600rpx;
.title {
width: 50%;
height: 100%;
color: #562511;
font-size: 36rpx;
font-weight: bold;
text-shadow: 2rpx 3rpx 1rpx #ffffff;
}
}
.a {
width: 600rpx;
.b {
width: 600rpx;
.category {
width: 550rpx;
.item {
width: 270rpx;
height: 60rpx;
background: #ffffff;
color: '#562511';
border-radius: 5rpx;
border: solid #562511 0.25rpx;
line-height: 60rpx;
padding-left: 20rpx;
}
// .ipt {
// background: #ffffff;
// color: '#562511';
// background: #ff0000;
// }
}
}
.line {
width: 550rpx;
height: 2rpx;
background: #562511;
}
}
.bottom {
position: fixed;
bottom: 0rpx;
width: 750rpx;
height: 100rpx;
color: #562511;
font-size: 36rpx;
font-weight: bold;
.add {
width: 50%;
height: 100%;
background: #e8d19d;
border: solid #562511 0.25rpx;
border-radius: 10rpx;
}
.sure {
width: 50%;
height: 100%;
background: #e8d19d;
border: solid #562511 0.25rpx;
border-radius: 10rpx;
}
}
}
</style>