1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
import Vue from "vue";
import Router from "vue-router";
import Store from "./store";
import Layout from "./views/Layout.vue";
import fileNotFound from "./views/errors/fileNotFound.vue";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
NProgress.configure({ showSpinner: false });
Vue.use(Router);
const originalPush = Router.prototype.push;
Router.prototype.push = function push(location, onResolve, onReject) {
if (onResolve || onReject)
return originalPush.call(this, location, onResolve, onReject);
return originalPush.call(this, location).catch((err) => err);
};
const router = new Router({
routes: [
builder("/authentication", "login/authentication"),
builder("/login", "login/login"),
builder("/sso", "SSO"),
{
path: "/",
name: "layout",
component: Layout,
meta: {
requiresAuth: true,
},
children: [
...restBuilder("oper/log", "system/log"), // 系统管理-操作日志
...restBuilder("validcode", "system/validcode"), // 接入管理-接入信息
...restBuilder("menu", "system/menu"), // 系统管理--菜单管理
...restBuilder("resource", "system/resource"), // 系统管理--资源管理
...restBuilder("role", "system/role"), // 系统管理--角色管理
...restBuilder("user", "system/user"), // 用户管理 -- 管理用户
...restBuilder("param", "system/param"), // 系统管理--参数管理
...restBuilder("task", "system/task"), // 系统管理--任务管理
// 绩效负责人
...restBuilder("workman", "workman"),
...restBuilder("holiday", "holiday"),
//部门
...restBuilder("dept", "dept"), //部门
...restBuilder("staff", "staff"), //花名册 员工信息
...restBuilder("staff/care", "staff/care"), // 员工关怀信息
...restBuilder("care/template", "care/template"), // 关怀问候信息
...restBuilder("staff/black", "staff/black"), // 员工黑名单信息
...restBuilder("job", "job"), // 职位信息
...restBuilder("staff/adjust/log", "staff/adjust/log"), // 员工调岗信息
...restBuilder("staff/onboard", "staff/onboard"), // 员工入职信息
...restBuilder("staff/regular", "staff/regular"), // 员工转正信息
...restBuilder("staff/leave", "staff/leave"), // 员工离职信息
...restBuilder("staff/contract", "staff/contract"), // 员工合同信息
...restBuilder("attendance/record/hik", "attendance/record/hik"), // 海康考勤
...restBuilder("attendance/record/error", "attendance/record/error"), // 考勤打卡记录异常信息
...restBuilder("attendance/stat", "attendance/stat"), // 考勤汇总信息
...restBuilder("attendance/staff/stat", "attendance/staff/stat"), // 考勤人员汇总信息
...restBuilder("attendance/record", "attendance/record"), // 考勤打卡记录信息
...restBuilder("attendance/record/detail", "attendance/record/detail"), // 考勤打卡记录详细信息
...restBuilder("attendance/group", "attendance/group"), // 考勤组信息
...restBuilder("attendance/class", "attendance/class"), // 考勤班次信息
...restBuilder("attendance/leave/record", "attendance/leave/record"), // 请假记录信息
...restBuilder(
"attendance/vacation/balance",
"attendance/vacation/balance"
), // 员工假期余额信息
...restBuilder("staff/perform/stat", "staff/perform/stat"), //员工分数统计
...restBuilder("dept/perform/stat", "dept/perform/stat"), //部门绩效分数统计
...restBuilder(
"perform/perpose/staff/stat",
"perform/perpose/staff/stat"
), //员工目标统计
...restBuilder(
"perform/perpose/dept/stat/stat",
"perform/perpose/dept/stat/stat"
), //部门目标统计
...restBuilder("perform/perpose/staff", "perform/perpose/staff"), //员工考核目标详细信息表
...restBuilder(
"perform/perpose/staff/stat",
"perform/perpose/staff/stat"
), //员工考核目标详细信息表
...restBuilder("perform/perpose/dept", "perform/perpose/dept"), //部门考核目标详细信息表
...restBuilder(
"perform/perpose/dept/stat",
"perform/perpose/dept/stat"
), //部门考核目标详细信息表
...restBuilder("perform/perpose", "perform/perpose"), //考核目标表
...restBuilder("window/owner", "window/owner"), //窗口负责人表
...restBuilder(
"perform/staff/conf/detail",
"perform/staff/conf/detail"
), //人员考核内容详细信息表
...restBuilder("perform/staff/conf", "perform/staff/conf"), //人员自动考核信息表
...restBuilder("perform/dept/conf/detail", "perform/dept/conf/detail"), //部门考核内容详细信息表
...restBuilder("perform/dept/conf", "perform/dept/conf"), //部门自动考核信息表
...restBuilder("perform/rules/category", "perform/rules/category"), //绩效规则分类信息表
...restBuilder("perform/rules", "perform/rules"), //绩效规则信息表
...restBuilder("perform/rules/attend", "perform/rules/attend"), //考勤绩效规则信息表
...restBuilder("perform/rules/review", "perform/rules/review"), //评价绩效规则信息表
...restBuilder("perform/rules/gowork", "perform/rules/gowork"), //办件绩效规则信息表
...restBuilder("perform/rules/effect", "perform/rules/effect"), //效能绩效规则信息表
...restBuilder("perform/rules/other", "perform/rules/other"), //其它绩效规则信息表
...restBuilder("perform/attend/record", "perform/attend/record"), //考勤绩效记录信息
...restBuilder("perform/review/record", "perform/review/record"), //评价绩效记录信息
...restBuilder("perform/complain/record", "perform/complain/record"), //投诉绩效记录信息
...restBuilder("perform/gowork/record", "perform/gowork/record"), //办件绩效记录信息
...restBuilder("perform/effect/record", "perform/effect/record"), //效能绩效记录信息
...restBuilder("perform/other/record", "perform/other/record"), //其它绩效记录信息
...restBuilder("check/attend/record", "check/attend/record"), //考勤绩效核查信息
...restBuilder("check/review/record", "check/review/record"), //评价绩效核查信息
...restBuilder("check/complain/record", "check/complain/record"), //投诉绩效核查信息
...restBuilder("check/gowork/record", "check/gowork/record"), //办件绩效核查信息
...restBuilder("check/effect/record", "check/effect/record"), //效能绩效核查信息
...restBuilder("check/other/record", "check/other/record"), //其它绩效核查信息
...restBuilder("check/window/perform", "check/window/perform"), //自评绩效核查信息
...restBuilder("perform/attend/appeal", "perform/attend/appeal"), //绩效记录申诉信息
...restBuilder(
"perform/attend/appeal/files",
"perform/attend/appeal/files"
), //绩效记录申诉信息附件列表
...restBuilder("feedback", "feedback"), //反馈信息
...restBuilder("feedback/file", "feedback/file"), //反馈信息附件
...restBuilder("feedback/addQuestion", "feedback/addQuestion"), //新增反馈
...restBuilder("feedback/questionnaire", "feedback/questionnaire"), //问卷情况
...restBuilder("feedback/question", "feedback/question"), //反馈问题
...restBuilder("feedback/option", "feedback/option"), //反馈选项
...restBuilder("feedback/answer", "feedback/answer"), //回答问题
...restBuilder("feedback/answer/option", "feedback/answer/option"), //回答问题选项
...restBuilder("staff/perform/summary", "staff/perform/summary"), //员工绩效统计汇总
// 360评估
...restBuilder("homeCharts/record", "homeCharts/record"),
//以下为基础路由配置
builder("blank", "blank"),
builder("", "Home"),
builder("index", "Home"),
builder("login/updatePwd", "login/updatePwd"),
builder("403", "errors/403"),
builder("*", "errors/404"),
],
},
],
});
/**
* rest路由生成器
*
* @param {string} path 路径
* @param {string} [component=path] 文件地址
* @returns {array} [] reset路由数组,包含list/edit/add/view
*/
function restBuilder(path, component = path) {
let arr = [];
arr.push(builder(`${path}/list`, `${component}/list`));
arr.push(builder(`${path}/edit`, `${component}/show`));
arr.push(builder(`${path}/add`, `${component}/show`));
arr.push(builder(`${path}/view`, `${component}/view`));
return arr;
}
/**
* 路由生成器
*
* @param {string} path 路径
* @param {string} [component=path] 文件地址
* @param {boolean} [requiresAuth=false] 是否登录后才能访问
* @returns {any} {} 路由对象
*/
function builder(path, component = path, requiresAuth = false) {
return {
path: path,
name: path || "homepage",
component: getComponent(component),
meta: {
requiresAuth: requiresAuth,
},
};
}
function getComponent(fileName) {
try {
return require("./views/" + fileName).default;
} catch (error) {
return fileNotFound;
}
}
//检查是否跳转到sso地址
function ssoCheck(to, from, next) {
let redirect = to.path === "/login/updatePwd" ? "/#/updatePwd" : "";
redirect =
redirect === "" && to.path === "/login"
? location.protocol + "//" + location.host + "/#" + from.fullPath
: redirect;
if (redirect != "") {
next(false);
window.location.href =
"//" +
location.host +
"/m/login/logout?redirect=" +
encodeURIComponent(redirect);
return true;
}
return false;
}
router.afterEach(() => {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
NProgress.done();
});
// 路由鉴权
router.beforeEach((to, from, next) => {
// if (ssoCheck(to, from, next)) { //sso鉴权检查
// return
// }
NProgress.start();
if (to.matched.some((record) => record.meta.requiresAuth)) {
if (Store.state.isLogin) {
next();
} else {
next({
path: "/authentication",
query: {
redirect: to.fullPath,
},
});
}
} else {
next();
}
});
export default router;