update: 引入element-plus-icon ; PS处理静态图片减少10倍大小;商家入驻和登录弹窗UI优化并添加弹窗内的快捷互相跳转弹窗;右下角悬浮框UI优化;顶部导航高亮状态添加;驳回申请开店调试;
3
package-lock.json
generated
@ -560,9 +560,8 @@
|
||||
},
|
||||
"node_modules/@element-plus/icons-vue": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
|
||||
"resolved": "https://mirrors.tencent.com/npm/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
|
||||
"integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
box-sizing: border-box;
|
||||
}
|
||||
:root {
|
||||
--bgcolor: #387197;
|
||||
--bgcolor: #409eff;
|
||||
}
|
||||
|
||||
html{
|
||||
@ -133,11 +133,14 @@ html{
|
||||
font-size: 16px;
|
||||
}
|
||||
/* 伪元素添加下滑选中线 */
|
||||
.header-menu li:hover span{
|
||||
.header-menu li:hover span,
|
||||
.header-menu .router-link-active span
|
||||
{
|
||||
color: var(--bgcolor);
|
||||
}
|
||||
/*TODO 记得搞一个导航active的*/
|
||||
.header-menu li::before {
|
||||
.header-menu li::before
|
||||
{
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
@ -148,7 +151,9 @@ html{
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.header-menu li:hover::before {
|
||||
.header-menu li:hover::before,
|
||||
.header-menu .router-link-active li::before
|
||||
{
|
||||
content: "";
|
||||
left: 0;
|
||||
width: 100%;
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 197 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 282 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 346 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 336 KiB After Width: | Height: | Size: 62 KiB |
BIN
src/assets/image/about/xiaofa_ppt4-.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 2.2 MiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 51 KiB |
BIN
src/assets/image/company/copyright.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 571 KiB |
|
Before Width: | Height: | Size: 241 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 2.4 MiB After Width: | Height: | Size: 57 KiB |
@ -7,8 +7,8 @@
|
||||
<Footer/>
|
||||
</div>
|
||||
</div>
|
||||
<Login :isVisible="showLoginForm" @close-login-form="showLoginForm = false" />
|
||||
<Register :isVisible="showRegisterForm" @close-register-form="showRegisterForm = false" />
|
||||
<Login :isVisible="showLoginForm" @open-register-form="showRegisterForm = true" @close-login-form="showLoginForm = false" />
|
||||
<Register :isVisible="showRegisterForm" @open-login-form="showLoginForm = true" @close-register-form="showRegisterForm = false" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
@ -1,18 +1,4 @@
|
||||
<template>
|
||||
<!-- <div class="floating-menu" @click="handleClick">
|
||||
<div class="menu-item-wrapper">
|
||||
<el-button class="menu-item" type="primary" @click="showPhone =!showPhone">官方客服</el-button>
|
||||
<div v-show="showPhone" class="phone-popup">
|
||||
<div class="phone-popup-content">
|
||||
<div class="code">
|
||||
<img src="../assets/image/xiaofa_logo.png" alt="">
|
||||
</div>
|
||||
<p>电话:17777525395</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-button class="menu-item" type="primary" @click="navigateTo('feedback')">意见反馈</el-button>
|
||||
</div> -->
|
||||
<div class="floating-menu-mobile" @click="handleClick">
|
||||
<div class="customer-serve">
|
||||
<i class="iconfont icon-kefu" @click="showPhone = !showPhone"></i>
|
||||
@ -144,8 +130,9 @@ onUnmounted(() => {
|
||||
bottom: 20%;
|
||||
padding: 10px;
|
||||
z-index: 1000;
|
||||
background: white;
|
||||
border-radius: 20%;
|
||||
background: #ffffff;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0px 1px 10px rgba(0,0,0,.2);
|
||||
|
||||
.customer-serve {
|
||||
width: 30px;
|
||||
|
||||
@ -1,243 +1,278 @@
|
||||
<template>
|
||||
<div class="login-box" v-if="isVisible">
|
||||
<el-form :model="formData" :rules="rules" ref="formRef" label-width="120px" :hide-required-asterisk="true">
|
||||
<div class="login-container">
|
||||
<div class="login-close" @click="closeLoginForm">
|
||||
×
|
||||
</div>
|
||||
<h4>登录</h4>
|
||||
<div class="passwordLogin">
|
||||
<div class="login-phone">
|
||||
<el-form-item label="账号" prop="phoneNumber">
|
||||
<el-input v-model="formData.phoneNumber" placeholder="请输入账号" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="login_password">
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input type="password" v-model="formData.password" placeholder="请输入密码" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="pic_verifyCode">
|
||||
<el-form-item label="验证码" prop="captchaCode">
|
||||
<el-input type="text" v-model="formData.captchaCode" placeholder="请输入验证码" maxlength="4"/>
|
||||
<img :src="captchaUrl" alt="验证码" @click="refreshCaptcha">
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-button type="primary" @click="handleLogin">登录</el-button>
|
||||
<p>注:未入驻的账号请开店入驻成功后再继续</p>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="login-box" v-if="isVisible">
|
||||
<el-form
|
||||
:model="formData"
|
||||
:rules="rules"
|
||||
ref="formRef"
|
||||
label-width="88px"
|
||||
:hide-required-asterisk="true"
|
||||
>
|
||||
<div class="login-container">
|
||||
<div class="login-close" @click="closeLoginForm">
|
||||
<el-icon color="#333" size="24" class="btn_close"><Close /></el-icon>
|
||||
</div>
|
||||
<h4>欢迎登录</h4>
|
||||
<div class="passwordLogin">
|
||||
<div class="login-phone">
|
||||
<el-form-item label="账号" prop="phoneNumber">
|
||||
<el-input
|
||||
size="large"
|
||||
v-model="formData.phoneNumber"
|
||||
placeholder="请输入账号"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="login_password">
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input
|
||||
size="large"
|
||||
type="password"
|
||||
v-model="formData.password"
|
||||
placeholder="请输入密码"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="pic_verifyCode">
|
||||
<el-form-item label="验证码" prop="captchaCode">
|
||||
<el-input
|
||||
size="large"
|
||||
type="text"
|
||||
v-model="formData.captchaCode"
|
||||
placeholder="请输入验证码"
|
||||
maxlength="4"
|
||||
>
|
||||
<template #append>
|
||||
<img class="captcha" :src="captchaUrl" alt="验证码" @click="refreshCaptcha" />
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="foot">
|
||||
<el-button class="btn_sumit" size="large" round type="primary" @click="handleLogin">登录</el-button>
|
||||
</div>
|
||||
<div class="tool">
|
||||
没有账号?
|
||||
<el-button
|
||||
class="btn_sumit"
|
||||
type="primary"
|
||||
link
|
||||
@click="openRegisterForm"
|
||||
>立即入驻</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, defineProps, defineEmits, watch, onMounted, onUnmounted } from 'vue';
|
||||
import { useUserStore } from '@/stores/userStore';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { GetLogin, GetSmsCode, GetVerifyCode, GetAccountLogin } from '@/api/login';
|
||||
import { ElMessage } from 'element-plus/es';
|
||||
import {
|
||||
ref,
|
||||
defineProps,
|
||||
defineEmits,
|
||||
watch,
|
||||
onMounted,
|
||||
onUnmounted,
|
||||
} from "vue";
|
||||
import { useUserStore } from "@/stores/userStore";
|
||||
import { useRouter } from "vue-router";
|
||||
import {
|
||||
GetLogin,
|
||||
GetSmsCode,
|
||||
GetVerifyCode,
|
||||
GetAccountLogin,
|
||||
} from "@/api/login";
|
||||
import { ElMessage } from "element-plus/es";
|
||||
import { Close } from '@element-plus/icons-vue'
|
||||
|
||||
const props = defineProps({
|
||||
isVisible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
isVisible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(['close-login-form']);
|
||||
const emits = defineEmits(["open-register-form", "close-login-form"]);
|
||||
|
||||
const formData = ref({
|
||||
phoneNumber: '',
|
||||
password: '',
|
||||
captchaCode: ''
|
||||
phoneNumber: "",
|
||||
password: "",
|
||||
captchaCode: "",
|
||||
});
|
||||
|
||||
const router = useRouter();
|
||||
const userStore = useUserStore();
|
||||
const verify_token = ref();
|
||||
const captchaUrl = ref('');
|
||||
const formRef = ref<InstanceType<typeof import('element-plus/es')['ElForm']>>();
|
||||
const captchaUrl = ref("");
|
||||
const formRef = ref<InstanceType<typeof import("element-plus/es")["ElForm"]>>();
|
||||
|
||||
const closeLoginForm = () => {
|
||||
emits('close-login-form');
|
||||
emits("close-login-form");
|
||||
};
|
||||
|
||||
const openRegisterForm = () => {
|
||||
closeLoginForm()
|
||||
emits('open-register-form');
|
||||
};
|
||||
|
||||
const refreshCaptcha = async () => {
|
||||
verify_token.value = new Date().getTime();
|
||||
const res = await GetVerifyCode({ verify_token: verify_token.value });
|
||||
|
||||
if (res) {
|
||||
captchaUrl.value = `https://mall.gpxscs.cn/api/admin/shop/shop-base-config/image?verify_token=${verify_token.value}`;
|
||||
}
|
||||
|
||||
verify_token.value = new Date().getTime();
|
||||
const res = await GetVerifyCode({ verify_token: verify_token.value });
|
||||
|
||||
if (res) {
|
||||
captchaUrl.value = `https://mall.gpxscs.cn/api/admin/shop/shop-base-config/image?verify_token=${verify_token.value}`;
|
||||
}
|
||||
};
|
||||
|
||||
const initCaptcha = async () => {
|
||||
await refreshCaptcha();
|
||||
await refreshCaptcha();
|
||||
};
|
||||
|
||||
initCaptcha();
|
||||
|
||||
watch(() => props.isVisible, (newValue) => {
|
||||
watch(
|
||||
() => props.isVisible,
|
||||
(newValue) => {
|
||||
if (newValue) {
|
||||
refreshCaptcha();
|
||||
refreshCaptcha();
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
const rules = ref({
|
||||
phoneNumber: [
|
||||
{ required: true, message: '请输入账号', trigger: 'blur' },
|
||||
],
|
||||
password: [
|
||||
{ required: true, message: '请输入密码', trigger: 'blur' }
|
||||
],
|
||||
captchaCode: [
|
||||
{ required: true, message: '请输入验证码', trigger: 'blur' }
|
||||
]
|
||||
phoneNumber: [{ required: true, message: "请输入账号", trigger: "blur" }],
|
||||
password: [{ required: true, message: "请输入密码", trigger: "blur" }],
|
||||
captchaCode: [{ required: true, message: "请输入验证码", trigger: "blur" }],
|
||||
});
|
||||
|
||||
const handleLogin = async () => {
|
||||
formRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const params = {
|
||||
user_account: formData.value.phoneNumber,
|
||||
user_password: formData.value.password,
|
||||
verify_code: formData.value.captchaCode,
|
||||
verify_token: verify_token.value
|
||||
};
|
||||
const res = await GetAccountLogin(params);
|
||||
if (res && res.status === 200) {
|
||||
console.log("登录成功", res);
|
||||
userStore.setToken(res.data.token);
|
||||
userStore.setMobilePhone(formData.value.phoneNumber);
|
||||
window.open(`https://mall.gpxscs.cn/admin/#/login?loginInfo=${JSON.parse(JSON.stringify(res.data))}`,'_self');
|
||||
formData.value.phoneNumber = '';
|
||||
formData.value.password = '';
|
||||
formData.value.captchaCode = '';
|
||||
console.log(res.data);
|
||||
closeLoginForm();
|
||||
} else if(res&&res.status===250&&res.data.msg=='用户名或密码错误!'){
|
||||
ElMessage.error('用户名或密码错误!');
|
||||
console.log("操作失败", res.msg);
|
||||
}else if(res&&res.status===250&&res.data.msg=='验证码错误'){
|
||||
ElMessage.error('验证码错误');
|
||||
}
|
||||
} else {
|
||||
ElMessage.error('请正确填写登录信息');
|
||||
}
|
||||
});
|
||||
formRef.value?.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const params = {
|
||||
user_account: formData.value.phoneNumber,
|
||||
user_password: formData.value.password,
|
||||
verify_code: formData.value.captchaCode,
|
||||
verify_token: verify_token.value,
|
||||
};
|
||||
const res = await GetAccountLogin(params);
|
||||
if (res && res.status === 200) {
|
||||
console.log("登录成功", res);
|
||||
userStore.setToken(res.data.token);
|
||||
userStore.setMobilePhone(formData.value.phoneNumber);
|
||||
window.open(
|
||||
`https://mall.gpxscs.cn/admin/#/login?loginInfo=${JSON.parse(
|
||||
JSON.stringify(res.data)
|
||||
)}`,
|
||||
"_self"
|
||||
);
|
||||
formData.value.phoneNumber = "";
|
||||
formData.value.password = "";
|
||||
formData.value.captchaCode = "";
|
||||
console.log(res.data);
|
||||
closeLoginForm();
|
||||
} else if (
|
||||
res &&
|
||||
res.status === 250 &&
|
||||
res.data.msg == "用户名或密码错误!"
|
||||
) {
|
||||
ElMessage.error("用户名或密码错误!");
|
||||
console.log("操作失败", res.msg);
|
||||
} else if (res && res.status === 250 && res.data.msg == "验证码错误") {
|
||||
ElMessage.error("验证码错误");
|
||||
}
|
||||
} else {
|
||||
ElMessage.error("请正确填写登录信息");
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
// 可以在这里添加一些初始化的逻辑
|
||||
// 可以在这里添加一些初始化的逻辑
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
// 可以在这里添加一些清理的逻辑
|
||||
// 可以在这里添加一些清理的逻辑
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
$primary-color: #007BFF;
|
||||
$secondary-color: #6C757D;
|
||||
$border-radius: 8px;
|
||||
$box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.login-box {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 1000101;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: rgba(0, 0, 0, 0.75);
|
||||
z-index: 1000101;
|
||||
}
|
||||
.el-message {
|
||||
z-index: 1000102 !important;
|
||||
z-index: 1000102 !important;
|
||||
}
|
||||
.login-container {
|
||||
padding: 35px;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
background-color: #fff;
|
||||
width: 400px;
|
||||
transition: box-shadow 0.3s ease;
|
||||
position: relative;
|
||||
padding: 25px;
|
||||
border-radius: 10px;
|
||||
background-color: #fff;
|
||||
width: 500px;
|
||||
position: relative;
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
|
||||
h4 {
|
||||
color: #666;
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.el-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.login-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
.btn_close{
|
||||
cursor: pointer;
|
||||
&:hover{
|
||||
color: #409efc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.foot {
|
||||
padding-top: 20px;
|
||||
.btn_sumit {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
h4 {
|
||||
color: $primary-color;
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
font-size: 24px;
|
||||
.btn_code {
|
||||
display: block;
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.el-form-item {
|
||||
:deep(.el-input-group__append){
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.captcha{
|
||||
cursor: pointer;
|
||||
border: 1px solid #dcdfe6;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.tool{
|
||||
padding-top: 25px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
label{
|
||||
width: 100px !important;
|
||||
}
|
||||
}
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.el-input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
button {
|
||||
width: 100%;
|
||||
padding: 2px;
|
||||
background-color: #007BFF;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: $border-radius;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
}
|
||||
|
||||
.login-close {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
color: $secondary-color;
|
||||
|
||||
&:hover {
|
||||
color: $primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
.passwordLogin {
|
||||
p {
|
||||
margin: 10px;
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
.pic_verifyCode img {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 50px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.el-input{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
@ -8,11 +8,10 @@
|
||||
:hide-required-asterisk="true"
|
||||
>
|
||||
<div class="register-container">
|
||||
<!-- 关闭按钮 -->
|
||||
<div class="register-close" @click="closeRegisterForm">×</div>
|
||||
<!-- 标题 -->
|
||||
<h4>欢迎登录注册</h4>
|
||||
<!-- 手机号输入项 -->
|
||||
<div class="register-close" @click="closeRegisterForm">
|
||||
<el-icon color="#333" size="24" class="btn_close"><Close /></el-icon>
|
||||
</div>
|
||||
<h4>欢迎入驻开店</h4>
|
||||
<el-form-item label="手机号" prop="phoneNumber">
|
||||
<el-input
|
||||
v-model="formData.phoneNumber"
|
||||
@ -21,47 +20,57 @@
|
||||
size="large"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 验证码输入项 -->
|
||||
<el-form-item label="验证码" prop="verificationCode">
|
||||
<!-- <div class="verifyAndButton">
|
||||
<el-input v-model="formData.verificationCode" placeholder="输入验证码" style="flex: 1;" maxlength="4" />
|
||||
<button type="button" v-if="!sendCode" :style="{
|
||||
marginLeft: '10px',
|
||||
width: '80px',
|
||||
height: '40px',
|
||||
fontSize: '14px',
|
||||
textAlign: 'center',
|
||||
backgroundColor: formData.phoneNumber.length === 11? 'orange' : 'gray',
|
||||
cursor: formData.phoneNumber.length === 11? 'pointer' : 'not-allowed'
|
||||
}"
|
||||
:disabled="formData.phoneNumber.length!== 11" @click="getVerify_code">获取验证码</button>
|
||||
<button v-if="sendCode" :style="{
|
||||
marginLeft: '10px',
|
||||
width: '80px',
|
||||
height: '40px',
|
||||
fontSize: '14px',
|
||||
textAlign: 'center',
|
||||
backgroundColor: 'gray',
|
||||
cursor: 'not-allowed'
|
||||
}" disabled>
|
||||
{{ countdown }}秒后重发
|
||||
</button>
|
||||
</div> -->
|
||||
<el-input
|
||||
v-model="formData.verificationCode"
|
||||
placeholder="验证码"
|
||||
size="large"
|
||||
>
|
||||
<template #append>
|
||||
<el-button type="primary" class="btn_code" size="large" v-if="!sendCode" :disabled="formData.phoneNumber.length!== 11" @click="getVerify_code" round>发送验证码</el-button>
|
||||
<el-button type="primary" class="btn_code" size="large" v-if="sendCode" disabled round>{{ countdown }}S</el-button>
|
||||
<template #append>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="btn_code"
|
||||
size="large"
|
||||
v-if="!sendCode"
|
||||
:disabled="formData.phoneNumber.length !== 11"
|
||||
@click="getVerify_code"
|
||||
round
|
||||
>发送验证码</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="btn_code"
|
||||
size="large"
|
||||
v-if="sendCode"
|
||||
disabled
|
||||
round
|
||||
>{{ countdown }}S</el-button
|
||||
>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<div class="foot">
|
||||
<el-button class="btn_sumit" type="primary" size="large" :disabled="!formData.phoneNumber || !formData.verificationCode" round @click="handleRegister">确定</el-button>
|
||||
</div>
|
||||
<div class="foot">
|
||||
<el-button
|
||||
class="btn_sumit"
|
||||
type="primary"
|
||||
size="large"
|
||||
:disabled="!formData.phoneNumber || !formData.verificationCode"
|
||||
round
|
||||
@click="handleRegister"
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="tool">
|
||||
已有账号?
|
||||
<el-button
|
||||
class="btn_sumit"
|
||||
type="primary"
|
||||
link
|
||||
@click="openLoginForm"
|
||||
>立即登录</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -74,6 +83,7 @@ import { useRouter } from "vue-router";
|
||||
import { GetSmsCode, GetLogin } from "@/api/login";
|
||||
import { getApproval_status } from "@/api/login";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { Close } from '@element-plus/icons-vue'
|
||||
|
||||
const props = defineProps({
|
||||
isVisible: {
|
||||
@ -81,7 +91,7 @@ const props = defineProps({
|
||||
default: false,
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["close-register-form"]);
|
||||
const emits = defineEmits(['open-login-form', "close-register-form"]);
|
||||
const formData = ref({
|
||||
phoneNumber: "",
|
||||
verificationCode: "",
|
||||
@ -100,6 +110,11 @@ const closeRegisterForm = () => {
|
||||
emits("close-register-form");
|
||||
};
|
||||
|
||||
const openLoginForm = () => {
|
||||
closeRegisterForm()
|
||||
emits('open-login-form');
|
||||
};
|
||||
|
||||
const getVerify_code = async () => {
|
||||
const params = {
|
||||
number: formData.value.phoneNumber,
|
||||
@ -235,17 +250,17 @@ onUnmounted(() => {
|
||||
z-index: 1000102 !important; // 确保这个值高于遮罩层的 z-index
|
||||
}
|
||||
|
||||
.foot{
|
||||
padding-top: 20px;
|
||||
.btn_sumit{
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
.foot {
|
||||
padding-top: 20px;
|
||||
.btn_sumit {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.btn_code{
|
||||
display: block;
|
||||
width: 60px;
|
||||
}
|
||||
.btn_code {
|
||||
display: block;
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
.register-container {
|
||||
@ -275,11 +290,22 @@ onUnmounted(() => {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
.btn_close{
|
||||
cursor: pointer;
|
||||
&:hover{
|
||||
color: #409efc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
color: red;
|
||||
margin: 10px 0;
|
||||
.tool{
|
||||
padding-top: 25px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -19,19 +19,19 @@
|
||||
<div class="header-right">
|
||||
<!-- 免费开店按钮始终可见 -->
|
||||
<div class="start">
|
||||
<el-button @click="handleOpenStartPage">
|
||||
免费开店
|
||||
<el-button type="primary" @click="handleOpenStartPage">
|
||||
立即入驻
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- 根据登录状态显示不同按钮 -->
|
||||
<div class="login">
|
||||
<el-button type="primary" @click="openLoginForm" class="login-button">
|
||||
<el-button plain type="primary" @click="openLoginForm" class="login-button">
|
||||
商家登录
|
||||
</el-button>
|
||||
</div>
|
||||
<div v-if="isLoggedIn" class="logout">
|
||||
<el-button type="danger" plain @click="logout" class="logout-button">
|
||||
退出登录
|
||||
<el-button type="danger" plain @click="logout" class="logout-button">
|
||||
退出
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -40,10 +40,10 @@
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="login-register-module">
|
||||
<span @click="handleOpenStartPage">开店</span>
|
||||
<span @click="handleOpenStartPage">立即入驻</span>
|
||||
<span>|</span>
|
||||
<span @click="openLoginForm">登录</span>
|
||||
<span v-if="isLoggedIn" @click="logout">退出登录</span>
|
||||
<span @click="openLoginForm">商家登录</span>
|
||||
<span v-if="isLoggedIn" @click="logout">退出</span>
|
||||
</div>
|
||||
<!-- 汉堡菜单 -->
|
||||
<div class="hamburger-menu" @click="toggleMenu">
|
||||
|
||||
@ -139,9 +139,6 @@
|
||||
top: 0;
|
||||
background-position: center center;
|
||||
bottom: 0;
|
||||
background: url(../../assets/image/index/slider-bg-shape.png);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
|
||||
@ -110,16 +110,16 @@
|
||||
</el-select>
|
||||
|
||||
<el-upload
|
||||
v-if="item.type == '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]"
|
||||
v-model="applyFormData[item.key=='storefrontImg'?'front_facade_image':item.key=='surroundingsImg'?'environment_image':item.key]"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, item.key)
|
||||
handleRemove(file, fileList, item.key=='storefrontImg'?'front_facade_image':item.key=='surroundingsImg'?'environment_image':item.key)
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
@ -127,7 +127,7 @@
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
item.key
|
||||
item.key=='storefrontImg'?'front_facade_image':item.key=='surroundingsImg'?'environment_image':item.key
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
@ -135,7 +135,7 @@
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden(item.key),
|
||||
'upload-hidden': isUploadHidden(item.key=='storefrontImg'?'front_facade_image':item.key=='surroundingsImg'?'environment_image':item.key),
|
||||
}"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
@ -143,544 +143,6 @@
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="联系人" prop="contact_name">
|
||||
<el-input
|
||||
v-model="applyFormData.contact_name"
|
||||
placeholder="请输入联系人姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话" prop="login_mobile">
|
||||
<el-input
|
||||
v-model="applyFormData.login_mobile"
|
||||
placeholder="请输入联系人电话"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="经营品类" prop="biz_category">
|
||||
<el-cascader
|
||||
v-model="applyFormData.biz_category"
|
||||
:options="cascaderOptions"
|
||||
placeholder="请选择经营品类"
|
||||
:show-all-levels="false"
|
||||
@change="handleChangeBizCategory"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店名称" prop="store_name">
|
||||
<el-input
|
||||
v-model="applyFormData.store_name"
|
||||
placeholder="请输入门店名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在地区" prop="map_address">
|
||||
<el-cascader
|
||||
style="marginright: 5px"
|
||||
v-model="applyFormData.map_address"
|
||||
:options="cascaderOptions2"
|
||||
@change="handleChange"
|
||||
/>
|
||||
<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>
|
||||
</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>
|
||||
<el-form-item
|
||||
:label="getLabel('front_facade_image', 1)"
|
||||
prop="front_facade_image"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
multiple
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'front_facade_image')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'front_facade_image'
|
||||
)
|
||||
"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{ 'upload-hidden': isUploadHidden('front_facade_image') }"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="getLabel('environment_image', 1)"
|
||||
prop="environment_image"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
multiple
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
v-model="applyFormData.environment_image"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'environment_image')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'environment_image'
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{ 'upload-hidden': isUploadHidden('environment_image') }"
|
||||
>
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="主体类型" prop="entity_type">
|
||||
<el-radio-group
|
||||
v-model="applyFormData.entity_type"
|
||||
@change="clearOtherFields"
|
||||
>
|
||||
<el-radio-button :value="1">企业</el-radio-button>
|
||||
<el-radio-button :value="2">个人</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<div v-if="applyFormData.entity_type === 1">
|
||||
<el-form-item
|
||||
:label="getLabel('biz_license_image', 1)"
|
||||
prop="biz_license_image"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
multiple
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
v-model="applyFormData.biz_license_image"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'biz_license_image')
|
||||
"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'biz_license_image'
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden('biz_license_image'),
|
||||
}"
|
||||
>
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
v-if="
|
||||
applyFormData.biz_license_image &&
|
||||
!applyFormData.biz_license_company
|
||||
"
|
||||
@click="handleOcrText(currentBbatchNo, 'biz_license_image')"
|
||||
>点击免填营业执照信息</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="公司名称"
|
||||
prop="biz_license_company"
|
||||
v-if="applyFormData.biz_license_image"
|
||||
>
|
||||
<el-input
|
||||
v-model="applyFormData.biz_license_company"
|
||||
placeholder="请输入公司名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="法人姓名"
|
||||
prop="legal_person_name"
|
||||
v-if="applyFormData.biz_license_image"
|
||||
>
|
||||
<el-input
|
||||
v-model="applyFormData.legal_person_name"
|
||||
placeholder="请输入法人姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="注册号"
|
||||
prop="biz_license_number"
|
||||
v-if="applyFormData.biz_license_image"
|
||||
>
|
||||
<el-input
|
||||
v-model="applyFormData.biz_license_number"
|
||||
placeholder="请输入注册号"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="许可证类型"
|
||||
prop="license_type"
|
||||
v-if="applyFormData.biz_license_image"
|
||||
>
|
||||
<el-select
|
||||
v-model="applyFormData.license_type"
|
||||
value-key=""
|
||||
placeholder="请选择类型"
|
||||
clearable
|
||||
@change=""
|
||||
>
|
||||
<el-option
|
||||
v-for="item in optionsPermitType"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="getLabel('license_image', 5)"
|
||||
prop="license_image"
|
||||
v-if="applyFormData.license_type != 1"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
multiple
|
||||
:limit="5"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
v-model="applyFormData.license_image"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'license_image')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(response, file, fileList, 'license_image')
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{ 'upload-hidden': isUploadHidden('license_image') }"
|
||||
>
|
||||
<el-icon>
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="许可证编号"
|
||||
prop="license_number"
|
||||
v-if="applyFormData.license_type != 1"
|
||||
>
|
||||
<el-input
|
||||
v-model="applyFormData.license_number"
|
||||
placeholder="请输入许可证编号"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
:label="getLabel('legal_person_id_images', 1)"
|
||||
prop="legal_person_id_images"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
v-model="applyFormData.legal_person_id_images"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'legal_person_id_images')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'legal_person_id_images'
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden('legal_person_id_images'),
|
||||
}"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
v-if="
|
||||
applyFormData.legal_person_id_images &&
|
||||
!applyFormData.legal_person_id_number
|
||||
"
|
||||
@click="handleOcrText(currentBbatchNo, 'legal_person_id_images')"
|
||||
>点击免填身份证</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="getLabel('legal_person_id_images2', 1)"
|
||||
prop="legal_person_id_images2"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
v-model="applyFormData.legal_person_id_images2"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'legal_person_id_images2')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'legal_person_id_images2'
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden('legal_person_id_images2'),
|
||||
}"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="法人身份证号码"
|
||||
prop="legal_person_id_number"
|
||||
v-if="applyFormData.legal_person_id_images"
|
||||
>
|
||||
<el-input
|
||||
v-model="applyFormData.legal_person_id_number"
|
||||
placeholder="请输入法人身份证号码"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="applyFormData.entity_type === 2">
|
||||
<el-form-item
|
||||
:label="getLabel('individual_id_images', 1)"
|
||||
prop="individual_id_images"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
v-model="applyFormData.individual_id_images"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'individual_id_images')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'individual_id_images'
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden('individual_id_images'),
|
||||
}"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
:label="getLabel('individual_id_images2', 1)"
|
||||
prop="individual_id_images2"
|
||||
>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
v-model="applyFormData.individual_id_images2"
|
||||
:on-remove="
|
||||
(file, fileList) =>
|
||||
handleRemove(file, fileList, 'individual_id_images2')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(
|
||||
response,
|
||||
file,
|
||||
fileList,
|
||||
'individual_id_images2'
|
||||
)
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden('individual_id_images2'),
|
||||
}"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="个人身份证号"
|
||||
prop="individual_id_number"
|
||||
v-if="applyFormData.individual_id_images"
|
||||
>
|
||||
<el-input
|
||||
v-model="applyFormData.individual_id_number"
|
||||
placeholder="请输入个人身份证号"
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<el-form-item label="银行卡" prop="bank_image">
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
list-type="picture-card"
|
||||
:auto-upload="true"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
v-model="applyFormData.bank_image"
|
||||
:on-remove="
|
||||
(file, fileList) => handleRemove(file, fileList, 'bank_image')
|
||||
"
|
||||
:on-success="
|
||||
(response, file, fileList) =>
|
||||
handleUploadSuccess(response, file, fileList, 'bank_image')
|
||||
"
|
||||
:on-error="handleUploadError"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadUrl"
|
||||
name="upfile"
|
||||
:class="{
|
||||
'upload-hidden': isUploadHidden('bank_image'),
|
||||
}"
|
||||
>
|
||||
<el-icon class="avatar-uploader-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
</el-upload>
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
v-if="applyFormData.bank_image && !applyFormData.account_number"
|
||||
@click="handleOcrText(currentBbatchNo, 'bank_image')"
|
||||
>点击免填银行卡号</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
<template v-if="applyFormData.bank_image">
|
||||
<el-form-item label="开户名称" prop="account_holder_name">
|
||||
<el-input v-model="applyFormData.account_holder_name" />
|
||||
</el-form-item>
|
||||
<el-form-item label="银行卡号" prop="account_number">
|
||||
<el-input v-model="applyFormData.account_number" />
|
||||
</el-form-item>
|
||||
<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>
|
||||
</div>
|
||||
|
||||
@ -817,7 +279,7 @@ const applyFormData = reactive({
|
||||
license_image: [],
|
||||
license_number: "",
|
||||
license_type: "",
|
||||
login_mobile: "",
|
||||
login_mobile: localStorage.getItem("mobilePhone"),
|
||||
province_id: null,
|
||||
store_address: "",
|
||||
map_address: "",
|
||||
|
||||
@ -6,13 +6,6 @@ const formConfig = [
|
||||
placeholder: "请输入联系人",
|
||||
sort: 1,
|
||||
},
|
||||
{
|
||||
type: "input",
|
||||
key: "legal_person_mobile",
|
||||
label: "法人手机号",
|
||||
placeholder: "请输入法人手机号",
|
||||
sort: 1,
|
||||
},
|
||||
{
|
||||
type: "select",
|
||||
key: "biz_category",
|
||||
@ -80,6 +73,13 @@ const formConfig = [
|
||||
placeholder: "请输入法人姓名",
|
||||
sort: 10,
|
||||
},
|
||||
{
|
||||
type: "input",
|
||||
key: "legal_person_mobile",
|
||||
label: "法人手机号",
|
||||
placeholder: "请输入法人手机号",
|
||||
sort: 10,
|
||||
},
|
||||
{
|
||||
type: "input",
|
||||
key: "biz_license_number",
|
||||
|
||||