Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
smart_gov_platform
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_gov_platform
Commits
26a7915e
Commit
26a7915e
authored
Jul 08, 2024
by
“yiyousong”
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'reg' of
http://gitlab.scsmile.cn/zxf/smart_gov_platform
into reg
parents
9a8c8f5d
15d3f5f8
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
5899 additions
and
5701 deletions
+5899
-5701
base-manager-ui/admin/src/pages/basicset/site/components/addsite.vue
...r-ui/admin/src/pages/basicset/site/components/addsite.vue
+5
-4
base-manager-ui/admin/src/utils/validate.js
base-manager-ui/admin/src/utils/validate.js
+53
-1
portal-manager-ui/admin/src/store/modules/user.js
portal-manager-ui/admin/src/store/modules/user.js
+3
-0
portal-manager-ui/admin/src/utils/index.js
portal-manager-ui/admin/src/utils/index.js
+19
-0
portal-manager-ui/admin/src/views/home/components/HeaderSite.vue
...manager-ui/admin/src/views/home/components/HeaderSite.vue
+225
-0
portal-manager-ui/admin/src/views/home/home.vue
portal-manager-ui/admin/src/views/home/home.vue
+5
-2
portal-manager-ui/admin/src/views/signIn/signIn.vue
portal-manager-ui/admin/src/views/signIn/signIn.vue
+29
-5
portal-manager-ui/admin/yarn.lock
portal-manager-ui/admin/yarn.lock
+5560
-5689
No files found.
base-manager-ui/admin/src/pages/basicset/site/components/addsite.vue
View file @
26a7915e
...
...
@@ -308,6 +308,7 @@ import YCheckbox from "@/components/ycheckbox/YCheckbox.vue";
import
YSwitch
from
"
@/components/yswitch/YSwitch.vue
"
;
// import options from "@/utils/city";
import
{
regionData
}
from
"
element-china-area-data
"
;
import
{
checkPort
,
checkIp
}
from
"
@/utils/validate
"
;
export
default
{
props
:
{
formVisible
:
{
...
...
@@ -459,15 +460,15 @@ export default {
siteIp
:
[
{
required
:
true
,
message
:
"
站点服务器ip不能为空
"
,
trigger
:
[
"
blur
"
,
"
change
"
]
,
validator
:
checkIp
,
trigger
:
"
blur
"
,
},
],
sitePort
:
[
{
required
:
true
,
message
:
"
站点服务器端口不能为空
"
,
trigger
:
[
"
blur
"
,
"
change
"
]
,
validator
:
checkPort
,
trigger
:
"
blur
"
,
},
],
longitude
:
[
...
...
base-manager-ui/admin/src/utils/validate.js
View file @
26a7915e
...
...
@@ -65,7 +65,7 @@ export const changePassWord = (rule, value, callback) => {
// 验证手机号码
export
const
changePhone
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
//
callback(new Error("请输入手机号"));
callback
(
new
Error
(
"
请输入手机号
"
));
callback
();
}
else
if
(
!
/^1
[
3-9
]\d{9}
$/
.
test
(
value
))
{
callback
(
new
Error
(
"
手机号码格式不正确
"
));
...
...
@@ -111,3 +111,55 @@ export const changeCodeNumber = (rule, value, callback) => {
callback
();
}
};
// 验证mac地址
export
const
checkMac
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
callback
(
new
Error
(
"
请输入mac地址
"
));
}
else
if
(
!
/^
(([
a-f0-9
][
0,2,4,6,8,a,c,e
]
:
([
a-f0-9
]{2}
:
){4})
|
([
a-f0-9
][
0,2,4,6,8,a,c,e
]
-
([
a-f0-9
]{2}
-
){4}))[
a-f0-9
]{2}
$/i
.
test
(
value
)
)
{
callback
(
new
Error
(
"
mac地址格式错误
"
));
}
else
{
callback
();
}
};
// 验证端口
export
const
checkPort
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
if
(
rule
.
required
)
{
callback
(
new
Error
(
"
端口号不能为空
"
));
}
else
{
callback
();
}
}
else
if
(
!
/^
([
0-9
]
|
[
1-9
]\d
|
[
1-9
]\d{2}
|
[
1-9
]\d{3}
|
[
1-5
]\d{4}
|6
[
0-4
]\d{3}
|65
[
0-4
]\d{2}
|655
[
0-2
]\d
|6553
[
0-5
])
$/
.
test
(
value
)
)
{
callback
(
new
Error
(
"
端口号格式错误
"
));
}
else
{
callback
();
}
};
// 验证ip
export
const
checkIp
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
if
(
rule
.
required
)
{
callback
(
new
Error
(
"
ip不能为空
"
));
}
else
{
callback
();
}
}
else
if
(
!
/^
(\d
|
[
1-9
]\d
|1
\d{2}
|2
[
0-4
]\d
|25
[
0-5
])\.(\d
|
[
1-9
]\d
|1
\d{2}
|2
[
0-4
]\d
|25
[
0-5
])\.(\d
|
[
1-9
]\d
|1
\d{2}
|2
[
0-4
]\d
|25
[
0-5
])\.(\d
|
[
1-9
]\d
|1
\d{2}
|2
[
0-4
]\d
|25
[
0-5
])
$/
.
test
(
value
)
)
{
callback
(
new
Error
(
"
ip格式错误
"
));
}
else
{
callback
();
}
};
portal-manager-ui/admin/src/store/modules/user.js
View file @
26a7915e
...
...
@@ -26,6 +26,9 @@ export default {
routerList
(
state
)
{
return
state
.
routerList
;
},
siteTreeList
(
state
)
{
return
state
.
siteList
;
},
},
mutations
:
{
SET_routerList
(
state
,
routerList
)
{
...
...
portal-manager-ui/admin/src/utils/index.js
View file @
26a7915e
...
...
@@ -95,3 +95,22 @@ export function filterarrays(arr, field = "children") {
recursiveSearch
(
arr
);
return
data
;
}
// 找出目标站点
export
function
findSitesById
(
data
,
targetId
)
{
let
result
=
{};
function
search
(
items
)
{
for
(
let
item
of
items
)
{
if
(
item
.
type
===
"
site
"
&&
item
.
id
==
targetId
)
{
result
=
item
;
}
if
(
item
.
children
&&
item
.
children
.
length
>
0
)
{
search
(
item
.
children
);
}
}
}
search
(
data
);
return
result
;
}
portal-manager-ui/admin/src/views/home/components/HeaderSite.vue
0 → 100644
View file @
26a7915e
<
template
>
<div
:trigger=
"['click']"
class=
"trigger"
@
click=
"ontrigger"
>
<slot>
<a
class=
"ant-dropdown-link"
@
click=
"(e) => e.preventDefault()"
>
{{
siteName
}}
<a-icon
type=
"down-circle"
class=
"icon"
/>
</a>
</slot>
<div
slot=
"overlay"
class=
"select-site"
:style=
"
{ left: `${offsetLeft}px` }"
v-if="show"
>
<div
class=
"flex items-center primary-color name"
>
<a-icon
type=
"environment"
style=
"margin-right: 10px"
/>
<span
style=
""
>
{{
siteName
}}
</span>
</div>
<div
class=
"site-list"
>
<span
v-for=
"(item, index) in sitelist"
:key=
"index"
:class=
"
{ 'primary-color': item.id == checkid }"
@click="setSite(item)"
>
{{
item
.
label
}}
</span
>
</div>
<div
class=
"check-site"
>
<span>
您的选择是:
</span>
<span
class=
"check-item"
v-for=
"(item, index) in checkarr"
:key=
"index"
@
click=
"updataSite(item)"
>
{{
index
>
0
?
"
>
"
:
""
}}{{
item
.
label
}}
</span
>
</div>
<div
class=
"site-btn"
>
<a-button
@
click=
"show = false"
style=
"margin-right: 10px"
>
取消
</a-button
>
<a-button
type=
"primary"
@
click=
"onSucessSite"
:disabled=
"isSite"
>
确定
</a-button
>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
mapGetters
}
from
"
vuex
"
;
import
storage
from
"
@/utils/js/Storage
"
;
export
default
{
data
()
{
return
{
show
:
false
,
offsetLeft
:
0
,
checkarr
:
[],
//选中站点
checkid
:
undefined
,
//最终选中站点
siteName
:
""
,
isSite
:
true
,
sitelist
:
[],
};
},
computed
:
{
...
mapGetters
(
"
user
"
,
[
"
siteTreeList
"
]),
},
created
()
{
this
.
getwaitedListdata
();
},
mounted
()
{
const
{
offsetLeft
}
=
this
.
$el
;
this
.
offsetLeft
=
offsetLeft
;
},
methods
:
{
// 确认站点
onSucessSite
()
{
if
(
this
.
checkarr
.
length
==
0
)
return
;
let
obj
=
this
.
checkarr
[
this
.
checkarr
.
length
-
1
];
this
.
clickSite
(
obj
);
},
// 选中
setSite
(
obj
)
{
this
.
checkid
=
undefined
;
// 为子节点不添加数据
let
data
=
this
.
checkarr
[
this
.
checkarr
.
length
-
1
];
if
(
data
&&
(
data
.
isLeaf
||
data
.
children
.
length
==
0
))
{
// 如果为子节点更新最后一个数据
this
.
checkid
=
obj
.
id
;
this
.
checkarr
[
this
.
checkarr
.
length
-
1
]
=
obj
;
// 如果选中数据有子集更新站点列表
if
(
obj
.
children
&&
obj
.
children
.
length
>
0
)
{
this
.
sitelist
=
obj
.
children
;
}
}
else
{
this
.
checkarr
.
push
(
obj
);
if
(
obj
.
children
&&
obj
.
children
.
length
>
0
)
{
this
.
sitelist
=
obj
.
children
;
}
}
if
(
obj
&&
obj
.
type
==
"
site
"
)
{
this
.
isSite
=
false
;
}
else
{
this
.
isSite
=
true
;
}
},
// 更新选中
updataSite
(
row
)
{
const
{
id
}
=
row
;
this
.
checkid
=
undefined
;
let
index
=
this
.
checkarr
.
findIndex
((
v
)
=>
v
.
id
==
id
);
if
(
index
>
-
1
)
{
this
.
checkarr
.
splice
(
index
+
1
,
this
.
checkarr
.
length
-
(
index
+
1
));
}
if
(
row
.
children
&&
row
.
children
.
length
>
0
)
{
this
.
sitelist
=
row
.
children
;
}
if
(
row
&&
row
.
type
==
"
site
"
)
{
this
.
isSite
=
false
;
}
else
{
this
.
isSite
=
true
;
}
// this.getwaitedListdata(id);
},
getwaitedListdata
()
{
this
.
sitelist
=
this
.
siteTreeList
;
let
arr
=
[];
const
treeFn
=
function
(
e
)
{
e
.
forEach
((
element
)
=>
{
arr
.
push
(
element
);
if
(
element
.
children
&&
element
.
children
.
length
>
0
)
{
treeFn
(
element
.
children
);
}
});
};
const
siteid
=
storage
.
get
(
2
,
"
siteId
"
);
treeFn
(
this
.
siteTreeList
);
const
siteObj
=
arr
.
find
((
v
)
=>
v
.
id
==
siteid
);
this
.
siteName
=
siteObj
?
siteObj
.
label
:
"
请选择站点
"
;
},
clickSite
(
obj
)
{
storage
.
set
(
2
,
"
siteId
"
,
obj
.
id
);
storage
.
set
(
2
,
"
siteName
"
,
obj
.
label
);
this
.
show
=
false
;
if
(
location
.
href
.
search
(
/token/gi
)
>=
0
)
{
this
.
$router
.
push
({
path
:
"
/resource/advimg
"
});
setTimeout
(()
=>
{
location
.
reload
();
});
}
else
{
location
.
reload
();
}
},
ontrigger
(
e
)
{
if
(
e
.
target
&&
e
.
target
.
nodeName
==
"
A
"
)
{
this
.
show
=
!
this
.
show
;
}
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.trigger {
display: inline-block;
position: relative;
line-height: 64px;
}
.ant-dropdown-link {
color: #fff;
padding: 0 20px;
font-size: 16px;
min-width: 200px;
display: inline-block;
.icon {
font-size: 12px;
}
}
.primary-color {
color: #1890ff;
}
.select-site {
position: fixed;
left: 0;
top: 65px;
background: #fff;
border-radius: 6px;
padding: 10px;
min-width: 60%;
max-width: 70%;
z-index: 9;
color: rgba(0, 0, 0, 0.8);
font-size: 14px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
.name {
font-size: 20px;
}
.site-list {
// padding: 10px 0;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
overflow: hidden;
span {
float: left;
line-height: 1.5;
padding: 10px 20px;
display: inline-block;
cursor: pointer;
&:hover {
color: #1890ff;
}
}
}
.check-site,
.site-btn {
padding: 0 20px;
}
.check-item {
cursor: pointer;
}
}
</
style
>
portal-manager-ui/admin/src/views/home/home.vue
View file @
26a7915e
...
...
@@ -15,12 +15,13 @@
{{
sysName
}}
</h1>
<div
class=
"selectOnptions"
>
<a-select
v-model=
"siteInfo"
labelInValue
@
change=
"handleChange"
>
<HeaderSite></HeaderSite>
<!--
<a-select
v-model=
"siteInfo"
labelInValue
@
change=
"handleChange"
>
<a-icon
slot=
"suffixIcon"
type=
"down-circle"
/>
<a-select-option
v-for=
"v in siteList"
:key=
"v.id"
:value=
"v.id"
>
{{
v
.
siteName
}}
</a-select-option>
</a-select>
</a-select>
-->
</div>
</a-space>
<!-- 菜单 -->
...
...
@@ -84,10 +85,12 @@
import
{
mapState
,
mapMutations
,
mapGetters
}
from
"
vuex
"
;
import
{
LogoutInterface
}
from
"
@/api/user
"
;
import
changePassword
from
"
./components/changePassword.vue
"
;
import
HeaderSite
from
"
./components/HeaderSite.vue
"
;
import
storage
from
"
@/utils/js/Storage
"
;
export
default
{
components
:
{
changePassword
,
HeaderSite
,
},
data
()
{
return
{
...
...
portal-manager-ui/admin/src/views/signIn/signIn.vue
View file @
26a7915e
...
...
@@ -251,7 +251,7 @@ import Swiper from "swiper";
import
{
LoginInterface
,
changeForgotPassword
,
getSlogan
}
from
"
@/api/user.js
"
;
import
{
mapMutations
,
mapState
}
from
"
vuex
"
;
import
{
changeAccount
,
changePassWord
}
from
"
@/utils/js/validate
"
;
import
{
encrypt
}
from
"
@/utils
"
;
import
{
encrypt
,
findSitesById
}
from
"
@/utils
"
;
import
storage
from
"
@/utils/js/Storage
"
;
export
default
{
data
()
{
...
...
@@ -332,7 +332,12 @@ export default {
this
.
initSwiper
();
},
methods
:
{
...
mapMutations
(
"
user
"
,
[
"
set_token
"
,
"
SET_USERDATA
"
,
"
set_siteList
"
]),
...
mapMutations
(
"
user
"
,
[
"
set_token
"
,
"
SET_USERDATA
"
,
"
set_siteList
"
,
"
SET_routerList
"
,
]),
getTitle
()
{
getSlogan
(
"
signImg
"
).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
...
...
@@ -399,12 +404,17 @@ export default {
let
{
code
,
data
,
msg
}
=
res
;
if
(
code
==
1
)
{
let
{
siteList
,
user
,
token
}
=
data
;
let
{
siteIds
}
=
user
;
this
.
set_token
(
token
);
this
.
SET_USERDATA
(
user
);
this
.
set_siteList
(
siteList
);
if
(
siteList
.
length
)
{
storage
.
set
(
2
,
"
siteId
"
,
siteList
[
0
].
id
);
storage
.
set
(
2
,
"
siteName
"
,
siteList
[
0
].
siteName
);
this
.
SET_routerList
(
this
.
getUrl
(
user
.
menuList
));
if
(
siteList
.
length
&&
siteIds
)
{
let
siteId
=
siteIds
.
split
(
"
,
"
)[
0
];
let
firstSite
=
findSitesById
(
siteList
,
20
);
let
siteName
=
firstSite
.
label
;
storage
.
set
(
2
,
"
siteId
"
,
siteId
);
storage
.
set
(
2
,
"
siteName
"
,
siteName
);
}
setTimeout
(()
=>
{
this
.
$router
.
push
(
"
/home
"
);
...
...
@@ -445,6 +455,20 @@ export default {
}
});
},
// 递归获取菜单url
getUrl
(
menus
=
[])
{
let
urls
=
[];
let
fn
=
(
arr
)
=>
{
arr
.
forEach
((
v
)
=>
{
urls
.
push
(
v
.
url
);
if
(
v
.
childList
&&
v
.
childList
.
length
)
{
fn
(
v
.
childList
);
}
});
};
fn
(
menus
);
return
urls
;
},
},
};
</
script
>
...
...
portal-manager-ui/admin/yarn.lock
View file @
26a7915e
This source diff could not be displayed because it is too large. You can
view the blob
instead.
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