4ecc383f by lttnew

bug修复

1 parent 2a11a442
......@@ -17,24 +17,23 @@
let userName = uni.getStorageSync('userName')
if (userName) {
try {
await getInfo(this)
this.globalData.isLogin = true
} catch (e) {
this.globalData.isLogin = false
uni.removeStorageSync('token')
uni.removeStorageSync('userName')
uni.reLaunch({
url: '/login/login'
})
return
}
try {
await getInfo(this)
this.globalData.isLogin = true
} catch (e) {
this.globalData.isLogin = false
uni.removeStorageSync('token')
uni.removeStorageSync('userName')
uni.reLaunch({
url: '/login/login'
})
return
}
// 道馆用户跳转到道馆首页
const deptType = this.globalData.deptType
const userType = this.globalData.userType
// 道馆判断:deptType=6 或者 userType='4'
if (deptType == 6 || deptType == '6' || userType == '4') {
if (deptType == 6 || deptType == '6' || userType == '4' || deptType == null) {
uni.reLaunch({
url: '/pages/index/daoGuanPerson'
})
......
......@@ -141,13 +141,14 @@ export function deptTreeSelect(params) {
}
// 注册选择协会树
export function certifiedDeptTreeRegister(params) {
return request({
url: '/system/user/certifiedDeptTreeWithNoDaoguan2',
method: 'get',
params
})
}
export function certifiedDeptTreeRegister(params, options = {}) {
return request({
...options,
url: '/system/user/certifiedDeptTreeWithNoDaoguan2',
method: 'get',
params
})
}
const setIdToString = (list) => {
for (var l of list) {
......@@ -208,13 +209,14 @@ export function reader(query) {
})
}
export function regionsList(params) {
return request({
url: '/common/region/regionsList',
method: 'get',
params
})
}
export function regionsList(params, options = {}) {
return request({
...options,
url: '/common/region/regionsList',
method: 'get',
params
})
}
// 添加会员自动录入 上传图片
export function carUrl(data, type) {
......@@ -477,12 +479,13 @@ export function getFeeBillDetail(payId) {
}
// 获取自己团队成员信息
export function getMyOwnMemberInfo() {
return request({
url: '/member/info/getMyOwnMemberInfo',
method: 'get'
})
}
export function getMyOwnMemberInfo(options = {}) {
return request({
...options,
url: '/member/info/getMyOwnMemberInfo',
method: 'get'
})
}
// 会员调入
export function getMobilizelist(params) {
......@@ -1530,13 +1533,14 @@ export function checkPersonByPersonId(perId) {
}
// 获取单位会员优惠政策
export function canUseDiscount(params) {
return request({
url: `/system/certifiedNew/canUseDiscount`,
method: 'get',
params
})
}
export function canUseDiscount(params, options = {}) {
return request({
...options,
url: `/system/certifiedNew/canUseDiscount`,
method: 'get',
params
})
}
// 获取单位会员一年缴费价格
export function getMyMemberCertUnitFee(params) {
......@@ -1626,13 +1630,14 @@ export function pcallBack2(orderId) {
}
// 优惠政策回显
export function getZtxDiscountPolicy(params) {
return request({
url: '/system/config/getZtxDiscountPolicy',
method: 'get',
params
})
}
export function getZtxDiscountPolicy(params, options = {}) {
return request({
...options,
url: '/system/config/getZtxDiscountPolicy',
method: 'get',
params
})
}
// 考官列表
export function listApi(params) {
......@@ -1684,12 +1689,13 @@ export function commitExamPointApply(params) {
})
}
export function getMyStatus() {
return request({
url: `/member/examPointApply/getMyStatus`,
method: 'get',
})
}
export function getMyStatus(options = {}) {
return request({
...options,
url: `/member/examPointApply/getMyStatus`,
method: 'get',
})
}
// 个人会员缴费支付
export function goPay(params) {
......@@ -1782,12 +1788,13 @@ export function createMemberPayRange(data) {
}
// 获取最近认证记录 单位会员
export function getMyRecent() {
return request({
url: '/system/certifiedNew/getMyRecent',
method: 'get'
})
}
export function getMyRecent(options = {}) {
return request({
...options,
url: '/system/certifiedNew/getMyRecent',
method: 'get'
})
}
// 获取最近认证记录 考点
......
......@@ -44,7 +44,7 @@ export function isDaoGuanRole() {
const app = getApp()
const deptType = app.globalData?.deptType
const userType = app.globalData?.userType
return deptType == 6 || deptType == '6' || userType == '4'
return deptType == null || deptType == 6 || deptType == '6' || userType == '4'
}
export function reLaunchHomeByRole() {
......
......@@ -190,7 +190,7 @@ function goHomeAfterLogin() {
const deptType = app.globalData.deptType
const userType = app.globalData.userType
uni.reLaunch({
url: (deptType == 6 || deptType == '6' || userType == '4') ? '/pages/index/daoGuanPerson' : '/pages/index/home'
url: (deptType == 6 || deptType == '6' || userType == '4' || deptType == null ) ? '/pages/index/daoGuanPerson' : '/pages/index/home'
})
}
......@@ -235,12 +235,12 @@ function login() {
pcLogin(form.value).then(() => {
app.globalData.isLogin = true
goHomeAfterLogin()
}).catch((err) => {
console.error('登录失败:', err)
refreshCodeWhenNotServerError(err)
uni.showToast({title: '登录失败', icon: 'none'})
}).finally(() => {
loading.value = false
}).catch((err) => {
console.error('登录失败:', err)
refreshCodeWhenNotServerError(err)
uni.showToast({title: '登录失败', icon: 'none'})
}).finally(() => {
loading.value = false
})
} else if (isActive.value == 1) {
if (!form2.value.telNo) {
......@@ -258,16 +258,16 @@ function login() {
}
if (loading.value) return;
loading.value = true
loginByPhone(form2.value.telNo, form2.value.code)
.then(() => {
app.globalData.isLogin = true
goHomeAfterLogin()
}).catch((err) => {
console.error('短信登录失败:', err)
refreshCodeWhenNotServerError(err)
}).finally(() => {
loading.value = false
})
loginByPhone(form2.value.telNo, form2.value.code)
.then(() => {
app.globalData.isLogin = true
goHomeAfterLogin()
}).catch((err) => {
console.error('短信登录失败:', err)
refreshCodeWhenNotServerError(err)
}).finally(() => {
loading.value = false
})
}
}
......@@ -288,29 +288,29 @@ function confirmRegister() {
uni.navigateTo({url: '/login/register'})
}
function getCode() {
uni.hideLoading()
getCodeImg().then((res) => {
codeUrl.value = 'data:image/gif;base64,' + res.data.img
form.value.uuid = res.data.uuid
form2.value.uuid = res.data.uuid
})
}
function isServer500(err) {
const message = String(err?.message || err?.errMsg || '')
return err?.statusCode === 500 ||
err?.code === 500 ||
err?.data?.code === 500 ||
message.includes('HTTP 500')
}
function refreshCodeWhenNotServerError(err) {
if (isServer500(err)) return
getCode()
}
function getCaptchaSms() {
function getCode() {
uni.hideLoading()
getCodeImg().then((res) => {
codeUrl.value = 'data:image/gif;base64,' + res.data.img
form.value.uuid = res.data.uuid
form2.value.uuid = res.data.uuid
})
}
function isServer500(err) {
const message = String(err?.message || err?.errMsg || '')
return err?.statusCode === 500 ||
err?.code === 500 ||
err?.data?.code === 500 ||
message.includes('HTTP 500')
}
function refreshCodeWhenNotServerError(err) {
if (isServer500(err)) return
getCode()
}
function getCaptchaSms() {
if (!form2.value.telNo) {
uni.showToast({title: '手机号不能为空', icon: 'none'})
return
......
......@@ -48,7 +48,7 @@
<view class="info">
<text class="name">{{ item.perName }} {{ item.perCode }}</text>
<text class="idc">证件号码:{{ item.perIdcCode }}</text>
<text class="reg">注册地:{{ JSON.parse(item.roleInfo).unit || '' }}</text>
<text class="reg">注册地:{{ item.pmName }}</text>
</view>
<button class="del-btn" @click="handleDel(item)">删除</button>
......@@ -186,6 +186,9 @@ function handleDel(row) {
function onSelfSelectChange(e) {
form.value.selfSelect = e.detail.value
showExamine.value = e.detail.value == '1'
list.value = []
searchResult.value = null
searchNoData.value = false
// if (e.detail.value == '0') {
// modalAction = 'assign'
// modalConfig.value = {
......
......@@ -128,6 +128,7 @@ const unpaidPopup = ref(null)
const payForm = ref({})
const customModalRef = ref(null)
const modalConfig = ref({})
const navigatingPerfect = ref(false)
const showDirectlyForAuthPay = ref(false)
const directUnderFlagForAuthPay = ref(0)
const associateIdForAuthPay = ref(0)
......@@ -175,14 +176,35 @@ onLoad((option) => {
onShow(() => {
if (app.globalData.isLogin) {
if (quickGoPerfectByCachedStatus()) return
init()
} else {
app.firstLoadCallback = () => {
if (quickGoPerfectByCachedStatus()) return
init()
}
}
})
function quickGoPerfectByCachedStatus() {
if (!hasCachedAuthStatus()) return false
if (navigatingPerfect.value) return true
const authStatus = String(app.globalData.authenticationStatus)
const memberInfoData = app.globalData.memberInfo || {}
const shouldGoPerfect = authStatus === '0' ||
authStatus === '3' ||
(authStatus === '1' && !memberInfoData.memCode)
if (!shouldGoPerfect) return false
goPerfectFromDaoGuan()
return true
}
function hasCachedAuthStatus() {
return app.globalData.authenticationStatus !== undefined &&
app.globalData.authenticationStatus !== null &&
String(app.globalData.authenticationStatus) !== 'undefined'
}
function init() {
checkImgExist()
// handelGetMyRecent()
......@@ -203,9 +225,9 @@ function init() {
checkDialogs()
})
api.getRemindCount().then(res => {
numData.value = res.data || {}
})
// api.getRemindCount().then(res => {
// numData.value = res.data || {}
// })
api.getBlack().then(res => {
isBlack.value = res.data
......@@ -239,13 +261,13 @@ function handleAccountStatus() {
const activeStatus = memberInfoData.activeStatus
if (!app.globalData.authenticationStatus || authStatus === 'undefined' || authStatus === '0' || authStatus === '3') {
uni.navigateTo({ url: '/pages/index/perfect' })
goPerfectFromDaoGuan()
return
}
if (authStatus === '1') {
if (!memberInfoData.memCode) {
uni.navigateTo({ url: '/pages/index/perfect' })
goPerfectFromDaoGuan()
}
return
}
......@@ -292,6 +314,19 @@ function showMemberStatusDialog(content, shouldGoAuth) {
})
}
function goPerfectFromDaoGuan() {
if (navigatingPerfect.value) return
navigatingPerfect.value = true
uni.redirectTo({
url: '/pages/index/perfect',
complete: () => {
setTimeout(() => {
navigatingPerfect.value = false
}, 300)
}
})
}
function goPath(path) {
if (isBlack.value == '1') {
uni.showModal({
......@@ -428,6 +463,7 @@ async function checkExamPointDialog() {
const examData = res?.data
const status = examData?.auditStatus
const canShowByExamStatus = examData == null || status == 0 || status == 3
console.log('打印',canShowByExamStatus, app.globalData.memberInfo?.activeStatus,app.globalData.authenticationStatus, app.globalData.deptType ,app.globalData.userInfo.hintFlag,app.globalData.memberInfo?.isPoints)
if (canShowByExamStatus &&
app.globalData.memberInfo?.activeStatus == 1 &&
app.globalData.authenticationStatus == 2 &&
......
......@@ -341,10 +341,10 @@
<image :src="config.baseUrl_api+'/fs/static/icon/17.png'"/>
审核记录
</view>
<view @click="goPath('/level/ztx/costSettlement')">
<!-- <view @click="goPath('/level/ztx/costSettlement')">
<image :src="config.baseUrl_api+'/fs/static/icon/10.png'"/>
费用结算
</view>
</view> -->
</view>
<!-- <view class="ttt">段位管理</view>
......
......@@ -483,7 +483,7 @@ const payForm = ref({})
// 获取最近认证记录,判断是否有未支付订单
function handelGetMyRecent() {
return new Promise(async (resolve, reject) => {
const res = await api.getMyRecent() ?? {}
const res = await api.getMyRecent({showLoading: false}) ?? {}
payForm.value = res.data?.comOrder ?? {}
// payStatus: '0' 未支付, '1' 已支付, '2' 已取消
if (payForm.value.content) payForm.value.content = JSON.parse(payForm.value.content)
......@@ -540,7 +540,7 @@ async function handelCancelOrder() {
// 获取审核详情
function getMyCertStageFN() {
auditLoading.value = true
api.getMyRecent().then(res => {
api.getMyRecent({showLoading: false}).then(res => {
auditLoading.value = false
if (res.data && res.data.auditLogs) {
try {
......@@ -638,12 +638,12 @@ function init() {
// 获取详情
function getDetail() {
api.getMyOwnMemberInfo().then(res => {
api.getMyOwnMemberInfo({showLoading: false}).then(res => {
// if (res.data.memberInfo) {
// Object.assign(form.value, res.data.memberInfo)
// }
form.value = {...res.data.dept, ...res.data.memberInfo}
form.value.deptType = res.data.memberInfo.deptType || res.data.dept.deptType
form.value.deptType = res.data.memberInfo?.deptType || res.data.dept?.deptType
if (form.value.type) {
form.value.type = String(form.value.type)
}
......@@ -753,7 +753,7 @@ function formatRegionTree(node) {
// 获取地区列表
function getRegionsList() {
api.regionsList().then(res => {
api.regionsList(null, {showLoading: false}).then(res => {
options.value = res.data
// 转换为级联选择器格式
regionOptions.value = res.data
......@@ -763,13 +763,12 @@ function getRegionsList() {
// 获取协会树
function getTree() {
console.log('获取协会树')
api.certifiedDeptTreeRegister({
selfDeptId: -1, // 修复:传数字类型,避免后端类型转换错误
webSiteShow: 1,
showDisabled: 1,
isBlack: 0
}).then(res => {
}, {showLoading: false}).then(res => {
assoList.value = res.data.map(item => formatTree(item))
// 树加载完成后,如果有parentId,设置完整路径名称
if (form.value.parentId) {
......@@ -826,16 +825,13 @@ function changCase(e) {
// 取最后一级的value(纯ID)
const lastNode = valueArr[valueArr.length - 1];
form.value.parentId = lastNode?.value || '';
console.log('最终提交的parentId:', form.value.parentId);
assoFullName.value = getAssoFullName(valueArr)
console.log('协会完整路径:', assoFullName.value);
}
// 地址选择(核心修复:从对象中提取纯value,对齐PC端格式)
// 地址选择(还原成你之前能用的版本:纯ID数组赋值)
function changeAddress(e) {
const selectedValue = e.detail?.value ?? e;
console.log("选择的地址:", selectedValue);
// 直接赋值纯ID,不要再取 .value
form.value.provinceId = selectedValue[0].value || '';
......@@ -845,7 +841,6 @@ function changeAddress(e) {
// 同步更新选择器显示
coordinates1.value = selectedValue;
console.log('最终地址ID:', form.value.provinceId, form.value.cityId, form.value.regionId);
}
// 获取会员认证费用
......@@ -857,21 +852,21 @@ function getMyMemberCertUnitFeeApi() {
// 检查是否可用优惠政策
function canUseDiscountApi() {
api.canUseDiscount().then(res => {
api.canUseDiscount(null, {showLoading: false}).then(res => {
preferentialPolicy.value = res.data
})
}
// 获取优惠政策详情
function getZtxDiscountPolicyApi() {
api.getZtxDiscountPolicy().then(res => {
api.getZtxDiscountPolicy(null, {showLoading: false}).then(res => {
preferentialData.value = res.data
})
}
// 获取考点申请状态
function getMyStatusAPI() {
api.getMyStatus().then(res => {
api.getMyStatus({showLoading: false}).then(res => {
if (res.data && res.data.auditStatus) {
auditStatus.value = res.data.auditStatus
} else {
......@@ -913,7 +908,7 @@ function submitStep1() {
setTimeout(() => {
activeStep.value = 2
getDetail()
}, 1500)
}, 500)
} else {
uni.showToast({title: res.msg || '操作失败', duration: 2000, icon: 'none'})
}
......@@ -1058,7 +1053,6 @@ function submitCertification() {
companyName: form.value.companyName,
legalIdcCode: form.value.legalIdcCode
}
console.log(666, params)
// return
uni.showLoading({title: '提交中...'})
api.editMyMemberCertifiedInfo(params).then(res => {
......@@ -1068,12 +1062,11 @@ function submitCertification() {
// 跳转缴费页面
setTimeout(() => {
const assoName = assoFullName.value
console.log(888, assoName)
// 跳转到缴费页面
uni.navigateTo({
url: `/myCenter/goPay?payName=${encodeURIComponent(form.value.name || '')}&assoName=${encodeURIComponent(assoName)}`
})
}, 1500)
}, 500)
} else {
uni.showToast({title: res.msg || '提交失败', duration: 2000, icon: 'none'})
}
......@@ -1357,7 +1350,6 @@ function handleLogout() {
// 监听步骤变化,加载审核详情
watch(activeStep, (newVal) => {
console.log('activeStep changed:', newVal)
if (newVal === 3) {
getMyCertStageFN()
}
......
......@@ -78,9 +78,9 @@
v-model="form.name"
class="input"
:disabled="!showPersonalType && form.type === '1'"
:placeholder="form.type === '1' ? '请输入公司全称' : '请输入发票抬头'"
:placeholder="invoiceTitlePlaceholder"
/>
<text class="hint">请确保发票抬头与公司营业执照或个人身份证上的名称一致。</text>
<text class="hint">{{ invoiceTitleHint }}</text>
</view>
<!-- 纳税人识别号(企业才显示) -->
......@@ -93,7 +93,7 @@
maxlength="20"
placeholder="请输入纳税人识别号"
/>
<text class="hint">企业税务登记证上的号码,一般为15~20位</text>
<text class="hint">企业税务登记证上的号码,由 15~20 位数字、大写字母组成</text>
</view>
<!-- 接收方式 -->
......@@ -134,7 +134,7 @@
</template>
<script setup>
import {ref, reactive} from 'vue';
import {ref, reactive, computed} from 'vue';
import {onLoad} from '@dcloudio/uni-app';
import {outputInvoiceNo} from '@/common/api.js';
import customModal from '@/components/custom-modal.vue';
......@@ -159,6 +159,16 @@ const form = reactive({
id: '' // 订单ID
});
const invoiceTitlePlaceholder = computed(() => {
return form.type === '1' ? '请输入公司全称' : '请输入个人姓名';
});
const invoiceTitleHint = computed(() => {
return form.type === '1'
? '请确保发票抬头与营业执照上的单位名称一致'
: '请确保发票抬头与个人身份证上的姓名一致';
});
// 切换开票类型
function changeInvoiceType(val) {
form.type = val
......
......@@ -26,7 +26,7 @@
v-if="!personalInvoiceMode"
:class="{ active: form.type === '0' }"
class="type-option"
@click="form.type = '0'"
@click="changeInvoiceType('0')"
>
<view class="type-icon enterprise">
<text class="icon-text"></text>
......@@ -39,7 +39,7 @@
v-if="showIndividualType"
:class="{ active: form.type === '1' }"
class="type-option"
@click="form.type = '1'"
@click="changeInvoiceType('1')"
>
<view class="type-icon">
<text class="icon-text"></text>
......@@ -59,9 +59,9 @@
v-model="form.name"
class="input"
:disabled="!showIndividualType || personalInvoiceMode"
:placeholder="form.type === '0' ? '请输入公司全称' : '请输入发票抬头'"
:placeholder="invoiceTitlePlaceholder"
/>
<text class="hint">请确保发票抬头与公司营业执照或个人身份证上的名称一致</text>
<text class="hint">{{ invoiceTitleHint }}</text>
</view>
<!-- 纳税人识别号(企业才显示) -->
......@@ -74,7 +74,7 @@
placeholder="请输入纳税人识别号"
:disabled="!showIndividualType"
/>
<text class="hint">企业税务登记证上的号码,一般为15~20位</text>
<text class="hint">企业税务登记证上的号码,由 15~20 位数字、大写字母组成</text>
</view>
<!-- 开票金额(只读) -->
......@@ -94,7 +94,7 @@
</template>
<script setup>
import {ref, reactive} from 'vue';
import {ref, reactive, computed} from 'vue';
import {onLoad} from '@dcloudio/uni-app';
import {outputInvoiceNoFeisui} from '@/common/api.js';
import customModal from '@/components/custom-modal.vue';
......@@ -114,6 +114,24 @@ const form = reactive({
amount: 0 // 金额
});
const invoiceTitlePlaceholder = computed(() => {
return form.type === '0' ? '请输入公司全称' : '请输入个人姓名';
});
const invoiceTitleHint = computed(() => {
return form.type === '0'
? '请确保发票抬头与营业执照上的单位名称一致'
: '请确保发票抬头与个人身份证上的姓名一致';
});
function changeInvoiceType(type) {
if (form.type === type) return;
form.type = type;
if (type === '1') {
form.taxno = '';
}
}
// 页面加载
onLoad((options) => {
if (options.id || options.orderId) {
......
......@@ -202,6 +202,9 @@ const showValidityModal = ref(false)
const validityDateText = ref('')
onLoad(async (option) => {
if (option.idcType !== undefined) {
baseFormData.value.idcType = String(option.idcType)
}
if (option.name && option.idcCode) {
baseFormData.value.name = decodeURIComponent(option.name)
baseFormData.value.idcCode = decodeURIComponent(option.idcCode)
......
......@@ -57,10 +57,10 @@
<!-- 卡片右下角按钮 -->
<view class="card-btns">
<view class="card-btn" @click="goToPay">
<view v-if=" perInfo.idcTypeStr != '外国护照'" class="card-btn" @click="goToPay">
<text>认证缴费</text>
</view>
<view class="card-btn" @click="downCert">
<view v-if=" perInfo.idcTypeStr != '外国护照'" class="card-btn" @click="downCert">
<text>电子会员证</text>
</view>
</view>
......@@ -163,6 +163,14 @@
</view>
</view>
<view class="form-item">
<view class="form-label">证件类型</view>
<view class="form-input">
<picker :value="idcTypeIndex" :range="idcTypeList" range-key="text" @change="onIdcTypeChange">
<view class="picker-value">{{ idcTypeList[idcTypeIndex]?.text || '请选择证件类型' }}</view>
</picker>
</view>
</view>
<view class="form-item">
<view class="form-label">证件号</view>
<view class="form-input">
<input v-model="bindForm.idcCode" placeholder="请输入证件号"
......@@ -227,8 +235,33 @@ const isBound = computed(() => {
return perName !== undefined && perName !== null && perName !== ''
})
const boundIdcType = computed(() => {
return String(perInfo.value?.idcType ?? perInfo.value?.perIdcType ?? bindForm.value.idcType ?? '0')
})
const isPassportBound = computed(() => isBound.value && boundIdcType.value === '1')
const bindPopup = ref(null)
const idcTypeList = ref([{
value: '0',
text: "身份证"
},
{
value: '1',
text: "来往大陆(内地)通行证 "
},
{
value: '3',
text: "护照"
},
{
value: '5',
text: "香港身份证"
}
])
const idcTypeIndex = ref(0)
const bindForm = ref({
idcType: '0',
name: '',
idcCode: ''
})
......@@ -290,9 +323,11 @@ const checkAndOpenBindPopup = () => {
const openBindPopup = () => {
if (bindPopup.value) {
bindForm.value = {
idcType: '0',
name: '',
idcCode: ''
}
idcTypeIndex.value = 0
bindPopup.value.open()
} else {
nextTick(() => {
......@@ -306,6 +341,11 @@ const closeBindPopup = () => {
bindPopup.value?.close()
}
const onIdcTypeChange = (e) => {
idcTypeIndex.value = Number(e.detail.value)
bindForm.value.idcType = idcTypeList.value[idcTypeIndex.value]?.value || '0'
}
// 处理绑定/切换操作
const handleBindAction = async () => {
// if (isBound.value) {
......@@ -361,6 +401,7 @@ const confirmBind = async () => {
})
const [err, res] = await to(bindUser({
idcType: bindForm.value.idcType,
name: bindForm.value.name,
idcCode: bindForm.value.idcCode
}))
......@@ -406,14 +447,17 @@ const confirmBind = async () => {
}
const handelGo = () => {
if (bindForm.value.idcType === '1') return
uni.showModal({
title: "提示",
content: "当前账号非中国跆拳道协会有效会员。请先完成认证缴费,即可正常登录使用。",
success: function (res) {
if (res.confirm) {
// closeBindPopup()
const name = encodeURIComponent(bindForm.value.name || '')
const idcCode = encodeURIComponent(bindForm.value.idcCode || '')
uni.navigateTo({
url: `/personal/addVip_per?name=${bindForm.value.name}&idcCode=${bindForm.value.idcCode}`
url: `/personal/addVip_per?name=${name}&idcCode=${idcCode}&idcType=${bindForm.value.idcType}`
});
} else if (res.cancel) {
// closeBindPopup()
......@@ -484,11 +528,13 @@ const goToOrder = () => {
// 导航到缴费
const goToPay = () => {
if (isPassportBound.value) return
const perId = userInfo.value.perId ?? ''
const name = perInfo.value?.perName ? encodeURIComponent(perInfo.value.perName) : ''
const idcCode = perInfo.value?.perIdcCode ? encodeURIComponent(perInfo.value.perIdcCode) : ''
const idcType = boundIdcType.value
uni.navigateTo({
url: `/personal/addVip_per?perId=${perId}&name=${name}&idcCode=${idcCode}`
url: `/personal/addVip_per?perId=${perId}&name=${name}&idcCode=${idcCode}&idcType=${idcType}`
});
};
......@@ -862,6 +908,11 @@ const confirmLogout = async () => {
width: 100%;
}
.picker-value {
font-size: 28rpx;
color: #333;
}
.placeholder-class {
color: #999;
}
......
......@@ -101,17 +101,17 @@
// 获取证件类型
const getCertType = (type) => {
switch (type) {
// case '0':
case '0':
case '1':
return '身份证';
case '2':
return '护照';
case '1':
return '来往大陆(内地)通行证';
case '3':
return '军官证';
return '护照';
case '4':
return '港澳通行证';
case '5':
return '台湾通行证';
return '“香港身份证';
default:
return '--';
}
......
......@@ -70,8 +70,8 @@
<uni-forms-item label="头像" required>
<uni-file-picker v-model="photoArr" @delete="delPhoto" return-type="object" limit="1"
@select="upPhoto" :del-ico="false" :image-styles="imageStylesTx"></uni-file-picker>
<image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;"
:src="config.baseUrl_api + baseFormData.photo2" />
<!-- <image mode="aspectFill" v-if="baseFormData.photo2" style="height:200rpx;width:200rpx;"
:src="config.baseUrl_api + baseFormData.photo2" /> -->
</uni-forms-item>
</view>
</uni-forms>
......@@ -278,6 +278,13 @@
if (!file) {
return
}
const imgUrl = getPickerFilePath(e)
if (!imgUrl) {
openCustomModal({
content: '未获取到图片地址,请重新选择图片'
})
return
}
uni.showLoading({
title: '加载中'
});
......@@ -285,7 +292,7 @@
// console.log(e)
// const formData = new FormData()
// formData.append('pic', e.tempFiles[0].file)
api.carUrl(e.tempFilePaths[0], baseFormData.value.idcType).then(res => {
api.carUrl(imgUrl, baseFormData.value.idcType).then(res => {
console.log(res)
if (res.data) {
baseFormData.value.sex = res.data.sex
......@@ -313,37 +320,59 @@
}
function upPhoto(e) {
const tempFilePaths = e.tempFilePaths;
const imgUrl = tempFilePaths[0]
const imgUrl = getPickerFilePath(e)
if (!imgUrl) {
openCustomModal({
content: '未获取到图片地址,请重新选择图片'
})
return
}
const uploadPhoto = (path) => {
uni.showLoading({
title: '加载中'
});
api.uploadImgCorpPhoto(path).then(data => {
console.log(data)
baseFormData.value.photo = data.data.fang;
baseFormData.value.photo2 = data.data.yuan;
photoArr.value = {
url: config.baseUrl_api + baseFormData.value.photo,
name: '头像',
extname: 'jpg'
}
}).catch(() => {
photoArr.value = {}
baseFormData.value.photo = ''
baseFormData.value.photo2 = ''
openCustomModal({
content: '头像上传失败,请重新上传'
})
});
}
if (typeof wx === 'undefined' || typeof wx.cropImage !== 'function') {
uploadPhoto(imgUrl)
return
}
wx.cropImage({
src: imgUrl,
cropScale: '4:5',
success: function(resp) {
uni.showLoading({
title: '加载中'
});
api.uploadImgCorpPhoto(resp.tempFilePath).then(data => {
console.log(data)
baseFormData.value.photo = data.data.fang;
baseFormData.value.photo2 = data.data.yuan;
photoArr.value = {
url: config.baseUrl_api + baseFormData.value.photo,
name: '头像',
extname: 'jpg'
}
});
uploadPhoto(resp.tempFilePath || imgUrl)
},
fail: function(err) {
photoArr.value = {}
console.warn('cropImage failed, upload original image:', err)
uploadPhoto(imgUrl)
}
})
}
function getPickerFilePath(e) {
const file = e?.tempFiles?.[0] || {}
return e?.tempFilePaths?.[0] || file.tempFilePath || file.path || file.url || ''
}
function delimgFont(n) {
photoArr.value = {}
......@@ -528,6 +557,7 @@
const time = new Date().valueOf() + ''
baseFormData.value.t = time + Math.floor(Math.random() * 10)
baseFormData.value.signT = aes2.AESEncrypt(baseFormData.value.idcType + time)
console.log(666,baseFormData.value)
api.addPersonToMyDept(baseFormData.value).then(Response => {
if (Response.data == 0) {
let msg = '该成员,实名认证未通过,注册失败!'
......
......@@ -313,7 +313,7 @@ async function commitFN(row) {
const res = await api.getNewCountByRangeId(row.rangId)
const countData = res?.data || {}
if (Number(countData.all || 0) <= 0) {
uni.showToast({ title: '请添加缴费学员', icon: 'none' })
uni.showToast({ title: '此缴费单尚未关联学员,请先添加缴费学员。', icon: 'none' })
return
}
uni.navigateTo({
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!