用户填写信息表单

master
CTP 2 years ago
parent 31afd84da4
commit 1564eb6eb9

@ -1,56 +1,65 @@
import router from './router' import router from "./router";
import store from './store' import store from "./store";
import { Message } from 'element-ui' import { Message } from "element-ui";
import NProgress from 'nprogress' import NProgress from "nprogress";
import 'nprogress/nprogress.css' import "nprogress/nprogress.css";
import { getToken } from '@/utils/auth' import { getToken } from "@/utils/auth";
import { isRelogin } from '@/utils/request' import { isRelogin } from "@/utils/request";
NProgress.configure({ showSpinner: false }) NProgress.configure({ showSpinner: false });
const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] const whiteList = [
"/login",
"/auth-redirect",
"/bind",
"/register",
"/userInformation",
];
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start() NProgress.start();
if (getToken()) { if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title) to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
/* has token*/ /* has token*/
if (to.path === '/login') { if (to.path === "/login") {
next({ path: '/' }) next({ path: "/" });
NProgress.done() NProgress.done();
} else { } else {
if (store.getters.roles.length === 0) { if (store.getters.roles.length === 0) {
isRelogin.show = true isRelogin.show = true;
// 判断当前用户是否已拉取完user_info信息 // 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => { store
isRelogin.show = false .dispatch("GetInfo")
store.dispatch('GenerateRoutes').then(accessRoutes => { .then(() => {
// 根据roles权限生成可访问的路由表 isRelogin.show = false;
router.addRoutes(accessRoutes) // 动态添加可访问路由表 store.dispatch("GenerateRoutes").then((accessRoutes) => {
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 // 根据roles权限生成可访问的路由表
}) router.addRoutes(accessRoutes); // 动态添加可访问路由表
}).catch(err => { next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
store.dispatch('LogOut').then(() => { });
Message.error(err)
next({ path: '/' })
})
}) })
.catch((err) => {
store.dispatch("LogOut").then(() => {
Message.error(err);
next({ path: "/" });
});
});
} else { } else {
next() next();
} }
} }
} else { } else {
// 没有token // 没有token
if (whiteList.indexOf(to.path) !== -1) { if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入 // 在免登录白名单,直接进入
next() next();
} else { } else {
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
NProgress.done() NProgress.done();
} }
} }
}) });
router.afterEach(() => { router.afterEach(() => {
NProgress.done() NProgress.done();
}) });

@ -1,10 +1,10 @@
import Vue from 'vue' import Vue from "vue";
import Router from 'vue-router' import Router from "vue-router";
Vue.use(Router) Vue.use(Router);
/* Layout */ /* Layout */
import Layout from '@/layout' import Layout from "@/layout";
/** /**
* Note: 路由配置项 * Note: 路由配置项
@ -31,148 +31,157 @@ import Layout from '@/layout'
// 公共路由 // 公共路由
export const constantRoutes = [ export const constantRoutes = [
{ {
path: '/redirect', path: "/redirect",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [ children: [
{ {
path: '/redirect/:path(.*)', path: "/redirect/:path(.*)",
component: (resolve) => require([`@/views/redirect`],resolve) component: (resolve) => require([`@/views/redirect`], resolve),
} },
] ],
}, },
{ {
path: '/login', path: "/login",
component: (resolve) => require([`@/views/myLogin`],resolve), component: (resolve) => require([`@/views/myLogin`], resolve),
hidden: true hidden: true,
}, },
{ {
path: '/register', path: "/register",
component: (resolve) => require([`@/views/register`],resolve), component: (resolve) => require([`@/views/register`], resolve),
hidden: true hidden: true,
}, },
{ {
path: '/404', path: "/userInformation",
component: (resolve) => require([`@/views/error/404`],resolve), component: (resolve) => require([`@/views/userInformation`], resolve),
hidden: true hidden: true,
}, },
{ {
path: '/401', path: "/404",
component: (resolve) => require([`@/views/error/401`],resolve), component: (resolve) => require([`@/views/error/404`], resolve),
hidden: true hidden: true,
}, },
{ {
path: '', path: "/401",
component: (resolve) => require([`@/views/error/401`], resolve),
hidden: true,
},
{
path: "",
component: Layout, component: Layout,
redirect: 'index', redirect: "index",
children: [ children: [
{ {
path: 'index', path: "index",
component: (resolve) => require([`@/views/index`],resolve), component: (resolve) => require([`@/views/index`], resolve),
name: 'Index', name: "Index",
meta: { title: '首页', icon: 'dashboard', affix: true } meta: { title: "首页", icon: "dashboard", affix: true },
} },
] ],
}, },
{ {
path: '/user', path: "/user",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ children: [
{ {
path: 'profile', path: "profile",
component: (resolve) => require([`@/views/system/user/profile/index`],resolve), component: (resolve) =>
name: 'Profile', require([`@/views/system/user/profile/index`], resolve),
meta: { title: '个人中心', icon: 'user' } name: "Profile",
} meta: { title: "个人中心", icon: "user" },
] },
} ],
] },
];
// 动态路由,基于用户权限动态去加载 // 动态路由,基于用户权限动态去加载
export const dynamicRoutes = [ export const dynamicRoutes = [
{ {
path: '/system/user-auth', path: "/system/user-auth",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ['system:user:edit'], permissions: ["system:user:edit"],
children: [ children: [
{ {
path: 'role/:userId(\\d+)', path: "role/:userId(\\d+)",
component: (resolve) => require([`@/views/system/user/authRole`],resolve), component: (resolve) =>
name: 'AuthRole', require([`@/views/system/user/authRole`], resolve),
meta: { title: '分配角色', activeMenu: '/system/user' } name: "AuthRole",
} meta: { title: "分配角色", activeMenu: "/system/user" },
] },
],
}, },
{ {
path: '/system/role-auth', path: "/system/role-auth",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ['system:role:edit'], permissions: ["system:role:edit"],
children: [ children: [
{ {
path: 'user/:roleId(\\d+)', path: "user/:roleId(\\d+)",
component: (resolve) => require([`@/views/system/role/authUser`],resolve), component: (resolve) =>
name: 'AuthUser', require([`@/views/system/role/authUser`], resolve),
meta: { title: '分配用户', activeMenu: '/system/role' } name: "AuthUser",
} meta: { title: "分配用户", activeMenu: "/system/role" },
] },
],
}, },
{ {
path: '/system/dict-data', path: "/system/dict-data",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ['system:dict:list'], permissions: ["system:dict:list"],
children: [ children: [
{ {
path: 'index/:dictId(\\d+)', path: "index/:dictId(\\d+)",
component: (resolve) => require([`@/views/system/dict/data`],resolve), component: (resolve) => require([`@/views/system/dict/data`], resolve),
name: 'Data', name: "Data",
meta: { title: '字典数据', activeMenu: '/system/dict' } meta: { title: "字典数据", activeMenu: "/system/dict" },
} },
] ],
}, },
{ {
path: '/system/oss-config', path: "/system/oss-config",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ['system:oss:list'], permissions: ["system:oss:list"],
children: [ children: [
{ {
path: 'index', path: "index",
component: (resolve) => require([`@/views/system/oss/config`],resolve), component: (resolve) => require([`@/views/system/oss/config`], resolve),
name: 'OssConfig', name: "OssConfig",
meta: { title: '配置管理', activeMenu: '/system/oss' } meta: { title: "配置管理", activeMenu: "/system/oss" },
} },
] ],
}, },
{ {
path: '/tool/gen-edit', path: "/tool/gen-edit",
component: Layout, component: Layout,
hidden: true, hidden: true,
permissions: ['tool:gen:edit'], permissions: ["tool:gen:edit"],
children: [ children: [
{ {
path: 'index/:tableId(\\d+)', path: "index/:tableId(\\d+)",
component: (resolve) => require([`@/views/tool/gen/editTable`],resolve), component: (resolve) =>
name: 'GenEdit', require([`@/views/tool/gen/editTable`], resolve),
meta: { title: '修改生成配置', activeMenu: '/tool/gen' } name: "GenEdit",
} meta: { title: "修改生成配置", activeMenu: "/tool/gen" },
] },
} ],
] },
];
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
let routerPush = Router.prototype.push; let routerPush = Router.prototype.push;
Router.prototype.push = function push(location) { Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(err => err) return routerPush.call(this, location).catch((err) => err);
} };
export default new Router({ export default new Router({
base: process.env.VUE_APP_CONTEXT_PATH, base: process.env.VUE_APP_CONTEXT_PATH,
mode: 'hash', // 去掉url中的# mode: "hash", // 去掉url中的#
scrollBehavior: () => ({ y: 0 }), scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes routes: constantRoutes,
}) });

@ -1,53 +1,40 @@
<template> <template>
<div class="register"> <div class="register">
<el-steps <!-- 手机验证表单 -->
:active="activeSetp" <el-form
finish-status="success" label-width="100px"
align-center="center" :model="phoneForm"
style="width: 50%; margin-top: 100px" :rules="rulesPhoneForm"
ref="phoneForm"
class="phoneForm"
> >
<el-step title="手机验证"></el-step> <el-form-item label="手机号码" prop="mobile">
<el-step title="用户信息填写"></el-step> <el-input
<el-step title="审核"></el-step> placeholder="请输入手机号码"
</el-steps> v-model="phoneForm.mobile"
<!-- 注册内容 --> ></el-input>
<div class="box"> </el-form-item>
<!-- 手机验证表单 --> <el-form-item label="手机验证码" prop="code">
<div v-show="activeSetp === 0"> <el-input placeholder="请填写验证码" v-model="phoneForm.code">
<el-form <template slot="append">
label-width="100px" <el-button @click="getCheckcode" :disabled="isTimer"
:model="phoneForm" ><span>{{ btnTitle }}</span></el-button
:rules="rulesPhoneForm"
ref="phoneForm"
class="phoneForm"
>
<el-form-item label="手机号码" prop="mobile">
<el-input
placeholder="请输入手机号码"
v-model="phoneForm.mobile"
></el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input placeholder="请填写验证码" v-model="phoneForm.code">
<template slot="append">
<el-button @click="getCheckcode" :disabled="isTimer"
><span>{{ btnTitle }}</span></el-button
>
</template>
</el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
class="bntNext"
@click="submitForm('phoneForm')"
>下一步</el-button
> >
</el-form-item> </template>
</el-form> </el-input>
</div> </el-form-item>
<!-- 用户信息填写 --> <el-form-item>
<div v-show="activeSetp === 1"> <el-button
type="primary"
class="bntNext"
@click="submitForm('phoneForm')"
>登录/注册</el-button
>
</el-form-item>
</el-form>
</div>
<!-- 用户信息填写 -->
<!-- <div v-show="activeSetp === 1">
<el-form <el-form
label-width="135px" label-width="135px"
:model="userForm" :model="userForm"
@ -133,22 +120,11 @@
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div> -->
<!-- 审核 -->
<div v-show="activeSetp === 2">
<span>注册状态</span>
<el-select disabled v-model="checkStatus">
<el-option label="未审核" :value="0"></el-option>
<el-option label="未通过" :value="2"></el-option>
<el-option label="已审核" :value="1"></el-option>
</el-select>
</div>
</div>
</div>
</template> </template>
<script> <script>
import { getCheckcode, checkCode, registerSave } from "@/api/login"; import { getCheckcode, checkCode } from "@/api/login";
export default { export default {
name: "Register", name: "Register",
@ -200,7 +176,6 @@ export default {
return { return {
btnTitle: "获取验证码", btnTitle: "获取验证码",
isTimer: false, isTimer: false,
activeSetp: 0,
phoneForm: { phoneForm: {
mobile: "", // mobile: "", //
code: "", // code: "", //
@ -227,7 +202,6 @@ export default {
checkStatus: null, // checkStatus: null, //
comments: null, // comments: null, //
}, },
checkStatus: 0, //
rulesUserForm: { rulesUserForm: {
mobile: [ mobile: [
{ required: true, message: "请输入手机号码", trigger: "blur" }, { required: true, message: "请输入手机号码", trigger: "blur" },
@ -286,9 +260,10 @@ export default {
}, },
// //
getCheckcode() { getCheckcode() {
const data = { mobile: this.phoneForm.mobile }; let query = { mobile: this.phoneForm.mobile };
getCheckcode(data).then((response) => { getCheckcode(query).then((response) => {
if (response.code === 20000) { console.log("response", response);
if (response.code == 20000) {
this.validateBtn(); this.validateBtn();
this.$message.success("验证码发送成功"); this.$message.success("验证码发送成功");
} else { } else {
@ -301,13 +276,12 @@ export default {
this.$refs[phoneForm].validate((valid) => { this.$refs[phoneForm].validate((valid) => {
if (valid) { if (valid) {
// //
const data = this.phoneForm; let query = this.phoneForm;
checkCode(data).then((response) => { checkCode(query).then((response) => {
console.log("444"); console.log("444");
if (response.code === 20000) { if (response.code === 20000) {
if (this.activeSetp++ > 2) { this.$router.push("/userInformation");
this.activeSetp = 0;
}
this.$message.error("提交成功"); this.$message.error("提交成功");
} else { } else {
this.$message.error(response.message); this.$message.error(response.message);
@ -315,34 +289,25 @@ export default {
}); });
} }
}); });
/* 方便开发预览 */ this.$router.push("/userInformation");
if (this.activeSetp++ > 2) {
this.activeSetp = 0;
}
}, },
// //
submitUserForm(userForm) { /* submitUserForm(userForm) {
this.$refs[userForm].validate((valid) => { this.$refs[userForm].validate((valid) => {
if (valid) { if (valid) {
const data = this.userForm; const data = this.userForm;
this.$message.error("提交成功,请等待审核");
registerSave(data).then((response) => { registerSave(data).then((response) => {
if (response.code === 20000) { if (response.code === 20000) {
if (this.activeSetp++ > 2) { this.$message.error("提交成功,请等待审核");
this.activeSetp = 0;
}
this.$message.error("提交成功");
} else { } else {
this.$message.error(response.message); this.$message.error(response.message);
} }
}); });
} }
}); });
/* 方便开发预览 */ } */
if (this.activeSetp++ > 2) {
this.activeSetp = 0;
}
},
}, },
}; };
</script> </script>
@ -350,34 +315,29 @@ export default {
<style rel="stylesheet/scss" lang="scss"> <style rel="stylesheet/scss" lang="scss">
.register { .register {
display: flex; display: flex;
height: 100%;
flex-wrap: wrap;
justify-content: center; justify-content: center;
align-content: center; align-content: center;
flex-wrap: wrap; .phoneForm {
flex-direction: column; .el-form-item__label {
.box { line-height: 50px;
width: 500px;
margin: 50px 100px;
text-align: center;
.phoneForm {
.el-form-item__label {
line-height: 50px;
}
.el-input__inner {
height: 50px;
}
.bntNext {
width: 50%;
height: 50px;
}
} }
.userForm { .el-input__inner {
.el-select { height: 50px;
width: 100%; }
} .bntNext {
.bntNext { width: 50%;
width: 50%; height: 50px;
height: 50px; }
} }
.userForm {
.el-select {
width: 100%;
}
.bntNext {
width: 50%;
height: 50px;
} }
} }
} }

@ -0,0 +1,224 @@
<template>
<!-- 用户信息填写 -->
<el-card class="userInformation">
<el-form
label-width="135px"
:model="userForm"
:rules="rulesUserForm"
ref="userForm"
class="userForm"
label-position="right"
>
<h4 style="text-align: center">新用户注册表</h4>
<el-form-item label="手机号码(唯一)" prop="mobile">
<el-input
placeholder="请输入手机号码"
v-model="userForm.mobile"
></el-input>
</el-form-item>
<el-form-item label="企业名称(唯一)" prop="companyName">
<el-input
placeholder="请输入企业名称"
v-model="userForm.companyName"
></el-input>
</el-form-item>
<el-form-item label="社会信用号(唯一)" prop="creditNum">
<el-input
placeholder="请输入企业社会信用号"
v-model="userForm.creditNum"
></el-input>
</el-form-item>
<el-form-item label="企业类型" prop="bussinessStatus">
<el-select
v-model="userForm.bussinessStatus"
placeholder="请选择企业类型"
>
<el-option label="生产企业" value="1"></el-option>
<el-option label="流通企业" value="2"></el-option>
<el-option label="医疗机构" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="法人名称" prop="legalPerson">
<el-input
placeholder="请输入法人名称"
v-model="userForm.legalPerson"
></el-input>
</el-form-item>
<el-form-item label="法人身份证号(唯一) " prop="legalldCard">
<el-input
placeholder="请输入法人身份证号"
v-model="userForm.legalldCard"
></el-input>
</el-form-item>
<el-form-item label="注册地址" prop="registerAddress">
<el-input
placeholder="请输入注册地址"
v-model="userForm.registerAddress"
></el-input>
</el-form-item>
<el-form-item label="联系方式" prop="contactWay">
<el-input
placeholder="请输入联系方式"
v-model="userForm.contactWay"
></el-input>
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input placeholder="请输入邮箱" v-model="userForm.email"></el-input>
</el-form-item>
<!-- <el-form-item label="注册状态" prop="checkStatus">
<el-select disabled v-model="userForm.checkStatus">
<el-option label="未审核" value="0"></el-option>
<el-option label="已审核" value="1"></el-option>
<el-option label="未通过" value="2"></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="备注" prop="comments">
<el-input v-model="userForm.comments"></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
class="bntNext"
@click="submitUserForm('userForm')"
>提交</el-button
>
</el-form-item>
</el-form>
<div class="audit">
<el-form> </el-form>
</div>
</el-card>
</template>
<script>
export default {
name: "userInformation",
data() {
//
const validatePhone = (rule, value, callback) => {
if (/^1[3-9]\d{9}$/.test(value) === false) {
callback(new Error("请输入正确的手机号码"));
} else {
//
callback();
}
};
//
const validateEmail = (rule, value, callback) => {
if (
/^([a-zA-Z0-9]+[_|_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|_|.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(
value
) === false
) {
callback(new Error("请输入正确的邮箱地址"));
} else {
//
callback();
}
};
//
const validatePatt = (rule, value, callback) => {
if (
/^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/.test(
value
) === false
) {
callback(new Error("请输入有效的的社会统一信用号"));
} else {
//
callback();
}
};
//
const validateIdentity = (rule, value, callback) => {
if (/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value) === false) {
callback(new Error("请输入正确的身份证号码"));
} else {
//
callback();
}
};
return {
userForm: {
mobile: null, //
companyName: null, //
creditNum: null, //
bussinessStatus: null, //
legalPerson: null, //
legalldCard: null, //
registerAddress: null, //
contactWay: null, //
email: null, //
//checkStatus: null, //
comments: null, //
},
rulesUserForm: {
mobile: [
{ required: true, message: "请输入手机号码", trigger: "blur" },
{ validator: validatePhone, trigger: "blur" },
],
companyName: [
{ required: true, message: "请输入企业名称", trigger: "blur" },
],
creditNum: [
{ required: true, message: "请输入社会信用号", trigger: "blur" },
{ validator: validatePatt, trigger: "blur" },
],
bussinessStatus: [
{ required: true, message: "请选择企业类型", trigger: "change" },
],
legalPerson: [
{ required: true, message: "请输入法人名称", trigger: "blur" },
],
legalldCard: [
{ required: true, message: "请输入法人身份证号", trigger: "blur" },
{ validator: validateIdentity, trigger: "blur" },
],
registerAddress: [
{ required: true, message: "请输入注册地址", trigger: "blur" },
],
contactWay: [
{ required: true, message: "请输入联系方式", trigger: "blur" },
{ validator: validatePhone, trigger: "blur" },
],
email: [
{ required: true, message: "请输入邮箱", trigger: "blur" },
{ validator: validateEmail, trigger: "blur" },
],
checkStatus: [
{ required: true, message: "注册状态", trigger: "change" },
],
},
};
},
created() {},
methods: {
//
submitUserForm(userForm) {
console.log("222");
this.$refs[userForm].validate((valid) => {
if (valid) {
const data = this.userForm;
this.$message.error("提交成功,请等待审核");
registerSave(data).then((response) => {
if (response.code === 20000) {
this.$message.error("提交成功,请等待审核");
} else {
this.$message.error(response.message);
}
});
}
});
},
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
.userInformation {
.userForm {
margin: 100px 0 0 100px;
width: 335px;
}
}
</style>
Loading…
Cancel
Save