fix:最新优化
This commit is contained in:
parent
6a7e01c0bf
commit
84077c1b4c
@ -1,5 +1,5 @@
|
||||
NODE_ENV= development
|
||||
VITE_HTTP_BASE_URL = http://10.39.13.78:8002/api/
|
||||
# VITE_HTTP_BASE_URL = http://test-weapp-api.linyikj.com.cn/api/
|
||||
# VITE_HTTP_BASE_URL = http://10.39.13.78:8002/api/
|
||||
VITE_HTTP_BASE_URL = http://test-weapp-api.linyikj.com.cn/api/
|
||||
# VITE_HTTP_BASE_URL = https://weapp-api.linyikj.com.cn/api/
|
||||
VITE_ACCESS_TOKEN_KEY= 'ACCESS_TOKEN_CUSTOMER'
|
||||
@ -1,3 +1,3 @@
|
||||
{
|
||||
"version": "0.0.108"
|
||||
"version": "0.0.113"
|
||||
}
|
||||
@ -96,19 +96,51 @@ export default {
|
||||
},
|
||||
handleSubmitOrder() {
|
||||
let bill_ids: any = []
|
||||
let selectedHouseName = '' // 记录选中的房屋名称
|
||||
let hasSelectedBills = false // 是否有选中的账单
|
||||
console.log(model?.items?.value,'model?.items?.value')
|
||||
|
||||
model?.items?.value?.map((res: any) => {
|
||||
res?.bills?.map((k: any) => {
|
||||
k?.details?.map((i: any) => {
|
||||
if (k?.checked) {
|
||||
// 检查是否跨房屋
|
||||
if (!hasSelectedBills) {
|
||||
// 第一次选中,记录房屋名称
|
||||
selectedHouseName = res?.house_name
|
||||
hasSelectedBills = true
|
||||
} else if (selectedHouseName !== res?.house_name) {
|
||||
// 发现跨房屋的情况
|
||||
showToast('不能跨房屋提交账单,请选择同一房屋的账单进行支付!')
|
||||
return
|
||||
}
|
||||
bill_ids.push(i?.id)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
console.log(bill_ids)
|
||||
if (!bill_ids?.length) {
|
||||
showToast('至少选择一个账单!')
|
||||
return
|
||||
}
|
||||
|
||||
// 再次检查是否跨房屋(双重检查)
|
||||
const houseSet = new Set<string>()
|
||||
model?.items?.value?.forEach((res: any) => {
|
||||
res?.bills?.forEach((k: any) => {
|
||||
if (k?.checked) {
|
||||
houseSet.add(res?.house_name)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
if (houseSet.size > 1) {
|
||||
showToast('不能跨房屋提交账单,请选择同一房屋的账单进行支付!')
|
||||
return
|
||||
}
|
||||
|
||||
getApiLoading(Apis.HouseOrder.HouseOrders.Store, {
|
||||
bill_ids: bill_ids,
|
||||
amount: model?.total_amount?.value,
|
||||
|
||||
@ -1,9 +1,13 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="pay_title">支付金额</view>
|
||||
<view class="house_title">
|
||||
{{ useModel?.houseInfo?.value?.asset_house?.full_name || '-' }}
|
||||
</view>
|
||||
|
||||
<view class="pay_price">
|
||||
<text>¥</text>{{ useModel?.orderShow.value?.total_payable_amount || '0.00' }}
|
||||
</view>
|
||||
<view class="pay_title_sub">支付金额</view>
|
||||
<view class="pay_type">
|
||||
<view class="pay_label">
|
||||
<image src="/static/svg/wx_pay.svg" mode="heightFix" />
|
||||
|
||||
@ -7,6 +7,7 @@ const getShow = (timer?: any) => {
|
||||
Apis.HouseOrder.HouseOrders.Show({ id: useModel?.OrderInfo?.value?.id }).then(res => {
|
||||
useModel.loadingShowNumber.value += 1
|
||||
useModel.orderShow.value = res?.data
|
||||
useModel.houseInfo.value = res?.data?.house_order_items[0]
|
||||
if (res?.data?.order_status === 'Paid') {
|
||||
useModel.payDisabled.value = false
|
||||
clearInterval(timer)
|
||||
|
||||
@ -8,5 +8,6 @@ export default {
|
||||
payDisabled: ref(false),
|
||||
hideStatus: ref(false),
|
||||
loadingLabel: ref(''),
|
||||
timer: ref<any>()
|
||||
timer: ref<any>(),
|
||||
houseInfo: ref<any>({}),
|
||||
}
|
||||
|
||||
@ -2,13 +2,25 @@ page {
|
||||
background-color: #f3f3f4;
|
||||
}
|
||||
|
||||
|
||||
.house_title{
|
||||
text-align: center;
|
||||
font-size:34rpx;
|
||||
padding:70rpx 0 40rpx 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.pay_title{
|
||||
font-size:30rpx;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
padding:70rpx 0 40rpx 0;
|
||||
padding: 40rpx 0;
|
||||
}
|
||||
.pay_title_sub{
|
||||
font-size:24rpx;
|
||||
color:#999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.pay_price{
|
||||
font-size: 50rpx;
|
||||
|
||||
81
src/INDEX/pay_general/index.vue
Normal file
81
src/INDEX/pay_general/index.vue
Normal file
@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="house_title">
|
||||
<!-- {{ useModel?.houseInfo?.value?.remark || '-' }} -->
|
||||
<hs-enum-tag
|
||||
:value="useModel?.orderShow?.value?.type"
|
||||
:Enums="BillPaymentsTypeEnum"
|
||||
/>
|
||||
</view>
|
||||
|
||||
<view class="pay_price">
|
||||
<text>¥</text>{{ useModel?.orderShow.value?.amount || '0.00' }}
|
||||
</view>
|
||||
<view class="pay_title_sub">支付金额</view>
|
||||
<view class="pay_type">
|
||||
<view class="pay_label">
|
||||
<image src="/static/svg/wx_pay.svg" mode="heightFix" />
|
||||
<text>微信支付</text>
|
||||
</view>
|
||||
<uni-icons type="checkbox-filled" size="23" color="#48B338"></uni-icons>
|
||||
</view>
|
||||
<view class="footer_btn">
|
||||
<hs-button
|
||||
type="primary"
|
||||
size="md"
|
||||
:disabled="useModel?.payDisabled?.value"
|
||||
:loading="useModel?.payDisabled?.value"
|
||||
:loading_label="useModel?.loadingLabel?.value"
|
||||
label="立即支付"
|
||||
@click="method.onPay"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { onHide, onLoad, onShow, onUnload } from '@dcloudio/uni-app'
|
||||
import { getCurrentInstance } from 'vue'
|
||||
import method from './method'
|
||||
import useModel from './model'
|
||||
import { BillPaymentsTypeEnum } from '@/gen/Enums'
|
||||
|
||||
onLoad(async e => {
|
||||
console.log('onLoad', e)
|
||||
await getCurrentInstance()?.appContext.config.globalProperties.$onLaunched
|
||||
useModel.loadingLabel.value = ''
|
||||
useModel.loadingShowNumber.value = 0
|
||||
useModel.hideStatus.value = false
|
||||
useModel.payDisabled.value = false
|
||||
useModel.OrderInfo.value = e
|
||||
method?.getShow()
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
if (useModel?.hideStatus?.value) {
|
||||
//记录是否跳去第三方支付小程序-取消
|
||||
useModel.hideStatus.value = false
|
||||
//检查支付状态
|
||||
method?.getShow(null)
|
||||
method?.loadShow()
|
||||
}
|
||||
console.log('onShow')
|
||||
})
|
||||
|
||||
onHide(() => {
|
||||
if (useModel?.payDisabled?.value) {
|
||||
//记录是否跳去第三方支付小程序
|
||||
useModel.hideStatus.value = true
|
||||
}
|
||||
})
|
||||
|
||||
onUnload(() => {
|
||||
useModel.loadingLabel.value = ''
|
||||
useModel.loadingShowNumber.value = 0
|
||||
useModel.hideStatus.value = false
|
||||
useModel.payDisabled.value = false
|
||||
clearInterval(useModel.timer.value)
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@import './style.scss';
|
||||
</style>
|
||||
66
src/INDEX/pay_general/method.ts
Normal file
66
src/INDEX/pay_general/method.ts
Normal file
@ -0,0 +1,66 @@
|
||||
import { Apis } from '@/gen/Apis'
|
||||
import useModel from './model'
|
||||
import { getApiLoading } from '@/common/libraries/apiLoading'
|
||||
import { tongLianPay } from '@/common/libraries/pay'
|
||||
|
||||
const getShow = (timer?: any) => {
|
||||
Apis.Bill.Bills.Show({ bill_id: useModel?.OrderInfo?.value?.id }).then(res => {
|
||||
useModel.loadingShowNumber.value += 1
|
||||
useModel.orderShow.value = res?.data
|
||||
// useModel.houseInfo.value = res?.data?.house_order_items[0]
|
||||
if (res?.data?.payment_status === 'Paid') {
|
||||
useModel.payDisabled.value = false
|
||||
clearInterval(timer)
|
||||
useModel.loadingLabel.value = ''
|
||||
uni.hideLoading()
|
||||
uni.redirectTo({
|
||||
url: '/INDEX/pay/success'
|
||||
})
|
||||
}
|
||||
console.log('orderShow', res?.data)
|
||||
})
|
||||
}
|
||||
|
||||
const loadShow = () => {
|
||||
useModel.loadingLabel.value = '更新账单中...'
|
||||
useModel.timer.value = setInterval(() => {
|
||||
if (
|
||||
useModel?.loadingShowNumber?.value > 5 &&
|
||||
useModel?.orderShow?.value?.order_status === 'Pending'
|
||||
) {
|
||||
useModel.loading.value = false
|
||||
useModel.payDisabled.value = false
|
||||
useModel.loadingShowNumber.value = 0
|
||||
useModel.loadingLabel.value = ''
|
||||
uni.hideLoading()
|
||||
clearInterval(useModel.timer.value)
|
||||
return
|
||||
}
|
||||
if (useModel.loadingShowNumber.value <= 5) {
|
||||
getShow(useModel.timer.value)
|
||||
}
|
||||
}, 1500)
|
||||
}
|
||||
|
||||
export default {
|
||||
onPay() {
|
||||
useModel.loading.value = true
|
||||
getApiLoading(Apis.Bill.Bills.Payment, { bill_id: useModel?.OrderInfo?.value?.id,payment_method:useModel?.orderShow?.value?.payment_method }).then(
|
||||
res => {
|
||||
console.log('onPay', res?.data)
|
||||
useModel.loading.value = false
|
||||
useModel.payDisabled.value = true
|
||||
tongLianPay(
|
||||
res?.data,
|
||||
() => {},
|
||||
() => {
|
||||
useModel.loading.value = false
|
||||
useModel.payDisabled.value = false
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
},
|
||||
loadShow,
|
||||
getShow
|
||||
}
|
||||
13
src/INDEX/pay_general/model.ts
Normal file
13
src/INDEX/pay_general/model.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { ref } from 'vue'
|
||||
|
||||
export default {
|
||||
loading: ref(false),
|
||||
loadingShowNumber: ref(-1),
|
||||
OrderInfo: ref<any>({}),
|
||||
orderShow: ref<any>({}),
|
||||
payDisabled: ref(false),
|
||||
hideStatus: ref(false),
|
||||
loadingLabel: ref(''),
|
||||
timer: ref<any>(),
|
||||
houseInfo: ref<any>({}),
|
||||
}
|
||||
70
src/INDEX/pay_general/style.scss
Normal file
70
src/INDEX/pay_general/style.scss
Normal file
@ -0,0 +1,70 @@
|
||||
page {
|
||||
background-color: #f3f3f4;
|
||||
}
|
||||
|
||||
|
||||
.house_title{
|
||||
text-align: center;
|
||||
font-size:34rpx;
|
||||
padding:70rpx 0 40rpx 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.pay_title{
|
||||
font-size:30rpx;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
padding: 40rpx 0;
|
||||
}
|
||||
.pay_title_sub{
|
||||
font-size:24rpx;
|
||||
color:#999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pay_price{
|
||||
font-size: 50rpx;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
color:#DF3600;
|
||||
text{
|
||||
font-size: 30rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.pay_type{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
background-color: #fff;
|
||||
border-radius: 10rpx;
|
||||
margin:100rpx 30rpx 0 30rpx;
|
||||
padding:30rpx;
|
||||
.pay_label{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size:28rpx;
|
||||
image{
|
||||
width:60rpx;
|
||||
height:60rpx;
|
||||
}
|
||||
text{
|
||||
padding-left:10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.footer_btn {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
z-index: 100;
|
||||
background-color: #fff;
|
||||
padding: 25rpx 30rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border-top-left-radius: 15rpx;
|
||||
border-top-right-radius: 15rpx;
|
||||
padding-bottom: calc(25rpx + constant(safe-area-inset-bottom));
|
||||
padding-bottom: calc(25rpx + env(safe-area-inset-bottom));
|
||||
}
|
||||
33
src/INDEX/pay_general/success.vue
Normal file
33
src/INDEX/pay_general/success.vue
Normal file
@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<view class="success_page">
|
||||
<view>
|
||||
<uni-icons type="checkbox-filled" size="70" color="#48B338"></uni-icons>
|
||||
</view>
|
||||
<view class="success_label"> 支付成功 </view>
|
||||
<view class="success_des"> 您的物业费账单已实时更新 </view>
|
||||
<hs-footer btnParimaryName="返回首页" @handleParmaryClick="onBackHome" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
const onBackHome = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.success_page {
|
||||
text-align: center;
|
||||
padding-top: 30%;
|
||||
.success_label {
|
||||
font-size: 36rpx;
|
||||
padding: 15rpx 0;
|
||||
}
|
||||
.success_des {
|
||||
color: #666;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -89,6 +89,9 @@ export default {
|
||||
if (!data?.visitor_phone) {
|
||||
return showToast('请设置访客手机号!')
|
||||
}
|
||||
if (auth?.data?.user?.phone === data?.visitor_phone) {
|
||||
return showToast('当前访客手机号已是住户!')
|
||||
}
|
||||
if (!data?.visit_reason) {
|
||||
return showToast('请添加来访事由!')
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view v-if="i?.status !== 'Pending'" class="footer_items">
|
||||
<view v-if="i?.status !== 'Pending' && i?.construction_status !== 'CompletedConstruction'" class="footer_items">
|
||||
<template v-if="i?.status === 'Draft' || i?.status === 'Rejected'">
|
||||
<hs-button
|
||||
:label="i?.status === 'Rejected' ? '重新编辑' : '继续编辑'"
|
||||
@ -68,6 +68,7 @@
|
||||
/>
|
||||
</template>
|
||||
<template v-if="i?.status === 'Approved'">
|
||||
<template v-if="i?.status === 'Approved' && i?.construction_status !== 'CompletedConstruction'">
|
||||
<hs-button
|
||||
label="添加工人"
|
||||
type="ghost"
|
||||
@ -80,6 +81,7 @@
|
||||
<hs-button label="装修延期" type="ghost" @click="method.handleExtension(i)" />
|
||||
</view>
|
||||
</template>
|
||||
</template>
|
||||
</view>
|
||||
</view>
|
||||
</cc-scroll-loading>
|
||||
|
||||
@ -135,7 +135,7 @@
|
||||
<hs-footer
|
||||
v-if="
|
||||
useModel?.showData?.value?.status === 'Approved' &&
|
||||
!useModel?.showData?.value?.house_work_orders?.length
|
||||
!useModel?.showData?.value?.house_work_orders?.length && useModel?.showData?.value?.construction_status !== 'CompletedConstruction'
|
||||
"
|
||||
btnOtherShow
|
||||
btnParimaryName="申请验收"
|
||||
@ -146,7 +146,8 @@
|
||||
<hs-footer
|
||||
v-if="
|
||||
useModel?.showData?.value?.status === 'Approved' &&
|
||||
useModel?.showData?.value?.house_work_orders?.length
|
||||
useModel?.showData?.value?.house_work_orders?.length &&
|
||||
useModel?.showData?.value?.construction_status !== 'CompletedConstruction'
|
||||
"
|
||||
btnParimaryName="装修延期"
|
||||
@handleParmaryClick="method.handleExtension"
|
||||
|
||||
69
src/ME/incidental_expenses/index.vue
Normal file
69
src/ME/incidental_expenses/index.vue
Normal file
@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<view class="release_items_page">
|
||||
<cc-scroll-loading :meta="useModel?.metaData?.value" @load="method?.loadMore">
|
||||
<view v-for="(i, index) in useModel?.listData?.value" :key="`items_${index}`" class="items">
|
||||
<view class="cell_items">
|
||||
<view class="label"> 状态 </view>
|
||||
<view :class="`value status status_${i.payment_status}`">
|
||||
{{ HouseOrdersOrderStatusEnum[i.payment_status as keyof typeof HouseOrdersOrderStatusEnum]?.text }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="cell_items">
|
||||
<view class="label"> 支付金额 </view>
|
||||
<view class="value"> ¥{{ i?.amount || '-' }} </view>
|
||||
</view>
|
||||
<view class="cell_items">
|
||||
<view class="label"> 订单号 </view>
|
||||
<view class="value">
|
||||
{{ i?.payment_no || '-' }}
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="cell_items">
|
||||
<view class="label"> 支付方式 </view>
|
||||
<view class="value"> {{ HouseOrdersPaymentMethodEnum[i.payment_method as keyof typeof HouseOrdersPaymentMethodEnum]?.text }} </view>
|
||||
</view> -->
|
||||
|
||||
<view class="cell_items">
|
||||
<view class="label"> 支付时间 </view>
|
||||
<view class="value"> {{ i?.paid_time || '-' }} </view>
|
||||
</view>
|
||||
|
||||
<view class="cell_items">
|
||||
<view class="label"> 创建日期 </view>
|
||||
<view class="value"> {{ i?.created_at || '-' }} </view>
|
||||
</view>
|
||||
|
||||
<view class="cell_items">
|
||||
<view class="label"> 其他备注 </view>
|
||||
<view class="value"> {{ i?.remark || '-' }} </view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</cc-scroll-loading>
|
||||
</view>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onLoad, onShow, onUnload } from '@dcloudio/uni-app'
|
||||
import method from './method'
|
||||
import useModel from './model'
|
||||
import { HouseOrdersOrderStatusEnum, HouseOrdersPaymentMethodEnum } from '@/gen/Enums'
|
||||
onLoad(() => {
|
||||
method?.getList()
|
||||
})
|
||||
onShow(() => {
|
||||
if (useModel?.loadingStatus?.value) {
|
||||
useModel.listData.value = []
|
||||
useModel.formData.value = { page: 1 }
|
||||
method?.getList()
|
||||
}
|
||||
})
|
||||
|
||||
onUnload(() => {
|
||||
useModel.loadingStatus.value = false
|
||||
useModel.listData.value = []
|
||||
useModel.formData.value = { page: 1 }
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@import './style.scss';
|
||||
</style>
|
||||
29
src/ME/incidental_expenses/method.ts
Normal file
29
src/ME/incidental_expenses/method.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { Apis } from '@/gen/Apis'
|
||||
import useModel from './model'
|
||||
import { useWeAppAuthStore } from '@/common'
|
||||
import { getApiLoading } from '@/common/libraries/apiLoading'
|
||||
import userLoginStatus from '@/common/libraries/userUserLogin'
|
||||
import { showToastBack, showToast } from '@/common/libraries/naviHelper'
|
||||
const auth = useWeAppAuthStore()
|
||||
|
||||
const getList = () => {
|
||||
getApiLoading(Apis.Bill.Bills.List, useModel?.formData?.value).then(res => {
|
||||
useModel.listData.value = [...useModel.listData.value, ...res.data]
|
||||
useModel.metaData.value = res.meta
|
||||
useModel.loadingStatus.value = true
|
||||
console.log(res)
|
||||
})
|
||||
}
|
||||
|
||||
export default {
|
||||
getList,
|
||||
loadMore(page: number) {
|
||||
useModel.formData.value.page = page
|
||||
this.getList()
|
||||
},
|
||||
showPassedDoc(res: { id: string }) {
|
||||
uni.navigateTo({
|
||||
url: `/ME/release_items/show/index?id=${res?.id}`
|
||||
})
|
||||
}
|
||||
}
|
||||
8
src/ME/incidental_expenses/model.ts
Normal file
8
src/ME/incidental_expenses/model.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { reactive, ref } from 'vue'
|
||||
export default {
|
||||
listData: ref<any>([]),
|
||||
formData: ref({ page: 1 }),
|
||||
metaData: ref({}),
|
||||
currentTabs: ref(0),
|
||||
loadingStatus: ref(false)
|
||||
}
|
||||
41
src/ME/incidental_expenses/style.scss
Normal file
41
src/ME/incidental_expenses/style.scss
Normal file
@ -0,0 +1,41 @@
|
||||
page {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
.release_items_page {
|
||||
padding-bottom: calc(130rpx + constant(safe-area-inset-bottom));
|
||||
padding-bottom: calc(130rpx + env(safe-area-inset-bottom));
|
||||
}
|
||||
.items {
|
||||
margin: 30rpx 30rpx 0 30rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 15rpx;
|
||||
padding: 30rpx 30rpx 0 30rpx;
|
||||
.cell_items {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: #3d3d3d;
|
||||
font-size: 28rpx;
|
||||
padding-bottom: 25rpx;
|
||||
}
|
||||
.footer_items {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
border-top: 1px solid #eee;
|
||||
padding: 25rpx 0;
|
||||
}
|
||||
.status {
|
||||
color: #fff;
|
||||
border-radius: 8rpx;
|
||||
padding: 6rpx 12rpx;
|
||||
font-size: 23rpx;
|
||||
background-color: #c5c5c5;
|
||||
}
|
||||
.status_Pending {
|
||||
background-color: #ff8d1a;
|
||||
}
|
||||
.status_Paid {
|
||||
background-color: #52c41a;
|
||||
}
|
||||
}
|
||||
@ -15,9 +15,7 @@ const bindPickerChange = (e: any) => {
|
||||
let data = useModel?.listData?.value[e.detail.value] || {}
|
||||
console.log(data, 'data')
|
||||
useModel.currentHouse.value = data
|
||||
if (data?.type === 2) {
|
||||
method?.getQrCode()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -26,6 +26,12 @@
|
||||
<view class="pass_address_label">
|
||||
{{ useModel?.currentHouse?.value?.full_name || '' }}
|
||||
</view>
|
||||
|
||||
<view class="qr_code">
|
||||
<image :src="useModel?.qrCode?.value" mode="widthFix" />
|
||||
</view>
|
||||
<view class="qr_code_label"> 请出示二维码协助员工扫码 </view>
|
||||
|
||||
<template v-if="useModel?.currentHouse?.value?.type === 1">
|
||||
<view class="house_relation_time">
|
||||
<view class="house_relation_label">
|
||||
@ -42,10 +48,7 @@
|
||||
</view>
|
||||
</template>
|
||||
<template v-if="useModel?.currentHouse?.value?.type === 2">
|
||||
<view class="qr_code">
|
||||
<image :src="useModel?.qrCode?.value" mode="widthFix" />
|
||||
</view>
|
||||
<view class="qr_code_label"> 请出示二维码协助员工扫码 </view>
|
||||
|
||||
<view class="user_qr_code">
|
||||
<image
|
||||
:src="
|
||||
|
||||
@ -24,16 +24,22 @@ const getList = () => {
|
||||
useModel.listData.value = [...useModel.listData.value, ...data]
|
||||
if (useModel.listData.value?.length) {
|
||||
useModel.currentHouse.value = useModel?.listData?.value[0]
|
||||
if (useModel?.currentHouse?.value?.type === 2) {
|
||||
getQrCode()
|
||||
}
|
||||
// if (useModel?.currentHouse?.value?.type === 2) {
|
||||
// getQrCode()
|
||||
// }
|
||||
// if (useModel?.currentHouse?.value?.type === 1) {
|
||||
// getQrCode()
|
||||
// }
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const getQrCode = () => {
|
||||
getApiLoading(Apis.Visitor.VisitorApplies.VisitorQrCode, {
|
||||
id: useModel?.currentHouse?.value?.id
|
||||
let url = useModel?.currentHouse?.value?.type === 2?Apis.Visitor.VisitorApplies.VisitorQrCode:Apis.Visitor.VisitorApplies.ResidentQrCode
|
||||
getApiLoading(url, {
|
||||
id: useModel?.currentHouse?.value?.id,
|
||||
asset_houses_id: useModel?.currentHouse?.value?.id
|
||||
}).then(res => {
|
||||
useModel.qrCode.value = res?.data?.qr_code
|
||||
console.log(res)
|
||||
|
||||
9
src/gen/ApiTypes.d.ts
vendored
9
src/gen/ApiTypes.d.ts
vendored
@ -94,9 +94,9 @@ declare namespace ApiTypes {
|
||||
namespace Asset {
|
||||
namespace AssetHouses {
|
||||
type GetCities = {
|
||||
"city"?: string; // -
|
||||
"city_id"?: string; // -
|
||||
"app_id": string; // -
|
||||
"city"?: string; // 城市
|
||||
"city_id"?: string; // 城市ID
|
||||
"app_id": string; // 小程序ID
|
||||
};
|
||||
type SelectProject = {
|
||||
"name"?: string; // -
|
||||
@ -574,6 +574,9 @@ declare namespace ApiTypes {
|
||||
type VisitorQrCode = {
|
||||
"id": number; // id
|
||||
};
|
||||
type ResidentQrCode = {
|
||||
"asset_houses_id": number; // 房屋ID
|
||||
};
|
||||
}
|
||||
}
|
||||
namespace WechatWork {
|
||||
|
||||
@ -296,6 +296,9 @@ export const Apis = {
|
||||
HsbPaymentCallback(): Promise<MyResponseType> {
|
||||
return request('customer/loop/c_c_b/hsb_payment_callback', {});
|
||||
},
|
||||
ReconciliationCallback(): Promise<MyResponseType> {
|
||||
return request('customer/loop/c_c_b/reconciliation_callback', {});
|
||||
},
|
||||
},
|
||||
},
|
||||
Msg: {
|
||||
@ -401,6 +404,9 @@ export const Apis = {
|
||||
VisitorQrCode(data: ApiTypes.Visitor.VisitorApplies.VisitorQrCode): Promise<MyResponseType> {
|
||||
return request('customer/visitor/visitor_applies/visitor_qr_code', { data });
|
||||
},
|
||||
ResidentQrCode(data: ApiTypes.Visitor.VisitorApplies.ResidentQrCode): Promise<MyResponseType> {
|
||||
return request('customer/visitor/visitor_applies/resident_qr_code', { data });
|
||||
},
|
||||
},
|
||||
},
|
||||
WechatWork: {
|
||||
|
||||
@ -71,6 +71,7 @@ export const ApprovalTemplatesTypeEnum = {
|
||||
'ContractPayment': {"text":"合同支付","color":"#00bcd4","value":"ContractPayment"},
|
||||
'OtherContractSeal': {"text":"其它合同用印","color":"#795548","value":"OtherContractSeal"},
|
||||
'HouseBillUpdate': {"text":"物业账单修改","color":"#607d8b","value":"HouseBillUpdate"},
|
||||
'BillUpdate': {"text":"其他账单修改","color":"#795548","value":"BillUpdate"},
|
||||
};
|
||||
|
||||
// 车位产权类型
|
||||
@ -292,9 +293,50 @@ export const BannersTypeEnum = {
|
||||
'Text': {"text":"文本","color":"#0000ff","value":"Text"},
|
||||
};
|
||||
|
||||
// BillPaymentsStatusEnum
|
||||
export const BillPaymentsStatusEnum = {
|
||||
'Pending': {"text":"待审","color":"#faad14","value":"Pending"},
|
||||
'Approved': {"text":"已审","color":"#52c41a","value":"Approved"},
|
||||
'Rejected': {"text":"驳回","color":"#f5222d","value":"Rejected"},
|
||||
};
|
||||
|
||||
// BillPaymentsTypeEnum
|
||||
export const BillPaymentsTypeEnum = {
|
||||
'DoorCard': {"text":"门卡","color":"#2196f3","value":"DoorCard"},
|
||||
'ResourceOrder': {"text":"资源订单","color":"#4caf50","value":"ResourceOrder"},
|
||||
'EmergencyEvent': {"text":"突发事件","color":"#ef4444","value":"EmergencyEvent"},
|
||||
'RenovationDeposit': {"text":"装修押金","color":"#f59e0b","value":"RenovationDeposit"},
|
||||
};
|
||||
|
||||
// BillsFlowTypeEnum
|
||||
export const BillsFlowTypeEnum = {
|
||||
'Income': {"text":"收入","color":"#10b981","value":"Income"},
|
||||
'Expense': {"text":"支出","color":"#ef4444","value":"Expense"},
|
||||
};
|
||||
|
||||
// BillsRefundStatusEnum
|
||||
export const BillsRefundStatusEnum = {
|
||||
'Requested': {"text":"已申请","color":"#2196f3","value":"Requested"},
|
||||
'Reviewing': {"text":"审核中","color":"#ff9800","value":"Reviewing"},
|
||||
'Rejected': {"text":"已拒绝","color":"#f44336","value":"Rejected"},
|
||||
'Processing': {"text":"退款中","color":"#9c27b0","value":"Processing"},
|
||||
'Refunded': {"text":"已退款","color":"#4caf50","value":"Refunded"},
|
||||
'Failed': {"text":"退款失败","color":"#e91e63","value":"Failed"},
|
||||
};
|
||||
|
||||
// BillsStatusEnum
|
||||
export const BillsStatusEnum = {
|
||||
'PendingPayment': {"text":"待支付","color":"#facc15","value":"PendingPayment"},
|
||||
'Paid': {"text":"已支付","color":"#10b981","value":"Paid"},
|
||||
'ToBeConfirmed': {"text":"待确认","color":"#f97316","value":"ToBeConfirmed"},
|
||||
'Overdue': {"text":"已逾期","color":"#ef4444","value":"Overdue"},
|
||||
'UnderApproval': {"text":"审批中","color":"#8b5cf6","value":"UnderApproval"},
|
||||
'Cancelled': {"text":"已取消","color":"#9ca3af","value":"Cancelled"},
|
||||
};
|
||||
|
||||
// 缓存类型
|
||||
export const CacheTypeEnum = {
|
||||
'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#16df7a","value":"MobilePhoneVerificationCode"},
|
||||
'MobilePhoneVerificationCode': {"text":"手机验证码","color":"#68b5f8","value":"MobilePhoneVerificationCode"},
|
||||
};
|
||||
|
||||
// CompaniesMerchantTypeEnum
|
||||
@ -558,6 +600,25 @@ export const ConvenienceServicesTypeEnum = {
|
||||
'GovernmentConsulting': {"text":"政务咨询","color":"#10b981","value":"GovernmentConsulting"},
|
||||
};
|
||||
|
||||
// CooperationSuggestionEnum
|
||||
export const CooperationSuggestionEnum = {
|
||||
'Recommend': {"text":"建议合作","color":"#28a745","value":"Recommend"},
|
||||
'Restrict': {"text":"建议限制合作","color":"#ffc107","value":"Restrict"},
|
||||
'Pause': {"text":"建议暂不合作","color":"#fd7e14","value":"Pause"},
|
||||
'Eliminate': {"text":"建议淘汰","color":"#dc3545","value":"Eliminate"},
|
||||
};
|
||||
|
||||
// CreditRatingEnum
|
||||
export const CreditRatingEnum = {
|
||||
'AAA': {"text":"AAA","color":"#28a745","value":"AAA"},
|
||||
'AA': {"text":"AA","color":"#28a745","value":"AA"},
|
||||
'A': {"text":"A","color":"#28a745","value":"A"},
|
||||
'BBB': {"text":"BBB","color":"#ffc107","value":"BBB"},
|
||||
'BB': {"text":"BB","color":"#ffc107","value":"BB"},
|
||||
'B': {"text":"B","color":"#ffc107","value":"B"},
|
||||
'CCC': {"text":"CCC","color":"#dc3545","value":"CCC"},
|
||||
};
|
||||
|
||||
// CustomerBacklogsStatusEnum
|
||||
export const CustomerBacklogsStatusEnum = {
|
||||
'Pending': {"text":"待办","color":"#faad14","value":"Pending"},
|
||||
@ -1078,6 +1139,13 @@ export const HouseWorkOrdersTypeEnum = {
|
||||
'SecurityInspection': {"text":"安全巡检","color":"#e67e22","value":"SecurityInspection"},
|
||||
};
|
||||
|
||||
// InfoVerificationEnum
|
||||
export const InfoVerificationEnum = {
|
||||
'Authentic': {"text":"真实完整","color":"#28a745","value":"Authentic"},
|
||||
'Discrepancy': {"text":"存在差异","color":"#ffc107","value":"Discrepancy"},
|
||||
'Fake': {"text":"信息造假","color":"#dc3545","value":"Fake"},
|
||||
};
|
||||
|
||||
// 公告阅读者类型
|
||||
export const MsgPropertyAnnouncementReadsReaderTypeEnum = {
|
||||
'Customer': {"text":"客户","color":"#3b82f6","value":"Customer"},
|
||||
@ -1139,12 +1207,27 @@ export const PayTypeEnum = {
|
||||
'Alipay': {"text":"支付宝","color":"#1677ff","value":"Alipay"},
|
||||
};
|
||||
|
||||
// QualificationEvaluationEnum
|
||||
export const QualificationEvaluationEnum = {
|
||||
'Compliant': {"text":"合规","color":"#28a745","value":"Compliant"},
|
||||
'BasicCompliant': {"text":"基本合规","color":"#ffc107","value":"BasicCompliant"},
|
||||
'NonCompliant': {"text":"不合规","color":"#dc3545","value":"NonCompliant"},
|
||||
};
|
||||
|
||||
// 题目类型枚举
|
||||
export const QuestionsTypeEnum = {
|
||||
'Score': {"text":"评分题","color":"#4caf50","value":"Score"},
|
||||
'Fill': {"text":"填空题","color":"#2196f3","value":"Fill"},
|
||||
};
|
||||
|
||||
// RatingOutlookEnum
|
||||
export const RatingOutlookEnum = {
|
||||
'Stable': {"text":"稳定","color":"#28a745","value":"Stable"},
|
||||
'Positive': {"text":"正面","color":"#17a2b8","value":"Positive"},
|
||||
'Negative': {"text":"负面","color":"#dc3545","value":"Negative"},
|
||||
'Observation': {"text":"观察","color":"#ffc107","value":"Observation"},
|
||||
};
|
||||
|
||||
// 退款状态枚举
|
||||
export const RefundsStatusEnum = {
|
||||
'Pending': {"text":"待审批","color":"#ff9800","value":"Pending"},
|
||||
@ -1267,6 +1350,13 @@ export const ResourcesReservationStatusEnum = {
|
||||
'Not': {"text":"无预约","color":"#f44336","value":"Not"},
|
||||
};
|
||||
|
||||
// RiskLevelEnum
|
||||
export const RiskLevelEnum = {
|
||||
'Low': {"text":"低风险","color":"#28a745","value":"Low"},
|
||||
'Medium': {"text":"中风险","color":"#ffc107","value":"Medium"},
|
||||
'High': {"text":"高风险","color":"#dc3545","value":"High"},
|
||||
};
|
||||
|
||||
// 性别
|
||||
export const SexEnum = {
|
||||
'Male': {"text":"男","color":"#0000ff","value":"Male"},
|
||||
|
||||
@ -278,6 +278,11 @@
|
||||
"style": {
|
||||
"navigationBarTitleText": "放行详情"
|
||||
}
|
||||
},{
|
||||
"path": "incidental_expenses/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "缴费记录"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -351,6 +356,12 @@
|
||||
"navigationBarTitleText": "收银台"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pay_general/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "通用收费"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pay/success",
|
||||
"style": {
|
||||
|
||||
@ -68,6 +68,11 @@ const area_functional: any = [
|
||||
label: '意见反馈',
|
||||
icon: 'Feedback',
|
||||
url: '/ME/feedback/index'
|
||||
},
|
||||
{
|
||||
label: '支付记录',
|
||||
icon: 'incidental_expenses',
|
||||
url: '/ME/incidental_expenses/index'
|
||||
}
|
||||
]
|
||||
const goToPage = (url: string) => {
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
:style="`padding-top:${capsuleRect.top + capsuleRect.height}px;`"
|
||||
>
|
||||
<view v-if="userData?.user" class="user_info_avatar">
|
||||
<view
|
||||
><up-avatar size="60" :src="userData?.user?.avatar && userData?.user?.avatar[0]?.url"
|
||||
/></view>
|
||||
<view>
|
||||
<up-avatar size="60" :src="userData?.user?.avatar && userData?.user?.avatar[0]?.url" />
|
||||
</view>
|
||||
<view class="user_info_name_phone">
|
||||
<view class="name" v-if="userData?.user?.name">
|
||||
{{ userData?.user?.name || '比较懒还没设置名字' }}
|
||||
|
||||
@ -29,6 +29,12 @@ onShow(async () => {
|
||||
url: `/INDEX/pay/index?id=${data[1]}`
|
||||
})
|
||||
}
|
||||
if (data[0] === '2') {
|
||||
//其他收费-订单支付
|
||||
uni.redirectTo({
|
||||
url: `/INDEX/pay_general/index?id=${data[1]}`
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
uni.showModal({
|
||||
|
||||
1
src/static/svg/incidental_expenses.svg
Normal file
1
src/static/svg/incidental_expenses.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="20" height="20" viewBox="0 0 20 20"><path d="M13.244798660620116,11.328916592913817L10.988408060620117,11.328916592913817L10.988408060620117,10.055605892913817L13.244800560620117,10.055605892913817C13.653592560620117,10.055605892913817,13.985815960620117,9.72338389291382,13.985815960620117,9.314590492913819C13.985815960620117,8.905797492913818,13.653592560620117,8.573575492913818,13.244800560620117,8.573575492913818L11.882567360620117,8.573575492913818L13.393002060620116,6.850715292913819C13.663236660620118,6.543137672913819,13.632816360620117,6.0746954729138185,13.325075660620117,5.804648612913819C13.017261960620118,5.535114354913818,12.549381760620118,5.565496246913819,12.279009360620117,5.872575372913818L10.247391660620117,8.189482492913818L8.214540160620118,5.873809722913818C7.944493260620117,5.566069129913818,7.476051030620117,5.535650476913818,7.168473360620117,5.8058829629138184C6.860732790620117,6.075929822913818,6.830314130620117,6.544372082913818,7.100546540620117,6.851949592913819L8.610981960620117,8.574809792913818L7.249985520620117,8.574809792913818C6.841192390620117,8.574809792913818,6.508970260620117,8.907031992913819,6.508970260620117,9.315824992913818C6.508970260620117,9.724618392913818,6.841192390620117,10.056840392913818,7.249985520620117,10.056840392913818L9.506376960620116,10.056840392913818L9.506376960620116,11.33015109291382L7.249985520620117,11.33015109291382C6.841192390620117,11.33015109291382,6.508970260620117,11.662373492913819,6.508970260620117,12.07116599291382C6.508970260620117,12.479958992913819,6.841192390620117,12.812181492913819,7.249985520620117,12.812181492913819L9.506376960620116,12.812181492913819L9.506376960620116,14.131187892913818C9.506376960620116,14.539982292913818,9.838599660620117,14.872203392913818,10.247393160620117,14.872203392913818C10.656185660620118,14.872203392913818,10.988408060620117,14.539982292913818,10.988408060620117,14.131187892913818L10.988408060620117,12.812181492913819L13.244800560620117,12.812181492913819C13.653592560620117,12.812181492913819,13.985815960620117,12.479958992913819,13.985815960620117,12.07116599291382C13.985815960620117,11.662373492913819,13.653592560620117,11.328916092913818,13.244798660620116,11.328916592913817Z" fill="#2A7EFB" fill-opacity="1"/><path d="M18.509325,20L10,20C4.4856119,20,0,15.513154,0,10C0,4.4868479,4.4868479,0,10,0C15.513154,0,20,4.4868479,20,10C20,11.393108,19.718414,12.741757,19.163891,14.007656C19.000011,14.382636,18.563023,14.553562,18.188223,14.389279C17.81324,14.225406,17.642317,13.788411,17.806599,13.41361C18.278379,12.335432,18.517971,11.186861,18.517971,10C18.517971,5.3031988,14.696803,1.4820296,10.000002,1.4820296C5.3032007,1.4820296,1.480796,5.3019652,1.480796,10.000002C1.480796,14.698039,5.3019643,18.517971,9.9987669,18.517971L16.719772,18.517971L14.704213,16.502409C14.415217,16.213415,14.415217,15.744104,14.704213,15.453873C14.993209,15.164878,15.462518,15.164878,15.752749,15.453873L19.032978,18.734102C19.245401,18.946526,19.308388,19.265163,19.193529,19.541807C19.078674,19.818451,18.809443,20,18.509325,20Z" fill="#333333" fill-opacity="1"/></svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
Loading…
x
Reference in New Issue
Block a user