Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
so-manage-ui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
smart-operation
so-manage-ui
Commits
51c5b5a5
Commit
51c5b5a5
authored
Jun 25, 2023
by
张俊
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://cloud.wodcloud.com/git/smart-operation/so-manage-ui
into dev
parents
1207727b
ff72b7eb
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
546 additions
and
265 deletions
+546
-265
src/assets/css/index.css
src/assets/css/index.css
+52
-71
src/components/bg-menu.vue
src/components/bg-menu.vue
+3
-4
src/page/main/forewarning/list/index.vue
src/page/main/forewarning/list/index.vue
+140
-89
src/page/main/forewarning/list/user-input-table.vue
src/page/main/forewarning/list/user-input-table.vue
+269
-0
src/router/index.js
src/router/index.js
+82
-101
No files found.
src/assets/css/index.css
View file @
51c5b5a5
This diff is collapsed.
Click to expand it.
src/components/bg-menu.vue
View file @
51c5b5a5
...
...
@@ -151,8 +151,7 @@ export default {
},
transparentBg
()
{
return
(
this
.
documentScrollTop
<
180
&&
(
this
.
$route
.
name
===
"
shopRecommend
"
||
this
.
$route
.
name
===
"
shopSearch
"
)
this
.
documentScrollTop
<
180
&&
(
this
.
$route
.
name
===
"
shopRecommend
"
||
this
.
$route
.
name
===
"
shopSearch
"
)
);
},
isFront
()
{
...
...
@@ -236,7 +235,7 @@ export default {
if
(
n
==
"
logout
"
)
{
this
.
$axios
.
post
(
"
/apaas/system/v5/user/logout
"
).
then
((
res
)
=>
{
if
(
res
.
data
.
code
==
"
200
"
)
{
window
.
location
.
href
=
"
/
apaas/manage/ui
/#/login
"
;
window
.
location
.
href
=
"
/
so/manage/ui/
/#/login
"
;
this
.
$store
.
commit
(
"
setUserInfo
"
,
null
);
clearCookie
(
"
bgToken
"
);
this
.
$message
.
success
(
"
退出成功
"
);
...
...
@@ -247,7 +246,7 @@ export default {
});
}
else
if
(
n
==
"
login
"
)
{
let
path
=
this
.
$route
.
path
;
window
.
location
.
href
=
`/
apaas/manage/ui
/#/login?redirect=
${
path
}
`
;
window
.
location
.
href
=
`/
so/manage/ui/
/#/login?redirect=
${
path
}
`
;
}
else
{
//是否有子路由,有则寻找子路由的第一个进行跳转,无则直接进行跳转
//使用childMenuAction是模拟template中,子路径点击跳转使用childMenuAction,
...
...
src/page/main/forewarning/list/index.vue
View file @
51c5b5a5
...
...
@@ -123,75 +123,59 @@
</div>
</div>
<!-- todo: 推送提醒 -->
<!-- <el-dialog
class="dialog_box"
:title="addType == 1 ? '新增' : '编辑'"
v-model="addDialog"
width="758px">
<el-form ref="bgForm" :model="formData" :rules="rules" label-width="80px" class="bg_form">
<el-form-item label="名称" prop="name">
<el-input
v-model.trim="formData.name"
show-word-limit
:maxlength="
nodeClassifyId == 'eb9c7d70-c123-42b7-8e61-dde1b022b669'
? 6
: nodeClassifyId == 'efd9ec3b-7f18-49e2-9d88-bcca022243bb'
? 4
: nodeClassifyId == '949a1138-4995-464e-97a9-424d097eb271'
? 2
: 20
"
placeholder="请输入名称"></el-input>
</el-form-item>
<el-form-item label="描述" prop="describe">
<el-input
v-model="formData.describe"
type="textarea"
:autosize="{ minRows: 5 }"
show-word-limit
maxlength="200"
resize="vertical"
placeholder="请输入描述"></el-input>
</el-form-item>
<el-form-item label="是否启用" prop="state" style="margin-bottom: 0px">
<el-switch
class="bg-switch-ele"
v-model="formData.state"
:active-value="1"
:inactive-value="0"
inline-prompt
active-text="是"
inactive-text="否" />
<el-dialog
title=
"推送提醒"
v-model=
"pushDialog"
width=
"780px"
:before-close=
"cancelPushDialog"
>
<div
class=
"warning_info"
>
<bg-icon
style=
"font-size: 12px; color: #a9b1c7; margin-right: 8px; vertical-align: middle"
icon=
"#bg-ic-s-circle-tips"
></bg-icon
>
该推送为临时推送,可调整推送人员,仅本次有效!如固定通知人员,则前往【预警规则设置】调整预警内容
</div>
<el-form
ref=
"pushForm"
:model=
"pushFormData"
:rules=
"pushRules"
label-width=
"120px"
class=
"bg_form"
>
<el-form-item
label=
"预警工单推送"
prop=
"method"
style=
"margin-bottom: 24px"
>
<el-checkbox-group
v-model=
"pushFormData.method"
>
<el-checkbox
:label=
"1"
>
钉钉
</el-checkbox>
<el-checkbox
:label=
"2"
>
短信
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<user-input-table
v-if=
"userTableFlag"
ref=
"userTable"
:data=
"userData"
@
change=
"changeData"
/>
<
template
v-slot:footer
>
<div
class=
"apaas_button"
>
<el-button type="default" @click="
addDialog = false">取
消</el-button>
<el-button type="primary" @click="
addConfirm">保 存
</el-button>
<el-button
type=
"default"
@
click=
"
cancelPushDialog"
>
取
消
</el-button>
<el-button
type=
"primary"
@
click=
"
pushConfirm"
>
确定
</el-button>
</div>
</
template
>
</el-dialog>
-->
</el-dialog>
<!--
todo:
关闭提醒 -->
<
!-- <
el-dialog
<!-- 关闭提醒 -->
<el-dialog
class=
"dialog_box"
title="
提示
"
v-model="
dialogDelete
"
title=
"
关闭预警
"
v-model=
"
closeWarningDialog
"
width=
"400px"
:before-close="
() => {
dialogDelete = false;
}
">
<div>确定要删除此字典值吗?</div>
:before-close=
"cancelCloseWarningDialog"
>
<el-form
ref=
"closeForm"
:model=
"closeFormData"
:rules=
"closeRules"
label-width=
"80px"
class=
"bg_form"
>
<el-form-item
label=
"关闭备注"
prop=
"close_notes"
>
<el-input
v-model=
"closeFormData.close_notes"
type=
"textarea"
:autosize=
"{ minRows: 2 }"
show-word-limit
maxlength=
"30"
resize=
"vertical"
placeholder=
"请输入内容"
></el-input>
</el-form-item>
<el-form-item
label=
""
prop=
"close_remind"
style=
"margin-bottom: 0px"
>
<el-checkbox
v-model=
"closeFormData.close_remind"
label=
"三天内将不再推送该预警信息"
/>
</el-form-item>
</el-form>
<
template
v-slot:footer
>
<div
class=
"apaas_button"
>
<el-button type="default" @click="
dialogDelete = false">取
消</el-button>
<el-button type="primary" @click="
deleteData">确
定</el-button>
<el-button
type=
"default"
@
click=
"
cancelCloseWarningDialog"
>
取
消
</el-button>
<el-button
type=
"primary"
@
click=
"
confirmClose"
>
确
定
</el-button>
</div>
</
template
>
</el-dialog>
-->
</el-dialog>
</div>
</template>
...
...
@@ -201,11 +185,14 @@ import { ElMessage } from "element-plus";
import
axios
from
"
@/request/http.js
"
;
import
{
Search
}
from
"
@element-plus/icons-vue
"
;
import
bgBreadcrumb
from
"
@/components/bg-breadcrumb.vue
"
;
import
userInputTable
from
"
./user-input-table.vue
"
;
const
bgForm
=
ref
(
null
);
const
dataTable
=
ref
(
null
);
const
closeForm
=
ref
(
null
);
const
userTable
=
ref
(
null
);
const
pushForm
=
ref
(
null
);
const
state
=
reactive
({
bgForm
,
warningTypes
:
[
{
name
:
"
全部
"
,
...
...
@@ -338,25 +325,28 @@ const state = reactive({
limit
:
10
,
},
// 表格筛选项
actionRow
:
null
,
// 当前操作的数据
dialogDelete
:
false
,
// 删除弹窗
addType
:
0
,
//
addDialog
:
false
,
formData
:
{
name
:
""
,
describe
:
""
,
state
:
1
,
p_dict_id
:
""
,
closeWarningDialog
:
false
,
// 删除弹窗
closeFormData
:
{
close_notes
:
""
,
close_remind
:
false
,
},
closeRules
:
{
close_notes
:
[{
required
:
true
,
message
:
"
请输入关闭备注
"
,
trigger
:
"
blur
"
}],
},
pushDialog
:
false
,
userData
:
[],
pushFormData
:
{
method
:
[],
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入名称
"
,
trigger
:
"
blur
"
}],
describe
:
[
{
required
:
true
,
message
:
"
请输入描述
"
,
trigger
:
"
blur
"
},
{
max
:
200
,
message
:
"
描述最大为200字
"
,
trigger
:
"
blur
"
},
],
state
:
[{
required
:
true
,
message
:
"
请选择是否启用
"
,
trigger
:
"
change
"
}],
pushRules
:
{
method
:
[{
type
:
"
array
"
,
required
:
true
,
message
:
"
请最少选择一种推送方式
"
,
trigger
:
"
change
"
}],
},
});
const
userTableFlag
=
computed
(()
=>
{
return
!!
state
.
pushDialog
;
});
const
selectRows
=
(
data
)
=>
{
state
.
selected
=
data
.
selection
;
};
...
...
@@ -424,7 +414,7 @@ const getTableRows = () => {
notice_people_num
:
2
,
push_times
:
2
,
last_push_time
:
"
2020-01-01 00:00:00
"
,
state
:
1
,
state
:
0
,
},
{
id
:
2
,
...
...
@@ -474,19 +464,87 @@ const batchPush = () => {
const
pushWarning
=
(
row
)
=>
{
state
.
actionRow
=
row
;
console
.
log
(
"
推送提醒
"
);
state
.
userData
=
[
{
account
:
1
,
name
:
"
张一
"
,
mobile
:
"
13111111111
"
,
},
{
account
:
2
,
name
:
"
张二二
"
,
mobile
:
"
13222222222
"
,
},
{
account
:
4
,
name
:
"
张四三
"
,
mobile
:
"
13443434344
"
,
},
];
state
.
pushDialog
=
true
;
};
// 推送提醒
const
changeData
=
(
data
)
=>
{
state
.
userData
=
data
.
data
;
};
const
cancelPushDialog
=
()
=>
{
pushForm
.
value
.
resetFields
();
state
.
pushDialog
=
false
;
};
// 预警推送弹窗取消按钮:重置表单
const
pushConfirm
=
()
=>
{
pushForm
.
value
.
validate
((
valid
)
=>
{
if
(
valid
)
{
console
.
log
(
state
.
actionRow
.
id
,
state
.
userData
);
console
.
log
(
state
.
pushFormData
);
cancelPushDialog
();
}
});
};
const
closeWarning
=
(
row
)
=>
{
state
.
actionRow
=
row
;
state
.
closeWarningDialog
=
true
;
console
.
log
(
"
关闭预警
"
);
};
// 关闭预警
const
cancelCloseWarningDialog
=
()
=>
{
closeForm
.
value
.
resetFields
();
state
.
closeWarningDialog
=
false
;
};
// 关闭预警弹窗取消按钮:重置表单
const
confirmClose
=
()
=>
{
closeForm
.
value
.
validate
((
valid
)
=>
{
if
(
valid
)
{
console
.
log
(
state
.
actionRow
.
id
);
console
.
log
(
state
.
closeFormData
);
cancelCloseWarningDialog
();
}
});
};
// 关闭预警弹窗确定按钮:提交表单
onBeforeMount
(()
=>
{
getTableRows
();
});
const
{
headers
,
tableRows
,
tableTotal
,
filter
,
warningTypes
,
warningTargets
,
riskLevels
,
stateOptions
}
=
toRefs
(
state
);
const
{
headers
,
tableRows
,
tableTotal
,
filter
,
warningTypes
,
warningTargets
,
riskLevels
,
stateOptions
,
closeWarningDialog
,
closeFormData
,
closeRules
,
pushDialog
,
userData
,
pushFormData
,
pushRules
,
}
=
toRefs
(
state
);
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -548,7 +606,7 @@ const { headers, tableRows, tableTotal, filter, warningTypes, warningTargets, ri
width
:
100%
;
box-sizing
:
border-box
;
.el-form-item
{
margin-bottom
:
24
px
;
margin-bottom
:
16
px
;
:deep
()
.el-form-item__label
{
line-height
:
36px
;
height
:
36px
;
...
...
@@ -557,26 +615,19 @@ const { headers, tableRows, tableTotal, filter, warningTypes, warningTargets, ri
width
:
100%
;
.el-textarea
{
:deep
()
.el-input__count
{
bottom
:
-1
6px
;
bottom
:
6px
;
right
:
4px
;
font-family
:
Roboto-Regular
;
color
:
#a9b1c7
;
}
}
.bg-switch-ele
{
width
:
52px
;
height
:
24px
;
:deep
()
.el-switch__core
{
width
:
100%
;
height
:
24px
;
.el-switch__inner
,
.el-switch__action
{
top
:
3px
;
}
}
}
}
}
}
:deep
()
.dialog_box
{
.el-dialog__body
{
padding-bottom
:
0
;
}
}
}
</
style
>
src/page/main/forewarning/list/user-input-table.vue
0 → 100644
View file @
51c5b5a5
<
template
>
<el-form
ref=
"ruleFormRef"
class=
"ruleForm"
:model=
"tableRows"
:size=
"formSize"
:rules=
"formRules"
>
<bg-table-pro
showIndex
:headers=
"headers"
:data=
"tableRows"
ref=
"input-table"
:border=
"true"
:stripe=
"false"
>
<template
v-slot:account=
"
{ row, index }">
<el-form-item
:prop=
"`[$
{index}].account`" :rules="formRules.account" style="width: 100%">
<el-select
v-model=
"row.account"
placeholder=
"请选择帐号"
style=
"width: 100%"
@
change=
"changeAccount(row)"
:disabled=
"disabled"
>
<el-option
v-for=
"(item, index) in userLists"
:key=
"'userItem' + index"
:disabled=
"item.disabled"
:label=
"item.account"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</
template
>
<
template
v-slot:name=
"{ row, index }"
>
<el-form-item
:prop=
"`[$
{index}].name`" :rules="formRules.name" style="width: 100%">
<el-input
@
change=
"changeName"
placeholder=
"请输入姓名"
:disabled=
"disabled"
v-model.trim=
"row.name"
/>
</el-form-item>
</
template
>
<
template
v-slot:mobile=
"{ row, index }"
>
<el-form-item
:prop=
"`[$
{index}].mobile`" :rules="formRules.mobile" style="width: 100%">
<el-input
@
change=
"changeMobile"
placeholder=
"请输入联系方式"
:disabled=
"disabled"
v-model.trim=
"row.mobile"
/>
</el-form-item>
</
template
>
<
template
v-slot:action=
"{ row, index }"
>
<bg-table-btn
:disabled=
"disabled || !canAdd"
:click=
"
() =>
{
addParam(index);
}
"
>增加
</bg-table-btn
>
<bg-table-btn
:disabled=
"disabled"
:click=
"
() =>
{
removeParam(row, index);
}
">
删除
</bg-table-btn>
</
template
>
</bg-table-pro>
</el-form>
</template>
<
script
setup
>
import
{
reactive
,
toRefs
,
onBeforeMount
,
onMounted
,
ref
,
getCurrentInstance
,
watch
,
computed
}
from
"
vue
"
;
import
{
v4
as
uuidv4
}
from
"
uuid
"
;
import
{
validatePhone
}
from
"
@/services/rules.js
"
;
const
props
=
defineProps
({
data
:
{
type
:
Array
,
default
:
()
=>
[],
},
disabled
:
{
type
:
Boolean
,
default
:
false
,
},
});
const
emit
=
defineEmits
([
"
change
"
]);
const
formSize
=
ref
(
"
default
"
);
const
ruleFormRef
=
ref
(
null
);
const
formRules
=
reactive
({
name
:
[
{
required
:
true
,
message
:
"
请输入键
"
,
trigger
:
"
blur
"
,
},
{
max
:
50
,
message
:
"
最多50个字符
"
,
trigger
:
"
blur
"
,
},
],
account
:
[
{
required
:
true
,
message
:
"
请选择帐号
"
,
trigger
:
"
change
"
,
},
],
mobile
:
[
{
required
:
true
,
message
:
"
请输入联系方式
"
,
trigger
:
"
blur
"
,
},
{
validator
:
validatePhone
,
trigger
:
"
blur
"
},
],
});
const
headers
=
reactive
([
{
label
:
"
帐号
"
,
prop
:
"
account
"
,
required
:
true
,
},
{
label
:
"
姓名
"
,
prop
:
"
name
"
,
required
:
true
,
},
{
label
:
"
联系方式
"
,
prop
:
"
mobile
"
,
required
:
true
,
},
{
label
:
"
操作
"
,
prop
:
"
action
"
,
width
:
120
,
},
]);
const
state
=
reactive
({
tableRows
:
[],
userLists
:
[
{
account
:
"
admin
"
,
id
:
1
,
name
:
"
张一
"
,
mobile
:
"
13111111111
"
,
},
{
account
:
"
ys-admin
"
,
id
:
2
,
name
:
"
张二
"
,
mobile
:
"
13222222222
"
,
},
{
account
:
"
yf-user
"
,
id
:
3
,
name
:
"
张三
"
,
mobile
:
"
13333333333
"
,
},
{
account
:
"
putong
"
,
id
:
4
,
name
:
"
张四
"
,
mobile
:
"
13444444444
"
,
},
],
});
watch
(
()
=>
state
.
tableRows
,
(
n
,
o
)
=>
{
let
list
=
state
.
tableRows
.
map
((
e
)
=>
{
return
e
.
account
;
});
state
.
userLists
.
forEach
((
e
)
=>
{
if
(
list
.
indexOf
(
e
.
id
)
>
-
1
)
{
e
.
disabled
=
true
;
}
else
{
e
.
disabled
=
false
;
}
});
},
{
deep
:
true
,
}
);
const
canAdd
=
computed
(()
=>
{
return
state
.
tableRows
.
length
>=
5
?
false
:
true
;
});
// 最多五条数据,控制下新增按钮的禁用
onBeforeMount
(()
=>
{
initTable
();
});
var
initTable
=
()
=>
{
if
(
props
.
data
&&
props
.
data
.
length
>=
1
)
{
state
.
tableRows
=
props
.
data
;
}
else
{
state
.
tableRows
=
[];
addParam
(
0
);
}
};
var
createRow
=
()
=>
{
return
{
id
:
uuidv4
(),
account
:
""
,
name
:
""
,
mobile
:
""
,
};
};
var
addParam
=
(
index
)
=>
{
state
.
tableRows
.
splice
(
index
+
1
,
0
,
createRow
());
};
var
removeParam
=
(
row
,
index
)
=>
{
state
.
tableRows
.
splice
(
index
,
1
);
if
(
state
.
tableRows
.
length
===
0
)
{
addParam
(
0
);
}
};
const
changeAccount
=
(
row
)
=>
{
state
.
userLists
.
forEach
((
e
)
=>
{
if
(
e
.
id
==
row
.
account
)
{
row
.
name
=
e
.
name
;
row
.
mobile
=
e
.
mobile
;
}
});
emit
(
"
change
"
,
{
type
:
"
account
"
,
data
:
state
.
tableRows
,
});
};
const
changeName
=
()
=>
{
emit
(
"
change
"
,
{
type
:
"
name
"
,
data
:
state
.
tableRows
,
});
};
const
changeMobile
=
()
=>
{
emit
(
"
change
"
,
{
type
:
"
mobile
"
,
data
:
state
.
tableRows
,
});
};
var
getInputData
=
()
=>
{
let
lastData
=
[];
let
tempObj
=
{};
state
.
tableRows
.
forEach
((
e
)
=>
{
tempObj
[
e
.
name
]
=
e
;
});
for
(
const
key
in
tempObj
)
{
if
(
key
&&
tempObj
[
key
].
value
)
{
lastData
.
push
(
tempObj
[
key
]);
}
}
return
lastData
;
};
const
{
tableRows
,
userLists
}
=
toRefs
(
state
);
//暴露获取数据方法
defineExpose
({
getInputData
,
initTable
,
});
</
script
>
<
style
scoped
></
style
>
src/router/index.js
View file @
51c5b5a5
...
...
@@ -3,98 +3,84 @@
import
{
createRouter
,
createWebHashHistory
}
from
"
vue-router
"
;
import
store
from
"
../store
"
;
//写入初始必须有的路由
//或者隐藏式路由,不会表现在菜单上,但是需要存在的路由
const
routes
=
[{
path
:
"
/login
"
,
name
:
"
login
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/login/index.vue
"
),
},
{
path
:
"
/register
"
,
name
:
"
register
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/register/index.vue
"
),
},
{
path
:
"
/password
"
,
name
:
"
password
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/password/index.vue
"
),
},
{
path
:
"
/
"
,
name
:
"
index
"
,
component
:
()
=>
import
(
"
../page/welcom.vue
"
),
},
{
path
:
"
/404
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/404.vue
"
),
},
const
routes
=
[
{
path
:
"
/login
"
,
name
:
"
login
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/login/index.vue
"
),
},
{
path
:
"
/register
"
,
name
:
"
register
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/register/index.vue
"
),
},
{
path
:
"
/
"
,
name
:
"
index
"
,
component
:
()
=>
import
(
"
../page/welcom.vue
"
),
},
{
path
:
"
/404
"
,
show
:
true
,
component
:
()
=>
import
(
"
../page/404.vue
"
),
},
];
//重新创建router
function
newRouterFunc
()
{
return
createRouter
({
history
:
createWebHashHistory
(),
routes
,
});
return
createRouter
({
history
:
createWebHashHistory
(),
routes
,
});
}
const
router
=
newRouterFunc
();
function
inWhiteList
(
toPath
)
{
//配置白名单
const
whiteList
=
[
'
/login
'
]
const
path
=
whiteList
.
find
((
value
)
=>
{
// 使用正则匹配
const
reg
=
new
RegExp
(
'
^
'
+
value
)
return
reg
.
test
(
toPath
)
})
return
!!
path
//配置白名单
const
whiteList
=
[
"
/login
"
];
const
path
=
whiteList
.
find
((
value
)
=>
{
// 使用正则匹配
const
reg
=
new
RegExp
(
"
^
"
+
value
);
return
reg
.
test
(
toPath
);
});
return
!!
path
;
}
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
const
userInfo
=
store
.
state
.
userInfo
//已登录不可跳转登陆页
if
(
userInfo
&&
to
.
path
==
'
/login
'
)
{
next
({
path
:
from
.
path
})
}
// 检查to.path是否存在于免登陆白名单
if
(
inWhiteList
(
to
.
path
))
{
next
()
}
else
{
// 判断是否已经登录,未登录则重定向到首页或其他页面(通过query传参记录原来的路径)
// 根据配置判断是否跳转第三方登录,跳转第三方登录则不跳login
// axios封装中也需要对是否登录过期进行判断,如果登录过期,则跳转登录页,具体跳转地址根据配置来·
// if (!userInfo) {
// next({
// path: '/login',
// })
// } else {
// }
}
//判读是否匹配,否则跳转404
if
(
to
.
matched
.
length
!==
0
)
{
next
()
}
else
{
return
next
({
path
:
'
/404
'
})
}
})
const
userInfo
=
store
.
state
.
userInfo
;
//已登录不可跳转登陆页
if
(
userInfo
&&
to
.
path
==
"
/login
"
)
{
next
({
path
:
from
.
path
});
}
// 检查to.path是否存在于免登陆白名单
if
(
inWhiteList
(
to
.
path
))
{
next
();
}
else
{
// 判断是否已经登录,未登录则重定向到首页或其他页面(通过query传参记录原来的路径)
// 根据配置判断是否跳转第三方登录,跳转第三方登录则不跳login
// axios封装中也需要对是否登录过期进行判断,如果登录过期,则跳转登录页,具体跳转地址根据配置来·
// if (!userInfo) {
// next({
// path: '/login',
// })
// } else {
// }
}
//判读是否匹配,否则跳转404
if
(
to
.
matched
.
length
!==
0
)
{
next
();
}
else
{
return
next
({
path
:
"
/404
"
});
}
});
// 在路由完成初始导航时调用,如果有异步操作放置到这里
// 请求相应的角色和菜单
...
...
@@ -102,38 +88,33 @@ router.beforeEach((to, from, next) => {
// generateRoutes()
// })
function
addRoute
(
router
,
routers
)
{
routers
.
forEach
(
e
=>
{
router
.
addRoute
(
e
)
if
(
e
.
children
&&
e
.
children
.
length
)
{
addRoute
(
router
,
e
.
children
)
}
});
routers
.
forEach
((
e
)
=>
{
router
.
addRoute
(
e
);
if
(
e
.
children
&&
e
.
children
.
length
)
{
addRoute
(
router
,
e
.
children
);
}
});
}
export
function
generateRoutes
()
{
const
_asyncRoutes
=
store
.
state
.
route
if
(
_asyncRoutes
)
{
//动态添加路由
addRoute
(
router
,
_asyncRoutes
)
}
const
_asyncRoutes
=
store
.
state
.
route
;
router
.
addRoute
({
path
:
'
/:pathMatch(.*)
'
,
redirect
:
'
/404
'
})
if
(
_asyncRoutes
)
{
//动态添加路由
addRoute
(
router
,
_asyncRoutes
);
}
router
.
addRoute
({
path
:
"
/:pathMatch(.*)
"
,
redirect
:
"
/404
"
,
});
}
//新创建一个router替代之前的router,并把matcher方法替换成新的router的matcher
export
function
resetRouter
()
{
const
newRouter
=
newRouterFunc
()
router
.
matcher
=
newRouter
.
matcher
const
newRouter
=
newRouterFunc
();
router
.
matcher
=
newRouter
.
matcher
;
}
export
default
router
\ No newline at end of file
export
default
router
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment