ykt-wxapp/pages/work/components/cert-popup.vue

124 lines
3.9 KiB
Vue
Raw Normal View History

2026-01-23 14:36:28 +08:00
<template>
<uni-popup ref="popup" type="center" :mask-click="false">
<view class="bg-white rounded overflow-hidden" style="width: 690rpx;">
2026-01-26 14:52:33 +08:00
<template v-if="status === 'unverified'">
<view class="px-15 py-12 text-center text-lg font-semibold text-dark">
认证须知
</view>
<view class="text-base text-dark px-15 leading-normal font-semibold mt-10">
1认证通过后您个人账号病历档案管理数含所有团队上限由10个升级至100个
</view>
<view class="px-15 leading-normal mt-10 ">
<text class="text-base text-dark">2认证前请仔细核对个人信息确保准确无误认证后部分信息不支持修改包括姓名岗位等如需修改以上信息请联系客服人工处理</text>
</view>
<view class="mt-10 px-15 leading-normal font-semibold pb-50 text-lg text-primary" @click="toService()">点击添加客服
</view>
</template>
<template v-else-if="status === 'verified'">
<view class="px-15 py-12 text-center text-lg font-semibold text-dark">
提示
</view>
<view class="text-base text-dark px-15 leading-normal font-semibold mt-10">
您的认证已通过
</view>
<view class="px-15 leading-normal mt-10 text-base text-dark">
若需要修改姓名岗位等信息请联系客服人工处理
</view>
<view class="mt-10 px-15 leading-normal font-semibold pb-50 text-lg text-primary" @click="toService()">
点击添加客服
</view>
</template>
<template v-else-if="status === 'failed'">
<view class="px-15 py-12 text-center text-lg font-semibold text-dark">
认证失败原因
</view>
<view class="px-15 leading-normal mt-10 text-base text-dark pb-50">
{{ reason }}
</view>
</template>
<view v-if="btns" class="footer-buttons">
<button-footer hideden-shadow :cancelText="btns.cancelText" :confirmText="btns.confirmText"
:showCancel="btns.showCancel" :showConfirm="btns.showConfirm" @confirm="confirm()" @cancel="close()" />
2026-01-23 14:36:28 +08:00
</view>
</view>
</uni-popup>
</template>
<script setup>
2026-01-26 14:52:33 +08:00
import { computed, ref, watch } from 'vue';
import { storeToRefs } from "pinia";
import useAccountStore from "@/store/account.js";
import api from "@/utils/api.js";
import { toast } from '@/utils/widget';
2026-01-23 14:36:28 +08:00
import ButtonFooter from '@/components/button-footer.vue';
const emits = defineEmits(['close', 'confirm'])
const props = defineProps({
2026-01-26 14:52:33 +08:00
status: {
type: String,
default: ''
},
2026-01-23 14:36:28 +08:00
visible: {
type: Boolean,
default: false
}
})
2026-01-26 14:52:33 +08:00
const popup = ref();
const status = ref('');
const reason = ref('');
const { account, doctorInfo } = storeToRefs(useAccountStore());
const btns = computed(() => {
if (status.value === 'unverified') {
return { showCancel: true, showConfirm: true, confirmText: '去认证' }
}
if (status.value === 'verified') {
return { showConfirm: false, cancelText: '我知道了' }
}
if (status.value === 'failed') {
return { showCancel: true, showConfirm: true, confirmText: '重新认证' }
}
})
2026-01-23 14:36:28 +08:00
function close() {
emits('close')
}
function confirm() {
close()
uni.navigateTo({
url: "/pages/work/profile?type=cert",
});
}
function toService() {
close()
}
2026-01-26 14:52:33 +08:00
async function getStatus() {
const res = await api('getMemberVerifyStatus', { corpId: account.value.corpId, weChatOpenId: account.value.openid, id: doctorInfo.value._id })
if (res && res.success) {
status.value = res.data.verifyStatus;
reason.value = res.data.reason || '';
popup.value && popup.value.open()
} else {
toast(res.message);
close()
}
}
2026-01-23 14:36:28 +08:00
watch(() => props.visible, n => {
if (n) {
2026-01-26 14:52:33 +08:00
getStatus()
2026-01-23 14:36:28 +08:00
} else {
popup.value && popup.value.close()
}
})
</script>
<style lang="scss" scoped>
.pb-50 {
padding-bottom: 100rpx;
}
</style>