Commit 4f963e12 authored by lvweichao's avatar lvweichao

update: user page

parent df991c79
...@@ -20,7 +20,6 @@ exports.getRole_list = async (ctx, next) => { ...@@ -20,7 +20,6 @@ exports.getRole_list = async (ctx, next) => {
json: true, json: true,
body: ctx.request.body body: ctx.request.body
} }
console.log('server getlist_role::::', opts)
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
exports.getAdd_role = async (ctx, next) => { exports.getAdd_role = async (ctx, next) => {
......
...@@ -11,6 +11,5 @@ exports.fetch_user = async (ctx, next) => { ...@@ -11,6 +11,5 @@ exports.fetch_user = async (ctx, next) => {
Cookie: ctx.request.header.cookie Cookie: ctx.request.header.cookie
} }
}; };
console.log("fetch_user:::::", ctx.request);
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI
const req = require('../utils/request').httpReq const req = require('../utils/request').httpReq
const controller_utils = require('./utils')
//用户详情 //用户详情
exports.getUser_detail = async (ctx, next) => { exports.getUser_detail = async (ctx, next) => {
...@@ -15,18 +16,7 @@ exports.getUser_detail = async (ctx, next) => { ...@@ -15,18 +16,7 @@ exports.getUser_detail = async (ctx, next) => {
} }
var query = { var query = {
async get_permissions (ctx) { async get_permissions (ctx) {
// http://bp-test.ini.yidian-inc.com/merchant/authority/get_role_list?user_email=jianghaiming@126.com ctx.body = await controller_utils.getUserPermission(ctx);
const url = `${API_INTERNAL_URI}/merchant/authority/get_role_list`;
const { email } = ctx.request.query;
const opts = {
url,
method: "GET",
qs: {
user_email: "jianghaiming@126.com"
// user_email: email
}
};
ctx.body = await req(ctx, opts);
} }
}; };
......
const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI
const req = require('../utils/request').httpReq
exports.getUserPermission = async (ctx) => {
const url = `${API_INTERNAL_URI}/merchant/authority/get_role_list`;
const { email, op_cur_user } = ctx.request.query;
const user = email || op_cur_user;
const opts = {
url,
method: "GET",
qs: {
user_email: "jianghaiming@126.com"
// user_email: user
}
};
return await req(ctx, opts);
}
\ No newline at end of file
const { options } = require('less');
const request = require('request') const request = require('request')
exports.httpReq = (ctx, opts) => { exports.httpReq = (ctx, opts) => {
opts.timeout = opts.timeout || 1000 opts.timeout = opts.timeout || 1000
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// var time_start = +new Date() var time_start = +new Date()
// opts.qs = {...ctx.request.query, ...opts.qs}; opts.qs = {...ctx.request.query, ...opts.qs};
request(opts, (err, res, body) => { request(opts, (err, res, body) => {
//console.info(`[Api] httpReq (${opts.url},${opts.headers && opts.headers.cookie}) spent: ${+new Date() - time_start}ms`) console.info(`[Api] httpReq (${opts.url},${opts.headers && opts.headers.cookie}, user:[${opts.qs.op_cur_user}]) spent: ${+new Date() - time_start}ms`)
if (!err) { if (!err) {
resolve(body) resolve(body)
...@@ -19,24 +18,3 @@ exports.httpReq = (ctx, opts) => { ...@@ -19,24 +18,3 @@ exports.httpReq = (ctx, opts) => {
}) })
}) })
} }
// const axios = require('axios')
// const instance = axios.create({})
// exports.httpReq = (ctx, opts) => {
// opts.timeout = opts.timeout || 1000
// return new Promise((resolve, reject) => {
// instance(opts).then((res) => {
// console.log(res);
// resolve(res.data);
// }).catch(({response}) => {
// // console.log(88888, response)
// reject(response.data.message)
// })
// })
// }
\ No newline at end of file
<template> <template>
<div class="user-container"> <div class="user-container">
<el-dialog :title="mode==='edit' ? '编辑用户':'创建用户'" v-model="modalVisable" :before-close="cancel"> <el-dialog title="编辑用户" v-model="modalVisable" :before-close="cancel">
<el-form :model="userInfo"> <el-form :model="userInfo">
<el-form-item label="用户ID" :label-width="formLabelWidth"> <el-form-item label="用户ID" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_id" size="medium" disabled></el-input> <el-input class="form-val" v-model="userInfo.user_id" size="medium" disabled></el-input>
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
<el-switch <el-switch
class="form-val" class="form-val"
v-model="userInfo.user_status" v-model="userInfo.user_status"
active-value=1 active-value='1'
inactive-value=0 inactive-value='2'
active-text="启用" active-text="启用"
inactive-text="禁用" inactive-text="禁用"
> >
...@@ -30,23 +30,21 @@ ...@@ -30,23 +30,21 @@
<el-input class="form-val" v-model="userInfo.organization" disabled></el-input> <el-input class="form-val" v-model="userInfo.organization" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="授权角色信息" :label-width="formLabelWidth"> <el-form-item label="授权角色信息" :label-width="formLabelWidth">
<!-- <el-input class="form-val" v-model="userInfo.roles"></el-input> --> <el-select v-model="userInfo.roles" multiple placeholder="请选择" class="form-val">
<el-select v-model="userInfo.roles" multiple placeholder="请选择">
<el-option <el-option
v-for="item in roles" v-for="item in roles"
:key="item.value" :key="item.role_id"
:label="item.label" :label="item.role_name"
:value="item.value"> :value="item.role_id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth"> <el-form-item label="敏感词权限" :label-width="formLabelWidth">
<!-- <el-input class="form-val">{{userInfo.is_sensitive_authority === 1 ? '是' : '否'}}</el-input> -->
<el-switch <el-switch
v-model="userInfo.is_sensitive_authority" v-model="userInfo.is_sensitive_authority"
class="form-val" class="form-val"
active-value=1 active-value='1'
inactive-value=0 inactive-value='2'
active-text="开启" active-text="开启"
inactive-text="关闭" inactive-text="关闭"
> >
...@@ -55,7 +53,7 @@ ...@@ -55,7 +53,7 @@
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button>取 消</el-button> <el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="confirm">确 定</el-button> <el-button type="primary" @click="confirm">确 定</el-button>
</span> </span>
</template> </template>
...@@ -63,20 +61,14 @@ ...@@ -63,20 +61,14 @@
</div> </div>
</template> </template>
<script> <script>
import { ElMessage } from "element-plus";
import { getRole_list as reqGetRoles } from '@/service/role'; import { getRole_list as reqGetRoles } from '@/service/role';
export default { export default {
name: 'UserInfoEditModal', name: 'UserInfoEditModal',
props: { props: {
mode: {
type: String,
default: 'edit',
},
data: Object, data: Object,
// title: {
// type: String,
// default: "用户信息",
// },
visable: { visable: {
type: Boolean, type: Boolean,
default: false default: false
...@@ -86,13 +78,16 @@ export default { ...@@ -86,13 +78,16 @@ export default {
return { return {
formLabelWidth: '120px', formLabelWidth: '120px',
userInfo: {}, userInfo: {},
roles: null, roles: [],
modalVisable: false modalVisable: false
} }
}, },
watch: { watch: {
data(val) { data(val) {
this.userInfo = val; this.userInfo = val;
this.userInfo.roles = val.roles.map(ele => ele.role_id);
this.userInfo.user_status = val.user_status.toString();
this.userInfo.is_sensitive_authority = val.is_sensitive_authority.toString();
}, },
visable(val) { visable(val) {
this.modalVisable = val; this.modalVisable = val;
...@@ -103,8 +98,12 @@ export default { ...@@ -103,8 +98,12 @@ export default {
}, },
methods: { methods: {
async getRoles() { async getRoles() {
const roles = await reqGetRoles(); const { code, result } = await reqGetRoles();
console.log(67777, roles) if (code !== 0) {
ElMessage.error("获取角色列表出错!");
return
}
this.roles = result;
}, },
confirm() { confirm() {
this.$emit('confirm', this.userInfo); this.$emit('confirm', this.userInfo);
......
<template>
<div class="user-container">
<el-dialog title="创建用户" v-model="modalVisable" :before-close="cancel">
<el-form :model="userInfo">
<el-form-item label="状态" :label-width="formLabelWidth">
<!-- <el-input class="form-val">{{data.user_status===1?'启用':'禁用'}}</el-input> -->
<el-switch
class="form-val"
v-model="userInfo.user_status"
active-value='1'
inactive-value='2'
active-text="启用"
inactive-text="禁用"
>
</el-switch>
</el-form-item>
<el-form-item label="姓名" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_name"></el-input>
</el-form-item>
<el-form-item label="邮箱" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_email"></el-input>
</el-form-item>
<el-form-item label="手机号" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_mobile"></el-input>
</el-form-item>
<el-form-item label="所属组织" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.organization"></el-input>
</el-form-item>
<el-form-item label="授权角色" :label-width="formLabelWidth">
<el-select v-model="userInfo.roles" multiple placeholder="请选择" class="form-val">
<el-option
v-for="item in roles"
:key="item.role_id"
:label="item.role_name"
:value="item.role_id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth">
<el-switch
v-model="userInfo.is_sensitive_authority"
class="form-val"
active-value='1'
inactive-value='2'
active-text="开启"
inactive-text="关闭"
>
</el-switch>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import { ElMessage } from "element-plus";
import { getRole_list as reqGetRoles } from '@/service/role';
export default {
name: 'UserInfoEditModal',
props: {
visable: {
type: Boolean,
default: false
}
},
data () {
return {
formLabelWidth: '120px',
userInfo: {
user_name: '',
user_email: '',
is_sensitive_authority: '0',
user_mobile: '',
roles: [],
user_status: '1',
organization: '',
},
roles: [],
modalVisable: false,
}
},
watch: {
data(val) {
this.userInfo = val;
this.userInfo.roles = val.roles.map(ele => ele.role_id);
},
visable(val) {
this.modalVisable = val;
}
},
beforeMount(){
this.getRoles();
},
methods: {
async getRoles() {
const { code, result } = await reqGetRoles();
if (code !== 0) {
ElMessage.error("获取角色列表出错!");
return
}
this.roles = result;
},
confirm() {
this.$emit('confirm', this.userInfo);
},
cancel() {
this.$emit('cancel');
}
},
}
</script>
<style lang="less">
.form-val {
margin-left: 20px;
width: 300px;
}
.form-val.el-input {
width: 80%;
}
</style>
\ No newline at end of file
...@@ -31,14 +31,12 @@ ...@@ -31,14 +31,12 @@
<el-form-item class="func-btn"> <el-form-item class="func-btn">
<el-button type="primary" @click="getUserList">查询</el-button> <el-button type="primary" @click="getUserList">查询</el-button>
<el-button @click="onReset">重置</el-button> <el-button @click="onReset">重置</el-button>
<el-button @click="createUser">新建用户</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table :data="renderUserList" border style="width: 100%">
:data="renderUserList" <el-table-column prop="user_id" label="用户ID" width="70">
border </el-table-column>
style="width: 100%"
>
<el-table-column prop="user_id" label="ID" width=70> </el-table-column>
<el-table-column prop="user_name" label="用户姓名"> </el-table-column> <el-table-column prop="user_name" label="用户姓名"> </el-table-column>
<el-table-column prop="user_email" label="用户账号"> </el-table-column> <el-table-column prop="user_email" label="用户账号"> </el-table-column>
<el-table-column prop="user_status" label="状态"> </el-table-column> <el-table-column prop="user_status" label="状态"> </el-table-column>
...@@ -49,10 +47,7 @@ ...@@ -49,10 +47,7 @@
</el-table-column> </el-table-column>
<el-table-column fixed="right" label="操作" width="140"> <el-table-column fixed="right" label="操作" width="140">
<template #default="scope"> <template #default="scope">
<el-button <el-button type="text" size="small" @click="checkUser(scope.row)"
type="text"
size="small"
@click="checkUser(scope.row)"
>查看</el-button >查看</el-button
> >
<el-button @click="editUser(scope.row)" type="text" size="small" <el-button @click="editUser(scope.row)" type="text" size="small"
...@@ -62,14 +57,14 @@ ...@@ -62,14 +57,14 @@
v-if="scope.row.user_status === '启用'" v-if="scope.row.user_status === '启用'"
type="text" type="text"
size="small" size="small"
@click="enableUser" @click="disableUser(scope.row)"
>禁用</el-button >禁用</el-button
> >
<el-button <el-button
v-if="scope.row.user_status === '禁用'" v-if="scope.row.user_status === '禁用'"
type="text" type="text"
size="small" size="small"
@click="disableUser" @click="enableUser(scope.row)"
>启用</el-button >启用</el-button
> >
</template> </template>
...@@ -82,22 +77,37 @@ ...@@ -82,22 +77,37 @@
/> />
</div> </div>
<user-info-modal :data="curUserInfo" :visable="modalVisable.info" @cancel="cancelEditModal('info')"></user-info-modal> <user-info-modal
<user-info-edit-modal :data="curUserInfo" :visable="modalVisable.edit" :mode="curOperateMode" @confirm="confirmEditModal" @cancel="cancelEditModal('edit')"></user-info-edit-modal> :data="curUserInfo"
:visable="modalVisable.info"
@cancel="cancelModal('info')"
></user-info-modal>
<user-info-edit-modal
:data="curUserInfo"
:visable="modalVisable.edit"
@confirm="confirmEditModal"
@cancel="cancelModal('edit')"
></user-info-edit-modal>
<user-info-new-modal
:visable="modalVisable.new"
@confirm="confirmEditModal"
@cancel="cancelModal('new')"
></user-info-new-modal>
</layout> </layout>
</template> </template>
<script> <script>
import Layout from "@/layouts"; import Layout from "@/layouts";
import page from "@/components/Pagination"; import page from "@/components/Pagination";
import UserInfoModal from './components/UserInfoModal'; import UserInfoModal from "./components/UserInfoModal";
import UserInfoEditModal from './components/UserInfoEditModal'; import UserInfoEditModal from "./components/UserInfoEditModal";
import UserInfoNewModal from "./components/UserInfoNewModal";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { import {
getUserList as reqGetUserList, getUserList as reqGetUserList,
getUserDetail as reqGetUserDetail, getUserDetail as reqGetUserDetail,
editUser as reqEditUser, editUser as reqEditUser,
createUser as reqCreateUser createUser as reqCreateUser,
} from "@/service/user"; } from "@/service/user";
export default { export default {
...@@ -105,7 +115,8 @@ export default { ...@@ -105,7 +115,8 @@ export default {
Layout, Layout,
page, page,
UserInfoModal, UserInfoModal,
UserInfoEditModal UserInfoEditModal,
UserInfoNewModal,
}, },
data() { data() {
return { return {
...@@ -123,8 +134,9 @@ export default { ...@@ -123,8 +134,9 @@ export default {
modalVisable: { modalVisable: {
info: false, info: false,
edit: false, edit: false,
new: false,
}, },
curOperateMode: 'new' curOperateMode: "new",
}; };
}, },
computed: { computed: {
...@@ -161,8 +173,8 @@ export default { ...@@ -161,8 +173,8 @@ export default {
if (code === 0) { if (code === 0) {
this.curUserInfo = { this.curUserInfo = {
...result.user_info, ...result.user_info,
roles: result.role_list roles: result.role_list,
} };
} else { } else {
ElMessage.error("获取用户信息出错!"); ElMessage.error("获取用户信息出错!");
} }
...@@ -171,7 +183,7 @@ export default { ...@@ -171,7 +183,7 @@ export default {
async checkUser(row) { async checkUser(row) {
const { user_id } = row; const { user_id } = row;
await this.setCurUserInfo(user_id); await this.setCurUserInfo(user_id);
this.openModal('info') this.openModal("info");
}, },
async editUser(row) { async editUser(row) {
...@@ -179,28 +191,69 @@ export default { ...@@ -179,28 +191,69 @@ export default {
await this.setCurUserInfo(user_id); await this.setCurUserInfo(user_id);
// this.openModal('edit'); // this.openModal('edit');
this.modalVisable.edit = true; this.modalVisable.edit = true;
this.curOperateMode = 'edit'; this.curOperateMode = "edit";
}, },
openModal(key) { openModal(key) {
Object.keys(this.modalVisable).forEach(ele => { Object.keys(this.modalVisable).forEach((ele) => {
this.modalVisable[ele] = (key === ele); this.modalVisable[ele] = key === ele;
}); });
}, },
confirmEditModal(userInfo) { async confirmEditModal(userInfo) {
// this.curOperateMode const {
console.log('confirmEditModal:::::', userInfo); user_id,
if (this.curOperateMode === 'edit') { user_name,
reqEditUser() user_email,
} else if (this.curOperateMode === 'new') { is_sensitive_authority,
reqCreateUser() user_mobile,
roles,
user_status,
organization,
} = userInfo;
let res = {};
if (this.curOperateMode === "edit") {
const editData = {
user_id,
user_name,
user_email,
is_sensitive_authority: parseInt(is_sensitive_authority),
user_mobile,
role_id: roles,
user_status: parseInt(user_status),
};
res = await reqEditUser(editData);
} else if (this.curOperateMode === "new") {
const newData = {
user_name,
user_email,
is_sensitive_authority: parseInt(is_sensitive_authority),
user_mobile,
role_id: roles,
user_status: parseInt(user_status),
organization,
};
res = await reqCreateUser(newData);
}
if (res.code === 0) {
this.cancelModal(this.curOperateMode);
ElMessage.success("更新成功!");
this.getUserList();
} else {
ElMessage.error(res.reason);
} }
}, },
cancelEditModal(name) { cancelModal(name) {
console.log(44444, name) this.modalVisable[name] = false;
this.modalVisable[name] = false },
createUser() {
this.curOperateMode = "new";
this.openModal("new");
}, },
//重置 //重置
...@@ -221,10 +274,29 @@ export default { ...@@ -221,10 +274,29 @@ export default {
this.getUserList(); this.getUserList();
}, },
enableUser() { async enableUser(row) {
const { user_id } = row;
const { code, reason } = await reqEditUser({ user_status: 1, user_id });
if (code === 0) {
ElMessage.success("启用成功!");
this.getUserList();
} else {
ElMessage.error(reason);
}
},
async disableUser(row) {
const { user_id, reason } = row;
const { code } = await reqEditUser({ user_status: 2, user_id });
if (code === 0) {
ElMessage.success("禁用成功!");
this.getUserList();
} else {
ElMessage.error(reason);
} }
}, },
},
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
......
...@@ -25,11 +25,11 @@ export async function getUserDetail (params) { ...@@ -25,11 +25,11 @@ export async function getUserDetail (params) {
} }
export async function editUser (data) { export async function editUser (data) {
return await axios.post("/api/v1/users/edit", { data }); return await axios.post("/api/v1/users/edit", data);
} }
export async function createUser (data) { export async function createUser (data) {
return await axios.post("/api/v1/users/new", { data }); return await axios.post("/api/v1/users/new", data);
} }
//用户详情 //用户详情
export async function getUser_detail (user_id) { export async function getUser_detail (user_id) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment