Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
device-new-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
赵啸非
device-new-platform
Commits
74201798
Commit
74201798
authored
Jul 21, 2022
by
赵啸非
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改前端站点编辑
parent
f96901cf
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
197 additions
and
636 deletions
+197
-636
device-manager-ui/admin/src/components/Header.vue
device-manager-ui/admin/src/components/Header.vue
+10
-4
device-manager-ui/admin/src/components/SearchForm.vue
device-manager-ui/admin/src/components/SearchForm.vue
+41
-161
device-manager-ui/admin/src/components/Table.vue
device-manager-ui/admin/src/components/Table.vue
+13
-13
device-manager-ui/admin/src/router.js
device-manager-ui/admin/src/router.js
+0
-1
device-manager-ui/admin/src/views/device/list.vue
device-manager-ui/admin/src/views/device/list.vue
+115
-13
device-manager-ui/admin/src/views/login/login.vue
device-manager-ui/admin/src/views/login/login.vue
+1
-1
device-manager-ui/admin/src/views/system/area/format.js
device-manager-ui/admin/src/views/system/area/format.js
+0
-102
device-manager-ui/admin/src/views/system/area/list.vue
device-manager-ui/admin/src/views/system/area/list.vue
+0
-211
device-manager-ui/admin/src/views/system/area/show.vue
device-manager-ui/admin/src/views/system/area/show.vue
+0
-116
device-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
.../java/com/mortals/xhx/base/login/web/LoginController.java
+14
-4
device-manager/src/main/resources/bootstrap.yml
device-manager/src/main/resources/bootstrap.yml
+3
-3
pom.xml
pom.xml
+0
-7
No files found.
device-manager-ui/admin/src/components/Header.vue
View file @
74201798
...
...
@@ -22,16 +22,22 @@
</ul>
</div>
<div
class=
"layout-profile"
>
<el-dropdown
@
command=
"handleCommand"
>
<span
class=
"el-dropdown-link"
>
{{
userData
.
currUserName
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<!--
<el-dropdown
@
command=
"handleCommand"
>
<span
class=
"el-dropdown-link"
>
{{
userData
.
currUserName
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<!--
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"update"
>
修改密码
</el-dropdown-item>
<el-dropdown-item
command=
"logout"
>
退出登录
</el-dropdown-item>
</el-dropdown-menu>
-->
</el-dropdown>
</el-dropdown-menu>
</el-dropdown>
-->
</div>
</div>
...
...
device-manager-ui/admin/src/components/SearchForm.vue
View file @
74201798
...
...
@@ -3,22 +3,7 @@
<
template
>
<div
class=
"search-form-wapper"
>
<el-form
:inline=
"true"
:model=
"form"
ref=
"search-form"
size=
"small"
>
<!-- 省市区选择器 -->
<template
v-if=
"areaSelect.enable"
>
<el-form-item
label=
"区域"
>
<el-cascader
v-model=
"area"
clearable=
"true"
filterable
change-on-select
@
change=
"treeSelected"
:options=
"treeData"
></el-cascader>
</el-form-item>
</
template
>
<el-form-item
v-for=
"(item, i) in search"
:key=
"i"
v-bind:class=
"
{ search_new_line: item.newLine }"
...
...
@@ -26,8 +11,8 @@
<el-input
v-model=
"form[item.name]"
v-if=
"item.type === 'text'"
:placeholder=
"
item.placeholder? item.placeholder: '请输入' + item.label
:placeholder=
"
item.placeholder ? item.placeholder : '请输入' + item.label
"
></el-input>
...
...
@@ -164,8 +149,6 @@
:placeholder=
"item.label"
>
</el-date-picker>
</el-form-item>
<el-form-item>
...
...
@@ -173,11 +156,9 @@
type=
"primary"
icon=
"el-icon-search"
@
click=
"onSubmit"
title=
"查询"
>
查询
</el-button>
>
查询
</el-button
>
<el-button
icon=
"el-icon-download"
...
...
@@ -186,12 +167,9 @@
v-if=
"downloadUrl"
>
下载
</el-button
>
<el-button
icon=
"el-icon-refresh-left"
@
click=
"cleanForm"
title=
"清空"
>
清空
</el-button>
<el-button
icon=
"el-icon-refresh-left"
@
click=
"cleanForm"
title=
"清空"
>
清空
</el-button
>
</el-form-item>
</el-form>
</div>
...
...
@@ -199,13 +177,7 @@
<
script
>
import
Qs
from
"
qs
"
;
import
{
type
,
download
,
downloadWithCustName
,
getUserListByQuery
,
}
from
"
@/assets/utils
"
;
import
{
treeCache
}
from
"
@/assets/utils/tree
"
;
import
{
type
}
from
"
@/assets/utils
"
;
import
{
isArray
}
from
"
util
"
;
export
default
{
...
...
@@ -218,19 +190,6 @@ export default {
type
:
Object
,
default
:
()
=>
{},
},
downloadUrl
:
{
type
:
String
,
default
:
""
,
},
areaSelect
:
{
type
:
Object
,
default
:
()
=>
{
return
{
enable
:
false
,
level
:
1
,
// 1,仅区域
};
},
},
},
watch
:
{
$route
(
route
)
{
...
...
@@ -238,35 +197,18 @@ export default {
},
},
async
created
()
{
// this.treeDatas = await treeCache.getTree();
// if (this.areaSelect.enable) {
// this.treeData = await treeCache.getTree();
// }
// let tempAreaId = this.$route.query["areaId"];
// if (tempAreaId) {
// this.selectedTreeID = treeCache.getPid(Number(tempAreaId));
// }
this
.
initForm
(
this
.
$route
.
query
);
},
methods
:
{
afterRender
()
{
this
.
selectedTreeID
=
treeCache
.
getPid
(
this
.
form
.
areaId
);
},
beforeSubmit
(
form
)
{
form
.
areaId
=
this
.
selectedTreeID
.
slice
().
pop
();
return
form
;
},
treeSelecteds
(
val
)
{
this
.
form
.
areaId
=
val
.
slice
().
pop
();
},
remoteMethod
(
query
,
searchType
)
{
if
(
query
==
""
)
{
console
.
log
(
"
查询参数为空!
"
);
return
;
}
this
.
loading
=
true
;
var
param
=
{
"
name
"
:
query
,
"
searchType
"
:
searchType
,
name
:
query
,
searchType
:
searchType
,
};
try
{
this
.
$post
(
"
/common/autoComplete/list
"
,
param
).
then
(({
data
})
=>
{
...
...
@@ -284,9 +226,14 @@ export default {
}
catch
(
error
)
{}
},
async
initForm
(
data
)
{
//初始化查询表单
let
newFormData
=
{};
this
.
form
=
this
.
encode
(
data
,
this
.
form
);
// this.form = this.encode(data, this.form);
console
.
log
(
"
data
"
,
data
);
console
.
log
(
"
form
"
,
this
.
form
);
this
.
search
.
forEach
((
item
)
=>
{
console
.
log
(
"
search-item
"
,
item
);
//复选框
if
(
item
.
type
===
"
checkbox
"
)
{
if
(
this
.
form
[
item
.
name
]
==
undefined
)
{
newFormData
[
item
.
name
]
=
[];
...
...
@@ -307,27 +254,11 @@ export default {
}
}
}
if
(
item
.
type
===
"
remoteSelect
"
)
{
if
(
this
.
form
[
item
.
name
]
==
undefined
||
(
item
.
multiple
===
true
&&
this
.
form
[
item
.
name
].
length
==
0
)
)
{
this
.
remoteOptions
[
item
.
searchType
]
=
{};
}
else
{
this
.
remoteOptions
[
item
.
searchType
]
=
JSON
.
parse
(
sessionStorage
.
getItem
(
item
.
searchType
+
"
OptionsDict
"
)
);
}
}
});
this
.
form
=
Object
.
assign
({},
this
.
form
,
newFormData
);
//this.form = Object.assign({}, this.form, this.encode(data));
// 区域选择器
// if (this.areaSelect.enable) {
// this.form.areaId = this.form.areaId ? this.form.areaId : 510100;
// this.area = treeCache.getPid(this.form.areaId).map(Number);
// this.treeSelected(this.area, "man");
// }
this
.
form
=
Object
.
assign
({},
this
.
form
,
data
);
console
.
log
(
"
form2
"
,
this
.
form
);
},
cleanForm
()
{
this
.
clean
();
...
...
@@ -343,12 +274,7 @@ export default {
newData
[
item
.
name
]
=
item
.
multiple
?
[]
:
undefined
;
}
});
if
(
this
.
areaSelect
.
enable
)
{
newData
.
areaId
=
""
;
this
.
area
=
[
510000
,
510100
];
}
this
.
form
=
Object
.
assign
({},
this
.
form
,
newData
);
this
.
selectedTreeID
=
[];
},
onSubmit
()
{
let
{
path
,
query
}
=
this
.
$route
;
...
...
@@ -362,6 +288,7 @@ export default {
encode
(
data
,
formTemp
)
{
let
newData
=
{};
Object
.
keys
(
Qs
.
parse
(
data
)).
forEach
((
item
)
=>
{
console
.
log
(
item
);
if
(
/^query
\.
/
.
test
(
item
))
{
let
val
=
data
[
item
];
let
key
=
item
.
replace
(
/^query
\.
/
,
""
);
...
...
@@ -388,23 +315,10 @@ export default {
});
return
newData
;
},
decodeVal
(
val
)
{
let
valType
=
type
(
val
);
if
([
"
Number
"
,
"
Boolean
"
].
indexOf
(
valType
)
>
-
1
)
{
return
val
;
}
if
(
valType
==
"
Undefined
"
||
valType
==
"
Null
"
)
{
return
undefined
;
}
if
(
valType
==
"
String
"
)
{
let
str
=
val
.
trim
();
return
str
.
length
?
str
:
undefined
;
}
return
val
;
},
// 解析url字符串,加入query字段
decode
(
data
)
{
let
newData
=
{
"
page
"
:
1
};
let
newData
=
{
page
:
1
};
Object
.
keys
(
data
).
forEach
((
item
)
=>
{
let
val
=
data
[
item
];
this
.
search
.
forEach
((
obj
)
=>
{
...
...
@@ -416,62 +330,34 @@ export default {
)
{
//支持模糊查询,收尾增加百分号
val
=
val
.
trim
();
val
=
"
%
"
+
val
+
"
%
"
;
if
(
val
.
charAt
(
0
)
!=
'
%
'
){
val
=
"
%
"
+
val
}
if
(
val
.
charAt
(
val
.
length
-
1
)
!=
'
%
'
){
val
=
val
+
"
%
"
;
}
}
});
newData
[
item
]
=
this
.
decodeVal
(
val
);
});
return
newData
;
},
// 下载文件
async
downloadFile
()
{
let
data
=
this
.
decode
(
this
.
form
);
let
searchString
=
Object
.
assign
({},
this
.
$route
.
query
,
data
);
this
.
isDownload
=
true
;
try
{
// await download(this.downloadUrl, searchString )
await
downloadWithCustName
(
this
.
downloadUrl
,
searchString
);
}
catch
(
error
)
{
this
.
$message
.
error
(
error
);
}
this
.
isDownload
=
false
;
},
// 区域选择
async
treeSelected
(
val
,
type
)
{
let
areas
=
[];
const
[
province
,
city
,
area
]
=
val
;
if
(
!
type
)
{
this
.
form
.
areaId
=
val
.
slice
().
pop
();
decodeVal
(
val
)
{
let
valType
=
type
(
val
);
if
([
"
Number
"
,
"
Boolean
"
].
indexOf
(
valType
)
>
-
1
)
{
return
val
;
}
// 查找省市关联的区域
switch
(
val
.
length
)
{
case
1
:
areas
=
await
treeCache
.
getAreasByProvinceId
([
province
]);
break
;
case
2
:
areas
=
await
treeCache
.
getAreasByCityId
([
city
]);
break
;
case
3
:
areas
=
[
val
[
2
]];
break
;
default
:
break
;
if
(
valType
==
"
Undefined
"
||
valType
==
"
Null
"
)
{
return
undefined
;
}
},
//用户远程搜索
async
userRemoteMethod
(
name
)
{
if
(
name
!==
""
)
{
this
.
loading
=
true
;
const
userQuery
=
{
"
size
"
:
50
,
"
realName
"
:
name
,
};
this
.
userData
=
await
getUserListByQuery
(
userQuery
);
this
.
loading
=
false
;
}
else
{
this
.
userData
=
[];
if
(
valType
==
"
String
"
)
{
let
str
=
val
.
trim
();
return
str
.
length
?
str
:
undefined
;
}
return
val
;
},
listChange
()
{},
},
computed
:
{},
...
...
@@ -481,12 +367,6 @@ export default {
groupList
:
[],
},
remoteOptions
:
{},
treeData
:
[],
userData
:
[],
area
:
[],
isDownload
:
false
,
treeDatas
:
[],
selectedTreeID
:
[],
};
},
};
...
...
device-manager-ui/admin/src/components/Table.vue
View file @
74201798
...
...
@@ -117,7 +117,6 @@
:areaSelect=
"config.areaSelect"
/>
</div>
</div>
</div>
</div>
...
...
@@ -191,7 +190,8 @@
class=
"table-foot"
v-if=
"!isShowButton('notPagination') ? false : data.pageInfo.totalResult"
>
<Pagination
style=
"float:left"
<Pagination
style=
"float: left"
:total=
"data.pageInfo.totalResult"
:prePageResult=
"data.pageInfo.prePageResult"
/>
...
...
@@ -257,7 +257,7 @@ export default {
},
watch
:
{
$route
(
route
)
{
this
.
showSearch
=
this
.
isShowSearch
(
route
.
query
);
//
this.showSearch = this.isShowSearch(route.query);
},
},
computed
:
{
...
...
device-manager-ui/admin/src/router.js
View file @
74201798
...
...
@@ -35,7 +35,6 @@ const router = new Router({
...
restBuilder
(
'
user
'
,
'
system/user
'
),
// 用户管理 -- 管理用户
...
restBuilder
(
'
param
'
,
'
system/param
'
),
// 系统管理--参数管理
...
restBuilder
(
'
task
'
,
'
system/task
'
),
// 系统管理--任务管理
...
restBuilder
(
'
area
'
,
'
system/area
'
),
// 系统管理-区域管理
builder
(
'
site/list
'
,
'
system/site/index
'
),
//站点
...
...
device-manager-ui/admin/src/views/device/list.vue
View file @
74201798
...
...
@@ -118,6 +118,47 @@
<el-button
@
click=
"upload.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!-- 站点修改对话框 -->
<el-dialog
:title=
"tree.title"
:visible.sync=
"tree.open"
width=
"40%"
append-to-body
>
<span
style=
"font-size: 13px"
><b>
当前站点:
</b>
(
<el-link
style=
"margin-left: 10px"
type=
"primary"
:underline=
"false"
>
{{
siteName
}}
</el-link
>
站点编码:
{{
siteCode
}}
)
</span
>
<el-divider></el-divider>
<el-scrollbar
style=
"height: 100%"
>
<el-tree
size=
"mini"
ref=
"siteTree"
:data=
"areaData"
id=
"el-tree"
node-key=
"id"
indent=
"4"
:props=
"treeProps"
:load=
"loadNode"
highlight-current
default-expand-all
:expand-on-click-node=
"false"
:render-content=
"renderContent"
@
node-click=
"handleNodeClick"
>
</el-tree>
</el-scrollbar>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"updateSiteConform"
>
确 定
</el-button>
<el-button
@
click=
"tree.open = false"
>
取 消
</el-button>
</div>
</el-dialog>
<!--
<dialog-show
ref=
"dialogform"
@
ok=
"getData"
/>
-->
<drawer-show
ref=
"drawerform"
@
ok=
"getData"
/>
...
...
@@ -131,10 +172,11 @@
import
drawerView
from
"
./drawerview
"
;
import
drawerShow
from
"
./drawershow
"
;
import
table
from
"
@/assets/mixins/table
"
;
import
tree
from
"
@/assets/mixins/tree
"
;
export
default
{
name
:
"
Device
"
,
components
:
{
drawerShow
,
drawerView
},
mixins
:
[
table
],
mixins
:
[
table
,
tree
],
created
()
{
console
.
log
(
this
.
$route
);
this
.
siteId
=
this
.
$route
.
query
.
siteId
;
...
...
@@ -144,7 +186,6 @@ export default {
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
console
.
log
(
"
res
"
,
res
);
this
.
siteName
=
res
.
data
.
siteName
;
this
.
siteCode
=
res
.
data
.
siteCode
;
}
...
...
@@ -270,6 +311,49 @@ export default {
this
.
$message
.
error
(
error
.
message
);
});
},
updateSite
(
row
)
{
console
.
log
(
"
update site
"
);
this
.
$get
(
"
/sitestat/siteTree
"
,
{}).
then
(({
data
})
=>
{
this
.
areaData
=
data
.
siteTree
;
this
.
tree
.
open
=
true
;
this
.
tree
.
id
=
row
.
id
;
});
},
handleNodeClick
(
node
)
{
console
.
log
(
"
click node
"
,
node
);
this
.
currentNode
=
node
;
},
updateSiteConform
()
{
if
(
this
.
currentNode
.
type
!=
"
site
"
)
{
this
.
$message
.
error
(
"
请选择正确的站点!
"
);
return
;
}
this
.
loading
=
true
;
this
.
$post
(
"
/device/save
"
,
{
id
:
this
.
tree
.
id
,
siteId
:
this
.
currentNode
.
id
,
siteCode
:
this
.
currentNode
.
siteCode
,
siteName
:
this
.
currentNode
.
label
,
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
.
success
(
"
编辑站点成功!
"
);
this
.
tree
.
open
=
false
;
this
.
getData
();
}
})
.
catch
((
error
)
=>
{
this
.
loading
=
false
;
this
.
$message
.
error
(
error
.
message
);
});
},
// 操作菜单状态
changeStatus
(
row
,
column
)
{
return
(
...
...
@@ -301,30 +385,37 @@ export default {
// 上传的地址
url
:
"
/m/device/importData
"
,
},
// 站点树
tree
:
{
// 是否显示弹出层(设备导入)
open
:
false
,
// 弹出层标题(设备导入)
title
:
"
修改站点
"
,
},
isExport
:
false
,
siteId
:
null
,
siteName
:
""
,
siteCode
:
""
,
updateSiteId
:
null
,
updateSiteName
:
""
,
updateSiteCode
:
""
,
config
:
{
getsocketData
:
null
,
search
:
[
// {
// name: "deviceNum",
// type: "text",
// label: "设备编号",
// },
{
name
:
"
deviceCode
"
,
type
:
"
text
"
,
label
:
"
设备编码
"
,
fuzzy
:
true
},
{
name
:
"
deviceStatus
"
,
type
:
"
select
"
,
label
:
"
状态
"
,
},
// {
// name: "porductId",
// type: "select",
// label: "产品类型",
// },
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
...
...
@@ -368,7 +459,7 @@ export default {
{
label
:
"
操作
"
,
width
:
2
4
0
,
width
:
2
8
0
,
formatter
:
(
row
)
=>
{
return
(
<
div
>
...
...
@@ -395,6 +486,17 @@ export default {
""
)}
<
span
>
<
/span
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-map-location
"
onClick
=
{()
=>
{
this
.
updateSite
(
row
);
}}
>
编辑站点
<
/el-button
>
<
/div
>
);
},
...
...
device-manager-ui/admin/src/views/login/login.vue
View file @
74201798
...
...
@@ -31,7 +31,7 @@ import { createSocket } from '@/assets/utils/websocket'
export
default
{
name
:
'
login
'
,
created
()
{
window
.
location
.
href
=
process
.
env
.
VUE_APP_PORTAL_URL
==
'
undefined
'
?
'
http://192.168.0.98:11072
'
:
process
.
env
.
VUE_APP_PORTAL_URL
//
window.location.href=process.env.VUE_APP_PORTAL_URL=='undefined'?'http://192.168.0.98:11072':process.env.VUE_APP_PORTAL_URL
},
methods
:
{
login
()
{
...
...
device-manager-ui/admin/src/views/system/area/format.js
deleted
100644 → 0
View file @
f96901cf
let
treeData
=
[];
// 查找该条数据所处的层级深度
function
getDeep
(
list
,
parentId
,
deep
)
{
try
{
let
pid
=
list
.
filter
(
i
=>
i
.
id
==
parentId
)[
0
].
parentId
;
deep
++
;
if
(
pid
!=
0
)
{
return
getDeep
(
list
,
pid
,
deep
);
}
else
{
return
deep
}
}
catch
(
error
)
{
return
deep
;
}
}
// 分组排序
function
sort
(
list
)
{
let
array
=
[];
list
.
filter
(
i
=>!
i
.
parentId
).
forEach
(
item
=>
{
array
=
array
.
concat
(
child
(
list
,
item
,
[]))
})
return
array
}
function
child
(
list
,
data
,
arr
)
{
arr
.
push
(
data
);
if
(
data
.
hasChild
)
{
list
.
filter
(
i
=>
i
.
parentId
==
data
.
id
).
forEach
(
item
=>
{
return
child
(
list
,
item
,
arr
)
})
}
return
arr
;
}
let
render
=
function
(
result
)
{
return
treeData
=
sort
(
result
.
map
(
i
=>
{
i
.
hasChild
=
result
.
filter
(
j
=>
j
.
parentId
==
i
.
id
).
length
>
0
;
// 是否有下级
i
.
deep
=
getDeep
(
result
,
i
.
parentId
,
0
);
// 缩进层级
i
.
open
=
false
;
i
.
isShow
=
true
;
return
i
;
}));
}
let
toggle
=
function
(
row
)
{
// 关闭的时候,需要递归关闭下面全部子级
let
childId
=
[]
// 打开下级
if
(
row
.
open
)
{
childId
=
child
(
treeData
,
row
,
[]).
map
(
i
=>
i
.
id
)
childId
.
shift
();
}
return
treeData
.
map
(
i
=>
{
if
(
i
.
id
==
row
.
id
)
{
i
.
open
=
!
i
.
open
;
}
if
(
i
.
parentId
==
row
.
id
)
{
i
.
isShow
=
!
i
.
isShow
;
}
if
(
childId
.
indexOf
(
i
.
id
)
>
-
1
)
{
i
.
open
=
false
;
i
.
isShow
=
childId
.
indexOf
(
i
.
id
)
===
-
1
}
return
i
;
})
.
filter
(
i
=>
i
.
isShow
)
}
function
getParentId
(
id
,
list
,
arr
)
{
arr
.
unshift
(
id
);
const
pid
=
list
.
filter
(
i
=>
id
==
i
.
id
)[
0
].
parentId
;
if
(
pid
)
{
return
getParentId
(
pid
,
list
,
arr
)
}
else
{
return
arr
;
}
}
function
buildTree
(
pid
,
list
)
{
const
data
=
list
.
filter
(
i
=>
pid
==
i
.
parentId
);
return
data
.
length
?
data
.
map
(
i
=>
{
return
{
value
:
i
.
id
,
label
:
i
.
name
,
children
:
buildTree
(
i
.
id
,
list
),
}
})
:
undefined
}
export
default
{
render
,
toggle
,
getParentId
,
buildTree
,
}
\ No newline at end of file
device-manager-ui/admin/src/views/system/area/list.vue
deleted
100644 → 0
View file @
f96901cf
<
template
>
<div
class=
"page"
>
<LayoutTable
:data=
'tableData'
:config=
'tableConfig'
notPagination
notDel
>
<div>
<el-tree
:data=
"tree"
:props=
"treeProps"
:load=
"loadNode"
lazy
>
<span
style=
"width:100%"
slot-scope=
"
{ node, data }">
<span
>
{{
node
.
label
}}
</span>
<span
style=
"float:right;"
>
<el-button
icon=
"el-icon-plus"
style=
"padding:3px 10px"
round
@
click=
"() => addChild(data)"
>
新增
</el-button>
<el-button
icon=
"el-icon-edit"
type=
"primary"
style=
"padding:3px 10px"
round
@
click=
"() => editChild(data)"
>
编辑
</el-button>
</span>
</span>
</el-tree>
</div>
</LayoutTable>
</div>
</
template
>
<
script
>
import
table
from
"
@/assets/mixins/table
"
;
export
default
{
mixins
:
[
table
],
methods
:
{
async
loadNode
(
node
,
resolve
)
{
if
(
node
.
level
===
0
)
return
let
res
=
await
this
.
$post
(
'
/area/getAreaByParentId
'
,
{
'
parentId
'
:
node
.
data
.
id
,
'
size
'
:
-
1
});
resolve
(
this
.
clean
(
res
.
data
.
data
));
},
clean
(
data
)
{
return
data
.
map
(
i
=>
{
return
{
name
:
i
.
name
,
children
:
[],
id
:
i
.
id
,
isLeaf
:
i
.
level
>
2
}
});
},
afterRender
({
result
})
{
this
.
tree
=
result
;
},
addChild
(
data
)
{
this
.
$router
.
push
({
path
:
this
.
pageInfo
.
add
,
query
:
{
pid
:
data
.
id
}
});
},
editChild
(
data
)
{
this
.
$router
.
push
({
path
:
this
.
pageInfo
.
edit
,
query
:
Object
.
assign
({},
{
id
:
data
.
id
},
this
.
query
)
})
}
},
data
()
{
return
{
tree
:[],
openIds
:
[],
treeProps
:
{
children
:
'
children
'
,
label
:
'
name
'
,
isLeaf
:
'
isLeaf
'
,
},
urls
:
{
del
:
"
/area/disable
"
},
query
:
{
pageInfo
:
{
prePageResult
:
-
1
}
},
config
:
{
search
:
[
{
name
:
"
name
"
,
type
:
"
text
"
,
label
:
"
名称
"
},
{
name
:
"
status
"
,
type
:
"
select
"
,
label
:
"
是否启用
"
}
],
columns
:
[
{
type
:
"
selection
"
,
width
:
60
},
{
label
:
"
区域名称
"
,
width
:
200
,
formatter
:
(
row
,
col
,
val
,
index
)
=>
{
const
width
=
`width:
${
row
.
deep
*
18
}
px;height: 20px;display: inline-block;`
;
return
(
<
div
>
<
span
style
=
{
width
}
/
>
{
row
.
hasChild
?
(
<
i
onClick
=
{()
=>
this
.
loadArea
(
row
)
}
class
=
{
row
.
open
?
"
el-icon-caret-bottom
"
:
"
el-icon-caret-right
"
}
>
{
row
.
name
}
<
/i
>
)
:
(
<
span
>
{
row
.
name
}
<
/span
>
)}
<
/div
>
);
}
},
{
prop
:
"
id
"
,
label
:
"
区域ID
"
},
{
prop
:
"
parentId
"
,
label
:
"
上级区域ID
"
},
{
prop
:
"
name
"
,
label
:
"
区域名称
"
},
{
prop
:
"
level
"
,
label
:
"
区域级别
"
,
width
:
70
,
formatter
:
this
.
formatter
},
{
prop
:
"
code
"
,
label
:
"
区域编码
"
},
// {
// prop: "contactsPeople",
// label: "区域负责人"
// },
// {
// prop: "contactsMobile",
// label: "区域负责人电话"
// },
{
prop
:
"
status
"
,
label
:
"
启用
"
,
formatter
:
this
.
formatter
},
{
prop
:
"
remark
"
,
label
:
"
描述
"
},
{
label
:
"
操作
"
,
width
:
180
,
formatter
:
row
=>
{
return
(
<
div
>
<
el
-
button
icon
=
"
el-icon-plus
"
size
=
"
mini
"
round
onClick
=
{()
=>
{
this
.
addChild
(
row
);
}}
>
新增
<
/el-button>{" "
}
<
table
-
buttons
row
=
{
row
}
onEdit
=
{
this
.
toEdit
}
noDel
/>
<
/div
>
);
}
}
]
}
};
}
};
</
script
>
device-manager-ui/admin/src/views/system/area/show.vue
deleted
100644 → 0
View file @
f96901cf
<
template
>
<layout-form>
<el-form
:model=
"form"
:loading=
"loading"
:rules=
"rules"
size=
'small'
label-width=
'120px'
ref=
"form"
>
<el-row>
<el-col
:span=
'12'
>
<el-form-item
label=
"区域"
prop=
"parentId"
>
<el-cascader
@
change=
'treeSelected'
:options=
"treeData"
change-on-select
v-model=
"selectedTreeID"
></el-cascader>
</el-form-item>
</el-col>
<Field
label=
"区域名称"
prop=
"name"
v-model=
"form.name"
/>
<Field
label=
"区域级别"
prop=
"level"
v-model=
"form.level"
:enumData=
'dict.level'
type=
'select'
/>
<Field
label=
"编码"
prop=
"code"
v-model=
"form.code"
/>
<!--
<Field
label=
"负责人"
prop=
"contactsPeople"
v-model=
"form.contactsPeople"
/>
<Field
label=
"负责人电话"
prop=
"contactsMobile"
v-model=
"form.contactsMobile"
/>
-->
<Field
label=
"子区域数量"
prop=
"childSize"
v-model=
"form.childSize"
/>
<Field
label=
"子区域的最大ID"
prop=
"maxChildId"
v-model=
"form.maxChildId"
/>
<Field
label=
"是否启用"
prop=
"status"
v-model=
"form.status"
:enumData=
"dict.status"
type=
'select'
/>
<Field
label=
"描述"
prop=
"remark"
v-model=
"form.remark"
:span=
'24'
/>
</el-row>
<form-buttons
@
submit=
'submitForm'
/>
</el-form>
</layout-form>
</
template
>
<
script
>
import
form
from
"
@/assets/mixins/form
"
;
import
{
treeCache
}
from
"
@/assets/utils/tree
"
;
export
default
{
mixins
:
[
form
],
async
created
()
{
this
.
treeData
=
await
treeCache
.
getTree
();
this
.
form
.
parentId
=
this
.
query
.
pid
;
},
methods
:
{
afterRender
()
{
this
.
selectedTreeID
=
treeCache
.
getPid
(
this
.
form
.
parentId
);
},
beforeSubmit
(
form
)
{
form
.
parentId
=
this
.
selectedTreeID
.
slice
().
pop
();
return
form
;
},
treeSelected
(
val
)
{
console
.
log
(
val
);
this
.
form
.
parentId
=
val
.
slice
().
pop
();
}
},
data
()
{
return
{
toString
:
[
"
level
"
,
"
status
"
],
treeData
:
[],
selectedTreeID
:
[],
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入区域名称
"
,
trigger
:
"
blur
"
}],
remark
:
[{
validator
:
(
rule
,
val
,
callback
)
=>
{
if
(
val
&&
val
.
split
(
""
).
length
>
200
)
{
return
callback
(
new
Error
(
'
描述不得超过200字
'
))
}
callback
();
},
trigger
:
[
'
change
'
,
'
blur
'
]
},
],
}
};
}
};
</
script
>
device-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
View file @
74201798
...
...
@@ -21,6 +21,8 @@ import com.mortals.xhx.base.system.user.model.UserEntity;
import
com.mortals.xhx.base.system.user.service.UserService
;
import
com.mortals.xhx.base.system.valid.service.ValidCodeService
;
import
com.mortals.xhx.common.key.RedisKey
;
import
com.mortals.xhx.common.pdu.user.UserPdu
;
import
com.mortals.xhx.feign.user.IUserFeign
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
...
...
@@ -57,8 +59,8 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
private
ICacheService
cacheService
;
@Autowired
private
IAuthTokenService
authTokenService
;
private
static
Log
logger
=
LogFactory
.
getLog
(
LoginController
.
class
)
;
@Autowired
private
IUserFeign
userFeign
;
@RequestMapping
(
"login"
)
public
String
login
(
@RequestBody
LoginForm
loginForm
)
throws
Exception
{
...
...
@@ -66,7 +68,15 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
JSONObject
ret
=
new
JSONObject
();
String
loginName
=
loginForm
.
getLoginName
();
String
password
=
loginForm
.
getPassword
();
String
securityCode
=
loginForm
.
getSecurityCode
();
UserPdu
userPdu
=
new
UserPdu
();
userPdu
.
setLoginName
(
loginName
);
userPdu
.
setPassword
(
password
);
String
resp
=
userFeign
.
portalLogin
(
userPdu
);
return
resp
;
/* String securityCode = loginForm.getSecurityCode();
String ip = super.getRequestIP(request);
if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password)) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
...
...
@@ -128,7 +138,7 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
return ret.toJSONString();
}
}
*/
}
@RequestMapping
(
"logout"
)
...
...
device-manager/src/main/resources/bootstrap.yml
View file @
74201798
...
...
@@ -76,9 +76,9 @@ application:
upload
:
path
:
@
profiles.filepath@
feign
:
hystrix
:
enabled
:
false
#
feign:
#
hystrix:
#
enabled: false
queue
:
type
:
@
profiles.queue.type@
# memory or kafka (Apache Kafka) or rabbitmq (RabbitMQ)
...
...
pom.xml
View file @
74201798
...
...
@@ -63,13 +63,6 @@
<artifactId>
spring-cloud-loadbalancer
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-netflix-ribbon
</artifactId>
</dependency>
</dependencies>
<build>
...
...
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