5d5e4447 by 张猛

团体支付

1 parent f6e7f935
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="cn.fjdmy.uniapp.UniappProjectDataService">
<option name="basePath" value="$PROJECT_DIR$" />
<option name="generalBasePath" value="$PROJECT_DIR$" />
<option name="manifestPath" value="$PROJECT_DIR$/manifest.json" />
<option name="pagesPath" value="$PROJECT_DIR$/pages.json" />
<option name="scanNum" value="1" />
<option name="type" value="store" />
<option name="uniapp" value="true" />
<option name="uniappHx" value="true" />
<option name="vueVersion" value="3" />
</component>
</project>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="HtmlDeprecatedAttribute" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="JSEqualityComparisonWithCoercion" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="JSUnresolvedReference" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
</profile>
</component>
\ No newline at end of file
......@@ -85,9 +85,13 @@ async function minShengPay(orderId, encryptedData) {
uni.hideLoading()
// 8. 调起微信支付
const [payErr] = await to(invokeWechatPayment(payParams, orderId))
const [payErr, paySuccess] = await to(invokeWechatPayment(payParams, orderId))
if (payErr) {
handlePaymentError(payErr, orderId)
}
if (paySuccess) {
return paySuccess
}
}
......
// dev
// const baseUrl_api = 'http://192.168.1.137:8787'
const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
const baseUrl_api = 'http://192.168.1.137:8787'
// const baseUrl_api = 'http://tk001.wxjylt.com/stage-api'
const payUrl = 'https://wxpay.cmbc.com.cn/mobilePlatform/appserver/lcbpPay.do'
// prod
......
......@@ -3,7 +3,8 @@
<view v-if="showDirectly&&directUnderFlag==0">
<view class="flexbox">
<view>
有效日期至 <text class="text-primary">{{form?.validityDate?.slice(0,10) }}</text>
有效日期至
<text class="text-primary">{{ form?.validityDate?.slice(0, 10) }}</text>
</view>
<view>
<text v-if="activeStatus==0&&authenticationStatusa" class="text-danger">未激活</text>
......@@ -18,87 +19,92 @@
</view>
</view>
<view class="flexbox" style="justify-content: flex-end;padding: 0 30rpx 40rpx;">
<button class="btn-red" style="margin: 0 20rpx 0 0;" size="mini"
v-if="activeStatus==0&&authenticationStatusa" @click="payTheFees">激活</button>
<button v-if="activeStatus==0&&authenticationStatusa" class="btn-red" size="mini"
style="margin: 0 20rpx 0 0;" @click="payTheFees">激活
</button>
<view v-else>
<button class="btn-red" style="margin: 0 20rpx 0 0;" size="mini"
:disabled="auditStatus==1||auditStatus==2||form.isPoints==0"
@click="showApplyDialog">考点申请</button>
<button class="btn-red" style="margin: 0 20rpx 0 0;" size="mini" :disabled="btn"
@click="payTheFees">去缴费</button>
<button class="btn-red-kx" style="margin: 0 20rpx 0 0;" size="mini" v-if="form.deptType!=1"
@click="auditEditFN">审核详情</button>
<button :disabled="auditStatus==1||auditStatus==2||form.isPoints==0" class="btn-red" size="mini"
style="margin: 0 20rpx 0 0;"
@click="showApplyDialog">考点申请
</button>
<button :disabled="btn" class="btn-red" size="mini" style="margin: 0 20rpx 0 0;"
@click="payTheFees">去缴费
</button>
<button v-if="form.deptType!=1" class="btn-red-kx" size="mini" style="margin: 0 20rpx 0 0;"
@click="auditEditFN">审核详情
</button>
</view>
</view>
</view>
<view class="mainbox">
<uni-list>
<uni-list-item v-if="authenticationStatusa != 1&&authenticationStatusa != 0&&authenticationStatusa != 3"
title="所属协会" :rightText="form.aname">
:rightText="form.aname" title="所属协会">
</uni-list-item>
<uni-list-item title="会员编号" v-if="form.menCode" :rightText="form.menCode" />
<uni-list-item title="机构名称" :rightText="form.name" />
<uni-list-item v-if="form.menCode" :rightText="form.menCode" title="会员编号"/>
<uni-list-item :rightText="form.name" title="机构名称"/>
<uni-list-item title="所属省份">
<template v-slot:footer>
<view class="frrr">
<uni-data-picker readonly :clear-icon="false" v-model="form.belongProvinceId"
:localdata="options">
<uni-data-picker v-model="form.belongProvinceId" :clear-icon="false" :localdata="options"
readonly>
</uni-data-picker>
</view>
</template>
</uni-list-item>
<uni-list-item title="社会信用代码"
<uni-list-item
v-if="authenticationStatusa != 1&&authenticationStatusa != 0&&authenticationStatusa != 3&&newResult||form.associateId&&form.associateId>0||activeStatus==1"
:rightText="form.creditCode" />
<uni-list-item v-if="form.certSiteContact" title="联系人" :rightText="form.certSiteContact" />
<uni-list-item v-else title="联系人" :rightText="form.contact" />
<uni-list-item v-if="form.certSiteTel" title="联系方式" :rightText="form.certSiteTel" />
<uni-list-item v-else title="联系方式" :rightText="form.phone" />
:rightText="form.creditCode"
title="社会信用代码"/>
<uni-list-item v-if="form.certSiteContact" :rightText="form.certSiteContact" title="联系人"/>
<uni-list-item v-else :rightText="form.contact" title="联系人"/>
<uni-list-item v-if="form.certSiteTel" :rightText="form.certSiteTel" title="联系方式"/>
<uni-list-item v-else :rightText="form.phone" title="联系方式"/>
<uni-list-item title="认证地址">
<template v-slot:footer>
<view class="frrr">
<uni-data-picker readonly :clear-icon="false" v-if="form.certRegionId"
v-model="form.certRegionId" :localdata="options">
<uni-data-picker v-if="form.certRegionId" v-model="form.certRegionId" :clear-icon="false"
:localdata="options" readonly>
</uni-data-picker>
<uni-data-picker readonly :clear-icon="false" v-else-if="form.certCityId"
v-model="form.certCityId" :localdata="options">
<uni-data-picker v-else-if="form.certCityId" v-model="form.certCityId" :clear-icon="false"
:localdata="options" readonly>
</uni-data-picker>
<uni-data-picker readonly :clear-icon="false" v-else-if="form.certProvinceId"
v-model="form.certProvinceId" :localdata="options">
<uni-data-picker v-else-if="form.certProvinceId" v-model="form.certProvinceId" :clear-icon="false"
:localdata="options" readonly>
</uni-data-picker>
</view>
</template>
</uni-list-item>
<uni-list-item title="认证详细地址" :rightText="form.certAddress" />
<uni-list-item title="法人姓名" :rightText="form.certLegal||'--'" />
<uni-list-item :rightText="form.certAddress" title="认证详细地址"/>
<uni-list-item :rightText="form.certLegal||'--'" title="法人姓名"/>
<uni-list-item v-if="form.deptType==6" title="是否为考点" :rightText="form.isPoints==0?'是':'否'" />
<uni-list-item title="法人身份证" clickable>
<uni-list-item v-if="form.deptType==6" :rightText="form.isPoints==0?'是':'否'" title="是否为考点"/>
<uni-list-item clickable title="法人身份证">
<template v-slot:footer>
<view v-if="form.legalIdcPhotoArr&&form.legalIdcPhotoArr?.length>0" class="frrr">
<image class="ylImage" mode="aspectFit" @click="showImage(form.legalIdcPhotoArr,index)"
v-for="(item,index) in form.legalIdcPhotoArr" :key="item" :src="item">
<image v-for="(item,index) in form.legalIdcPhotoArr" :key="item" :src="item"
class="ylImage" mode="aspectFit" @click="showImage(form.legalIdcPhotoArr,index)">
</image>
</view>
</template>
</uni-list-item>
<uni-list-item title="营业执照" clickable>
<uni-list-item clickable title="营业执照">
<template v-slot:footer>
<view class="frrr" @click="download(form.businessLicenseArr[0]?.url)"
v-if="form.businessLicenseArr&&form.businessLicenseArr?.length>0">
<text class="text-primary">{{form.businessLicenseArr[0]?.name}}</text>
<view v-if="form.businessLicenseArr&&form.businessLicenseArr?.length>0" class="frrr"
@click="download(form.businessLicenseArr[0]?.url)">
<text class="text-primary">{{ form.businessLicenseArr[0]?.name }}</text>
</view>
</template>
</uni-list-item>
<uni-list-item title="机构照片" clickable>
<uni-list-item clickable title="机构照片">
<template v-slot:footer>
<view class="frrr">
<view v-if="form.picturesArr&&form.picturesArr?.length>0" class="photoBook"
@click="showImage(form.picturesArr,0)">
<image mode="aspectFit" class="ylImage" :src="form.picturesArr[0]">
<image :src="form.picturesArr[0]" class="ylImage" mode="aspectFit">
</image>
<text>{{form.picturesArr?.length}}</text>
<text>{{ form.picturesArr?.length }}</text>
</view>
</view>
</template>
......@@ -106,8 +112,8 @@
</uni-list>
</view>
<!-- 弹窗添加触摸事件拦截 -->
<uni-popup ref="applyPopup" type="center" @touchmove.stop.prevent="() => {}" @open="onPopupOpen"
@close="onPopupClose">
<uni-popup ref="applyPopup" type="center" @close="onPopupClose" @open="onPopupOpen"
@touchmove.stop.prevent="() => {}">
<view class="apply-dialog" @touchmove.stop.prevent="() => {}">
<view class="dialog-title">考点申请</view>
<view class="dialog-content">
......@@ -124,58 +130,60 @@
</template>
<script setup>
import * as api from '@/common/api.js'
import config from '@/config.js'
import * as loginServer from '@/common/login.js';
import * as api from '@/common/api.js'
import config from '@/config.js'
import * as loginServer from '@/common/login.js';
import _ from 'underscore'
import {
import _ from 'underscore'
import {
ref,
onUnmounted
} from 'vue'
import {
} from 'vue'
import {
onLoad,
onShow
} from '@dcloudio/uni-app'
const app = getApp()
const form = ref({
} from '@dcloudio/uni-app'
const app = getApp()
const form = ref({
type: 1
})
const userType = ref()
const activeStatus = ref(0)
const directUnderFlag = ref(0)
const showDirectly = ref(true)
const authenticationStatusa = ref()
const result = ref(false)
const newResult = ref(false)
const btn = ref(false)
const type = ref(true)
const flag = ref(false)
const pr = ref({})
const applicationForMembership1 = ref({})
const options = ref([])
const applyPopup = ref(null)
// 新增:控制弹窗显示状态(用于锁定滚动)
const popupShow = ref(false)
// 考点审核状态 0 未提交 1 审核中 2 审核成功 3 审核失败
const auditStatus = ref(0)
onShow(() => {
})
const userType = ref()
const activeStatus = ref(0)
const directUnderFlag = ref(0)
const showDirectly = ref(true)
const authenticationStatusa = ref()
const result = ref(false)
const resultNoProvince = ref(false)
const newResult = ref(false)
const btn = ref(false)
const type = ref(true)
const flag = ref(false)
const pr = ref({})
const applicationForMembership1 = ref({})
const options = ref([])
const applyPopup = ref(null)
// 新增:控制弹窗显示状态(用于锁定滚动)
const popupShow = ref(false)
// 考点审核状态 0 未提交 1 审核中 2 审核成功 3 审核失败
const auditStatus = ref(0)
onShow(() => {
init()
if (form.value.deptType != 1) { // 修复:原代码deptType未定义,改为form.value.deptType
getMyStatusAPI()
}
})
})
// 页面卸载时恢复滚动(防止异常锁死)
onUnmounted(() => {
// 页面卸载时恢复滚动(防止异常锁死)
onUnmounted(() => {
uni.setPageScrollEnabled({
enabled: true
})
popupShow.value = false
})
})
function init() {
function init() {
api.regionsList().then(res => {
options.value = res.data
})
......@@ -184,6 +192,7 @@
userType.value = app.globalData.userType
newResult.value = res.data.newResult
result.value = res.data.result
resultNoProvince.value = res.data.resultNoProvince2
authenticationStatusa.value = res.data.authenticationStatus
showDirectly.value = !res.data.memberInfo.associateId
activeStatus.value = res.data.memberInfo.activeStatus
......@@ -194,7 +203,8 @@
} else if (authenticationStatusa.value == 1) {
btn.value = true
} else {
btn.value = !result.value
// btn.value = !result.value
btn.value = !resultNoProvince.value
}
// 认证信息
if (authenticationStatusa.value == 0 || authenticationStatusa.value == 3) {
......@@ -270,9 +280,9 @@
console.log(form.value.picturesArr)
}
})
}
}
async function getMyStatusAPI() {
async function getMyStatusAPI() {
const {
data
} = await api.getMyStatus()
......@@ -281,10 +291,10 @@
} else {
auditStatus.value = 0
}
}
}
// 新增:弹窗打开时锁定滚动
function onPopupOpen() {
// 新增:弹窗打开时锁定滚动
function onPopupOpen() {
popupShow.value = true
// 1. 小程序API锁定页面滚动
uni.setPageScrollEnabled({
......@@ -296,10 +306,10 @@
enabled: false
})
}, 100)
}
}
// 新增:弹窗关闭时恢复滚动
function onPopupClose() {
// 新增:弹窗关闭时恢复滚动
function onPopupClose() {
popupShow.value = false
// 恢复页面滚动
uni.setPageScrollEnabled({
......@@ -310,51 +320,54 @@
enabled: true
})
}, 100)
}
}
function showApplyDialog() {
function showApplyDialog() {
applyPopup.value.open()
}
}
// 关闭申请弹窗
function closeApplyDialog() {
// 关闭申请弹窗
function closeApplyDialog() {
applyPopup.value.close()
}
}
// 跳转到考点申请页面
function goToApplyPage() {
// 跳转到考点申请页面
function goToApplyPage() {
closeApplyDialog()
uni.navigateTo({
url: `/myCenter/examPointApply?memId=${form.value.memId}`
})
}
}
function auditEditFN() {
function auditEditFN() {
uni.navigateTo({
url: `/myCenter/reviewList`
})
}
}
function showImage(arr, index) {
function showImage(arr, index) {
uni.previewImage({
urls: arr,
current: index,
success: function(res) {}
})
success: function (res) {
}
})
}
function download(url) {
function download(url) {
console.log(url)
if (url.indexOf('.png') > -1 || url.indexOf('.jpg') > -1) {
if (url.indexOf('http') > -1) {
uni.previewImage({
urls: [url],
success: function(res) {}
success: function (res) {
}
})
} else {
uni.previewImage({
urls: [config.baseUrl_api + url],
success: function(res) {}
success: function (res) {
}
})
}
} else {
......@@ -364,16 +377,16 @@
goWebView(config.baseUrl_api + url)
}
}
}
}
function goWebView(url) {
function goWebView(url) {
url = url.replace("http://", "https://")
uni.showLoading({
title: '下载中'
});
uni.downloadFile({
url: url,
success: function(res) {
success: function (res) {
uni.hideLoading();
var filePath = res.tempFilePath;
uni.showLoading({
......@@ -382,10 +395,10 @@
uni.openDocument({
filePath: filePath,
showMenu: true,
success: function(res) {
success: function (res) {
uni.hideLoading();
},
fail: function(err) {
fail: function (err) {
uni.hideLoading();
uni.showToast({
title: err,
......@@ -395,7 +408,7 @@
}
});
},
fail: function(error) {
fail: function (error) {
uni.hideLoading();
uni.showToast({
title: `下载失败`,
......@@ -404,9 +417,9 @@
});
}
});
}
}
function payTheFees() {
function payTheFees() {
if (!form.value.name) {
uni.showToast({
title: `请先完善单位信息`,
......@@ -417,12 +430,12 @@
uni.navigateTo({
url: `/myCenter/perfect`
})
}
}
</script>
<style scoped lang="scss">
// 新增:锁定滚动的核心样式
.lock-scroll {
<style lang="scss" scoped>
// 新增:锁定滚动的核心样式
.lock-scroll {
position: fixed !important;
top: 0;
left: 0;
......@@ -430,13 +443,13 @@
bottom: 0;
overflow: hidden !important;
height: 100vh !important;
}
}
.height1 {
.height1 {
height: 100rpx;
}
}
.photobox {
.photobox {
position: relative;
margin: 30rpx auto;
......@@ -447,17 +460,17 @@
display: block;
margin: auto;
}
}
}
.ylImage {
.ylImage {
width: 300rpx;
height: 200rpx;
display: block;
box-shadow: 0 0 10rpx #ddd;
border-radius: 8rpx;
}
}
.photoBook {
.photoBook {
position: relative;
border-radius: 10rpx;
overflow: hidden;
......@@ -480,86 +493,86 @@
bottom: 4rpx;
right: 8rpx;
}
}
}
.frrr {
.frrr {
width: 100%;
text-align: right;
text-align: right;
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
}
}
:deep(.selected-list) {
:deep(.selected-list) {
font-size: 32rpx;
padding: 0;
}
}
:deep(.input-value) {
:deep(.input-value) {
padding: 0;
}
}
:deep(.uni-list-item__extra-text) {
:deep(.uni-list-item__extra-text) {
font-size: 32rpx;
color: #000;
}
}
:deep(.uni-list-item__extra) {
:deep(.uni-list-item__extra) {
flex: 1 1 auto;
}
}
:deep(.uni-list-item__content) {
:deep(.uni-list-item__content) {
flex: 0 0 auto;
}
}
:deep(.uni-list-item__content-title) {
:deep(.uni-list-item__content-title) {
color: #999;
}
}
.flexbox {
.flexbox {
padding: 30rpx;
background-color: #fff;
justify-content: space-between;
}
}
.mainbox {
.mainbox {
margin: 30rpx;
}
}
.apply-dialog {
.apply-dialog {
width: 530rpx;
background: #fff;
border-radius: 16rpx;
padding: 40rpx;
// 新增:禁止弹窗内部滚动
touch-action: none;
}
}
.dialog-title {
.dialog-title {
font-size: 32rpx;
font-weight: bold;
text-align: center;
margin-bottom: 30rpx;
}
}
.dialog-content {
.dialog-content {
margin: 40rpx;
}
}
.remind {
.remind {
color: #FF8124;
font-size: 26rpx;
margin-top: 40rpx;
}
}
.dialog-buttons {
.dialog-buttons {
display: flex;
justify-content: space-between;
margin-top: 40rpx;
}
}
.btn-cancel {
.btn-cancel {
width: 225rpx;
height: 80rpx;
line-height: 80rpx;
......@@ -569,9 +582,9 @@
color: #333;
text-align: center;
font-size: 14px;
}
}
.btn-confirm {
.btn-confirm {
width: 225rpx;
height: 80rpx;
line-height: 80rpx;
......@@ -580,10 +593,10 @@
font-size: 14px;
color: #fff;
text-align: center;
}
}
// 新增:给uni-popup蒙版添加禁止滚动样式
:deep(.uni-popup__mask) {
// 新增:给uni-popup蒙版添加禁止滚动样式
:deep(.uni-popup__mask) {
touch-action: none !important;
}
}
</style>
......
......@@ -5,13 +5,13 @@
<view class="yearRow">
<view class="label">缴费年限</view>
<view class="control">
<image class="icon" @click="minusYear" src="/static/dd_02.png" mode="widthFix"
v-if="form.renewYear > 1"></image>
<image class="icon" src="/static/dd_02_g.png" mode="widthFix" v-else></image>
<image v-if="form.renewYear > 1" class="icon" mode="widthFix" src="/static/dd_02.png"
@click="minusYear"></image>
<image v-else class="icon" mode="widthFix" src="/static/dd_02_g.png"></image>
<text class="num">{{ form.renewYear }}</text>
<image class="icon" src="/static/btn_03.png" mode="widthFix" @click="plusYear"
v-if="form.renewYear < 5"></image>
<image class="icon" src="/static/btn_03_g.png" mode="widthFix" v-else></image>
<image v-if="form.renewYear < 5" class="icon" mode="widthFix" src="/static/btn_03.png"
@click="plusYear"></image>
<image v-else class="icon" mode="widthFix" src="/static/btn_03_g.png"></image>
</view>
</view>
</view>
......@@ -23,18 +23,19 @@
<text class="value red">{{ (form.renewYear * memberFee).toFixed(2) }}</text>
</view>
<view class="hintRow" v-if="preferentialPolicy">
<view v-if="preferentialPolicy" class="hintRow">
<text
class="hintText">温馨提示:根据中国跆协{{ preferentialData.name || '优惠' }}政策减免一年费用,每个单位在政策有效期内只享受一次</text>
class="hintText">温馨提示:根据中国跆协{{ preferentialData.name || '优惠' }}政策减免一年费用,每个单位在政策有效期内只享受一次
</text>
</view>
</view>
<view class="payRow ">
<radio-group @change="onPayTypeChange">
<label class="radioItem">
<radio value="1" :checked="payType === '1'" class="custom-radio" />
<radio :checked="payType === '1'" class="custom-radio" value="1"/>
<view class="payInfo">
<image class="icon" src="/static/min.png" mode="widthFix"></image>
<image class="icon" mode="widthFix" src="/static/min.png"></image>
<text>民生付</text>
</view>
</label>
......@@ -53,62 +54,63 @@
<text class="label">减免费用</text>
<text class="value red">-{{ memberFee.toFixed(2) }}</text>
</view>
<button class="payBtn" @click="handelPay" :loading="isPaying">立即支付 ¥{{ memberTotalFee }}</button>
<button :loading="isPaying" class="payBtn" @click="handelPay">立即支付 ¥{{ memberTotalFee }}</button>
</view>
</view>
</template>
<script setup>
import {
import {
ref,
computed
} from 'vue'
import {
} from 'vue'
import {
onLoad
} from '@dcloudio/uni-app';
import to from 'await-to-js'
import * as api from '@/common/api.js'
} from '@dcloudio/uni-app';
import to from 'await-to-js'
import * as api from '@/common/api.js'
import {minShengPay} from '@/common/pay.js'
const form = ref({
const form = ref({
renewYear: 1
})
const memberFee = ref(0)
const preferentialPolicy = ref(false)
const preferentialData = ref({
})
const memberFee = ref(0)
const preferentialPolicy = ref(false)
const preferentialData = ref({
name: '优惠'
})
const payType = ref('1')
const isPaying = ref(false)
})
const payType = ref('1')
const isPaying = ref(false)
const memberTotalFee = computed(() => {
const memberTotalFee = computed(() => {
if (preferentialPolicy.value) {
return (memberFee.value * form.value.renewYear - memberFee.value * 1).toFixed(2)
} else {
return (memberFee.value * form.value.renewYear).toFixed(2)
}
})
})
// 年限减
const minusYear = () => {
// 年限减
const minusYear = () => {
if (form.value.renewYear > 1) {
form.value.renewYear--
}
}
// 年限加
const plusYear = () => {
}
// 年限加
const plusYear = () => {
if (form.value.renewYear < 6) {
form.value.renewYear++
}
}
}
// 支付方式切换
const onPayTypeChange = (e) => {
// 支付方式切换
const onPayTypeChange = (e) => {
payType.value = e.detail.value
}
}
// 支付操作
const handelPay = async () => {
// 支付操作
const handelPay = async () => {
if (memberTotalFee.value < 0) {
uni.showToast({
title: '支付金额异常',
......@@ -146,28 +148,33 @@
})
return
}
if (data.payResult.encryptedData) {
const res = minShengPay(data.orderId, data.payResult.encryptedData)
console.log(res)
}
// 需要支付回调
if (data.orderId) {
await to(api.callBack2(data.orderId))
uni.hideLoading()
isPaying.value = false
// if (data.orderId) {
// await to(api.callBack2(data.orderId))
// uni.hideLoading()
// isPaying.value = false
//
// uni.redirectTo({
// url: `/myCenter/sucPay?orderId=${data.orderId}`
// })
// }
uni.redirectTo({
url: `/myCenter/sucPay?orderId=${data.orderId}`
})
}
}
onLoad((option) => {
}
onLoad((option) => {
// 接收年限
form.value.renewYear = Number(option.renewYear || 1)
// 初始化获取费用和优惠
init()
})
})
// 初始化接口
async function init() {
// 初始化接口
async function init() {
uni.showLoading({
title: '加载中...'
})
......@@ -180,78 +187,78 @@
if (err) {
console.error('初始化失败:', err)
}
}
}
// 获取会员单价
async function getMyMemberCertUnitFeeApi() {
// 获取会员单价
async function getMyMemberCertUnitFeeApi() {
const [err, res] = await to(api.getMyMemberCertUnitFee())
if (!err && res.data) {
memberFee.value = Number(res.data || 1500)
}
}
}
// 是否可用优惠
async function canUseDiscountApi() {
// 是否可用优惠
async function canUseDiscountApi() {
const [err, res] = await to(api.canUseDiscount())
if (!err && res.data !== undefined) {
preferentialPolicy.value = res.data
}
}
}
// 获取优惠政策详情
async function getZtxDiscountPolicyApi() {
// 获取优惠政策详情
async function getZtxDiscountPolicyApi() {
const [err, res] = await to(api.getZtxDiscountPolicy())
if (!err && res.data) {
preferentialData.value = res.data
}
}
}
</script>
<style scoped>
/* 整体容器 */
.container {
/* 整体容器 */
.container {
min-height: 100vh;
background-color: #f7f7f7;
}
}
/* 内容区域 */
.content {
/* 内容区域 */
.content {
padding: 20rpx 20rpx 120rpx;
}
}
/* 卡片 */
.card {
/* 卡片 */
.card {
background: #fff;
border-radius: 8rpx;
padding: 25rpx 20rpx;
margin-bottom: 20rpx;
}
}
/* 缴费年限行 */
.yearRow {
/* 缴费年限行 */
.yearRow {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20rpx;
}
}
.yearRow .label {
.yearRow .label {
font-size: 28rpx;
color: #333;
}
}
.yearRow .control {
.yearRow .control {
display: flex;
align-items: center;
}
}
.control image {
.control image {
width: 50rpx;
height: 50rpx;
}
}
/* 加减按钮样式 */
.num-btn {
/* 加减按钮样式 */
.num-btn {
width: 40rpx;
height: 40rpx;
border-radius: 50%;
......@@ -260,59 +267,59 @@
justify-content: center;
background-color: #fff;
border: 1rpx solid #C4121B;
}
}
.num-btn.disabled {
.num-btn.disabled {
border-color: #ccc;
}
}
.num-btn.disabled .btn-icon {
.num-btn.disabled .btn-icon {
color: #ccc;
}
}
.btn-icon {
.btn-icon {
font-size: 24rpx;
color: #C4121B;
font-weight: bold;
}
}
.yearRow .num {
.yearRow .num {
font-size: 28rpx;
color: #333;
min-width: 80rpx;
text-align: center;
margin: 0 10rpx;
}
}
/* 通用行 */
.row {
/* 通用行 */
.row {
display: flex;
justify-content: space-between;
align-items: center;
}
}
.row .label {
.row .label {
font-size: 28rpx;
color: #333;
}
}
.row .value {
.row .value {
font-size: 30rpx;
color: #C4121B;
font-weight: 500;
}
}
/* 优惠提示 */
.hintRow {
/* 优惠提示 */
.hintRow {
display: flex;
align-items: flex-start;
font-size: 24rpx;
line-height: 1.4;
}
}
.hint-icon {
.hint-icon {
width: 24rpx;
height: 24rpx;
border-radius: 50%;
......@@ -323,25 +330,25 @@
margin-right: 10rpx;
flex-shrink: 0;
margin-top: 2rpx;
}
}
.icon {
.icon {
width: 30px;
}
}
.icon-check {
.icon-check {
color: #fff;
font-size: 16rpx;
}
}
.hintRow .hintText {
.hintRow .hintText {
color: #FF8124;
flex: 1;
margin-top: 10rpx;
}
}
/* 减免费用 */
.deductRow {
/* 减免费用 */
.deductRow {
background: #fff;
padding: 20rpx 20rpx;
display: flex;
......@@ -349,64 +356,64 @@
align-items: center;
margin-bottom: 10rpx;
border-radius: 8rpx;
}
}
.deductRow .label {
.deductRow .label {
font-size: 28rpx;
color: #333;
}
}
.deductRow .value {
.deductRow .value {
font-size: 30rpx;
color: #C4121B;
}
}
/* 支付方式行 */
.payRow {
/* 支付方式行 */
.payRow {
background: #fff;
border-radius: 8rpx;
padding: 20rpx 20rpx;
margin-bottom: 20rpx;
}
}
.radioItem {
.radioItem {
display: flex;
align-items: center;
}
}
/* 自定义红色单选框 */
::v-deep .custom-radio .wx-radio-input {
/* 自定义红色单选框 */
::v-deep .custom-radio .wx-radio-input {
width: 30rpx;
height: 30rpx;
border-radius: 50%;
border: 2rpx solid #ccc;
}
}
::v-deep .custom-radio .wx-radio-input.wx-radio-input-checked {
::v-deep .custom-radio .wx-radio-input.wx-radio-input-checked {
border-color: #C4121B !important;
background: #C4121B !important;
}
}
.payInfo {
.payInfo {
display: flex;
align-items: center;
margin-left: 15rpx;
}
}
.payInfo .icon {
.payInfo .icon {
width: 40rpx;
height: 40rpx;
margin-right: 10rpx;
}
}
.payInfo text {
.payInfo text {
font-size: 28rpx;
color: #333;
}
}
/* 总费用行(突出显示) */
.totalRow {
/* 总费用行(突出显示) */
.totalRow {
background: #fff;
border-radius: 8rpx;
padding: 20rpx 20rpx;
......@@ -414,21 +421,21 @@
justify-content: space-between;
align-items: center;
margin-top: 10rpx;
}
}
.totalRow .label {
.totalRow .label {
font-size: 28rpx;
color: #333;
}
}
.redBig {
.redBig {
font-size: 32rpx;
color: #C4121B;
font-weight: bold;
}
}
/* 底部按钮 */
.bottomBtn {
/* 底部按钮 */
.bottomBtn {
position: fixed;
bottom: 0;
left: 0;
......@@ -436,9 +443,9 @@
padding: 20rpx 20rpx;
background: #fff;
border-top: 1rpx solid #eee;
}
}
.payBtn {
.payBtn {
width: 100%;
height: 88rpx;
line-height: 88rpx;
......@@ -448,15 +455,15 @@
font-size: 32rpx;
text-align: center;
border: none;
}
}
.payBtn[disabled] {
.payBtn[disabled] {
background-color: #ccc;
color: #999;
}
}
/* 通用红色文字 */
.red {
/* 通用红色文字 */
.red {
color: #C4121B;
}
}
</style>
......
......@@ -109,7 +109,7 @@
const res = await api.goPay(rangeId.value)
if (res.data?.orderId) {
api.pcallBack2(res.data.orderId)
await api.pcallBack2(res.data.orderId)
uni.redirectTo({
url: `/myCenter/sucPay?rangeId=${rangeId.value}from=payOrder`
})
......
......@@ -330,6 +330,7 @@
};
}
})
onLoad(option => {
let userName = uni.getStorageSync('userName')
if (!userName) {
......@@ -443,8 +444,7 @@
// deptInfo.value = app.globalData.dept || {}
// app.globalData.deptInfo = res.dept || {}
console.log(43,res)
if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData
.authenticationStatus != '4') {
if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData.authenticationStatus != '4') {
// 注册引导
uni.navigateTo({
url: '/pages/index/perfect'
......@@ -524,7 +524,7 @@
});
}
</script>
<style scope lang="scss">
<style scoped lang="scss">
:deep(.uni-section) {
background-color: transparent !important;
}
......
......@@ -84,7 +84,7 @@
<button
class="action-btn submit-btn"
@click.stop="commitFN(item)"
:disabled="item.auditStatus != 0">
:disabled="item.auditStatus != 0&&item.auditStatus != 9">
提交审核
</button>
</view>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!