parent
c7e48d2706
commit
b10d0e148a
17 changed files with 429 additions and 244 deletions
@ -0,0 +1,34 @@ |
||||
import request from '@/router/axios'; |
||||
|
||||
// =====================参数===========================
|
||||
|
||||
export const historyFlowList = (current, size, params) => { |
||||
return request({ |
||||
url: '/api/blade-flow/process/history-flow-list', |
||||
method: 'get', |
||||
params: { |
||||
...params, |
||||
current, |
||||
size, |
||||
} |
||||
}) |
||||
} |
||||
|
||||
|
||||
// =====================请假流程===========================
|
||||
|
||||
export const leaveProcess = (data) => { |
||||
return request({ |
||||
url: '/api/blade-desk/process/leave/start-process', |
||||
method: 'post', |
||||
data |
||||
}) |
||||
} |
||||
|
||||
export const leaveDetail = (params) => { |
||||
return request({ |
||||
url: '/api/blade-desk/process/leave/detail', |
||||
method: 'get', |
||||
params |
||||
}) |
||||
} |
||||
@ -1,26 +1,27 @@ |
||||
const getters = { |
||||
tag: state => state.tags.tag, |
||||
language: state => state.common.language, |
||||
website: state => state.common.website, |
||||
userInfo: state => state.user.userInfo, |
||||
colorName: state => state.common.colorName, |
||||
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, |
||||
token: state => state.user.token, |
||||
roles: state => state.user.roles, |
||||
permission: state => state.user.permission, |
||||
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, |
||||
language: state => state.common.language, |
||||
website: state => state.common.website, |
||||
userInfo: state => state.user.userInfo, |
||||
colorName: state => state.common.colorName, |
||||
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, |
||||
token: state => state.user.token, |
||||
roles: state => state.user.roles, |
||||
permission: state => state.user.permission, |
||||
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, |
||||
flowRoutes: state => state.dict.flowRoutes, |
||||
} |
||||
export default getters |
||||
export default getters |
||||
|
||||
@ -1,94 +1,95 @@ |
||||
import { |
||||
setStore, |
||||
getStore, |
||||
removeStore |
||||
setStore, |
||||
getStore, |
||||
removeStore |
||||
} from '@/util/store' |
||||
import website from '@/config/website' |
||||
|
||||
const common = { |
||||
|
||||
state: { |
||||
language: getStore({ name: 'language' }) || 'zh', |
||||
isCollapse: false, |
||||
isFullScren: false, |
||||
isShade: false, |
||||
screen: -1, |
||||
isLock: getStore({ name: 'isLock' }) || false, |
||||
showTag: true, |
||||
showDebug: true, |
||||
showCollapse: true, |
||||
showSearch: true, |
||||
showLock: true, |
||||
showFullScren: true, |
||||
showTheme: true, |
||||
showMenu: true, |
||||
showColor: true, |
||||
colorName: getStore({ name: 'colorName' }) || '#409EFF', |
||||
themeName: getStore({ name: 'themeName' }) || 'theme-default', |
||||
lockPasswd: getStore({ name: 'lockPasswd' }) || '', |
||||
website: website, |
||||
state: { |
||||
language: getStore({name: 'language'}) || 'zh', |
||||
isCollapse: false, |
||||
isFullScren: false, |
||||
isShade: false, |
||||
screen: -1, |
||||
isLock: getStore({name: 'isLock'}) || false, |
||||
showTag: true, |
||||
showDebug: true, |
||||
showCollapse: true, |
||||
showSearch: true, |
||||
showLock: true, |
||||
showFullScren: true, |
||||
showTheme: true, |
||||
showMenu: true, |
||||
showColor: true, |
||||
colorName: getStore({name: 'colorName'}) || '#409EFF', |
||||
themeName: getStore({name: 'themeName'}) || 'theme-default', |
||||
lockPasswd: getStore({name: 'lockPasswd'}) || '', |
||||
website: website, |
||||
}, |
||||
mutations: { |
||||
SET_LANGUAGE: (state, language) => { |
||||
state.language = language |
||||
setStore({ |
||||
name: 'language', |
||||
content: state.language |
||||
}) |
||||
}, |
||||
SET_SHADE: (state, active) => { |
||||
state.isShade = active; |
||||
}, |
||||
SET_COLLAPSE: (state) => { |
||||
state.isCollapse = !state.isCollapse; |
||||
}, |
||||
SET_FULLSCREN: (state) => { |
||||
state.isFullScren = !state.isFullScren; |
||||
}, |
||||
SET_LOCK: (state) => { |
||||
state.isLock = true; |
||||
setStore({ |
||||
name: 'isLock', |
||||
content: state.isLock, |
||||
type: 'session' |
||||
}) |
||||
}, |
||||
SET_SCREEN: (state, screen) => { |
||||
state.screen = screen; |
||||
}, |
||||
SET_COLOR_NAME: (state, colorName) => { |
||||
state.colorName = colorName; |
||||
setStore({ |
||||
name: 'colorName', |
||||
content: state.colorName, |
||||
}) |
||||
}, |
||||
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', |
||||
type: 'session' |
||||
}); |
||||
removeStore({ |
||||
name: 'isLock', |
||||
type: 'session' |
||||
}); |
||||
}, |
||||
mutations: { |
||||
SET_LANGUAGE: (state, language) => { |
||||
state.language = language |
||||
setStore({ |
||||
name: 'language', |
||||
content: state.language |
||||
}) |
||||
}, |
||||
SET_SHADE: (state, active) => { |
||||
state.isShade = active; |
||||
}, |
||||
SET_COLLAPSE: (state) => { |
||||
state.isCollapse = !state.isCollapse; |
||||
}, |
||||
SET_FULLSCREN: (state) => { |
||||
state.isFullScren = !state.isFullScren; |
||||
}, |
||||
SET_LOCK: (state) => { |
||||
state.isLock = true; |
||||
setStore({ |
||||
name: 'isLock', |
||||
content: state.isLock, |
||||
type: 'session' |
||||
}) |
||||
}, |
||||
SET_SCREEN: (state, screen) => { |
||||
state.screen = screen; |
||||
}, |
||||
SET_COLOR_NAME: (state, colorName) => { |
||||
state.colorName = colorName; |
||||
setStore({ |
||||
name: 'colorName', |
||||
content: state.colorName, |
||||
}) |
||||
}, |
||||
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', |
||||
type: 'session' |
||||
}); |
||||
removeStore({ |
||||
name: 'isLock', |
||||
type: 'session' |
||||
}); |
||||
}, |
||||
} |
||||
} |
||||
} |
||||
export default common |
||||
export default common |
||||
|
||||
@ -0,0 +1,36 @@ |
||||
import {getStore, setStore} from '@/util/store' |
||||
|
||||
import {getDictionary} from '@/api/system/dict' |
||||
|
||||
const dict = { |
||||
state: { |
||||
flowRoutes: getStore({name: 'flowRoutes'}) || {}, |
||||
}, |
||||
actions: { |
||||
//发送错误日志
|
||||
FlowRoutes({commit}) { |
||||
return new Promise((resolve, reject) => { |
||||
getDictionary({code: 'flow'}).then(res => { |
||||
commit('SET_FLOW_ROUTES', res.data.data); |
||||
resolve(); |
||||
}).catch(error => { |
||||
reject(error) |
||||
}) |
||||
}) |
||||
}, |
||||
}, |
||||
mutations: { |
||||
SET_FLOW_ROUTES: (state, data) => { |
||||
state.flowRoutes = data.map(item => { |
||||
return { |
||||
routeKey: `${item.code}_${item.dictKey}`, |
||||
routeValue: item.remark, |
||||
}; |
||||
}); |
||||
setStore({name: 'flowRoutes', content: state.flowRoutes, type: 'session'}) |
||||
}, |
||||
} |
||||
|
||||
}; |
||||
|
||||
export default dict; |
||||
@ -1,42 +1,42 @@ |
||||
import { setStore, getStore } from '@/util/store' |
||||
import { dateFormat } from '@/util/date' |
||||
import { sendLogs } from '@/api/user' |
||||
import {setStore, getStore} from '@/util/store' |
||||
import {dateFormat} from '@/util/date' |
||||
import {sendLogs} from '@/api/user' |
||||
|
||||
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}) |
||||
} |
||||
} |
||||
|
||||
}; |
||||
|
||||
export default logs; |
||||
export default logs; |
||||
|
||||
@ -1,72 +1,72 @@ |
||||
import { setStore, getStore } from '@/util/store' |
||||
import { diff } from '@/util/util' |
||||
import {setStore, getStore} from '@/util/store' |
||||
import {diff} from '@/util/util' |
||||
import website from '@/config/website' |
||||
|
||||
const isFirstPage = website.isFirstPage; |
||||
const tagWel = website.fistPage; |
||||
const tagObj = { |
||||
label: '', //标题名称
|
||||
value: '', //标题的路径
|
||||
params: '', //标题的路径参数
|
||||
query: '', //标题的参数
|
||||
meta: {},//额外参数
|
||||
group: [], //分组
|
||||
label: '', //标题名称
|
||||
value: '', //标题的路径
|
||||
params: '', //标题的路径参数
|
||||
query: '', //标题的参数
|
||||
meta: {},//额外参数
|
||||
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 => { |
||||
if (item.value === state.tag.value) { |
||||
return true; |
||||
} else if (!website.isFirstPage && item.value === website.fistPage.value) { |
||||
return true; |
||||
} |
||||
}) |
||||
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 => { |
||||
if (item.value === state.tag.value) { |
||||
return true; |
||||
} else if (!website.isFirstPage && item.value === website.fistPage.value) { |
||||
return true; |
||||
} |
||||
}) |
||||
setFistTag(state.tagList); |
||||
setStore({ name: 'tagList', content: state.tagList, type: 'session' }) |
||||
}, |
||||
} |
||||
} |
||||
} |
||||
export default navs |
||||
export default navs |
||||
|
||||
@ -0,0 +1,92 @@ |
||||
/** |
||||
* 不为空 |
||||
* @param val |
||||
* @returns {boolean} |
||||
*/ |
||||
export function notEmpty(val) { |
||||
return !this.isEmpty(val); |
||||
} |
||||
|
||||
/** |
||||
* 为空 |
||||
* @param val |
||||
* @returns {boolean} |
||||
*/ |
||||
export function isEmpty(val) { |
||||
if ( |
||||
val === null || |
||||
typeof val === 'undefined' || |
||||
(typeof val === 'string' && val === '' && val !== 'undefined') |
||||
) { |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 强转int型 |
||||
* @param val |
||||
* @param defaultValue |
||||
* @returns {number} |
||||
*/ |
||||
export function toInt(val, defaultValue) { |
||||
if (this.isEmpty(val)) { |
||||
return defaultValue === undefined ? -1 : defaultValue; |
||||
} |
||||
const num = parseInt(val, 0); |
||||
return Number.isNaN(num) ? (defaultValue === undefined ? -1 : defaultValue) : num; |
||||
} |
||||
|
||||
/** |
||||
* Json强转为Form类型 |
||||
* @param obj |
||||
* @returns {FormData} |
||||
*/ |
||||
export function toFormData(obj) { |
||||
const data = new FormData(); |
||||
Object.keys(obj).forEach(key => { |
||||
data.append(key, Array.isArray(obj[key]) ? obj[key].join(',') : obj[key]); |
||||
}); |
||||
return data; |
||||
} |
||||
|
||||
/** |
||||
* date类转为字符串格式 |
||||
* @param date |
||||
* @param format |
||||
* @returns {null} |
||||
*/ |
||||
export function format(date, format = 'YYYY-MM-DD HH:mm:ss') { |
||||
return date ? date.format(format) : null; |
||||
} |
||||
|
||||
/** |
||||
* 根据逗号联合 |
||||
* @param arr |
||||
* @returns {string} |
||||
*/ |
||||
export function join(arr) { |
||||
return arr ? arr.join(',') : ''; |
||||
} |
||||
|
||||
/** |
||||
* 根据逗号分隔 |
||||
* @param str |
||||
* @returns {string} |
||||
*/ |
||||
export function split(str) { |
||||
return str ? String(str).split(',') : ''; |
||||
} |
||||
|
||||
/** |
||||
* 根据key获取流程路由 |
||||
* @param routes |
||||
* @param key |
||||
*/ |
||||
export function getFlowRoute(routes, key) { |
||||
const data = routes.filter(d => { |
||||
return d.routeKey === key; |
||||
}); |
||||
return data.length === 0 ? [] : data[0].routeValue; |
||||
} |
||||
|
||||
Loading…
Reference in new issue