Compare commits

...

3 Commits

27 changed files with 357 additions and 518 deletions

4
dist/index.html vendored
View File

@ -7,8 +7,8 @@
<meta name="description" content="小发同城官网是小发电商官方商家入驻平台的登录入口,提供了一站式的商家开店服务,在这里,商家可以轻松地注册账号、创建店铺、处理订单等。小发官网致力于为广大商家提供高效便捷的电商运营解决方案,助力商家实现商业成功,和小发合作,一起更好。"/>
<meta name="keywords" content="小发同城电商,小发电商官网,小发同城超市好货,小发线上电商,小发线上超市,小发同城电商,小发本地团购,小发本地商家,小发社区好物,小发商家精选,小发电商招商,小发电商入驻,小发供应商,小发代理商,小发好货,小发好货官网。"/>
<title>小发同城官网 - 小发旗下本地sass电商品牌,品类多,价格低。精选好货,省心省钱!</title>
<script type="module" crossorigin src="/static/js/index-B8s36E3W.js"></script>
<link rel="modulepreload" crossorigin href="/static/js/element-plus-CrqYkJa0.js">
<script type="module" crossorigin src="/static/js/index-BPduLLkU.js"></script>
<link rel="modulepreload" crossorigin href="/static/js/element-plus-BYJld3QI.js">
<link rel="stylesheet" crossorigin href="/static/css/element-plus-DWXu63qx.css">
<link rel="stylesheet" crossorigin href="/static/css/index-V8C9L1Be.css">
</head>

View File

@ -1 +0,0 @@
[data-v-ca73a210] .el-upload--picture-card,[data-v-ca73a210] .el-upload-list__item{width:96px;height:96px;text-align:center;flex-direction:column;color:#666;line-height:20px}.signUp-container[data-v-ca73a210]{display:flex;padding-top:12px;flex-direction:column;align-items:center;justify-content:center;background:#eee}.signUp-container .tit[data-v-ca73a210]{font-size:16px;margin-bottom:15px}.signUp-container .tit[data-v-ca73a210] .el-result{padding:0}.signUp-container .steps-container[data-v-ca73a210]{width:1000px;padding:15px;border-radius:5px;background:#fff;margin-bottom:12px}.signUp-container .steps-container.nodata[data-v-ca73a210]{min-height:900px;display:flex;align-items:center;justify-content:center}.signUp-container[data-v-ca73a210] .upload-hidden .el-upload--picture-card{display:none}.signUp-container .form-submit[data-v-ca73a210]{width:1000px;padding:15px;border-radius:5px;background:#fff;margin-bottom:12px}.signUp-container .form-submit .from_box[data-v-ca73a210]{padding:15px;margin:0 0 12px;border-radius:5px;background:#fff}.signUp-container .form-button[data-v-ca73a210]{width:100%;text-align:center;padding:20px;background:#fff}.auto-item p[data-v-ca73a210]{font-size:15px;font-weight:900}.auto-item span[data-v-ca73a210]{font-size:10px}@media (max-width: 768px){.el-cascader-menu[data-v-ca73a210]{width:120px;min-width:120px}.signUp-container .steps-container[data-v-ca73a210],.signUp-container .form-submit[data-v-ca73a210]{width:100%}}

1
dist/static/css/check-cvGd5bS0.css vendored Normal file
View File

@ -0,0 +1 @@
[data-v-2609fdb3] .el-upload--picture-card,[data-v-2609fdb3] .el-upload-list__item{width:96px;height:96px;text-align:center;flex-direction:column;color:#666;line-height:20px}.signUp-container[data-v-2609fdb3]{display:flex;padding-top:12px;flex-direction:column;align-items:center;justify-content:center;background:#eee}.signUp-container .tit[data-v-2609fdb3]{font-size:16px;margin-bottom:15px}.signUp-container .tit[data-v-2609fdb3] .el-result{padding:0}.signUp-container .steps-container[data-v-2609fdb3]{width:1000px;padding:15px;border-radius:5px;background:#fff;margin-bottom:12px}.signUp-container .steps-container.nodata[data-v-2609fdb3]{min-height:900px;display:flex;align-items:center;justify-content:center}.signUp-container[data-v-2609fdb3] .upload-hidden .el-upload--picture-card{display:none}.signUp-container .form-submit[data-v-2609fdb3]{width:1000px;padding:15px;border-radius:5px;background:#fff;margin-bottom:12px}.signUp-container .form-submit .from_box[data-v-2609fdb3]{padding:15px;margin:0 0 12px;border-radius:5px;background:#fff}.signUp-container .form-button[data-v-2609fdb3]{width:100%;text-align:center;padding:20px;background:#fff}.bank_name_tip[data-v-2609fdb3]{display:flex;align-items:center;margin-left:10px}.bank_name_cont[data-v-2609fdb3]{width:300px}.bank_name_cont h3[data-v-2609fdb3]{margin-bottom:12px}.bank_name_cont p[data-v-2609fdb3]{font-size:14px;margin-bottom:12px}.myui_check_text[data-v-2609fdb3]{color:#999;padding-bottom:10px;text-align:center;font-size:14px}.auto-item p[data-v-2609fdb3]{font-size:15px;font-weight:900}.auto-item span[data-v-2609fdb3]{font-size:10px}@media (max-width: 768px){.el-cascader-menu[data-v-2609fdb3]{width:120px;min-width:120px}.signUp-container .steps-container[data-v-2609fdb3],.signUp-container .form-submit[data-v-2609fdb3]{width:100%}}

1
dist/static/css/start-C_a_UbGx.css vendored Normal file
View File

@ -0,0 +1 @@
[data-v-3e4c3e20] .el-upload--picture-card,[data-v-3e4c3e20] .el-upload-list__item{width:96px;height:96px;text-align:center;flex-direction:column;color:#666;line-height:20px}.signUp-container[data-v-3e4c3e20]{display:flex;padding-top:12px;flex-direction:column;align-items:center;justify-content:center;background:#eee}.signUp-container .tit[data-v-3e4c3e20]{font-size:16px;margin-bottom:15px}.signUp-container .steps-container[data-v-3e4c3e20]{width:50%;padding:15px;border-radius:5px;background:#fff;margin-bottom:12px}.signUp-container[data-v-3e4c3e20] .upload-hidden .el-upload--picture-card{display:none}.signUp-container .form-submit[data-v-3e4c3e20]{width:50%}.signUp-container .form-submit[data-v-3e4c3e20] .el-form{max-width:100%!important}.signUp-container .form-submit .from_box[data-v-3e4c3e20]{width:100%;padding:15px;margin:0 0 12px;border-radius:5px;background:#fff}.signUp-container .form-button[data-v-3e4c3e20]{width:100%;text-align:center;padding:20px;background:#fff}.bank_name_tip[data-v-3e4c3e20]{display:flex;align-items:center;margin-left:10px}.bank_name_cont[data-v-3e4c3e20]{width:360px}.bank_name_cont h3[data-v-3e4c3e20]{margin-bottom:12px}.bank_name_cont p[data-v-3e4c3e20]{font-size:14px;margin-bottom:12px}.myui_check_text[data-v-3e4c3e20]{color:#999;padding-bottom:10px;text-align:center;font-size:14px}.auto-item p[data-v-3e4c3e20]{font-size:15px;font-weight:900}.auto-item span[data-v-3e4c3e20]{font-size:10px}@media (max-width: 768px){.el-cascader-menu[data-v-3e4c3e20]{width:120px;min-width:120px}.signUp-container .steps-container[data-v-3e4c3e20],.signUp-container .form-submit[data-v-3e4c3e20]{width:100%}.bank_name_tip[data-v-3e4c3e20]{margin-left:0}}

View File

@ -1 +0,0 @@
[data-v-54fe267d] .el-upload--picture-card,[data-v-54fe267d] .el-upload-list__item{width:96px;height:96px;text-align:center;flex-direction:column;color:#666;line-height:20px}.signUp-container[data-v-54fe267d]{display:flex;padding-top:12px;flex-direction:column;align-items:center;justify-content:center;background:#eee}.signUp-container .tit[data-v-54fe267d]{font-size:16px;margin-bottom:15px}.signUp-container .steps-container[data-v-54fe267d]{width:50%;padding:15px;border-radius:5px;background:#fff;margin-bottom:12px}.signUp-container[data-v-54fe267d] .upload-hidden .el-upload--picture-card{display:none}.signUp-container .form-submit[data-v-54fe267d]{width:50%}.signUp-container .form-submit[data-v-54fe267d] .el-form{max-width:100%!important}.signUp-container .form-submit .from_box[data-v-54fe267d]{width:100%;padding:15px;margin:0 0 12px;border-radius:5px;background:#fff}.signUp-container .form-button[data-v-54fe267d]{width:100%;text-align:center;padding:20px;background:#fff}.bank_name_tip[data-v-54fe267d]{display:flex;align-items:center;margin-left:10px}.bank_name_cont[data-v-54fe267d]{width:360px}.bank_name_cont h3[data-v-54fe267d]{margin-bottom:12px}.bank_name_cont p[data-v-54fe267d]{font-size:14px;margin-bottom:12px}.myui_check_text[data-v-54fe267d]{color:#999;padding-bottom:10px;text-align:center;font-size:14px}.auto-item p[data-v-54fe267d]{font-size:15px;font-weight:900}.auto-item span[data-v-54fe267d]{font-size:10px}@media (max-width: 768px){.el-cascader-menu[data-v-54fe267d]{width:120px;min-width:120px}.signUp-container .steps-container[data-v-54fe267d],.signUp-container .form-submit[data-v-54fe267d]{width:100%}.bank_name_tip[data-v-54fe267d]{margin-left:0}}

View File

@ -1 +1 @@
import{H as r,v as d,J as t,X as e,B as a,y as o,Q as i,N as _}from"./element-plus-CrqYkJa0.js";import{_ as l}from"./_plugin-vue_export-helper-DlAUqK2U.js";const n="/static/jpg/ppt2-B63Md0hi.jpg",g="/static/jpg/ppt3-DJQEMBTC.jpg",m="/static/jpg/ppt4-N3gNKzlq.jpg",v="/static/jpg/ppt5-BECJkVjl.jpg",j="/static/jpg/target4-mqvy_N_v.jpg",u="/static/jpg/target5-D9hq6y0k.jpg",f="/static/jpg/target3-BFOCR9f2.jpg",x={},B={class:"about_container"},N={class:"brandTarget"};function b(C,s){const c=i,p=_;return d(),r("div",null,[t("div",B,[s[3]||(s[3]=e('<h1 data-v-53582c83>品牌介绍</h1><p data-v-53582c83> 小发同城是2024成立的创新型同城服务企业。自成立以来秉持着 “以用户需求为核心,用贴心服务点亮城市生活” 的使命,不断整合各类优质资源, 搭建起一个涵盖配送、生活服务、商业服务等多元领域的综合性服务网络。 </p><p data-v-53582c83> 随着城市生活节奏的不断加快和人们对生活品质要求的日益提高, 同城服务市场有着广阔的发展前景。小发同城将继续秉承创新、高效、贴心的服务理念, 不断拓展服务领域,提升服务质量,为用户创造更多价值。同时,小发同城也将积极与各类商家、合作 伙伴携手共进,共同推动同城服务行业的发展,为打造更加便捷、美好的城市生活贡献自己的力量。 </p><div class="ppt" data-v-53582c83><img src="'+n+'" data-v-53582c83><img src="'+g+'" data-v-53582c83><img src="'+m+'" data-v-53582c83><img src="'+v+'" data-v-53582c83></div><h1 data-v-53582c83>品牌主张</h1>',5)),t("div",N,[a(p,{gutter:20},{default:o(()=>[a(c,{xs:24,sm:24,md:24,lg:8,xl:8},{default:o(()=>s[0]||(s[0]=[t("div",{class:"brandTarget_one"},[t("img",{src:j}),t("p",null,"服务到位")],-1)])),_:1}),a(c,{xs:24,sm:24,md:24,lg:8,xl:8},{default:o(()=>s[1]||(s[1]=[t("div",{class:"brandTarget_two"},[t("img",{src:u}),t("p",null,"快速解决")],-1)])),_:1}),a(c,{xs:24,sm:24,md:24,lg:8,xl:8},{default:o(()=>s[2]||(s[2]=[t("div",{class:"brandTarget_three"},[t("img",{src:f}),t("p",null,"客户放心")],-1)])),_:1})]),_:1})])])])}const k=l(x,[["render",b],["__scopeId","data-v-53582c83"]]);export{k as default};
import{H as r,v as d,J as t,X as e,B as a,y as o,Q as i,N as _}from"./element-plus-BYJld3QI.js";import{_ as l}from"./_plugin-vue_export-helper-DlAUqK2U.js";const n="/static/jpg/ppt2-B63Md0hi.jpg",g="/static/jpg/ppt3-DJQEMBTC.jpg",m="/static/jpg/ppt4-N3gNKzlq.jpg",v="/static/jpg/ppt5-BECJkVjl.jpg",j="/static/jpg/target4-mqvy_N_v.jpg",u="/static/jpg/target5-D9hq6y0k.jpg",f="/static/jpg/target3-BFOCR9f2.jpg",x={},B={class:"about_container"},N={class:"brandTarget"};function b(C,s){const c=i,p=_;return d(),r("div",null,[t("div",B,[s[3]||(s[3]=e('<h1 data-v-53582c83>品牌介绍</h1><p data-v-53582c83> 小发同城是2024成立的创新型同城服务企业。自成立以来秉持着 “以用户需求为核心,用贴心服务点亮城市生活” 的使命,不断整合各类优质资源, 搭建起一个涵盖配送、生活服务、商业服务等多元领域的综合性服务网络。 </p><p data-v-53582c83> 随着城市生活节奏的不断加快和人们对生活品质要求的日益提高, 同城服务市场有着广阔的发展前景。小发同城将继续秉承创新、高效、贴心的服务理念, 不断拓展服务领域,提升服务质量,为用户创造更多价值。同时,小发同城也将积极与各类商家、合作 伙伴携手共进,共同推动同城服务行业的发展,为打造更加便捷、美好的城市生活贡献自己的力量。 </p><div class="ppt" data-v-53582c83><img src="'+n+'" data-v-53582c83><img src="'+g+'" data-v-53582c83><img src="'+m+'" data-v-53582c83><img src="'+v+'" data-v-53582c83></div><h1 data-v-53582c83>品牌主张</h1>',5)),t("div",N,[a(p,{gutter:20},{default:o(()=>[a(c,{xs:24,sm:24,md:24,lg:8,xl:8},{default:o(()=>s[0]||(s[0]=[t("div",{class:"brandTarget_one"},[t("img",{src:j}),t("p",null,"服务到位")],-1)])),_:1}),a(c,{xs:24,sm:24,md:24,lg:8,xl:8},{default:o(()=>s[1]||(s[1]=[t("div",{class:"brandTarget_two"},[t("img",{src:u}),t("p",null,"快速解决")],-1)])),_:1}),a(c,{xs:24,sm:24,md:24,lg:8,xl:8},{default:o(()=>s[2]||(s[2]=[t("div",{class:"brandTarget_three"},[t("img",{src:f}),t("p",null,"客户放心")],-1)])),_:1})]),_:1})])])])}const k=l(x,[["render",b],["__scopeId","data-v-53582c83"]]);export{k as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{j as f,a as b,r as v,H as V,J as d,B as t,y as o,_ as k,K as x,v as B,a3 as E,a4 as y,a7 as w,a8 as F,u as I,a9 as C,P as N}from"./element-plus-CrqYkJa0.js";import{u as U}from"./upload-DmqG8Ita.js";import{_ as g}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./http-rCcLLANw.js";const j={class:"feedback-container"},R={class:"main"},h={class:"submit"},q=f({__name:"FeedBack",setup(H){const l=b({describe:"",img:"",contact:""}),c=v(),u=({file:r})=>{U(r,{}).then(a=>{console.log(a)}).catch(a=>{console.error(a)})};return(r,e)=>{const a=y,n=E,i=F,m=w,p=k,_=x;return B(),V("div",j,[d("div",R,[e[4]||(e[4]=d("div",{class:"title"}," 意见反馈 ",-1)),t(p,{model:l,"label-width":"150px"},{default:o(()=>[t(n,{label:"描述问题"},{default:o(()=>[t(a,{modelValue:l.describe,"onUpdate:modelValue":e[0]||(e[0]=s=>l.describe=s),rows:6,type:"textarea",style:{width:"95%"}},null,8,["modelValue"])]),_:1}),t(n,{label:"上传图片"},{default:o(()=>[t(m,{ref_key:"uploadRef",ref:c,multiple:"",limit:3,"list-type":"picture-card","http-request":u,"auto-upload":!1},{default:o(()=>[t(i,{class:"avatar-uploader-icon"},{default:o(()=>[t(I(C))]),_:1})]),_:1},512)]),_:1}),t(n,{label:"您的联系方式"},{default:o(()=>[t(a,{modelValue:l.contact,"onUpdate:modelValue":e[1]||(e[1]=s=>l.contact=s),style:{width:"95%"}},null,8,["modelValue"])]),_:1})]),_:1},8,["model"]),d("div",h,[t(_,{color:"#f34d2c",plain:"",onClick:e[2]||(e[2]=s=>c.value.submit())},{default:o(()=>e[3]||(e[3]=[N("提交反馈")])),_:1})])])])}}}),S=g(q,[["__scopeId","data-v-8b6b8404"]]);export{S as default};
import{j as f,a as b,r as v,H as V,J as d,B as t,y as o,_ as k,K as x,v as B,a3 as E,a4 as y,a7 as w,a8 as F,u as I,a9 as C,P as N}from"./element-plus-BYJld3QI.js";import{u as U}from"./upload-CISlIcc_.js";import{_ as g}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./http-B4ZCnwNh.js";const j={class:"feedback-container"},R={class:"main"},h={class:"submit"},q=f({__name:"FeedBack",setup(H){const l=b({describe:"",img:"",contact:""}),c=v(),u=({file:r})=>{U(r,{}).then(a=>{console.log(a)}).catch(a=>{console.error(a)})};return(r,e)=>{const a=y,n=E,i=F,m=w,p=k,_=x;return B(),V("div",j,[d("div",R,[e[4]||(e[4]=d("div",{class:"title"}," 意见反馈 ",-1)),t(p,{model:l,"label-width":"150px"},{default:o(()=>[t(n,{label:"描述问题"},{default:o(()=>[t(a,{modelValue:l.describe,"onUpdate:modelValue":e[0]||(e[0]=s=>l.describe=s),rows:6,type:"textarea",style:{width:"95%"}},null,8,["modelValue"])]),_:1}),t(n,{label:"上传图片"},{default:o(()=>[t(m,{ref_key:"uploadRef",ref:c,multiple:"",limit:3,"list-type":"picture-card","http-request":u,"auto-upload":!1},{default:o(()=>[t(i,{class:"avatar-uploader-icon"},{default:o(()=>[t(I(C))]),_:1})]),_:1},512)]),_:1}),t(n,{label:"您的联系方式"},{default:o(()=>[t(a,{modelValue:l.contact,"onUpdate:modelValue":e[1]||(e[1]=s=>l.contact=s),style:{width:"95%"}},null,8,["modelValue"])]),_:1})]),_:1},8,["model"]),d("div",h,[t(_,{color:"#f34d2c",plain:"",onClick:e[2]||(e[2]=s=>c.value.submit())},{default:o(()=>e[3]||(e[3]=[N("提交反馈")])),_:1})])])])}}}),S=g(q,[["__scopeId","data-v-8b6b8404"]]);export{S as default};

View File

@ -1 +1 @@
import{H as t,v as o,J as e}from"./element-plus-CrqYkJa0.js";import{_ as c}from"./_plugin-vue_export-helper-DlAUqK2U.js";const a="/static/png/help_temp-BLQ8f-Sb.png",n={},r={class:"help_container"};function _(i,s){return o(),t("div",r,s[0]||(s[0]=[e("div",{class:"main"},[e("div",{class:"help_img"},[e("img",{src:a})])],-1)]))}const m=c(n,[["render",_],["__scopeId","data-v-f6b367b9"]]);export{m as default};
import{H as t,v as o,J as e}from"./element-plus-BYJld3QI.js";import{_ as c}from"./_plugin-vue_export-helper-DlAUqK2U.js";const a="/static/png/help_temp-BLQ8f-Sb.png",n={},r={class:"help_container"};function _(i,s){return o(),t("div",r,s[0]||(s[0]=[e("div",{class:"main"},[e("div",{class:"help_img"},[e("img",{src:a})])],-1)]))}const m=c(n,[["render",_],["__scopeId","data-v-f6b367b9"]]);export{m as default};

View File

@ -0,0 +1 @@
import{H as c,v as _,B as e,y as o,K as l,P as u,aj as i}from"./element-plus-BYJld3QI.js";import{u as p}from"./index-BPduLLkU.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";const d={class:"mycontainer"},f={__name:"PageNotFound",setup(x){const a=p(),s=()=>{a.replace("/index")};return(g,t)=>{const n=l,r=i;return _(),c("div",d,[e(r,{icon:"warning",title:"404请求资源不存在","sub-title":"抱歉!未找到页面"},{extra:o(()=>[e(n,{type:"primary",onClick:s},{default:o(()=>t[0]||(t[0]=[u("返回首页")])),_:1})]),_:1})])}}},P=m(f,[["__scopeId","data-v-56a57e43"]]);export{P as default};

View File

@ -1 +0,0 @@
import{H as c,v as _,B as e,y as o,K as i,P as l,ai as u}from"./element-plus-CrqYkJa0.js";import{u as p}from"./index-B8s36E3W.js";import{_ as m}from"./_plugin-vue_export-helper-DlAUqK2U.js";const d={class:"mycontainer"},f={__name:"PageNotFound",setup(x){const a=p(),s=()=>{a.replace("/index")};return(g,t)=>{const n=i,r=u;return _(),c("div",d,[e(r,{icon:"warning",title:"404请求资源不存在","sub-title":"抱歉!未找到页面"},{extra:o(()=>[e(n,{type:"primary",onClick:s},{default:o(()=>t[0]||(t[0]=[l("返回首页")])),_:1})]),_:1})])}}},P=m(f,[["__scopeId","data-v-56a57e43"]]);export{P as default};

27
dist/static/js/check-BNTx8Tcl.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{d as g}from"./index-B8s36E3W.js";import{r as s,G as d}from"./element-plus-CrqYkJa0.js";import{s as a}from"./http-rCcLLANw.js";const y=g("user",()=>{const r=s(localStorage.getItem("token")||""),o=s(!1),t=s(localStorage.getItem("mobilePhone")||""),e=n=>{r.value=n,o.value=!0;const p=Date.now()+31536e3*1e3;localStorage.setItem("token",n),localStorage.setItem("tokenExpiry",p.toString())},i=n=>{t.value=n,localStorage.setItem("mobilePhone",n)},l=()=>{localStorage.removeItem("mobilePhone")},c=()=>{try{r.value="",o.value=!1,localStorage.removeItem("userInfo"),localStorage.removeItem("token"),localStorage.removeItem("tokenExpiry")}catch(n){console.error("Error clearing token from localStorage:",n)}},m=()=>{try{const n=localStorage.getItem("tokenExpiry");return n?Date.now()>parseInt(n,10):!0}catch(n){return console.error("Error checking token expiry:",n),!0}},u=n=>{localStorage.setItem("Identity",n)},h=()=>{localStorage.removeItem("Identity")};return d(()=>{try{const n=localStorage.getItem("token");n&&!m()?(r.value=n,o.value=!0):c()}catch(n){console.error("Error retrieving token from localStorage:",n)}}),{token:r,isLoggedIn:o,mobilePhone:t,setToken:e,clearToken:c,setMobilePhone:i,removeMobilePhone:l,setIdentity:u,removeIdentity:h}});function S(r){return r.isFilter=!0,new Promise((o,t)=>{a({url:"/api/mobile/account/login/doMerchSmsRegisterAndLogin",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function v(r){return r.isFilter=!0,new Promise((o,t)=>{a({url:"/api/mobile/account/login/sendVerifyCode",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function I(){return new Promise((r,o)=>{a({url:"/api/mobile/shop/shop-base-store-category/list",method:"post"}).then(t=>{r(t)}).catch(t=>o(console.warn(t)))})}function k(r){return r.map(o=>({value:o.store_category_id,label:o.store_category_name,children:o.children?[{value:o.store_category_id,label:`${o.store_category_name} 分割比例(${o.split_ratio}%)`},...o.children.map(t=>({value:t.store_category_id,label:`${t.store_category_name} 分割比例(${t.split_ratio}%)`}))]:[]}))}function P(r){return r.isFilter=!0,new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/baidu/place/v2/suggestion",method:"get",params:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function _(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/lakala/tk/bank/search",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function G(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/apply",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function x(){const r={mobile:localStorage.getItem("mobilePhone")};return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/fresh/approval/status",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function E(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/re-apply",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function A(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/detail",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function T(r){return new Promise((o,t)=>{a({url:"/api/admin/account/account-user-base/doLogin",method:"post",params:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function C(r){return new Promise((o,t)=>{a({url:"/api/admin/shop/shop-base-config/image",method:"GET",params:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function L(){return new Promise((r,o)=>{a({url:"/api/mobile/shop/shop-base-district/getAppDistrict",method:"get"}).then(t=>{r(t)}).catch(t=>o(console.warn(t)))})}export{I as G,L as a,_ as b,P as c,A as d,T as e,C as f,x as g,S as h,v as i,G as m,E as r,k as t,y as u};
import{d as g}from"./index-BPduLLkU.js";import{r as s,G as d}from"./element-plus-BYJld3QI.js";import{s as a}from"./http-B4ZCnwNh.js";const y=g("user",()=>{const r=s(localStorage.getItem("token")||""),o=s(!1),t=s(localStorage.getItem("mobilePhone")||""),e=n=>{r.value=n,o.value=!0;const p=Date.now()+31536e3*1e3;localStorage.setItem("token",n),localStorage.setItem("tokenExpiry",p.toString())},i=n=>{t.value=n,localStorage.setItem("mobilePhone",n)},l=()=>{localStorage.removeItem("mobilePhone")},c=()=>{try{r.value="",o.value=!1,localStorage.removeItem("userInfo"),localStorage.removeItem("token"),localStorage.removeItem("tokenExpiry")}catch(n){console.error("Error clearing token from localStorage:",n)}},m=()=>{try{const n=localStorage.getItem("tokenExpiry");return n?Date.now()>parseInt(n,10):!0}catch(n){return console.error("Error checking token expiry:",n),!0}},u=n=>{localStorage.setItem("Identity",n)},h=()=>{localStorage.removeItem("Identity")};return d(()=>{try{const n=localStorage.getItem("token");n&&!m()?(r.value=n,o.value=!0):c()}catch(n){console.error("Error retrieving token from localStorage:",n)}}),{token:r,isLoggedIn:o,mobilePhone:t,setToken:e,clearToken:c,setMobilePhone:i,removeMobilePhone:l,setIdentity:u,removeIdentity:h}});function S(r){return r.isFilter=!0,new Promise((o,t)=>{a({url:"/api/mobile/account/login/doMerchSmsRegisterAndLogin",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function v(r){return r.isFilter=!0,new Promise((o,t)=>{a({url:"/api/mobile/account/login/sendVerifyCode",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function I(){return new Promise((r,o)=>{a({url:"/api/mobile/shop/shop-base-store-category/list",method:"post"}).then(t=>{r(t)}).catch(t=>o(console.warn(t)))})}function k(r){return r.map(o=>({value:o.store_category_id,label:o.store_category_name,children:o.children?[{value:o.store_category_id,label:`${o.store_category_name} 分割比例(${o.split_ratio}%)`},...o.children.map(t=>({value:t.store_category_id,label:`${t.store_category_name} 分割比例(${t.split_ratio}%)`}))]:[]}))}function P(r){return r.isFilter=!0,new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/baidu/place/v2/suggestion",method:"get",params:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function _(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/lakala/tk/bank/search",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function G(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/apply",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function x(){const r={mobile:localStorage.getItem("mobilePhone")};return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/fresh/approval/status",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function E(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/re-apply",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function A(r){return new Promise((o,t)=>{a({url:"/api/mobile/shop/merch/detail",method:"post",data:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function T(r){return new Promise((o,t)=>{a({url:"/api/admin/account/account-user-base/doLogin",method:"post",params:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function C(r){return new Promise((o,t)=>{a({url:"/api/admin/shop/shop-base-config/image",method:"GET",params:r}).then(e=>{o(e)}).catch(e=>t(console.warn(e)))})}function L(){return new Promise((r,o)=>{a({url:"/api/mobile/shop/shop-base-district/getAppDistrict",method:"get"}).then(t=>{r(t)}).catch(t=>o(console.warn(t)))})}export{I as G,L as a,_ as b,P as c,A as d,T as e,C as f,x as g,S as h,v as i,G as m,E as r,k as t,y as u};

View File

@ -1 +1 @@
import{j as o,r as a,H as r,v as c}from"./element-plus-CrqYkJa0.js";import{s}from"./http-rCcLLANw.js";const i={getAgreement(n){const e=new URLSearchParams(n).toString();return s({method:"GET",url:`/api/mobile/account/login/protocol?${e}`})}},m=["innerHTML"],g=o({__name:"privacy",setup(n){const e=a("");return(async()=>{const t=await i.getAgreement({protocols_key:"joininPrivacyAgreement"});(t==null?void 0:t.status)===200&&(e.value=t.data.document)})(),(t,p)=>(c(),r("div",{class:"container",innerHTML:e.value},null,8,m))}});export{g as default};
import{j as o,r as a,H as r,v as c}from"./element-plus-BYJld3QI.js";import{s}from"./http-B4ZCnwNh.js";const i={getAgreement(n){const e=new URLSearchParams(n).toString();return s({method:"GET",url:`/api/mobile/account/login/protocol?${e}`})}},m=["innerHTML"],g=o({__name:"privacy",setup(n){const e=a("");return(async()=>{const t=await i.getAgreement({protocols_key:"joininPrivacyAgreement"});(t==null?void 0:t.status)===200&&(e.value=t.data.document)})(),(t,p)=>(c(),r("div",{class:"container",innerHTML:e.value},null,8,m))}});export{g as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{s as r}from"./http-rCcLLANw.js";function l(n,a={}){a.isFilter=!0;const o=new FormData;o.append("upfile",n);for(const e in a)a.hasOwnProperty(e)&&o.append(e,a[e]);return new Promise((e,i)=>{r({url:"/api/mobile/shop/oss/upload",method:"post",data:o}).then(t=>{e(t)}).catch(t=>i(console.warn(t)))})}function s(n,a){const o=new FormData;return o.append("upfile",n),o.append("imgType",a),new Promise((e,i)=>{r({url:"/api/mobile/shop/lakala/tk/uploadOcrImg",method:"post",data:o}).then(t=>{e(t)}).catch(t=>i(console.warn(t)))})}function u(n){return r({url:"/api/mobile/shop/lakala/tk/imgOcrResult",method:"POST",data:n})}export{s as b,u as i,l as u};
import{s as r}from"./http-B4ZCnwNh.js";function l(n,a={}){a.isFilter=!0;const o=new FormData;o.append("upfile",n);for(const e in a)a.hasOwnProperty(e)&&o.append(e,a[e]);return new Promise((e,i)=>{r({url:"/api/mobile/shop/oss/upload",method:"post",data:o}).then(t=>{e(t)}).catch(t=>i(console.warn(t)))})}function s(n,a){const o=new FormData;return o.append("upfile",n),o.append("imgType",a),new Promise((e,i)=>{r({url:"/api/mobile/shop/lakala/tk/uploadOcrImg",method:"post",data:o}).then(t=>{e(t)}).catch(t=>i(console.warn(t)))})}function u(n){return r({url:"/api/mobile/shop/lakala/tk/imgOcrResult",method:"POST",data:n})}export{s as b,u as i,l as u};

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,22 @@ 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;
}
interface FormItemType {
type?: string,
key?: string|undefined,
hide?: boolean,
label?: string,
placeholder?: string,
sort?: number,
type ApplyFormDataType = {
[key in string]: any
}
const orcImgTypeConf = {
@ -241,30 +280,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 +301,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<ApplyFormDataType>({});
const isLoggedIn = ref(!!userStore.token);
const license_type = ref(1)
const optionsPermitType = [
{
value: 1,
@ -343,78 +317,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 +333,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 +386,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 +424,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 +488,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 +626,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 +639,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 +682,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 +701,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 +720,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 +748,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 +761,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 +827,7 @@ onMounted(() => {
.tit {
font-size: 16px;
margin-bottom: 15px;
:deep(.el-result){
:deep(.el-result) {
padding: 0;
}
}
@ -1070,7 +838,7 @@ onMounted(() => {
border-radius: 5px;
background: #fff;
margin-bottom: 12px;
&.nodata{
&.nodata {
min-height: 900px;
display: flex;
align-items: center;
@ -1110,6 +878,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
>