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> </el-button>
</div> --> </div> -->
<div class="avatar"> <div class="avatar" v-if="isLoggedIn">
<div class="icon_avatar"> <div class="icon_avatar">
<el-icon size="20"><Avatar /></el-icon> <el-icon size="20"><Avatar /></el-icon>
</div> </div>

View File

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

View File

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

View File

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