Compare commits

..

No commits in common. "4b6c1f8b533bdb7f190a79531d4de51fc8b0a3a0" and "43fe64d28661b491f96cbb1ac2c1b66d0fb59013" have entirely different histories.

5 changed files with 351 additions and 348 deletions

1
components.d.ts vendored
View File

@ -25,7 +25,6 @@ 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,5 +1,4 @@
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;
@ -30,9 +29,6 @@ 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,41 +1,22 @@
<template> <template>
<div class="signUp-container"> <div class="signUp-container">
<!-- 步骤条 -->
<div class="steps-container"> <div class="steps-container">
<div class="tit"> <div class="tit" style="margin-bottom: 0">免费开店资料填写</div>
<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"
> >
<el-input <template v-if="auditInfo.approval_invalid_col.includes('mapAddress') || auditInfo.approval_invalid_col.includes('store_address')">
v-if="item.type == 'input'" <el-form-item label="店铺所在地区" prop="map_address">
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"
@ -63,87 +44,61 @@
</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-select-v2 <el-form-item
v-if="(item.type == 'select' && item.key=='bank_name') || item.key=='bank_branch_name'" :label="item.label"
clearable prop="contact_name"
filterable v-for="(item, index) in formItemData"
remote :key="index"
:remote-method="bankListRemoteMethod"
@change="bankListChange"
v-model="applyFormData[item.key]"
placeholder="搜索银行名称"
placement="top-start"
:options="bankList2"
> >
<template #prefix> <el-input
<el-icon> v-if="item.type == 'input'"
<Search /> v-model="applyFormData[item.key]"
</el-icon> :placeholder="item.placeholder"
</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.key]" v-model="applyFormData[item]"
: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-select
v-if="item.type == 'select' && item.key=='license_type'"
v-model="applyFormData[item.key]"
placeholder="请选择类型"
clearable
>
<el-option
v-for="item in optionsPermitType"
: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>
<template v-if="auditInfo.approval_invalid_col.includes('bank_name') || auditInfo.approval_invalid_col.includes('bank_branch_name')">
<el-form-item label="开户银行" prop="bank_branch_name">
<el-select-v2
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-form-item>
</template>
<!-- <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"
@ -388,9 +343,9 @@
> >
<el-option <el-option
v-for="item in optionsPermitType" v-for="item in optionsPermitType"
:key="item.value" :key="item.value2"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value2"
> >
</el-option> </el-option>
</el-select> </el-select>
@ -698,13 +653,11 @@
<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,
@ -713,11 +666,12 @@ import {
merchApply, merchApply,
re_apply, re_apply,
GetAppDistrict, GetAppDistrict,
GetAuditInfo GetAuditInfo,
} from "@/api/login"; } from "@/api/login";
import { batchNoApi, imgOcrResultApi } from "@/api/upload";
import config from "./formConfig"; import config from "./formConfig";
import { batchNoApi, imgOcrResultApi } from "@/api/upload";
interface Bank { interface Bank {
id: number; id: number;
bank_name: string; bank_name: string;
@ -776,7 +730,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) {
@ -785,6 +739,7 @@ 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: "",
@ -816,8 +771,8 @@ const applyFormData = reactive({
legal_person_name: "", legal_person_name: "",
license_image: [], license_image: [],
license_number: "", license_number: "",
license_type: "", license_type: "1",
login_mobile: "", login_mobile: localStorage.getItem("mobilePhone"),
province_id: null, province_id: null,
store_address: "", store_address: "",
map_address: "", map_address: "",
@ -831,18 +786,24 @@ const applyFormData = reactive({
user_status: "", user_status: "",
bank_image: "", bank_image: "",
}); });
const license_type = ref('1') const formItemData = ref([]);
let auditInfo = reactive({
approval_status: 3,
created_at: "2099-02-17 09:25:53",
approval_remark: "",
approval_invalid_col: [],
});
const optionsPermitType = [ const optionsPermitType = [
{ {
value: "1", value2: "1",
label: "无需特殊资质", label: "无需特殊资质",
}, },
{ {
value: "2", value2: "2",
label: "需许可证资质", label: "需许可证资质",
}, },
{ {
value: "3", value2: "3",
label: "需特许证件资质", label: "需特许证件资质",
}, },
]; ];
@ -904,6 +865,9 @@ 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" },
], ],
@ -915,14 +879,11 @@ const rules = reactive({
{ required: true, message: "请输入开户名称", trigger: "blur" }, { required: true, message: "请输入开户名称", trigger: "blur" },
], ],
}); });
const formItemData = ref([]);
let auditInfo = ref({
approval_status: 3, const ignoreFormItem = (item)=>{
created_at: "2099-02-17 09:25:53", return !['mapAddress', 'store_address', 'bank_name', 'bank_branch_name'].includes(item.key)
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({
@ -932,19 +893,96 @@ 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)) {
// if(item.key=='storefrontImg' || item.key=='surroundingsImg' ){ applyFormData[item.key] = "";
// applyFormData[item.key] = "";
// }
acc.push(item); acc.push(item);
} }
return acc; return acc;
}, []); }, []);
auditInfo.value = { ...res.data, approval_invalid_col: arr }; auditInfo = { ...res.data, approval_invalid_col: arr };
formItemData.value = arr2.sort((a,b)=>(a.sort-b.sort)); formItemData.value = arr2.filter(item=> (ignoreFormItem(item)));
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 () => {
@ -986,7 +1024,7 @@ const handleMerchApply = async () => {
store_name, store_name,
store_area, store_area,
} = applyFormData; } = applyFormData;
const res = await re_apply({ const res = await merchApply({
bank_name, bank_name,
bank_district, bank_district,
bank_area, bank_area,
@ -1031,13 +1069,9 @@ const checkForm = async () => {
return valid; return valid;
}); });
if(applyFormData.entity_type==2 && !applyFormData.bank_image){
ElMessage.error("请上传银行卡")
return
}
if (isValid) { if (isValid) {
handleMerchApply() handleReApply();
// handleMerchApply
} }
}; };
@ -1090,7 +1124,7 @@ const showAll = () => {
const merchToApply = async () => { const merchToApply = async () => {
console.log("formdata", applyFormData); console.log("formdata", applyFormData);
// showAll(); showAll();
checkForm(); checkForm();
}; };
@ -1163,7 +1197,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([]);
@ -1210,7 +1244,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) => {
@ -1311,7 +1345,10 @@ const handleOcrText = async (batchNo, imgType) => {
switch (imgType) { switch (imgType) {
case "biz_license_image": case "biz_license_image":
var res = (await getOcrText(batchNo, orcImgTypeConf.BUSINESS_LICENCE)) as any; var res = (await getOcrText(
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;
@ -1320,7 +1357,10 @@ 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(batchNo, orcImgTypeConf.ID_CARD_FRONT)) as any; var res = (await getOcrText(
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;
@ -1333,7 +1373,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) => {
@ -1352,18 +1392,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 {
@ -1375,7 +1415,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) => {
@ -1405,10 +1445,6 @@ 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) {
@ -1440,10 +1476,6 @@ 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 {
@ -1457,9 +1489,6 @@ onMounted(() => {
.tit { .tit {
font-size: 16px; font-size: 16px;
margin-bottom: 15px; margin-bottom: 15px;
:deep(.el-result){
padding: 0;
}
} }
.steps-container { .steps-container {
@ -1477,13 +1506,9 @@ 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,201 +1,200 @@
const formConfig = [ const formConfig = [
{ {
type:"input", type:"input",
key: "contact_name", key:'contact_name',
label: "联系人", label:'联系人',
placeholder: "请输入联系人", placeholder:'请输入联系人',
sort: 1,
},
{
type: "input",
key: "legal_person_mobile",
label: "法人手机号",
placeholder: "请输入法人手机号",
sort: 1,
}, },
{ {
type:"select", type:"select",
key: "biz_category", key:'biz_category',
label: "经营品类", label:'经营品类',
isReadonly:true, isReadonly:true,
style:"pointer-events: none", style:"pointer-events: none",
placeholder: "请选择经营品类", placeholder:'请选择经营品类',
sort: 2,
}, },
{ {
type:"input", type:"input",
key: "store_name", key:'store_name',
label: "门店名称", label:'门店名称',
placeholder: "请输入门店名称", placeholder:'请输入门店名称',
sort: 3,
}, },
{ {
type:"select", type:"select",
key: "mapAddress", key:'mapAddress',
label: "所在地区", label:'店铺所在地区',
isReadonly:true, isReadonly:true,
style:"pointer-events: none", style:"pointer-events: none",
placeholder: "请在地图上选择门店地址", placeholder:'请在地图上选择门店地址',
sort: 4,
}, },
{ {
type:"input", type:"input",
key: "store_address", key:'store_address',
label: "详细地址", label:'店铺详细地址',
placeholder: "请输入店铺详细地址", placeholder:'请输入店铺详细地址',
sort: 5,
}, },
{ {
type: "upload", type:'upload',
key: "front_facade_image", key:'storefrontImg',
label: "门脸图片", label:'门脸图片',
placeholder: "请上传门脸图片", class:"upload-1",
sort: 6, placeholder:'',
imgUrlArr:[],
imgWidth:270,
imgHeight:150
}, },
{ {
type: "upload", type:'upload',
key: "environment_image", key:'surroundingsImg',
label: "环境图片", class:"upload-2",
placeholder: "请上传门脸图片", label:'环境图片',
sort: 7, placeholder:'',
}, imgUrlArr:[],
{ imgWidth:270,
type: "upload", imgHeight:150
key: "biz_license_image",
label: "营业执照",
placeholder: "",
sort: 8,
}, },
{ {
type:"input", type:"input",
key: "biz_license_company", key:'license_number',
label: "公司名称", label:'许可证编号',
placeholder: "请输入公司名称", placeholder:'请输入许可证编号',
sort: 9,
}, },
{ {
type:"input", type:"input",
key: "legal_person_name", key:'biz_license_number',
label: "法人姓名", label:'注册号',
placeholder: "请输入法人姓名", placeholder:'请输入注册号',
sort: 10,
}, },
{ {
type:"input", type:"input",
key: "biz_license_number", key:'biz_license_company',
label: "注册号", label:'公司名称',
placeholder: "请输入注册号", placeholder:'请输入公司名称',
sort: 11, },
{
type:"input",
key:'legal_person_name',
label:'法人姓名',
placeholder:'请输入法人姓名',
},
{
type:"input",
key:'legal_person_mobile',
label:'法人手机号',
placeholder:'请输入法人手机号',
},
{
type:"input",
key:'legal_person_id_number',
label:'法人身份证号码',
placeholder:'请输入法人身份证号',
},
{
type:'upload',
key:'biz_license_image',
class:"upload-3",
label:'营业执照图片',
placeholder:'',
imgUrlArr:[],
imgWidth:125,
imgHeight:88
}, },
{ {
type:"select", type:"select",
key: "license_type", key:'license_type',
label: "许可证类型", label:'许可证类型',
isReadonly:true, isReadonly:true,
style:"pointer-events: none", style:"pointer-events: none",
placeholder: "请选择许可证类型", placeholder:'请选择许可证类型',
sort: 12,
}, },
{ {
type: "upload", type:"input",
key: "license_image", key:'license_number',
label: "许可证图片", label:'许可证编号',
placeholder:'',
},
{
type:"input",
type:'upload',
key:'license_image',
label:'许可证图片',
class:"upload-4", class:"upload-4",
placeholder: "", placeholder:'',
imgUrlArr:[], imgUrlArr:[],
imgWidth:125, imgWidth:125,
imgHeight:88, imgHeight:88,
imgUpMaxCount: 5, imgUpMaxCount:5
sort: 13,
}, },
{ {
type: "input", type:'upload',
key: "license_number", key:'legal_person_id_images',
label: "许可证编号", label:'法人身份证正面图片',
placeholder: "请输入许可证编号",
sort: 14,
},
{
type: "upload",
key: "individual_id_images",
label: "个人身份证正面图片",
class:"upload-5", class:"upload-5",
placeholder: "", placeholder:'',
imgUrlArr: [],
sort: 15,
},
{
type: "upload",
key: "individual_id_images2",
label: "个人身份证反面图片",
class: "upload-5",
placeholder: "",
imgUrlArr: [],
sort: 15,
},
{
type: "input",
key: "individual_id_number",
label: "个人身份证号码",
placeholder: "请输入个人身份证号码",
sort: 16,
},
{
type: "upload",
key: "legal_person_id_images",
label: "法人身份证正面图片",
class: "upload-5",
placeholder: "",
imgUrlArr:[], imgUrlArr:[],
imgWidth:180, imgWidth:180,
imgHeight: 110, imgHeight:110
sort: 15,
}, },
{ {
type: "upload", type:'upload',
key: "legal_person_id_images2", key:'legal_person_id_images2',
label: "法人身份证反面图片", label:'法人身份证反面图片',
class:"upload-6", class:"upload-6",
placeholder: "", placeholder:'',
imgUrlArr:[], imgUrlArr:[],
imgWidth:180, imgWidth:180,
imgHeight: 110, imgHeight:110
sort: 15,
},
{
type: "input",
key: "legal_person_id_number",
label: "法人身份证号码",
placeholder: "请输入法人身份证号",
sort: 16,
},
{
type: "input",
key: "account_holder_name",
label: "开户名称",
placeholder: "请输入开户名称",
sort: 17,
},
{
type: "input",
key: "account_number",
label: "银行卡号",
placeholder: "请输入银行卡号",
sort: 18,
}, },
{ {
type:"select", type:"select",
key: "bank_name", key:'bank_name',
label: "开户银行", label:'开户银行',
isReadonly:true, isReadonly:true,
style:"pointer-events: none", style:"pointer-events: none",
placeholder: "请选择开户银行", placeholder:'请选择开户银行',
sort: 19,
}, },
]; {
key:'bank_branch_name',
label:'开户支行',
placeholder:'请输入开户支行名称',
},
{
type:"input",
key:'account_number',
label:'银行卡号',
placeholder:'请输入银行卡号',
},
{
type:"input",
key:'account_holder_name',
label:'开户名称',
placeholder:'请输入开户名称',
},
{
type:"input",
key:'individual_id_number',
label:'个人身份证号码',
placeholder:'请输入个人身份证号码',
},
{
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,7 +123,6 @@
<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
@ -160,7 +159,6 @@
<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>
@ -213,7 +211,6 @@
<el-icon> <el-icon>
<Plus /> <Plus />
</el-icon> </el-icon>
<div class="uploader-tips">上传营业执照</div>
</el-upload> </el-upload>
<el-button <el-button
@ -314,7 +311,6 @@
<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>
@ -365,7 +361,6 @@
<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"
@ -410,7 +405,6 @@
<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
@ -461,7 +455,6 @@
<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>
@ -500,7 +493,6 @@
<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
@ -544,17 +536,16 @@
<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.entity_type==1 || applyFormData.bank_image"> <template v-if="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>
@ -604,13 +595,11 @@
<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,
@ -619,6 +608,7 @@ 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 {
@ -806,6 +796,9 @@ 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" },
], ],
@ -819,7 +812,6 @@ const rules = reactive({
}); });
const handleMerchApply = async () => { const handleMerchApply = async () => {
console.log(2001);
const { const {
bank_name, bank_name,
bank_district, bank_district,
@ -903,13 +895,9 @@ const checkForm = async () => {
return valid; return valid;
}); });
if(applyFormData.entity_type==2 && !applyFormData.bank_image){
ElMessage.error("请上传银行卡")
return
}
if (isValid) { if (isValid) {
handleMerchApply() // handleReApply();
handleMerchApply
} }
}; };
@ -962,7 +950,7 @@ const showAll = () => {
const merchToApply = async () => { const merchToApply = async () => {
console.log("formdata", applyFormData); console.log("formdata", applyFormData);
// showAll(); showAll();
checkForm(); checkForm();
}; };
@ -1310,10 +1298,6 @@ 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 {