update: 优化个人信息只有登录后才显示;开店入驻和驳回审核文件上传支持10M、地区搜索自动归集到当前城市搜索范围、处理邮箱用户无需填写及自动拼接数据login_mobile@qq.com、新增个人姓名字段并自动填充信息;当未登录时,如果直接访问开店入驻或审核页面,则强制跳转首页,如果已登录并未申请过开店访问审核页,则强制跳转开店入驻页。

This commit is contained in:
mixtan 2025-06-18 15:05:27 +08:00
parent 721c325914
commit a5655b8452
4 changed files with 96 additions and 36 deletions

View File

@ -31,7 +31,7 @@
</el-button>
</div> -->
<div class="avatar">
<div class="avatar" v-if="isLoggedIn">
<div class="icon_avatar">
<el-icon size="20"><Avatar /></el-icon>
</div>

View File

@ -1,7 +1,7 @@
<template>
<div class="signUp-container">
<div class="steps-container">
<div :class="['steps-container', { nodata: ![2,21].includes(auditInfo.approval_status) }]">
<div class="tit">
<el-result
:icon="auditInfo.approval_status==1 ? 'success' : [3,5].includes(auditInfo.approval_status) ? 'warning' : 'error' "
@ -12,7 +12,7 @@
</div>
</div>
<div class="form-submit">
<div class="form-submit" v-if="[2,21].includes(auditInfo.approval_status)">
<el-form
:model="applyFormData"
ref="formRef"
@ -160,7 +160,7 @@
</el-form>
</div>
<div class="form-button">
<div class="form-button" v-if="[2,21].includes(auditInfo.approval_status)">
<el-button type="primary" @click="merchToApply" class="custom-button"
>重新审核</el-button
>
@ -296,6 +296,7 @@ const applyFormData = reactive({
individual_id_images: "",
individual_id_images2: "",
individual_id_number: "",
individual_id_name: "",
individual_id_addr: "",
individual_id_period_begin: "",
individual_id_period_end: "",
@ -390,7 +391,10 @@ const rules = reactive({
legal_person_id_images2: [
{ required: true, message: "请上传法人身份证反面", trigger: "change" },
],
individual_id_number: [
individual_id_name: [
{ required: true, message: "请输入个人身份证姓名", trigger: "blur" },
],
individual_id_number: [
{ required: true, message: "请输入个人身份证号", trigger: "blur" },
],
individual_id_images: [
@ -476,6 +480,7 @@ const handleMerchApply = async () => {
individual_id_images,
individual_id_images2,
individual_id_number,
individual_id_name,
legal_person_id_images,
legal_person_id_images2,
legal_person_id_number,
@ -498,6 +503,7 @@ const handleMerchApply = async () => {
individual_id_addr,
individual_id_period_begin,
individual_id_period_end,
email,
} = applyFormData;
const res = await re_apply({
id: auditInfo.value.id,
@ -522,6 +528,7 @@ const handleMerchApply = async () => {
individual_id_images,
individual_id_images2,
individual_id_number,
individual_id_name,
legal_person_id_images,
legal_person_id_images2,
legal_person_id_number,
@ -544,6 +551,7 @@ const handleMerchApply = async () => {
individual_id_addr,
individual_id_period_begin,
individual_id_period_end,
email: `${login_mobile}@qq.com`,
});
if(res.status==200&&res.code==0){
ElMessage.success("资料已提交~")
@ -741,7 +749,7 @@ const handleSelect = (item) => {
const beforeUpload = (file) => {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
const isLt2M = file.size / 1024 / 1024 < 10;
loading.value = true;
@ -752,7 +760,7 @@ const beforeUpload = (file) => {
}
if (!isLt2M) {
loading.value = false;
ElMessage.error("上传的图片大小不能超过2MB");
ElMessage.error("上传的图片大小不能超过10MB");
return false;
}
return true;
@ -875,6 +883,8 @@ const handleOcrText = async (batchNo, imgType) => {
)) as any;
console.log("individual_id_images", res);
applyFormData.individual_id_name = res.name;
applyFormData.account_holder_name = res.name;
applyFormData.individual_id_number = res.idNumber;
applyFormData.individual_id_addr = res.address;
break;
@ -1058,6 +1068,12 @@ onMounted(() => {
border-radius: 5px;
background: #fff;
margin-bottom: 12px;
&.nodata{
min-height: 900px;
display: flex;
align-items: center;
justify-content: center;
}
}
:deep(.upload-hidden .el-upload--picture-card) {

View File

@ -141,6 +141,14 @@ export default {
imgUrlArr: [],
sort: 15,
},
{
type: "input",
key: "individual_id_name",
hide: true,
label: "个人身份证姓名",
placeholder: "请输入个人身份证姓名",
sort: 16,
},
{
type: "input",
key: "individual_id_number",

View File

@ -18,7 +18,17 @@
>
<div class="from_box">
<div class="tit">店铺信息</div>
<!-- 第一步表单内容 -->
<el-form-item label="主体类型" prop="entity_type">
<el-radio-group
v-model="applyFormData.entity_type"
@change="clearOtherFields"
>
<el-radio-button :value="1">企业</el-radio-button>
<el-radio-button :value="2">个人</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="联系人" prop="contact_name">
<el-input
v-model="applyFormData.contact_name"
@ -32,9 +42,9 @@
disabled
/>
</el-form-item>
<el-form-item label="邮箱" prop="email">
<!-- <el-form-item label="邮箱" prop="email">
<el-input v-model="applyFormData.email" placeholder="请输入邮箱" />
</el-form-item>
</el-form-item> -->
<el-form-item label="经营品类" prop="biz_category">
<el-cascader
v-model="applyFormData.biz_category"
@ -170,15 +180,6 @@
<div class="from_box">
<div class="tit">营业信息</div>
<el-form-item label="主体类型" prop="entity_type">
<el-radio-group
v-model="applyFormData.entity_type"
@change="clearOtherFields"
>
<el-radio-button :value="1">企业</el-radio-button>
<el-radio-button :value="2">个人</el-radio-button>
</el-radio-group>
</el-form-item>
<div v-if="applyFormData.entity_type === 1">
<el-form-item
:label="getLabel('biz_license_image', 1)"
@ -276,8 +277,8 @@
v-if="applyFormData.biz_license_image"
>
<el-input
:rows="2"
type="textarea"
:rows="2"
type="textarea"
v-model="applyFormData.biz_license_content"
placeholder="请输入经营范围"
/>
@ -569,6 +570,16 @@
<div class="uploader-tips">上传证件反面</div>
</el-upload>
</el-form-item>
<el-form-item
label="个人身份证姓名"
prop="individual_id_name"
v-if="applyFormData.individual_id_images"
>
<el-input
v-model="applyFormData.individual_id_name"
placeholder="请输入个人身份证姓名"
/>
</el-form-item>
<el-form-item
label="个人身份证号"
prop="individual_id_number"
@ -581,7 +592,7 @@
</el-form-item>
<el-form-item
label="身份证详细地址"
prop="individual_id_number"
prop="individual_id_addr"
v-if="applyFormData.individual_id_images"
>
<el-input
@ -705,6 +716,7 @@
<script lang="ts" setup>
import { ref, reactive, onMounted, watch } from "vue";
import { useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { Plus, Search } from "@element-plus/icons-vue";
@ -737,6 +749,7 @@ const orcImgTypeConf = {
};
const userStore = useUserStore();
const router = useRouter();
const processData = () => {
const { provinceData, cityData: cityList, areaData } = cityData;
@ -757,6 +770,7 @@ const processData = () => {
});
};
const isLoggedIn = ref(userStore.isLoggedIn);
const active = ref(1);
const loading = ref(false);
const formRef = ref(null);
@ -815,6 +829,7 @@ const applyFormData = reactive({
individual_id_images: "",
individual_id_images2: "",
individual_id_number: "",
individual_id_name: "",
individual_id_addr: "",
individual_id_period_begin: "",
individual_id_period_end: "",
@ -868,7 +883,7 @@ const rules = reactive({
biz_license_content: [
{ required: true, message: "请输入经营范围内容", trigger: "blur" },
],
email: [{ required: true, message: "请输入邮箱", trigger: "blur" }],
// email: [{ required: true, message: "", trigger: "blur" }],
biz_category: [
{ required: true, message: "请选择经营品类", trigger: "change" },
],
@ -927,6 +942,9 @@ const rules = reactive({
legal_person_id_images2: [
{ required: true, message: "请上传法人身份证反面", trigger: "change" },
],
individual_id_name: [
{ required: true, message: "请输入个人身份证姓名", trigger: "blur" },
],
individual_id_number: [
{ required: true, message: "请输入个人身份证号", trigger: "blur" },
],
@ -984,7 +1002,6 @@ watch(individual_date_type, (newVal) => {
});
const handleMerchApply = async () => {
console.log(2001);
const {
bank_name,
bank_district,
@ -1006,6 +1023,7 @@ const handleMerchApply = async () => {
individual_id_images,
individual_id_images2,
individual_id_number,
individual_id_name,
legal_person_id_images,
legal_person_id_images2,
legal_person_id_number,
@ -1029,6 +1047,7 @@ const handleMerchApply = async () => {
individual_id_addr,
individual_id_period_begin,
individual_id_period_end,
email,
} = applyFormData;
const res = await merchApply({
bank_name,
@ -1053,6 +1072,7 @@ const handleMerchApply = async () => {
individual_id_images,
individual_id_images2,
individual_id_number,
individual_id_name,
legal_person_id_images,
legal_person_id_images2,
legal_person_id_number,
@ -1074,7 +1094,14 @@ const handleMerchApply = async () => {
individual_id_addr,
individual_id_period_begin,
individual_id_period_end,
email: `${login_mobile}@qq.com`,
});
if (res.code == 0 && res.status == 200) {
ElMessage.success("已提交开店申请~");
setTimeout(() => {
router.push({ name: "check" });
}, 1000);
}
};
const checkForm = async () => {
@ -1146,7 +1173,7 @@ const merchToApply = async () => {
};
const bankListChange = (val) => {
const item:any = bankList2.value.find((item:any) => item.value == val);
const item: any = bankList2.value.find((item: any) => item.value == val);
if (item) {
applyFormData.bank_name = item.label;
applyFormData.bank_district = item.district;
@ -1227,7 +1254,9 @@ const querySearch = async (queryString, cb) => {
try {
const params = {
query: queryString,
region: applyFormData.mapAddressLabel,
region:
applyFormData.mapAddressLabel.indexOf("/") &&
applyFormData.mapAddressLabel?.split("/")[1],
city_limit: true,
ret_coordtype: "gcj02ll",
};
@ -1267,7 +1296,7 @@ const handleSelect = (item) => {
const beforeUpload = (file) => {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
const isLt2M = file.size / 1024 / 1024 < 10;
loading.value = true;
@ -1278,7 +1307,7 @@ const beforeUpload = (file) => {
}
if (!isLt2M) {
loading.value = false;
ElMessage.error("上传的图片大小不能超过2MB");
ElMessage.error("上传的图片大小不能超过10MB");
return false;
}
return true;
@ -1389,16 +1418,16 @@ const handleOcrText = async (batchNo, imgType) => {
batchNo,
orcImgTypeConf.ID_CARD_BEHIND
)) as any;
var validity = res.validity.split('-')
var validity = res.validity.split("-");
console.log("legal_person_id_images2", res);
applyFormData.legal_person_id_period_begin = validity[0];
if(validity[1]!='长期'){
if (validity[1] != "长期") {
applyFormData.legal_person_id_period_end = validity[1];
} else {
legal_person_date_type.value=1
applyFormData.legal_person_id_period_end = "9999-12-31"
legal_person_date_type.value = 1;
applyFormData.legal_person_id_period_end = "9999-12-31";
}
break;
case "individual_id_images":
@ -1408,6 +1437,8 @@ const handleOcrText = async (batchNo, imgType) => {
)) as any;
console.log("individual_id_images", res);
applyFormData.individual_id_name = res.name;
applyFormData.account_holder_name = res.name;
applyFormData.individual_id_number = res.idNumber;
applyFormData.individual_id_addr = res.address;
break;
@ -1417,16 +1448,16 @@ const handleOcrText = async (batchNo, imgType) => {
orcImgTypeConf.ID_CARD_BEHIND
)) as any;
var validity = res.validity.split('-')
var validity = res.validity.split("-");
console.log("individual_id_images2", res);
applyFormData.individual_id_period_begin = validity[0];
if(validity[1]!='长期'){
if (validity[1] != "长期") {
applyFormData.individual_id_period_end = validity[1];
} else {
legal_person_date_type.value=1
applyFormData.individual_id_period_end = "9999-12-31"
legal_person_date_type.value = 1;
applyFormData.individual_id_period_end = "9999-12-31";
}
break;
case "bank_image":
@ -1504,6 +1535,7 @@ const handleUploadError = (error, file) => {
const clearOtherFields = () => {
applyFormData.individual_id_number = "";
applyFormData.individual_id_name = "";
applyFormData.individual_id_images = "";
applyFormData.individual_id_images2 = "";
applyFormData.individual_id_addr = "";
@ -1528,6 +1560,10 @@ const clearOtherFields = () => {
};
onMounted(() => {
if(!isLoggedIn.value){
router.push({ name: "index" });
return
}
GetStoreCategories()
.then((res) => {
if (res.code === 0 && res.status === 200) {