This commit is contained in:
Pota1ovO 2024-10-24 17:49:40 +08:00
parent a9c9bfb2d3
commit e917f1b10d
22 changed files with 847 additions and 278 deletions

View File

@ -28,6 +28,7 @@
justify-content: center; */ justify-content: center; */
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #f7e8e8;
} }

View File

@ -37,13 +37,21 @@ const fontColor = computed(() => {
</script> </script>
<style> <style>
@import '@/styles/public.scss'; @import '@/styles/public.scss';
/* 表单居中 */
.parent_box { .parent_box {
padding: 0 19%; padding: 0 19%;
} }
/* 上传文件样式 */
.img-upload { .img-upload {
width: 184px !important; width: 184px !important;
height: 144px !important; height: 144px !important;
} }
/* 提示文字 选中文字颜色 */
.hint_text_color {
color: #4080ff !important;
}
::v-deep .el-radio__inner {
border: 1px solid #999 !important;
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,85 @@
<script setup lang="ts">
const props = defineProps({
list: Array,
modelValue: Number,
});
const emit = defineEmits(['update:modelValue']);
const active = defineModel('modelValue', {
type: String,
required: true,
default: '',
});
</script>
<template>
<div class="steps_box flex just-center">
<div v-for="(item, index) in props.list" :key="index" class="tc">
<img
:src="index <= active ? item.iconActive : item.icon"
style="width: 40px; height: 40px"
/>
<div
:class="{
step_item_text: true,
hint_text_color: index <= active,
}"
>
{{ item.label }}
</div>
<ul
v-if="index != 0"
:class="{
step_item: true,
step_item_active: index <= active,
hint_text_color: index <= active,
}"
>
<li />
<li />
<li />
<li />
<li />
<li />
<el-icon>
<ArrowRightBold />
</el-icon>
</ul>
</div>
</div>
</template>
<style lang="scss" scoped>
.steps_box {
& > div {
width: 25%;
position: relative;
.step_item_text {
color: #999;
}
.step_item {
position: absolute;
display: flex;
align-items: center;
top: 12px;
left: -53px;
color: #d9d9d9;
& > li {
width: 6px;
height: 6px;
margin-right: 10px;
border-radius: 50%;
background: #d9d9d9;
}
}
.step_item_active {
& > li {
background: #4080ff !important;
}
}
}
}
</style>

View File

@ -16,16 +16,16 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useSettingsStore, useTagsViewStore } from "@/store"; import { useSettingsStore, useTagsViewStore } from '@/store';
import variables from "@/styles/variables.module.scss"; import variables from '@/styles/variables.module.scss';
// //
const cachedViews = computed(() => useTagsViewStore().cachedViews); const cachedViews = computed(() => useTagsViewStore().cachedViews);
const height = computed(() => { const height = computed(() => {
if (useSettingsStore().tagsView) { if (useSettingsStore().tagsView) {
return `calc(100vh - ${variables["navbar-height"]} - ${variables["tags-view-height"]})`; return `calc(100vh - ${variables['navbar-height']} - ${variables['tags-view-height']})`;
} else { } else {
return `calc(100vh - ${variables["navbar-height"]})`; return `calc(100vh - ${variables['navbar-height']})`;
} }
}); });
</script> </script>
@ -34,6 +34,7 @@ const height = computed(() => {
.app-main { .app-main {
position: relative; position: relative;
overflow-y: auto; overflow-y: auto;
background-color: var(--el-bg-color-page); // background-color: var(--el-bg-color-page);
background-color: #f7e8e8;
} }
</style> </style>

View File

@ -1,4 +1,5 @@
<template> <template>
<NavBar v-if="layout === LayoutEnum.LEFT" />
<div class="wh-full" :class="classObj"> <div class="wh-full" :class="classObj">
<!-- 遮罩层 --> <!-- 遮罩层 -->
<div <div
@ -39,11 +40,9 @@
</el-backtop> </el-backtop>
</div> </div>
</div> </div>
<!-- 左侧和顶部布局 --> <!-- 左侧和顶部布局 -->
<div v-else :class="{ hasTagsView: showTagsView }" class="main-container"> <div v-else :class="{ hasTagsView: showTagsView }" class="main-container">
<div :class="{ 'fixed-header': fixedHeader }"> <div :class="{ 'fixed-header': fixedHeader }">
<NavBar v-if="layout === LayoutEnum.LEFT" />
<TagsView v-if="showTagsView" /> <TagsView v-if="showTagsView" />
</div> </div>
<AppMain /> <AppMain />
@ -57,10 +56,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useAppStore, useSettingsStore, usePermissionStore } from "@/store"; import { useAppStore, useSettingsStore, usePermissionStore } from '@/store';
import defaultSettings from "@/settings"; import defaultSettings from '@/settings';
import { DeviceEnum } from "@/enums/DeviceEnum"; import { DeviceEnum } from '@/enums/DeviceEnum';
import { LayoutEnum } from "@/enums/LayoutEnum"; import { LayoutEnum } from '@/enums/LayoutEnum';
const appStore = useAppStore(); const appStore = useAppStore();
const settingsStore = useSettingsStore(); const settingsStore = useSettingsStore();
@ -124,7 +123,7 @@ watch(route, () => {
<style lang="scss" scoped> <style lang="scss" scoped>
.sidebar-container { .sidebar-container {
position: fixed; position: fixed;
top: 0; top: 58px;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 999; z-index: 999;

View File

@ -10,7 +10,7 @@ import { usePermissionStore, useUserStore } from '@/store';
export function setupPermission() { export function setupPermission() {
// 白名单路由 // 白名单路由
const whiteList = ['/login']; const whiteList = ['/login', '/backstagePage/register'];
router.beforeEach(async (to, from, next) => { router.beforeEach(async (to, from, next) => {
NProgress.start(); NProgress.start();

View File

@ -0,0 +1,26 @@
<template>
<div class="tc pt25">
<img :src="sqxx_active" />
<div class="pt5 ww23" style="margin: 0 auto">
<el-button
type="primary"
size="large"
round
class="w-full"
@click.prevent="handleLoginSubmit"
>
返回
</el-button>
</div>
<div class="mt4 f14" style="color: #bbbbbb">
我们将在
<span class="hint_text_color">7-15</span>
工作日内进行审核
</div>
</div>
</template>
<script setup>
import sqxx_active from '@/assets/images/backstagePage/dsh_page.png';
const handleLoginSubmit = () => {};
</script>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,247 @@
<script setup lang="ts">
import SingleImageUpload from 'E:/web-project/mosty-xz-sb/src/components/Upload/SingleImageUpload.vue';
import { type FormRules } from 'element-plus';
const exportsFormRef = ref();
const loading = ref(false);
const checked1 = ref(false);
const exportsFormData = reactive({ radio: 1 });
const pageData = reactive({
addressOptions: [],
});
const exportsFormRules: FormRules = {
file: [
{
required: true,
message: '请上传营业执照正面',
},
],
name: [
{
required: true,
message: '请输入公司名称',
},
],
jgdm: [
{
required: true,
message: '请输入组织机构代码',
},
],
};
//
const handleChange = (val: any) => {};
const handleLoginSubmit = () => {};
</script>
<template>
<el-form
ref="exportsFormRef"
label-width="auto"
label-position="top"
:model="exportsFormData"
:rules="exportsFormRules"
>
<el-row :gutter="20">
<div class="strong f16 mt10 mb7">01.注册类型</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<el-radio-group v-model="exportsFormData.radio">
<el-radio :value="1">旅游</el-radio>
<el-radio :value="2">用工</el-radio>
<el-radio :value="3">商务考察</el-radio>
<el-radio :value="3">科学交流</el-radio>
<el-radio :value="3">学术交流</el-radio>
<el-radio :value="3">体育赛事</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<div class="strong f16 mt0 mb7">02.单位信息</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<template #label>
营业执照扫描件
<span class="f12" style="color: #979797">图片大小不超过5M</span>
</template>
<SingleImageUpload hintText="上传营业执照正面" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公司名称" prop="name">
<el-input
v-model="exportsFormData.name"
clearable
placeholder="请输入公司名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="组织机构代码" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入组织机构代码"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="file" label="注册地址">
<el-col :span="12" style="padding-left: 0">
<el-cascader
v-model="exportsFormData.czdz"
style="width: 100%"
:options="pageData.addressOptions"
@change="handleChange"
/>
</el-col>
<el-col :span="12" style="padding-right: 0">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入详细地址"
/>
</el-col>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="file" label="实际办公地址">
<el-col :span="12" style="padding-left: 0">
<el-cascader
v-model="exportsFormData.czdz"
style="width: 100%"
:options="pageData.addressOptions"
@change="handleChange"
/>
</el-col>
<el-col :span="12" style="padding-right: 0">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入详细地址"
/>
</el-col>
</el-form-item>
</el-col>
<div class="strong f16 mt7 mb7">03.法人信息</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<template #label>
法人身份证
<span class="f12" style="color: #979797">图片大小不超过5M</span>
</template>
<SingleImageUpload hintText="上传身份证正面" />
<SingleImageUpload hintText="上传身份证反面" class="ml5" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入法人"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人身份证号" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入法人身份证号"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人电话号码" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入法人电话号码"
/>
</el-form-item>
</el-col>
<div class="strong f16 mt7 mb7">04.经办人信息</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<template #label>
经办人身份证
<span class="f12" style="color: #979797">图片大小不超过5M</span>
</template>
<SingleImageUpload hintText="上传身份证正面" />
<SingleImageUpload hintText="上传身份证反面" class="ml5" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入经办人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人身份证号" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入经办人身份证号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人电话号码" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入经办人电话号码"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人授权书" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
readonly
placeholder="请输入经办人电话号码"
>
<template #append>
<span class="pointer hint_text_color">点击上传</span>
</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="flex align-center">
<span class="f14 mr2">经办人授权书模板</span>
<el-icon color="#4080ff">
<Download />
</el-icon>
</div>
</el-col>
<el-col :span="24" class="mt25 mb20">
<div class="ww40" style="margin: 0 auto">
<el-button
:loading="loading"
type="primary"
size="large"
class="w-full"
@click.prevent="handleLoginSubmit"
>
注册
</el-button>
<div class="f14 mt4 flex align-center just-center">
<el-checkbox v-model="checked1" style="margin-right: 8px" />
我已阅读并接受
<span class="hint_text_color">用户协议</span>
<span class="hint_text_color">隐私政策</span>
</div>
</div>
</el-col>
</el-row>
</el-form>
</template>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,21 @@
<template>
<div class="tc pt25">
<img :src="zc_success_page" />
<div class="pt5 ww23" style="margin: 0 auto">
<el-button
type="primary"
size="large"
round
class="w-full"
@click.prevent="handleLoginSubmit"
>
立即申报
</el-button>
</div>
</div>
</template>
<script setup>
import zc_success_page from '@/assets/images/backstagePage/zc_success_page.png';
const handleLoginSubmit = () => {};
</script>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,257 @@
<script setup lang="ts">
import { type FormRules, ElNotification } from 'element-plus';
import SlideVerify from '@/views/backstagePage/register/components/SlideVerify.vue';
import { de } from 'element-plus/es/locale';
const exportsFormData = reactive({
password: '',
});
const pageData = reactive({
addressOptions: [],
});
const timer = ref<any>(null); //
const butStatus = ref<boolean>(false);
const showPassword = ref<boolean>(true); //
const butText = ref<string>('获取验证码');
const exportsFormRules: FormRules = {};
const handleLoginSubmit = (val: any) => {};
const onVerifySuccess = () => {};
const onVerifyFailed = () => {};
//
const checkStrength = (pwd: string) => {
let strength: number = 0;
// 8
if (pwd.length >= 8) {
if (pwd.match(/[0-9]/g)) strength = 1; //
if (pwd.match(/[a-z]/g)) strength = 2; //
if (pwd.match(/[A-Z]/g)) strength = 2; //
//
if (pwd.match(/[a-z]/g) && pwd.match(/[A-Z]/g) && pwd.match(/[0-9]/g))
strength = 3;
} else {
strength = 0;
}
return strength;
};
const passwordClass = computed(() => {
const strength = checkStrength(exportsFormData.password);
return strength;
});
//
const getPasswordHintText = (val: number) => {
let text: string = '一般';
switch (val) {
case 1:
text = '一般';
break;
case 2:
text = '良好';
break;
case 3:
text = '极强';
break;
}
return text;
};
//
const setHintTextColor = (val: number) => {
let color: string = 'orange';
switch (val) {
case 1:
color = 'orange';
break;
case 2:
color = 'green';
break;
case 3:
color = 'blue';
break;
}
return color;
};
//
const onClickYzm = () => {
ElNotification({
title: '提示',
message: '验证码已发送,请注意查收 ',
type: 'success',
});
butStatus.value = true;
let count: number = 120;
timer.value = setInterval(() => {
if (count === 0) {
clearInterval(timer.value);
timer.value = null;
butStatus.value = false;
} else {
count--;
butText.value = `${count}秒后重新获取`;
}
}, 1000);
};
</script>
<template>
<div class="tc ww50 set_password_box">
<!-- 验证手机号码 -->
<el-form
v-if="!showPassword"
ref="exportsFormRef"
label-width="auto"
label-position="top"
:model="exportsFormData"
:rules="exportsFormRules"
class="mt20"
>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop="name">
<el-input
v-model="exportsFormData.name"
clearable
placeholder="请输入手机号码"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="name">
<slide-verify @success="onVerifySuccess" @failed="onVerifyFailed" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="name">
<div class="flex ww100 align-center just-between">
<el-input
v-model="exportsFormData.name"
clearable
placeholder="请输入验证码"
style="width: 70%"
/>
<el-button
type="primary"
style="height: 45px"
plain
:disabled="butStatus"
@click="onClickYzm"
>
{{ butText }}
</el-button>
</div>
</el-form-item>
</el-col>
<el-col :span="24" class="mt5 mb20">
<div style="margin: 0 auto">
<el-button
type="primary"
size="large"
class="w-full"
@click.prevent="handleLoginSubmit"
>
下一步
</el-button>
</div>
</el-col>
</el-row>
</el-form>
<!-- 设置密码 -->
<el-form
v-else
ref="passWordFormRef"
label-width="auto"
label-position="top"
:model="exportsFormData"
:rules="exportsFormRules"
class="mt20"
>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop="name">
<el-input
v-model="exportsFormData.password"
clearable
placeholder="请输入密码最少8位包含字母大小和小写"
show-password
autocomplete="new-password"
@input="checkStrength"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="flex just-between align-center f14 mb5 pl5 pr5">
<ul class="password_scale flex">
<li :class="{ 'strength-1': passwordClass > 0 }" />
<li :class="{ 'strength-2': passwordClass > 1 }" />
<li :class="{ 'strength-3': passwordClass > 2 }" />
</ul>
<div>
密码安全性
<span :style="{ color: setHintTextColor(passwordClass) }">
{{ getPasswordHintText(passwordClass) }}
</span>
</div>
</div>
</el-col>
<el-col :span="24">
<el-form-item prop="name">
<el-input
v-model="exportsFormData.passwordOld"
clearable
placeholder="请确认密码最少8位包含字母大小和小写"
show-password
autocomplete="new-password"
/>
</el-form-item>
</el-col>
<el-col :span="24" class="mt5 mb20">
<div style="margin: 0 auto">
<el-button
type="primary"
size="large"
class="w-full"
@click.prevent="handleLoginSubmit"
>
下一步
</el-button>
</div>
</el-col>
</el-row>
</el-form>
</div>
</template>
<style lang="scss" scoped>
.set_password_box {
margin: 0 auto;
}
::v-deep .el-input {
line-height: 45px;
height: 45px;
}
.password_scale {
& > li {
height: 4px;
width: 40px;
border-radius: 2px;
margin-right: 8px;
background: #dddddd;
}
}
/* 弱 */
.strength-1 {
background-color: orange !important;
}
/* 中 */
.strength-2 {
background-color: green !important;
}
/* 强 */
.strength-3 {
background-color: blue !important;
}
/* 极强 */
</style>

View File

@ -0,0 +1,124 @@
<template>
<div
ref="sliderContainer"
class="slider-verify-container"
:style="{
border: leftP != '360px' ? '1px solid #4080ff' : '1px solid #23f150',
}"
@mousemove="onMouseMove"
@mouseup="onMouseUp"
@mouseleave="onMouseLeave"
>
<span v-if="blockState === 0" style="color: #4080ff">
请按住滑块拖动到最右边
</span>
<div
:style="{
left: leftP,
border: leftP != '360px' ? '1px solid #4080ff' : '1px solid #23f150',
}"
class="slider-verify-block"
@mousedown="onMouseDown"
>
<el-icon :color="leftP != '360px' ? '#4080ff' : '#23f150'">
<DArrowRight />
</el-icon>
</div>
<div
:style="{
width: leftP,
border: leftP != '360px' ? '1px solid #4080ff' : '1px solid #23f150',
}"
class="slider-verify-complete"
>
<span v-if="blockState === 2">验证成功</span>
</div>
</div>
</template>
<script setup>
import { ref, defineEmits } from 'vue';
const emit = defineEmits(['success', 'failed']);
const leftP = ref('0');
const blockState = ref(0);
const startP = ref(undefined);
const sliderContainer = ref(undefined);
const onMouseDown = (e) => {
if (blockState.value !== 2) {
leftP.value = '0';
blockState.value = 1;
startP.value = {
clientX: e.clientX,
};
} else {
leftP.value = '0';
blockState.value = 0;
}
};
const onMouseMove = (e) => {
if (blockState.value === 1) {
let width = e.clientX - startP.value.clientX;
if (width + 40 > 400) {
leftP.value = 400 - 40 + 'px';
blockState.value = 2;
emit('success');
} else {
leftP.value = width + 'px';
}
}
};
const onMouseUp = (e) => {
if (blockState.value !== 2) {
leftP.value = '0';
blockState.value = 0;
emit('failed');
}
};
const onMouseLeave = (e) => {
if (blockState.value !== 2) {
leftP.value = '0';
blockState.value = 0;
emit('failed');
}
};
</script>
<style lang="scss" scoped>
.slider-verify-container {
width: 100%;
height: 46px;
background-color: transparent;
position: relative;
// border: solid 1px #4080ff;
text-align: center;
color: #fff;
line-height: 45px;
user-select: none;
border-top: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
}
.slider-verify-complete {
width: 0;
height: 45px;
position: absolute;
background-color: #23f150;
border-left: none !important;
left: 0;
top: 0;
}
.slider-verify-block {
width: 56px;
height: 46px;
// background-image: url('@/assets/images/login6/arrow.png');
background-color: white;
position: absolute;
left: 0;
top: -1px;
// border: solid 1px #4080ff;
background-size: 50%;
background-repeat: no-repeat;
background-position: center;
}
</style>

View File

@ -8,254 +8,59 @@
</div> </div>
<div class="ww50 tc f14"> <div class="ww50 tc f14">
已有账号 已有账号
<el-link type="info">马上登录</el-link> <el-link type="primary" @click="onClickLogin">马上登录</el-link>
</div> </div>
</div> </div>
<div class="parent_box pt12"> <div class="parent_box pt12 f15">
<el-steps style="max-width: 100%" :active="1" align-center> <!-- 步骤 -->
<el-step title="填写账号信息" :icon="Edit" /> <Steps v-model="stepsIndex" :list="pageData.stepsData" />
<el-step title="设置密码" :icon="Upload" /> <div>
<el-step title="待审核" :icon="Picture" /> <RegisterForm v-if="stepsIndex === 0" />
<el-step title="注册成功" :icon="Picture" /> <SetPassword v-if="stepsIndex === 1" />
</el-steps> <DshPage v-if="stepsIndex === 2" />
<el-form <RegisterSuccess v-if="stepsIndex === 3" />
ref="exportsFormRef" </div>
label-width="auto"
label-position="top"
:model="exportsFormData"
:rules="exportsFormRules"
>
<el-row :gutter="20">
<div class="strong f16 mt10 mb7">01.单位信息</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<template #label>
营业执照扫描件
<span class="f12" style="color: #979797">
图片大小不超过5M
</span>
</template>
<SingleImageUpload hintText="上传营业执照正面" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公司名称" prop="name">
<el-input
v-model="exportsFormData.name"
clearable
placeholder="请输入公司名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="组织机构代码" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入组织机构代码"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="file" label="注册地址">
<el-col :span="12" style="padding-left: 0">
<el-cascader
v-model="exportsFormData.czdz"
style="width: 100%"
:options="pageData.addressOptions"
@change="handleChange"
/>
</el-col>
<el-col :span="12" style="padding-right: 0">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入详细地址"
/>
</el-col>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="file" label="实际办公地址">
<el-col :span="12" style="padding-left: 0">
<el-cascader
v-model="exportsFormData.czdz"
style="width: 100%"
:options="pageData.addressOptions"
@change="handleChange"
/>
</el-col>
<el-col :span="12" style="padding-right: 0">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入详细地址"
/>
</el-col>
</el-form-item>
</el-col>
<div class="strong f16 mt7 mb7">02.法人信息</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<template #label>
法人身份证
<span class="f12" style="color: #979797">
图片大小不超过5M
</span>
</template>
<SingleImageUpload hintText="上传身份证正面" />
<SingleImageUpload hintText="上传身份证反面" class="ml5" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入法人"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人身份证号" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入法人身份证号"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="法人电话号码" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入法人电话号码"
/>
</el-form-item>
</el-col>
<div class="strong f16 mt7 mb7">03.经办人信息</div>
<el-col :span="24" class="mb3">
<el-form-item prop="file">
<template #label>
经办人身份证
<span class="f12" style="color: #979797">
图片大小不超过5M
</span>
</template>
<SingleImageUpload hintText="上传身份证正面" />
<SingleImageUpload hintText="上传身份证反面" class="ml5" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入经办人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人身份证号" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入经办人身份证号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人电话号码" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
placeholder="请输入经办人电话号码"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="经办人授权书" prop="jgdm">
<el-input
v-model="exportsFormData.jgdm"
clearable
readonly
placeholder="请输入经办人电话号码"
>
<template #append>
<span class="pointer hint_text_color">点击上传</span>
</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="flex align-center">
<span class="f14 mr2">经办人授权书模板</span>
<el-icon color="#4080ff">
<Download />
</el-icon>
</div>
</el-col>
<el-col :span="24" class="mt25 mb20">
<div class="ww40" style="margin: 0 auto">
<el-button
:loading="loading"
type="primary"
size="large"
class="w-full"
@click.prevent="handleLoginSubmit"
>
注册
</el-button>
<div class="f14 mt4 flex align-center just-center">
<el-checkbox v-model="checked1" style="margin-right: 8px" />
我已阅读并接受
<span class="hint_text_color">用户协议</span>
<span class="hint_text_color">隐私政策</span>
</div>
</div>
</el-col>
</el-row>
</el-form>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import SingleImageUpload from 'E:/web-project/mosty-xz-sb/src/components/Upload/SingleImageUpload.vue'; import sqxx_active from '@/assets/images/backstagePage/sqxx_active.png';
import { Edit, Picture, Upload } from '@element-plus/icons-vue'; import set_password from '@/assets/images/backstagePage/set_password.png';
import { ref } from 'vue'; import set_password_active from '@/assets/images/backstagePage/set_password_active.png';
const active = ref(1); import dsh from '@/assets/images/backstagePage/dsh.png';
import { type FormRules } from 'element-plus'; import dsh_active from '@/assets/images/backstagePage/dsh_active.png';
const exportsFormRef = ref(); import zc_success from '@/assets/images/backstagePage/zc_success.png';
const loading = ref(false); import zc_success_active from '@/assets/images/backstagePage/zc_success_active.png';
const checked1 = ref(false); import { ref, reactive } from 'vue';
const exportsFormData = reactive({}); import { useRouter } from 'vue-router';
const stepsIndex = ref(0); //
const router = useRouter();
const pageData = reactive({ const pageData = reactive({
addressOptions: [], stepsData: [
{
label: '填写账号信息',
icon: sqxx_active,
iconActive: sqxx_active,
},
{
label: '设置密码',
icon: set_password,
iconActive: set_password_active,
},
{
label: '待审核',
icon: dsh,
iconActive: dsh_active,
},
{
label: '注册成功',
icon: zc_success,
iconActive: zc_success_active,
},
],
}); });
const exportsFormRules: FormRules = { const onClickLogin = () => {
file: [ router.replace('/login');
{
required: true,
message: '请上传营业执照正面',
},
],
name: [
{
required: true,
message: '请输入公司名称',
},
],
jgdm: [
{
required: true,
message: '请输入组织机构代码',
},
],
}; };
//
const handleChange = (val: any) => {};
const handleLoginSubmit = () => {};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -299,20 +104,17 @@ const handleLoginSubmit = () => {};
} }
} }
::v-deep .el-link.el-link--info {
--el-link-text-color: #fff;
--el-link-hover-text-color: #95d475;
--el-link-disabled-text-color: #95d475;
}
.hint_text_color {
color: #4080ff;
}
.parent_box { .parent_box {
margin-top: 80px; margin-top: 80px;
height: calc(100% - 80px); height: calc(100% - 80px);
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
} }
::v-deep .el-link.el-link--primary {
color: #fff;
&:hover {
color: #95d475;
}
}
</style> </style>

View File

@ -19,7 +19,7 @@
</div> </div>
<div class="ww50 tc f14"> <div class="ww50 tc f14">
还没有账号 还没有账号
<el-link type="info">马上注册</el-link> <el-link type="primary" @click="onClickcRegister">马上注册</el-link>
</div> </div>
<!--<div class="flex-y-center right_seting"> <!--<div class="flex-y-center right_seting">
<el-switch <el-switch
@ -168,7 +168,9 @@
</el-form> </el-form>
<div class="tc f14 mt10"> <div class="tc f14 mt10">
还没有账号 还没有账号
<el-link type="info" style="color: #4080ff">去注册</el-link> <el-link type="info" style="color: #4080ff" @click="onClickcRegister">
去注册
</el-link>
</div> </div>
</div> </div>
</div> </div>
@ -197,14 +199,12 @@ import router from '@/router';
import type { FormInstance } from 'element-plus'; import type { FormInstance } from 'element-plus';
import defaultSettings from '@/settings';
import { ThemeEnum } from '@/enums/ThemeEnum'; import { ThemeEnum } from '@/enums/ThemeEnum';
import { useSettingsStore, useUserStore, useDictStore } from '@/store'; import { useSettingsStore, useUserStore, useDictStore } from '@/store';
const userStore = useUserStore(); const userStore = useUserStore();
const settingsStore = useSettingsStore(); const settingsStore = useSettingsStore();
const dictStore = useDictStore(); const dictStore = useDictStore();
const route = useRoute(); const route = useRoute();
const { t } = useI18n(); const { t } = useI18n();
const loginFormRef = ref<FormInstance>(); const loginFormRef = ref<FormInstance>();
@ -256,7 +256,9 @@ const loginRules = computed(() => {
], ],
}; };
}); });
const onClickcRegister = () => {
router.replace('/backstagePage/register');
};
/** 获取验证码 */ /** 获取验证码 */
function getCaptcha() { function getCaptcha() {
AuthAPI.getCaptcha().then((data) => { AuthAPI.getCaptcha().then((data) => {
@ -515,14 +517,10 @@ html.dark {
} }
} }
} }
::v-deep .el-link.el-link--info { ::v-deep .el-link.el-link--primary {
--el-link-text-color: #fff; color: #fff;
--el-link-hover-text-color: #95d475; &:hover {
--el-link-disabled-text-color: #95d475; color: #95d475;
}
::v-deep .el-link__inner {
&::after {
background: #4080ff;
} }
} }
</style> </style>