update: 开户银行输入框提示和开店搜不到提示修改文案及交互;驳回审核动态校验空数据、删除历史无用代码、并跟开店的开户银行一样支持提示。

This commit is contained in:
mixtan 2025-06-20 22:54:53 +08:00
parent eb5180ead8
commit 035ff65f4b
5 changed files with 306 additions and 497 deletions

3
package-lock.json generated
View File

@ -12,6 +12,7 @@
"axios": "^1.8.4",
"bootstrap": "^5.3.3",
"element-plus": "^2.9.8",
"lodash": "^4.17.21",
"pinia": "^3.0.1",
"scss": "^0.2.4",
"sortablejs": "^1.15.6",
@ -6296,7 +6297,7 @@
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT"
},

View File

@ -16,6 +16,7 @@
"axios": "^1.8.4",
"bootstrap": "^5.3.3",
"element-plus": "^2.9.8",
"lodash": "^4.17.21",
"pinia": "^3.0.1",
"scss": "^0.2.4",
"sortablejs": "^1.15.6",

View File

@ -1,25 +1,42 @@
<template>
<div class="signUp-container">
<div :class="['steps-container', { nodata: ![2,21].includes(auditInfo.approval_status) }]">
<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' "
:title="auditInfo?.approval_remark"
:sub-title="auditInfo.approval_status==1 ? '现在去商家端看看吧~' : [3,5].includes(auditInfo.approval_status) ? '预计3-5个工作日哦~' : '请填写以下资料重新提交审核' "
>
</el-result>
:icon="
auditInfo.approval_status == 1
? 'success'
: [3, 5].includes(auditInfo.approval_status)
? 'warning'
: 'error'
"
:title="auditInfo?.approval_remark"
:sub-title="
auditInfo.approval_status == 1
? '现在去商家端看看吧~'
: [3, 5].includes(auditInfo.approval_status)
? '预计1-7个工作日哦~'
: '请填写以下资料重新提交审核'
"
>
</el-result>
</div>
</div>
<div class="form-submit" v-if="[2,21].includes(auditInfo.approval_status)">
<div class="form-submit" v-if="[2, 21].includes(auditInfo.approval_status)">
<el-form
:model="applyFormData"
ref="formRef"
label-width="160px"
v-loading.fullscreen.lock="loading"
element-loading-text="数据加载中..."
element-loading-background="rgba(0,0,0,.75)"
:model="applyFormData"
:rules="rules"
ref="formRef"
label-width="160px"
v-loading.fullscreen.lock="loading"
element-loading-text="数据加载中..."
element-loading-background="rgba(0,0,0,.75)"
>
<el-form-item
:label="item.label"
@ -27,79 +44,106 @@
v-for="(item, index) in formItemData"
:key="item.key"
>
<el-input
<el-input
v-if="item.type == 'input'"
v-model="applyFormData[item.key!]"
:placeholder="item.placeholder"
/>
<el-input
:rows="5"
type="textarea"
:rows="5"
type="textarea"
v-if="item.type == 'textarea'"
v-model="applyFormData[item.key!]"
:placeholder="item.placeholder"
/>
<el-date-picker
v-if="item.type == 'datepicker'"
v-model="applyFormData[item.key!]"
type="date"
:placeholder="item.placeholder"
/>
<template v-if="item.type == 'select' && item.key=='mapAddress'">
<el-cascader
style="marginright: 5px"
v-model="applyFormData.map_address"
:options="cascaderOptions2"
@change="handleChange"
v-if="item.type == 'datepicker'"
v-model="applyFormData[item.key!]"
type="date"
:placeholder="item.placeholder"
/>
<el-autocomplete
v-if="applyFormData.map_address"
style="width: 180px"
v-model="applyFormData.position"
placeholder="试试搜索,快速填写地址"
:fetch-suggestions="querySearch"
value-key="value"
:options="autocompleteOptions"
@select="handleSelect"
>
<template #default="{ item }">
<div class="auto-item" v-if="item">
<div>
<p>{{ item.name }}</p>
</div>
<div>
<span>{{ item.address }}</span>
</div>
</div>
</template>
</el-autocomplete>
</template>
<el-select-v2
v-if="(item.type == 'select' && item.key=='bank_name') || item.key=='bank_branch_name'"
clearable
filterable
remote
:remote-method="bankListRemoteMethod"
@change="bankListChange"
v-model="applyFormData[item.key]"
placeholder="搜索银行名称"
placement="top-start"
:options="bankList2"
<template v-if="item.type == 'select' && item.key == 'mapAddress'">
<el-cascader
style="marginright: 5px"
v-model="applyFormData.map_address"
:options="cascaderOptions2"
@change="handleChange"
:placeholder="item.placeholder"
/>
<el-autocomplete
v-if="applyFormData.map_address"
style="width: 180px"
v-model="applyFormData.position"
placeholder="试试搜索,快速填写地址"
:fetch-suggestions="querySearch"
value-key="value"
:options="autocompleteOptions"
@select="handleSelect"
>
<template #default="{ item }">
<div class="auto-item" v-if="item">
<div>
<p>{{ item.name }}</p>
</div>
<div>
<span>{{ item.address }}</span>
</div>
</div>
</template>
</el-autocomplete>
</template>
<el-select-v2
v-if="
(item.type == 'select' && item.key == 'bank_name') ||
item.key == 'bank_branch_name'
"
clearable
filterable
remote
:remote-method="bankListRemoteMethod"
@change="bankListChange"
v-model="applyFormData[item.key]"
placeholder="搜索银行名称"
placement="top-start"
style="width: 350px"
:options="bankList2"
>
<template #prefix>
<el-icon>
<Search />
</el-icon>
</template>
</el-select-v2>
<el-icon>
<Search />
</el-icon>
</template>
</el-select-v2>
<div
class="bank_name_tip"
v-if="
(item.type == 'select' && item.key == 'bank_name') ||
item.key == 'bank_branch_name'
"
>
<el-tooltip placement="top" effect="light">
<template #content>
<div class="bank_name_cont">
<p>
如开户地为县级市或乡镇区无法搜索到可选择相同银行的市级支行网点
</p>
</div>
</template>
<el-button type="info" link>
<el-icon color="#e6a23c" size="14" style="margin-right: 5px"
><WarningFilled /></el-icon
>搜不到我的开户银行怎么处理</el-button
>
</el-tooltip>
</div>
<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]"
:placeholder="item.placeholder"
:options="cascaderOptions"
@ -109,58 +153,53 @@
/>
<el-select
v-if="item.type == 'select' && item.key=='license_type'"
v-model="applyFormData[item.key]"
placeholder="请选择类型"
clearable
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
v-for="item in optionsPermitType"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</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="{
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-icon class="avatar-uploader-icon">
<Plus />
</el-icon>
</el-upload>
</el-form-item>
</el-form>
</div>
<div class="form-button" v-if="[2,21].includes(auditInfo.approval_status)">
<div class="form-button" v-if="[2, 21].includes(auditInfo.approval_status)">
<div class="myui_check_text">检查并确认店铺信息和证件信息无误</div>
<el-button type="primary" @click="merchToApply" class="custom-button"
>重新审核</el-button
>
@ -176,7 +215,8 @@
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";
import { Plus, Search, WarningFilled } from "@element-plus/icons-vue";
import { uniq, difference } from "lodash";
import cityData from "../../stores/cityData";
import type { CityDataStructure } from "../../stores/cityData";
@ -191,23 +231,18 @@ import {
merchApply,
re_apply,
GetAppDistrict,
GetAuditInfo
GetAuditInfo,
} from "@/api/login";
import { batchNoApi, imgOcrResultApi } from "@/api/upload";
import config from "./formConfig";
interface Bank {
id: number;
bank_name: string;
}
interface FormItemType {
type?: string,
key?: string|undefined,
hide?: boolean,
label?: string,
placeholder?: string,
sort?: number,
type?: string;
key?: string | undefined;
hide?: boolean;
label?: string;
placeholder?: string;
sort?: number;
}
const orcImgTypeConf = {
@ -241,30 +276,19 @@ const processData = () => {
});
};
const active = ref(1);
const loading = ref(false);
const formRef = ref(null);
const dialogVisible = ref(false);
const dialogImageUrl = ref("");
const bankNameSearchText = ref("");
const selectedValue = ref([]);
const value = ref([]);
const cascaderOptions = ref([]);
const cascaderOptions2 = ref(processData());
const cityData2 = ref<CityDataStructure>();
const cascaderOptions3 = ref();
//hover
const cascaderProps = ref({
value: "value",
label: "label",
children: "children",
expandTrigger: "hover" as const,
});
const bankList2 = ref([]);
let orcTimeout = 0;
let currentFile = ref(null);
let currentBbatchNo = ref('');
let currentBbatchNo = ref("");
const handleChangeBizCategory = (value) => {
if (value && value.length === 2) {
@ -273,62 +297,8 @@ const handleChangeBizCategory = (value) => {
applyFormData.biz_second_category = bizSecondCategoryId;
}
};
const applyFormData = reactive({
bank_name: "",
bank_district: "",
bank_area: "",
openning_bank_code: "",
clearing_bank_code: "",
bank_branch_name: "",
account_number: "",
account_holder_name: "",
biz_category: null,
biz_license_company: "",
biz_license_image: "",
biz_license_number: "",
biz_second_category: null,
biz_license_content: "",
city_id: null,
contact_name: "",
county_id: null,
entity_type: 1,
environment_image: "",
front_facade_image: "",
individual_id_images: "",
individual_id_images2: "",
individual_id_number: "",
individual_id_name: "",
individual_id_addr: "",
individual_id_period_begin: "",
individual_id_period_end: "",
legal_person_id_images: "",
legal_person_id_images2: "",
legal_person_id_number: "",
legal_person_mobile: "",
legal_person_name: "",
legal_person_id_addr: "",
legal_person_id_period_begin: "",
legal_person_id_period_end: "",
license_image: [],
license_number: "",
license_type: "",
login_mobile: localStorage.getItem("mobilePhone"),
province_id: null,
store_address: "",
map_address: "",
position: "",
store_latitude: null,
store_longitude: null,
store_name: "",
mapAddressLabel: "",
license_imageToString: "",
store_area: "",
user_status: "",
bank_image: "",
email: "",
});
const applyFormData = reactive({});
const isLoggedIn = ref(!!userStore.token);
const license_type = ref(1)
const optionsPermitType = [
{
value: 1,
@ -343,78 +313,7 @@ const optionsPermitType = [
label: "需特许证件资质",
},
];
const rules = reactive({
contact_name: [
{ required: true, message: "请输入联系人姓名", trigger: "blur" },
],
biz_category: [
{ required: true, message: "请选择经营品类", trigger: "change" },
],
store_name: [{ required: true, message: "请输入门店名称", trigger: "blur" }],
map_address: [
{ required: true, message: "请选择地图地址", trigger: "change" },
],
// position: [{ required: true, message: "", trigger: "change" }],
store_address: [
{ required: true, message: "请输入详细地址", trigger: "blur" },
],
front_facade_image: [
{ required: true, message: "请上传门脸图", trigger: ["change", "blur"] },
],
environment_image: [
{ required: true, message: "请上传环境图", trigger: ["change", "blur"] },
],
entity_type: [{ required: true, message: "请主体类型", trigger: "change" }],
// license_type: [{ required: true, message: "", trigger: "change" }],
// license_number: [{ required: true, message: "", trigger: "blur" }],
biz_license_number: [
{ required: true, message: "请输入注册号", trigger: "blur" },
],
biz_license_company: [
{ required: true, message: "请输入公司名称", trigger: "blur" },
],
legal_person_name: [
{ required: true, message: "请输入法人姓名", trigger: "blur" },
],
legal_person_mobile: [
{ required: true, message: "请输入法人手机号", trigger: "blur" },
],
legal_person_id_number: [
{ required: true, message: "请输入法人身份证号", trigger: "blur" },
],
biz_license_image: [
{ required: true, message: "请上传营业执照", trigger: "change" },
],
// license_image: [{ required: true, message: '', trigger: 'change' }],
legal_person_id_images: [
{ required: true, message: "请上传法人身份证正面", trigger: "change" },
],
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" },
],
individual_id_images: [
{ required: true, message: "请上传个人身份证正面", trigger: "change" },
],
individual_id_images2: [
{ required: true, message: "请上传个人身份证反面", trigger: "change" },
],
bank_branch_name: [
{ required: true, message: "请选择银行", trigger: "change" },
],
// bank_branch_name: [{ required: true, message: '', trigger: 'blur' }],
account_number: [
{ required: true, message: "请输入银行卡号", trigger: "blur" },
],
account_holder_name: [
{ required: true, message: "请输入开户名称", trigger: "blur" },
],
});
const rules = reactive({});
const formItemData = ref<FormItemType[]>([]);
let auditInfo = ref({
id: 0,
@ -430,132 +329,50 @@ const handleGetAuditInfo = async () => {
mobile: localStorage.getItem("mobilePhone"),
})) as any;
if(res.data==null||res.data.approval_status==4){
if (res.data == null || res.data.approval_status == 4) {
router.push({ name: "start" });
return
return;
}
let arr = JSON.parse(res.data.approval_invalid_col);
let legal_person_card = ['legal_person_id_addr','legal_person_id_period_begin','legal_person_id_period_end']
let individual_id_card = ['individual_id_addr','individual_id_period_begin','individual_id_period_end']
// arr = arr.concat(legal_person_card).concat(individual_id_card).concat(['biz_license_content'])
if(res.data.entity_type==1){
arr = arr.filter(item=>(!individual_id_card.includes(item)))
} else if(res.data.entity_type==2){
arr = arr.filter(item=>(!legal_person_card.includes(item)))
}
arr = uniq(arr);
const arr2 = formConfig.reduce((acc, item) => {
if (arr.includes(item.key)) {
if (item.key == "license_image") {
applyFormData[item.key] = [];
} else {
applyFormData[item.key] = "";
}
acc.push(item);
}
return acc;
}, []);
auditInfo.value = { ...res.data, approval_invalid_col: arr };
formItemData.value = arr2.sort((a,b)=>(a.sort-b.sort));
formItemData.value = arr2.sort((a, b) => a.sort - b.sort);
arr2.forEach((element) => {
if (element.required) {
rules[element.key] = {
required: true,
message: element.placeholder,
trigger: "blur",
};
}
});
};
const handleMerchApply = 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,
individual_id_name,
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,
biz_license_content,
legal_person_id_addr,
legal_person_id_period_begin,
legal_person_id_period_end,
individual_id_addr,
individual_id_period_begin,
individual_id_period_end,
email,
} = applyFormData;
const res = await re_apply({
id: auditInfo.value.id,
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,
individual_id_name,
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,
biz_license_content,
legal_person_id_addr,
legal_person_id_period_begin,
legal_person_id_period_end,
individual_id_addr,
individual_id_period_begin,
individual_id_period_end,
email: `${login_mobile}@qq.com`,
...applyFormData,
email: `${applyFormData.login_mobile}@qq.com`,
});
if(res.status==200&&res.code==0){
ElMessage.success("资料已提交~")
if (res.status == 200 && res.code == 0) {
ElMessage.success("资料已提交~");
formItemData.value = [];
handleGetAuditInfo();
}
};
@ -565,71 +382,28 @@ const checkForm = async () => {
return valid;
});
if(applyFormData.entity_type==2 && !applyFormData.bank_image){
ElMessage.error("请上传银行卡")
return
if (applyFormData.license_type != 1) {
if (!applyFormData.license_image.length) {
ElMessage.error("请上传许可证图片");
return;
}
if (!applyFormData.license_number) {
ElMessage.error("请输入许可证编号");
return;
}
}
if (isValid) {
handleMerchApply()
handleMerchApply();
}
};
const next = () => {
if (active.value < 3) {
active.value++;
window.scrollTo({
top: 0, //
left: 0,
behavior: "smooth",
});
}
};
const pre = () => {
if (active.value > 1) {
active.value--;
window.scrollTo({
top: 0, //
left: 0,
behavior: "smooth",
});
}
};
const getLabel = (field: string, limit: number) => {
const labels = {
front_facade_image: "门脸图",
environment_image: "环境图",
biz_license_image: "营业执照",
license_image: "许可证",
legal_person_id_images: "法人身份证正面",
legal_person_id_images2: "法人身份证反面",
individual_id_images: "个人身份证正面",
individual_id_images2: "个人身份证反面",
};
if (field === "license_image") {
return `${labels[field]}(${applyFormData[field].length}/${limit})`;
} else {
const count = applyFormData[field] ? 1 : 0;
return `${labels[field]}(${count}/${limit})`;
}
};
const showAll = () => {
applyFormData.license_imageToString = applyFormData.license_image
.map((url) => `${url}`)
.join(",");
};
const merchToApply = async () => {
console.log("formdata", applyFormData);
// showAll();
checkForm();
};
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;
@ -646,9 +420,9 @@ const bankListRemoteMethod = (val) => {
}
GetBank({
keyword: val, // ,
keyword: val,
pageNum: 1,
pageSize: 2000,
pageSize: 5000,
}).then((res) => {
if (res.status == 200) {
bankList2.value = res.data.items.map((item) => {
@ -710,7 +484,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",
};
@ -846,7 +622,10 @@ const handleOcrText = async (batchNo, imgType) => {
switch (imgType) {
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);
applyFormData.biz_license_company = res.bizLicenseCompanyName;
@ -856,26 +635,29 @@ const handleOcrText = async (batchNo, imgType) => {
applyFormData.biz_license_content = res.bizLicenseScope;
break;
case "legal_person_id_images":
var res = (await getOcrText(batchNo, orcImgTypeConf.FR_ID_CARD_FRONT)) as any;
var res = (await getOcrText(
batchNo,
orcImgTypeConf.FR_ID_CARD_FRONT
)) as any;
console.log("legal_person_id_images", res);
applyFormData.legal_person_id_number = res.idNumber;
applyFormData.legal_person_id_addr = res.address;
break;
case "legal_person_id_images2":
case "legal_person_id_images2":
var res = (await getOcrText(
batchNo,
orcImgTypeConf.FR_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 {
applyFormData.legal_person_id_period_end = "9999-12-31"
applyFormData.legal_person_id_period_end = "9999-12-31";
}
break;
case "individual_id_images":
@ -896,15 +678,15 @@ 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 {
applyFormData.individual_id_period_end = "9999-12-31"
applyFormData.individual_id_period_end = "9999-12-31";
}
break;
case "bank_image":
@ -915,7 +697,7 @@ const handleOcrText = async (batchNo, imgType) => {
}
loading.value = false;
(formRef.value as any).validate()
(formRef.value as any).validate();
};
const handleUploadSuccess = async (response, file, fileList, field) => {
@ -934,16 +716,19 @@ const handleUploadSuccess = async (response, file, fileList, field) => {
switch (field) {
case "biz_license_image":
var res = await getBatchNo(file.raw, orcImgTypeConf.BUSINESS_LICENCE);
currentBbatchNo.value = res.batchNo
handleOcrText(res.batchNo, field)
currentBbatchNo.value = res.batchNo;
handleOcrText(res.batchNo, field);
break;
case "legal_person_id_images":
var res = await getBatchNo(file.raw, orcImgTypeConf.FR_ID_CARD_FRONT);
currentBbatchNo.value = res.batchNo
handleOcrText(res.batchNo, field)
currentBbatchNo.value = res.batchNo;
handleOcrText(res.batchNo, field);
break;
case "legal_person_id_images2":
var res = await getBatchNo(file.raw, orcImgTypeConf.FR_ID_CARD_BEHIND);
var res = await getBatchNo(
file.raw,
orcImgTypeConf.FR_ID_CARD_BEHIND
);
currentBbatchNo.value = res.batchNo;
handleOcrText(res.batchNo, field);
break;
@ -959,8 +744,8 @@ const handleUploadSuccess = async (response, file, fileList, field) => {
break;
case "bank_image":
var res = await getBatchNo(file.raw, orcImgTypeConf.BANK_CARD);
currentBbatchNo.value = res.batchNo
handleOcrText(res.batchNo, field)
currentBbatchNo.value = res.batchNo;
handleOcrText(res.batchNo, field);
break;
}
} else {
@ -972,41 +757,20 @@ const handleUploadSuccess = async (response, file, fileList, field) => {
loading.value = false;
}
(formRef.value as any).validate()
(formRef.value as any).validate();
};
const handleUploadError = (error, file) => {
loading.value = false;
ElMessage.error("文件上传失败");
};
const clearOtherFields = () => {
// if (applyFormData.entity_type === 1) {
// //
// applyFormData.individual_id_number = "";
// applyFormData.individual_id_images = "";
// applyFormData.individual_id_images2 = "";
// } else if (applyFormData.entity_type === 2) {
// //
// applyFormData.license_type = "1";
// applyFormData.license_number = "";
// applyFormData.biz_license_number = "";
// applyFormData.biz_license_company = "";
// applyFormData.legal_person_name = "";
// applyFormData.legal_person_mobile = "";
// applyFormData.legal_person_id_number = "";
// applyFormData.biz_license_image = "";
// applyFormData.license_image = [];
// applyFormData.legal_person_id_images = "";
// applyFormData.legal_person_id_images2 = "";
// }
};
onMounted(() => {
// bankListRemoteMethod();
if(!isLoggedIn.value){
if (!isLoggedIn.value) {
router.push({ name: "index" });
return
return;
}
handleGetAuditInfo();
@ -1059,7 +823,7 @@ onMounted(() => {
.tit {
font-size: 16px;
margin-bottom: 15px;
:deep(.el-result){
:deep(.el-result) {
padding: 0;
}
}
@ -1070,7 +834,7 @@ onMounted(() => {
border-radius: 5px;
background: #fff;
margin-bottom: 12px;
&.nodata{
&.nodata {
min-height: 900px;
display: flex;
align-items: center;
@ -1110,6 +874,29 @@ onMounted(() => {
}
}
.bank_name_tip {
display: flex;
align-items: center;
margin-left: 10px;
}
.bank_name_cont {
width: 300px;
h3{
margin-bottom: 12px;
}
p {
font-size: 14px;
margin-bottom: 12px;
}
}
.myui_check_text {
color: #999;
padding-bottom: 10px;
text-align: center;
font-size: 14px;
}
.auto-item {
p {
font-size: 15px;

View File

@ -6,6 +6,7 @@ export default {
label: "联系人",
placeholder: "请输入联系人",
sort: 1,
required: true,
},
{
type: "select",
@ -15,6 +16,7 @@ export default {
style: "pointer-events: none",
placeholder: "请选择经营品类",
sort: 2,
required: true,
},
{
type: "input",
@ -22,6 +24,7 @@ export default {
label: "门店名称",
placeholder: "请输入门店名称",
sort: 3,
required: true,
},
{
type: "select",
@ -29,8 +32,9 @@ export default {
label: "所在地区",
isReadonly: true,
style: "pointer-events: none",
placeholder: "请在地图上选择门店地址",
placeholder: "请选择店铺所在地区",
sort: 4,
required: false,
},
{
type: "input",
@ -38,6 +42,7 @@ export default {
label: "详细地址",
placeholder: "请输入店铺详细地址",
sort: 5,
required: true,
},
{
type: "upload",
@ -45,6 +50,7 @@ export default {
label: "门脸图片",
placeholder: "请上传门脸图片",
sort: 6,
required: true,
},
{
type: "upload",
@ -52,13 +58,15 @@ export default {
label: "环境图片",
placeholder: "请上传门脸图片",
sort: 7,
required: true,
},
{
type: "upload",
key: "biz_license_image",
label: "营业执照",
placeholder: "",
placeholder: "请上传营业执照",
sort: 8,
required: true,
},
{
type: "input",
@ -66,6 +74,7 @@ export default {
label: "公司名称",
placeholder: "请输入公司名称",
sort: 9,
required: true,
},
{
type: "input",
@ -73,6 +82,7 @@ export default {
label: "法人姓名",
placeholder: "请输入法人姓名",
sort: 10,
required: true,
},
{
type: "input",
@ -80,6 +90,7 @@ export default {
label: "法人手机号",
placeholder: "请输入法人手机号",
sort: 10,
required: true,
},
{
type: "input",
@ -87,6 +98,7 @@ export default {
label: "注册号",
placeholder: "请输入注册号",
sort: 11,
required: true,
},
{
type: "textarea",
@ -94,6 +106,7 @@ export default {
label: "经营范围",
placeholder: "请输入经营范围",
sort: 11,
required: true,
},
{
type: "select",
@ -103,18 +116,20 @@ export default {
style: "pointer-events: none",
placeholder: "请选择许可证类型",
sort: 12,
required: true,
},
{
type: "upload",
key: "license_image",
label: "许可证图片",
class: "upload-4",
placeholder: "",
placeholder: "请上传许可证图片",
imgUrlArr: [],
imgWidth: 125,
imgHeight: 88,
imgUpMaxCount: 5,
sort: 13,
required: false,
},
{
type: "input",
@ -122,24 +137,27 @@ export default {
label: "许可证编号",
placeholder: "请输入许可证编号",
sort: 14,
required: false,
},
{
type: "upload",
key: "individual_id_images",
label: "个人身份证正面图片",
class: "upload-5",
placeholder: "",
placeholder: "请上传个人身份证正面图片",
imgUrlArr: [],
sort: 15,
required: true,
},
{
type: "upload",
key: "individual_id_images2",
label: "个人身份证反面图片",
class: "upload-5",
placeholder: "",
placeholder: "请上传个人身份证反面图片",
imgUrlArr: [],
sort: 15,
required: true,
},
{
type: "input",
@ -148,6 +166,7 @@ export default {
label: "个人身份证姓名",
placeholder: "请输入个人身份证姓名",
sort: 16,
required: true,
},
{
type: "input",
@ -156,6 +175,7 @@ export default {
label: "个人身份证号码",
placeholder: "请输入个人身份证号码",
sort: 16,
required: true,
},
{
type: "input",
@ -164,6 +184,7 @@ export default {
label: "个人身份证地址",
placeholder: "请输入个人身份证地址",
sort: 16,
required: true,
},
{
type: "datepicker",
@ -172,6 +193,7 @@ export default {
label: "个人身份证生效日期",
placeholder: "请输入个人身份证生效日期",
sort: 16,
required: true,
},
{
type: "datepicker",
@ -180,6 +202,7 @@ export default {
label: "个人身份证截止日期",
placeholder: "请输入个人身份证截止日期",
sort: 16,
required: true,
},
{
type: "upload",
@ -187,22 +210,24 @@ export default {
hide: true,
label: "法人身份证正面图片",
class: "upload-5",
placeholder: "",
placeholder: "请上传法人身份证正面图片",
imgUrlArr: [],
imgWidth: 180,
imgHeight: 110,
sort: 15,
required: true,
},
{
type: "upload",
key: "legal_person_id_images2",
label: "法人身份证反面图片",
class: "upload-6",
placeholder: "",
placeholder: "请上传法人身份证反面图片",
imgUrlArr: [],
imgWidth: 180,
imgHeight: 110,
sort: 15,
required: true,
},
{
type: "input",
@ -211,6 +236,7 @@ export default {
label: "法人身份证号码",
placeholder: "请输入法人身份证号码",
sort: 16,
required: true,
},
{
type: "input",
@ -219,6 +245,7 @@ export default {
label: "法人身份证地址",
placeholder: "请输入法人身份证地址",
sort: 16,
required: true,
},
{
type: "datepicker",
@ -227,6 +254,7 @@ export default {
label: "法人身份证生效日期",
placeholder: "请输入法人身份证生效日期",
sort: 16,
required: true,
},
{
type: "datepicker",
@ -235,6 +263,7 @@ export default {
label: "法人身份证截止日期",
placeholder: "请输入法人身份证截止日期",
sort: 16,
required: true,
},
{
type: "input",
@ -242,6 +271,7 @@ export default {
label: "开户名称",
placeholder: "请输入开户名称",
sort: 17,
required: true,
},
{
type: "input",
@ -249,6 +279,7 @@ export default {
label: "银行卡号",
placeholder: "请输入银行卡号",
sort: 18,
required: true,
},
{
type: "select",
@ -256,8 +287,9 @@ export default {
label: "开户银行",
isReadonly: true,
style: "pointer-events: none",
placeholder: "请选择开户银行",
placeholder: "请输入开户银行",
sort: 19,
required: true,
},
],
};

View File

@ -727,7 +727,7 @@
@change="bankListChange"
:remote-method="bankListRemoteMethod"
v-model="applyFormData.bank_branch_name"
placeholder="搜索银行名称"
placeholder="中国工商银行桂平"
placement="top-start"
style="width: 350px"
:options="bankList2"
@ -743,24 +743,12 @@
<el-tooltip placement="top" effect="light">
<template #content>
<div class="bank_name_cont">
<h3>开店时搜不到我的开户银行怎么处理?</h3>
<p>
1.
目前小店的结算账户仅支持下拉框中包含的银行无法搜索到的银行在后续经营中可能无法正常结算提现等功能因此暂不支持
</p>
<p>
2.
若遇到这类问题请商户使用下拉框选项中包含的银行账户进行入驻如开户地为县级市或乡镇区无法搜索到可选择相同银行的市级网点否则将无法进行身份验证
</p>
<p>
3.
为了顺利注册开店与保障账号资产安全推荐优先使用四大国有银行开户注册
</p>
<p>如开户地为县级市或乡镇区无法搜索到可选择相同银行的市级支行网点</p>
</div>
</template>
<el-button type="info" link>
<el-icon color="#e6a23c" size="14"
<el-icon color="#e6a23c" size="14" style="margin-right:5px"
><WarningFilled /></el-icon
>搜不到我的开户银行怎么处理</el-button
>