Commit aa44f802 authored by zhangtong5@yidian-inc.com's avatar zhangtong5@yidian-inc.com

update:参数优化

parents 9ce14e21 607f50b0
const Koa = require('koa');
const views = require('koa-views');
const serve = require('koa-static');
const koaBody = require('koa-body');
const bodyParser = require('koa-bodyparser');
const path = require('path');
const router = require('./server/router');
......@@ -12,6 +13,7 @@ const app = new Koa();
app.use(serve(path.join(__dirname, './public')));
app.use(bodyParser());
// app.use(koaBody({multipart: true}));
app.use(router.routes(), router.allowedMethods());
app.listen(config.port, () => {
......
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -19,10 +19,17 @@ const API_INTERNAL_URI = {
'production': "http://bp-test.go2yd.com"
}
const IDGEN_URI = {
'development': "https://bp-test.go2yd.com",
'test': "http://idgen-test.ini.yidian-inc.com",
'production': "http://idgen-test.ini.yidian-inc.com"
}
module.exports = {
env: env,
port: port,
LOGIN_URI: LOGIN_URI[env],
API_INTERNAL_URI: API_INTERNAL_URI[env],
PANDORA_URI: PANDORA_URI[env]
PANDORA_URI: PANDORA_URI[env],
IDGEN_URI: IDGEN_URI[env]
};
exports.KS3_CONFIG = {
AK: 'AKLTTpZx6fNBQsGSKe5chqHdXA',
SK: 'OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==',
DOMAIN: 'ks3-cn-beijing.ksyun.com',
protocol:'http',
baseUrl:'',
region: '',
bucket: '',
prefix:'kss',
// 分块上传的最小单位
chunkSize:5*1024*1024,
// 分块上传重试次数
retries:20,
currentUploadId: '',
stopFlag: false // for multipart upload
}
\ No newline at end of file
const fsPromise = require("fs/promises");
const FormData = require('form-data');
const crypto = require('crypto');
const IDGEN_URI = require('../config.js').IDGEN_URI
const Ks3Util = require('../utils/ksUtil').Ks3Util
const KS3_CONFIG = require('../constant').KS3_CONFIG
const req = require("../utils/request").httpReq;
const _get_obj_id = async (ctx, next) => {
var url = `${IDGEN_URI}/Ksy/ksyun/buildObectid`;
var opts = {
url: url,
qs: {
appid: 'merchant-b',
},
method: 'GET',
}
return await req(ctx, opts);
}
const _get_bucket = async (ctx, next) => {
var url = `${IDGEN_URI}/Ksy/ksyun/getBucket`;
var opts = {
url: url,
qs: {
appid: 'merchant-b',
},
method: 'GET',
}
// console.log(await req(ctx, opts))
return await req(ctx, opts)
}
const _get_token = async (ctx, next) => {
var url = `${IDGEN_URI}/Ksy/ksyun/getToken`;
var opts = {
url: url,
data: {
appid: 'merchant-b',
},
method: 'POST',
}
return await req(ctx, opts)
}
exports.get_obj_id = async (ctx, next) => {
ctx.body = _get_obj_id(ctx, next)
}
exports.get_bucket = async (ctx, next) => {
ctx.body = await _get_bucket(ctx, next)
}
exports.get_token = async (ctx, next) => {
ctx.body = await _get_token(ctx, next)
}
exports.get_ks3_config = async (ctx, next) => {
console.log(8888, await _get_bucket(ctx, next))
const { result: { bucket } } = JSON.parse(await _get_bucket(ctx, next))
const { result: { objectId } } = JSON.parse(await _get_obj_id(ctx, next))
console.log(888834333, bucket, objectId)
const getExpires = (seconds) => {
return Math.round(new Date().getTime() / 1000) + seconds;
};
const policy = {
"expiration": new Date(getExpires(3600) * 1000).toISOString(), //一小时后
"conditions": [
["eq", "$bucket", bucket],
["starts-with", "$acl", "public-read"],
// ["starts-with", "$key", ""],
// ["starts-with", "$name", ""], //表单中传了name字段,也需要加到policy中
// ["starts-with", "$x-kss-meta-custom-param1",""],
// ["starts-with", "$x-kss-newfilename-in-body",""],//必须只包含小写字符
// ["starts-with", "$Cache-Control",""],
// ["starts-with", "$Expires", ""],
// ["starts-with", "$Content-Disposition", ""],
// ["starts-with", "$Content-Type",""],
// ["starts-with", "$Content-Encoding",""]
]
}
const stringToSign = Ks3Util.Base64.encode(JSON.stringify(policy))
console.log('stringToSign:::', stringToSign)
// const signature = Ks3Util.b64_hmac_sha1(KS3_CONFIG.AccessKeySecret, stringToSign)
const signature = crypto.createHmac('sha1', KS3_CONFIG.SK).update(stringToSign).digest().toString('base64');
console.log("signature::::::", signature)
ctx.body = {
bucket,
objectId,
policy: stringToSign,
signature,
}
}
exports.upload_ks3_image = async (ctx, next) => {
// console.log('upload_ks3_image::::::', ctx.request.files)
const file = ctx.request.files && ctx.request.files.file;
console.log(888899, await _get_bucket(ctx, next))
const { result: { bucket } } = JSON.parse(await _get_bucket(ctx, next))
const { result: { objectId } } = JSON.parse(await _get_obj_id(ctx, next))
console.log(3334444, file.type)
const getExpires = (seconds) => {
return Math.round(new Date().getTime() / 1000) + seconds;
};
const acl = 'public-read';
const policy = {
"expiration": new Date(getExpires(3600) * 1000).toISOString(), //一小时后
"conditions": [
["eq", "$bucket", bucket],
["starts-with", "$acl", "public-read"],
]
}
const stringToSign = Ks3Util.Base64.encode(JSON.stringify(policy))
console.log('stringToSign:::', stringToSign)
const signature = Ks3Util.b64_hmac_sha1(KS3_CONFIG.SK, stringToSign)
// const reader = fs.createReadStream(file.path);
const reader = await fsPromise.readFile(file.path);
const formData = new FormData()
// formData.append('acl', acl)
// formData.append('key', objectId)
// formData.append('signature', signature)
// formData.append('KSSAccessKeyId', KS3_CONFIG.AK)
// formData.append('policy', stringToSign)
// formData.append('bucket_name', stringToSign)
formData.append('file', reader)
const attrAcl = `x-${KS3_CONFIG.prefix}-acl`;
const date = new Date().toGMTString();
console.log('!!!!!', date)
const headersForSign = {
// ...formData.getHeaders(),
// 'content-length': formData.getLengthSync(),
'x-kss-date': date,
[attrAcl]: acl
}
const headerSignature = Ks3Util.generateToken(KS3_CONFIG.SK, bucket, objectId, 'PUT', file.type, headersForSign, date)
const hmac = crypto.createHmac('sha256', KS3_CONFIG.SK);
hmac.update(headerSignature);
console.log(hmac.digest('hex'));
console.log('headerSignature::::', headerSignature)
const headers = {
...headersForSign,
'Authorization': `KSS ${KS3_CONFIG.AK}:${headerSignature}`
}
console.log('before send::::::', headers)
var opts = {
url: `http://${KS3_CONFIG.DOMAIN}/${bucket}/${objectId}`,
method: 'PUT',
headers,
data: file
}
console.log(3333333333, formData.getLengthSync());
const res = await req(ctx, opts);
console.log('sever ks3 image::::::', res)
ctx.body = res;
// const url = `http://${KS3_CONFIG.DOMAIN}/${bucket}/${objectId}`
// var xhr = new XMLHttpRequest();
// xhr.open('PUT', url, true);
// var headers = {};
// var acl = 'public-read';
// if (acl == 'private' || acl == 'public-read') {
// var attr_Acl = 'x-' + KS3_CONFIG.prefix + '-acl';
// xhr.setRequestHeader(attr_Acl, acl);
// headers[attr_Acl] = acl;
// }
// var signature = Ks3Util.generateToken(KS3_CONFIG.SK, bucket, objectId, 'PUT', file.type, headers, '');
// xhr.onreadystatechange = function() {
// if (xhr.readyState == 4) {
// if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
// cb(null);
// }else if(xhr.status === 413 || xhr.status === 415) {
// // var errMsg = Ks3.xmlToJson(xhr.responseXML)['Error']['Message'];
// // cb({"msg":errMsg});
// console.log('image::::', xhr.responseXML);
// }else {
// console.log('status: ' + xhr.status);
// cb({"msg":"request failed"});
// }
// }
// };
// // xhr.upload.addEventListener("progress", params.ProgressListener, false);
// xhr.setRequestHeader('Authorization','KSS ' + KS3_CONFIG.AK + ':' + signature );
// xhr.send(file);
}
\ No newline at end of file
......@@ -52,6 +52,8 @@ exports.getUpdate_role = async (ctx, next) => {
json: true,
body: ctx.request.body
}
console.log(opts, 'optsoptsoptsopts888888')
console.log(ctx.request.query, 'pppp')
ctx.body = await req(ctx, opts)
}
exports.getDelete_role = async (ctx, next) => {
......
const LOGIN_URI = require("../config.js").LOGIN_URI;
const PANDORA_URI = require("../config.js").PANDORA_URI;
const req = require("../utils/request").httpReq;
// exports.login = async (ctx, next) => {
// const url = `${LOGIN_URI}/api/v1/pandora/auth`;
// const opts = {
// url: url,
// method: 'POST',
// json: true,
// body : ctx.request.body
// }
// console.log("koa login:::::", ctx.request)
// ctx.body = await req(ctx, opts)
// }
exports.fetch_user = async (ctx, next) => {
const url = `${PANDORA_URI}/api/user/getuser`;
const cookie = ctx.request.header.cookie;
......
......@@ -17,7 +17,6 @@ var query = {
async get_permissions (ctx) {
// http://bp-test.ini.yidian-inc.com/merchant/authority/get_role_list?user_email=jianghaiming@126.com
const url = `${API_INTERNAL_URI}/merchant/authority/get_role_list`;
console.log(44444, ctx.request.query.email);
const { email } = ctx.request.query;
const opts = {
url,
......@@ -30,9 +29,10 @@ var query = {
ctx.body = await req(ctx, opts);
}
};
exports.query = async (ctx, next) => {
var type = ctx.params.type;
console.log("koa user::::::", type);
if (query[type]) {
try {
ctx.set("Content-Type", "application/json; charset=utf-8");
......@@ -49,3 +49,45 @@ exports.query = async (ctx, next) => {
}
};
exports.user_list = async (ctx, next) => {
const url = `${API_INTERNAL_URI}/merchant/authority/get_user_list`;
const opts = {
url: url,
method: "GET",
qs: ctx.request.query,
};
ctx.body = await req(ctx, opts);
};
exports.user_detail = async (ctx, next) => {
const url = `${API_INTERNAL_URI}/merchant/authority/get_user_info`;
const opts = {
url: url,
method: "GET",
qs: ctx.request.query,
};
ctx.body = await req(ctx, opts);
};
exports.user_edit = async (ctx, next) => {
const url = `${API_INTERNAL_URI}/merchant/authority/update_user`;
const opts = {
url: url,
method: "POST",
json: true,
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
exports.user_new = async (ctx, next) => {
const url = `${API_INTERNAL_URI}/merchant/authority/add_user_role`;
const opts = {
url: url,
method: "POST",
json: true,
body: ctx.request.body,
};
ctx.body = await req(ctx, opts);
};
......@@ -4,14 +4,20 @@ const user = require("./controllers/user");
const enterprise = require("./controllers/enterprise");
const role = require('./controllers/role')
const life = require('./controllers/life-no')
const image = require('./controllers/image')
const router = Router();
const API_VERSION = "/api/v1";
// router.post(`${API_VERSION}/login`, system.login);
router.get(`${API_VERSION}/fetch_user`, system.fetch_user);
router.get(`${API_VERSION}/user/:type`, user.query);
//角色
router.get(`${API_VERSION}/user/:type`, user.query)
router.get(`${API_VERSION}/users`, user.user_list);
router.get(`${API_VERSION}/users/detail`, user.user_detail);
router.post(`${API_VERSION}/users/edit`, user.user_edit);
router.post(`${API_VERSION}/users/new`, user.user_new);
router.post(`${API_VERSION}/merchant/authority/role_list`, role.getRole_list)
router.post(`${API_VERSION}/merchant/authority/add_role`, role.getAdd_role)
router.post(`${API_VERSION}/merchant/authority/update_role`, role.getUpdate_role)
......@@ -26,6 +32,11 @@ router.post(`${API_VERSION}/check_code`, enterprise.checkCode);
router.post(`${API_VERSION}/get_record_info`, enterprise.getRecordInfo);
router.post(`${API_VERSION}/get_log`, enterprise.getLog);
router.get(`${API_VERSION}/image/get_image_id`, image.get_obj_id)
router.get(`${API_VERSION}/image/get_bucket`, image.get_bucket)
router.get(`${API_VERSION}/image/get_token`, image.get_token)
router.post(`${API_VERSION}/image/upload_ks3_image`, image.upload_ks3_image)
router.get(`${API_VERSION}/image/get_ks3_config`, image.get_ks3_config)
//生活号
router.post(`${API_VERSION}/merchant/lifeinner/life_info`, life.get_life_info)
router.get(`${API_VERSION}/merchant/lifeinner/life_list`, life.get_life_list)
......
This diff is collapsed.
const { options } = require('less');
const request = require('request')
exports.httpReq = (ctx, opts) => {
opts.timeout = opts.timeout || 1000
return new Promise((resolve, reject) => {
// var time_start = +new Date()
// opts.qs = {...ctx.request.query, ...opts.qs};
request(opts, (err, res, body) => {
//console.info(`[Api] httpReq (${opts.url},${opts.headers && opts.headers.cookie}) spent: ${+new Date() - time_start}ms`)
if (!err) {
resolve(body)
} else {
......@@ -15,3 +19,24 @@ 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
......@@ -17,7 +17,7 @@
>
{{ item.name }}
</el-menu-item>
<el-menu-item key="usermenu" class="user-menu">
<el-menu-item key="usermenu" index="usermenu" class="user-menu">
<user></user>
</el-menu-item>
</el-menu>
......@@ -28,8 +28,6 @@
import { HEADER_CONFIG } from "@/config/pageconfig";
import User from './User.vue';
import { getModulePermissions } from '@/utils/authUtil'
const { menuItems } = HEADER_CONFIG;
export default {
......@@ -44,10 +42,12 @@ export default {
},
computed: {
menuItemsWithAuth: function () {
return this.menuItems.filter(ele => getModulePermissions().includes(ele.key))
const keys = Object.keys(this.$store.getters.subPermissions)
return this.menuItems.filter(ele => keys.includes(ele.key))
},
activeMenu: function () {
console.log(988888, this.$route.path)
return this.$route.path;
},
},
......
......@@ -13,17 +13,24 @@
</template>
<script>
export default {
props: ['data', 'totalNum'],
props: {
data: Object,
totalNum: Number,
pageSize: {
type: Number,
default: 20,
}
},
data () {
return {
currentPage: 5,
pageSize: 20
currentPage: 5
}
},
methods: {
handleSizeChange (size) {
console.log(`每页 ${size} 条`);
this.$emit('update', { pageSize: size })
this.$emit('update', { pageSize: size, })
},
handleCurrentChange (pageIndex) {
console.log(`当前页: ${pageIndex}`);
......
exports.KS3_CONST = {
AccessKeyID: 'AKLTTpZx6fNBQsGSKe5chqHdXA',
AccessKeySecret: 'OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==',
DOMAIN: 'ks3-cn-beijing.ksyun.com'
}
\ No newline at end of file
......@@ -38,7 +38,7 @@ export const PAGEMODULE_PERMISSIONNAME = {
enterprise: 'enterprise_certification_management',
lifeNo: 'life_official_account_management',
role: 'role_management',
roleAddRole: 'role_addRole',
// roleAddRole: 'role_addRole',
user: 'user_management'
}
......@@ -60,6 +60,6 @@ export const PATH_PERMISSION_NAME = {
'/enterprise/establish': 'enterprise_certification_management.create',
'/lifeNo': 'life_official_account_management',
'/roleManageRole': 'role_management',
'/roleAddRole': 'role_addRole',
// '/roleAddRole': 'role_addRole',
'/user': 'user_management'
}
\ No newline at end of file
<template>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<template #tip>
<div class="el-upload__tip">只能上传 jpg/png 文件,且不超过 500kb</div>
</template>
</el-upload>
<input type="file" id="imgFile2">
<button @click="handleclick">Put上传</button>
</template>
<script>
import { ksOssUpload } from '@/service/ks3Image'
// import { uploadImageToKs3 } from '@/service/image'
export default {
data () {
return {
fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
}
},
beforeMount() {
},
methods: {
handleclick() {
var file = document.getElementById('imgFile2').files[0];
debugger;
console.log(33334444, file);
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
const { raw } = file;
console.log('handlePreview:::', file, typeof File);
console.log(222, raw)
// uploadImageToKs3(raw)
ksOssUpload(raw)
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
// beforeRemove(file, fileList) {
// return this.$confirm(`确定移除 ${ file.name }?`);
// },
}
}
</script>
<style lang="less" scoped>
</style>
......@@ -234,14 +234,20 @@ export default {
checkIsCode: "" // 用户修改操作的验证码
};
},
computed: {
},
created () {
this.getEnterpriseList();
},
computed: {
// 使用示例: permission.get("audit") 获取是否有审核权限
permission() {
const modulePermissions = this.$store.getters.moduleSubPermissions('enterprise') || [];
console.log('Current page func-permissions:', modulePermissions);
return new Map(modulePermissions.map(ele => [ele.name, true]))
}
},
methods: {
// 获取商户认证检查信息
async getEnterpriseList () {
......
......@@ -40,39 +40,15 @@ export default {
methods: {
async login () {
const { email, password } = this.userInfo;
console.log(34333, email, password);
if (!email) {
console.error("请输入用户邮箱");
return;
}
// if (urlParams.auth && !pwdSec.value) {
// message.error("请输入二次验证码!")
// return
// }
try {
const emailAddress =
email.indexOf("@") === -1 ? email + "@yidian-inc.com" : email;
const res = await reqLogin(emailAddress, password);
console.log(111111, res);
if (!res || !res.token) return;
// const storage = window.localStorage
// storage["YD_PANDORA_auth"] = JSON.stringify(res.auth || {})
// storage["YD_PANDORA_JWT_TOKEN"] = (res.type + " " + res.token) || ''
// storage["YD_PANDORA_user"] = JSON.stringify(res.userInfo || {})
// setCookie('uid', res.userInfo && res.userInfo.id, 16)
// setCookie('YD_PANDORA_UID', res.userInfo && res.userInfo.id, 16)
// setCookie('userid', res.userInfo && res.userInfo.id, 16)
// setCookie('username', res.userInfo && res.userInfo.email, 16)
// setCookie('nickname', res.userInfo && res.userInfo.displayName, 16)
// setCookie('YD_PANDORA_JWT_TOKEN', (res.type + " " + res.token) || '', 16)
// if (urlParams.callback) {
// // window.location.href = `${callback}${callback.indexOf('?') >= 0 ? '&' : '?'}token=${res.token}`
// window.location.href = `${urlParams.callback}`
// } else {
// window.location.href = `/?tid=${toolId}`
// }
} catch (e) {
console.log(e);
// message.error("登录不成功,请检查登录信息后重试!")
......
<template>
<div class="addRole">
<el-button type="primary" @click="newAddRole">新增</el-button>
<el-button
type="primary"
v-if="permission.get('create')"
@click="newAddRole"
>新增</el-button
>
<!-- 角色列表 -->
<el-table
:data="roleDataList"
......@@ -66,15 +71,22 @@ import {
} from "../../service/role";
import { ElMessage } from 'element-plus'
export default {
name: 'KeepaddRole',
components: {
page,
roleInfo
},
computed: {
permission () {
const modulePermissions = this.$store.getters.moduleSubPermissions('role') || [];
return new Map(modulePermissions.map(ele => [ele.name, true]))
},
},
data () {
return {
parmas: {
page: 1,
page_size: 10
page_size: 20
},
user_info: {
name: "jianghaiming",
......@@ -121,8 +133,8 @@ export default {
},
getPermissionsAll () {
// this.user_info = this.$store.state.userInfo
let { name, email } = this.user_info
reqGetAll_role_list(name, email).then(res => {
let { email } = this.user_info
reqGetAll_role_list(email).then(res => {
this.permissionsAll = res
})
},
......@@ -137,7 +149,11 @@ export default {
//获取角色列表
getGetRole_list () {
let { page, page_size } = this.parmas
reqGetRole_list(page, page_size).then(res => {
let parmasRole_list = {
page,
page_size,
}
reqGetRole_list(parmasRole_list).then(res => {
this.roleDataList = res.result
this.totalNum = res.count
})
......@@ -154,8 +170,13 @@ export default {
this.checkFn()
return false
}
let role_name = this.roleName, permissions = this.currentRolePrivilege
reqGetAdd_role(role_name, permissions).then(res => {
let { email } = this.$store.state.userInfo //当前登陆人
let parmasAdd_role = {
op_cur_user: email,
role_name: this.roleName,
permissions: this.currentRolePrivilege
}
reqGetAdd_role(parmasAdd_role).then(res => {
if (res.status === "success") {
this.dialogFormVisible = false
this.getGetRole_list()
......@@ -214,10 +235,16 @@ export default {
this.checkFn()
return false
}
let { role_name, role_id, role_status } = this.role_info_detail
let { email } = this.user_info
role_name = this.roleName
reqGetUpdate_role(email, role_name, role_id, role_status, this.permissionsUpdate).then(res => {
let { role_id, role_status } = this.role_info_detail
let { email } = this.$store.state.userInfo//当前登陆人
let parmasUpdate_role = {
op_cur_user: email,
role_name: this.roleName,
role_id,
role_status,
permissions: this.permissionsUpdate
}
reqGetUpdate_role(parmasUpdate_role).then(res => {
if (res.status === "success") {
this.dialogFormVisible = false
this.edit = true
......
......@@ -52,7 +52,10 @@
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
v-if="!(scope.row.role_status == 2 || scope.row.role_status == 3)"
v-if="
!(scope.row.role_status == 2 || scope.row.role_status == 3) &&
permission.get('edit')
"
size="mini"
@click.stop="handelModify(scope.row)"
type="primary"
......@@ -60,18 +63,21 @@
>
<el-button
size="mini"
v-if="permission.get('delete')"
@click.stop="handelDelete(scope.row)"
type="warning"
>删除</el-button
>
<el-button
size="mini"
v-if="permission.get('disable')"
@click.stop="handelDisable(scope.row)"
type="danger"
>禁用</el-button
>
<el-button
size="mini"
v-if="permission.get('enable')"
@click.stop="handelEnable(scope.row)"
type="success"
>启用</el-button
......@@ -117,11 +123,17 @@ import {
getDelete_role as reqGetDelete_role
} from "../../service/role";
export default {
name: 'RoleManagement',
name: 'KeepRoleManagement',
components: {
Layout,
page,
},
computed: {
permission () {
const modulePermissions = this.$store.getters.moduleSubPermissions('role') || [];
return new Map(modulePermissions.map(ele => [ele.name, true]))
},
},
data () {
return {
searchForm: {
......@@ -135,7 +147,7 @@ export default {
},
parmas: {
page: 1,
page_size: 10
page_size: 20
},
totalNum: null,
props: {
......@@ -166,19 +178,24 @@ export default {
return statusText[row.role_status - 1]
},
toRoleDetail (row) {
// this.$store.commit('update', '0000');
this.$router.push({ name: 'RoleDetail', query: { roleId: row.role_id } });
},
getPermissionsAll () {
let { name, email } = this.user_info
reqGetAll_role_list(name, email).then(res => {
let { email } = this.user_info
reqGetAll_role_list(email).then(res => {
this.permissionsAll = res
})
},
//获取角色列表
getGetRole_list () {
let { page, page_size } = this.parmas
reqGetRole_list(page, page_size, this.searchForm.roleStatus, this.searchForm.roleName).then(res => {
let parmasRole_list = {
page,
page_size,
role_status: this.searchForm.roleStatus,
role_name: this.searchForm.roleName
}
reqGetRole_list(parmasRole_list).then(res => {
this.managementList = res.result
this.totalNum = res.count
})
......@@ -234,7 +251,7 @@ export default {
role_name,
}
this.permissionsUpdate = permissions
let { email } = this.user_info //当前用户
let { email } = this.$store.state.userInfo //当前用户
let role_status
if (type === "disable") {
role_status = 2
......@@ -290,8 +307,15 @@ export default {
this.openBounced("disable", row.role_id)
},
//编辑列表操作
getUpdate_role (op_cur_user, role_name, role_id, role_status, permissions) {
reqGetUpdate_role(op_cur_user, role_name, role_id, role_status, permissions).then(res => {
getUpdate_role (email, role_name, role_id, role_status, permissions) {
let parmasUpdate_role = {
op_cur_user: email,
role_name: role_name,
role_id,
role_status,
permissions,
}
reqGetUpdate_role(parmasUpdate_role).then(res => {
if (res.status === "success") {
this.dialogVisible = false
this.getGetRole_list()
......@@ -311,7 +335,7 @@ export default {
},
//确认修改
confirm () {
let { email } = this.user_info
let { email } = this.$store.state.userInfo
let { role_id, role_name } = this.role_info_detail
let role_status = ''
this.getUpdate_role(email, role_name, role_id, role_status, this.currentRolePrivilege)
......
......@@ -20,7 +20,7 @@
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建人账号 </template>
{{ role_info_detail.update_user_name }}
{{ role_info_detail.create_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建时间 </template>
......@@ -57,7 +57,6 @@
</template>
<script>
import { get_role_info as reqGet_role_info, getAll_role_list as reqGetAll_role_list, } from '../../service/role'
export default {
data () {
return {
......@@ -88,8 +87,8 @@ export default {
created () {
// this.user_info = this.$store.state.userInfo
this.roleId = this.$route.query.roleId
let { name, email } = this.user_info
reqGetAll_role_list(name, email).then(res => {
let { email } = this.user_info
reqGetAll_role_list(email).then(res => {
this.permissionsAll = res
})
reqGet_role_info(this.roleId).then((res) => {
......
<template>
<div class="user-container">
<el-dialog :title="mode==='edit' ? '编辑用户':'创建用户'" v-model="modalVisable">
<el-form :model="userInfo">
<el-form-item label="用户ID" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_id" size="medium" disabled></el-input>
</el-form-item>
<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=0
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" disabled></el-input>
</el-form-item>
<el-form-item label="账号" :label-width="formLabelWidth">
<el-input class="form-val" v-model="userInfo.user_email" disabled></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" disabled></el-input>
</el-form-item>
<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="请选择">
<el-option
v-for="item in roles"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth">
<!-- <el-input class="form-val">{{userInfo.is_sensitive_authority === 1 ? '是' : '否'}}</el-input> -->
<el-switch
v-model="userInfo.is_sensitive_authority"
class="form-val"
active-value=1
inactive-value=0
active-text="开启"
inactive-text="关闭"
>
</el-switch>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button>取 消</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import { getRole_list as reqGetRoles } from '@/service/role';
export default {
name: 'UserInfoEditModal',
props: {
mode: {
type: String,
default: 'edit',
},
data: Object,
// title: {
// type: String,
// default: "用户信息",
// },
visable: {
type: Boolean,
default: false
}
},
data () {
return {
formLabelWidth: '120px',
userInfo: {},
roles: null,
modalVisable: false
}
},
watch: {
data(val) {
this.userInfo = val;
},
visable(val) {
this.modalVisable = val;
}
},
beforeMount(){
this.getRoles();
},
methods: {
async getRoles() {
const roles = await reqGetRoles();
console.log(67777, roles)
},
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
<template>
<div class="user-container">
<el-dialog :title="title" v-model="modalVisable">
<el-form :model="data">
<el-form-item label="用户ID" :label-width="formLabelWidth">
<text class="form-val">{{data.user_id}}</text>
</el-form-item>
<el-form-item label="状态" :label-width="formLabelWidth">
<text class="form-val">{{data.user_status===1?'启用':'禁用'}}</text>
</el-form-item>
<el-form-item label="姓名" :label-width="formLabelWidth">
<text class="form-val">{{data.user_name}}</text>
</el-form-item>
<el-form-item label="账号" :label-width="formLabelWidth">
<text class="form-val">{{data.user_email}}</text>
</el-form-item>
<el-form-item label="手机号" :label-width="formLabelWidth">
<text class="form-val">{{data.user_mobile}}</text>
</el-form-item>
<el-form-item label="所属组织" :label-width="formLabelWidth">
<text class="form-val">{{data.organization}}</text>
</el-form-item>
<el-form-item label="添加账号人" :label-width="formLabelWidth">
<text class="form-val">{{data.create_user_name}}</text>
</el-form-item>
<el-form-item label="添加时间" :label-width="formLabelWidth">
<text class="form-val">{{data.create_time}}</text>
</el-form-item>
<el-form-item label="最后修改人账号" :label-width="formLabelWidth">
<text class="form-val">{{data.update_user_name}}</text>
</el-form-item>
<el-form-item label="最后修改时间" :label-width="formLabelWidth">
<text class="form-val">{{data.update_time}}</text>
</el-form-item>
<el-form-item label="授权角色信息" :label-width="formLabelWidth">
<text class="form-val">{{data.roles.map(ele => ele.name).join(',')}}</text>
</el-form-item>
<el-form-item label="敏感词权限" :label-width="formLabelWidth">
<text class="form-val">{{data.is_sensitive_authority === 1 ? '是' : '否'}}</text>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'UserInfoModal',
props: {
mode: {
type: String,
default: 'check',
},
data: Object,
title: {
type: String,
default: "用户信息",
},
visable: {
type: Boolean,
default: false
}
},
data () {
return {
formLabelWidth: '180px',
modalVisable: false,
}
},
watch: {
visable(val) {
this.modalVisable = val;
}
},
methods: {
},
}
</script>
<style lang="less">
.form-val {
margin-left: 20px;
}
</style>
\ No newline at end of file
......@@ -2,117 +2,242 @@
<template>
<layout>
<div class="user">
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="生活号名称/企业名称">
<el-form :inline="true" :model="pageParams" class="demo-form-inline">
<el-form-item label="用户姓名">
<el-input
class="search_life"
maxlength="15"
v-model="formInline.user"
placeholder="生活号名称/企业名称"
v-model="pageParams.user_name"
placeholder="用户姓名"
></el-input>
</el-form-item>
<el-form-item label="类型">
<el-select v-model="formInline.region" placeholder="类型">
<el-option value="shanghai"></el-option>
<el-option value="beijing"></el-option>
<el-form-item label="用户账号">
<el-input
v-model="pageParams.user_email"
placeholder="用户账号"
></el-input>
</el-form-item>
<el-form-item label="手机号">
<el-input
v-model="pageParams.user_mobile"
placeholder="手机号"
></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select v-model="pageParams.user_status" placeholder="状态">
<el-option value="1" label="启用"></el-option>
<el-option value="2" label="禁用"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSearchSubmit">查询</el-button>
<el-form-item class="func-btn">
<el-button type="primary" @click="getUserList">查询</el-button>
<el-button @click="onReset">重置</el-button>
</el-form-item>
</el-form>
<el-table
:data="tableData"
border
style="width: 100%"
@row-click="toUserDetail"
<el-table :data="renderUserList" border 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_email" label="用户账号"> </el-table-column>
<el-table-column prop="user_status" label="状态"> </el-table-column>
<el-table-column prop="user_mobile" label="手机号"> </el-table-column>
<el-table-column prop="update_time" label="最后修改日期">
</el-table-column>
<el-table-column prop="update_user_name" label="最后修改人账号">
</el-table-column>
<el-table-column fixed="right" label="操作" width="140">
<template #default="scope">
<el-button type="text" size="small" @click="checkUser(scope.row)"
>查看</el-button
>
<el-table-column prop="id" label="ID"> </el-table-column>
<el-table-column prop="name" label="用户姓名"> </el-table-column>
<el-table-column prop="address" label="用户账号"> </el-table-column>
<el-table-column prop="name" label="状态"> </el-table-column>
<el-table-column prop="date" label="手机号"> </el-table-column>
<el-table-column prop="date" label="最后修改日期"> </el-table-column>
<el-table-column prop="date" label="最后修改人账号"> </el-table-column>
<el-button @click="editUser(scope.row)" type="text" size="small"
>修改</el-button
>
<el-button
v-if="scope.row.user_status === '启用'"
type="text"
size="small"
@click="enableUser"
>禁用</el-button
>
<el-button
v-if="scope.row.user_status === '禁用'"
type="text"
size="small"
@click="disableUser"
>启用</el-button
>
</template>
</el-table-column>
</el-table>
<page :totalNum="totalNum" @update="update" />
<page
:totalNum="totalNum"
:pageSize="pageParams.size"
@update="updatePage"
/>
</div>
<user-info-modal
:data="curUserInfo"
:visable="modalVisable.info"
></user-info-modal>
<user-info-edit-modal
:data="curUserInfo"
:visable="modalVisable.edit"
:mode="curOperateMode"
@confirm="confirmEditModal"
@cancel="cancelEditModal"
></user-info-edit-modal>
</layout>
</template>
<script>
import Layout from '@/layouts'
import page from "@/components/Pagination"
import Layout from "@/layouts";
import page from "@/components/Pagination";
import UserInfoModal from './components/UserInfoModal';
import UserInfoEditModal from './components/UserInfoEditModal';
import { ElMessage } from "element-plus";
import {
getUserList as reqGetUserList,
getUserDetail as reqGetUserDetail,
editUser as reqEditUser,
createUser as reqCreateUser
} from "@/service/user";
export default {
components: {
Layout,
page
page,
UserInfoModal,
UserInfoEditModal
},
data () {
return {
params: {
pageParams: {
page: 1,
pageSize: 10
},
totalNum: 1000,
lifeList: [],
tableData: [{
id: '001',
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
id: '002',
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
id: '003',
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
id: '004',
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}],
formInline: {
user: '',
region: ''
size: 20,
user_name: "",
user_email: "",
user_mobile: "",
user_status: "",
},
totalNum: 0,
userList: [],
curUserInfo: {},
modalVisable: {
info: false,
edit: false,
},
curOperateMode: 'new'
};
},
computed: {
renderUserList () {
const statusMap = new Map([
[1, "启用"],
[2, "禁用"],
[3, "删除"],
]);
return this.userList.map((ele) => {
ele.user_status = statusMap.get(ele.user_status);
return ele;
});
},
},
beforeMount () {
this.getUserList();
},
methods: {
async getUserList () {
const { code, result } = await reqGetUserList(this.pageParams);
if (code !== 0) {
ElMessage.error("获取用户列表出错!");
return;
}
const { data, count } = result;
this.totalNum = count;
this.userList = data;
},
async setCurUserInfo (user_id) {
const { code, result } = await reqGetUserDetail({ user_id });
if (code === 0) {
this.curUserInfo = {
...result.user_info,
roles: result.role_list
}
} else {
ElMessage.error("获取用户信息出错!");
}
},
methods: {
//查询
onSearchSubmit () {
console.log(this.formInline.user, this.formInline.region, 'submit!');
async checkUser (row) {
const { user_id } = row;
await this.setCurUserInfo(user_id);
this.openModal('info')
},
async editUser (row) {
const { user_id } = row;
await this.setCurUserInfo(user_id);
// this.openModal('edit');
this.modalVisable.edit = true;
this.curOperateMode = 'edit';
},
openModal (key) {
Object.keys(this.modalVisable).forEach(ele => {
this.modalVisable[ele] = (key === ele);
});
},
confirmEditModal (userInfo) {
// this.curOperateMode
console.log('confirmEditModal:::::', userInfo);
if (this.curOperateMode === 'edit') {
reqEditUser()
} else if (this.curOperateMode === 'new') {
reqCreateUser()
}
},
cancelEditModal () {
},
//重置
onReset () {
this.formInline.user = "",
this.formInline.region = ""
},
update (obj) {
Object.assign(this.params, obj)
this.getlifeNoList(this.params)
this.pageParams = {
page: 1,
pageSize: 20,
user_name: "",
user_email: "",
user_mobile: "",
user_status: "",
};
},
toUserDetail (row) {
this.$router.push({ name: 'UserDetail', query: { userId: row.id } });
updatePage ({ page, pageSize }) {
page && (this.pageParams.page = page);
pageSize && (this.pageParams.pageSize = pageSize);
this.getUserList();
},
//获取列表数据
getlifeNoList () {
enableUser () {
}
}
}
},
};
</script>
<style lang="less" scoped>
.life-no {
margin: 30px;
.user {
padding: 50px;
.search_life {
width: 280px;
}
.func-btn {
float: right;
}
}
</style>
......@@ -18,7 +18,7 @@ export default {
data () {
return {
currentPage: 1,
page_size: 10
page_size: 20
}
},
methods: {
......
......@@ -7,8 +7,9 @@ import Establish from '@/pages/Enterprise/Establish'
import LifeNo from '../pages/Life-no/index.vue'
import LifeNoDetail from '../pages/Life-no/life-no-detail.vue'
// import User from '../pages/User/userList'
import User from '../pages/User/userList'
import UserDetail from '../pages/User/user-detail.vue'
import AddRole from '../pages/Role/add-role.vue'
import ManageRole from '../pages/Role/manage-role.vue'
import RoleDetail from '../pages/Role/role-detail.vue'
......@@ -28,6 +29,11 @@ const routes = [
name: 'Forbidden',
component: () => import(/* webpackChunkName: "enterprise" */ '@/pages/Catch/forbidden'),
},
{
path: '/demoImgUploader',
name: 'demoImgUploader',
component: () => import(/* webpackChunkName: "enterprise" */ '@/pages/DemoImageUpload'),
},
{
path: '/enterprise/certification',
name: 'Certification',
......@@ -67,6 +73,11 @@ const routes = [
component: LifeNoDetail,
},
//用户管理
{
path: '/user',
name: 'User',
component: User,
},
{
path: '/userDetail',
name: 'UserDetail',
......@@ -86,7 +97,8 @@ const routes = [
name: 'ManageRole',
component: ManageRole,
meta: {
requireAuth: true
requireAuth: true,
keepAlive: true
}
},
{
......
import axios from '../utils/request';
export async function getImgId() {
const res = await axios.get("/api/v1/image/get_image_id")
return res;
}
export async function getImgBucket() {
const res = await axios.get("/api/v1/image/get_bucket")
return res;
}
export async function getImgToken() {
const res = await axios.get("/api/v1/image/get_token")
return res;
}
export async function uploadImageToKs3(file) {
const formData = new FormData();
formData.append("file", file);
const res = await axios.post("/api/v1/image/upload_ks3_image", formData)
return res;
}
export async function getKs3Config() {
const res = await axios.get("/api/v1/image/get_ks3_config")
return res;
}
\ No newline at end of file
import { getKs3Config } from "@/service/image";
import { KS3_CONST } from "@/config/constant";
import axios from '../utils/request';
// async function getRemoteConfig() {
// const imgId = await getImgId();
// const bucket = await getImgBucket();
// return {imgId, bucket}
// }
// const protocal = window.location.protocol === 'https:' ? 'https' : 'http';
// const { imgId, bucket } = await getRemoteConfig();
export async function ksOssUpload(file) {
const {bucket, objectId, policy, signature} = await getKs3Config();
const protocal = window.location.protocol === 'https:' ? 'https' : 'http';
const uploadURL = `${protocal}://${KS3_CONST.DOMAIN}/${bucket}`;
// return new Promise((resolve, reject) => {
// CommonServer.getKsOssSign().then(res => {
// const { accessid, policy, signature } = res
const formData = new FormData()
formData.append('acl', 'public-read')
formData.append('key', objectId)
formData.append('signature', signature)
formData.append('KSSAccessKeyId', KS3_CONST.AccessKeyID)
formData.append('policy', policy)
formData.append('file', file)
const res = await axios.post(uploadURL, formData).then(res => {
console.log(66666 ,res)
// const { status } = res
// if (status === 200) {
// const data = {
// url: `${OSS_URL}/${key}`,
// type: fileType(file.name)
// }
// resolve(data)
// } else {
// reject(res)
// }
})
// .catch(err => {
// reject(err)
// })
return res;
// }).catch(err => {})
// })
}
\ No newline at end of file
import axios from '../utils/request';
// import qs from 'qs';
//角色列表
export async function getRole_list (page, page_size, role_status, role_name) {
const res = await axios.post("/api/v1/merchant/authority/role_list", {
page, page_size, role_status, role_name
})
export async function getRole_list (parmasRole_list) {
const res = await axios.post("/api/v1/merchant/authority/role_list", parmasRole_list)
return res;
}
//添加角色
export async function getAdd_role (role_name, permissions) {
const res = await axios.post("/api/v1/merchant/authority/add_role", {
role_name, permissions
})
export async function getAdd_role (parmasAdd_role) {
const res = await axios.post("/api/v1/merchant/authority/add_role", parmasAdd_role)
return res;
}
//角色编辑
export async function getUpdate_role (op_cur_user, role_name, role_id, role_status, permissions) {
const res = await axios.post("/api/v1/merchant/authority/update_role", {
op_cur_user, role_name, role_id, role_status, permissions
})
export async function getUpdate_role (parmasUpdate_role) {
const res = await axios.post("/api/v1/merchant/authority/update_role", parmasUpdate_role)
return res;
}
//角色详情
......@@ -37,9 +31,9 @@ export async function getDelete_role (role_id) {
}
//权限列表
export async function getAll_role_list (user_name, user_email) {
export async function getAll_role_list (user_email) {
const res = await axios.post("/api/v1/merchant/authority/get_role_list", {
user_name, user_email
user_email
})
return res.permissions;
}
......@@ -15,6 +15,22 @@ export async function getPermissions (email) {
console.log("fe service, getPermissions:::", email)
return await axios.get("/api/v1/user/get_permissions", { params: { email } });
}
export async function getUserList (params) {
return await axios.get("/api/v1/users", { params });
}
export async function getUserDetail (params) {
return await axios.get("/api/v1/users/detail", { params });
}
export async function editUser (data) {
return await axios.post("/api/v1/users/edit", { data });
}
export async function createUser (data) {
return await axios.post("/api/v1/users/new", { data });
}
//用户详情
export async function getUser_detail (user_id) {
const res = await axios.post(`/api/v1/merchant/authority/get_user_info`, {
......
import { createStore } from "vuex";
import { getPermissions } from '@/service/user';
import { PERMISSIONNAME_PAGEMODULE } from '../config/pageconfig'
export default createStore({
state: {
......@@ -22,5 +23,25 @@ export default createStore({
}
},
modules: {},
getters: {}
getters: {
subPermissions: state => {
const permissionCol = {};
(state.permissions || []).forEach(element => {
PERMISSIONNAME_PAGEMODULE[element.name] && (permissionCol[PERMISSIONNAME_PAGEMODULE[element.name]] = element.sub_permissions)
});
return permissionCol;
},
/**
*
* @param {*} module 模块名,可选值: enterprise, lifeNo, role, user
* @returns
*/
moduleSubPermissions: (state) => (module) => {
const permissionCol = {};
(state.permissions || []).forEach(element => {
PERMISSIONNAME_PAGEMODULE[element.name] && (permissionCol[PERMISSIONNAME_PAGEMODULE[element.name]] = element.sub_permissions)
});
return permissionCol[module];
}
}
});
// 包含权限相关的工具方法,注意要在vue的生命周期中调用这些方法,否则会有获取不到权限的问题
import store from '../store'
import { PAGEMODULE_PERMISSIONNAME, PERMISSIONNAME_PAGEMODULE, PATH_PERMISSION_NAME } from '../config/pageconfig'
import { PATH_PERMISSION_NAME } from '../config/pageconfig'
function getPermissionObj () {
// 支持到二级权限
......@@ -40,22 +40,22 @@ export function checkPathAuth (path) {
return true;
}
/**
* 获取页面子权限
* @param {*} module: 枚举值参考:PAGEMODULE_PERMISSIONNAME key
* @returns 自权限列表
*/
export function getModuleSubPermissions (module) {
const authObj = getPermissionObj();
return Object.keys(authObj[PAGEMODULE_PERMISSIONNAME[module]])
}
// /**
// * 获取页面子权限
// * @param {*} module: 枚举值参考:PAGEMODULE_PERMISSIONNAME key
// * @returns 子权限列表
// */
// export function getModuleSubPermissions(module) {
// const authObj = getPermissionObj() || {};
// return Object.keys(authObj[PAGEMODULE_PERMISSIONNAME[module]])
// }
/**
* 获取一级权限
* @returns 一级权限列表
*/
export function getModulePermissions () {
const authObj = getPermissionObj();
const modules = Object.keys(authObj).map(ele => PERMISSIONNAME_PAGEMODULE[ele])
return modules.filter(ele => !!ele)
}
\ No newline at end of file
// /**
// * 获取一级权限
// * @returns 一级权限列表
// */
// export function getModulePermissions() {
// const authObj = getPermissionObj();
// const modules = Object.keys(authObj).map(ele => PERMISSIONNAME_PAGEMODULE[ele])
// return modules.filter(ele => !!ele)
// }
......@@ -2,6 +2,7 @@
* axios封装
*/
import axios from "axios";
import store from "@/store"
// import { ElMessage } from "element-plus";
// import { APP_URI } from "../config/app.config";
/**
......@@ -29,8 +30,12 @@ export const defaultConfig = {
* default params
* @returns {}
*/
const getDefaultParams = () => { };
const getDefaultHeaders = () => { };
const getDefaultParams = () => {
return {
'op_cur_user': store.state.userInfo && store.state.userInfo.email
}
};
const getDefaultHeaders = () => {};
/**
* axios instance
......
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