优化提示信息

pull/120/head
RuoYi 4 years ago committed by choqy
parent d11ffb8d0b
commit aa47e10c5c

@ -62,7 +62,7 @@ export default {
}, },
// //
dataChange(data) { dataChange(data) {
for (var item in this.columns) { for (let item in this.columns) {
const key = this.columns[item].key; const key = this.columns[item].key;
this.columns[item].visible = !data.includes(key); this.columns[item].visible = !data.includes(key);
} }

@ -20,8 +20,6 @@ export default {
path: '/redirect' + path path: '/redirect' + path
}) })
}) })
}, },
// 关闭当前tab页签打开新页签 // 关闭当前tab页签打开新页签
closeOpenPage(obj) { closeOpenPage(obj) {
@ -56,7 +54,7 @@ export default {
return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute); return store.dispatch('tagsView/delOthersViews', obj || router.currentRoute);
}, },
// 添加tab页签 // 添加tab页签
addPage(title, url) { openPage(title, url) {
var obj = { path: url, meta: { title: title } } var obj = { path: url, meta: { title: title } }
store.dispatch('tagsView/addView', obj); store.dispatch('tagsView/addView', obj);
return router.push(url); return router.push(url);

@ -1,12 +1,7 @@
<template> <template>
<div class="login"> <div class="login">
<el-form <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
ref="loginForm" <h3 class="title">若依后台管理系统</h3>
:model="loginForm"
:rules="loginRules"
class="login-form"
>
<h3 class="title">林恩低代码平台</h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
v-model="loginForm.username" v-model="loginForm.username"
@ -14,11 +9,7 @@
auto-complete="off" auto-complete="off"
placeholder="账号" placeholder="账号"
> >
<svg-icon <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
@ -29,11 +20,7 @@
placeholder="密码" placeholder="密码"
@keyup.enter.native="handleLogin" @keyup.enter.native="handleLogin"
> >
<svg-icon <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code" v-if="captchaOnOff"> <el-form-item prop="code" v-if="captchaOnOff">
@ -44,42 +31,32 @@
style="width: 63%" style="width: 63%"
@keyup.enter.native="handleLogin" @keyup.enter.native="handleLogin"
> >
<svg-icon <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input> </el-input>
<div class="login-code"> <div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img" /> <img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div> </div>
</el-form-item> </el-form-item>
<el-checkbox <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;"></el-checkbox>
v-model="loginForm.rememberMe" <el-form-item style="width:100%;">
style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-button <el-button
:loading="loading" :loading="loading"
size="medium" size="medium"
type="primary" type="primary"
style="width: 100%" style="width:100%;"
@click.native.prevent="handleLogin" @click.native.prevent="handleLogin"
> >
<span v-if="!loading"> </span> <span v-if="!loading"> </span>
<span v-else> ...</span> <span v-else> ...</span>
</el-button> </el-button>
<div style="float: right" v-if="register"> <div style="float: right;" v-if="register">
<router-link class="link-type" :to="'/register'" <router-link class="link-type" :to="'/register'">立即注册</router-link>
>立即注册</router-link
>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 底部 --> <!-- 底部 -->
<div class="el-login-footer"> <div class="el-login-footer">
<span>Copyright © 2018-2021 lynntech.cn All Rights Reserved.</span> <span>Copyright © 2018-2021 ruoyi.vip All Rights Reserved.</span>
</div> </div>
</div> </div>
</template> </template>
@ -87,45 +64,44 @@
<script> <script>
import { getCodeImg } from "@/api/login"; import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { encrypt, decrypt } from "@/utils/jsencrypt"; import { encrypt, decrypt } from '@/utils/jsencrypt'
export default { export default {
name: "Login", name: "Login",
data() { data() {
return { return {
codeUrl: "", codeUrl: "",
cookiePassword: "",
loginForm: { loginForm: {
username: "admin", username: "admin",
password: "admin123", password: "admin123",
rememberMe: false, rememberMe: false,
code: "", code: "",
uuid: "", uuid: ""
}, },
loginRules: { loginRules: {
username: [ username: [
{ required: true, trigger: "blur", message: "请输入您的账号" }, { required: true, trigger: "blur", message: "请输入您的账号" }
], ],
password: [ password: [
{ required: true, trigger: "blur", message: "请输入您的密码" }, { required: true, trigger: "blur", message: "请输入您的密码" }
], ],
code: [{ required: true, trigger: "change", message: "请输入验证码" }], code: [{ required: true, trigger: "change", message: "请输入验证码" }]
}, },
loading: false, loading: false,
// //
captchaOnOff: true, captchaOnOff: true,
// //
register: false, register: false,
redirect: undefined, redirect: undefined
}; };
}, },
watch: { watch: {
$route: { $route: {
handler: function (route) { handler: function(route) {
this.redirect = route.query && route.query.redirect; this.redirect = route.query && route.query.redirect;
}, },
immediate: true, immediate: true
}, }
}, },
created() { created() {
this.getCode(); this.getCode();
@ -133,9 +109,8 @@ export default {
}, },
methods: { methods: {
getCode() { getCode() {
getCodeImg().then((res) => { getCodeImg().then(res => {
this.captchaOnOff = this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff;
res.captchaOnOff === undefined ? true : res.captchaOnOff;
if (this.captchaOnOff) { if (this.captchaOnOff) {
this.codeUrl = "data:image/gif;base64," + res.img; this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid; this.loginForm.uuid = res.uuid;
@ -145,46 +120,38 @@ export default {
getCookie() { getCookie() {
const username = Cookies.get("username"); const username = Cookies.get("username");
const password = Cookies.get("password"); const password = Cookies.get("password");
const rememberMe = Cookies.get("rememberMe"); const rememberMe = Cookies.get('rememberMe')
this.loginForm = { this.loginForm = {
username: username === undefined ? this.loginForm.username : username, username: username === undefined ? this.loginForm.username : username,
password: password: password === undefined ? this.loginForm.password : decrypt(password),
password === undefined ? this.loginForm.password : decrypt(password), rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
}; };
}, },
handleLogin() { handleLogin() {
this.$refs.loginForm.validate((valid) => { this.$refs.loginForm.validate(valid => {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
if (this.loginForm.rememberMe) { if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
expires: 30, Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
});
Cookies.set("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else { } else {
Cookies.remove("username"); Cookies.remove("username");
Cookies.remove("password"); Cookies.remove("password");
Cookies.remove("rememberMe"); Cookies.remove('rememberMe');
} }
this.$store this.$store.dispatch("Login", this.loginForm).then(() => {
.dispatch("Login", this.loginForm) this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
.then(() => { }).catch(() => {
this.$router.push({ path: this.redirect || "/" }).catch(() => {}); this.loading = false;
}) if (this.captchaOnOff) {
.catch(() => { this.getCode();
this.loading = false; }
if (this.captchaOnOff) { });
this.getCode();
}
});
} }
}); });
}, }
}, }
}; };
</script> </script>

@ -179,8 +179,6 @@ export default {
isExpandAll: true, isExpandAll: true,
// //
refreshTable: true, refreshTable: true,
//
expand: false,
// //
queryParams: { queryParams: {
deptName: undefined, deptName: undefined,
@ -276,7 +274,7 @@ export default {
this.open = true; this.open = true;
this.title = "添加部门"; this.title = "添加部门";
listDept().then(response => { listDept().then(response => {
this.deptOptions = this.handleTree(response.data, "deptId"); this.deptOptions = this.handleTree(response.data, "deptId");
}); });
}, },
/** 展开/折叠操作 */ /** 展开/折叠操作 */
@ -296,7 +294,7 @@ export default {
this.title = "修改部门"; this.title = "修改部门";
}); });
listDeptExcludeChild(row.deptId).then(response => { listDeptExcludeChild(row.deptId).then(response => {
this.deptOptions = this.handleTree(response.data, "deptId"); this.deptOptions = this.handleTree(response.data, "deptId");
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */

@ -325,7 +325,7 @@ export default {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
this.getList(); this.getList();
}, },
// /** 返回按钮操作 */
handleClose() { handleClose() {
const obj = { path: "/system/dict" }; const obj = { path: "/system/dict" };
this.$tab.closeOpenPage(obj); this.$tab.closeOpenPage(obj);

@ -6,8 +6,8 @@
v-model="queryParams.ipaddr" v-model="queryParams.ipaddr"
placeholder="请输入登录地址" placeholder="请输入登录地址"
clearable clearable
size="small"
style="width: 240px;" style="width: 240px;"
size="small"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
@ -16,8 +16,8 @@
v-model="queryParams.userName" v-model="queryParams.userName"
placeholder="请输入用户名称" placeholder="请输入用户名称"
clearable clearable
size="small"
style="width: 240px;" style="width: 240px;"
size="small"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>

@ -78,7 +78,8 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" <el-button
size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
@ -126,8 +127,8 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24" v-if="form.menuType != 'F'">
<el-form-item v-if="form.menuType != 'F'" label="菜单图标"> <el-form-item label="菜单图标">
<el-popover <el-popover
placement="bottom-start" placement="bottom-start"
width="460" width="460"
@ -158,8 +159,8 @@
<el-input-number v-model="form.orderNum" controls-position="right" :min="0" /> <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType != 'F'">
<el-form-item v-if="form.menuType != 'F'"> <el-form-item>
<span slot="label"> <span slot="label">
<el-tooltip content="选择是外链则路由地址需要以`http(s)://`开头" placement="top"> <el-tooltip content="选择是外链则路由地址需要以`http(s)://`开头" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
@ -172,8 +173,8 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType != 'F'">
<el-form-item v-if="form.menuType != 'F'" prop="path"> <el-form-item prop="path">
<span slot="label"> <span slot="label">
<el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top"> <el-tooltip content="访问的路由地址,如:`user`,如外网地址需内链访问则以`http(s)://`开头" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
@ -194,8 +195,8 @@
<el-input v-model="form.component" placeholder="请输入组件路径" /> <el-input v-model="form.component" placeholder="请输入组件路径" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType != 'M'">
<el-form-item v-if="form.menuType != 'M'"> <el-form-item>
<el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" /> <el-input v-model="form.perms" placeholder="请输入权限标识" maxlength="100" />
<span slot="label"> <span slot="label">
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top"> <el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)" placement="top">
@ -205,8 +206,8 @@
</span> </span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType == 'C'">
<el-form-item v-if="form.menuType == 'C'"> <el-form-item>
<el-input v-model="form.query" placeholder="请输入路由参数" maxlength="255" /> <el-input v-model="form.query" placeholder="请输入路由参数" maxlength="255" />
<span slot="label"> <span slot="label">
<el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top"> <el-tooltip content='访问路由的默认传递参数,如:`{"id": 1, "name": "ry"}`' placement="top">
@ -216,8 +217,8 @@
</span> </span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType == 'C'">
<el-form-item v-if="form.menuType == 'C'"> <el-form-item>
<span slot="label"> <span slot="label">
<el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top"> <el-tooltip content="选择是则会被`keep-alive`缓存,需要匹配组件的`name`和地址保持一致" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
@ -230,8 +231,8 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType != 'F'">
<el-form-item v-if="form.menuType != 'F'"> <el-form-item>
<span slot="label"> <span slot="label">
<el-tooltip content="选择隐藏则路由将不会出现在侧边栏,但仍然可以访问" placement="top"> <el-tooltip content="选择隐藏则路由将不会出现在侧边栏,但仍然可以访问" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
@ -247,8 +248,8 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" v-if="form.menuType != 'F'">
<el-form-item v-if="form.menuType != 'F'"> <el-form-item>
<span slot="label"> <span slot="label">
<el-tooltip content="选择停用则路由将不会出现在侧边栏,也不能被访问" placement="top"> <el-tooltip content="选择停用则路由将不会出现在侧边栏,也不能被访问" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>

@ -6,8 +6,8 @@
v-model="queryParams.title" v-model="queryParams.title"
placeholder="请输入系统模块" placeholder="请输入系统模块"
clearable clearable
style="width: 240px;"
size="small" size="small"
style="width: 240px;"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
@ -16,8 +16,8 @@
v-model="queryParams.operName" v-model="queryParams.operName"
placeholder="请输入操作人员" placeholder="请输入操作人员"
clearable clearable
style="width: 240px;"
size="small" size="small"
style="width: 240px;"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>

@ -199,7 +199,7 @@
ref="menu" ref="menu"
node-key="id" node-key="id"
:check-strictly="!form.menuCheckStrictly" :check-strictly="!form.menuCheckStrictly"
empty-text="加载中,请稍" empty-text="加载中,请稍"
:props="defaultProps" :props="defaultProps"
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
@ -244,7 +244,7 @@
ref="dept" ref="dept"
node-key="id" node-key="id"
:check-strictly="!form.deptCheckStrictly" :check-strictly="!form.deptCheckStrictly"
empty-text="加载中,请稍" empty-text="加载中,请稍"
:props="defaultProps" :props="defaultProps"
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
@ -355,8 +355,7 @@ export default {
/** 查询角色列表 */ /** 查询角色列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listRole(this.addDateRange(this.queryParams, this.dateRange)).then( listRole(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
response => {
this.roleList = response.rows; this.roleList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;

@ -123,6 +123,10 @@ export default {
handleSelectUser() { handleSelectUser() {
const roleId = this.queryParams.roleId; const roleId = this.queryParams.roleId;
const userIds = this.userIds.join(","); const userIds = this.userIds.join(",");
if (userIds == "") {
this.$modal.msgError("请选择要分配的用户");
return;
}
authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => { authUserSelectAll({ roleId: roleId, userIds: userIds }).then(res => {
this.$modal.msgSuccess(res.msg); this.$modal.msgSuccess(res.msg);
if (res.code === 200) { if (res.code === 200) {

@ -206,7 +206,7 @@
</el-col> </el-col>
</el-row> </el-row>
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
@ -652,7 +652,6 @@ export default {
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download('system/user/importTemplate', { this.download('system/user/importTemplate', {
...this.queryParams
}, `user_template_${new Date().getTime()}.xlsx`) }, `user_template_${new Date().getTime()}.xlsx`)
}, },
// //

@ -29,7 +29,6 @@ export default {
} }
}; };
return { return {
test: "1test",
user: { user: {
oldPassword: undefined, oldPassword: undefined,
newPassword: undefined, newPassword: undefined,
@ -55,11 +54,9 @@ export default {
submit() { submit() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
updateUserPwd(this.user.oldPassword, this.user.newPassword).then( updateUserPwd(this.user.oldPassword, this.user.newPassword).then(response => {
response => { this.$modal.msgSuccess("修改成功");
this.$modal.msgSuccess("修改成功"); });
}
);
} }
}); });
}, },

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div> <div class="user-info-head" @click="editCropper()"><img v-bind:src="options.img" title="点击上传头像" class="img-circle img-lg" /></div>
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog()"> <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<el-row> <el-row>
<el-col :xs="24" :md="12" :style="{height: '350px'}"> <el-col :xs="24" :md="12" :style="{height: '350px'}">
<vue-cropper <vue-cropper
@ -140,7 +140,7 @@ export default {
// //
closeDialog() { closeDialog() {
this.options.img = store.getters.avatar this.options.img = store.getters.avatar
this.visible = false; this.visible = false;
} }
} }
}; };

Loading…
Cancel
Save