Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
op-web-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bp
op-web-service
Commits
02471f8b
Commit
02471f8b
authored
Jun 07, 2021
by
lvweichao
Browse files
Options
Browse Files
Download
Plain Diff
feat: user page & ks3
parents
79ec63e3
26b4e91f
Changes
37
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
1612 additions
and
770 deletions
+1612
-770
constant.js
server/constant.js
+15
-4
enterprise.js
server/controllers/enterprise.js
+17
-20
image.js
server/controllers/image.js
+86
-55
life-no.js
server/controllers/life-no.js
+14
-1
role.js
server/controllers/role.js
+15
-7
system.js
server/controllers/system.js
+0
-15
user.js
server/controllers/user.js
+15
-3
router.js
server/router.js
+11
-6
ksUtil.js
server/utils/ksUtil.js
+60
-0
request.js
server/utils/request.js
+2
-1
App.vue
src/App.vue
+1
-1
index.vue
src/components/PageHeader/index.vue
+4
-4
ks3-js-sdk
src/lib/ks3-js-sdk
+1
-0
main.js
src/main.js
+14
-14
index.vue
src/pages/DemoImageUpload/index.vue
+1
-1
index.vue
src/pages/Enterprise/Audit/index.vue
+23
-14
index.vue
src/pages/Enterprise/Certification/index.vue
+290
-195
index.vue
src/pages/Enterprise/Establish/index.vue
+259
-65
lifeNoInfo.vue
src/pages/Life-no/components/lifeNoInfo.vue
+0
-97
index.vue
src/pages/Life-no/index.vue
+6
-5
life-no-detail.vue
src/pages/Life-no/life-no-detail.vue
+102
-6
index.vue
src/pages/Login/index.vue
+0
-24
add-role.vue
src/pages/Role/add-role.vue
+55
-87
roleDetail.vue
src/pages/Role/components/roleDetail.vue
+9
-5
manage-role.vue
src/pages/Role/manage-role.vue
+270
-31
role-detail.vue
src/pages/Role/role-detail.vue
+174
-0
user-detail.vue
src/pages/User/user-detail.vue
+66
-54
Pagination.vue
src/pages/components/Pagination.vue
+2
-11
index.js
src/router/index.js
+10
-1
enterprise.js
src/service/enterprise.js
+22
-17
life-no.js
src/service/life-no.js
+7
-0
role.js
src/service/role.js
+13
-6
user.js
src/service/user.js
+7
-0
index.js
src/store/index.js
+22
-1
authUtil.js
src/utils/authUtil.js
+18
-18
common.js
src/utils/common.js
+0
-0
oss.js
src/utils/oss.js
+1
-1
No files found.
server/constant.js
View file @
02471f8b
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
server/controllers/enterprise.js
View file @
02471f8b
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
.
check
Lif
e
=
async
ctx
=>
{
exports
.
check
Cod
e
=
async
ctx
=>
{
const
url
=
`
${
API_INTERNAL_URI
}
/merchant/
enterprise/check_lif
e`
;
const
url
=
`
${
API_INTERNAL_URI
}
/merchant/
lifeinner/check_cod
e`
;
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"
,
...
...
server/controllers/image.js
View file @
02471f8b
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_CON
ST
=
require
(
'../constant'
).
KS3_CONST
const
KS3_CON
FIG
=
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_CON
ST
.
AccessKeySecret
,
stringToSign
)
const
signature
=
Ks3Util
.
b64_hmac_sha1
(
KS3_CON
FIG
.
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
server/controllers/life-no.js
View file @
02471f8b
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
)
}
server/controllers/role.js
View file @
02471f8b
...
@@ -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
.
get
Add_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
.
get
Add_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
.
get
User_detail
=
async
(
ctx
,
next
)
=>
{
exports
.
get
Delete_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
server/controllers/system.js
View file @
02471f8b
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
;
...
...
server/controllers/user.js
View file @
02471f8b
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
=
{
...
...
server/router.js
View file @
02471f8b
...
@@ -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
;
server/utils/ksUtil.js
View file @
02471f8b
...
@@ -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编码表*/
...
...
server/utils/request.js
View file @
02471f8b
...
@@ -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
{
...
...
src/App.vue
View file @
02471f8b
...
@@ -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":""}}
...
...
src/components/PageHeader/index.vue
View file @
02471f8b
...
@@ -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
src/main.js
View file @
02471f8b
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"
);
src/pages/DemoImageUpload/index.vue
View file @
02471f8b
...
@@ -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
)
{
...
...
src/pages/Enterprise/Audit/index.vue
View file @
02471f8b
...
@@ -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"
}]
},
},
// 生活号状态
// 生活号状态
...
...
src/pages/Enterprise/Certification/index.vue
View file @
02471f8b
This diff is collapsed.
Click to expand it.
src/pages/Enterprise/Establish/index.vue
View file @
02471f8b
This diff is collapsed.
Click to expand it.
src/pages/Life-no/components/lifeNoInfo.vue
deleted
100644 → 0
View file @
79ec63e3
<
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
src/pages/Life-no/index.vue
View file @
02471f8b
...
@@ -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去详情'
)
},
},
}
}
}
}
...
...
src/pages/Life-no/life-no-detail.vue
View file @
02471f8b
<
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
src/pages/Login/index.vue
View file @
02471f8b
...
@@ -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("登录不成功,请检查登录信息后重试!")
...
...
src/pages/Role/add-role.vue
View file @
02471f8b
...
@@ -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
:
2
0
page_size
:
1
0
},
},
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
)
{
...
...
src/pages/Role/components/roleDetail.vue
View file @
02471f8b
<
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
src/pages/Role/manage-role.vue
View file @
02471f8b
This diff is collapsed.
Click to expand it.
src/pages/Role/role-detail.vue
0 → 100644
View file @
02471f8b
<
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
src/pages/User/user-detail.vue
View file @
02471f8b
<
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'
,
user
InfoList
:
[{
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
src/pages/components/Pagination.vue
View file @
02471f8b
<
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
:
2
0
page_size
:
1
0
}
}
},
},
methods
:
{
methods
:
{
...
...
src/router/index.js
View file @
02471f8b
...
@@ -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
}
}
];
];
...
...
src/service/enterprise.js
View file @
02471f8b
...
@@ -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
;
}
}
src/service/life-no.js
View file @
02471f8b
...
@@ -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
src/service/role.js
View file @
02471f8b
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
)
{
...
...
src/service/user.js
View file @
02471f8b
...
@@ -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
;
}
src/store/index.js
View file @
02471f8b
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
];
}
}
});
});
src/utils/authUtil.js
View file @
02471f8b
...
@@ -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
src/
api
/common.js
→
src/
utils
/common.js
View file @
02471f8b
File moved
src/utils/oss.js
View file @
02471f8b
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"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment