Compare commits

...

2 Commits

5 changed files with 345 additions and 348 deletions

1
components.d.ts vendored
View File

@ -25,6 +25,7 @@ declare module 'vue' {
ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElResult: typeof import('element-plus/es')['ElResult']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
ElSelectV2: typeof import('element-plus/es')['ElSelectV2'] ElSelectV2: typeof import('element-plus/es')['ElSelectV2']

View File

@ -1,4 +1,5 @@
import axios from "axios"; import axios from "axios";
import { ElMessage } from "element-plus";
// import store from '@/store' // import store from '@/store'
const baseURL = import.meta.env.VUE_APP_BASE_URL; const baseURL = import.meta.env.VUE_APP_BASE_URL;
@ -29,6 +30,9 @@ service.interceptors.request.use(
// response interceptor // response interceptor
service.interceptors.response.use( service.interceptors.response.use(
(response) => { (response) => {
if(response.data.status==250){
ElMessage.error(response.data.msg || '请求异常,再重试!')
}
return response.data; return response.data;
}, },
(error) => { (error) => {

View File

@ -1,22 +1,41 @@
<template> <template>
<div class="signUp-container"> <div class="signUp-container">
<!-- 步骤条 -->
<div class="steps-container"> <div class="steps-container">
<div class="tit" style="margin-bottom: 0">免费开店资料填写</div> <div class="tit">
<el-result
:icon="approval_status==2 ? 'success' : [3,5].includes(approval_status) ? 'primary' : 'error' "
:title="auditInfo?.approval_remark"
:sub-title="approval_status==2 ? '现在去商家端看看吧~' : [3,5].includes(approval_status) ? '请耐心等一些时间' : '请按下面资料填写提交审核' "
>
</el-result>
</div>
</div> </div>
<div class="form-submit"> <div class="form-submit">
<el-form <el-form
:model="applyFormData" :model="applyFormData"
ref="formRef"
label-width="160px" label-width="160px"
style="max-width: 600px" style="max-width: 600px"
v-loading.fullscreen.lock="loading" v-loading.fullscreen.lock="loading"
element-loading-text="数据加载中..." element-loading-text="数据加载中..."
element-loading-background="rgba(0,0,0,.75)" element-loading-background="rgba(0,0,0,.75)"
>
<el-form-item
:label="item.label"
:prop="item.key"
v-for="(item, index) in formItemData"
:key="index"
> >
<template v-if="auditInfo.approval_invalid_col.includes('mapAddress') || auditInfo.approval_invalid_col.includes('store_address')"> <el-input
<el-form-item label="店铺所在地区" prop="map_address"> v-if="item.type == 'input'"
v-model="applyFormData[item.key]"
:placeholder="item.placeholder"
/>
<template v-if="item.type == 'select' && item.key=='mapAddress'">
<el-cascader <el-cascader
style="marginright: 5px" style="marginright: 5px"
v-model="applyFormData.map_address" v-model="applyFormData.map_address"
@ -44,60 +63,86 @@
</div> </div>
</template> </template>
</el-autocomplete> </el-autocomplete>
</el-form-item>
<el-form-item
label="店铺详细地址"
prop="store_address"
v-if="applyFormData.map_address"
>
<el-input
v-model="applyFormData.store_address"
placeholder="请输入详细地址"
/>
</el-form-item>
</template> </template>
<el-form-item <el-select-v2
:label="item.label" v-if="(item.type == 'select' && item.key=='bank_name') || item.key=='bank_branch_name'"
prop="contact_name" clearable
v-for="(item, index) in formItemData" filterable
:key="index" remote
> :remote-method="bankListRemoteMethod"
<el-input @change="bankListChange"
v-if="item.type == 'input'"
v-model="applyFormData[item.key]" v-model="applyFormData[item.key]"
:placeholder="item.placeholder" placeholder="搜索银行名称"
/> placement="top-start"
:options="bankList2"
>
<template #prefix>
<el-icon>
<Search />
</el-icon>
</template>
</el-select-v2>
<el-cascader <el-cascader
v-if="item.type == 'select' && item.key=='biz_category'" v-if="item.type == 'select' && item.key=='biz_category'"
v-model="applyFormData[item]" v-model="applyFormData[item.key]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
:options="cascaderOptions" :options="cascaderOptions"
:show-all-levels="false" :show-all-levels="false"
@change="handleChangeBizCategory" @change="handleChangeBizCategory"
clearable clearable
/> />
</el-form-item>
<template v-if="auditInfo.approval_invalid_col.includes('bank_name') || auditInfo.approval_invalid_col.includes('bank_branch_name')"> <el-select
<el-form-item label="开户银行" prop="bank_branch_name"> v-if="item.type == 'select' && item.key=='license_type'"
<el-select-v2 v-model="applyFormData[item.key]"
placeholder="请选择类型"
clearable clearable
filterable
remote
@change="bankListChange"
:remote-method="bankListRemoteMethod"
v-model="applyFormData.bank_branch_name"
placeholder="搜索银行名称"
placement="top-start"
style="width: 350px"
:options="bankList2"
> >
</el-select-v2> <el-option
</el-form-item> v-for="item in optionsPermitType"
</template> :key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-upload
v-if="item.type == 'upload'"
ref="uploadRef"
:limit="1"
list-type="picture-card"
:auto-upload="true"
:on-preview="handlePictureCardPreview"
v-model="applyFormData[item.key]"
:on-remove="
(file, fileList) =>
handleRemove(file, fileList, item.key)
"
:on-success="
(response, file, fileList) =>
handleUploadSuccess(
response,
file,
fileList,
item.key
)
"
:on-error="handleUploadError"
:before-upload="beforeUpload"
:action="uploadUrl"
name="upfile"
:class="{
'upload-hidden': isUploadHidden(item.key),
}"
>
<el-icon class="avatar-uploader-icon">
<Plus />
</el-icon>
</el-upload>
</el-form-item>
<!-- <el-form-item label="联系人" prop="contact_name"> <!-- <el-form-item label="联系人" prop="contact_name">
<el-input <el-input
@ -343,9 +388,9 @@
> >
<el-option <el-option
v-for="item in optionsPermitType" v-for="item in optionsPermitType"
:key="item.value2" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value2" :value="item.value"
> >
</el-option> </el-option>
</el-select> </el-select>
@ -653,11 +698,13 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive, onMounted, watch } from "vue"; import { ref, reactive, onMounted, watch } from "vue";
import { ElMessage } from "element-plus";
import { Plus,Search } from "@element-plus/icons-vue";
import cityData from "../../stores/cityData"; import cityData from "../../stores/cityData";
import type { CityDataStructure } from "../../stores/cityData"; import type { CityDataStructure } from "../../stores/cityData";
import { ElMessage } from "element-plus";
import { useUserStore } from "@/stores/userStore"; import { useUserStore } from "@/stores/userStore";
import { Plus } from "@element-plus/icons-vue";
import { import {
GetStoreCategories, GetStoreCategories,
transformStoreCategories, transformStoreCategories,
@ -666,11 +713,10 @@ import {
merchApply, merchApply,
re_apply, re_apply,
GetAppDistrict, GetAppDistrict,
GetAuditInfo, GetAuditInfo
} from "@/api/login"; } from "@/api/login";
import config from "./formConfig";
import { batchNoApi, imgOcrResultApi } from "@/api/upload"; import { batchNoApi, imgOcrResultApi } from "@/api/upload";
import config from "./formConfig";
interface Bank { interface Bank {
id: number; id: number;
@ -730,7 +776,7 @@ const bankList2 = ref([]);
let orcTimeout = 0; let orcTimeout = 0;
let currentFile = ref(null); let currentFile = ref(null);
let currentBbatchNo = ref(""); let currentBbatchNo = ref('');
const handleChangeBizCategory = (value) => { const handleChangeBizCategory = (value) => {
if (value && value.length === 2) { if (value && value.length === 2) {
@ -739,7 +785,6 @@ const handleChangeBizCategory = (value) => {
applyFormData.biz_second_category = bizSecondCategoryId; applyFormData.biz_second_category = bizSecondCategoryId;
} }
}; };
const formConfig = reactive(JSON.parse(JSON.stringify(config.formConfig)));
const currentBankItem = reactive(null); const currentBankItem = reactive(null);
const applyFormData = reactive({ const applyFormData = reactive({
bank_name: "", bank_name: "",
@ -771,8 +816,8 @@ const applyFormData = reactive({
legal_person_name: "", legal_person_name: "",
license_image: [], license_image: [],
license_number: "", license_number: "",
license_type: "1", license_type: "",
login_mobile: localStorage.getItem("mobilePhone"), login_mobile: "",
province_id: null, province_id: null,
store_address: "", store_address: "",
map_address: "", map_address: "",
@ -786,24 +831,18 @@ const applyFormData = reactive({
user_status: "", user_status: "",
bank_image: "", bank_image: "",
}); });
const formItemData = ref([]); const license_type = ref('1')
let auditInfo = reactive({
approval_status: 3,
created_at: "2099-02-17 09:25:53",
approval_remark: "",
approval_invalid_col: [],
});
const optionsPermitType = [ const optionsPermitType = [
{ {
value2: "1", value: "1",
label: "无需特殊资质", label: "无需特殊资质",
}, },
{ {
value2: "2", value: "2",
label: "需许可证资质", label: "需许可证资质",
}, },
{ {
value2: "3", value: "3",
label: "需特许证件资质", label: "需特许证件资质",
}, },
]; ];
@ -865,9 +904,6 @@ const rules = reactive({
individual_id_images2: [ individual_id_images2: [
{ required: true, message: "请上传个人身份证反面", trigger: "change" }, { required: true, message: "请上传个人身份证反面", trigger: "change" },
], ],
bank_image: [
{ required: true, message: "请上传银行卡正面", trigger: "change" },
],
bank_branch_name: [ bank_branch_name: [
{ required: true, message: "请选择银行", trigger: "change" }, { required: true, message: "请选择银行", trigger: "change" },
], ],
@ -879,11 +915,14 @@ const rules = reactive({
{ required: true, message: "请输入开户名称", trigger: "blur" }, { required: true, message: "请输入开户名称", trigger: "blur" },
], ],
}); });
const formItemData = ref([]);
let auditInfo = ref({
const ignoreFormItem = (item)=>{ approval_status: 3,
return !['mapAddress', 'store_address', 'bank_name', 'bank_branch_name'].includes(item.key) created_at: "2099-02-17 09:25:53",
} approval_remark: "",
approval_invalid_col: [],
});
const formConfig = reactive(JSON.parse(JSON.stringify(config.formConfig)));
const handleGetAuditInfo = async () => { const handleGetAuditInfo = async () => {
const res = (await GetAuditInfo({ const res = (await GetAuditInfo({
@ -893,96 +932,19 @@ const handleGetAuditInfo = async () => {
let arr = JSON.parse(res.data.approval_invalid_col); let arr = JSON.parse(res.data.approval_invalid_col);
const arr2 = formConfig.reduce((acc, item) => { const arr2 = formConfig.reduce((acc, item) => {
if (arr.includes(item.key)) { if (arr.includes(item.key)) {
applyFormData[item.key] = ""; // if(item.key=='storefrontImg' || item.key=='surroundingsImg' ){
// applyFormData[item.key] = "";
// }
acc.push(item); acc.push(item);
} }
return acc; return acc;
}, []); }, []);
auditInfo = { ...res.data, approval_invalid_col: arr }; auditInfo.value = { ...res.data, approval_invalid_col: arr };
formItemData.value = arr2.filter(item=> (ignoreFormItem(item))); formItemData.value = arr2.sort((a,b)=>(a.sort-b.sort));
}; console.log("formItemData", formItemData.value);
console.log("auditInfo", auditInfo);
handleGetAuditInfo();
const handleReApply = async () => {
const {
bank_name,
bank_district,
bank_area,
openning_bank_code,
clearing_bank_code,
account_number,
account_holder_name,
biz_category,
biz_license_company,
biz_license_image,
biz_license_number,
biz_second_category,
city_id,
contact_name,
county_id,
entity_type,
environment_image,
front_facade_image,
individual_id_images,
individual_id_images2,
individual_id_number,
legal_person_id_images,
legal_person_id_images2,
legal_person_id_number,
legal_person_mobile,
legal_person_name,
license_image,
license_number,
license_type,
login_mobile,
province_id,
store_address,
store_latitude,
store_longitude,
store_name,
store_area,
} = applyFormData;
const res = await re_apply({
id: 15,
bank_name,
bank_district,
bank_area,
openning_bank_code,
clearing_bank_code,
account_number,
account_holder_name,
biz_category,
biz_license_company,
biz_license_image,
biz_license_number,
biz_second_category,
city_id,
contact_name,
county_id,
entity_type,
environment_image,
front_facade_image,
individual_id_images,
individual_id_images2,
individual_id_number,
legal_person_id_images,
legal_person_id_images2,
legal_person_id_number,
legal_person_mobile,
legal_person_name,
license_image,
license_number,
license_type,
login_mobile,
province_id,
store_address: store_area.replace(/\//g, "") + store_address,
store_latitude,
store_longitude,
store_name,
store_area,
});
}; };
const handleMerchApply = async () => { const handleMerchApply = async () => {
@ -1024,7 +986,7 @@ const handleMerchApply = async () => {
store_name, store_name,
store_area, store_area,
} = applyFormData; } = applyFormData;
const res = await merchApply({ const res = await re_apply({
bank_name, bank_name,
bank_district, bank_district,
bank_area, bank_area,
@ -1069,9 +1031,13 @@ const checkForm = async () => {
return valid; return valid;
}); });
if(applyFormData.entity_type==2 && !applyFormData.bank_image){
ElMessage.error("请上传银行卡")
return
}
if (isValid) { if (isValid) {
handleReApply(); handleMerchApply()
// handleMerchApply
} }
}; };
@ -1124,7 +1090,7 @@ const showAll = () => {
const merchToApply = async () => { const merchToApply = async () => {
console.log("formdata", applyFormData); console.log("formdata", applyFormData);
showAll(); // showAll();
checkForm(); checkForm();
}; };
@ -1197,7 +1163,7 @@ const handleChange = (value) => {
applyFormData.mapAddressLabel = str; applyFormData.mapAddressLabel = str;
applyFormData.store_area = str; applyFormData.store_area = str;
// formRef.value.validate(); formRef.value.validate();
}; };
const autocompleteOptions = ref([]); const autocompleteOptions = ref([]);
@ -1244,7 +1210,7 @@ const handleSelect = (item) => {
applyFormData.store_address = item.value; applyFormData.store_address = item.value;
applyFormData.store_latitude = item.lat; applyFormData.store_latitude = item.lat;
applyFormData.store_longitude = item.lng; applyFormData.store_longitude = item.lng;
// formRef.value.validate(); formRef.value.validate();
}; };
const beforeUpload = (file) => { const beforeUpload = (file) => {
@ -1345,10 +1311,7 @@ const handleOcrText = async (batchNo, imgType) => {
switch (imgType) { switch (imgType) {
case "biz_license_image": case "biz_license_image":
var res = (await getOcrText( var res = (await getOcrText(batchNo, orcImgTypeConf.BUSINESS_LICENCE)) as any;
batchNo,
orcImgTypeConf.BUSINESS_LICENCE
)) as any;
console.log("biz_license_image", res); console.log("biz_license_image", res);
applyFormData.biz_license_company = res.bizLicenseCompanyName; applyFormData.biz_license_company = res.bizLicenseCompanyName;
@ -1357,10 +1320,7 @@ const handleOcrText = async (batchNo, imgType) => {
applyFormData.account_holder_name = res.bizLicenseCompanyName; applyFormData.account_holder_name = res.bizLicenseCompanyName;
break; break;
case "legal_person_id_images": case "legal_person_id_images":
var res = (await getOcrText( var res = (await getOcrText(batchNo, orcImgTypeConf.ID_CARD_FRONT)) as any;
batchNo,
orcImgTypeConf.ID_CARD_FRONT
)) as any;
console.log("legal_person_id_images", res); console.log("legal_person_id_images", res);
applyFormData.legal_person_id_number = res.idNumber; applyFormData.legal_person_id_number = res.idNumber;
@ -1373,7 +1333,7 @@ const handleOcrText = async (batchNo, imgType) => {
} }
loading.value = false; loading.value = false;
// formRef.value.validate(); formRef.value.validate()
}; };
const handleUploadSuccess = async (response, file, fileList, field) => { const handleUploadSuccess = async (response, file, fileList, field) => {
@ -1392,18 +1352,18 @@ const handleUploadSuccess = async (response, file, fileList, field) => {
switch (field) { switch (field) {
case "biz_license_image": case "biz_license_image":
var res = await getBatchNo(file.raw, orcImgTypeConf.BUSINESS_LICENCE); var res = await getBatchNo(file.raw, orcImgTypeConf.BUSINESS_LICENCE);
currentBbatchNo.value = res.batchNo; currentBbatchNo.value = res.batchNo
handleOcrText(res.batchNo, field); handleOcrText(res.batchNo, field)
break; break;
case "legal_person_id_images": case "legal_person_id_images":
var res = await getBatchNo(file.raw, orcImgTypeConf.ID_CARD_FRONT); var res = await getBatchNo(file.raw, orcImgTypeConf.ID_CARD_FRONT);
currentBbatchNo.value = res.batchNo; currentBbatchNo.value = res.batchNo
handleOcrText(res.batchNo, field); handleOcrText(res.batchNo, field)
break; break;
case "bank_image": case "bank_image":
var res = await getBatchNo(file.raw, orcImgTypeConf.BANK_CARD); var res = await getBatchNo(file.raw, orcImgTypeConf.BANK_CARD);
currentBbatchNo.value = res.batchNo; currentBbatchNo.value = res.batchNo
handleOcrText(res.batchNo, field); handleOcrText(res.batchNo, field)
break; break;
} }
} else { } else {
@ -1415,7 +1375,7 @@ const handleUploadSuccess = async (response, file, fileList, field) => {
loading.value = false; loading.value = false;
} }
// formRef.value.validate(); formRef.value.validate()
}; };
const handleUploadError = (error, file) => { const handleUploadError = (error, file) => {
@ -1445,6 +1405,10 @@ const clearOtherFields = () => {
}; };
onMounted(() => { onMounted(() => {
// bankListRemoteMethod();
handleGetAuditInfo();
GetStoreCategories() GetStoreCategories()
.then((res) => { .then((res) => {
if (res.code === 0 && res.status === 200) { if (res.code === 0 && res.status === 200) {
@ -1476,6 +1440,10 @@ onMounted(() => {
:deep(.el-upload-list__item) { :deep(.el-upload-list__item) {
width: 96px; width: 96px;
height: 96px; height: 96px;
text-align: center;
flex-direction: column;
color: #666;
line-height: 20px;
} }
.signUp-container { .signUp-container {
@ -1489,6 +1457,9 @@ onMounted(() => {
.tit { .tit {
font-size: 16px; font-size: 16px;
margin-bottom: 15px; margin-bottom: 15px;
:deep(.el-result){
padding: 0;
}
} }
.steps-container { .steps-container {
@ -1506,9 +1477,13 @@ onMounted(() => {
.form-submit { .form-submit {
width: 50%; width: 50%;
padding: 15px; padding: 15px;
margin: 0 0 12px;
border-radius: 5px; border-radius: 5px;
background: #fff; background: #fff;
margin-bottom: 12px;
:deep(.el-form) {
max-width: 100% !important;
}
.from_box { .from_box {
width: 100%; width: 100%;

View File

@ -1,200 +1,201 @@
const formConfig = [ const formConfig = [
{ {
type:"input", type: "input",
key:'contact_name', key: "contact_name",
label:'联系人', label: "联系人",
placeholder:'请输入联系人', placeholder: "请输入联系人",
sort: 1,
}, },
{ {
type:"select", type: "input",
key:'biz_category', key: "legal_person_mobile",
label:'经营品类', label: "法人手机号",
isReadonly:true, placeholder: "请输入法人手机号",
style:"pointer-events: none", sort: 1,
placeholder:'请选择经营品类',
}, },
{ {
type:"input", type: "select",
key:'store_name', key: "biz_category",
label:'门店名称', label: "经营品类",
placeholder:'请输入门店名称', isReadonly: true,
style: "pointer-events: none",
placeholder: "请选择经营品类",
sort: 2,
}, },
{ {
type:"select", type: "input",
key:'mapAddress', key: "store_name",
label:'店铺所在地区', label: "门店名称",
isReadonly:true, placeholder: "请输入门店名称",
style:"pointer-events: none", sort: 3,
placeholder:'请在地图上选择门店地址',
}, },
{ {
type:"input", type: "select",
key:'store_address', key: "mapAddress",
label:'店铺详细地址', label: "所在地区",
placeholder:'请输入店铺详细地址', isReadonly: true,
style: "pointer-events: none",
placeholder: "请在地图上选择门店地址",
sort: 4,
}, },
{ {
type:'upload', type: "input",
key:'storefrontImg', key: "store_address",
label:'门脸图片', label: "详细地址",
class:"upload-1", placeholder: "请输入店铺详细地址",
placeholder:'', sort: 5,
imgUrlArr:[],
imgWidth:270,
imgHeight:150
}, },
{ {
type:'upload', type: "upload",
key:'surroundingsImg', key: "front_facade_image",
class:"upload-2", label: "门脸图片",
label:'环境图片', placeholder: "请上传门脸图片",
placeholder:'', sort: 6,
imgUrlArr:[],
imgWidth:270,
imgHeight:150
}, },
{ {
type:"input", type: "upload",
key:'license_number', key: "environment_image",
label:'许可证编号', label: "环境图片",
placeholder:'请输入许可证编号', placeholder: "请上传门脸图片",
sort: 7,
}, },
{ {
type:"input", type: "upload",
key:'biz_license_number', key: "biz_license_image",
label:'注册号', label: "营业执照",
placeholder:'请输入注册号', placeholder: "",
sort: 8,
}, },
{ {
type:"input", type: "input",
key:'biz_license_company', key: "biz_license_company",
label:'公司名称', label: "公司名称",
placeholder:'请输入公司名称', placeholder: "请输入公司名称",
sort: 9,
}, },
{ {
type:"input", type: "input",
key:'legal_person_name', key: "legal_person_name",
label:'法人姓名', label: "法人姓名",
placeholder:'请输入法人姓名', placeholder: "请输入法人姓名",
sort: 10,
}, },
{ {
type:"input", type: "input",
key:'legal_person_mobile', key: "biz_license_number",
label:'法人手机号', label: "注册号",
placeholder:'请输入法人手机号', placeholder: "请输入注册号",
sort: 11,
}, },
{ {
type:"input", type: "select",
key:'legal_person_id_number', key: "license_type",
label:'法人身份证号码', label: "许可证类型",
placeholder:'请输入法人身份证号', isReadonly: true,
style: "pointer-events: none",
placeholder: "请选择许可证类型",
sort: 12,
}, },
{ {
type:'upload', type: "upload",
key:'biz_license_image', key: "license_image",
class:"upload-3", label: "许可证图片",
label:'营业执照图片', class: "upload-4",
placeholder:'', placeholder: "",
imgUrlArr:[], imgUrlArr: [],
imgWidth:125, imgWidth: 125,
imgHeight:88 imgHeight: 88,
imgUpMaxCount: 5,
sort: 13,
}, },
{ {
type:"select", type: "input",
key:'license_type', key: "license_number",
label:'许可证类型', label: "许可证编号",
isReadonly:true, placeholder: "请输入许可证编号",
style:"pointer-events: none", sort: 14,
placeholder:'请选择许可证类型',
}, },
{ {
type:"input", type: "upload",
key:'license_number', key: "individual_id_images",
label:'许可证编号', label: "个人身份证正面图片",
placeholder:'', class: "upload-5",
placeholder: "",
imgUrlArr: [],
sort: 15,
}, },
{ {
type:"input", type: "upload",
type:'upload', key: "individual_id_images2",
key:'license_image', label: "个人身份证反面图片",
label:'许可证图片', class: "upload-5",
class:"upload-4", placeholder: "",
placeholder:'', imgUrlArr: [],
imgUrlArr:[], sort: 15,
imgWidth:125,
imgHeight:88,
imgUpMaxCount:5
}, },
{ {
type:'upload', type: "input",
key:'legal_person_id_images', key: "individual_id_number",
label:'法人身份证正面图片', label: "个人身份证号码",
class:"upload-5", placeholder: "请输入个人身份证号码",
placeholder:'', sort: 16,
imgUrlArr:[],
imgWidth:180,
imgHeight:110
}, },
{ {
type:'upload', type: "upload",
key:'legal_person_id_images2', key: "legal_person_id_images",
label:'法人身份证反面图片', label: "法人身份证正面图片",
class:"upload-6", class: "upload-5",
placeholder:'', placeholder: "",
imgUrlArr:[], imgUrlArr: [],
imgWidth:180, imgWidth: 180,
imgHeight:110 imgHeight: 110,
sort: 15,
}, },
{ {
type:"select", type: "upload",
key:'bank_name', key: "legal_person_id_images2",
label:'开户银行', label: "法人身份证反面图片",
isReadonly:true, class: "upload-6",
style:"pointer-events: none", placeholder: "",
placeholder:'请选择开户银行', imgUrlArr: [],
imgWidth: 180,
imgHeight: 110,
sort: 15,
}, },
{ {
key:'bank_branch_name', type: "input",
label:'开户支行', key: "legal_person_id_number",
placeholder:'请输入开户支行名称', label: "法人身份证号码",
placeholder: "请输入法人身份证号",
sort: 16,
}, },
{ {
type:"input", type: "input",
key:'account_number', key: "account_holder_name",
label:'银行卡号', label: "开户名称",
placeholder:'请输入银行卡号', placeholder: "请输入开户名称",
sort: 17,
}, },
{ {
type:"input", type: "input",
key:'account_holder_name', key: "account_number",
label:'开户名称', label: "银行卡号",
placeholder:'请输入开户名称', placeholder: "请输入银行卡号",
sort: 18,
}, },
{ {
type:"input", type: "select",
key:'individual_id_number', key: "bank_name",
label:'个人身份证号码', label: "开户银行",
placeholder:'请输入个人身份证号码', isReadonly: true,
style: "pointer-events: none",
placeholder: "请选择开户银行",
sort: 19,
}, },
{ ];
type:'upload',
key:'individual_id_images',
label:'个人身份证正面图片',
class:"upload-5",
placeholder:'',
imgUrlArr:[]
},
{
type:'upload',
key:'individual_id_images2',
label:'个人身份证反面图片',
class:"upload-5",
placeholder:'',
imgUrlArr:[]
},
]
export default { export default {
formConfig, formConfig,
} };

View File

@ -123,6 +123,7 @@
<el-icon class="avatar-uploader-icon"> <el-icon class="avatar-uploader-icon">
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传门店图</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -159,6 +160,7 @@
<el-icon> <el-icon>
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传环境图</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</div> </div>
@ -211,6 +213,7 @@
<el-icon> <el-icon>
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传营业执照</div>
</el-upload> </el-upload>
<el-button <el-button
@ -311,6 +314,7 @@
<el-icon> <el-icon>
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传许可证</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -361,6 +365,7 @@
<el-icon class="avatar-uploader-icon"> <el-icon class="avatar-uploader-icon">
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传证件正面</div>
</el-upload> </el-upload>
<el-button <el-button
type="info" type="info"
@ -405,6 +410,7 @@
<el-icon class="avatar-uploader-icon"> <el-icon class="avatar-uploader-icon">
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传证件反面</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -455,6 +461,7 @@
<el-icon class="avatar-uploader-icon"> <el-icon class="avatar-uploader-icon">
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传证件正面</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -493,6 +500,7 @@
<el-icon class="avatar-uploader-icon"> <el-icon class="avatar-uploader-icon">
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传证件反面</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
@ -536,16 +544,17 @@
<el-icon class="avatar-uploader-icon"> <el-icon class="avatar-uploader-icon">
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传银行卡<br>免填卡号</div>
</el-upload> </el-upload>
<el-button <el-button
type="info" type="info"
plain plain
v-if="applyFormData.bank_image && !applyFormData.account_number" v-if="applyFormData.bank_image && !applyFormData.account_number"
@click="handleOcrText(currentBbatchNo, 'bank_image')" @click="handleOcrText(currentBbatchNo, 'bank_image')"
>点击免填银行卡号</el-button >点击免填卡号</el-button
> >
</el-form-item> </el-form-item>
<template v-if="applyFormData.bank_image"> <template v-if="applyFormData.entity_type==1 || applyFormData.bank_image">
<el-form-item label="开户名称" prop="account_holder_name"> <el-form-item label="开户名称" prop="account_holder_name">
<el-input v-model="applyFormData.account_holder_name" /> <el-input v-model="applyFormData.account_holder_name" />
</el-form-item> </el-form-item>
@ -595,11 +604,13 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive, onMounted, watch } from "vue"; import { ref, reactive, onMounted, watch } from "vue";
import { ElMessage } from "element-plus";
import { Plus } from "@element-plus/icons-vue";
import cityData from "../../stores/cityData"; import cityData from "../../stores/cityData";
import type { CityDataStructure } from "../../stores/cityData"; import type { CityDataStructure } from "../../stores/cityData";
import { ElMessage } from "element-plus";
import { useUserStore } from "@/stores/userStore"; import { useUserStore } from "@/stores/userStore";
import { Plus } from "@element-plus/icons-vue";
import { import {
GetStoreCategories, GetStoreCategories,
transformStoreCategories, transformStoreCategories,
@ -608,7 +619,6 @@ import {
merchApply, merchApply,
GetAppDistrict, GetAppDistrict,
} from "@/api/login"; } from "@/api/login";
import { batchNoApi, imgOcrResultApi } from "@/api/upload"; import { batchNoApi, imgOcrResultApi } from "@/api/upload";
interface Bank { interface Bank {
@ -796,9 +806,6 @@ const rules = reactive({
individual_id_images2: [ individual_id_images2: [
{ required: true, message: "请上传个人身份证反面", trigger: "change" }, { required: true, message: "请上传个人身份证反面", trigger: "change" },
], ],
bank_image: [
{ required: true, message: "请上传银行卡正面", trigger: "change" },
],
bank_branch_name: [ bank_branch_name: [
{ required: true, message: "请选择银行", trigger: "change" }, { required: true, message: "请选择银行", trigger: "change" },
], ],
@ -812,6 +819,7 @@ const rules = reactive({
}); });
const handleMerchApply = async () => { const handleMerchApply = async () => {
console.log(2001);
const { const {
bank_name, bank_name,
bank_district, bank_district,
@ -895,9 +903,13 @@ const checkForm = async () => {
return valid; return valid;
}); });
if(applyFormData.entity_type==2 && !applyFormData.bank_image){
ElMessage.error("请上传银行卡")
return
}
if (isValid) { if (isValid) {
// handleReApply(); handleMerchApply()
handleMerchApply
} }
}; };
@ -950,7 +962,7 @@ const showAll = () => {
const merchToApply = async () => { const merchToApply = async () => {
console.log("formdata", applyFormData); console.log("formdata", applyFormData);
showAll(); // showAll();
checkForm(); checkForm();
}; };
@ -1298,6 +1310,10 @@ onMounted(() => {
:deep(.el-upload-list__item) { :deep(.el-upload-list__item) {
width: 96px; width: 96px;
height: 96px; height: 96px;
text-align: center;
flex-direction: column;
color: #666;
line-height: 20px;
} }
.signUp-container { .signUp-container {