Commit 02471f8b authored by lvweichao's avatar lvweichao

feat: user page & ks3

parents 79ec63e3 26b4e91f
exports.KS3_CONST = { exports.KS3_CONFIG = {
AccessKeyID: 'AKLTTpZx6fNBQsGSKe5chqHdXA', AK: 'AKLTTpZx6fNBQsGSKe5chqHdXA',
AccessKeySecret: 'OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==', SK: 'OG9Bk93RUHwaH71U9K+OtWkvx44AdMheywjFlifILikvh96jNGgznJm+AyR5l4wPhw==',
DOMAIN: 'ks3-cn-beijing.ksyun.com' 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 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;
// 获取企业信息验证 // 获取企业信息列表
exports.entCheck = async ctx => { exports.auditList = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/inner/ent_check`; const url = `${API_INTERNAL_URI}/merchant/inner/audit_list`;
// const url = `http://bp-test.ini.yidian-inc.com/merchant/inner/ent_check`;
const { user_id } = ctx.request.query;
const opts = { const opts = {
url: url, url,
method: "GET", method: "POST",
qs: { json: true,
user_id body: ctx.request.body
}
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 企业信息提交 // 企业认证获取验证码
exports.entCommit = async ctx => { exports.sendCode = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/inner/ent_commit`; const url = `${API_INTERNAL_URI}/merchant/lifeinner/send_code`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
...@@ -28,21 +25,21 @@ exports.entCommit = async ctx => { ...@@ -28,21 +25,21 @@ exports.entCommit = async ctx => {
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
// 生活号检查 // 企业认证校验验证码
exports.checkLife = async ctx => { exports.checkCode = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/enterprise/check_life`; const url = `${API_INTERNAL_URI}/merchant/lifeinner/check_code`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
json: true, json: true,
body: ctx.request.body body: ctx.request.body
}; };
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts)
}; };
// 创建生活号 // 企业信息提交
exports.createLife = async ctx => { exports.entCommit = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/enterprise/create_life`; const url = `${API_INTERNAL_URI}/merchant/inner/ent_commit`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
......
const fsPromise = require("fs/promises"); const fsPromise = require("fs/promises");
const FormData = require('form-data');
const crypto = require('crypto');
const IDGEN_URI = require('../config.js').IDGEN_URI const IDGEN_URI = require('../config.js').IDGEN_URI
const Ks3Util = require('../utils/ksUtil').Ks3Util const Ks3Util = require('../utils/ksUtil').Ks3Util
const KS3_CONST = require('../constant').KS3_CONST const KS3_CONFIG = require('../constant').KS3_CONFIG
const req = require("../utils/request").httpReq; const req = require("../utils/request").httpReq;
const FormData = require('form-data');
const _get_obj_id = async (ctx, next) => { const _get_obj_id = async (ctx, next) => {
...@@ -59,8 +60,11 @@ exports.get_token = async (ctx, next) => { ...@@ -59,8 +60,11 @@ exports.get_token = async (ctx, next) => {
} }
exports.get_ks3_config = async (ctx, next) => { exports.get_ks3_config = async (ctx, next) => {
const { result: { bucket }} = await _get_bucket(ctx, next) console.log(8888, await _get_bucket(ctx, next))
const { result: { objectId }} = await _get_obj_id(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) => { const getExpires = (seconds) => {
return Math.round(new Date().getTime()/1000) + seconds; return Math.round(new Date().getTime()/1000) + seconds;
...@@ -84,8 +88,11 @@ exports.get_ks3_config = async (ctx, next) => { ...@@ -84,8 +88,11 @@ exports.get_ks3_config = async (ctx, next) => {
} }
const stringToSign = Ks3Util.Base64.encode(JSON.stringify(policy)) const stringToSign = Ks3Util.Base64.encode(JSON.stringify(policy))
console.log('stringToSign:::', stringToSign) console.log('stringToSign:::', stringToSign)
const signature = Ks3Util.b64_hmac_sha1(KS3_CONST.AccessKeySecret, 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 = { ctx.body = {
bucket, bucket,
...@@ -99,35 +106,17 @@ exports.upload_ks3_image = async (ctx, next) => { ...@@ -99,35 +106,17 @@ exports.upload_ks3_image = async (ctx, next) => {
// console.log('upload_ks3_image::::::', ctx.request.files) // console.log('upload_ks3_image::::::', ctx.request.files)
const file = ctx.request.files && ctx.request.files.file; const file = ctx.request.files && ctx.request.files.file;
// console.log(34444, file) console.log(888899, await _get_bucket(ctx, next))
// const bucketOpt = { const { result: { bucket }} = JSON.parse(await _get_bucket(ctx, next))
// url: `${IDGEN_URI}/Ksy/ksyun/getBucket`, const { result: { objectId }} = JSON.parse(await _get_obj_id(ctx, next))
// params: { console.log(3334444, file.type)
// appid: 'merchant-b',
// },
// method: 'GET',
// timeout: 8000,
// }
// const objIdOpt = {
// url: `${IDGEN_URI}/Ksy/ksyun/buildObectid`,
// params: {
// appid: 'merchant-b',
// },
// method: 'GET',
// timeout: 8000,
// }
// const { result: { bucket }} = await _get_bucket(ctx, next)
// const { result: { objectId }} = await _get_obj_id(ctx, next)
const { result: { bucket }} = await _get_bucket(ctx, next)
const { result: { objectId }} = await _get_obj_id(ctx, next)
console.log(3334444, bucket, objectId, file,)
const getExpires = (seconds) => { const getExpires = (seconds) => {
return Math.round(new Date().getTime()/1000) + seconds; return Math.round(new Date().getTime()/1000) + seconds;
}; };
const acl = 'public-read';
const policy = { const policy = {
"expiration": new Date(getExpires(3600)*1000).toISOString(), //一小时后 "expiration": new Date(getExpires(3600)*1000).toISOString(), //一小时后
"conditions": [ "conditions": [
...@@ -138,43 +127,85 @@ exports.upload_ks3_image = async (ctx, next) => { ...@@ -138,43 +127,85 @@ exports.upload_ks3_image = async (ctx, next) => {
const stringToSign = Ks3Util.Base64.encode(JSON.stringify(policy)) const stringToSign = Ks3Util.Base64.encode(JSON.stringify(policy))
console.log('stringToSign:::', stringToSign) console.log('stringToSign:::', stringToSign)
const signature = Ks3Util.b64_hmac_sha1(KS3_CONST.AccessKeySecret, stringToSign) const signature = Ks3Util.b64_hmac_sha1(KS3_CONFIG.SK, stringToSign)
// const reader = fs.createReadStream(file.path); // const reader = fs.createReadStream(file.path);
const reader = await fsPromise.readFile(file.path); const reader = await fsPromise.readFile(file.path);
const formData = new FormData() const formData = new FormData()
formData.append('acl', 'public-read') // formData.append('acl', acl)
formData.append('key', objectId) // formData.append('key', objectId)
formData.append('signature', signature) // formData.append('signature', signature)
formData.append('KSSAccessKeyId', KS3_CONST.AccessKeyID) // formData.append('KSSAccessKeyId', KS3_CONFIG.AK)
formData.append('policy', stringToSign) // formData.append('policy', stringToSign)
formData.append('bucket_name', stringToSign) // formData.append('bucket_name', stringToSign)
formData.append('file', reader) formData.append('file', reader)
// axios.post(OSS_URL, formData).then(res => {
// const { status } = res
// if (status === 200) {
// const data = {
// url: `${OSS_URL}/${key}`,
// type: fileType(file.name)
// }
// resolve(data)
// } else {
// reject(res)
// })
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 = { var opts = {
url: `http://${KS3_CONST.DOMAIN}/${bucket}`, url: `http://${KS3_CONFIG.DOMAIN}/${bucket}/${objectId}`,
method: 'POST', method: 'PUT',
headers: { headers,
// 'content-type': 'multipart/form-data' data: file
...formData.getHeaders(),
'content-length': formData.getLengthSync(),
},
data: formData
} }
console.log(3333333333, formData.getLengthSync()); console.log(3333333333, formData.getLengthSync());
const res = await req(ctx, opts); const res = await req(ctx, opts);
console.log('sever ks3 image::::::', res) console.log('sever ks3 image::::::', res)
ctx.body = 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
const LOGIN_URI = require('../config.js').LOGIN_URI const LOGIN_URI = require('../config.js').LOGIN_URI
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
exports.get_life_list = async (ctx, next) => { exports.get_life_list = async (ctx, next) => {
...@@ -11,4 +12,16 @@ exports.get_life_list = async (ctx, next) => { ...@@ -11,4 +12,16 @@ exports.get_life_list = async (ctx, next) => {
} }
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
\ No newline at end of file //生活号详情
exports.get_life_info = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/lifeinner/life_info`;
var opts = {
url: url,
method: 'POST',
json: true,
timeout: 8000,
body: ctx.request.body
}
ctx.body = await req(ctx, opts)
}
...@@ -17,11 +17,14 @@ exports.getRole_list = async (ctx, next) => { ...@@ -17,11 +17,14 @@ exports.getRole_list = async (ctx, next) => {
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: 'POST',
json: true,
body: ctx.request.body
} }
console.log('server getlist_role::::', opts)
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
exports.get_role_info = async (ctx, next) => { exports.getAdd_role = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/get_role_info`; var url = `${API_INTERNAL_URI}/merchant/authority/add_role`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: 'POST',
...@@ -30,12 +33,13 @@ exports.get_role_info = async (ctx, next) => { ...@@ -30,12 +33,13 @@ exports.get_role_info = async (ctx, next) => {
} }
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
exports.getAdd_role = async (ctx, next) => { exports.get_role_info = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/add_role`; var url = `${API_INTERNAL_URI}/merchant/authority/get_role_info`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: 'POST',
json: true, json: true,
timeout: 8000,
body: ctx.request.body body: ctx.request.body
} }
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
...@@ -45,14 +49,18 @@ exports.getUpdate_role = async (ctx, next) => { ...@@ -45,14 +49,18 @@ exports.getUpdate_role = async (ctx, next) => {
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: 'POST',
json: true,
body: ctx.request.body
} }
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
exports.getUser_detail = async (ctx, next) => { exports.getDelete_role = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/lifeinner/life_info`; var url = `${API_INTERNAL_URI}/merchant/authority/delete_role`;
var opts = { var opts = {
url: url, url: url,
method: 'POST', method: 'POST',
json: true,
body: ctx.request.body
} }
ctx.body = await req(ctx, opts) ctx.body = await req(ctx, opts)
} }
\ No newline at end of file
const LOGIN_URI = require("../config.js").LOGIN_URI;
const PANDORA_URI = require("../config.js").PANDORA_URI; const PANDORA_URI = require("../config.js").PANDORA_URI;
const req = require("../utils/request").httpReq; 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) => { exports.fetch_user = async (ctx, next) => {
const url = `${PANDORA_URI}/api/user/getuser`; const url = `${PANDORA_URI}/api/user/getuser`;
const cookie = ctx.request.header.cookie; const cookie = ctx.request.header.cookie;
......
const { API_INTERNAL_URI } = require("../config.js"); const API_INTERNAL_URI = require('../config.js').API_INTERNAL_URI
const req = require("../utils/request").httpReq; const req = require('../utils/request').httpReq
//用户详情
exports.getUser_detail = async (ctx, next) => {
var url = `${API_INTERNAL_URI}/merchant/authority/get_user_info`;
var opts = {
url: url,
method: 'POST',
json: true,
timeout: 8000,
body: ctx.request.body
}
ctx.body = await req(ctx, opts)
}
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 // http://bp-test.ini.yidian-inc.com/merchant/authority/get_role_list?user_email=jianghaiming@126.com
...@@ -38,7 +51,6 @@ exports.query = async (ctx, next) => { ...@@ -38,7 +51,6 @@ exports.query = async (ctx, next) => {
} }
}; };
exports.user_list = async (ctx, next) => { exports.user_list = async (ctx, next) => {
const url = `${API_INTERNAL_URI}/merchant/authority/get_user_list`; const url = `${API_INTERNAL_URI}/merchant/authority/get_user_list`;
const opts = { const opts = {
......
...@@ -12,10 +12,6 @@ const API_VERSION = "/api/v1"; ...@@ -12,10 +12,6 @@ const API_VERSION = "/api/v1";
// router.post(`${API_VERSION}/login`, system.login); // router.post(`${API_VERSION}/login`, system.login);
router.get(`${API_VERSION}/fetch_user`, system.fetch_user); 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}/certification`, enterprise.entCheck);
router.post(`${API_VERSION}/emterprise_commit`, enterprise.entCommit);
router.post(`${API_VERSION}/check_life`, enterprise.checkLife);
router.post(`${API_VERSION}/create_life`, enterprise.createLife);
router.get(`${API_VERSION}/users`, user.user_list); router.get(`${API_VERSION}/users`, user.user_list);
router.get(`${API_VERSION}/users/detail`, user.user_detail); router.get(`${API_VERSION}/users/detail`, user.user_detail);
...@@ -27,13 +23,22 @@ router.post(`${API_VERSION}/merchant/authority/add_role`, role.getAdd_role) ...@@ -27,13 +23,22 @@ router.post(`${API_VERSION}/merchant/authority/add_role`, role.getAdd_role)
router.post(`${API_VERSION}/merchant/authority/update_role`, role.getUpdate_role) router.post(`${API_VERSION}/merchant/authority/update_role`, role.getUpdate_role)
router.post(`${API_VERSION}/merchant/authority/get_role_list`, role.getAll_role_list) router.post(`${API_VERSION}/merchant/authority/get_role_list`, role.getAll_role_list)
router.post(`${API_VERSION}/merchant/authority/get_role_info`, role.get_role_info) router.post(`${API_VERSION}/merchant/authority/get_role_info`, role.get_role_info)
router.post(`${API_VERSION}/merchant/lifeinner/life_info`, role.getUser_detail) router.post(`${API_VERSION}/merchant/authority/delete_role`, role.getDelete_role)
router.get(`${API_VERSION}/merchant/lifeinner/life_list`, life.get_life_list) /* 企业认证 */
router.post(`${API_VERSION}/certification`, enterprise.auditList);
router.post(`${API_VERSION}/emterprise_commit`, enterprise.entCommit);
router.post(`${API_VERSION}/send_code`, enterprise.sendCode);
router.post(`${API_VERSION}/check_code`, enterprise.checkCode);
router.get(`${API_VERSION}/image/get_image_id`, image.get_obj_id) 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_bucket`, image.get_bucket)
router.get(`${API_VERSION}/image/get_token`, image.get_token) router.get(`${API_VERSION}/image/get_token`, image.get_token)
router.post(`${API_VERSION}/image/upload_ks3_image`, image.upload_ks3_image) 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.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)
//用户
router.post(`${API_VERSION}/merchant/authority/get_user_info`, user.getUser_detail)
module.exports = router; module.exports = router;
...@@ -139,6 +139,66 @@ Ks3.safe_add = function (x, y) { ...@@ -139,6 +139,66 @@ Ks3.safe_add = function (x, y) {
return (msw << 16) | (lsw & 0xFFFF); return (msw << 16) | (lsw & 0xFFFF);
} }
/**
* 产生headers
* CanonicalizedKssHeaders
*/
Ks3.generateHeaders =function(header) {
var str = '';
var arr = [];
if(header){
var prefix = 'x-kss';
for(var it in header){
// step1 : 所有`x-kss`的属性都转换为小写
if(it.indexOf(prefix) == 0){
arr.push((it.toLowerCase() +':'+header[it]));
}
}
// step2 : 根据属性名排序
arr.sort();
// step3 : 拼接起来
str = arr.join('\n');
}
return str;
}
/**
* 根据SK和请求生成Signature(用于Authorization头部)
* @param sk secrete key
* @param bucket bucket name
* @param resource ObjectKey[?subResource]
* @param http_verb PUT/GET/POST/DELETE
* @param content_type Content-Type request header
* @param headers headers of request
* @returns {*}
*/
Ks3.generateToken = function (sk, bucket, resource, http_verb, content_type, headers, time_stamp){
// Content-MD5, Content-Type, CanonicalizedKssHeaders都为空
var canonicalized_Kss_Headers = Ks3.generateHeaders(headers);
var canonicalized_Resource = '/' + bucket + '/' + resource;
if (canonicalized_Kss_Headers !== '') {
var string2Sign = http_verb + '\n' + '' + '\n' + content_type + '\n' + time_stamp + '\n' + canonicalized_Kss_Headers + '\n' + canonicalized_Resource;
} else {
var string2Sign = http_verb + '\n' + '' + '\n' + content_type + '\n' + time_stamp + '\n' + canonicalized_Resource;
}
// console.log('string2Sign::::::' + string2Sign);
// var signature = Ks3.b64_hmac_sha1(sk, string2Sign);
// console.log('signature:::::::::' + signature);
return string2Sign;
}
/*
* url endpoints for different regions
*/
Ks3.ENDPOINT = {
HANGZHOU : 'kss.ksyun.com',
AMERICA: 'ks3-us-west-1.ksyun.com',
BEIJING : 'ks3-cn-beijing.ksyun.com',
HONGKONG: 'ks3-cn-hk-1.ksyun.com',
SHANGHAI: 'ks3-cn-shanghai.ksyun.com'
};
/*基于Javascript的Base64加解密算法*/ /*基于Javascript的Base64加解密算法*/
Ks3.Base64 = { Ks3.Base64 = {
encTable :[ /*Base64编码表*/ encTable :[ /*Base64编码表*/
......
...@@ -5,10 +5,11 @@ exports.httpReq = (ctx, opts) => { ...@@ -5,10 +5,11 @@ 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}) spent: ${+new Date() - time_start}ms`)
if (!err) { if (!err) {
resolve(body) resolve(body)
} else { } else {
......
...@@ -9,7 +9,7 @@ import { fetchCurrentUser } from './service/user'; ...@@ -9,7 +9,7 @@ import { fetchCurrentUser } from './service/user';
import { redirectToLogin } from './utils/util'; import { redirectToLogin } from './utils/util';
export default { export default {
async mounted() { async mounted () {
if (this.$store.state.permissions && this.$store.status.userInfo) return if (this.$store.state.permissions && this.$store.status.userInfo) return
const { status, user } = await fetchCurrentUser(); const { status, user } = await fetchCurrentUser();
// {"status":"success","user":{"userid":"732473439","name":"吕伟朝","email":"lvweichao@yidian-inc.com","avatar":""}} // {"status":"success","user":{"userid":"732473439","name":"吕伟朝","email":"lvweichao@yidian-inc.com","avatar":""}}
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
> >
{{ item.name }} {{ item.name }}
</el-menu-item> </el-menu-item>
<el-menu-item key="usermenu" class="user-menu"> <el-menu-item key="usermenu" index="usermenu" class="user-menu">
<user></user> <user></user>
</el-menu-item> </el-menu-item>
</el-menu> </el-menu>
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
import { HEADER_CONFIG } from "@/config/pageconfig"; import { HEADER_CONFIG } from "@/config/pageconfig";
import User from './User.vue'; import User from './User.vue';
import { getModulePermissions } from '@/utils/authUtil'
const { menuItems } = HEADER_CONFIG; const { menuItems } = HEADER_CONFIG;
export default { export default {
...@@ -44,10 +42,12 @@ export default { ...@@ -44,10 +42,12 @@ export default {
}, },
computed: { computed: {
menuItemsWithAuth: function() { 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 () { activeMenu: function () {
console.log(988888, this.$route.path)
return this.$route.path; return this.$route.path;
}, },
}, },
......
ks3-js-sdk @ ea6ab311
Subproject commit ea6ab311ebfa69725e824a5cc28bd53d93681d34
import { createApp } from 'vue'; import { createApp } from "vue";
import App from './App.vue'; import App from "./App.vue";
import router from './router'; import router from "./router";
import store from './store'; import store from "./store";
import ElementPlus from 'element-plus'; import ElementPlus from "element-plus";
import 'element-plus/lib/theme-chalk/index.css'; import "element-plus/lib/theme-chalk/index.css";
import 'dayjs/locale/zh-cn'; import "dayjs/locale/zh-cn";
import locale from 'element-plus/lib/locale/lang/zh-cn'; import locale from "element-plus/lib/locale/lang/zh-cn";
import { fetchCurrentUser } from './service/user'; /* import { fetchCurrentUser } from "./service/user";
import { checkPathAuth } from './utils/authUtil'; import { checkPathAuth } from "./utils/authUtil";
import { redirectToLogin } from './utils/util'; import { redirectToLogin } from "./utils/util"; */
// 处理路由权限 // 处理路由权限
router.beforeResolve(async (to, from, next) => { /* router.beforeResolve(async (to, from, next) => {
if (to.meta.requireAuth && !store.state.permissions) { if (to.meta.requireAuth && !store.state.permissions) {
const { status, user } = await fetchCurrentUser(); const { status, user } = await fetchCurrentUser();
if (status === 'success') { if (status === 'success') {
...@@ -31,10 +31,10 @@ router.beforeResolve(async (to, from, next) => { ...@@ -31,10 +31,10 @@ router.beforeResolve(async (to, from, next) => {
} else { } else {
next() next()
} }
}) }) */
createApp(App) createApp(App)
.use(router) .use(router)
.use(store) .use(store)
.use(ElementPlus, { locale }) .use(ElementPlus, { locale })
.mount('#app'); .mount("#app");
...@@ -48,7 +48,7 @@ export default { ...@@ -48,7 +48,7 @@ export default {
console.log('handlePreview:::', file, typeof File); console.log('handlePreview:::', file, typeof File);
console.log(222, raw) console.log(222, raw)
// uploadImageToKs3(raw)
ksOssUpload(raw) ksOssUpload(raw)
}, },
handleExceed(files, fileList) { handleExceed(files, fileList) {
......
...@@ -80,6 +80,21 @@ ...@@ -80,6 +80,21 @@
ref="establish_form" ref="establish_form"
:model="messageList[0]" :model="messageList[0]"
> >
<el-form-item
label="商户类型"
prop="merchantsType"
>
<el-select v-model="messageList[0].merchantsType">
<el-option
label="个体工商户"
:value="1"
></el-option>
<el-option
label="普通企业"
:value="2"
></el-option>
</el-select>
</el-form-item>
<el-form-item <el-form-item
label="营业执照:" label="营业执照:"
ref="licenseChange" ref="licenseChange"
...@@ -275,17 +290,6 @@ ...@@ -275,17 +290,6 @@
align="center" align="center"
prop="adminId" prop="adminId"
></el-table-column> ></el-table-column>
<el-table-column
label="创建生活号"
align="center"
>
<template #default="scope">
<el-button
type="primary"
@click="onCreateLife(scope.row)"
>创建生活号</el-button>
</template>
</el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<!-- 查看详情__创建生活号表单 --> <!-- 查看详情__创建生活号表单 -->
...@@ -393,10 +397,10 @@ export default { ...@@ -393,10 +397,10 @@ export default {
return { return {
pageStatus: null, // 哪个按钮进入 pageStatus: null, // 哪个按钮进入
auditId: null, // 传入的企业id auditId: null, // 传入的企业id
// 审核/修改详情/查看详情-企业信息 // 审核/修改详情/查看详情-企业信息
messageList: [ messageList: [
{ {
merchantsType: null,
status: 1, status: 1,
id: 1221, id: 1221,
code: 112211, code: 112211,
...@@ -429,7 +433,6 @@ export default { ...@@ -429,7 +433,6 @@ export default {
], ],
// 审核-审核意见 // 审核-审核意见
opinionArea: "", opinionArea: "",
// 创建生活号表单是否弹出 // 创建生活号表单是否弹出
isDialogShow: false, isDialogShow: false,
// 生活号-生活号信息 // 生活号-生活号信息
...@@ -487,7 +490,13 @@ export default { ...@@ -487,7 +490,13 @@ export default {
validator: idcardNumberRules, validator: idcardNumberRules,
trigger: "blur" trigger: "blur"
} }
] ],
// 商户类型
merchantsType: [{
required: true,
message: "请选择商户类型",
trigger: "change"
}]
}, },
// 生活号状态 // 生活号状态
......
...@@ -6,191 +6,214 @@ ...@@ -6,191 +6,214 @@
class="setUp" class="setUp"
@click="goEstablish" @click="goEstablish"
>企业信息提交</el-button> >企业信息提交</el-button>
<div> <!-- 企业认证管理列表 -->
<el-card class="enterprise_card"> <el-card class="enterprise_card">
<!-- 企业认证筛选 --> <!-- 企业认证筛选 -->
<el-form <el-form
ref="enterpriseForm" ref="enterpriseForm"
class="enterprise_form" class="enterprise_form"
:model="enterpriseForm" :model="enterpriseForm"
inline inline
> >
<!-- 查询信息区域 --> <!-- 查询信息区域 -->
<div class="formItem"> <div class="formItem">
<el-form-item <el-form-item label="企业注册名称:">
label="企业注册名称:" <el-input v-model="enterpriseForm.name"></el-input>
prop="name" </el-form-item>
> <el-form-item label="注册码:">
<el-input v-model="enterpriseForm.name"></el-input> <el-input v-model="enterpriseForm.code"></el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label="注册码:" label="法人或经营者姓名:"
prop="code" prop="userName"
> >
<el-input v-model="enterpriseForm.code"></el-input> <el-input v-model="enterpriseForm.legal_person"></el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="审核状态:">
label="法人或经营者姓名:" <el-select
prop="userName" placeholder="请选择审核状态"
> v-model="enterpriseForm.audit_status"
<el-input v-model="enterpriseForm.userName"></el-input>
</el-form-item>
<el-form-item
label="审核状态:"
prop="statusValue"
>
<el-select
placeholder="请选择审核状态"
v-model="enterpriseForm.statusValue"
>
<el-option
v-for="item in enterpriseForm.statusOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label="提交类型:"
prop="typeValue"
> >
<el-select <el-option
v-model="enterpriseForm.typeValue" v-for="item in enterpriseForm.statusOptions"
placeholder="请选择提交类型" :key="item.value"
> :label="item.label"
<el-option :value="item.value"
v-for="item in enterpriseForm.typeOptions" ></el-option>
:key="item.value" </el-select>
:label="item.label" </el-form-item>
:value="item.value" <el-form-item label="提交类型:">
></el-option> <el-select
</el-select> v-model="enterpriseForm.data_form"
</el-form-item> placeholder="请选择提交类型"
<el-form-item
label="提交人账号:"
prop="number"
> >
<el-input <el-option
type="text" v-for="item in enterpriseForm.typeOptions"
v-model="enterpriseForm.number" :key="item.value"
></el-input> :label="item.label"
</el-form-item> :value="item.value"
</div> ></el-option>
<!-- 按钮区域 --> </el-select>
<div class="formButton"> </el-form-item>
<el-form-item> <el-form-item label="提交人账号:">
<el-button <el-input v-model="enterpriseForm.proxy_user_name"></el-input>
type="primary" </el-form-item>
class="inquire" </div>
>查询</el-button> <!-- 按钮区域 -->
</el-form-item> <div class="formButton">
<el-form-item> <el-form-item>
<el-button @click="resetForm('enterpriseForm')">重置</el-button> <el-button
</el-form-item> type="primary"
</div> class="inquire"
</el-form> @click="queryMessage"
>查询</el-button>
<!-- 展示列表 --> </el-form-item>
<el-table <el-form-item>
stripe <el-button @click="resetForm('enterpriseForm')">重置</el-button>
style="width:100%" </el-form-item>
:data="enterpriseList" </div>
border </el-form>
<!-- 展示列表 -->
<el-table
stripe
style="width:100%"
:data="enterpriseList"
border
>
<el-table-column
label="ID"
prop="enterprise_auth_record_id"
align="center"
></el-table-column>
<el-table-column
label="审核状态"
align="center"
> >
<el-table-column <template #default="scope">
label="ID" <span v-if="scope.row.audit_status === 5">编辑中</span>
prop="id" <span v-if="scope.row.audit_status === 10">身份证校验通过待平台审核</span>
align="center" <span v-if="scope.row.audit_status === 20">审核成功</span>
></el-table-column> <span v-if="scope.row.audit_status === 30">审核失败</span>
<el-table-column </template>
label="审核状态" </el-table-column>
prop="status" <el-table-column
align="center" label="企业注册名称"
></el-table-column> prop="name"
<el-table-column align="center"
label="企业注册名称" ></el-table-column>
prop="name" <el-table-column
align="center" label="注册码"
></el-table-column> prop="code"
<el-table-column align="center"
label="注册码" ></el-table-column>
prop="code" <el-table-column
align="center" label="法人或经营者姓名"
></el-table-column> prop="legal_person"
<el-table-column align="center"
label="法人或经营者姓名" ></el-table-column>
prop="userName" <el-table-column
align="center" label="提交日期"
></el-table-column> prop="audit_time"
<el-table-column align="center"
label="提交日期" ></el-table-column>
prop="date" <el-table-column
align="center" label="提交类型"
></el-table-column> align="center"
<el-table-column >
label="提交类型" <template #default="scope">
prop="type" <span v-if="scope.row.data_from === 1">生活圈c端</span>
align="center" <span v-if="scope.row.data_from === 2">销售端b端</span>
></el-table-column> <span v-if="scope.row.data_from === 3">内部代提交</span>
<el-table-column </template>
label="提交人账号" </el-table-column>
prop="number" <el-table-column
align="center" label="提交人账号"
></el-table-column> align="center"
<el-table-column prop="proxy_user_name"
label="操作" ></el-table-column>
width="280" <el-table-column
align="center" label="操作"
> width="280"
<template #default="scope"> align="center"
<el-button >
size="mini" <template #default="scope">
type="primary" <el-button
@click="goAuditPage('AUDIT', scope.row.id)" size="mini"
>审核</el-button> type="primary"
<el-button @click="goAuditPage('AUDIT', scope.row.enterprise_auth_record_id)"
size="mini" >审核</el-button>
type="success" <el-button
@click="goAuditPage('EDIT', scope.row.id)" size="mini"
>修改提交</el-button> type="success"
<el-button @click="goAuditPage('EDIT', scope.row.enterprise_auth_record_id)"
size="mini" >修改提交</el-button>
type="warning" <el-button
@click="goAuditPage('DETAIL', scope.row.id)" size="mini"
>查看详情</el-button> type="warning"
</template> @click="
</el-table-column> goAuditPage('DETAIL', scope.row.enterprise_auth_record_id)
</el-table> "
</el-card> >查看详情</el-button>
</div> </template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
@current-change="handleCurrentChange"
v-model:currentPage="currentPage"
layout="total,prev,pager,next"
:page-size="pageSize"
:total="totalCount"
></el-pagination>
</el-card>
<!-- 修改提交验证码弹框 -->
<el-dialog
title="获取验证码"
v-model="detailDialogVisible"
>
<el-input
style="width:50%"
placeholder="请输入您收到的验证码"
v-model="checkIsCode"
></el-input>
<el-button
type="primary"
style="margin-left:10px"
@click="getAuthCode"
>获取校验码</el-button>
<el-button
@click="checkAuthCode"
type="warning"
>已有验证码,点击验证</el-button>
</el-dialog>
</layout> </layout>
</template> </template>
<style lang="less" src="./index.less" scope></style> <style lang="less" src="./index.less" scope></style>
<script> <script>
import Layout from '@/layouts' import Layout from "@/layouts";
import { entCheck } from '../../../service/enterprise' import { auditList, sendCode, checkCode } from "@/service/enterprise";
export default { export default {
name: "Certification", name: "Certification",
components: { Layout }, components: { Layout },
data () { data () {
return { return {
// 表单数据 // 企业认证管理筛选
enterpriseForm: { enterpriseForm: {
name: "", name: "",
code: "", code: "",
userName: "", legal_person: "",
status: "", audit_status: null,
type: "", data_form: null,
number: "", proxy_user_name: null,
statusOptions: [ statusOptions: [
{ value: 1, label: "待审核" }, { value: 5, label: "编辑中" },
{ value: 2, label: "通过" }, { value: 10, label: "身份证校验通过待平台审核" },
{ value: 3, label: "拒绝" } { value: 20, label: "审核成功" },
{ value: 30, label: "审核失败" }
], ],
statusValue: "",
typeOptions: [ typeOptions: [
{ value: 1, label: "生活圈c端" }, { value: 1, label: "生活圈c端" },
{ value: 2, label: "销售端b端" }, { value: 2, label: "销售端b端" },
...@@ -198,35 +221,64 @@ export default { ...@@ -198,35 +221,64 @@ export default {
] ]
}, },
// 表格信息 // 企业认证管理列表
enterpriseList: [ enterpriseList: [],
{
id: 1, detailDialogVisible: false, // 跳转详情页弹窗
status: 1, currentPage: 1, // 当前页
code: 1, pageSize: 20, // 每页条数
name: "一点资讯", totalCount: 0, // 总条数
userName: "蒙文昊",
date: "2021-05-24", auditId: 0, // 要操作的企业信息id
type: 1,
number: 18147683288 checkIsCode: "" // 用户修改操作的验证码
}
]
}; };
}, },
created () { created () {
this.onEntCheck(); 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: { methods: {
// 获取商户认证检查信息 // 获取商户认证检查信息
async onEntCheck () { async getEnterpriseList () {
this.enterpriseList = []; // 重置表格
const {
name,
code,
legal_person,
audit_status,
data_form,
proxy_user_name
} = this.enterpriseForm;
const params = {
page: this.currentPage, // 当前页
limit: this.pageSize, // 每页条数
name, // 企业注册名称
code, // 注册码
legal_person, // 法人或经营者姓名
audit_status, // 审核状态
data_form, // 提交类型
proxy_user_name // 提交人账号
};
try { try {
const res = await entCheck(510232747179); const res = await auditList(params);
console.log('res:----', res); if (res.code !== 0) return this.$message.error(res.result);
} this.enterpriseList = res.result.data;
catch (error) { this.totalCount = res.result.count;
console.log('error:', error); console.log(res);
} catch (err) {
this.$message.error("发生未知错误");
console.log(err);
} }
}, },
...@@ -235,20 +287,63 @@ export default { ...@@ -235,20 +287,63 @@ export default {
this.$refs[formName].resetFields(); this.$refs[formName].resetFields();
}, },
// 跳转到企业信息提交
goEstablish () {
this.$router.push({ name: "Establish" });
},
// 跳转到审核页面 // 跳转到审核页面
goAuditPage (pageStatus, auditId) { goAuditPage (pageStatus, auditId) {
this.$router.push({ if (pageStatus === "EDIT") {
name: "Audit", console.log(auditId);
params: { this.auditId = auditId;
pageStatus, return (this.detailDialogVisible = true);
auditId } else {
this.$router.push({ name: "Audit", params: { pageStatus, auditId } });
}
},
// 获取验证码
async getAuthCode () {
console.log(this.auditId);
try {
const res = await sendCode(this.auditId);
console.log(res);
} catch (err) {
console.log(err);
}
},
// 校验验证码
async checkAuthCode () {
if (this.checkIsCode.length === 0) {
return this.$message.error("验证码不可为空");
} else {
try {
const parasm = {
enterprise_auth_record_id: this.auditId,
code: parseInt(this.checkIsCode)
};
const res = await checkCode(parasm);
console.log(res);
} catch (error) {
console.log(error);
} }
}); this.$router.push({
name: "Audit",
params: { pageStatus: "EDIT", auditId: this.auditId }
});
}
}, },
// 跳转到企业信息提交 // 换页操作
goEstablish () { handleCurrentChange (e) {
this.$router.push({ name: "Establish" }); this.currentPage = e; // 更换页码
this.getEnterpriseList(); // 加载数据
},
// 查询列表
queryMessage () {
this.getEnterpriseList(); // 加载数据
} }
} }
}; };
......
...@@ -14,21 +14,27 @@ ...@@ -14,21 +14,27 @@
ref="establishFormRef" ref="establishFormRef"
:model="establishForm" :model="establishForm"
> >
<h3>营业执照信息</h3>
<!-- 商户类型 -->
<el-form-item <el-form-item
label="商户类型" label="商户类型"
prop="merchantsType" prop="dataType"
> >
<el-select v-model="establishForm.merchantsType"> <el-select
placeholder="请选择商户类型"
v-model="establishForm.dataType"
>
<el-option <el-option
label="个体工商户" label="个体工商户"
value="1" :value="1"
></el-option> ></el-option>
<el-option <el-option
label="普通企业" label="普通企业"
value="2" :value="2"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 营业执照金山云key -->
<el-form-item <el-form-item
label="营业执照:" label="营业执照:"
ref="licenseChange" ref="licenseChange"
...@@ -49,33 +55,69 @@ ...@@ -49,33 +55,69 @@
>点击上传</el-button> >点击上传</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<!-- 企业注册名称 -->
<el-form-item <el-form-item
label="企业注册名称:" label="企业注册名称:"
prop="registeredName" prop="name"
> >
<el-input v-model.trim="establishForm.registeredName"></el-input> <el-input v-model.trim="establishForm.name"></el-input>
</el-form-item> </el-form-item>
<!-- 企业代码 -->
<el-form-item <el-form-item
label="统一社会信用代码(注册码):" label="统一社会信用代码(注册码):"
prop="registrationCode" prop="code"
>
<el-input v-model.trim="establishForm.code"></el-input>
</el-form-item>
<!-- 数据来源 -->
<el-form-item
label="数据来源:"
prop="data_from"
>
<el-select
v-model="establishForm.data_from"
placeholder="请选择数据来源"
>
<el-option
label="C端"
:value="1"
></el-option>
<el-option
label="B端"
:value="2"
></el-option>
<el-option
label="OP后台代提交"
:value="3"
></el-option>
</el-select>
</el-form-item>
<!-- =================普通企业法人/个体工商户身份认证信息========== -->
<h3>身份信息</h3>
<!-- 企业营业执照号 -->
<el-form-item
label="企业营业执照号"
prop="enterpriseCode"
> >
<el-input v-model.trim="establishForm.registrationCode"></el-input> <el-input
placeholder="请输入企业营业执照号"
v-model="establishForm.enterpriseCode"
></el-input>
</el-form-item> </el-form-item>
<!-- 身份证正面照片 -->
<el-form-item <el-form-item
label="经营者(法人)身份证照片:" label="身份证正面照"
ref="idcardPhotoChange" prop="front_img"
prop="legalPhoto"
> >
<el-upload <el-upload
action="" action=""
multiple multiple
show-file-list show-file-list
:auto-upload="false" :auto-upload="false"
:file-list="establishForm.idcardPhoto" :file-list="establishForm.licenseList"
:on-change="onIdPhoneChange" :on-change="onLicenseChange"
:on-remove="onIdPhoneRemove" :on-remove="onLicenseRemove"
> >
<el-button <el-button
size="small" size="small"
...@@ -83,20 +125,135 @@ ...@@ -83,20 +125,135 @@
>点击上传</el-button> >点击上传</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<!-- 身份证反面照片 -->
<el-form-item
label="身份证反面照"
prop="bak_img"
>
<el-upload
action=""
multiple
show-file-list
:auto-upload="false"
:file-list="establishForm.licenseList"
:on-change="onLicenseChange"
:on-remove="onLicenseRemove"
>
<el-button
size="small"
type="primary"
>点击上传</el-button>
</el-upload>
</el-form-item>
<!-- orc照片正面完整度 -->
<el-form-item <el-form-item
label="经营者(法人)姓名:" label="orc正面完整度"
prop="legalName" prop="front_completeness"
> >
<el-input v-model.trim="establishForm.legalName"></el-input> <el-input v-model="establishForm.front_completeness"></el-input>
</el-form-item> </el-form-item>
<!-- orc照片反面完整度 -->
<el-form-item
label="orc反面完整度"
prop="bak_completeness"
>
<el-input v-model="establishForm.bak_completeness"></el-input>
</el-form-item>
<!-- 身份证号 -->
<el-form-item
label="身份证号"
prop="idcard_number"
>
<el-input v-model="establishForm.idcard_number"></el-input>
</el-form-item>
<!-- 姓名 -->
<el-form-item <el-form-item
label="经营者(法人)身份证号:" label="经营者(法人)姓名"
prop="idcardNumber" prop="userName"
> >
<el-input v-model.trim="establishForm.idcardNumber"></el-input> <el-input v-model="establishForm.userName"></el-input>
</el-form-item> </el-form-item>
<!-- ====================== 非必填项 =============================== -->
<!-- 营业执照企业类型 -->
<!-- <el-form-item label="营业执照上企业类型:">
<el-input
placeholder="如:有限责任公司,个体工商户等文字描述"
v-model.trim="establishForm.type"
></el-input>
</el-form-item> -->
<!-- 企业注册地址 -->
<!-- <el-form-item label="企业注册地址:">
<el-input v-model.trim="establishForm.addr"></el-input>
</el-form-item> -->
<!-- 经营范围 -->
<!-- <el-form-item label="经营范围:">
<el-input v-model.trim="establishForm.scope"></el-input>
</el-form-item> -->
<!-- 有效期 -->
<!-- <el-form-item label="有效期:">
<el-input v-model.trim="establishForm.time"></el-input>
</el-form-item> -->
<!-- 注册资本 -->
<!-- <el-form-item label="注册资本:">
<el-input v-model.trim="establishForm.regi"></el-input>
</el-form-item> -->
<!-- 主管单位 -->
<!-- <el-form-item label="主管单位:">
<el-input v-model.trim="establishForm.organizer"></el-input>
</el-form-item> -->
<!-- 成立时间 -->
<!-- <el-form-item label="成立时间:">
<el-input v-model.trim="establishForm.date"></el-input>
</el-form-item> -->
<!-- 登记机关 -->
<!-- <el-form-item label="登记机关:">
<el-input v-model.trim="establishForm.comp"></el-input>
</el-form-item> -->
<!-- 登记号 -->
<!-- <el-form-item label="登记号:">
<el-input v-model.trim="establishForm.num"></el-input>
</el-form-item> -->
<!-- 组成形式 -->
<!-- <el-form-item label="组成形式:">
<el-input v-model.trim="establishForm.form"></el-input>
</el-form-item> -->
<!-- 经费来源 -->
<!-- <el-form-item label="经费来源:">
<el-input v-model.trim="establishForm.funding"></el-input>
</el-form-item> -->
<!-- 发证日期 -->
<!-- <el-form-item label="发证日期:">
<el-input v-model.trim="establishForm.issue_date"></el-input>
</el-form-item> -->
<!-- 生活号id -->
<!-- <el-form-item label="生活号id:">
<el-input v-model.trim="establishForm.life_account_id"></el-input>
</el-form-item> -->
<!-- 代提交人名 -->
<!-- <el-form-item label="代提交人名:">
<el-input v-model.trim="establishForm.proxy_user_name"></el-input>
</el-form-item> -->
<!-- 代提交,被提交人手机号 -->
<!-- <el-form-item label="代提交/被提交用户手机号:">
<el-input v-model.trim="establishForm.phone"></el-input>
</el-form-item> -->
<!-- 代提交标识位 -->
<!-- <el-form-item label="发证日期:">
<el-select
placeholder="是否为代提交"
v-model="establishForm.is_agent"
>
<el-option
label="代提交"
:value="1"
></el-option>
<el-option
label="非代提交"
:value="null"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item> <el-form-item>
<el-button @click="handelCancel('establishFormRef')">取消</el-button> <el-button @click="handelCancel('establishFormRef')">取消</el-button>
<el-button <el-button
...@@ -126,19 +283,19 @@ export default { ...@@ -126,19 +283,19 @@ export default {
callback(); callback();
} }
}; };
// 身份证照片校验规则 /* // 身份证照片校验规则
let idPhotoRules = (rule, value, callback) => { let idPhotoRules = (rule, value, callback) => {
if (this.establishForm.idcardPhoto.length === 0) { if (this.establishForm.idcardPhoto.length === 0) {
callback(new Error("请上传身份证照片")); callback(new Error("请上传身份证照片"));
} else { } else {
callback(); callback();
} }
}; }; */
// 身份证号校验规则 // 身份证号校验规则
let idcardNumberRules = (rule, value, callback) => { let idcardNumberRules = (rule, value, callback) => {
let IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; let IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
let IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/; let IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/;
let idNumber = this.establishForm.idcardNumber; let idNumber = this.establishForm.idcard_number;
if (idNumber.length === 0) { if (idNumber.length === 0) {
callback(new Error("身份证号不可为空")); callback(new Error("身份证号不可为空"));
} else if (!(IDRe18.test(idNumber) || IDre15.test(idNumber))) { } else if (!(IDRe18.test(idNumber) || IDre15.test(idNumber))) {
...@@ -150,13 +307,43 @@ export default { ...@@ -150,13 +307,43 @@ export default {
return { return {
// 表单输入项 // 表单输入项
establishForm: { establishForm: {
merchantsType: null, // 商户类型 user_id: null, // 用户id(!)
licenseList: [], // 营业执照 code: null, // 企业代码(!)
registeredName: "", // 注册名称 name: null, // 企业名称(!)
registrationCode: "", // 注册码 entterprise_image: null, // 金山云key(!)
idcardPhoto: [], // 身份证照片 data_from: null, // 数据来源(!)
legalName: "", // 法人姓名 dataType: null, // 企业认证类型(!)
idcardNumber: "" // 法人身份证号 type: null, // 营业执照上的企业类型
addr: null, // 企业注册地址
pers: null, // 法人
scope: null, // 经营范围
time: null, // 有效期
regi: null, // 注册资本
organizer: null, // 主管单位
date: null, // 成立时间
comp: null, // 登记机关
num: null, // 登记号,
form: null, // 组成形式
funding: null, // 经费来源
issue_date: null, // 发证日期
life_account_id: null, // 生活号id
proxy_user_name: null, // OP后台代提交人姓名
phone: null, // 代提交 被提交用户手机号
is_agent: null, // 代提交标识位
/* *********身份认证信息********* */
enterpriseCode: "", // 企业营业执照(!)
front_img: "", // 身份证正面照的金山云objectid(!)
bak_img: "", // 身份证反面照的尖山云objeid(!)
front_completeness: "", // ocr识别身份证正面照的完整度(!)
bak_completeness: "", // ocr识别身份证反面的完整度(!)
idcard_number: "", // 身份证号(!) 用户填写的
gender: "", // 性别(身份证识别的:男/女)
userName: "", // 姓名 用户填写的(!)
address: "", // 地址
nationality: "", // 民族
valid_date_start: "", // 身份证有效期开始时间
valid_date_end: "", // 身份证有效期结束时间
issued_by: "" // 签发机关
}, },
// 表单校验规则 // 表单校验规则
...@@ -166,39 +353,54 @@ export default { ...@@ -166,39 +353,54 @@ export default {
{ required: true, validator: businessRules, trigger: "change" } { required: true, validator: businessRules, trigger: "change" }
], ],
// 企业注册名称 // 企业注册名称
registeredName: [ name: [
{ required: true, message: "请输入企业注册名称", trigger: "blur" } { required: true, message: "请输入企业注册名称", trigger: "blur" }
], ],
// 注册码 // 注册码
registrationCode: [ code: [
{ {
required: true, required: true,
message: "请输入统一社会信用代码(注册码)", message: "请输入统一社会信用代码(注册码)",
trigger: "blur" trigger: "blur"
} }
], ],
// 法人照片 // 商户类型
legalPhoto: [ dataType: [
{ required: true, validator: idPhotoRules, trigger: "change" } { required: true, message: "请选择商户类型", trigger: "change" }
], ],
// 法人姓名 // 数据来源
legalName: [ data_from: [
{ { required: true, message: "请选择数据来源", trigger: "blur" }
required: true,
message: "请输入经营者(法人)姓名",
trigger: "blur"
}
], ],
// 法人身份证号 /* ****************法人/个体用户身份校验***************** */
idcardNumber: [ // 企业营业执照号
{ enterpriseCode: [
required: true, { required: true, message: "请输入企业营业执照号", trigger: "blur" }
validator: idcardNumberRules,
trigger: "blur"
}
], ],
// 商户类型 // 身份证正面照
merchantsType: [{ required: true, message: "请选择商户类型", trigger: "change" }] front_img: [
{ required: true, message: "请上传身份证正面照", trigger: "change" }
],
// 身份证反面照
bak_img: [
{ required: true, message: "请上传身份证反面照", trigger: "change" }
],
// 正面完整度
front_completeness: [
{ required: true, message: "请填写orc正面完整度", trigger: "blur" }
],
// 反面完整度
bak_completeness: [
{ required: true, message: "请填写orc反面完整度", trigger: "blur" }
],
// 身份证号
idcard_number: [
{ required: true, validator: idcardNumberRules, trigger: "blur" }
],
// 经营者/法人姓名
userName: [
{ required: true, message: "请填写经营者(法人姓名)", trigger: "blur" }
]
} }
}; };
}, },
...@@ -242,8 +444,8 @@ export default { ...@@ -242,8 +444,8 @@ export default {
console.log(valid); console.log(valid);
const query = { const query = {
user_id: 510232747179, // 用户id user_id: 510232747179, // 用户id
code: parseInt(this.establishForm.registrationCode), // 企业代码 code: parseInt(this.establishForm.code), // 企业代码
name: this.establishForm.registeredName, // 企业名称 name: this.establishForm.name, // 企业名称
type: "", // 企业类型 type: "", // 企业类型
addr: "", // 企业注册地址 addr: "", // 企业注册地址
pers: "", // 法人 pers: "", // 法人
...@@ -273,14 +475,6 @@ export default { ...@@ -273,14 +475,6 @@ export default {
this.$message.error("表单未填写完整!"); this.$message.error("表单未填写完整!");
} }
}); });
},
// 选择商户
chooseType () {
if (this.establishForm.merchantsType) {
this.$refs["merchantsTypeRef"].clearValidate();
}
console.log(this.establishForm.merchantsType);
} }
} }
}; };
......
<template>
<div class="lifeNoInfo">
<!-- 状态、生活号名称、创建时间、创建人(账号信息,昵称+账号) -->
<el-descriptions class="margin-top" title="生活号信息" :column="3" border>
<template #extra> </template>
<el-descriptions-item>
<template #label> ID </template>
00001
</el-descriptions-item>
<el-descriptions-item>
<template #label> 状态 </template>
想吃饭
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建人 </template>
张三
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建时间 </template>
2020-03-21
</el-descriptions-item>
<el-descriptions-item>
<template #label> 生活号名称 </template>
生活号名称生活号名称生活号名称
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" title="类型信息" :column="3" border>
<template #extra> </template>
<el-descriptions-item>
<template #label>职业表标签 </template>
运动员
</el-descriptions-item>
<el-descriptions-item>
<template #label> 姓名 </template>
张三
</el-descriptions-item>
<el-descriptions-item>
<template #label> 身份证号 </template>
XXXXXXXXXX
</el-descriptions-item>
<el-descriptions-item>
<template #label> 统一社会信用代码(注册码) </template>
00019
</el-descriptions-item>
<el-descriptions-item>
<template #label> 企业注册名称 </template>
不二杂货铺
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="margin-top" title="用户信息" :column="3" border>
<template #extra> </template>
<el-descriptions-item>
<template #label>管理员昵称 </template>
派大星
</el-descriptions-item>
<el-descriptions-item>
<template #label> 管理员账号 </template>
0001
</el-descriptions-item>
<el-descriptions-item>
<template #label> 管理员账号ID </template>
9203201993
</el-descriptions-item>
<el-descriptions-item>
<template #label> 子账号昵称 </template>
子账号昵称
</el-descriptions-item>
<el-descriptions-item>
<template #label> 子账号账号 </template>
0002
</el-descriptions-item>
<el-descriptions-item>
<template #label> 子账号账号ID </template>
0002ID
</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
export default {
data () {
return {
lifeNoId: this.$route.query.lifeId
}
},
created () {
console.log(this.$route.query.lifeId, this.lifeNoId, '0000')
}
}
</script>
<style lang="less" scoped>
.lifeNoInfo {
.margin-top {
margin-top: 10px;
}
}
</style>
\ No newline at end of file
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
</el-form-item> </el-form-item>
<el-form-item label="类型"> <el-form-item label="类型">
<el-select v-model="life_account.type" placeholder="类型"> <el-select v-model="life_account.type" placeholder="类型">
<el-option value="个人" label="个人"></el-option> <el-option value="1" label="个人"></el-option>
<el-option value="企业" label="企业"></el-option> <el-option value="2" label="企业"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -31,7 +31,8 @@ ...@@ -31,7 +31,8 @@
<el-table-column prop="life_account_id" label="ID"> </el-table-column> <el-table-column prop="life_account_id" label="ID"> </el-table-column>
<el-table-column prop="life_account_name" label="生活号名称"> <el-table-column prop="life_account_name" label="生活号名称">
</el-table-column> </el-table-column>
<el-table-column prop="life_account_type" label="类型"> </el-table-column> <el-table-column prop="life_account_type" label="类型">
</el-table-column>
<el-table-column prop="life_account_auth_status" label="状态"> <el-table-column prop="life_account_auth_status" label="状态">
</el-table-column> </el-table-column>
<el-table-column prop="create_time" label="创建时间"> </el-table-column> <el-table-column prop="create_time" label="创建时间"> </el-table-column>
...@@ -82,7 +83,7 @@ export default { ...@@ -82,7 +83,7 @@ export default {
page, page,
page_size, page_size,
life_account_name: name, life_account_name: name,
life_account_type: type == "个人" ? 1 : 2 life_account_type: type
} }
reqGetLifeNoList(params).then(res => { reqGetLifeNoList(params).then(res => {
this.totalNum = res.count this.totalNum = res.count
...@@ -97,6 +98,7 @@ export default { ...@@ -97,6 +98,7 @@ export default {
onReset () { onReset () {
this.life_account.name = "", this.life_account.name = "",
this.life_account.type = "" this.life_account.type = ""
this.getLifeNoListFn()
}, },
update (obj) { update (obj) {
Object.assign(this.params, obj) Object.assign(this.params, obj)
...@@ -104,7 +106,6 @@ export default { ...@@ -104,7 +106,6 @@ export default {
}, },
toLifeDetail (row) { toLifeDetail (row) {
this.$router.push({ name: 'LifeNoDetail', query: { lifeId: row.life_account_id } }); this.$router.push({ name: 'LifeNoDetail', query: { lifeId: row.life_account_id } });
console.log(row.life_account_id, 'eee去详情')
}, },
} }
} }
......
<template> <template>
<div class="life-no-detail"> <div class="life-no-detail">
<lifeNoInfo /> <el-button type="text" @click="goBack" icon="el-icon-arrow-left"
>返回</el-button
>
<el-card class="management">
<h4 class="titleInfo">生活号信息</h4>
<el-descriptions :column="3" border>
<template #extra> </template>
<el-descriptions-item>
<template #label> ID </template>
{{ life_account.life_account_id }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 状态 </template>
{{ life_account.life_account_status == 1 ? "上线" : "下线" }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建人 </template>
{{ life_account.create_user_nick_name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建时间 </template>
{{ life_account.create_time }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 生活号名称 </template>
{{ life_account.life_account_name }}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="management">
<h4 class="titleInfo">类型信息</h4>
<el-descriptions :column="3" border>
<template #extra> </template>
<el-descriptions-item>
<template #label>职业表标签 </template>
{{ personal_auth_record.occupation }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 姓名 </template>
{{ personal_auth_record.full_name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 身份证号 </template>
{{ personal_auth_record.id_card }}
</el-descriptions-item>
<div v-if="company_auth_record">
<el-descriptions-item>
<template #label> 统一社会信用代码(注册码) </template>
{{ company_auth_record.code }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 企业注册名称 </template>
{{ company_auth_record.name }}
</el-descriptions-item>
</div>
</el-descriptions>
</el-card>
<el-card class="management">
<h4 class="titleInfo">用户信息</h4>
<div class="accountRoleList">
<el-table :data="accountRoleList" border style="width: 100%">
<el-table-column prop="nick_name" label="昵称" width="180">
</el-table-column>
<el-table-column prop="mobile" label="账号" width="180">
</el-table-column>
<el-table-column :formatter="roleRangeFormat" label="管理员">
</el-table-column>
</el-table>
</div>
</el-card>
</div> </div>
</template> </template>
<script> <script>
import lifeNoInfo from './components/lifeNoInfo' import { getLife_info as reqGetLife_info } from "../../service/life-no";
export default { export default {
components: {
lifeNoInfo,
},
data () { data () {
return { return {
lifeNoInfo: {} accountRoleList: [],//用户信息
life_account: {},//生活号信息
company_auth_record: [],//企业生活号
personal_auth_record: {},//个人生活号
life_account_id: null,
}
},
created () {
this.life_account_id = this.$route.query.lifeId
reqGetLife_info(this.life_account_id).then(res => {
this.personal_auth_record = res.personal_auth_record
this.life_account = res.life_account
this.company_auth_record = res.company_auth_record
this.accountRoleList = res.accountRoleList
})
},
methods: {
roleRangeFormat (row) {
return row.role_type == 1 ? '是' : '否'
},
goBack () {
this.$router.go(-1)
} }
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.life-no-detail { .life-no-detail {
.titleInfo {
margin-top: 10px;
}
margin: 50px; margin: 50px;
.box-card { .box-card {
width: 100%; width: 100%;
} }
.accountRoleList {
margin-top: 20px;
}
.management {
margin-top: 20px;
}
} }
</style> </style>
\ No newline at end of file
...@@ -40,39 +40,15 @@ export default { ...@@ -40,39 +40,15 @@ export default {
methods: { methods: {
async login () { async login () {
const { email, password } = this.userInfo; const { email, password } = this.userInfo;
console.log(34333, email, password);
if (!email) { if (!email) {
console.error("请输入用户邮箱"); console.error("请输入用户邮箱");
return; return;
} }
// if (urlParams.auth && !pwdSec.value) {
// message.error("请输入二次验证码!")
// return
// }
try { try {
const emailAddress = const emailAddress =
email.indexOf("@") === -1 ? email + "@yidian-inc.com" : email; email.indexOf("@") === -1 ? email + "@yidian-inc.com" : email;
const res = await reqLogin(emailAddress, password); const res = await reqLogin(emailAddress, password);
console.log(111111, res);
if (!res || !res.token) return; 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) { } catch (e) {
console.log(e); console.log(e);
// message.error("登录不成功,请检查登录信息后重试!") // message.error("登录不成功,请检查登录信息后重试!")
......
...@@ -6,17 +6,18 @@ ...@@ -6,17 +6,18 @@
:data="roleDataList" :data="roleDataList"
style="width: 100%; margin-top: 10px" style="width: 100%; margin-top: 10px"
:header-cell-style="{ background: '#e1e4e5', color: '#80878f' }" :header-cell-style="{ background: '#e1e4e5', color: '#80878f' }"
border
@row-click="toRoleDetail"
> >
<el-table-column prop="role_name" label="角色名称" width="180"> <el-table-column prop="role_name" label="角色名称" width="180">
</el-table-column> </el-table-column>
<el-table-column :formatter="roleRangeFormat" label="角色范围"> <el-table-column prop="role_range" label="角色范围"> </el-table-column>
</el-table-column>
<el-table-column label="操作"> <el-table-column label="操作">
<template #default="scope"> <template #default="scope">
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
@click="handleModify(scope.$index, scope.row)" @click.stop="handleModify(scope.$index, scope.row)"
>修改</el-button >修改</el-button
> >
</template> </template>
...@@ -27,43 +28,7 @@ ...@@ -27,43 +28,7 @@
<el-form> <el-form>
<!-- 编辑 --> <!-- 编辑 -->
<div v-if="edit"> <div v-if="edit">
<!-- <roleDetail <roleDetail :role_info_detail="role_info_detail" />
v-if="role_info_detail.role_id"
:role_info_detail="role_info_detail"
/> -->
<el-form-item label="状态" :label-width="formLabelWidth" prop="pass">
<el-input
disabled
v-model="role_info_detail.role_status"
></el-input>
</el-form-item>
<el-form-item label="ID" :label-width="formLabelWidth" prop="pass">
<el-input disabled v-model="role_info_detail.role_id"></el-input>
</el-form-item>
<el-form-item label="创建人账号" :label-width="formLabelWidth">
<el-input
disabled
v-model="role_info_detail.create_user_name"
></el-input>
</el-form-item>
<el-form-item label="创建时间" :label-width="formLabelWidth">
<el-input
disabled
v-model="role_info_detail.create_time"
></el-input>
</el-form-item>
<el-form-item label="最后修改人账号" :label-width="formLabelWidth">
<el-input
disabled
v-model="role_info_detail.update_user_name"
></el-input>
</el-form-item>
<el-form-item label="最后修改时间" :label-width="formLabelWidth">
<el-input
disabled
v-model="role_info_detail.update_time"
></el-input>
</el-form-item>
</div> </div>
<!-- 新增 --> <!-- 新增 -->
<el-form-item label="角色名称" :label-width="formLabelWidth"> <el-form-item label="角色名称" :label-width="formLabelWidth">
...@@ -75,8 +40,8 @@ ...@@ -75,8 +40,8 @@
:options="permissionsAll" :options="permissionsAll"
:props="props" :props="props"
@change="parentCateChange" @change="parentCateChange"
filterable
clearable clearable
style="width: 280px"
></el-cascader> ></el-cascader>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -92,7 +57,7 @@ ...@@ -92,7 +57,7 @@
</template> </template>
<script> <script>
import page from "../components/Pagination" import page from "../components/Pagination"
//import roleDetail from './components/roleDetail' import roleDetail from './components/roleDetail'
import { import {
getRole_list as reqGetRole_list, getAdd_role as reqGetAdd_role, getRole_list as reqGetRole_list, getAdd_role as reqGetAdd_role,
getAll_role_list as reqGetAll_role_list, getAll_role_list as reqGetAll_role_list,
...@@ -103,17 +68,18 @@ import { ElMessage } from 'element-plus' ...@@ -103,17 +68,18 @@ import { ElMessage } from 'element-plus'
export default { export default {
components: { components: {
page, page,
// roleDetail roleDetail
}, },
data () { data () {
return { return {
parmas: { parmas: {
page: 1, page: 1,
page_size: 20 page_size: 10
}, },
user_info: { user_info: {
user_name: "jianghaiming", user_name: "jianghaiming",
user_email: "jianghaiming@126.com", user_email: "jianghaiming@126.com",
op_cur_user: "jianghaiming@yidian-inc.com",
}, },
roleDataList: [], roleDataList: [],
totalNum: null, totalNum: null,
...@@ -122,14 +88,14 @@ export default { ...@@ -122,14 +88,14 @@ export default {
roleName: '', roleName: '',
roleTitle: '', roleTitle: '',
props: { props: {
multiple: true,//设置为多选 multiple: true,
value: 'id', //value值和哪个值绑定 value: 'id', //value值
label: 'desc',//label值和哪个值绑定 label: 'desc',//label值
children: 'sub_permissions'//children值和哪个值绑定 children: 'sub_permissions'//children值
}, },
formLabelWidth: '120px', formLabelWidth: '120px',
selectedOptions: [189, 190],//选中权限类型 selectedOptions: [],//选中权限类型
currentRolePrivilege: [],//当前权限设置 currentRolePrivilege: [],
role_info_detail: {//详情非编辑项 role_info_detail: {//详情非编辑项
role_id: "", role_id: "",
role_name: "", role_name: "",
...@@ -146,25 +112,25 @@ export default { ...@@ -146,25 +112,25 @@ export default {
}, },
created () { created () {
this.getGetRole_list() this.getGetRole_list()
let { user_name, user_email } = this.user_info this.getPermissionsAll()
reqGetAll_role_list(user_name, user_email).then(res => {
this.permissionsAll = res
})
}, },
methods: { methods: {
roleRangeFormat (row) { toRoleDetail (row) {
let arr = [] this.$router.push({ name: 'RoleDetail', query: { roleId: row.role_id } });
for (let i in row.role_range) {
arr.push(row.role_range[i]);
}
return arr.join('/')
}, },
getPermissionsAll () {
let { user_name, user_email } = this.user_info
reqGetAll_role_list(user_name, user_email).then(res => {
this.permissionsAll = res
})
},
newAddRole () { newAddRole () {
this.dialogFormVisible = true this.dialogFormVisible = true
this.roleTitle = '新增角色' this.roleTitle = '新增角色'
this.edit = false this.edit = false
this.roleName = "" this.roleName = ""
this.selectedOptions = []
}, },
//获取角色列表 //获取角色列表
getGetRole_list () { getGetRole_list () {
...@@ -187,10 +153,11 @@ export default { ...@@ -187,10 +153,11 @@ export default {
return false return false
} }
let role_name = this.roleName, permissions = this.currentRolePrivilege let role_name = this.roleName, permissions = this.currentRolePrivilege
console.log(JSON.stringify(role_name), '1111')
console.log(JSON.stringify(permissions), '2222')
reqGetAdd_role(role_name, permissions).then(res => { reqGetAdd_role(role_name, permissions).then(res => {
console.log(res, 'resresres999') if (res.status === "success") {
this.dialogFormVisible = false
this.getGetRole_list()
}
}) })
}, },
checkFn () { checkFn () {
...@@ -202,18 +169,15 @@ export default { ...@@ -202,18 +169,15 @@ export default {
}, },
//修改 //修改
handleModify (index, row) { handleModify (index, row) {
console.log(index, row.role_id, 'indexindex') this.getRole_info_detail(row.role_id)
this.edit = true this.edit = true
this.roleTitle = '角色修改' this.roleTitle = '角色修改'
this.dialogFormVisible = true this.dialogFormVisible = true
this.getRole_info_detail(row.role_id)
}, },
//角色详情数据 //角色详情数据
getRole_info_detail (role_id) { getRole_info_detail (role_id) {
reqGet_role_info(role_id).then(res => { reqGet_role_info(role_id).then(res => {
this.roleName = res.role_name const { role_id, role_name, role_status, update_time, update_user_name, create_time, create_user_name, permissions } = res
let { permissions } = res
const { role_id, role_name, role_status, update_time, update_user_name, create_time, create_user_name } = res
this.role_info_detail = { this.role_info_detail = {
role_id, role_id,
role_name, role_name,
...@@ -223,28 +187,25 @@ export default { ...@@ -223,28 +187,25 @@ export default {
create_time, create_time,
create_user_name create_user_name
} }
this.roleName = role_name
this.permissionsUpdate = permissions this.permissionsUpdate = permissions
this.editEchoData(permissions) this.editEchoData(permissions)
}) })
}, },
//遍历回显值selectedOptions //遍历回显值selectedOptions
editEchoData (permissions) { editEchoData (permissions) {
console.log(permissions, 'permissionspermissions') let selectData = []
let parentArr = [] permissions.map(item => {
let childArr = [] let one = { id: item.id }
permissions.forEach(item => { if (item.sub_permissions) {
parentArr.push(item.sub_permissions) item.sub_permissions.map(info => {
}) let selectId = [one.id, info.id]
parentArr.forEach(element => { selectData.push(selectId)
element.forEach(val => { })
childArr.push(val.id) }
})
}) })
let selectedArr = [] this.selectedOptions = selectData
for (let i in childArr) { console.log(this.selectedOptions, '00008u989')
selectedArr.push(childArr[i]);
}
this.selectedOptions = selectedArr
}, },
//编辑角色 //编辑角色
getUpdate_role () { getUpdate_role () {
...@@ -252,9 +213,15 @@ export default { ...@@ -252,9 +213,15 @@ export default {
this.checkFn() this.checkFn()
return false return false
} }
let { role_name, role_id } = this.role_info_detail let { role_name, role_id, role_status } = this.role_info_detail
reqGetUpdate_role(role_name, role_id, this.permissionsUpdate).then(res => { let { op_cur_user } = this.user_info
console.log(res, 'esesesoo111') role_name = this.roleName
reqGetUpdate_role(op_cur_user, role_name, role_id, role_status, this.permissionsUpdate).then(res => {
if (res.status === "success") {
this.dialogFormVisible = false
this.edit = true
this.getGetRole_list()
}
}) })
}, },
//确定 //确定
...@@ -266,6 +233,7 @@ export default { ...@@ -266,6 +233,7 @@ export default {
} }
}, },
parentCateChange (id) { parentCateChange (id) {
console.log(id, '000')
this.getSelectedOptions(id) this.getSelectedOptions(id)
}, },
getSelectedOptions (selectedOptions) { getSelectedOptions (selectedOptions) {
......
<template> <template>
<div> <div>
<el-form-item label="状态" :label-width="formLabelWidth" prop="pass"> <el-form-item label="状态" :label-width="formLabelWidth" prop="pass">
<el-input disabled v-model="loaclRole_info.role_status"></el-input> <el-input disabled v-model="role_status"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="ID" :label-width="formLabelWidth" prop="pass"> <el-form-item label="ID" :label-width="formLabelWidth" prop="pass">
<el-input disabled v-model="loaclRole_info.role_id"></el-input> <el-input disabled v-model="loaclRole_info.role_id"></el-input>
...@@ -23,14 +23,18 @@ ...@@ -23,14 +23,18 @@
<script> <script>
export default { export default {
props: ["role_info_detail"], props: ["role_info_detail"],
watch: {
role_info_detail (val) {
this.loaclRole_info = val
this.role_status = val.role_status == 1 ? '正常' : val.role_status == 2 ? '禁用' : '删除'
}
},
data () { data () {
return { return {
formLabelWidth: "120px", formLabelWidth: "120px",
loaclRole_info: this.role_info_detail loaclRole_info: {},
role_status: ""
} }
},
created () {
console.log(this.role_info_detail, 'role_info_detail')
} }
} }
</script> </script>
\ No newline at end of file
...@@ -17,98 +17,337 @@ ...@@ -17,98 +17,337 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary">搜索</el-button> <el-button type="primary" @click="onSearchSubmit">查询</el-button>
<el-button>重置</el-button> <el-button @click="onReset">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 角色搜索列表 --> <!-- 角色搜索列表 -->
<el-table border :data="managementList"> <el-table border :data="managementList" @row-click="toRoleDetail">
<el-table-column label="ID" prop="id" align="center"></el-table-column> <el-table-column
label="ID"
prop="role_id"
align="center"
></el-table-column>
<el-table-column <el-table-column
label="角色名称" label="角色名称"
prop="name" prop="role_name"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="状态" label="状态"
prop="status" prop="role_status"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="最后修改日期" label="最后修改日期"
prop="lastDate" prop="update_time"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="最后修改人账号" label="最后修改人账号"
prop="updateNumber" prop="update_user_name"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-if="!(scope.row.role_status == 2 || scope.row.role_status == 3)"
size="mini" size="mini"
@click="handelClick(scope.row)" @click.stop="handelModify(scope.row)"
type="primary" type="primary"
>修改</el-button >修改</el-button
> >
<el-button <el-button
size="mini" size="mini"
@click="handelClick(scope.row)" @click.stop="handelDelete(scope.row)"
type="warning" type="warning"
>删除</el-button >删除</el-button
> >
<el-button size="mini" @click="handelClick(scope.row)" type="danger" <el-button
size="mini"
@click.stop="handelDisable(scope.row)"
type="danger"
>禁用</el-button >禁用</el-button
> >
<el-button <el-button
size="mini" size="mini"
@click="handelClick(scope.row)" @click.stop="handelEnable(scope.row)"
type="success" type="success"
>启用</el-button >启用</el-button
> >
<el-button
style="margin-top: 10px"
size="mini"
@click="handelClick(scope.row)"
>查看详情</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<page :totalNum="totalNum" @update="update" />
</el-card> </el-card>
<el-dialog
title="角色权限范围修改"
v-model="dialogVisible"
width="40%"
destroy-on-close
>
<div class="tree">
<div class="content">
<el-cascader
v-model="selectedOptions"
:options="permissionsAll"
:props="props"
style="width: 280px"
@change="parentCateChange"
clearable
></el-cascader>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</template>
</el-dialog>
</layout> </layout>
</template> </template>
<script> <script>
import Layout from "@/layouts"; import Layout from "@/layouts";
import page from "../components/Pagination"
import {
getRole_list as reqGetRole_list, getAll_role_list as reqGetAll_role_list,
getUpdate_role as reqGetUpdate_role, get_role_info as reqGet_role_info,
getDelete_role as reqGetDelete_role
} from "../../service/role";
export default { export default {
name: 'RoleManagement', name: 'RoleManagement',
components: { components: {
Layout Layout,
page,
}, },
data () { data () {
return { return {
searchForm: { searchForm: {
roleName: '', roleName: '',
roleStatus: 1 roleStatus: ''
}, },
managementList: [ user_info: {
{ user_name: this.$store.state.name,
id: 1, op_cur_user: "jianghaiming@yidian-inc.com",
name: '超级管理员', user_email: "jianghaiming@126.com",
status: 1, },
lastDate: '2021-05-31', parmas: {
updateNumber: 492148618, page: 1,
} page_size: 10
] },
totalNum: null,
props: {
multiple: true,//设置为多选
value: 'id', //value值和哪个值绑定
label: 'desc',//label值和哪个值绑定
children: 'sub_permissions'//children值和哪个值绑定
},
selectedOptions: [],
dialogVisible: false,
dialogText: "",
managementList: [],
role_info_detail: {//详情非编辑项
role_id: "",
role_name: "",
},
permissionsAll: [],
permissionsUpdate: []
} }
}, },
created () {
this.getGetRole_list()
this.getPermissionsAll()
},
methods: {
toRoleDetail (row) {
this.$router.push({ name: 'RoleDetail', query: { roleId: row.role_id } });
},
getPermissionsAll () {
let { user_name, user_email } = this.user_info
reqGetAll_role_list(user_name, user_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 => {
this.managementList = res.result
this.totalNum = res.count
})
},
//查询
onSearchSubmit () {
this.getGetRole_list()
},
//重置
onReset () {
this.searchForm.roleName = "",
this.searchForm.roleStatus = ""
this.getGetRole_list()
},
//列表分页
update (obj) {
Object.assign(this.parmas, obj)
let { page, page_size } = this.parmas
this.getGetRole_list(page, page_size)
},
//弹框提示
openBounced (type, role_id) {
this.$confirm(`${this.dialogText}是否继续?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
if (type === "disable") {
this.getRole_info_detail('disable', role_id)
} else {
this.delete(role_id)
}
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
//删除
delete (role_id) {
reqGetDelete_role(role_id).then(res => {
if (res.status == "success")
this.getGetRole_list()
})
},
//角色详情数据
getRole_info_detail (type, role_id) {
reqGet_role_info(role_id).then(res => {
const { role_id, role_name, permissions } = res
this.role_info_detail = {
role_id,
role_name,
}
this.permissionsUpdate = permissions
let { op_cur_user } = this.user_info
let role_status
if (type === "disable") {
role_status = 2
} else if (type === "enable") {
role_status = 1
} else if (type === "modify") {
this.currentRolePrivilege = permissions
this.editEchoData(permissions)
}
else {
role_status = ""
}
if (type !== "modify") {
this.getUpdate_role(op_cur_user, role_name, role_id, role_status, permissions)
}
})
},
//遍历回显值selectedOptions
editEchoData (permissions) {
let selectData = []
permissions.map(item => {
let one = { id: item.id }
if (item.sub_permissions) {
item.sub_permissions.map(info => {
let selectId = [one.id, info.id]
selectData.push(selectId)
})
}
})
this.selectedOptions = selectData
},
//启用
handelEnable (row) {
if (row.role_status == 1) {
this.$message({
type: 'info',
message: '该条数据已启用'
});
return false
}
this.getRole_info_detail("enable", row.role_id)
},
//禁用
handelDisable (row) {
if (row.role_status == 2) {
this.$message({
type: 'info',
message: '该条数据已禁用'
});
return false
}
this.dialogText = "禁用拥有此角色用户将受影响"
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 => {
if (res.status === "success") {
this.dialogVisible = false
this.getGetRole_list()
}
})
},
//删除
handelDelete (row) {
this.dialogText = "删除后不可恢复,拥有此角色用户将受影响"
this.openBounced('del', row.role_id)
},
//修改
handelModify (row) {
this.getPermissionsAll()
this.dialogVisible = true
this.getRole_info_detail("modify", row.role_id)
},
//确认修改
confirm () {
let { op_cur_user } = this.user_info
let { role_id, role_name } = this.role_info_detail
let role_status = ''
this.getUpdate_role(op_cur_user, role_name, role_id, role_status, this.currentRolePrivilege)
},
parentCateChange (id) {
this.getSelectedOptions(id)
},
getSelectedOptions (selectedOptions) {
let oldDataRule = []
selectedOptions.forEach(el => {
let oldObj = {
id: el[0],
sub_permissions: []
}
let btnObj = {
id: el[1],
}
oldObj.sub_permissions.push(btnObj)
oldDataRule.push(oldObj)
})
let newData = []
let newObj = {}
oldDataRule.forEach((el, i) => {
if (!newObj[el.id]) {
newData.push(el);
newObj[el.id] = true;
} else {
newData.forEach(el => {
if (el.id === oldDataRule[i].id) {
el.sub_permissions = [...el.sub_permissions, ...oldDataRule[i].sub_permissions];
}
})
}
})
this.currentRolePrivilege = newData
},
}
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.role_management { .role_management {
padding: 50px; padding: 20px;
} }
.role_management .el-button { .role_management .el-button {
margin: 0 2px; margin: 0 2px;
......
<template>
<div class="user-detail">
<el-button type="text" @click="goBack" icon="el-icon-arrow-left"
>返回</el-button
>
<el-card class="management">
<h3 style="margin-bottom: 10px">角色详情</h3>
<el-descriptions class="margin-top" :column="2" border>
<el-descriptions-item>
<template #label>状态 </template>
{{ role_info_detail.role_status }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> ID </template>
{{ role_info_detail.role_id }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 角色名称 </template>
{{ role_info_detail.role_name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建人账号 </template>
{{ role_info_detail.update_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 创建时间 </template>
{{ role_info_detail.create_time }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 最后修改人账号 </template>
{{ role_info_detail.update_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 最后修改时间 </template>
{{ role_info_detail.update_time }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 角色账号 </template>
{{ role_info_detail.role_status }}
</el-descriptions-item>
</el-descriptions>
<div class="tree" v-if="selectedOptions">
<h5 style="margin-bottom: 10px">角色范围</h5>
<div class="content">
<!-- <el-tree
:data="permissionsAll"
show-checkbox
:default-checked-keys="checkedKeys"
:default-expanded-keys="expandedKeys"
node-key="id"
ref="tree"
highlight-current
:props="defaultProps"
:expand-on-click-node="false"
>
</el-tree> -->
<el-cascader
v-model="selectedOptions"
:options="permissionsAll"
placeholder="暂无数据"
disabled
:props="props"
style="width: 300px"
></el-cascader>
</div>
</div>
</el-card>
</div>
</template>
<script>
import { get_role_info as reqGet_role_info, getAll_role_list as reqGetAll_role_list, } from '../../service/role'
export default {
data () {
return {
roleId: this.$route.query.roleId,
defaultProps: {
children: 'sub_permissions',
label: 'desc'
},
user_info: {
user_name: "jianghaiming",
user_email: "jianghaiming@126.com",
},
props: {
multiple: true,//设置为多选
value: 'id', //value值和哪个值绑定
label: 'desc',//label值和哪个值绑定
children: 'sub_permissions'//children值和哪个值绑定
},
selectedOptions: [],
checkedKeys: [],
expandedKeys: [],
permissionsAll: [],
role_info_detail: {//详情非编辑项
role_id: "",
role_name: "",
role_status: "",
update_time: "",
update_user_name: "",
create_time: "",
create_user_name: ""
},
}
},
created () {
let { user_name, user_email } = this.user_info
reqGetAll_role_list(user_name, user_email).then(res => {
this.permissionsAll = res
// this.permissionsAll.forEach(item => {
// item.disabled = true
// item.sub_permissions.forEach(element => {
// element.disabled = true
// })
// })
})
reqGet_role_info(this.roleId).then((res) => {
const { role_id, role_name, role_status, update_time, update_user_name, create_time, create_user_name, permissions } = res
this.role_info_detail = {
role_id,
role_name,
role_status,
update_time,
update_user_name,
create_time,
create_user_name
}
this.editEchoData(permissions)
})
},
methods: {
goBack () {
this.$router.back(-1);
},
//遍历回显值selectedOptions
editEchoData (permissions) {
// let childArr = [], selectExpandedKeys = []
// permissions.forEach(item => {
// selectExpandedKeys.push(item.id)
// if (item.sub_permissions) {
// item.sub_permissions.forEach(element => {
// childArr.push(element.id)
// })
// }
// })
// this.checkedKeys = childArr
// this.expandedKeys = selectExpandedKeys
// console.log(this.checkedKeys, this.expandedKeys, ' this.expandedKeys ')
let selectData = []
permissions.map(item => {
let one = { id: item.id }
if (item.sub_permissions) {
item.sub_permissions.map(info => {
let selectId = [one.id, info.id]
selectData.push(selectId)
})
}
})
this.selectedOptions = selectData
},
}
}
</script>
<style lang="less" scoped>
.user-detail {
margin: 50px;
.management {
margin-top: 20px;
}
.tree {
// border: 1px solid #ebeef5;
margin-top: 20px;
}
}
</style>
\ No newline at end of file
<template> <template>
<div class="user-detail"> <div class="user-detail">
<h2 style="margin-bottom: 10px">用户详情</h2> <el-button type="text" @click="goBack" icon="el-icon-arrow-left"
<el-descriptions class="margin-top" :column="3" :size="size" border> >返回</el-button
<el-descriptions-item> >
<template #label> 用户姓名 </template> <el-card class="management">
kooriookami <h2 style="margin-bottom: 10px">用户详情</h2>
</el-descriptions-item> <el-descriptions class="margin-top" :column="3" :size="size" border>
<el-descriptions-item> <el-descriptions-item>
<template #label> 手机号 </template> <template #label> 用户姓名 </template>
18100000000 {{ user_info.user_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 所属组织 </template> <template #label> 手机号 </template>
研发部 {{ user_info.user_mobile }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 添加人账号 </template> <template #label> 所属组织 </template>
XXXX {{ user_info.organization }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 添加时间 </template> <template #label> 添加人账号 </template>
2020-12-01 {{ user_info.create_user_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 最后修改人账号 </template> <template #label> 添加时间 </template>
张三 {{ user_info.create_time }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 最后修改时间 </template> <template #label> 最后修改人账号 </template>
2021-05-21 {{ user_info.update_user_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 已拥有角色池 </template> <template #label> 最后修改时间 </template>
角色池 {{ user_info.update_user_name }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> <el-descriptions-item>
<template #label> 角色名称 </template> <template #label> 敏感词权限 </template>
管理员 {{ user_info.is_sensitive_authority == 1 ? "有" : "无" }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item> </el-descriptions>
<template #label> 敏感词权限 </template> <div class="role">已拥有角色池</div>
敏感词权限 <el-table :data="role_list" border style="width: 100%">
</el-descriptions-item> <el-table-column prop="role_id" label="ID" width="180">
<el-descriptions-item> </el-table-column>
<template #label> 数据权限 </template> <el-table-column prop="role_name" label="角色名称"> </el-table-column>
数据权限 </el-table>
</el-descriptions-item> </el-card>
</el-descriptions>
</div> </div>
</template> </template>
<script> <script>
// import { getUser_detail as reqGetUser_detail } from '../../service/user' import { getUser_detail as reqGetUser_detail } from "../../service/user";
export default { export default {
data () { data () {
return { return {
user_id: 1, user_id: '1',
userInfoList: [{ user_info: {},
}] role_list: []//角色池
} }
}, },
created () { created () {
// reqGetUser_detail(this.user_id).then((res) => { this.getUser_date()
// console.log(res, '000') },
// }) methods: {
getUser_date () {
reqGetUser_detail(this.user_id).then((res) => {
this.user_info = res.user_info
this.role_list = res.role_list
})
},
goBack () {
this.$router.go(-1)
}
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.user-detail { .user-detail {
margin: 50px; margin: 50px;
.role {
margin: 10px;
font-weight: bold;
}
} }
</style> </style>
\ No newline at end of file
<template> <template>
<div class="block"> <div class="block">
<!-- <el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-size="page_size"
background
layout="total,prev, pager, next"
:total="totalNum"
>
</el-pagination> -->
<el-pagination <el-pagination
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
...@@ -23,11 +14,11 @@ ...@@ -23,11 +14,11 @@
</template> </template>
<script> <script>
export default { export default {
props: ['data', 'totalNum'], props: ['totalNum'],
data () { data () {
return { return {
currentPage: 1, currentPage: 1,
page_size: 20 page_size: 10
} }
}, },
methods: { methods: {
......
...@@ -12,6 +12,7 @@ import UserDetail from '../pages/User/user-detail.vue' ...@@ -12,6 +12,7 @@ import UserDetail from '../pages/User/user-detail.vue'
import AddRole from '../pages/Role/add-role.vue' import AddRole from '../pages/Role/add-role.vue'
import ManageRole from '../pages/Role/manage-role.vue' import ManageRole from '../pages/Role/manage-role.vue'
import RoleDetail from '../pages/Role/role-detail.vue'
const routes = [ const routes = [
{ {
...@@ -83,12 +84,20 @@ const routes = [ ...@@ -83,12 +84,20 @@ const routes = [
{ {
path: '/roleAddRole', path: '/roleAddRole',
name: 'AddRole', name: 'AddRole',
component: AddRole component: AddRole,
meta: {
requireAuth: true,
}
}, },
{ {
path: '/roleManageRole', path: '/roleManageRole',
name: 'ManageRole', name: 'ManageRole',
component: ManageRole component: ManageRole
},
{
path: '/roleRoleDetail',
name: 'RoleDetail',
component: RoleDetail
} }
]; ];
......
...@@ -3,31 +3,36 @@ ...@@ -3,31 +3,36 @@
*/ */
import axios from "../utils/request"; import axios from "../utils/request";
// 获取审核列表 /**
// export async function auditList (params) { * 获取企业信息列表
// const res = await axios.post(``) * @param query
// } */
export async function auditList (params) {
// 企业信息检查 const res = await axios.post(`/api/v1/certification`, params);
export async function entCheck (user_id) {
const res = await axios.get(`/api/v1/certification`, { params: { user_id } });
return res; return res;
} }
// 发送企业信息认证 /**
export async function entCommit (query) { * 企业认证审核获取验证码
const res = await axios.post(`/api/v1/emterprise_commit`, { query }); * @param enterprise_auth_record_id 企业认证审核id
*/
export async function sendCode (enterprise_auth_record_id) {
const res = await axios.post(`/api/v1/send_code`, enterprise_auth_record_id);
return res; return res;
} }
// 检查生活号信息唯一性 /**
export async function checkLife (life_account_name) { * 企业认证检测验证码
const res = await axios.post(`/api/v1/check_life`, { life_account_name }); * @param enterprise_auth_record_id 企业认证审核id
* @param code 验证码
*/
export async function checkCode (params) {
const res = await axios.post(`/api/v1/check_code`, params);
return res; return res;
} }
// 创建生活号 // 发送企业信息认证
export async function createLife (params) { export async function entCommit (query) {
const res = await axios.post(`/api/v1/create_life`, { params }); const res = await axios.post(`/api/v1/emterprise_commit`, query);
return res; return res;
} }
...@@ -5,4 +5,11 @@ export async function getLifeNoList (params) { ...@@ -5,4 +5,11 @@ export async function getLifeNoList (params) {
params params
}) })
return res.result; return res.result;
}
//生活号详情
export async function getLife_info (life_account_id) {
const res = await axios.post(`/api/v1/merchant/lifeinner/life_info`, {
life_account_id
})
return res.result;
} }
\ No newline at end of file
import axios from '../utils/request'; import axios from '../utils/request';
// import qs from 'qs'; // import qs from 'qs';
//角色列表 //角色列表
export async function getRole_list (page, page_size) { export async function getRole_list (page, page_size, role_status, role_name) {
const res = await axios.post("/api/v1/merchant/authority/role_list", { const res = await axios.post("/api/v1/merchant/authority/role_list", {
page, page_size page, page_size, role_status, role_name
}) })
return res; return res;
} }
...@@ -12,14 +12,14 @@ export async function getAdd_role (role_name, permissions) { ...@@ -12,14 +12,14 @@ export async function getAdd_role (role_name, permissions) {
const res = await axios.post("/api/v1/merchant/authority/add_role", { const res = await axios.post("/api/v1/merchant/authority/add_role", {
role_name, permissions role_name, permissions
}) })
return res.result; return res;
} }
//角色编辑 //角色编辑
export async function getUpdate_role (role_name, role_id, permissions) { 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", { const res = await axios.post("/api/v1/merchant/authority/update_role", {
role_name, role_id, permissions op_cur_user, role_name, role_id, role_status, permissions
}) })
return res.result; return res;
} }
//角色详情 //角色详情
export async function get_role_info (role_id) { export async function get_role_info (role_id) {
...@@ -28,6 +28,13 @@ export async function get_role_info (role_id) { ...@@ -28,6 +28,13 @@ export async function get_role_info (role_id) {
}) })
return res.result; return res.result;
} }
//角色删除
export async function getDelete_role (role_id) {
const res = await axios.post("/api/v1/merchant/authority/delete_role", {
role_id
})
return res;
}
//权限列表 //权限列表
export async function getAll_role_list (user_name, user_email) { export async function getAll_role_list (user_name, user_email) {
......
...@@ -31,3 +31,10 @@ export async function editUser (data) { ...@@ -31,3 +31,10 @@ export async function editUser (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) {
const res = await axios.post(`/api/v1/merchant/authority/get_user_info`, {
user_id
})
return res.result;
}
import { createStore } from "vuex"; import { createStore } from "vuex";
import { getPermissions } from '@/service/user'; import { getPermissions } from '@/service/user';
import { PAGEMODULE_PERMISSIONNAME, PERMISSIONNAME_PAGEMODULE, PATH_PERMISSION_NAME } from '../config/pageconfig'
export default createStore({ export default createStore({
state: { state: {
...@@ -22,5 +23,25 @@ export default createStore({ ...@@ -22,5 +23,25 @@ export default createStore({
} }
}, },
modules: {}, 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];
}
}
}); });
...@@ -40,22 +40,22 @@ export function checkPathAuth(path) { ...@@ -40,22 +40,22 @@ export function checkPathAuth(path) {
return true; return true;
} }
/** // /**
* 获取页面子权限 // * 获取页面子权限
* @param {*} module: 枚举值参考:PAGEMODULE_PERMISSIONNAME key // * @param {*} module: 枚举值参考:PAGEMODULE_PERMISSIONNAME key
* @returns 自权限列表 // * @returns 子权限列表
*/ // */
export function getModuleSubPermissions(module) { // export function getModuleSubPermissions(module) {
const authObj = getPermissionObj(); // const authObj = getPermissionObj() || {};
return Object.keys(authObj[PAGEMODULE_PERMISSIONNAME[module]]) // return Object.keys(authObj[PAGEMODULE_PERMISSIONNAME[module]])
} // }
/** // /**
* 获取一级权限 // * 获取一级权限
* @returns 一级权限列表 // * @returns 一级权限列表
*/ // */
export function getModulePermissions() { // export function getModulePermissions() {
const authObj = getPermissionObj(); // const authObj = getPermissionObj();
const modules = Object.keys(authObj).map(ele => PERMISSIONNAME_PAGEMODULE[ele]) // const modules = Object.keys(authObj).map(ele => PERMISSIONNAME_PAGEMODULE[ele])
return modules.filter(ele => !!ele) // return modules.filter(ele => !!ele)
} // }
\ No newline at end of file \ No newline at end of file
import moment from "moment"; import moment from "moment";
import CommonServer from "@/api/common"; import CommonServer from "./common";
import axios from "axios"; import axios from "axios";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
......
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