Commit 0953e6f4 authored by 秦威威's avatar 秦威威

缴费对接

parent 305c6217
......@@ -131,6 +131,18 @@
"navigationBarTitleText": "缴纳账单"
}
},
{
"path": "pages/jnzd_tcf",
"style": {
"navigationBarTitleText": "缴纳账单"
}
},
{
"path": "pages/jnzd_ccs",
"style": {
"navigationBarTitleText": "缴纳账单"
}
},
{
"path": "pages/jnzd_qt",
"style": {
......
......@@ -27,9 +27,8 @@
</view>
</view>
</view>
<u-popup :show="show" mode="center" @close="close" @open="open" round="20">
<view class="flex-column mlr-50" style="width:600rpx;">
<view class="flex-column mlr-50 ptb-30 vh-center" style="width:600rpx;">
<text class="fs-32 fw-600 mtb-20">选择小区</text>
<scroll-view scroll-y class="h-400">
<view v-for="(item, index) in listXq" :key="index" @click="onSelect(index)">
......@@ -39,13 +38,13 @@
</view>
</view>
</scroll-view>
<view class="mt-40" @click="onSubmit()">
<text class="plr-80 ptb-12 br-12" style="background:#1FCA7C;color: #fff;">下一步</text>
<view @click="onSubmit()" class="w-250 h-60 lh-60 br-12 mt-20" style="background:#1FCA7C;color: #fff;">
下一步
</view>
</view>
</u-popup>
<u-popup :show="showHh" mode="center" @close="closeHh" @open="openHh" round="20">
<view class="flex-column mlr-50" style="width:600rpx;">
<view class="flex-column mlr-50 ptb-30 vh-center" style="width:600rpx;">
<text class="fs-32 fw-600 mtb-20">楼栋号/单元号/户号</text>
<scroll-view scroll-y class="h-400">
<view v-for="(item, index) in listHh" :key="index" @click="onSelectHh(index)">
......@@ -54,8 +53,9 @@
</view>
</view>
</scroll-view>
<view class="mt-40" @click="onSubmitHh()">
<text class="plr-80 ptb-12 br-12" style="background:#1FCA7C;color: #fff;">完成</text>
<view @click="onSubmitHh()" class="w-250 h-60 lh-60 br-12 mt-20"
style="background:#1FCA7C;color: #fff;">
完成
</view>
</view>
</u-popup>
......@@ -203,6 +203,7 @@
}
this.$request(params).then(res => {
this.$wskj.toast("设置成功")
this.userInfo()
})
},
userInfo() {
......
......@@ -69,13 +69,13 @@
getUserInfo() {
const params = {
url: '/api/login/userInfo',
loadingTip: '',
method: 'GET',
data: {}
}
this.$request(params).then(res => {
this.userInfo = res.data
uni.setStorageSync('userInfo', res.data)
this.userInfo = res.data
})
},
onClick(index) {
......@@ -92,7 +92,7 @@
return
}
if (index == 1) {
this.$wskj.to("/pagesMain/pages/bxbs")
this.$wskj.to("/pagesMain/pages/bxbs_lsgd")
return
}
if (index == 2) {
......
......@@ -10,7 +10,7 @@
style="flex: 1;background: #FFFFFF;"
:style="{ color: index==0?'#FF682D':index==1?'#EEA616':index==2?'#1FCA7C':'#23BBEE'}"
v-for="(item, index) in 4" :key="index">
<text class="mt-20 fs-36">25</text>
<text class="mt-20 fs-36">{{numberList[(index+1)]}}</text>
<text class="mb-20 fs-24">{{index==0?'待处理':index==1?'待支付':index==2?'已完成':index==3?'已取消':''}}</text>
<view v-if="index==tabIndex"
style="background: #27CC81;height: 10rpx;width: 100%;border-radius: 12rpx;">
......@@ -21,7 +21,7 @@
</view>
</view>
<view class="overflow-y">
<scroll-view scroll-y style="height: 100%;">
<scroll-view scroll-y style="height: 100%;" v-if="list.length!=0">
<view v-for="(item, index) in list" :key="index" @click="onCz('详情',index)">
<view class="flex-column br-12 mt-30 mlr-24 pad-20"
style="box-shadow: 0px 0px 15px 1px rgba(142,142,142,0.16);background: white;">
......@@ -49,7 +49,12 @@
</view>
</view>
</view>
</scroll-view>
<view style="padding-top: 300rpx;">
<u-empty v-if="list.length==0" mode="data"></u-empty>
</view>
</view>
</view>
......@@ -62,6 +67,7 @@
type: 0,
tabIndex: 0,
list: [],
numberList: '',
};
},
onLoad(e) {
......@@ -69,6 +75,7 @@
},
onShow() {
this.getList()
this.getNumberList()
},
methods: {
onClick(index) {
......@@ -89,6 +96,16 @@
return
}
},
getNumberList() {
const params = {
url: '/api/repairs/userCountAll',
method: 'GET',
}
this.$request(params).then(res => {
this.numberList = res.data
})
},
getList() {
const params = {
url: '/api/repairs/userListAll?state=' + (this.tabIndex + 1),
......@@ -106,6 +123,7 @@
}
this.$request(params).then(res => {
this.getList()
this.getNumberList()
})
}
......
......@@ -45,8 +45,8 @@
<text class="name">手机号</text>
</view>
<view style="flex: 1;">
<input class="" style="text-align: left;" placeholder="请输入手机号" placeholder-style="color:#999999"
v-model="data.guestPhone" />
<input class="" style="text-align: left;" type="tel" maxlength="11" placeholder="请输入手机号"
placeholder-style="color:#999999" v-model="data.guestPhone" />
</view>
</view>
<view class="list-item">
......@@ -78,10 +78,10 @@
</view>
<view class="mt-65">
<text class="plr-100 ptb-25 br-12 fs-30" style="background:#1FCA7C;color: #fff;" @click="onAdd">提交</text>
<text class="plr-100 ptb-25 br-12 fs-30" style="background:#1FCA7C;color: #fff;" @click="onAdd()">提交</text>
</view>
<u-popup :show="show" mode="center" @close="close" @open="open" round="20">
<view class="flex-column mlr-50" style="width:600rpx;">
<view class="flex-column mlr-50 ptb-30 vh-center" style="width:600rpx;">
<text class="fs-32 fw-600 mtb-20">选择小区</text>
<scroll-view scroll-y class="h-400">
<view v-for="(item, index) in listXq" :key="index" @click="onSelect(index)">
......@@ -91,8 +91,8 @@
</view>
</view>
</scroll-view>
<view class="mt-40" @click="onSubmit()">
<text class="plr-80 ptb-12 br-12" style="background:#1FCA7C;color: #fff;">下一步</text>
<view @click="onSubmit()" class="w-250 h-60 lh-60 br-12 mt-20" style="background:#1FCA7C;color: #fff;">
完成
</view>
</view>
</u-popup>
......@@ -180,6 +180,7 @@
const params = {
url: '/api/login/sendSmsCode',
method: 'GET',
loadingTip: '',
data: {
mobile: this.data.guestPhone
}
......@@ -216,11 +217,14 @@
}
const params = {
url: '/api/guest/add',
loadingTip: '加载中...',
loadingTip: '',
data: this.data
}
this.$request(params).then(res => {
this.$wskj.toast('提交成功')
setTimeout(() => {
this.$wskj.goBack(1)
}, 600)
})
},
open() {
......
......@@ -32,7 +32,8 @@
</view>
<view class="flex ptb-25" style="border-bottom: 1rpx solid #D9D9D9;">
<text class="fs-32 fw-700 mr-30"></text>
<input style="flex: 1;text-align: left;font-size: 30rpx;" placeholder="输入缴费金额" />
<input @input="input" style="flex: 1;text-align: left;font-size: 30rpx;" type="digit"
placeholder="输入缴费金额" />
</view>
<view class="fullscreen-btn" style="margin: 0;margin-top: 60rpx;" @click="onSubmit()">
立即缴费
......@@ -48,9 +49,9 @@
return {
indexTab: 0,
type: 1,
money: 20,
money: '20',
userinfo: '',
price: '',
};
},
onLoad(options) {
......@@ -59,6 +60,16 @@
},
methods: {
input(e) {
if (this.$wskj.isNull(e.detail.value)) {
this.indexTab = 0
this.money = "20"
} else {
this.indexTab = -1
this.money = e.detail.value
}
console.log(this.money)
},
onClickPrice(index) {
this.indexTab = index
this.money = (index + 1) * 20
......
<template>
<view class="center plr-25">
<view class="flex-column br-12 fs-28 mt-30" style="background: white;">
<text class="fs-32 fw-700 mt-30" style="text-align: left;padding-left: 30rpx;">储藏室出租</text>
<!-- <text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">储藏室</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;" @click="openCar">
<text>{{carNumber==''?"请选择":carNumber}}</text>
<image class="h-30 w-30" src="/static/icon_xjt.png"></image>
</view> -->
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">缴费时长</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;" @click="open">
<text>{{monthsNumber==''?"请选择":monthsNumber}}</text>
<image class="h-30 w-30" src="/static/icon_xjt.png"></image>
</view>
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">缴费金额</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;">
<text>{{money||0}}</text>
</view>
</view>
<view class="fullscreen-btn" style="margin: 0;margin-top: 60rpx;" @click="onSubmit">
立即缴费
</view>
<u-picker :show="show" :columns="columns" closeOnClickOverlay="true" @cancel="close" @close="close"
@confirm="confirm"></u-picker>
<u-picker :show="carShow" :columns="list" closeOnClickOverlay="true" @cancel="closeCar" @close="closeCar"
@confirm="confirmCar"></u-picker>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
carShow: false,
list: [
[]
],
columns: [
['1个月', '3个月', '6个月', '9个月', '12个月']
],
monthsNumber: '',
carNumber: '',
userinfo: '',
carportId: '',
money: '',
};
},
onLoad(options) {
this.type = options.type
this.userinfo = uni.getStorageSync("userInfo")
this.userinfo.carportVoList.forEach(item => {
this.list[0].push(item.carportNumber)
})
},
methods: {
open() {
this.show = true
},
close() {
this.show = false
},
openCar() {
this.carShow = true
},
closeCar() {
this.carShow = false
},
confirm(e) {
this.show = false
this.monthsNumber = e.value[0]
this.money = parseFloat(this.monthsNumber.replace('个月', '')) * parseFloat(this.userinfo.carportVoList[e
.indexs[0]].monthMoney);
this.money = this.money.toFixed(2)
console.log("LMG", this.money)
},
confirmCar(e) {
this.carShow = false
this.carNumber = e.value[0]
console.log("LMG", e.value[0])
this.carportId = this.userinfo.carportVoList[e.indexs[0]].carportId
},
onSubmit() {
if (this.$wskj.isNull(this.money)) {
this.$wskj.toast('请选择缴费时长')
return
}
this.onCjdd()
},
onCjdd() {
const params = {
url: '/api/liveBill/add',
loadingTip: '',
data: {
money: this.money,
type: 6, //类型(1电费 2水费 3物业费 4车位管理费 5车位出租费 6储藏室出租 7其他费用)
duration: this.monthsNumber.replace('个月', ''), //缴费时长(月)
}
}
this.$request(params).then(res => {
this.pay(res.data.billId)
})
},
pay(orderId) {
const params = {
url: '/api/payRecord/pay',
loadingTip: '',
data: {
orderId: orderId,
amount: this.money,
payBizCode: "PRESTORE",
}
}
this.$request(params).then(res => {
uni.requestPayment({
provider: 'wxpay',
appid: res.data.data.appId, // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
nonceStr: res.data.data.nonceStr, // 随机字符串
package: res.data.data.package, // 固定值
timeStamp: res.data.data.timeStamp, // 时间戳(单位:秒)
paySign: res.data.data.paySign, // 签名,这里用的 MD5/RSA 签名
signType: 'MD5',
success: (res) => {
},
fail: (err) => {
console.log(err);
}
});
})
},
}
};
</script>
<style>
.center {
height: 100vh;
display: flex;
flex-direction: column;
background: #F2F2F2;
}
.grid-container {
display: flex;
flex-wrap: wrap;
justify-content: space-around; // 可以根据需求调整元素的水平排列方式,这里是均匀分布
align-items: center; // 垂直方向居中对齐
}
.grid-item {
width: 32%;
height: 80rpx; // 宫格高度
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: #F2F2F2;
border-radius: 12rpx;
margin-top: 10rpx;
}
</style>
\ No newline at end of file
......@@ -14,7 +14,7 @@
</view>
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">缴费金额</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;">
<text>0</text>
<text>{{money||0}}</text>
</view>
</view>
<view class="fullscreen-btn" style="margin: 0;margin-top: 60rpx;" @click="onSubmit">
......@@ -34,19 +34,25 @@
show: false,
carShow: false,
list: [
['1', '2', '3', '4', '5']
[]
],
columns: [
['1个月', '3个月', '6个月', '9个月', '12个月']
],
monthsNumber: '',
carNumber: '',
userinfo: '',
carportId: '',
money: '0',
};
},
onLoad(options) {
this.type = options.type
this.userinfo = uni.getStorageSync("userInfo")
this.userinfo.carportVoList.forEach(item => {
this.list[0].push(item.carportNumber)
})
},
methods: {
open() {
......@@ -66,14 +72,27 @@
confirm(e) {
this.show = false
this.monthsNumber = e.value[0]
console.log("LMG", e.value[0])
this.money = parseFloat(this.monthsNumber.replace('个月', '')) * parseFloat(this.userinfo.carportVoList[e
.indexs[0]].monthMoney);
this.money = this.money.toFixed(2)
console.log("LMG", this.money)
},
confirmCar(e) {
this.carShow = false
this.carNumber = e.value[0]
console.log("LMG", e.value[0])
this.carportId = this.userinfo.carportVoList[e.indexs[0]].carportId
},
onSubmit() {
if (this.$wskj.isNull(this.carportId)) {
this.$wskj.toast('请选择车位号')
return
}
if (this.$wskj.isNull(this.money)) {
this.$wskj.toast('请选择缴费时长')
return
}
this.onCjdd()
},
onCjdd() {
......@@ -81,9 +100,10 @@
url: '/api/liveBill/add',
loadingTip: '',
data: {
money: this.monthsNumber.replace('个月', ''),
money: this.money,
type: 5, //类型(1电费 2水费 3物业费 4车位管理费 5车位出租费 6储藏室出租 7其他费用)
duration: this.monthsNumber.replace('个月', '') //缴费时长(月)
duration: this.monthsNumber.replace('个月', ''), //缴费时长(月)
carportId: this.carportId
}
}
this.$request(params).then(res => {
......@@ -96,7 +116,7 @@
loadingTip: '',
data: {
orderId: orderId,
amount: this.monthsNumber.replace('个月', ''),
amount: this.money,
payBizCode: "PRESTORE",
}
}
......
<template>
<view class="center plr-25">
<view class="flex-column br-12 fs-28 mt-30" style="background: white;">
<text class="fs-32 fw-700 mt-30" style="text-align: left;padding-left: 30rpx;">车位管理费</text>
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">车位号</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;" @click="openCar">
<text>{{carNumber==''?"请选择":carNumber}}</text>
<image class="h-30 w-30" src="/static/icon_xjt.png"></image>
</view>
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">缴费时长</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;" @click="open">
<text>{{monthsNumber==''?"请选择":monthsNumber}}</text>
<image class="h-30 w-30" src="/static/icon_xjt.png"></image>
</view>
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">缴费金额</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;">
<text>{{money||0}}</text>
</view>
</view>
<view class="fullscreen-btn" style="margin: 0;margin-top: 60rpx;" @click="onSubmit">
立即缴费
</view>
<u-picker :show="show" :columns="columns" closeOnClickOverlay="true" @cancel="close" @close="close"
@confirm="confirm"></u-picker>
<u-picker :show="carShow" :columns="list" closeOnClickOverlay="true" @cancel="closeCar" @close="closeCar"
@confirm="confirmCar"></u-picker>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
carShow: false,
list: [
[]
],
columns: [
['1个月', '3个月', '6个月', '9个月', '12个月']
],
monthsNumber: '',
carNumber: '',
userinfo: '',
carportId: '',
money: '',
};
},
onLoad(options) {
this.type = options.type
this.userinfo = uni.getStorageSync("userInfo")
this.userinfo.carportVoList.forEach(item => {
this.list[0].push(item.carportNumber)
})
},
methods: {
open() {
this.show = true
},
close() {
this.show = false
},
openCar() {
this.carShow = true
},
closeCar() {
this.carShow = false
},
confirm(e) {
this.show = false
this.monthsNumber = e.value[0]
this.money = parseFloat(this.monthsNumber.replace('个月', '')) * parseFloat(this.userinfo.carportVoList[e
.indexs[0]].monthMoney);
this.money = this.money.toFixed(2)
console.log("LMG", this.money)
},
confirmCar(e) {
this.carShow = false
this.carNumber = e.value[0]
console.log("LMG", e.value[0])
this.carportId = this.userinfo.carportVoList[e.indexs[0]].carportId
},
onSubmit() {
if (this.$wskj.isNull(this.carportId)) {
this.$wskj.toast('请选择车位号')
return
}
if (this.$wskj.isNull(this.money)) {
this.$wskj.toast('请选择缴费时长')
return
}
this.onCjdd()
},
onCjdd() {
const params = {
url: '/api/liveBill/add',
loadingTip: '',
data: {
money: this.money,
type: 4, //类型(1电费 2水费 3物业费 4车位管理费 5车位出租费 6储藏室出租 7其他费用)
duration: this.monthsNumber.replace('个月', ''), //缴费时长(月)
carportId: this.carportId
}
}
this.$request(params).then(res => {
this.pay(res.data.billId)
})
},
pay(orderId) {
const params = {
url: '/api/payRecord/pay',
loadingTip: '',
data: {
orderId: orderId,
amount: this.money,
payBizCode: "PRESTORE",
}
}
this.$request(params).then(res => {
uni.requestPayment({
provider: 'wxpay',
appid: res.data.data.appId, // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
nonceStr: res.data.data.nonceStr, // 随机字符串
package: res.data.data.package, // 固定值
timeStamp: res.data.data.timeStamp, // 时间戳(单位:秒)
paySign: res.data.data.paySign, // 签名,这里用的 MD5/RSA 签名
signType: 'MD5',
success: (res) => {
},
fail: (err) => {
console.log(err);
}
});
})
},
}
};
</script>
<style>
.center {
height: 100vh;
display: flex;
flex-direction: column;
background: #F2F2F2;
}
.grid-container {
display: flex;
flex-wrap: wrap;
justify-content: space-around; // 可以根据需求调整元素的水平排列方式,这里是均匀分布
align-items: center; // 垂直方向居中对齐
}
.grid-item {
width: 32%;
height: 80rpx; // 宫格高度
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: #F2F2F2;
border-radius: 12rpx;
margin-top: 10rpx;
}
</style>
\ No newline at end of file
......@@ -39,43 +39,43 @@
</view>
</view>
</view>
<text v-if="indexTab==1" class="fs-30 fw-700 ">未缴金额\n¥1355.04</text>
<text v-if="indexTab==1" class="fs-30 fw-700 ">未缴金额\n¥0.00</text>
</view>
</view>
<view class="overflow-y" style="background: white;">
<scroll-view scroll-y style="height:100%;">
<view v-if="indexTab==1" v-for="(item, index) in 8" :key="index" @click="onClick(index)">
<view v-if="indexTab==1" v-for="(item, index) in djList" :key="index" @click="onClick(index)">
<view class="flex-column fs-24 mar-20 pb-20" style="border-bottom: 1rpx solid #E9E9E9;">
<view class="flex v-center fs-28">
<text>2025年01月</text>
<text style="color: #EE0101;">108.23</text>
<text>{{item.month}}</text>
<text style="color: #EE0101;">{{item.money}}</text>
<image style="width: 20rpx;height: 20rpx;" src="/pagesMain/static/icon_zksq_1.png">
</image>
</view>
<view v-if="indexNumber==index" class="flex-column mt-20 fs-24"
style="color: #999999;text-align: left;">
<text>缴费项目:物业管理费</text>
<text>房屋面积:72.15</text>
<text>单价/平米:¥1.3</text>
<text>金额:93.8</text>
<text>缴费项目:车位管理费</text>
<text>单价/月:¥{{item.price}}</text>
<text>金额:{{item.money}}</text>
</view>
</view>
</view>
<view v-if="indexTab==2" v-for="(item, index) in 10" :key="index" @click="onClick(index)">
<view v-if="indexTab==2" v-for="(item, index) in jfjlList" :key="index" @click="onClick(index)">
<view class="flex-column fs-24 mb-20" style="text-align: left;">
<text class="fs-28 h-80 lh-80 plr-25" style="background:#F2F2F2;">2024年6月</text>
<text class="fs-28 h-80 lh-80 plr-25"
style="background:#F2F2F2;">{{item.updateTime.slice(0, 7)}}</text>
<view class="flex-row-between plr-25 mtb-20">
<text style="color: #999999;">缴费渠道:线上缴费</text>
<text>1355.04</text>
<text>{{item.payAmount}}</text>
</view>
<text class="plr-25" style="color: #999999;">06-06 14:29</text>
<text class="plr-25" style="color: #999999;">{{item.updateTime.slice(5)}}</text>
</view>
</view>
</scroll-view>
</view>
<u-picker :show="show" :columns="columns" closeOnClickOverlay="true" @cancel="close" @close="close"
@confirm="confirm"></u-picker>
</view>
</view>
</template>
<script>
......@@ -87,22 +87,28 @@
type: 0,
show: false,
columns: [
['T01', 'T02', 'T03', 'T04', 'T05']
[]
],
carNumber: '',
userinfo: '',
jfjlList: [],
djList: [],
carportId: '',
};
},
onLoad(options) {
this.type = options.type
this.userinfo = uni.getStorageSync("userInfo")
this.userinfo.carportVoList.forEach(item => {
this.columns[0].push(item.carportNumber)
})
this.getJfjlList()
},
methods: {
onTabClick(index) {
if (index == 0) {
this.$wskj.to("/pagesMain/pages/jnzd_czf")
this.$wskj.to("/pagesMain/pages/jnzd_tcf")
return
}
this.indexTab = index
......@@ -119,8 +125,28 @@
confirm(e) {
this.show = false
this.carNumber = e.value[0]
console.log("LMG", e.value[0])
this.carportId = this.userinfo.carportVoList[e.indexs[0]].carportId
this.getDjList()
},
//类型(1电费 2水费 3物业费 4车位管理费 5车位出租费 6储藏室出租 7其他费用)
getDjList() {
const params = {
url: '/api/liveBill/listAll?type=4&carportId=' + this.carportId,
method: 'GET',
}
this.$request(params).then(res => {
this.djList = res.data
})
},
getJfjlList() {
const params = {
url: '/api/payRecord/listAll?type=4',
method: 'GET',
}
this.$request(params).then(res => {
this.jfjlList = res.data
})
},
}
};
</script>
......
......@@ -18,7 +18,7 @@
</view>
<text class="fs-28 mt-30" style="text-align: left;padding-left: 30rpx;">缴费金额</text>
<view class="flex-row-between mar-30 br-4 pad-25" style="background: #F2F2F2;">
<text>0</text>
<text>{{money}}</text>
</view>
</view>
......@@ -40,6 +40,7 @@
],
monthsNumber: '',
userinfo: '',
money: 0,
};
},
onLoad(options) {
......@@ -57,9 +58,15 @@
confirm(e) {
this.show = false
this.monthsNumber = e.value[0]
console.log("LMG", e.value[0])
this.money = parseFloat(this.monthsNumber.replace('个月', '')) * parseFloat(this.userinfo.monthMoney);
this.money = this.money.toFixed(2)
console.log(this.money)
},
onSubmit() {
if (this.$wskj.isNull(this.money)) {
this.$wskj.toast('请选择缴费时长')
return
}
this.onCjdd()
},
onCjdd() {
......@@ -67,7 +74,7 @@
url: '/api/liveBill/add',
loadingTip: '',
data: {
money: this.monthsNumber.replace('个月', ''),
money: this.money,
type: 3, //类型(1电费 2水费 3物业费 4车位管理费 5车位出租费 6储藏室出租 7其他费用)
duration: this.monthsNumber.replace('个月', '') //缴费时长(月)
}
......@@ -82,7 +89,7 @@
loadingTip: '',
data: {
orderId: orderId,
amount: this.monthsNumber.replace('个月', ''),
amount: this.money,
payBizCode: "PRESTORE",
}
}
......
......@@ -18,41 +18,41 @@
</view>
</view>
</view>
<text v-if="indexTab==1" class="fs-30 fw-700 ">未缴金额\n¥1355.04</text>
<text v-if="indexTab==1" class="fs-30 fw-700 ">未缴金额\n¥0.00</text>
</view>
</view>
<view class="overflow-y" style="background: white;">
<scroll-view scroll-y style="height:100%;">
<view v-if="indexTab==1" v-for="(item, index) in jfjlList" :key="index" @click="onClick(index)">
<view v-if="indexTab==1" v-for="(item, index) in djList" :key="index" @click="onClick(index)">
<view class="flex-column fs-24 mar-20 pb-20" style="border-bottom: 1rpx solid #E9E9E9;">
<view class="flex v-center fs-28">
<text>2025年01月</text>
<text style="color: #EE0101;">{{item.payAmount}}</text>
<text>{{item.month}}</text>
<text style="color: #EE0101;">{{item.money}}</text>
<image style="width: 20rpx;height: 20rpx;" src="/pagesMain/static/icon_zksq_1.png">
</image>
</view>
<view v-if="indexNumber==index" class="flex-column mt-20 fs-24"
style="color: #999999;text-align: left;">
<text>缴费项目:物业管理费</text>
<text>房屋面积:72.15</text>
<text>单价/平米:¥1.3</text>
<text>金额:{{item.payAmount}}</text>
<text>房屋面积:{{item.sqm}}</text>
<text>单价/平米:¥{{item.price}}</text>
<text>金额:{{item.money}}</text>
</view>
</view>
</view>
<view v-if="indexTab==2" v-for="(item, index) in jfjlList" :key="index" @click="onClick(index)">
<view class="flex-column fs-24 mb-20" style="text-align: left;">
<text class="fs-28 h-80 lh-80 plr-25" style="background:#F2F2F2;">{{item.month}}</text>
<text class="fs-28 h-80 lh-80 plr-25"
style="background:#F2F2F2;">{{item.updateTime.slice(0, 7)}}</text>
<view class="flex-row-between plr-25 mtb-20">
<text style="color: #999999;">缴费渠道:线上缴费</text>
<text>{{item.payAmount}}</text>
</view>
<text class="plr-25" style="color: #999999;">{{item.month}}</text>
<text class="plr-25" style="color: #999999;">{{item.updateTime.slice(5)}}</text>
</view>
</view>
</scroll-view>
</view>
</view>
</template>
......@@ -90,7 +90,7 @@
//类型(1电费 2水费 3物业费 4车位管理费 5车位出租费 6储藏室出租 7其他费用)
getDjList() {
const params = {
url: '/api/liveBill/listAll?type=1',
url: '/api/liveBill/listAll?type=3',
method: 'GET',
}
this.$request(params).then(res => {
......@@ -99,7 +99,7 @@
},
getJfjlList() {
const params = {
url: '/api/payRecord/listAll?type=1',
url: '/api/payRecord/listAll?type=3',
method: 'GET',
}
this.$request(params).then(res => {
......
......@@ -106,7 +106,7 @@
return
}
if (index == 5) {
this.$wskj.to("/pagesMain/pages/jnzd_czf?type=1")
this.$wskj.to("/pagesMain/pages/jnzd_ccs")
return
}
if (index == 6) {
......
......@@ -10,7 +10,7 @@
style="flex: 1;background: #FFFFFF;"
:style="{ color: index==0?'#FF682D':index==1?'#EEA616':index==2?'#1FCA7C':'#23BBEE'}"
v-for="(item, index) in 3" :key="index">
<text class="mt-20 fs-36">25</text>
<text class="mt-20 fs-36">{{numberList[(index+1)]}}</text>
<text class="mb-20 fs-24">{{index==0?'待处理':index==1?'已完成':index==2?'已取消':''}}</text>
<view v-if="index==tabIndex"
style="background: #27CC81;height: 10rpx;width: 100%;border-radius: 12rpx;">
......@@ -21,7 +21,7 @@
</view>
</view>
<view class="overflow-y">
<scroll-view scroll-y style="height: 100%;">
<scroll-view scroll-y style="height: 100%;" v-if="list.length!=0">
<view v-for="(item, index) in list" :key="index" @click="onCz('详情',index)">
<view class="flex-column br-12 mt-30 mlr-24 pad-20"
style="box-shadow: 0px 0px 15px 1px rgba(142,142,142,0.16);background: white;">
......@@ -49,6 +49,9 @@
</view>
</view>
</scroll-view>
<view style="padding-top: 300rpx;">
<u-empty v-if="list.length==0" mode="data"></u-empty>
</view>
</view>
</view>
......@@ -61,6 +64,7 @@
type: 0,
tabIndex: 0,
list: [],
numberList: '',
};
},
onLoad(e) {
......@@ -68,6 +72,7 @@
},
onShow() {
this.getList()
this.getNumberList()
},
methods: {
onClick(index) {
......@@ -84,6 +89,16 @@
return
}
},
getNumberList() {
const params = {
url: '/api/comment/userCountAll',
method: 'GET',
}
this.$request(params).then(res => {
this.numberList = res.data
})
},
getList() {
const params = {
url: '/api/comment/userListAll?state=' + (this.tabIndex + 1),
......@@ -100,6 +115,7 @@
}
this.$request(params).then(res => {
this.getList()
this.getNumberList()
})
}
......
......@@ -82,7 +82,8 @@
},
methods: {
onPz() {
this.$wskj.to("/pagesMine/pages/dkpz")
const name = this.userInfo.name + '(' + (this.type == 0 ? '安保' : '保洁') + ')'
this.$wskj.to("/pagesMine/pages/dkpz?address=" + this.address + "&name=" + name)
},
onDw() {
const _this = this;
......
<template>
<view class="content">
<div></div>
<view class="takepicture" :style="{ 'height': allhight + 'px'}" v-show="isshow==true">
<!-- 头部 -->
<!-- <view class="mode">
......@@ -31,8 +30,11 @@
</view>
<!-- 底部 -->
<view class="bot" v-show="watermode">
<view class="left" @click="takeAlbum">
<!-- <view class="left" @click="takeAlbum">
<image src="/pagesMine/static/photo.png" mode=""></image>
</view> -->
<view class="left flex vh-center" style="color: white;" @click="$wskj.goBack(1)">
取消
</view>
<view class="center" @click="takePhotoAction">
<image src="/pagesMine/static/camera.png" mode=""></image>
......@@ -54,8 +56,18 @@
</view>
<!-- 水印1 -->
<cover-view class="cameraa">
<cover-view class="hour">{{nowTimes}}</cover-view>
<cover-view @click="getLocation" class="time">{{nowTime}} {{addRess?addRess:'选择地点'}}</cover-view>
<view class="flex " style="align-items: flex-end;">
<text class="fs-10 fs-50">
{{nowTimes}}
</text>
<text class="ml-40 fs-32">
{{nowTime}}
</text>
</view>
<view class="fs-28 mtb-20 mr-160">
<text style="white-space: normal;">{{addRess}}</text>
</view>
<view class="hour">{{txtName}}</view>
</cover-view>
......@@ -114,6 +126,10 @@
waterdraw: 1,
}
},
onLoad(e) {
this.addRess = e.address
this.txtName = e.name
},
mounted() {
// 注意,这里要用个变量存this,不然进到getSystemInfo后this指向会变化,找不到data变量
var _this = this
......@@ -184,6 +200,21 @@
console.log(that.w, that.h)
let ctx = uni.createCanvasContext('firstCanvas'); /** 创建画布 */
const maxWidth = 200; // 设置最大行宽
const lineHeight = 30; // 设置行高
let lines = []; // 存储每行文字
let line = ''; // 临时存储当前行文字
// 根据 maxWidth 分割文本,手动换行
for (let i = 0; i < that.addRess.length; i++) {
line += that.addRess[i];
if (ctx.measureText(line).width > maxWidth) { // 测量当前行的宽度
lines.push(line.substring(0, line.length - 1)); // 将当前行加入行数组
line = that.addRess[i]; // 从当前字符开始新的一行
}
}
lines.push(line); // 将最后一行加入数组
//将图片绘制到cancas内
ctx.drawImage(imginfo, 0, 0, ress.width, ress.height);
ctx.setFontSize(14); // 设置字体大小为 10px
......@@ -191,24 +222,27 @@
// ctx.setTextAlign("center")
let textToWidth = 25; // 绘制文本的左上角x坐标位置
let textToWidth1 = 100; // 绘制文本的左上角x坐标位置
let textToHeight1 = 150; // 绘制文本的左上角y坐标位置
let textToHeight2 = 170; // 绘制文本的左上角y坐标位置
let textToHeight3 = 190; // 绘制文本的左上角y坐标位置
let textToWidth1 = 120; // 绘制文本的左上角x坐标位置
let textToHeight1 = 140; // 绘制文本的左上角y坐标位置
//绘制的模板1
if (that.waterdraw == 1) {
// 绘制时间
ctx.setFontSize(25);
ctx.setFontSize(30);
ctx.fillText(that.nowTimes, textToWidth, textToHeight1);
// 绘制日期
ctx.setFontSize(16);
ctx.setFontSize(20);
ctx.fillText(that.nowTime, textToWidth1, textToHeight1);
// 绘制地点
ctx.setFontSize(14);
ctx.fillText(that.addRess + "郑州市", textToWidth, textToHeight2);
ctx.setFontSize(16);
//ctx.fillText(that.addRess, textToWidth, textToHeight2);
let y = 30; // 起始 y 坐标
for (let i = 0; i < lines.length; i++) {
ctx.fillText(lines[i], textToWidth, textToHeight1 + y); // 绘制当前行
y += lineHeight; // 换行
}
// 绘制名称
ctx.setFontSize(14);
ctx.fillText("小木(安保)", textToWidth, textToHeight3);
ctx.setFontSize(16);
ctx.fillText(that.txtName, textToWidth, textToHeight1 + y);
}
// 绘制完成后,在下一个事件循环将 canvas 内容导出为临时图片地址
ctx.draw(false, () => {
......@@ -285,6 +319,7 @@
this.nowTimes = timers
this.nowTime = timer + ' ' + '星期' + todayWeekday;
this.nowTime = timer;
},
getLocation() { //获取位置
var that = this
......@@ -488,17 +523,13 @@
/* 水印1显示 */
.cameraa {
width: 690upx;
height: 120upx;
display: flex;
justify-content: center;
flex-direction: column;
text-align: center;
color: #ffffff;
z-index: 200;
position: absolute;
left: 30upx;
bottom: 560upx;
left: 50upx;
top: 170upx;
font-size: 28upx;
}
......
......@@ -5,42 +5,42 @@
<text class="fs-32 fw-700 pad-30" style="text-align: left;">基本信息</text>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>姓名</text>
<text>张三</text>
<text>{{userInfo.name}}</text>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>手机号</text>
<text>张三</text>
<text>{{userInfo.mobile}}</text>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>身份证号</text>
<text>张三</text>
<text>{{userInfo.identityCard}}</text>
</view>
</view>
<view class="overflow-y">
<scroll-view scroll-y style="height: 100%;">
<view @click="onClickSelecte(index)" v-for="(item, index) in 5" :key="index">
<view @click="onClickSelecte(index)" v-for="(item, index) in houseList" :key="index">
<view class="flex-column br-12 fs-28 mt-30" style="background: #FFFFFF;">
<view class="fs-32 fw-700 pad-30 flex-row-between">
<text>房屋信息</text>
<image v-if="selecteIndex==index" class="w-45 h-45" src="/pagesMine/static/icon_fwxx_1.png">
<image v-if="selecteIndex==index" class="w-45 h-45" src="/pagesMine/static/icon_fwxx_2.png">
</image>
<image v-else class="w-45 h-45" src="/pagesMine/static/icon_fwxx_2.png"></image>
<image v-else class="w-45 h-45" src="/pagesMine/static/icon_fwxx_1.png"></image>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>小区</text>
<text>利达国宾中心</text>
<text>{{item.communityName}}</text>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>具体位置</text>
<text>1栋2单元205室</text>
<text>{{item.room}}</text>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>业主姓名</text>
<text>张三</text>
<text>{{item.name}}</text>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>业主手机号</text>
<text>177****1234</text>
<text>{{item.phone}}</text>
</view>
</view>
</view>
......@@ -48,7 +48,7 @@
</scroll-view>
</view>
<view class="h-140 pt-20">
<view class="fullscreen-btn">
<view class="fullscreen-btn" @click="onSubmit()">
确定
</view>
</view>
......@@ -59,41 +59,52 @@
export default {
data() {
return {
selecteIndex: 0
selecteIndex: -1,
userInfo: '',
houseList: [],
};
},
onLoad(options) {
this.userInfo = uni.getStorageSync('userInfo')
this.getHouseList()
},
methods: {
open() {
},
close() {
onClickSelecte(index) {
this.selecteIndex = index
},
onClick(index) {
if (index == 0) {
this.$wskj.to("/pagesMain/pages/tsby_submit?type=0")
return
}
if (index == 1) {
this.$wskj.to("/pagesMain/pages/tsby_submit?type=1")
onSubmit() {
if (this.selecteIndex == -1) {
this.$wskj.toast('请选择房屋')
return
}
if (index == 2) {
this.$wskj.to("/pagesMain/pages/tsby_lsgd")
return
this.setHouse()
},
getHouseList() {
const than = this;
const params = {
url: '/api/community/myRoomListAll',
method: 'GET',
}
if (index == 3) {
this.$wskj.to("/pagesMain/pages/fwgz")
return
than.$request(params).then(res => {
than.houseList = res.data
than.houseList.forEach(function(item, index) {
if (item.room == than.userInfo.room) {
than.selecteIndex = index
}
});
})
},
onClickSelecte(index) {
this.selecteIndex = index
setHouse() {
const params = {
url: '/api/community/cut/' + this.houseList[this.selecteIndex].communityId + "/" + this.houseList[
this.selecteIndex].proprietorId,
}
this.$request(params).then(res => {
this.$wskj.toast("设置成功")
})
},
}
};
</script>
......
......@@ -142,7 +142,8 @@
url: '/api/familyMember/update',
data: {
id: this.data.id,
name: this.data.name
name: this.data.name,
phone: this.data.phone
}
}
this.$request(params).then(res => {
......
......@@ -7,7 +7,6 @@
<view class="flex v-center">
<image class="h-42 w-42" src="/static/icon_my_fw.png"></image>
<text class="fs-28">{{userInfo.communityName}}</text>
<image class="h-25 w-25 mt-5" src="/static/icon_r.png"></image>
</view>
<text class="fs-24 h-54 lh-54 mt-30"
style="background: linear-gradient( 90deg, #CAF6E2 0%, #FFFFFF 100%);">
......
......@@ -21,7 +21,7 @@
</view>
</view>
<view class="overflow-y">
<scroll-view scroll-y style="height: 100%;">
<scroll-view scroll-y style="height: 100%;" v-if="list.length!=0">
<view v-for="(item, index) in list" :key="index" @click="onCz('详情',index)">
<view class="flex-column br-12 mt-30 mlr-24 pad-20"
style="box-shadow: 0px 0px 15px 1px rgba(142,142,142,0.16);background: white;">
......@@ -49,6 +49,9 @@
</view>
</view>
</scroll-view>
<view style="padding-top: 300rpx;">
<u-empty v-if="list.length==0" mode="data"></u-empty>
</view>
<u-popup :show="show" mode="center" @close="close" @open="open" round="10">
<view class="flex-column mlr-50" style="width:600rpx;text-align: center;">
<text class="fs-32 fw-600 mtb-20">设置维修费用</text>
......@@ -74,6 +77,7 @@
list: [],
price: '',
repairsId: '',
numberList: '',
};
},
onLoad(e) {
......@@ -81,6 +85,7 @@
},
onShow() {
this.getList()
this.getNumberList()
},
methods: {
open() {
......@@ -113,6 +118,15 @@
}
},
getNumberList() {
const params = {
url: '/api/repairs/maintainCountAll',
method: 'GET',
}
this.$request(params).then(res => {
this.numberList = res.data
})
},
getList() {
const params = {
url: '/api/repairs/maintainListAll?state=' + (this.tabIndex + 1),
......
......@@ -6,18 +6,18 @@
<text class="fs-32 fw-700 pad-30" style="text-align: left;">基本信息</text>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>姓名</text>
<text>张三</text>
<text>{{userInfo.accountName}}</text>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;" @click="open">
<text>性别</text>
<view class="flex v-center">
<text>{{sex==''?"请选择":sex}}</text>
<text>{{userInfo.sex=='0'?"":userInfo.sex=='1'?"":"请选择"}}</text>
<image class="w-25 h-30 ml-10" src="/static/icon_r.png"></image>
</view>
</view>
<view class="flex-row-between pad-30" style="border-bottom: 1rpx solid #E9E9E9;">
<text>手机号</text>
<text>张三</text>
<text>{{userInfo.mobile}}</text>
</view>
</view>
......@@ -26,7 +26,7 @@
</scroll-view>
</view>
<view class="h-140 pt-20">
<view class="fullscreen-btn">
<view class="fullscreen-btn" @click="onClick()">
确定
</view>
</view>
......@@ -39,15 +39,15 @@
data() {
return {
show: false,
sex: '',
columns: [
['', '']
],
userInfo: ''
};
},
onLoad(options) {
this.userInfo = uni.getStorageSync('userInfo')
},
methods: {
open() {
......@@ -58,9 +58,20 @@
},
confirm(e) {
this.show = false
this.sex = e.value[0]
console.log("LMG", e.value[0])
this.userInfo.sex = e.value[0] == "" ? '0' : '1'
this.setSex(this.userInfo.sex)
},
onClick() {
this.$wskj.goBack(1)
},
setSex(e) {
const params = {
url: '/api/login/updateUserSex/' + e,
}
this.$request(params).then(res => {
})
},
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment