Merge remote-tracking branch 'origin/feature/yi' into feature/yi

This commit is contained in:
maguodong 2025-09-26 14:26:01 +08:00
commit 0d226b19ea
9 changed files with 126 additions and 72 deletions

View File

@ -52,4 +52,6 @@ export const apiArr = {
tradeQuery: "/api/v2/wechat/community-order-pay/trade-query", //缴费查单 tradeQuery: "/api/v2/wechat/community-order-pay/trade-query", //缴费查单
checkComm: "/api/v2/wechat/community/check-comm", //检查小区是否属于当前用户 checkComm: "/api/v2/wechat/community/check-comm", //检查小区是否属于当前用户
delPay: "/api/v2/wechat/community-order-pay/del", //检查小区是否属于当前用户
}; };

View File

@ -401,7 +401,7 @@ export default {
} }
}); });
}); });
this.currentMoney = money; this.currentMoney = money ? money.toFixed(2) : 0.00;
}, },
// //
itemsCheckChange(e, indes, index) { itemsCheckChange(e, indes, index) {
@ -425,7 +425,7 @@ export default {
} }
}); });
}); });
this.currentMoney = money; this.currentMoney = money ? money.toFixed(2) : 0.00;
}, },
// //
changePayType(e) { changePayType(e) {
@ -486,42 +486,42 @@ export default {
await request(apiArr.OrderPay, "POST", { order_pay_id: this.payInfoId }).then( await request(apiArr.OrderPay, "POST", { order_pay_id: this.payInfoId }).then(
async (res) => { async (res) => {
if (res && res.timeStamp && res.nonceStr && res.package && res.signType && res.paySign) { if (res && res.timeStamp && res.nonceStr && res.package && res.signType && res.paySign) {
// //
uni.requestPayment({ uni.requestPayment({
timeStamp: res.timeStamp, timeStamp: res.timeStamp,
nonceStr: res.nonceStr, nonceStr: res.nonceStr,
package: res.package, package: res.package,
signType: res.signType, signType: res.signType,
paySign: res.paySign, paySign: res.paySign,
success: (payRes) => { success: (payRes) => {
const params = { const params = {
order_pay_id: this.payInfoId, order_pay_id: this.payInfoId,
} }
request(apiArr.tradeQuery, "POST", params).then(res => { request(apiArr.tradeQuery, "POST", params).then(res => {
})
},
fail: (payErr) => {
uni.showToast({
title: payErr.errMsg == 'requestPayment:fail cancel' ? '已取消支付' : '支付失败',
icon: 'none'
})
const params = {
order_ids: orderId,
}
request(apiArr.cancelPay, "POST", params).then(res => {
})
},
complete: () => {
//
}
}) })
} else { },
console.error("获取支付参数失败,缺少必要参数") fail: (payErr) => {
uni.showToast({ uni.showToast({
title: '获取支付信息失败', title: payErr.errMsg == 'requestPayment:fail cancel' ? '已取消支付' : '支付失败',
icon: 'none' icon: 'none'
}) })
} const params = {
order_pay_id: this.payInfoId,
}
request(apiArr.delPay, "POST", params).then(res => {
})
},
complete: () => {
//
}
})
} else {
console.error("获取支付参数失败,缺少必要参数")
uni.showToast({
title: '获取支付信息失败',
icon: 'none'
})
}
} }
); );
}, },

View File

@ -10,7 +10,7 @@
<view class="container_body" :style="{ paddingTop: top + 'px' }"> <view class="container_body" :style="{ paddingTop: top + 'px' }">
<view class="title">物业公积金</view> <view class="title">物业公积金</view>
<view class="title_bottom"> <view class="title_bottom">
<view>{{ moeny }}</view> <view>{{ getTotal(list.owners) }}</view>
<u-icon <u-icon
name="info-circle" name="info-circle"
size="30rpx" size="30rpx"
@ -155,6 +155,10 @@ export default {
}, },
methods: { methods: {
//
getTotal(owners) {
return owners.reduce((total, owner) => total + owner.property_fund_balance, 0).toFixed(2);
},
headerConfirmClick(item) { headerConfirmClick(item) {
this.defaultName = { this.defaultName = {
...item, ...item,

View File

@ -8,7 +8,7 @@
<view v-else> <view v-else>
<view v-for="record in recordsList" :key="record.id"> <view v-for="record in recordsList" :key="record.id">
<view class="record-item" @tap="goToChatPage(record)"> <view class="record-item" @tap="goToChatPage(record)">
<image :src="record.avatar || '/static/logo.png'" class="record-avatar" mode="aspectFill"></image> <image :src="getAvatarUrl(record)" class="record-avatar" mode="aspectFill"></image>
<view class="record-info"> <view class="record-info">
<view class="record-title-row"> <view class="record-title-row">
<text class="record-title">{{ record.contact_name }}</text> <text class="record-title">{{ record.contact_name }}</text>
@ -23,7 +23,7 @@
</template> </template>
<script> <script>
import { request } from '../../../utils/index' import { menuButtonInfo, picUrl, request } from '../../../utils'
import { apiArr } from '../../../api/customerService' import { apiArr } from '../../../api/customerService'
export default { export default {
@ -64,6 +64,13 @@ export default {
this.isLoading = false this.isLoading = false
} }
}, },
getAvatarUrl(record){
if(record.client_id_one == uni.getStorageSync('openId')){
return record.two.avatar ? picUrl + record.two.avatar : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/defaultTx.png'
}else{
return record.one.avatar ? picUrl + record.one.avatar : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/defaultTx.png'
}
},
// //
formatTime(time){ formatTime(time){
const date = new Date(time) const date = new Date(time)
@ -98,8 +105,6 @@ export default {
// //
goToChatPage(record){ goToChatPage(record){
console.log('🚀 ~ goToChatPage ~ record:', record)
console.log('🚀 ~ goToChatPage ~ itemObj:', this.itemObj)
this.$set(record, 'type', 2) this.$set(record, 'type', 2)
// //

View File

@ -32,7 +32,7 @@ packages/customerService/index/index
'other': !message.isSelf, 'other': !message.isSelf,
'loading': message.isLoading 'loading': message.isLoading
}" class="message-item"> }" class="message-item">
<image :src="message.isSelf ? userAvatar : (chatTarget.employee_image)" class="message-avatar" <image :src="message.isSelf ? userAvatar : getAvatarUrl(message)" class="message-avatar"
mode="aspectFill"></image> mode="aspectFill"></image>
<view class="message-content"> <view class="message-content">
{{ message.content }} {{ message.content }}
@ -141,6 +141,9 @@ export default {
onShow(){ onShow(){
}, },
methods: { methods: {
getAvatarUrl(record){
return this.chatTarget.employee_image ? this.chatTarget.employee_image : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/defaultTx.png'
},
async connect(){ async connect(){
this.client = null this.client = null
const options = { const options = {
@ -343,9 +346,12 @@ export default {
}, },
// //
loadMoreHistory(){ loadMoreHistory(e){
if (!this.isLoadingHistory && this.hasMoreHistory) { //
this.loadHistoryMessages() if (!e || e.detail.direction === 'top') {
if (!this.isLoadingHistory && this.hasMoreHistory) {
this.loadHistoryMessages()
}
} }
}, },

View File

@ -103,7 +103,7 @@
到店服务券 到店服务券
</view> --> </view> -->
<view class="line"></view> <view class="line"></view>
<view class="btn_right"> <view class="btn_right" @click="toPayInfo">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/lcoal_payIcon.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/lcoal_payIcon.png"
mode="aspectFill"></image> mode="aspectFill"></image>
快捷支付记录 快捷支付记录
@ -161,12 +161,17 @@ export default {
}, },
methods: { methods: {
//
toPayInfo(){
NavgateTo("/packages/localLife/payInfo/index")
},
swiperChange(e) { swiperChange(e) {
this.currentIndex = e.detail.current; this.currentIndex = e.detail.current;
}, },
changeNav(item) { changeNav(item) {
console.log("🚀 ~ changeNav ~ item:", item)
NavgateTo(`/packages/localLife/classify/index?item=${JSON.stringify(item)}`) NavgateTo(`/packages/localLife/classify/index?item=${JSON.stringify(item)}`)
}, },

View File

@ -1,7 +1,7 @@
<template> <template>
<view class="container"> <view class="container">
<view class="payInfoList"> <view class="payInfoList">
<view class="PayInfoItem" v-for="item in payList"> <view class="PayInfoItem" v-for="item in payList" :key="item.order_no">
<view class="row"> <view class="row">
<view class="row_label">付款金额</view> <view class="row_label">付款金额</view>
<view class="row_con">{{ item.order_amount }}</view> <view class="row_con">{{ item.order_amount }}</view>
@ -31,7 +31,7 @@
<view class="con3" v-else>未知</view> <view class="con3" v-else>未知</view>
</view> </view>
<view class="line"></view> <!-- <view class="line"></view>
<view class="row3"> <view class="row3">
<view class="label">返物业费</view> <view class="label">返物业费</view>
@ -45,7 +45,7 @@
<view class="con3" @click="points">{{ item.refund_member_points }} <view class="con3" @click="points">{{ item.refund_member_points }}
<u-icon name="arrow-right" color="#999999" size="40" style="max-lines: 10rpx;"></u-icon> <u-icon name="arrow-right" color="#999999" size="40" style="max-lines: 10rpx;"></u-icon>
</view> </view>
</view> </view> -->
</view> </view>
</view> </view>

View File

@ -41,7 +41,7 @@
<view class="mainBox" ref="mainBox"> <view class="mainBox" ref="mainBox">
<view class="white_container"> <view class="white_container">
<!-- 功能导航区 --> <!-- 功能导航区 -->
<view class="function-nav" v-if="showNav"> <!-- <view class="function-nav" v-if="showNav">
<view class="function-item" @click="goToShop"> <view class="function-item" @click="goToShop">
<view class="icon-box"> <view class="icon-box">
<image class="iconImg" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/index_shop.png" <image class="iconImg" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/index_shop.png"
@ -63,7 +63,7 @@
</view> </view>
<text>物业管理</text> <text>物业管理</text>
</view> </view>
</view> </view> -->
<!-- 轮播图 --> <!-- 轮播图 -->
<view class="swiper"> <view class="swiper">
<swiper @animationfinish="swipers" autoplay circular> <swiper @animationfinish="swipers" autoplay circular>

View File

@ -1,6 +1,7 @@
page { page {
background: #F6F7FB; background: #F6F7FB;
} }
.conatiner { .conatiner {
/* height: 100%; */ /* height: 100%; */
/* height: 578rpx; */ /* height: 578rpx; */
@ -22,6 +23,7 @@ page {
margin-bottom: 35rpx; margin-bottom: 35rpx;
/* pointer-events: none; */ /* pointer-events: none; */
} }
/* 头像 */ /* 头像 */
.avatar-container { .avatar-container {
display: flex; display: flex;
@ -35,6 +37,7 @@ page {
align-items: center; align-items: center;
pointer-events: auto; pointer-events: auto;
} }
/* 头像图片 */ /* 头像图片 */
.avatar { .avatar {
width: 130rpx; width: 130rpx;
@ -43,23 +46,28 @@ page {
border-radius: 50%; border-radius: 50%;
overflow: hidden; overflow: hidden;
} }
.avatar_right { .avatar_right {
flex: 1; flex: 1;
} }
.avatar_title { .avatar_title {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.avatar_setting {
.avatar_setting {
display: flex; display: flex;
pointer-events: auto; pointer-events: auto;
} }
.avatar_setting > image {
.avatar_setting>image {
width: 34rpx; width: 34rpx;
height: 34rpx; height: 34rpx;
} }
.avatar_setting > image:first-child {
.avatar_setting>image:first-child {
margin-right: 40rpx; margin-right: 40rpx;
} }
@ -68,9 +76,11 @@ page {
font-size: 36rpx; font-size: 36rpx;
pointer-events: auto; pointer-events: auto;
} }
.avater_mobile { .avater_mobile {
margin-top: 10rpx; margin-top: 10rpx;
} }
.center { .center {
position: relative; position: relative;
margin: 0 20rpx; margin: 0 20rpx;
@ -80,23 +90,26 @@ page {
.gold_container { .gold_container {
/* width: 710rpx; */ /* width: 710rpx; */
height: 127rpx; height: 127rpx;
background: linear-gradient( 90deg, #FFE9A3 0%, rgba(232,127,0,0.8) 100%); background: linear-gradient(90deg, #FFE9A3 0%, rgba(232, 127, 0, 0.8) 100%);
box-shadow: inset 0rpx 1rpx 2rpx 0rpx #E2C47C; box-shadow: inset 0rpx 1rpx 2rpx 0rpx #E2C47C;
border-radius: 30rpx 30rpx 30rpx 30rpx; border-radius: 30rpx 30rpx 30rpx 30rpx;
margin: 37rpx 0 0; margin: 37rpx 0 0;
position: relative; position: relative;
} }
.gold_title { .gold_title {
display: flex; display: flex;
align-items: center; align-items: center;
padding-top: 16rpx; padding-top: 16rpx;
} }
.gold { .gold {
margin-left: 37rpx; margin-left: 37rpx;
font-weight: normal; font-weight: normal;
font-size: 34rpx; font-size: 34rpx;
color: #7F3907; color: #7F3907;
} }
.monenyt { .monenyt {
margin-left: 17rpx; margin-left: 17rpx;
margin-right: 37rpx; margin-right: 37rpx;
@ -104,13 +117,15 @@ color: #7F3907;
font-size: 40rpx; font-size: 40rpx;
color: #7F3907; color: #7F3907;
} }
.price { .price {
margin-left: 37rpx; margin-left: 37rpx;
font-weight: normal; font-weight: normal;
font-size: 26rpx; font-size: 26rpx;
color: #7F3907; color: #7F3907;
margin-right: 20rpx; margin-right: 20rpx;
} }
.gold_pic { .gold_pic {
width: 140rpx; width: 140rpx;
height: 113rpx; height: 113rpx;
@ -118,17 +133,20 @@ margin-right: 20rpx;
top: 0; top: 0;
right: 39rpx; right: 39rpx;
} }
.main { .main {
margin: 0 20rpx; margin: 0 20rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx; border-radius: 20rpx 20rpx 20rpx 20rpx;
background: #FFFFFF; background: #FFFFFF;
} }
.main1 { .main1 {
width: 100%; width: 100%;
margin: 0; margin: 0;
position: absolute; position: absolute;
top: 80rpx; top: 80rpx;
} }
.main_title { .main_title {
padding-top: 25rpx; padding-top: 25rpx;
margin: 0 0 40rpx 30rpx; margin: 0 0 40rpx 30rpx;
@ -136,6 +154,7 @@ margin-right: 20rpx;
font-size: 36rpx; font-size: 36rpx;
color: #222222; color: #222222;
} }
.margin20 { .margin20 {
margin-top: 20rpx; margin-top: 20rpx;
} }
@ -148,22 +167,25 @@ margin-right: 20rpx;
margin-right: 20rpx; margin-right: 20rpx;
margin-bottom: 21rpx; margin-bottom: 21rpx;
} }
.section1 { .section1 {
justify-content: space-around; justify-content: space-around;
} }
.section_label { .section_label {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
} }
.nav_icon { .nav_icon {
width: 50rpx; width: 50rpx;
height: 50rpx; height: 50rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.grid-text { .grid-text {
font-size: 28rpx; font-size: 28rpx;
font-weight: bold; font-weight: bold;
} }
@ -176,6 +198,14 @@ margin-right: 20rpx;
border-radius: 20rpx; border-radius: 20rpx;
padding-bottom: 25rpx; padding-bottom: 25rpx;
} }
.item2 {
display: grid;
place-items: center;
/* 同时实现水平和垂直居中 */
}
.padding_bottom0 { .padding_bottom0 {
padding-bottom: 0; padding-bottom: 0;
} }
@ -205,24 +235,26 @@ margin-right: 20rpx;
position: fixed; position: fixed;
right: 0; right: 0;
bottom: 212rpx; bottom: 212rpx;
background: rgba(255,55,11,0.6); background: rgba(255, 55, 11, 0.6);
border-radius: 50%; border-radius: 50%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
font-weight: normal; font-weight: normal;
font-size: 28rpx; font-size: 28rpx;
color: #FFFFFF; color: #FFFFFF;
} }
.customer > image {
.customer>image {
width: 50rpx; width: 50rpx;
height: 55rpx; height: 55rpx;
} }
.uicon-volume { .uicon-volume {
font-size: 28rpx !important; font-size: 28rpx !important;
} }
.u-grid-item { .u-grid-item {
margin-bottom: 36rpx; margin-bottom: 36rpx;
} }