Commit 5a6b9195 authored by 冷冷's avatar 冷冷

👌 更新代码,因为代码审核变更

parent 63a4a3e9
<template>
<div id="app">
<router-view />
<router-view/>
</div>
</template>
<script>
export default {
name: 'app',
data () {
return {}
},
watch: {},
created () { },
methods: {},
computed: {}
}
export default {
name: 'app',
data() {
return {}
},
watch: {},
created() {
},
methods: {},
computed: {}
}
</script>
<style lang="scss">
#app {
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
\ No newline at end of file
#app {
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
......@@ -33,10 +33,10 @@ export function delObj(id) {
}
export function deploy(id) {
return request({
url: '/act/model/deploy/' + id,
method: 'post'
})
return request({
url: '/act/model/deploy/' + id,
method: 'post'
})
}
......
......@@ -41,10 +41,10 @@ export function getObj(id) {
}
export function submit(id) {
return request({
url: '/act/leave-bill/submit/' + id,
method: 'get'
})
return request({
url: '/act/leave-bill/submit/' + id,
method: 'get'
})
}
export function delObj(id) {
......
......@@ -32,9 +32,9 @@ export function delObj(id) {
})
}
export function status(id,type) {
return request({
url: '/act/process/status/' + id + "/" + type,
method: 'put'
})
export function status(id, type) {
return request({
url: '/act/process/status/' + id + "/" + type,
method: 'put'
})
}
......@@ -26,23 +26,23 @@ export function fetchList(query) {
}
export function fetchDetail(id) {
return request({
url: '/act/task/'+id,
method: 'get'
})
return request({
url: '/act/task/' + id,
method: 'get'
})
}
export function fetchComment(id) {
return request({
url: '/act/task/comment/'+id,
method: 'get'
})
return request({
url: '/act/task/comment/' + id,
method: 'get'
})
}
export function doTask(obj) {
return request({
url: '/act/task',
method: 'post',
data: obj
})
return request({
url: '/act/task',
method: 'post',
data: obj
})
}
......@@ -18,11 +18,11 @@
import request from '@/router/axios'
export function fetchDeptTree(query) {
return request({
url: '/admin/dept/user-tree',
method: 'get',
params: query
})
return request({
url: '/admin/dept/user-tree',
method: 'get',
params: query
})
}
export function fetchTree(query) {
......
......@@ -16,12 +16,14 @@
*/
import request from '@/router/axios'
export function GetMenu() {
return request({
url: '/admin/menu',
method: 'get'
})
}
export function fetchTree(query) {
return request({
url: '/admin/menu/tree',
......
......@@ -24,10 +24,11 @@ export function fetchList(query) {
params: query
})
}
export function putObj(obj) {
return request({
url: '/admin/route',
method: 'put',
data: obj
})
return request({
url: '/admin/route',
method: 'put',
data: obj
})
}
......@@ -18,46 +18,46 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/admin/user/page',
method: 'get',
params: query
})
return request({
url: '/admin/user/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/admin/user',
method: 'post',
data: obj
})
return request({
url: '/admin/user',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/admin/user/' + id,
method: 'get'
})
return request({
url: '/admin/user/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/admin/user/' + id,
method: 'delete'
})
return request({
url: '/admin/user/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/admin/user',
method: 'put',
data: obj
})
return request({
url: '/admin/user',
method: 'put',
data: obj
})
}
export function getDetails(obj) {
return request({
url: '/admin/user/details/' + obj,
method: 'get'
})
return request({
url: '/admin/user/details/' + obj,
method: 'get'
})
}
......@@ -26,16 +26,22 @@ export function fetchList(query) {
}
export function handleDown(table) {
request({
return request({
url: '/gen/generator/code',
method: 'post',
data: table,
responseType: 'arraybuffer'
}).then((response) => { // 处理返回的文件流
let blob = new Blob([response.data], { type: 'application/zip' } )
let link = document.createElement('a')
link.href = window.URL.createObjectURL(blob)
link.download = table.tableName + '.zip'
link.click()
let blob = new Blob([response.data], {type: 'application/zip'})
let filename = table.tableName + '.zip'
let link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename;
document.body.appendChild(link);
link.click();
window.setTimeout(function () {
URL.revokeObjectURL(blob);
document.body.removeChild(link);
}, 0);
})
}
......@@ -15,56 +15,57 @@
* Author: lengleng (wangiegie@gmail.com)
*/
import request from '@/router/axios'
export const loginByUsername = (username, password, code, randomStr) => {
var grant_type = 'password'
var scope = 'server'
return request({
url: '/auth/oauth/token',
headers: {
'TENANT_ID': '1',
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: { username, password, randomStr, code, grant_type, scope }
})
var grant_type = 'password'
var scope = 'server'
return request({
url: '/auth/oauth/token',
headers: {
'TENANT_ID': '1',
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: {username, password, randomStr, code, grant_type, scope}
})
}
export const loginByMobile = (mobile, code) => {
var grant_type = 'mobile'
return request({
url: '/auth/mobile/token/sms',
headers: {
'TENANT_ID': '1',
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: { mobile: 'SMS@' + mobile,code: code, grant_type }
})
var grant_type = 'mobile'
return request({
url: '/auth/mobile/token/sms',
headers: {
'TENANT_ID': '1',
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: {mobile: 'SMS@' + mobile, code: code, grant_type}
})
}
export const loginBySocial = (state, code) => {
var grant_type = 'mobile'
return request({
url: '/auth/mobile/token/social',
headers: {
'TENANT_ID': '1',
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: { mobile: state + '@' + code, grant_type }
})
var grant_type = 'mobile'
return request({
url: '/auth/mobile/token/social',
headers: {
'TENANT_ID': '1',
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: {mobile: state + '@' + code, grant_type}
})
}
export const getUserInfo = () => {
return request({
url: '/admin/user/info',
method: 'get'
})
return request({
url: '/admin/user/info',
method: 'get'
})
}
export const logout = () => {
return request({
url: '/auth/token/logout',
method: 'delete'
})
return request({
url: '/auth/token/logout',
method: 'delete'
})
}
......@@ -15,10 +15,10 @@ if (env.NODE_ENV == 'development') {
}
export {
baseUrl,
actUrl,
iconfontUrl,
iconfontVersion,
codeUrl,
env
baseUrl,
actUrl,
iconfontUrl,
iconfontVersion,
codeUrl,
env
}
......@@ -15,66 +15,66 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export const tableOption = {
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
menuWidth: 150,
menuBtn: true,
align: 'center',
editBtn: false,
delBtn: false,
menuType: 'menu',
searchShow: false,
labelWidth: 120,
column: [{
fixed: true,
label: '模型ID',
prop: 'id',
editDisabled: true,
addVisdiplay: false
}, {
fixed: true,
label: '模型标识',
prop: 'key',
editDisabled: true
}, {
label: '流程分类',
prop: 'category',
search: true
}, {
label: '模型名称',
prop: 'name'
},
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
menuWidth: 150,
menuBtn: true,
align: 'center',
editBtn: false,
delBtn: false,
menuType: 'menu',
searchShow: false,
labelWidth: 120,
column: [{
fixed: true,
label: '模型ID',
prop: 'id',
editDisabled: true,
addVisdiplay: false
}, {
fixed: true,
label: '模型标识',
prop: 'key',
editDisabled: true
}, {
label: '流程分类',
prop: 'category',
search: true
}, {
label: '模型名称',
prop: 'name'
},
{
label: '描述',
prop: 'desc',
hide: true,
editDisabled: false,
addVisdiplay: true
label: '描述',
prop: 'desc',
hide: true,
editDisabled: false,
addVisdiplay: true
}, {
label: '版本号',
prop: 'version',
editDisabled: true,
addVisdiplay: false
label: '版本号',
prop: 'version',
editDisabled: true,
addVisdiplay: false
}, {
width: 150,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
width: 150,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}, {
width: 150,
label: '最后更新时间',
prop: 'lastUpdateTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
width: 150,
label: '最后更新时间',
prop: 'lastUpdateTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}]
}
......@@ -25,60 +25,60 @@ export const tableOption = {
'editBtn': false,
'delBtn': false,
'addBtn': false,
menuType:'menu',
menuType: 'menu',
'dicUrl': '/admin/dict/type/leave_status',
'column': [
{
{
label: 'ID',
prop: 'leaveId',
editDisabled: true,
addVisdiplay: false
},
{
{
label: '申请人',
prop: 'username',
editDisabled: true,
addVisdiplay: false
},
{
{
label: '天数',
prop: 'days',
type: 'number'
},
{
{
label: '请假时间',
prop: 'leaveTime',
type: 'datetime',
overHidden:true,
overHidden: true,
format: 'yyyy-MM-dd HH:mm',
valueFormat: "yyyy-MM-dd hh:mm:ss"
},
{
label: '提交时间',
prop: 'createTime',
type: 'datetime',
overHidden:true,
format: 'yyyy-MM-dd HH:mm',
editDisabled: true,
addVisdiplay: false,
hide: true
},
{
label: '状态',
prop: 'state',
type: 'select',
dicData: 'leave_status',
search: true,
addVisdiplay: false
},
{
label: '备注',
prop: 'content',
type:'textarea',
overHidden:true,
minRows:2,
row:true,
span:24
}
},
{
label: '提交时间',
prop: 'createTime',
type: 'datetime',
overHidden: true,
format: 'yyyy-MM-dd HH:mm',
editDisabled: true,
addVisdiplay: false,
hide: true
},
{
label: '状态',
prop: 'state',
type: 'select',
dicData: 'leave_status',
search: true,
addVisdiplay: false
},
{
label: '备注',
prop: 'content',
type: 'textarea',
overHidden: true,
minRows: 2,
row: true,
span: 24
}
]
}
......@@ -15,47 +15,47 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export const tableOption = {
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
menuWidth: 150,
menuBtn: true,
align: 'center',
addBtn: false,
editBtn: false,
delBtn: false,
menuType:'menu',
searchShow: false,
column: [{
fixed: true,
label: '流程ID',
prop: 'processonDefinitionId'
}, {
fixed: true,
label: '模型标识',
prop: 'key',
editDisabled: true
}, {
label: '流程分类',
prop: 'category',
search: true
}, {
label: '模型名称',
prop: 'name'
}, {
label: '版本号',
prop: 'revision',
editDisabled: true,
addVisdiplay: false
}, {
label: '部署时间',
prop: 'deploymentTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}]
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
menuWidth: 150,
menuBtn: true,
align: 'center',
addBtn: false,
editBtn: false,
delBtn: false,
menuType: 'menu',
searchShow: false,
column: [{
fixed: true,
label: '流程ID',
prop: 'processonDefinitionId'
}, {
fixed: true,
label: '模型标识',
prop: 'key',
editDisabled: true
}, {
label: '流程分类',
prop: 'category',
search: true
}, {
label: '模型名称',
prop: 'name'
}, {
label: '版本号',
prop: 'revision',
editDisabled: true,
addVisdiplay: false
}, {
label: '部署时间',
prop: 'deploymentTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}]
}
......@@ -15,128 +15,128 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export const tableOption = {
'border': true,
'index': true,
'stripe': true,
'menuAlign': "center",
'align': "center",
'menuBtn': true,
'editBtn': false,
'delBtn': false,
'addBtn': false,
menuType: 'menu',
'dic': [],
'column': [
{
label: 'ID',
prop: 'taskId',
editDisabled: true,
addVisdiplay: false
},
{
label: '任务名称',
prop: 'taskName',
editDisabled: true,
addVisdiplay: false
},
{
label: '提交时间',
prop: 'time',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm'
}
]
'border': true,
'index': true,
'stripe': true,
'menuAlign': "center",
'align': "center",
'menuBtn': true,
'editBtn': false,
'delBtn': false,
'addBtn': false,
menuType: 'menu',
'dic': [],
'column': [
{
label: 'ID',
prop: 'taskId',
editDisabled: true,
addVisdiplay: false
},
{
label: '任务名称',
prop: 'taskName',
editDisabled: true,
addVisdiplay: false
},
{
label: '提交时间',
prop: 'time',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm'
}
]
}
export const formOption = {
submitBtn: false,
emptytBtn: false,
row:true,
span:12,
column: [
{
label: "任务编号",
prop: "taskId",
disabled: true
},
{
label: "任务名称",
prop: "taskName",
disabled: true
},
{
label: "申请人",
prop: "username",
disabled: true
},
{
label: "请假时长",
prop: "days",
disabled: true
},
{
label: "请假时间",
prop: "createTime",
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
disabled: true
},
{
label: '提交时间',
prop: 'time',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
disabled: true
},
{
label: '事由',
prop: 'content',
type:'textarea',
minRows:2,
row:true,
span:24,
disabled: true
},
{
label: '批注',
prop: 'comment',
type:'textarea',
minRows:2,
row:true,
span:24,
rules: [{
required: true,
message: "请输入备注",
trigger: "blur"
}]
}
]
submitBtn: false,
emptytBtn: false,
row: true,
span: 12,
column: [
{
label: "任务编号",
prop: "taskId",
disabled: true
},
{
label: "任务名称",
prop: "taskName",
disabled: true
},
{
label: "申请人",
prop: "username",
disabled: true
},
{
label: "请假时长",
prop: "days",
disabled: true
},
{
label: "请假时间",
prop: "createTime",
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
disabled: true
},
{
label: '提交时间',
prop: 'time',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
disabled: true
},
{
label: '事由',
prop: 'content',
type: 'textarea',
minRows: 2,
row: true,
span: 24,
disabled: true
},
{
label: '批注',
prop: 'comment',
type: 'textarea',
minRows: 2,
row: true,
span: 24,
rules: [{
required: true,
message: "请输入备注",
trigger: "blur"
}]
}
]
}
export const taskOption = {
menu:false,
page:false,
addBtn:false,
align:'center',
menuAlign:'center',
column:[
{
label:'id',
prop:'id',
hide: true
},
{
label:'用户',
prop:'userId'
},
{
label:'批注',
prop:'fullMessage'
},{
label: "操作时间",
prop: "time",
type: "datetime",
format: "yyyy-MM-dd hh:mm:ss",
valueFormat: "yyyy-MM-dd hh:mm:ss",
}
]
menu: false,
page: false,
addBtn: false,
align: 'center',
menuAlign: 'center',
column: [
{
label: 'id',
prop: 'id',
hide: true
},
{
label: '用户',
prop: 'userId'
},
{
label: '批注',
prop: 'fullMessage'
}, {
label: "操作时间",
prop: "time",
type: "datetime",
format: "yyyy-MM-dd hh:mm:ss",
valueFormat: "yyyy-MM-dd hh:mm:ss",
}
]
}
......@@ -25,16 +25,17 @@ const DIC = {
}]
}
export const tableOption = {
'border': true,
'index': true,
'indexLabel': '序号',
'stripe': true,
'menuAlign': 'center',
'align': 'center',
'editBtn': false,
'delBtn': false,
'dic': [],
'column': [{
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
align: 'center',
editBtn: false,
delBtn: false,
viewBtn: true,
dic: [],
column: [{
width: 150,
label: '编号',
prop: 'clientId',
......@@ -46,11 +47,12 @@ export const tableOption = {
trigger: 'blur'
}]
}, {
width: 300,
label: '密钥',
prop: 'clientSecret',
align: 'center',
sortable: true,
overHidden: true,
width: 120,
rules: [{
required: true,
message: '请输入clientSecret',
......@@ -71,7 +73,7 @@ export const tableOption = {
prop: 'authorizedGrantTypes',
align: 'center',
width: 150,
hide: true,
overHidden: true,
rules: [{
required: true,
message: '请输入授权模式',
......@@ -90,22 +92,20 @@ export const tableOption = {
width: 150,
hide: true
}, {
label: '请求令牌',
label: '令牌时效',
prop: 'accessTokenValidity',
align: 'center',
width: 150,
hide: true
width: 80
}, {
label: '刷新令牌',
label: '刷新时效',
prop: 'refreshTokenValidity',
align: 'center',
width: 150,
hide: true
width: 80
}, {
label: '扩展信息',
prop: 'additionalInformation',
align: 'center',
width: 150,
width: 80,
hide: true
}, {
label: '自动放行',
......@@ -113,7 +113,7 @@ export const tableOption = {
align: 'center',
type: 'radio',
dicData: DIC.vaild,
width: 150,
width: 80,
rules: [{
required: true,
message: '请选择是否放行',
......@@ -123,6 +123,7 @@ export const tableOption = {
label: '资源ID',
prop: 'resourceIds',
align: 'center',
hide: true,
width: 150
}]
}
......@@ -15,32 +15,33 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export const tableOption = {
'border': true,
'index': true,
'indexLabel': '序号',
'stripe': true,
'menuAlign': 'center',
'menuWidth': 150,
'align': 'center',
'refreshBtn': true,
'showClomnuBtn': false,
'searchSize': 'mini',
'addBtn': false,
'editBtn': false,
'delBtn': false,
'dicUrl': '/admin/dict/type/log_type',
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
menuWidth: 150,
align: 'center',
refreshBtn: true,
showClomnuBtn: false,
searchSize: 'mini',
addBtn: false,
editBtn: false,
delBtn: false,
viewBtn: true,
dicUrl: '/admin/dict/type/log_type',
props: {
label: 'label',
value: 'value'
},
'column': [{
column: [{
label: '类型',
prop: 'type',
type: 'select',
dicData: 'log_type',
search: true
}, {
label: '请求接口名称',
label: '标题',
prop: 'title'
}, {
label: 'IP地址',
......@@ -52,9 +53,11 @@ export const tableOption = {
label: '客户端',
prop: 'serviceId'
}, {
width: 80,
label: '请求时间',
prop: 'time'
}, {
width: 150,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
......
......@@ -15,74 +15,74 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export const tableOption = {
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
editBtn: false,
delBtn: false,
align: 'center',
addBtn: false,
column: [{
fixed: true,
label: 'id',
prop: 'roleId',
span: 24,
editDisabled: true,
addVisdiplay: false,
}, {
fixed: true,
label: '角色名称',
prop: 'roleName',
span: 24,
rules: [{
required: true,
message: '角色名称不能为空',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
]
}, {
width: 150,
label: '角色标识',
prop: 'roleCode',
span: 24,
editDisabled: true,
rules: [{
required: true,
message: '角色标识不能为空',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
]
}, {
width: 180,
label: '角色描述',
prop: 'roleDesc',
overHidden: true,
type: 'textarea',
minRows: 6,
span: 24,
}, {
width: 180,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
editDisabled: true,
addVisdiplay: false,
span: 24,
}]
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
editBtn: false,
delBtn: false,
align: 'center',
addBtn: false,
column: [{
fixed: true,
label: 'id',
prop: 'roleId',
span: 24,
editDisabled: true,
addVisdiplay: false,
}, {
fixed: true,
label: '角色名称',
prop: 'roleName',
span: 24,
rules: [{
required: true,
message: '角色名称不能为空',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
]
}, {
width: 150,
label: '角色标识',
prop: 'roleCode',
span: 24,
editDisabled: true,
rules: [{
required: true,
message: '角色标识不能为空',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
]
}, {
width: 180,
label: '角色描述',
prop: 'roleDesc',
overHidden: true,
type: 'textarea',
minRows: 6,
span: 24,
}, {
width: 180,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
editDisabled: true,
addVisdiplay: false,
span: 24,
}]
}
......@@ -16,73 +16,77 @@
*/
export const tableOption = {
"border": true,
"index": true,
"stripe": true,
"menuAlign": "center",
"align": "center",
"editBtn": false,
"delBtn": false,
"addBtn": false,
'dicUrl': '/admin/dict/type/social_type',
"column": [{
label: 'ID',
prop: 'id',
hide: true,
addVisdiplay: false,
editDisabled: true
},
{
label: '类型',
prop: 'type',
type: 'select',
dicData: 'social_type',
search: true,
rules: [{
required: true,
message: '请选择类型',
trigger: 'blur'
}]
},
{
label: '描述',
prop: 'remark'
},
{
label: 'appId',
prop: 'appId',
rules: [{
required: true,
message: '请输入appId',
trigger: 'blur'
}]
},
{
label: 'appSecret',
prop: 'appSecret',
rules: [{
required: true,
message: '请输入appSecret',
trigger: 'blur'
}]
},
{
label: '回调地址',
prop: 'redirectUrl',
rules: [{
required: true,
message: '请输入回调地址',
trigger: 'blur'
}]
},
{
valueFormat: 'timestamp',
format: 'yyyy-MM-dd hh:mm:ss',
label: '创建时间',
prop: 'createTime',
align: 'center',
addVisdiplay: false,
editDisabled: true
}
]
}
\ No newline at end of file
border: true,
index: true,
stripe: true,
menuAlign: "center",
align: "center",
editBtn: false,
delBtn: false,
addBtn: false,
viewBtn: true,
dicUrl: '/admin/dict/type/social_type',
column: [{
label: 'ID',
prop: 'id',
hide: true,
addVisdiplay: false,
editDisabled: true
},
{
label: '类型',
prop: 'type',
type: 'select',
dicData: 'social_type',
search: true,
rules: [{
required: true,
message: '请选择类型',
trigger: 'blur'
}]
},
{
label: '描述',
prop: 'remark'
},
{
label: 'appId',
prop: 'appId',
overHidden: true,
rules: [{
required: true,
message: '请输入appId',
trigger: 'blur'
}]
},
{
label: 'appSecret',
prop: 'appSecret',
overHidden: true,
rules: [{
required: true,
message: '请输入appSecret',
trigger: 'blur'
}]
},
{
label: '回调地址',
prop: 'redirectUrl',
hide: true,
rules: [{
required: true,
message: '请输入回调地址',
trigger: 'blur'
}]
},
{
valueFormat: 'timestamp',
format: 'yyyy-MM-dd hh:mm:ss',
label: '创建时间',
prop: 'createTime',
align: 'center',
addVisdiplay: false,
editDisabled: true
}
]
}
......@@ -16,53 +16,54 @@
*/
const DIC = {
vaild: [{
label: '否',
value: 'false'
}, {
label: '是',
value: 'true'
}]
vaild: [{
label: '否',
value: 'false'
}, {
label: '是',
value: 'true'
}]
}
export const tableOption = {
'border': true,
'index': true,
'indexLabel': '序号',
'stripe': true,
'menuAlign': 'center',
'align': 'center',
'addBtn': false,
'editBtn': false,
'delBtn': false,
'dic': [],
'column': [{
label: '用户ID',
prop: 'user_id',
align: 'center'
}, {
label: '用户名',
prop: 'user_name',
align: 'center'
}, {
label: '令牌',
prop: 'token_value',
align: 'center',
'overHidden': true
}, {
label: '类型',
prop: 'token_type',
align: 'center'
}, {
label: '过期时间',
prop: 'expires_in',
align: 'center'
}, {
label: '客户端',
prop: 'client_id',
align: 'center'
}, {
label: '授权类型',
prop: 'grant_type',
align: 'center'
}]
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
align: 'center',
viewBtn: true,
addBtn: false,
editBtn: false,
delBtn: false,
dic: [],
column: [{
label: '用户ID',
prop: 'user_id',
align: 'center'
}, {
label: '用户名',
prop: 'user_name',
align: 'center'
}, {
label: '令牌',
prop: 'token_value',
align: 'center',
'overHidden': true
}, {
label: '类型',
prop: 'token_type',
align: 'center'
}, {
label: '过期时间',
prop: 'expires_in',
align: 'center'
}, {
label: '客户端',
prop: 'client_id',
align: 'center'
}, {
label: '授权类型',
prop: 'grant_type',
align: 'center'
}]
}
......@@ -14,132 +14,133 @@
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
import { getDetails } from "@/api/admin/user";
import {getDetails} from "@/api/admin/user";
var validateUsername = (rule, value, callback) => {
getDetails(value).then(response => {
if (window.boxType === 'edit') callback()
let result = response.data.data
if (result !== null) {
callback(new Error('用户名已经存在'))
} else {
callback()
}
});
getDetails(value).then(response => {
if (window.boxType === 'edit') callback()
let result = response.data.data
if (result !== null) {
callback(new Error('用户名已经存在'))
} else {
callback()
}
});
};
export const tableOption = {
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
editBtn: false,
delBtn: false,
align: 'center',
addBtn: false,
column: [{
fixed: true,
label: 'id',
prop: 'userId',
span: 24,
hide: true,
editDisabled: true,
addVisdiplay: false,
}, {
fixed: true,
label: '用户名',
prop: 'username',
editDisabled: true,
solt: true,
search: true,
span: 24,
rules: [{
required: true,
message: "请输入用户名",
},
{
min: 3,
max: 20,
message: "长度在 3 到 20 个字符",
trigger: "blur"
},
{ validator: validateUsername, trigger: 'blur' }
]
}, {
label: '密码',
prop: 'password',
type: 'password',
value: '',
hide: true,
span: 24,
rules: [{
min: 6,
max: 20,
message: "长度在 6 到 20 个字符",
trigger: "blur"
}]
}, {
label: '所属部门',
prop: 'deptId',
formsolt: true,
solt: true,
span: 24,
hide: true,
rules: [{
required: true,
message: "请选择部门",
trigger: "blur"
}]
}, {
label: '手机号',
prop: 'phone',
type: 'phone',
value: '',
span: 24,
rules: [{
min: 6,
max: 20,
message: "长度在 11 个字符",
trigger: "blur"
}]
},{
label: '角色',
prop: 'role',
formsolt: true,
solt: true,
overHidden: true,
span: 24,
rules: [{
required: true,
message: "请选择角色",
trigger: "blur"
}],
}, {
label: '状态',
prop: "lockFlag",
type: "select",
solt: true,
span: 24,
rules: [{
required: true,
message: "请选择状态",
trigger: "blur"
}],
dicData: [{
label: '有效',
value: "0"
}, {
label: '锁定',
value: "9"
}]
border: true,
index: true,
indexLabel: '序号',
stripe: true,
menuAlign: 'center',
editBtn: false,
delBtn: false,
align: 'center',
addBtn: false,
column: [{
fixed: true,
label: 'id',
prop: 'userId',
span: 24,
hide: true,
editDisabled: true,
addVisdiplay: false,
}, {
fixed: true,
label: '用户名',
prop: 'username',
editDisabled: true,
solt: true,
search: true,
span: 24,
rules: [{
required: true,
message: "请输入用户名",
},
{
min: 3,
max: 20,
message: "长度在 3 到 20 个字符",
trigger: "blur"
},
{validator: validateUsername, trigger: 'blur'}
]
}, {
label: '密码',
prop: 'password',
type: 'password',
value: '',
hide: true,
span: 24,
rules: [{
min: 6,
max: 20,
message: "长度在 6 到 20 个字符",
trigger: "blur"
}]
}, {
label: '所属部门',
prop: 'deptId',
formsolt: true,
solt: true,
span: 24,
hide: true,
rules: [{
required: true,
message: "请选择部门",
trigger: "blur"
}]
}, {
label: '手机号',
prop: 'phone',
type: 'phone',
value: '',
span: 24,
rules: [{
min: 6,
max: 20,
message: "长度在 11 个字符",
trigger: "blur"
}]
}, {
label: '角色',
prop: 'role',
formsolt: true,
solt: true,
overHidden: true,
span: 24,
rules: [{
required: true,
message: "请选择角色",
trigger: "blur"
}],
}, {
label: '状态',
prop: "lockFlag",
type: "select",
solt: true,
span: 24,
rules: [{
required: true,
message: "请选择状态",
trigger: "blur"
}],
dicData: [{
label: '有效',
value: "0"
}, {
width: 180,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
editDisabled: true,
addVisdiplay: false,
span: 24
label: '锁定',
value: "9"
}]
}, {
width: 180,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
editDisabled: true,
addVisdiplay: false,
span: 24
}]
}
......@@ -15,84 +15,84 @@
* Author: lengleng (wangiegie@gmail.com)
*/
const DIC = {
isSuccess: [{
label: '成功',
value: 1
},
{
label: '失败',
value: 0
}
]
isSuccess: [{
label: '成功',
value: 1
},
{
label: '失败',
value: 0
}
]
}
export const tableOption = {
'border': true,
'index': true,
'indexLabel': '序号',
'stripe': true,
'menuAlign': "center",
'align': "center",
'editBtn': false,
'delBtn': false,
'addBtn': false,
'viewBtn':true,
'dic': [],
'column': [
{
label: 'ID',
prop: 'id',
hide: true
},
{
label: '任务名称',
prop: 'jobName'
},
{
label: '任务ID',
prop: 'taskId',
hide: true,
overHidden: true
},
{
label: '主机名',
prop: 'hostname',
hide: true
},
{
label: 'IP',
prop: 'ip'
},
{
width: 80,
label: '分片项',
prop: 'shardingItem'
},
{
label: '执行源',
prop: 'executionSource',
hide: true
},
{
label: '失败原因',
prop: 'failureCause',
hide: true
},
{
width: 100,
label: '执行结果',
prop: 'isSuccess',
type: 'select',
dicData: DIC.isSuccess,
},
{
label: '开始时间',
prop: 'startTime',
hide: true
},
{
label: '完成时间',
prop: 'completeTime'
},
]
'border': true,
'index': true,
'indexLabel': '序号',
'stripe': true,
'menuAlign': "center",
'align': "center",
'editBtn': false,
'delBtn': false,
'addBtn': false,
'viewBtn': true,
'dic': [],
'column': [
{
label: 'ID',
prop: 'id',
hide: true
},
{
label: '任务名称',
prop: 'jobName'
},
{
label: '任务ID',
prop: 'taskId',
hide: true,
overHidden: true
},
{
label: '主机名',
prop: 'hostname',
hide: true
},
{
label: 'IP',
prop: 'ip'
},
{
width: 80,
label: '分片项',
prop: 'shardingItem'
},
{
label: '执行源',
prop: 'executionSource',
hide: true
},
{
label: '失败原因',
prop: 'failureCause',
hide: true
},
{
width: 100,
label: '执行结果',
prop: 'isSuccess',
type: 'select',
dicData: DIC.isSuccess,
},
{
label: '开始时间',
prop: 'startTime',
hide: true
},
{
label: '完成时间',
prop: 'completeTime'
},
]
}
......@@ -16,89 +16,89 @@
*/
const DIC = {
state: [{
label: '准备中',
value: 'TASK_STAGING'
},
{
label: '执行中',
value: 'TASK_RUNNING'
}, {
label: '已经完成',
value: 'TASK_FINISHED'
}
]
state: [{
label: '准备中',
value: 'TASK_STAGING'
},
{
label: '执行中',
value: 'TASK_RUNNING'
}, {
label: '已经完成',
value: 'TASK_FINISHED'
}
]
}
export const tableOption = {
"border": true,
"index": true,
"stripe": true,
"menuAlign": "center",
"align": "center",
"editBtn": false,
"delBtn": false,
"addBtn": false,
"viewBtn": true,
"dic": [],
"column": [{
label: 'ID',
prop: 'id',
hide: true
"border": true,
"index": true,
"stripe": true,
"menuAlign": "center",
"align": "center",
"editBtn": false,
"delBtn": false,
"addBtn": false,
"viewBtn": true,
"dic": [],
"column": [{
label: 'ID',
prop: 'id',
hide: true
},
{
label: '作业名称',
prop: 'jobName',
search: true
},
{
label: '原任务',
prop: 'originalTaskId',
hide: true,
width: 100
},
{
label: '任务ID',
prop: 'taskId',
hide: true
},
{
label: '服务器IP',
prop: 'slaveId'
},
{
label: '资源',
prop: 'source',
hide: true
},
{
label: '执行类型',
prop: 'executionType',
hide: true
},
{
width: 100,
label: '分片项',
prop: 'shardingItem'
},
{
width: 100,
label: '状态',
prop: 'state',
type: 'select',
dicData: DIC.state,
search: true
},
{
label: '消息',
prop: 'message',
width: 100,
overHidden: true,
hide: true
},
{
label: '作业名称',
prop: 'jobName',
search: true
},
{
label: '原任务',
prop: 'originalTaskId',
hide: true,
width: 100
},
{
label: '任务ID',
prop: 'taskId',
hide: true
},
{
label: '服务器IP',
prop: 'slaveId'
},
{
label: '资源',
prop: 'source',
hide: true
},
{
label: '执行类型',
prop: 'executionType',
hide: true
},
{
width: 100,
label: '分片项',
prop: 'shardingItem'
},
{
width: 100,
label: '状态',
prop: 'state',
type: 'select',
dicData: DIC.state,
search: true
},
{
label: '消息',
prop: 'message',
width: 100,
overHidden: true,
hide: true
},
{
label: '创建时间',
prop: 'creationTime'
}
]
{
label: '创建时间',
prop: 'creationTime'
}
]
}
......@@ -16,66 +16,66 @@
*/
export const tableOption = {
'border': true,
'index': true,
'expand': true,
'stripe': true,
'selection': true,
'page': false,
'menuAlign': 'center',
'defaultSort': {
prop: 'username',
order: 'descending'
},
'align': 'center',
'dic': [],
'column': [{
'label': '用户名',
'prop': 'username',
'span': 24,
'solt': true,
'sortable': true,
'width': 120,
'rules': [{
'required': true,
'message': '请输入用户名',
'trigger': 'blur'
}]
}, {
'label': '类型',
'prop': 'type',
'width': 80,
'type': 'select',
'sortable': true,
'dicData': [{
'label': '后端',
'value': '0'
}, {
'label': '前端',
'value': '1'
}]
}, {
'label': 'stars',
'width': '150',
'prop': 'stars',
'sortable': true,
'solt': true
}, {
'label': '码云',
'solt': true,
'span': 24,
'prop': 'address',
'type': 'textarea',
'overHidden': true
'border': true,
'index': true,
'expand': true,
'stripe': true,
'selection': true,
'page': false,
'menuAlign': 'center',
'defaultSort': {
prop: 'username',
order: 'descending'
},
'align': 'center',
'dic': [],
'column': [{
'label': '用户名',
'prop': 'username',
'span': 24,
'solt': true,
'sortable': true,
'width': 120,
'rules': [{
'required': true,
'message': '请输入用户名',
'trigger': 'blur'
}]
}, {
'label': '类型',
'prop': 'type',
'width': 80,
'type': 'select',
'sortable': true,
'dicData': [{
'label': '后端',
'value': '0'
}, {
'label': '项目介绍',
'width': '300',
'prop': 'info',
'editDisabled': true,
'type': 'textarea',
'span': 24,
'maxRow': 4,
'minRow': 4,
'overHidden': true
'label': '前端',
'value': '1'
}]
}
\ No newline at end of file
}, {
'label': 'stars',
'width': '150',
'prop': 'stars',
'sortable': true,
'solt': true
}, {
'label': '码云',
'solt': true,
'span': 24,
'prop': 'address',
'type': 'textarea',
'overHidden': true
}, {
'label': '项目介绍',
'width': '300',
'prop': 'info',
'editDisabled': true,
'type': 'textarea',
'span': 24,
'maxRow': 4,
'minRow': 4,
'overHidden': true
}]
}
This diff is collapsed.
export default {
'000': '操作太频繁,请勿重复请求',
'401': '当前操作没有权限',
'403': '当前操作没有权限',
'404': '资源不存在',
'417': '未绑定登录账号,请使用密码登录后绑定',
'423': '演示环境不能操作,如需了解联系冷冷',
'426': '用户名不存在或密码错误',
'428': '验证码错误,请重新输入',
'429': '请求过频繁',
'479': '演示环境,没有权限操作',
'default': '系统未知错误,请反馈给管理员'
}
\ No newline at end of file
'000': '操作太频繁,请勿重复请求',
'401': '当前操作没有权限',
'403': '当前操作没有权限',
'404': '资源不存在',
'417': '未绑定登录账号,请使用密码登录后绑定',
'423': '演示环境不能操作,如需了解联系冷冷',
'426': '用户名不存在或密码错误',
'428': '验证码错误,请重新输入',
'429': '请求过频繁',
'479': '演示环境,没有权限操作',
'default': '系统未知错误,请反馈给管理员'
}
export default {
menu: false,
addBtn: false,
page: false,
border: true,
expand: true,
refreshBtn: false,
headerAlign: 'center',
column: [{
label: '类型',
prop: 'type',
width: 80,
align: 'center',
solt: true,
dicData: [{
label: 'bug',
value: 'error'
}]
}, {
label: '地址',
width: 200,
prop: 'url',
overHidden: true,
}, {
label: '内容',
prop: 'message',
overHidden: true,
}, {
label: '错误堆栈',
prop: 'stack',
hide: true
}, {
label: '时间',
align: 'center',
prop: 'time',
width: 200,
menu: false,
addBtn: false,
page: false,
border: true,
expand: true,
refreshBtn: false,
headerAlign: 'center',
column: [{
label: '类型',
prop: 'type',
width: 80,
align: 'center',
solt: true,
dicData: [{
label: 'bug',
value: 'error'
}]
}
\ No newline at end of file
}, {
label: '地址',
width: 200,
prop: 'url',
overHidden: true,
}, {
label: '内容',
prop: 'message',
overHidden: true,
}, {
label: '错误堆栈',
prop: 'stack',
hide: true
}, {
label: '时间',
align: 'center',
prop: 'time',
width: 200,
}]
}
const dicData = [{
label: '开启',
value: 'true'
label: '开启',
value: 'true'
}, {
label: '关闭',
value: 'false'
label: '关闭',
value: 'false'
}]
export const list = [{
key: 'showTag',
commit: 'SET_SHOWTAG'
key: 'showTag',
commit: 'SET_SHOWTAG'
}, {
key: 'showTheme',
commit: 'SET_SHOWTHEME'
key: 'showTheme',
commit: 'SET_SHOWTHEME'
}, {
key: 'showColor',
commit: 'SET_SHOWCOLOR'
key: 'showColor',
commit: 'SET_SHOWCOLOR'
}, {
key: 'showLock',
commit: 'SET_SHOWLOCK'
key: 'showLock',
commit: 'SET_SHOWLOCK'
}, {
key: 'showDebug',
commit: 'SET_SHOWDEBUG'
key: 'showDebug',
commit: 'SET_SHOWDEBUG'
}, {
key: 'showFullScren',
commit: 'SET_SHOWFULLSCREN'
key: 'showFullScren',
commit: 'SET_SHOWFULLSCREN'
}, {
key: 'showCollapse',
commit: 'SET_SHOWCOLLAPSE'
key: 'showCollapse',
commit: 'SET_SHOWCOLLAPSE'
}, {
key: 'showSearch',
commit: 'SET_SHOWSEARCH'
key: 'showSearch',
commit: 'SET_SHOWSEARCH'
}, {
key: 'showMenu',
commit: 'SET_SHOWMENU'
key: 'showMenu',
commit: 'SET_SHOWMENU'
}]
export const option = (safe) => {
const _safe = safe;
return {
submitBtn: false,
column: [{
label: '标签',
prop: 'showTag',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '日志',
prop: 'showDebug',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '主题',
prop: 'showTheme',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '主题色',
prop: 'showColor',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '全屏',
prop: 'showFullScren',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '锁屏',
prop: 'showLock',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '搜索',
prop: 'showSearch',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '缩放',
prop: 'showCollapse',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}, {
label: '顶部菜单',
prop: 'showMenu',
type: 'switch',
span: 24,
dicData: dicData,
click: ({ column }) => {
_safe.set(column.prop);
}
}]
}
}
\ No newline at end of file
const _safe = safe;
return {
submitBtn: false,
column: [{
label: '标签',
prop: 'showTag',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '日志',
prop: 'showDebug',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '主题',
prop: 'showTheme',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '主题色',
prop: 'showColor',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '全屏',
prop: 'showFullScren',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '锁屏',
prop: 'showLock',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '搜索',
prop: 'showSearch',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '缩放',
prop: 'showCollapse',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}, {
label: '顶部菜单',
prop: 'showMenu',
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
}
}]
}
}
export default {
title: "PigX",
logo: "PigX",
indexTitle: 'PigX Pro 快速开发框架',
whiteList: ["/login", "/404", "/401", "/lock"], //配置无权限可以访问的页面
whiteTagList: ["/login", "/404", "/401", "/lock", ], //配置不添加tags页面 ('/advanced-router/mutative-detail/*'——*为通配符)
lockPage: '/lock',
tokenTime: 6000,
info: {
title: "PigX Pro 快速开发框架",
list: [
'一个基于Spring Cloud、OAuth2.0开发基于Vue前后分离的开发平台。',
'一个基于Avue2 开发无需前端知识,即可快速上手的开发平台。',
'最大程度上帮助企业节省时间成本和费用开支。',
'QQ群:23754102',
'当前版本:v2.0.0',
]
},
//http的status默认放行不才用统一处理的,
statusWhiteList: [400, 500, 401],
//配置首页不可关闭
isFirstPage: false,
fistPage: {
label: "首页",
value: "/wel/index",
params: {},
query: {},
group: [],
close: false
},
//配置菜单的属性
menu: {
props: {
label: 'label',
path: 'path',
icon: 'icon',
children: 'children'
}
title: "PigX",
logo: "PigX",
indexTitle: 'PigX Pro 快速开发框架',
whiteList: ["/login", "/404", "/401", "/lock"], //配置无权限可以访问的页面
whiteTagList: ["/login", "/404", "/401", "/lock",], //配置不添加tags页面 ('/advanced-router/mutative-detail/*'——*为通配符)
lockPage: '/lock',
tokenTime: 6000,
info: {
title: "PigX Pro 快速开发框架",
list: [
'一个基于Spring Cloud、OAuth2.0开发基于Vue前后分离的开发平台。',
'一个基于Avue2 开发无需前端知识,即可快速上手的开发平台。',
'最大程度上帮助企业节省时间成本和费用开支。',
'QQ群:23754102',
'当前版本:v2.0.0',
]
},
//http的status默认放行不才用统一处理的,
statusWhiteList: [400, 500, 401],
//配置首页不可关闭
isFirstPage: false,
fistPage: {
label: "首页",
value: "/wel/index",
params: {},
query: {},
group: [],
close: false
},
//配置菜单的属性
menu: {
props: {
label: 'label',
path: 'path',
icon: 'icon',
children: 'children'
}
}
\ No newline at end of file
}
}
import Vue from 'vue';
import store from './store'
Vue.config.errorHandler = function(err, vm, info) {
Vue.nextTick(() => {
store.commit('ADD_LOGS', {
type: 'error',
message: err.message,
stack: err.stack,
info
})
if (process.env.NODE_ENV === 'development') {
console.group('>>>>>> 错误信息 >>>>>>')
console.log(info)
console.groupEnd();
console.group('>>>>>> Vue 实例 >>>>>>')
console.log(vm)
console.groupEnd();
console.group('>>>>>> Error >>>>>>')
console.log(err)
console.groupEnd();
}
Vue.config.errorHandler = function (err, vm, info) {
Vue.nextTick(() => {
store.commit('ADD_LOGS', {
type: 'error',
message: err.message,
stack: err.stack,
info
})
}
\ No newline at end of file
if (process.env.NODE_ENV === 'development') {
console.group('>>>>>> 错误信息 >>>>>>')
console.log(info)
console.groupEnd();
console.group('>>>>>> Vue 实例 >>>>>>')
console.log(vm)
console.groupEnd();
console.group('>>>>>> Error >>>>>>')
console.log(err)
console.groupEnd();
}
})
}
function pluralize(time, label) {
if (time === 1) {
return time + label
}
return time + label + 's'
if (time === 1) {
return time + label
}
return time + label + 's'
}
/**
* 日期格式化
*/
export function dateFormat(date) {
let format = 'yyyy-MM-dd hh:mm:ss';
if (date != 'Invalid Date') {
var o = {
"M+": date.getMonth() + 1, //month
"d+": date.getDate(), //day
"h+": date.getHours(), //hour
"m+": date.getMinutes(), //minute
"s+": date.getSeconds(), //second
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
"S": date.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
let format = 'yyyy-MM-dd hh:mm:ss';
if (date != 'Invalid Date') {
var o = {
"M+": date.getMonth() + 1, //month
"d+": date.getDate(), //day
"h+": date.getHours(), //hour
"m+": date.getMinutes(), //minute
"s+": date.getSeconds(), //second
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
"S": date.getMilliseconds() //millisecond
}
return '';
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}
return '';
}
export function timeAgo(time) {
const between = Date.now() / 1000 - Number(time)
if (between < 3600) {
return pluralize(~~(between / 60), ' minute')
} else if (between < 86400) {
return pluralize(~~(between / 3600), ' hour')
} else {
return pluralize(~~(between / 86400), ' day')
}
const between = Date.now() / 1000 - Number(time)
if (between < 3600) {
return pluralize(~~(between / 60), ' minute')
} else if (between < 86400) {
return pluralize(~~(between / 3600), ' hour')
} else {
return pluralize(~~(between / 86400), ' day')
}
}
export function parseTime(time, cFormat) {
if (arguments.length === 0) {
return null
}
if (arguments.length === 0) {
return null
}
if ((time + '').length === 10) {
time = +time * 1000
}
if ((time + '').length === 10) {
time = +time * 1000
}
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
date = new Date(parseInt(time))
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
date = new Date(parseInt(time))
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
if (result.length > 0 && value < 10) {
value = '0' + value
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
return value || 0
})
return time_str
}
export function formatTime(time, option) {
time = +time * 1000
const d = new Date(time)
const now = Date.now()
time = +time * 1000
const d = new Date(time)
const now = Date.now()
const diff = (now - d) / 1000
const diff = (now - d) / 1000
if (diff < 30) {
return '刚刚'
} else if (diff < 3600) { // less 1 hour
return Math.ceil(diff / 60) + '分钟前'
} else if (diff < 3600 * 24) {
return Math.ceil(diff / 3600) + '小时前'
} else if (diff < 3600 * 24 * 2) {
return '1天前'
}
if (option) {
return parseTime(time, option)
} else {
return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
}
if (diff < 30) {
return '刚刚'
} else if (diff < 3600) { // less 1 hour
return Math.ceil(diff / 60) + '分钟前'
} else if (diff < 3600 * 24) {
return Math.ceil(diff / 3600) + '小时前'
} else if (diff < 3600 * 24 * 2) {
return '1天前'
}
if (option) {
return parseTime(time, option)
} else {
return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
}
}
/* 数字 格式化*/
export function nFormatter(num, digits) {
const si = [
{ value: 1E18, symbol: 'E' },
{ value: 1E15, symbol: 'P' },
{ value: 1E12, symbol: 'T' },
{ value: 1E9, symbol: 'G' },
{ value: 1E6, symbol: 'M' },
{ value: 1E3, symbol: 'k' }
]
for (let i = 0; i < si.length; i++) {
if (num >= si[i].value) {
return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
}
const si = [
{value: 1E18, symbol: 'E'},
{value: 1E15, symbol: 'P'},
{value: 1E12, symbol: 'T'},
{value: 1E9, symbol: 'G'},
{value: 1E6, symbol: 'M'},
{value: 1E3, symbol: 'k'}
]
for (let i = 0; i < si.length; i++) {
if (num >= si[i].value) {
return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
}
return num.toString()
}
return num.toString()
}
export function html2Text(val) {
const div = document.createElement('div')
div.innerHTML = val
return div.textContent || div.innerText
const div = document.createElement('div')
div.innerHTML = val
return div.textContent || div.innerText
}
export function toThousandslsFilter(num) {
return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}
\ No newline at end of file
return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}
......@@ -10,32 +10,26 @@ import router from './router/router';
import 'avue-plugin-transfer/packages' //引入avue-plugin-transfer插件
// import 'avue-plugin-ueditor/packages' //引入avue-plugin-ueditor插件(如果要兼容ie自行换掉富文本编辑器,此款插件不兼容ie)
import store from './store';
import {
loadStyle
} from './util/util'
import {loadStyle} from './util/util'
import * as urls from '@/config/env';
import {
iconfontUrl,
iconfontVersion
} from '@/config/env';
import {iconfontUrl, iconfontVersion} from '@/config/env';
import * as filters from './filters' // 全局filter
import './styles/common.scss';
// // 引入avue的包
import Avue from '@smallwei/avue/lib/index.js';
// // 引入avue的样式文件
import '@smallwei/avue/lib/theme-chalk/index.css';
// //源文件包
// import '../packages/index.js';
// import '../packages/theme-chalk/src/index.scss';
import basicContainer from './components/basic-container/main'
import VueClipboard from 'vue-clipboard2'
// 插件 json 展示
import vueJsonTreeView from 'vue-json-tree-view'
// //源文件包
// import '../packages/index.js';
// import '../packages/theme-chalk/src/index.scss';
Vue.use(Avue, { menuType : 'text'});
Vue.use(Avue, {menuType: 'text'});
Vue.use(router)
......@@ -48,21 +42,21 @@ Vue.use(VueAxios, axios)
Vue.component('basicContainer', basicContainer)
Object.keys(urls).forEach(key => {
Vue.prototype[key] = urls[key];
Vue.prototype[key] = urls[key];
})
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
Vue.filter(key, filters[key])
})
iconfontVersion.forEach(ele => {
loadStyle(iconfontUrl.replace('$key', ele));
loadStyle(iconfontUrl.replace('$key', ele));
})
Vue.config.productionTip = false;
new Vue({
router,
store,
render: h => h(App)
router,
store,
render: h => h(App)
}).$mount('#app')
......@@ -22,84 +22,90 @@
</div>
</template>
<script>
import { mapGetters, mapState } from "vuex";
export default {
name: "lock",
data () {
return {
passwd: "",
passwdError: false,
pass: false
};
},
created () { },
mounted () { },
computed: {
...mapState({
userInfo: state => state.user.userInfo
}),
...mapGetters(["tag", "lockPasswd"])
},
props: [],
methods: {
handleLogout () {
this.$confirm("是否退出系统, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$store.dispatch("LogOut").then(() => {
this.$router.push({ path: "/login" });
});
});
import {mapGetters, mapState} from "vuex";
export default {
name: "lock",
data() {
return {
passwd: "",
passwdError: false,
pass: false
};
},
created() {
},
mounted() {
},
handleLogin () {
if (this.passwd != this.lockPasswd) {
this.passwd = "";
this.$message({
message: "解锁密码错误,请重新输入",
type: "error"
computed: {
...mapState({
userInfo: state => state.user.userInfo
}),
...mapGetters(["tag", "lockPasswd"])
},
props: [],
methods: {
handleLogout() {
this.$confirm("是否退出系统, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.$store.dispatch("LogOut").then(() => {
this.$router.push({path: "/login"});
});
});
this.passwdError = true;
},
handleLogin() {
if (this.passwd != this.lockPasswd) {
this.passwd = "";
this.$message({
message: "解锁密码错误,请重新输入",
type: "error"
});
this.passwdError = true;
setTimeout(() => {
this.passwdError = false;
}, 1000);
return;
}
this.pass = true;
setTimeout(() => {
this.passwdError = false;
this.$store.commit("CLEAR_LOCK");
this.$router.push({path: this.$router.$avueRouter.getPath({src: this.tag.value})});
}, 1000);
return;
}
this.pass = true;
setTimeout(() => {
this.$store.commit("CLEAR_LOCK");
this.$router.push({ path: this.$router.$avueRouter.getPath({ src: this.tag.value }) });
}, 1000);
}
},
components: {}
};
},
components: {}
};
</script>
<style lang="scss">
.lock-container {
display: flex;
align-items: center;
justify-content: center;
position: relative;
.title {
margin-bottom: 8px;
color: #333;
.lock-container {
display: flex;
align-items: center;
justify-content: center;
position: relative;
.title {
margin-bottom: 8px;
color: #333;
}
}
.lock-container::before {
z-index: -999;
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-image: url('/img/login.png');
background-size: cover;
}
.lock-form {
width: 300px;
}
}
.lock-container::before {
z-index: -999;
content: '';
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-image: url('/img/login.png');
background-size: cover;
}
.lock-form {
width: 300px;
}
</style>
\ No newline at end of file
</style>
......@@ -20,11 +20,10 @@
class="login-select animated fadeIn"
v-model="active"
@change="handleCommand"
placeholder="请选择租户,不选为默认"
size="mini"
>
<el-option label="租户1" value="1"></el-option>
<el-option label="租户2" value="2"></el-option>
placeholder="点击请选择租户"
size="mini">
<el-option label="租户1 用户登录" value="1"></el-option>
<el-option label="租户2 用户登录" value="2"></el-option>
</el-select>
</h4>
<userLogin v-if="activeName==='user'"></userLogin>
......
......@@ -57,7 +57,6 @@
</el-row>
</el-form-item>
<el-checkbox v-model="checked">记住账号</el-checkbox>
<el-form-item>
<el-button type="primary"
size="small"
......
......@@ -57,78 +57,80 @@
</template>
<script>
import { mapGetters } from 'vuex';
export default {
name: 'wel',
data() {
return {
activeNames: ['1', '2', '3', '4'],
DATA: [],
text: '',
actor: '',
count: 0,
isText: false
import {mapGetters} from 'vuex';
export default {
name: 'wel',
data() {
return {
activeNames: ['1', '2', '3', '4'],
DATA: [],
text: '',
actor: '',
count: 0,
isText: false
}
},
computed: {
...mapGetters(['website'])
},
methods: {
getData() {
if (this.count < this.DATA.length - 1) {
this.count++
} else {
this.count = 0
}
this.isText = true
this.actor = this.DATA[this.count]
},
setData() {
let num = 0
let count = 0
let active = false
let timeoutstart = 5000
let timeoutend = 1000
let timespeed = 10
setInterval(() => {
if (this.isText) {
if (count == this.actor.length) {
active = true
} else {
active = false
}
},
computed: {
...mapGetters(['website'])
},
methods: {
getData() {
if (this.count < this.DATA.length - 1) {
this.count++
} else {
this.count = 0
}
this.isText = true
this.actor = this.DATA[this.count]
},
setData() {
let num = 0
let count = 0
let active = false
let timeoutstart = 5000
let timeoutend = 1000
let timespeed = 10
setInterval(() => {
if (this.isText) {
if (count == this.actor.length) {
active = true
} else {
active = false
}
if (active) {
num--
this.text = this.actor.substr(0, num)
if (num == 0) {
this.isText = false
setTimeout(() => {
count = 0
this.getData()
}, timeoutend)
}
} else {
num++
this.text = this.actor.substr(0, num)
if (num == this.actor.length) {
this.isText = false
setTimeout(() => {
this.isText = true
count = this.actor.length
}, timeoutstart)
}
}
}
}, timespeed)
if (active) {
num--
this.text = this.actor.substr(0, num)
if (num == 0) {
this.isText = false
setTimeout(() => {
count = 0
this.getData()
}, timeoutend)
}
} else {
num++
this.text = this.actor.substr(0, num)
if (num == this.actor.length) {
this.isText = false
setTimeout(() => {
this.isText = true
count = this.actor.length
}, timeoutstart)
}
}
}
}
}, timespeed)
}
}
}
</script>
<style scoped="scoped" lang="scss">
.wel-contailer {
position: relative;
}
.banner-text {
position: relative;
padding: 0 20px;
......@@ -136,6 +138,7 @@
text-align: center;
color: #333;
}
.banner-img {
position: absolute;
top: 0;
......@@ -145,6 +148,7 @@
opacity: 0.8;
display: none;
}
.actor {
height: 250px;
overflow: hidden;
......
/**
* 全站权限配置
*
*
*/
import router from './router/router'
import store from './store'
import { validatenull } from '@/util/validate'
import { getToken } from '@/util/auth'
import {validatenull} from '@/util/validate'
import {getToken} from '@/util/auth'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
NProgress.configure({ showSpinner: false });
NProgress.configure({showSpinner: false});
const lockPage = store.getters.website.lockPage; //锁屏页
router.beforeEach((to, from, next) => {
//缓冲设置
if (to.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === to.fullPath;
})) {
to.meta.$keepAlive = true;
//缓冲设置
if (to.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === to.fullPath;
})) {
to.meta.$keepAlive = true;
} else {
NProgress.start()
if (to.meta.keepAlive === true && validatenull(to.meta.$keepAlive)) {
to.meta.$keepAlive = true;
} else {
NProgress.start()
if (to.meta.keepAlive === true && validatenull(to.meta.$keepAlive)) {
to.meta.$keepAlive = true;
} else {
to.meta.$keepAlive = false;
}
to.meta.$keepAlive = false;
}
const meta = to.meta || {};
if (getToken()) {
if (store.getters.isLock && to.path != lockPage) {
next({ path: lockPage })
} else if (to.path === '/login') {
next({ path: '/' })
} else {
if (store.getters.roles.length === 0) {
store.dispatch('GetUserInfo').then(() => {
next({...to, replace: true })
}).catch(() => {
store.dispatch('FedLogOut').then(() => {
next({ path: '/login' })
})
})
} else {
const value = to.query.src || to.fullPath;
const label = to.query.name || to.name;
if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
store.commit('ADD_TAG', {
label: label,
value: value,
params: to.params,
query: to.query,
group: router.$avueRouter.group || []
});
}
next()
}
}
}
const meta = to.meta || {};
if (getToken()) {
if (store.getters.isLock && to.path != lockPage) {
next({path: lockPage})
} else if (to.path === '/login') {
next({path: '/'})
} else {
if (meta.isAuth === false) {
next()
} else {
next('/login')
if (store.getters.roles.length === 0) {
store.dispatch('GetUserInfo').then(() => {
next({...to, replace: true})
}).catch(() => {
store.dispatch('FedLogOut').then(() => {
next({path: '/login'})
})
})
} else {
const value = to.query.src || to.fullPath;
const label = to.query.name || to.name;
if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
store.commit('ADD_TAG', {
label: label,
value: value,
params: to.params,
query: to.query,
group: router.$avueRouter.group || []
});
}
next()
}
}
} else {
if (meta.isAuth === false) {
next()
} else {
next('/login')
}
}
})
router.afterEach(() => {
NProgress.done();
const title = store.getters.tag.label;
router.$avueRouter.setTitle(title);
});
\ No newline at end of file
NProgress.done();
const title = store.getters.tag.label;
router.$avueRouter.setTitle(title);
});
const getters = {
tag: state => state.tags.tag,
website: state => state.common.website,
userInfo: state => state.user.userInfo,
theme: state => state.common.theme,
themeName: state => state.common.themeName,
isShade: state => state.common.isShade,
isCollapse: state => state.common.isCollapse,
keyCollapse: (state, getters) => getters.screen > 1 ? getters.isCollapse : false,
screen: state => state.common.screen,
isLock: state => state.common.isLock,
isFullScren: state => state.common.isFullScren,
lockPasswd: state => state.common.lockPasswd,
tagList: state => state.tags.tagList,
tagWel: state => state.tags.tagWel,
access_token: state => state.user.access_token,
refresh_token: state => state.user.refresh_token,
roles: state => state.user.roles,
permissions: state => state.user.permissions,
menu: state => state.user.menu,
menuAll: state => state.user.menuAll,
logsList: state => state.logs.logsList,
logsLen: state => state.logs.logsList.length || 0,
logsFlag: (state, getters) => getters.logsLen === 0
tag: state => state.tags.tag,
website: state => state.common.website,
userInfo: state => state.user.userInfo,
theme: state => state.common.theme,
themeName: state => state.common.themeName,
isShade: state => state.common.isShade,
isCollapse: state => state.common.isCollapse,
keyCollapse: (state, getters) => getters.screen > 1 ? getters.isCollapse : false,
screen: state => state.common.screen,
isLock: state => state.common.isLock,
isFullScren: state => state.common.isFullScren,
lockPasswd: state => state.common.lockPasswd,
tagList: state => state.tags.tagList,
tagWel: state => state.tags.tagWel,
access_token: state => state.user.access_token,
refresh_token: state => state.user.refresh_token,
roles: state => state.user.roles,
permissions: state => state.user.permissions,
menu: state => state.user.menu,
menuAll: state => state.user.menuAll,
logsList: state => state.logs.logsList,
logsLen: state => state.logs.logsList.length || 0,
logsFlag: (state, getters) => getters.logsLen === 0
}
export default getters
\ No newline at end of file
export default getters
......@@ -8,13 +8,13 @@ import getters from './getters'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
user,
common,
logs,
tags
},
getters,
modules: {
user,
common,
logs,
tags
},
getters,
})
export default store
\ No newline at end of file
export default store
import {
setStore,
getStore,
removeStore
} from '@/util/store'
import {getStore, removeStore, setStore} from '@/util/store'
import website from '@/const/website'
const common = {
state: {
isCollapse: false,
isFullScren: false,
isShade: false,
screen: -1,
isLock: getStore({ name: 'isLock' }) || false,
showTag: getStore({ name: 'showTag' }),
showDebug: getStore({ name: 'showDebug' }),
showCollapse: getStore({ name: 'showCollapse' }),
showSearch: getStore({ name: 'showSearch' }),
showLock: getStore({ name: 'showLock' }),
showFullScren: getStore({ name: 'showFullScren' }),
showTheme: getStore({ name: 'showTheme' }),
showColor: getStore({ name: 'showColor' }),
showMenu: getStore({ name: 'showMenu' }),
theme: getStore({ name: 'theme' }) || '#409EFF',
themeName: getStore({ name: 'themeName' }) || '',
lockPasswd: getStore({ name: 'lockPasswd' }) || '',
website: website,
},
actions: {
const common = {
state: {
isCollapse: false,
isFullScren: false,
isShade: false,
screen: -1,
isLock: getStore({name: 'isLock'}) || false,
showTag: getStore({name: 'showTag'}),
showDebug: getStore({name: 'showDebug'}),
showCollapse: getStore({name: 'showCollapse'}),
showSearch: getStore({name: 'showSearch'}),
showLock: getStore({name: 'showLock'}),
showFullScren: getStore({name: 'showFullScren'}),
showTheme: getStore({name: 'showTheme'}),
showColor: getStore({name: 'showColor'}),
showMenu: getStore({name: 'showMenu'}),
theme: getStore({name: 'theme'}) || '#409EFF',
themeName: getStore({name: 'themeName'}) || '',
lockPasswd: getStore({name: 'lockPasswd'}) || '',
website: website,
},
actions: {},
mutations: {
SET_SHADE: (state, active) => {
state.isShade = active;
},
SET_COLLAPSE: (state) => {
state.isCollapse = !state.isCollapse;
},
SET_FULLSCREN: (state) => {
state.isFullScren = !state.isFullScren;
},
SET_SHOWCOLLAPSE: (state, active) => {
state.showCollapse = active;
setStore({
name: 'showCollapse',
content: state.showCollapse
})
},
SET_SHOWTAG: (state, active) => {
state.showTag = active;
setStore({
name: 'showTag',
content: state.showTag
})
},
SET_SHOWMENU: (state, active) => {
state.showMenu = active;
setStore({
name: 'showMenu',
content: state.showMenu
})
},
SET_SHOWLOCK: (state, active) => {
state.showLock = active;
setStore({
name: 'showLock',
content: state.showLock
})
},
SET_SHOWSEARCH: (state, active) => {
state.showSearch = active;
setStore({
name: 'showSearch',
content: state.showSearch
})
},
SET_SHOWFULLSCREN: (state, active) => {
state.showFullScren = active;
setStore({
name: 'showFullScren',
content: state.showFullScren
})
},
SET_SHOWDEBUG: (state, active) => {
state.showDebug = active;
setStore({
name: 'showDebug',
content: state.showDebug
})
},
SET_SHOWTHEME: (state, active) => {
state.showTheme = active;
setStore({
name: 'showTheme',
content: state.showTheme
})
},
SET_SHOWCOLOR: (state, active) => {
state.showColor = active;
setStore({
name: 'showColor',
content: state.showColor
})
},
SET_LOCK: (state) => {
state.isLock = true;
setStore({
name: 'isLock',
content: state.isLock,
type: 'session'
})
},
SET_SCREEN: (state, screen) => {
state.screen = screen;
},
SET_THEME: (state, color) => {
state.theme = color;
setStore({
name: 'theme',
content: state.theme,
})
},
SET_THEME_NAME: (state, themeName) => {
state.themeName = themeName;
setStore({
name: 'themeName',
content: state.themeName,
})
},
SET_LOCK_PASSWD: (state, lockPasswd) => {
state.lockPasswd = lockPasswd;
setStore({
name: 'lockPasswd',
content: state.lockPasswd,
type: 'session'
})
},
CLEAR_LOCK: (state) => {
state.isLock = false;
state.lockPasswd = '';
removeStore({
name: 'lockPasswd'
});
removeStore({
name: 'isLock'
});
},
mutations: {
SET_SHADE: (state, active) => {
state.isShade = active;
},
SET_COLLAPSE: (state) => {
state.isCollapse = !state.isCollapse;
},
SET_FULLSCREN: (state) => {
state.isFullScren = !state.isFullScren;
},
SET_SHOWCOLLAPSE: (state, active) => {
state.showCollapse = active;
setStore({
name: 'showCollapse',
content: state.showCollapse
})
},
SET_SHOWTAG: (state, active) => {
state.showTag = active;
setStore({
name: 'showTag',
content: state.showTag
})
},
SET_SHOWMENU: (state, active) => {
state.showMenu = active;
setStore({
name: 'showMenu',
content: state.showMenu
})
},
SET_SHOWLOCK: (state, active) => {
state.showLock = active;
setStore({
name: 'showLock',
content: state.showLock
})
},
SET_SHOWSEARCH: (state, active) => {
state.showSearch = active;
setStore({
name: 'showSearch',
content: state.showSearch
})
},
SET_SHOWFULLSCREN: (state, active) => {
state.showFullScren = active;
setStore({
name: 'showFullScren',
content: state.showFullScren
})
},
SET_SHOWDEBUG: (state, active) => {
state.showDebug = active;
setStore({
name: 'showDebug',
content: state.showDebug
})
},
SET_SHOWTHEME: (state, active) => {
state.showTheme = active;
setStore({
name: 'showTheme',
content: state.showTheme
})
},
SET_SHOWCOLOR: (state, active) => {
state.showColor = active;
setStore({
name: 'showColor',
content: state.showColor
})
},
SET_LOCK: (state) => {
state.isLock = true;
setStore({
name: 'isLock',
content: state.isLock,
type: 'session'
})
},
SET_SCREEN: (state, screen) => {
state.screen = screen;
},
SET_THEME: (state, color) => {
state.theme = color;
setStore({
name: 'theme',
content: state.theme,
})
},
SET_THEME_NAME: (state, themeName) => {
state.themeName = themeName;
setStore({
name: 'themeName',
content: state.themeName,
})
},
SET_LOCK_PASSWD: (state, lockPasswd) => {
state.lockPasswd = lockPasswd;
setStore({
name: 'lockPasswd',
content: state.lockPasswd,
type: 'session'
})
},
CLEAR_LOCK: (state) => {
state.isLock = false;
state.lockPasswd = '';
removeStore({
name: 'lockPasswd'
});
removeStore({
name: 'isLock'
});
},
}
}
}
export default common
\ No newline at end of file
export default common
import { setStore, getStore } from '@/util/store'
import { dateFormat } from '@/filters/'
import { sendLogs } from '@/api/admin/log'
import {getStore, setStore} from '@/util/store'
import {dateFormat} from '@/filters/'
import {sendLogs} from '@/api/admin/log'
const logs = {
state: {
logsList: getStore({ name: 'logsList' }) || [],
state: {
logsList: getStore({name: 'logsList'}) || [],
},
actions: {
//发送错误日志
SendLogs({state, commit}) {
return new Promise((resolve, reject) => {
sendLogs(state.logsList).then(() => {
commit('CLEAR_LOGS');
resolve();
}).catch(error => {
reject(error)
})
})
},
actions: {
//发送错误日志
SendLogs({ state, commit }) {
return new Promise((resolve, reject) => {
sendLogs(state.logsList).then(() => {
commit('CLEAR_LOGS');
resolve();
}).catch(error => {
reject(error)
})
})
},
},
mutations: {
ADD_LOGS: (state, {type, message, stack, info}) => {
state.logsList.push(Object.assign({
url: window.location.href,
time: dateFormat(new Date())
}, {
type,
message,
stack,
info: info.toString()
}))
setStore({name: 'logsList', content: state.logsList})
},
mutations: {
ADD_LOGS: (state, { type, message, stack, info }) => {
state.logsList.push(Object.assign({
url: window.location.href,
time: dateFormat(new Date())
}, {
type,
message,
stack,
info: info.toString()
}))
setStore({ name: 'logsList', content: state.logsList })
},
CLEAR_LOGS: (state) => {
state.logsList = [];
setStore({ name: 'logsList', content: state.logsList })
}
CLEAR_LOGS: (state) => {
state.logsList = [];
setStore({name: 'logsList', content: state.logsList})
}
}
};
......
import { setStore, getStore } from '@/util/store'
import { diff } from '@/util/util'
import {getStore, setStore} from '@/util/store'
import {diff} from '@/util/util'
import website from '@/const/website'
const isFirstPage = website.isFirstPage;
const tagWel = website.fistPage;
const tagObj = {
label: '', //标题名称
value: '', //标题的路径
params: '', //标题的路径参数
query: '', //标题的参数
group: [], //分组
}
//处理首个标签
label: '', //标题名称
value: '', //标题的路径
params: '', //标题的路径参数
query: '', //标题的参数
group: [], //分组
}
//处理首个标签
function setFistTag(list) {
if (list.length == 1) {
list[0].close = false;
} else {
list.forEach(ele => {
if (ele.value === tagWel.value && isFirstPage === false) {
ele.close = false
} else {
ele.close = true
}
})
}
if (list.length == 1) {
list[0].close = false;
} else {
list.forEach(ele => {
if (ele.value === tagWel.value && isFirstPage === false) {
ele.close = false
} else {
ele.close = true
}
})
}
}
const navs = {
state: {
tagList: getStore({ name: 'tagList' }) || [],
tag: getStore({ name: 'tag' }) || tagObj,
tagWel: tagWel
state: {
tagList: getStore({name: 'tagList'}) || [],
tag: getStore({name: 'tag'}) || tagObj,
tagWel: tagWel
},
actions: {},
mutations: {
ADD_TAG: (state, action) => {
state.tag = action;
setStore({name: 'tag', content: state.tag, type: 'session'})
if (state.tagList.some(ele => diff(ele, action))) return
state.tagList.push(action)
setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'})
},
actions: {
DEL_TAG: (state, action) => {
state.tagList = state.tagList.filter(item => {
return !diff(item, action);
})
setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'})
},
DEL_ALL_TAG: (state) => {
state.tagList = [state.tagWel];
setStore({name: 'tagList', content: state.tagList, type: 'session'})
},
DEL_TAG_OTHER: (state) => {
state.tagList = state.tagList.filter(item => item.value === state.tag.value)
setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'})
},
mutations: {
ADD_TAG: (state, action) => {
state.tag = action;
setStore({ name: 'tag', content: state.tag, type: 'session' })
if (state.tagList.some(ele => diff(ele, action))) return
state.tagList.push(action)
setFistTag(state.tagList);
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
DEL_TAG: (state, action) => {
state.tagList = state.tagList.filter(item => {
return !diff(item, action);
})
setFistTag(state.tagList);
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
DEL_ALL_TAG: (state) => {
state.tagList = [state.tagWel];
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
DEL_TAG_OTHER: (state) => {
state.tagList = state.tagList.filter(item => item.value === state.tag.value)
setFistTag(state.tagList);
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
}
}
}
export default navs
\ No newline at end of file
export default navs
This diff is collapsed.
export default {
getScreen: function() {
var width = document.body.clientWidth;
if (width >= 1200) {
return 3; //大屏幕
} else if (width >= 992) {
return 2; //中屏幕
} else if (width >= 768) {
return 1; //小屏幕
} else {
return 0; //超小屏幕
}
getScreen: function () {
var width = document.body.clientWidth;
if (width >= 1200) {
return 3; //大屏幕
} else if (width >= 992) {
return 2; //中屏幕
} else if (width >= 768) {
return 1; //小屏幕
} else {
return 0; //超小屏幕
}
}
\ No newline at end of file
}
}
import Cookies from 'js-cookie'
const TokenKey = 'x-access-token'
export function getToken() {
return Cookies.get(TokenKey)
return Cookies.get(TokenKey)
}
export function setToken(token) {
return Cookies.set(TokenKey, token)
return Cookies.set(TokenKey, token)
}
export function removeToken() {
return Cookies.remove(TokenKey)
}
\ No newline at end of file
return Cookies.remove(TokenKey)
}
export const calcDate = (date1, date2) => {
var date3 = date2 - date1;
var date3 = date2 - date1;
var days = Math.floor(date3 / (24 * 3600 * 1000))
var days = Math.floor(date3 / (24 * 3600 * 1000))
var leave1 = date3 % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000))
var leave1 = date3 % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000))
var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
var minutes = Math.floor(leave2 / (60 * 1000))
var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
var minutes = Math.floor(leave2 / (60 * 1000))
var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
var seconds = Math.round(date3 / 1000)
return {
leave1,
leave2,
leave3,
days: days,
hours: hours,
minutes: minutes,
seconds: seconds,
}
}
\ No newline at end of file
var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
var seconds = Math.round(date3 / 1000)
return {
leave1,
leave2,
leave3,
days: days,
hours: hours,
minutes: minutes,
seconds: seconds,
}
}
import {
validatenull
} from '@/util/validate';
import {validatenull} from '@/util/validate';
/**
* 存储localStorage
*/
export const setStore = (params) => {
let {
name,
content,
type,
} = params;
let obj = {
dataType: typeof(content),
content: content,
type: type,
datetime: new Date().getTime()
}
if (type) window.sessionStorage.setItem(name, JSON.stringify(obj));
else window.localStorage.setItem(name, JSON.stringify(obj));
}
/**
* 获取localStorage
*/
let {
name,
content,
type,
} = params;
let obj = {
dataType: typeof (content),
content: content,
type: type,
datetime: new Date().getTime()
}
if (type) window.sessionStorage.setItem(name, JSON.stringify(obj));
else window.localStorage.setItem(name, JSON.stringify(obj));
}
/**
* 获取localStorage
*/
export const getStore = (params) => {
let {
name,
debug
} = params;
let obj = {},
content;
obj = window.sessionStorage.getItem(name);
if (validatenull(obj)) obj = window.localStorage.getItem(name);
if (validatenull(obj)) return;
obj = JSON.parse(obj);
if (debug) {
return obj;
}
if (obj.dataType == 'string') {
content = obj.content;
} else if (obj.dataType == 'number') {
content = Number(obj.content);
} else if (obj.dataType == 'boolean') {
content = eval(obj.content);
} else if (obj.dataType == 'object') {
content = obj.content;
}
return content;
}
/**
* 删除localStorage
*/
let {
name,
debug
} = params;
let obj = {},
content;
obj = window.sessionStorage.getItem(name);
if (validatenull(obj)) obj = window.localStorage.getItem(name);
if (validatenull(obj)) return;
obj = JSON.parse(obj);
if (debug) {
return obj;
}
if (obj.dataType == 'string') {
content = obj.content;
} else if (obj.dataType == 'number') {
content = Number(obj.content);
} else if (obj.dataType == 'boolean') {
content = eval(obj.content);
} else if (obj.dataType == 'object') {
content = obj.content;
}
return content;
}
/**
* 删除localStorage
*/
export const removeStore = params => {
let {
name
} = params;
window.localStorage.removeItem(name);
window.sessionStorage.removeItem(name);
let {
name
} = params;
window.localStorage.removeItem(name);
window.sessionStorage.removeItem(name);
}
/**
* 获取全部localStorage
*/
export const getAllStore = (params) => {
let list = [];
let {
type
} = params;
for (let i = 1; i <= window.sessionStorage.length; i++) {
if (type) {
list.push({
name: window.sessionStorage.key(i),
content: getStore({
name: window.sessionStorage.key(i),
type: 'session'
})
})
} else {
list.push(getStore({
name: window.localStorage.key(i),
content: getStore({
name: window.localStorage.key(i),
})
}))
}
let list = [];
let {
type
} = params;
for (let i = 1; i <= window.sessionStorage.length; i++) {
if (type) {
list.push({
name: window.sessionStorage.key(i),
content: getStore({
name: window.sessionStorage.key(i),
type: 'session'
})
})
} else {
list.push(getStore({
name: window.localStorage.key(i),
content: getStore({
name: window.localStorage.key(i),
})
}))
}
}
return list;
return list;
}
......@@ -94,12 +93,12 @@ export const getAllStore = (params) => {
* 清空全部localStorage
*/
export const clearStore = (params) => {
let {
type
} = params;
if (type) {
window.sessionStorage.clear();
return
}
window.localStorage.clear()
}
\ No newline at end of file
let {
type
} = params;
if (type) {
window.sessionStorage.clear();
return
}
window.localStorage.clear()
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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