Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bill-manager-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
赵啸非
bill-manager-ui
Commits
15017fd2
Commit
15017fd2
authored
Dec 02, 2024
by
“yiyousong”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perf: 格式化
parent
3eeb7834
Changes
41
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
1937 additions
and
2486 deletions
+1937
-2486
admin_2/src/pages/404/404.vue
admin_2/src/pages/404/404.vue
+4
-6
admin_2/src/pages/engine/Engine.vue
admin_2/src/pages/engine/Engine.vue
+10
-21
admin_2/src/pages/engine/EvaluateSystem.vue
admin_2/src/pages/engine/EvaluateSystem.vue
+79
-94
admin_2/src/pages/engine/QueueUpSystem.vue
admin_2/src/pages/engine/QueueUpSystem.vue
+79
-79
admin_2/src/pages/engineSearch/EvaluateData.vue
admin_2/src/pages/engineSearch/EvaluateData.vue
+67
-68
admin_2/src/pages/engineSearch/QueueUpData.vue
admin_2/src/pages/engineSearch/QueueUpData.vue
+70
-71
admin_2/src/pages/engineSearch/components/Search.vue
admin_2/src/pages/engineSearch/components/Search.vue
+51
-89
admin_2/src/pages/home/components/AreaCard.vue
admin_2/src/pages/home/components/AreaCard.vue
+12
-18
admin_2/src/pages/home/components/Card.vue
admin_2/src/pages/home/components/Card.vue
+10
-22
admin_2/src/pages/home/components/Carousel.vue
admin_2/src/pages/home/components/Carousel.vue
+11
-16
admin_2/src/pages/home/components/LineEchart.vue
admin_2/src/pages/home/components/LineEchart.vue
+59
-61
admin_2/src/pages/login/Login.vue
admin_2/src/pages/login/Login.vue
+39
-56
admin_2/src/pages/market/EvaluateReport.vue
admin_2/src/pages/market/EvaluateReport.vue
+138
-148
admin_2/src/pages/market/Market.vue
admin_2/src/pages/market/Market.vue
+8
-13
admin_2/src/pages/market/QueueUpReport.vue
admin_2/src/pages/market/QueueUpReport.vue
+153
-174
admin_2/src/pages/market/components/EvaluateDetails.vue
admin_2/src/pages/market/components/EvaluateDetails.vue
+103
-119
admin_2/src/pages/market/components/QueueUpDetails.vue
admin_2/src/pages/market/components/QueueUpDetails.vue
+96
-110
admin_2/src/pages/sso/Sso.vue
admin_2/src/pages/sso/Sso.vue
+22
-23
admin_2/src/pages/system/System.vue
admin_2/src/pages/system/System.vue
+2
-2
admin_2/src/pages/system/access/Access.vue
admin_2/src/pages/system/access/Access.vue
+79
-91
admin_2/src/pages/system/access/components/AccessSystem.vue
admin_2/src/pages/system/access/components/AccessSystem.vue
+24
-53
admin_2/src/pages/system/access/components/AddAccess.vue
admin_2/src/pages/system/access/components/AddAccess.vue
+53
-84
admin_2/src/pages/system/access/components/InputTree.vue
admin_2/src/pages/system/access/components/InputTree.vue
+13
-13
admin_2/src/pages/system/areaSystem/AreaSystem.vue
admin_2/src/pages/system/areaSystem/AreaSystem.vue
+60
-72
admin_2/src/pages/system/areaSystem/components/AddAreaSystem.vue
.../src/pages/system/areaSystem/components/AddAreaSystem.vue
+24
-48
admin_2/src/pages/system/menu/Menu.vue
admin_2/src/pages/system/menu/Menu.vue
+65
-74
admin_2/src/pages/system/menu/components/AddMenu.vue
admin_2/src/pages/system/menu/components/AddMenu.vue
+62
-127
admin_2/src/pages/system/menu/components/IconSelect.vue
admin_2/src/pages/system/menu/components/IconSelect.vue
+12
-20
admin_2/src/pages/system/parameter/Parameter.vue
admin_2/src/pages/system/parameter/Parameter.vue
+67
-73
admin_2/src/pages/system/parameter/components/AddParameter.vue
..._2/src/pages/system/parameter/components/AddParameter.vue
+33
-63
admin_2/src/pages/system/resourceManage/ResourceManage.vue
admin_2/src/pages/system/resourceManage/ResourceManage.vue
+58
-64
admin_2/src/pages/system/resourceManage/components/AddResource.vue
...rc/pages/system/resourceManage/components/AddResource.vue
+38
-59
admin_2/src/pages/system/role/Role.vue
admin_2/src/pages/system/role/Role.vue
+61
-76
admin_2/src/pages/system/role/components/AddRole.vue
admin_2/src/pages/system/role/components/AddRole.vue
+19
-29
admin_2/src/pages/system/role/components/ApportionMenu.vue
admin_2/src/pages/system/role/components/ApportionMenu.vue
+20
-26
admin_2/src/pages/system/role/components/ApportionRes.vue
admin_2/src/pages/system/role/components/ApportionRes.vue
+18
-31
admin_2/src/pages/system/systemlogs/SystemLogs.vue
admin_2/src/pages/system/systemlogs/SystemLogs.vue
+38
-40
admin_2/src/pages/system/task/TaskSet.vue
admin_2/src/pages/system/task/TaskSet.vue
+66
-72
admin_2/src/pages/system/task/components/AddTask.vue
admin_2/src/pages/system/task/components/AddTask.vue
+39
-79
admin_2/src/pages/system/user/User.vue
admin_2/src/pages/system/user/User.vue
+54
-67
admin_2/src/pages/system/user/components/AddUserRole.vue
admin_2/src/pages/system/user/components/AddUserRole.vue
+21
-35
No files found.
admin_2/src/pages/404/404.vue
View file @
15017fd2
...
...
@@ -19,9 +19,7 @@
>
-->
</div>
<!--
<div
class=
"bullshit__headline"
>
{{
message
}}
</div>
-->
<div
class=
"bullshit__info"
>
请检查您输入的网址是否正确,或点击下面的按钮返回。
</div>
<div
class=
"bullshit__info"
>
请检查您输入的网址是否正确,或点击下面的按钮返回。
</div>
<a
class=
"bullshit__return-home"
@
click=
"handleGoHome"
>
返回
</a>
</div>
</div>
...
...
@@ -30,15 +28,15 @@
<
script
>
export
default
{
name
:
"
Page404
"
,
name
:
'
Page404
'
,
data
()
{
return
{};
},
methods
:
{
handleGoHome
()
{
this
.
$router
.
back
();
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/engine/Engine.vue
View file @
15017fd2
...
...
@@ -17,9 +17,7 @@
class=
"search-box top-radius flex h-full items-center gap-5"
v-hasPermi=
"['engine:query']"
>
<div
class=
"text-[14px] text-[#395EBF]"
>
统计时段:
{{
time
[
0
]
}}
~
{{
time
[
1
]
}}
</div>
<div
class=
"text-[14px] text-[#395EBF]"
>
统计时段:
{{
time
[
0
]
}}
~
{{
time
[
1
]
}}
</div>
<y-date-picker
v-model=
"time"
align=
"right"
...
...
@@ -28,9 +26,7 @@
end-placeholder=
"结束日期"
>
</y-date-picker>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleDate"
>
搜索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleDate"
>
搜索
</el-button>
</div>
<div
class=
"engine-btn top-radius"
...
...
@@ -49,25 +45,22 @@
</
template
>
<
script
>
import
{
mapGetters
}
from
"
vuex
"
;
import
{
mapGetters
}
from
'
vuex
'
;
export
default
{
data
()
{
return
{
time
:
[
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
],
time
:
[
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
),
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
)]
};
},
watch
:
{
"
$route.path
"
()
{
'
$route.path
'
()
{
this
.
$nextTick
(()
=>
{
this
.
handleDate
();
});
}
,
}
},
computed
:
{
...
mapGetters
(
"
user
"
,
[
"
secondaryRoutes
"
]),
...
mapGetters
(
'
user
'
,
[
'
secondaryRoutes
'
])
},
created
()
{
this
.
$nextTick
(()
=>
{
...
...
@@ -77,8 +70,8 @@ export default {
methods
:
{
handleDate
()
{
this
.
$refs
.
Page
.
getDate
(
this
.
time
);
}
,
}
,
}
}
};
</
script
>
...
...
@@ -133,11 +126,7 @@ export default {
.engine-btn {
width: 220px;
color: #fff;
background: linear-gradient(
270deg,
rgba(139, 87, 249, 1) 0%,
rgba(5, 149, 253, 1) 100%
);
background: linear-gradient(270deg, rgba(139, 87, 249, 1) 0%, rgba(5, 149, 253, 1) 100%);
font-size: 18px;
font-weight: bold;
display: flex;
...
...
admin_2/src/pages/engine/EvaluateSystem.vue
View file @
15017fd2
...
...
@@ -106,23 +106,23 @@
</
template
>
<
script
>
import
DoubleTable
from
"
./components/DoubleTable.vue
"
;
import
{
getEvaSystemList
}
from
"
@/api/engine
"
;
import
{
export2Excel
}
from
"
@/utils/exportExcel
"
;
import
{
dataSection
}
from
"
@/utils
"
;
import
storage
from
"
@/utils/storage
"
;
import
DoubleTable
from
'
./components/DoubleTable.vue
'
;
import
{
getEvaSystemList
}
from
'
@/api/engine
'
;
import
{
export2Excel
}
from
'
@/utils/exportExcel
'
;
import
{
dataSection
}
from
'
@/utils
'
;
import
storage
from
'
@/utils/storage
'
;
export
default
{
components
:
{
DoubleTable
,
DoubleTable
},
data
()
{
return
{
dict
:
{},
dateForm
:
{
timeStart
:
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
timeEnd
:
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
timeStart
:
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
),
timeEnd
:
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
)
},
siteId
:
storage
.
get
(
2
,
"
siteId
"
),
siteId
:
storage
.
get
(
2
,
'
siteId
'
),
hallLoading
:
false
,
pjOptionLoading
:
false
,
deptLoading
:
false
,
...
...
@@ -131,112 +131,112 @@ export default {
total
:
0
,
page
:
1
,
size
:
10
,
hallNameNotList
:
[
""
],
hallNameNotList
:
[
''
]
},
pjOptionSearch
:
{
total
:
0
,
page
:
1
,
size
:
10
,
pjOptionNotList
:
[
""
],
pjOptionNotList
:
[
''
],
pjOptionList
:
[],
groupList
:
[
"
pjOption
"
],
groupList
:
[
'
pjOption
'
]
},
deptSearch
:
{
total
:
0
,
page
:
1
,
size
:
10
,
sectionNameNotList
:
[
""
],
sectionNameList
:
[]
,
sectionNameNotList
:
[
''
],
sectionNameList
:
[]
},
windowSearch
:
{
total
:
0
,
page
:
1
,
size
:
10
,
windowFromnumNotList
:
[
""
],
windowFromnumList
:
[]
,
windowFromnumNotList
:
[
''
],
windowFromnumList
:
[]
},
hallColumn
:
[
{
label
:
"
大厅名称
"
,
prop
:
"
hallName
"
,
align
:
"
center
"
,
showOverflowTooltip
:
true
,
label
:
'
大厅名称
'
,
prop
:
'
hallName
'
,
align
:
'
center
'
,
showOverflowTooltip
:
true
},
{
label
:
"
评价数量
"
,
prop
:
"
pjCount
"
,
align
:
"
center
"
,
label
:
'
评价数量
'
,
prop
:
'
pjCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
pjOptionColumn
:
[
{
label
:
"
评价选项
"
,
prop
:
"
pjOption
"
,
align
:
"
center
"
,
label
:
'
评价选项
'
,
prop
:
'
pjOption
'
,
align
:
'
center
'
,
showOverflowTooltip
:
true
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
>
{
cellValue
}
<
/span>
;
}
}
,
}
},
{
label
:
"
评价数量
"
,
prop
:
"
pjCount
"
,
align
:
"
center
"
,
label
:
'
评价数量
'
,
prop
:
'
pjCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
deptColumn
:
[
{
label
:
"
部门名称
"
,
prop
:
"
sectionName
"
,
label
:
'
部门名称
'
,
prop
:
'
sectionName
'
,
showOverflowTooltip
:
true
,
align
:
"
center
"
,
align
:
'
center
'
},
{
label
:
"
评价数量
"
,
prop
:
"
pjCount
"
,
align
:
"
center
"
,
label
:
'
评价数量
'
,
prop
:
'
pjCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
windowColumn
:
[
{
label
:
"
窗口编号
"
,
prop
:
"
windowFromnum
"
,
label
:
'
窗口编号
'
,
prop
:
'
windowFromnum
'
,
showOverflowTooltip
:
true
,
align
:
"
center
"
,
align
:
'
center
'
},
{
label
:
"
评价数量
"
,
prop
:
"
pjCount
"
,
align
:
"
center
"
,
label
:
'
评价数量
'
,
prop
:
'
pjCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
hallTableData
:
[],
pjOptionTableData
:
[],
deptTableData
:
[],
windowTableData
:
[]
,
windowTableData
:
[]
};
},
created
()
{},
...
...
@@ -259,7 +259,7 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
hallSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -267,13 +267,13 @@ export default {
return
{
data
:
data
,
total
:
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -292,7 +292,7 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
pjOptionSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -300,13 +300,13 @@ export default {
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -324,20 +324,20 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
deptSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -356,20 +356,20 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
windowSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -388,14 +388,14 @@ export default {
let
filterVal
=
this
.
hallColumn
.
map
((
v
)
=>
v
.
prop
);
dataSection
(
this
.
hallEvaFn
,
{},
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
大厅评价量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
大厅评价量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -410,14 +410,14 @@ export default {
}
dataSection
(
this
.
pjOptionEva
,
searchForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
评价选项统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
评价选项统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -432,14 +432,14 @@ export default {
}
dataSection
(
this
.
deptEva
,
searchForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
部门评价量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
部门评价量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -454,14 +454,14 @@ export default {
}
dataSection
(
this
.
windowEva
,
searchForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
窗口评价量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
窗口评价量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -476,30 +476,15 @@ export default {
searchMethod
();
};
if
(
type
===
"
pjOption
"
)
{
setupSearch
(
this
.
pjOptionSearch
,
"
pjOptionList
"
,
pjOption
,
this
.
getPjOptionEva
);
}
else
if
(
type
===
"
dept
"
)
{
setupSearch
(
this
.
deptSearch
,
"
sectionNameList
"
,
deptName
,
this
.
getDeptEva
);
}
else
if
(
type
===
"
window
"
)
{
setupSearch
(
this
.
windowSearch
,
"
windowFromnumList
"
,
windowNum
,
this
.
getWindowEva
);
if
(
type
===
'
pjOption
'
)
{
setupSearch
(
this
.
pjOptionSearch
,
'
pjOptionList
'
,
pjOption
,
this
.
getPjOptionEva
);
}
else
if
(
type
===
'
dept
'
)
{
setupSearch
(
this
.
deptSearch
,
'
sectionNameList
'
,
deptName
,
this
.
getDeptEva
);
}
else
if
(
type
===
'
window
'
)
{
setupSearch
(
this
.
windowSearch
,
'
windowFromnumList
'
,
windowNum
,
this
.
getWindowEva
);
}
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/engine/QueueUpSystem.vue
View file @
15017fd2
...
...
@@ -106,23 +106,23 @@
</
template
>
<
script
>
import
DoubleTable
from
"
./components/DoubleTable.vue
"
;
import
{
getQueueSystemList
}
from
"
@/api/engine
"
;
import
{
export2Excel
}
from
"
@/utils/exportExcel
"
;
import
{
dataSection
}
from
"
@/utils
"
;
import
storage
from
"
@/utils/storage
"
;
import
DoubleTable
from
'
./components/DoubleTable.vue
'
;
import
{
getQueueSystemList
}
from
'
@/api/engine
'
;
import
{
export2Excel
}
from
'
@/utils/exportExcel
'
;
import
{
dataSection
}
from
'
@/utils
'
;
import
storage
from
'
@/utils/storage
'
;
export
default
{
components
:
{
DoubleTable
,
DoubleTable
},
data
()
{
return
{
dict
:
{},
dateForm
:
{
timeStart
:
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
timeEnd
:
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
timeStart
:
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
),
timeEnd
:
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
)
},
siteId
:
storage
.
get
(
2
,
"
siteId
"
),
siteId
:
storage
.
get
(
2
,
'
siteId
'
),
hallLoading
:
false
,
businessLoading
:
false
,
deptLoading
:
false
,
...
...
@@ -131,112 +131,112 @@ export default {
total
:
0
,
page
:
1
,
size
:
10
,
hallNameNotList
:
[
""
],
hallNameNotList
:
[
''
]
},
businessSearch
:
{
total
:
0
,
page
:
1
,
size
:
10
,
businessNotList
:
[
""
],
businessNotList
:
[
''
],
businessList
:
[],
groupList
:
[
"
business
"
],
groupList
:
[
'
business
'
]
},
deptSearch
:
{
total
:
0
,
page
:
1
,
size
:
10
,
sectionNameNotList
:
[
""
],
sectionNameList
:
[]
,
sectionNameNotList
:
[
''
],
sectionNameList
:
[]
},
windowSearch
:
{
total
:
0
,
page
:
1
,
size
:
10
,
windowFromnumNotList
:
[
""
],
windowFromnumList
:
[]
,
windowFromnumNotList
:
[
''
],
windowFromnumList
:
[]
},
hallColumn
:
[
{
label
:
"
大厅名称
"
,
prop
:
"
hallName
"
,
align
:
"
center
"
,
showOverflowTooltip
:
true
,
label
:
'
大厅名称
'
,
prop
:
'
hallName
'
,
align
:
'
center
'
,
showOverflowTooltip
:
true
},
{
label
:
"
排队数量
"
,
prop
:
"
phCount
"
,
align
:
"
center
"
,
label
:
'
排队数量
'
,
prop
:
'
phCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
businessColumn
:
[
{
label
:
"
业务名称
"
,
prop
:
"
business
"
,
align
:
"
center
"
,
label
:
'
业务名称
'
,
prop
:
'
business
'
,
align
:
'
center
'
,
showOverflowTooltip
:
true
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
>
{
cellValue
}
<
/span>
;
}
}
,
}
},
{
label
:
"
排队数量
"
,
prop
:
"
phCount
"
,
align
:
"
center
"
,
label
:
'
排队数量
'
,
prop
:
'
phCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
deptColumn
:
[
{
label
:
"
部门名称
"
,
prop
:
"
sectionName
"
,
label
:
'
部门名称
'
,
prop
:
'
sectionName
'
,
showOverflowTooltip
:
true
,
align
:
"
center
"
,
align
:
'
center
'
},
{
label
:
"
排队数量
"
,
prop
:
"
phCount
"
,
align
:
"
center
"
,
label
:
'
排队数量
'
,
prop
:
'
phCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
windowColumn
:
[
{
label
:
"
窗口编号
"
,
prop
:
"
windowFromnum
"
,
label
:
'
窗口编号
'
,
prop
:
'
windowFromnum
'
,
showOverflowTooltip
:
true
,
align
:
"
center
"
,
align
:
'
center
'
},
{
label
:
"
排队数量
"
,
prop
:
"
phCount
"
,
align
:
"
center
"
,
label
:
'
排队数量
'
,
prop
:
'
phCount
'
,
align
:
'
center
'
,
formatter
:
(
row
,
column
,
cellValue
)
=>
{
if
(
cellValue
)
{
return
<
span
class
=
"
table-num
"
>
{
cellValue
}
<
/span>
;
}
}
,
}
,
}
}
],
hallTableData
:
[],
businessTableData
:
[],
deptTableData
:
[],
windowTableData
:
[]
,
windowTableData
:
[]
};
},
created
()
{
...
...
@@ -264,7 +264,7 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
hallSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -272,13 +272,13 @@ export default {
return
{
data
:
data
,
total
:
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -297,7 +297,7 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
businessSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -305,13 +305,13 @@ export default {
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -329,20 +329,20 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
deptSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -361,20 +361,20 @@ export default {
siteId
:
this
.
siteId
,
...
this
.
windowSearch
,
...
this
.
dateForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -393,14 +393,14 @@ export default {
let
filterVal
=
this
.
hallColumn
.
map
((
v
)
=>
v
.
prop
);
dataSection
(
this
.
hallQueueFn
,
{},
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
大厅取号量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
大厅取号量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -415,14 +415,14 @@ export default {
}
dataSection
(
this
.
businessQueue
,
searchForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
业务取号量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
业务取号量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -437,14 +437,14 @@ export default {
}
dataSection
(
this
.
deptQueue
,
searchForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
部门取号量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
部门取号量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -459,14 +459,14 @@ export default {
}
dataSection
(
this
.
windowQueue
,
searchForm
,
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
export2Excel
(
tHeader
,
filterVal
,
data
,
"
窗口取号量统计报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
窗口取号量统计报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
},
...
...
@@ -480,18 +480,18 @@ export default {
searchObj
[
listKey
]
=
value
?
[
value
]
:
[];
};
if
(
type
===
"
business
"
)
{
setupSearch
(
this
.
businessSearch
,
"
businessList
"
,
businessName
);
if
(
type
===
'
business
'
)
{
setupSearch
(
this
.
businessSearch
,
'
businessList
'
,
businessName
);
this
.
getBusinessQueue
();
}
else
if
(
type
===
"
dept
"
)
{
setupSearch
(
this
.
deptSearch
,
"
sectionNameList
"
,
deptName
);
}
else
if
(
type
===
'
dept
'
)
{
setupSearch
(
this
.
deptSearch
,
'
sectionNameList
'
,
deptName
);
this
.
getDeptQueue
();
}
else
if
(
type
===
"
window
"
)
{
setupSearch
(
this
.
windowSearch
,
"
windowFromnumList
"
,
windowNum
);
}
else
if
(
type
===
'
window
'
)
{
setupSearch
(
this
.
windowSearch
,
'
windowFromnumList
'
,
windowNum
);
this
.
getWindowQueue
();
}
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/engineSearch/EvaluateData.vue
View file @
15017fd2
...
...
@@ -45,86 +45,86 @@
</
template
>
<
script
>
import
Search
from
"
./components/Search.vue
"
;
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getEvaStatList
}
from
"
@/api/engine
"
;
import
{
formatSeconds
,
dataSection
}
from
"
@/utils
"
;
import
{
export2Excel
}
from
"
@/utils/exportExcel
"
;
import
storage
from
"
@/utils/storage
"
;
import
Search
from
'
./components/Search.vue
'
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
{
getEvaStatList
}
from
'
@/api/engine
'
;
import
{
formatSeconds
,
dataSection
}
from
'
@/utils
'
;
import
{
export2Excel
}
from
'
@/utils/exportExcel
'
;
import
storage
from
'
@/utils/storage
'
;
export
default
{
components
:
{
Search
,
TableHeader
,
TableHeader
},
data
()
{
return
{
loading
:
false
,
exportLoading
:
false
,
siteId
:
storage
.
get
(
2
,
"
siteId
"
),
siteId
:
storage
.
get
(
2
,
'
siteId
'
),
page
:
1
,
size
:
10
,
total
:
0
,
tableData
:
[],
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
站点名称
"
,
prop
:
"
siteName
"
,
align
:
"
center
"
,
label
:
'
站点名称
'
,
prop
:
'
siteName
'
,
align
:
'
center
'
},
{
label
:
"
部门名称
"
,
prop
:
"
sectionName
"
,
align
:
"
center
"
,
label
:
'
部门名称
'
,
prop
:
'
sectionName
'
,
align
:
'
center
'
},
{
label
:
"
评价选型
"
,
prop
:
"
pjOption
"
,
align
:
"
center
"
,
label
:
'
评价选型
'
,
prop
:
'
pjOption
'
,
align
:
'
center
'
},
{
label
:
"
窗口编号
"
,
prop
:
"
windowFromnum
"
,
align
:
"
center
"
,
label
:
'
窗口编号
'
,
prop
:
'
windowFromnum
'
,
align
:
'
center
'
},
{
label
:
"
年份
"
,
prop
:
"
year
"
,
align
:
"
center
"
,
label
:
'
年份
'
,
prop
:
'
year
'
,
align
:
'
center
'
},
{
label
:
"
月份
"
,
prop
:
"
month
"
,
align
:
"
center
"
,
label
:
'
月份
'
,
prop
:
'
month
'
,
align
:
'
center
'
},
{
label
:
"
日期
"
,
prop
:
"
day
"
,
align
:
"
center
"
,
label
:
'
日期
'
,
prop
:
'
day
'
,
align
:
'
center
'
},
{
label
:
"
评价数量
"
,
prop
:
"
pjCount
"
,
align
:
"
center
"
,
}
,
label
:
'
评价数量
'
,
prop
:
'
pjCount
'
,
align
:
'
center
'
}
],
selectionRows
:
[],
searchForm
:
{
...
...
@@ -135,11 +135,11 @@ export default {
pjOptionList
:
[],
sectionNameList
:
[],
windowFromnumList
:
[],
year
:
""
,
month
:
""
,
day
:
""
,
year
:
''
,
month
:
''
,
day
:
''
},
dict
:
{}
,
dict
:
{}
};
},
created
()
{
...
...
@@ -153,20 +153,20 @@ export default {
size
:
this
.
size
,
siteId
:
this
.
siteId
,
...
this
.
searchForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -174,7 +174,7 @@ export default {
this
.
loading
=
true
;
let
{
data
,
total
,
dict
}
=
await
this
.
evaStatList
();
data
.
forEach
((
v
)
=>
{
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
""
;
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
''
;
});
this
.
total
=
total
;
this
.
tableData
=
data
;
...
...
@@ -189,23 +189,22 @@ export default {
handleSearch
(
form
)
{
let
{
type
,
pjOption
,
deptName
,
windowNum
,
year
,
month
,
day
}
=
form
;
this
.
searchForm
.
year
=
""
;
this
.
searchForm
.
month
=
""
;
this
.
searchForm
.
day
=
""
;
this
.
searchForm
.
year
=
''
;
this
.
searchForm
.
month
=
''
;
this
.
searchForm
.
day
=
''
;
if
(
type
===
"
year
"
)
{
this
.
searchForm
.
groupList
=
[
"
year
"
];
if
(
type
===
'
year
'
)
{
this
.
searchForm
.
groupList
=
[
'
year
'
];
this
.
searchForm
.
year
=
year
;
}
else
if
(
type
===
"
month
"
)
{
this
.
searchForm
.
groupList
=
[
"
year
"
,
"
month
"
];
}
else
if
(
type
===
'
month
'
)
{
this
.
searchForm
.
groupList
=
[
'
year
'
,
'
month
'
];
if
(
month
)
{
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
]
=
month
.
split
(
"
-
"
);
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
]
=
month
.
split
(
'
-
'
);
}
}
else
{
this
.
searchForm
.
groupList
=
[
"
year
"
,
"
month
"
,
"
day
"
];
this
.
searchForm
.
groupList
=
[
'
year
'
,
'
month
'
,
'
day
'
];
if
(
day
)
{
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
,
this
.
searchForm
.
day
]
=
day
.
split
(
"
-
"
);
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
,
this
.
searchForm
.
day
]
=
day
.
split
(
'
-
'
);
}
}
...
...
@@ -229,28 +228,28 @@ export default {
tHeader
,
filterVal
,
data
,
"
排队数据汇总报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
排队数据汇总报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
}
else
{
dataSection
(
this
.
queueStatList
,
{},
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
data
.
forEach
((
v
)
=>
{
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
""
;
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
''
;
});
export2Excel
(
tHeader
,
filterVal
,
data
,
"
排队数据汇总报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
排队数据汇总报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
}
this
.
exportLoading
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/engineSearch/QueueUpData.vue
View file @
15017fd2
...
...
@@ -45,22 +45,22 @@
</
template
>
<
script
>
import
Search
from
"
./components/Search.vue
"
;
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getQueueStatList
}
from
"
@/api/engine
"
;
import
{
formatSeconds
,
dataSection
}
from
"
@/utils
"
;
import
{
export2Excel
}
from
"
@/utils/exportExcel
"
;
import
storage
from
"
@/utils/storage
"
;
import
Search
from
'
./components/Search.vue
'
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
{
getQueueStatList
}
from
'
@/api/engine
'
;
import
{
formatSeconds
,
dataSection
}
from
'
@/utils
'
;
import
{
export2Excel
}
from
'
@/utils/exportExcel
'
;
import
storage
from
'
@/utils/storage
'
;
export
default
{
components
:
{
Search
,
TableHeader
,
TableHeader
},
data
()
{
return
{
loading
:
false
,
exportLoading
:
false
,
siteId
:
storage
.
get
(
2
,
"
siteId
"
),
siteId
:
storage
.
get
(
2
,
'
siteId
'
),
dict
:
{},
page
:
1
,
size
:
10
,
...
...
@@ -68,68 +68,68 @@ export default {
tableData
:
[],
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
站点名称
"
,
prop
:
"
siteName
"
,
align
:
"
center
"
,
label
:
'
站点名称
'
,
prop
:
'
siteName
'
,
align
:
'
center
'
},
{
label
:
"
业务名称
"
,
prop
:
"
business
"
,
align
:
"
center
"
,
label
:
'
业务名称
'
,
prop
:
'
business
'
,
align
:
'
center
'
},
{
label
:
"
部门名称
"
,
prop
:
"
sectionName
"
,
align
:
"
center
"
,
label
:
'
部门名称
'
,
prop
:
'
sectionName
'
,
align
:
'
center
'
},
{
label
:
"
窗口编号
"
,
prop
:
"
windowFromnum
"
,
align
:
"
center
"
,
label
:
'
窗口编号
'
,
prop
:
'
windowFromnum
'
,
align
:
'
center
'
},
{
label
:
"
年份
"
,
prop
:
"
year
"
,
align
:
"
center
"
,
label
:
'
年份
'
,
prop
:
'
year
'
,
align
:
'
center
'
},
{
label
:
"
月份
"
,
prop
:
"
month
"
,
align
:
"
center
"
,
label
:
'
月份
'
,
prop
:
'
month
'
,
align
:
'
center
'
},
{
label
:
"
日期
"
,
prop
:
"
day
"
,
align
:
"
center
"
,
label
:
'
日期
'
,
prop
:
'
day
'
,
align
:
'
center
'
},
{
label
:
"
办理量
"
,
prop
:
"
phCount
"
,
align
:
"
center
"
,
label
:
'
办理量
'
,
prop
:
'
phCount
'
,
align
:
'
center
'
},
{
label
:
"
平均等待时长
"
,
prop
:
"
waitTime
"
,
align
:
"
center
"
,
}
,
label
:
'
平均等待时长
'
,
prop
:
'
waitTime
'
,
align
:
'
center
'
}
],
selectionRows
:
[],
searchForm
:
{
...
...
@@ -140,10 +140,10 @@ export default {
businessList
:
[],
sectionNameList
:
[],
windowFromnumList
:
[],
year
:
""
,
month
:
""
,
day
:
""
,
}
,
year
:
''
,
month
:
''
,
day
:
''
}
};
},
created
()
{
...
...
@@ -157,20 +157,20 @@ export default {
size
:
this
.
size
,
siteId
:
this
.
siteId
,
...
this
.
searchForm
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
return
{
data
,
total
,
dict
,
dict
};
}
else
{
return
{
data
:
[],
total
:
0
,
dict
:
{}
,
dict
:
{}
};
}
},
...
...
@@ -178,7 +178,7 @@ export default {
this
.
loading
=
true
;
let
{
data
,
total
,
dict
}
=
await
this
.
queueStatList
();
data
.
forEach
((
v
)
=>
{
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
""
;
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
''
;
});
this
.
dict
=
dict
;
this
.
total
=
total
;
...
...
@@ -191,22 +191,21 @@ export default {
},
handleSearch
(
form
)
{
let
{
type
,
businessName
,
deptName
,
windowNum
,
year
,
month
,
day
}
=
form
;
this
.
searchForm
.
year
=
""
;
this
.
searchForm
.
month
=
""
;
this
.
searchForm
.
day
=
""
;
if
(
type
==
"
year
"
)
{
this
.
searchForm
.
groupList
=
[
"
year
"
];
this
.
searchForm
.
year
=
''
;
this
.
searchForm
.
month
=
''
;
this
.
searchForm
.
day
=
''
;
if
(
type
==
'
year
'
)
{
this
.
searchForm
.
groupList
=
[
'
year
'
];
this
.
searchForm
.
year
=
year
;
}
else
if
(
type
==
"
month
"
)
{
this
.
searchForm
.
groupList
=
[
"
year
"
,
"
month
"
];
}
else
if
(
type
==
'
month
'
)
{
this
.
searchForm
.
groupList
=
[
'
year
'
,
'
month
'
];
if
(
month
)
{
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
]
=
month
.
split
(
"
-
"
);
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
]
=
month
.
split
(
'
-
'
);
}
}
else
{
this
.
searchForm
.
groupList
=
[
"
year
"
,
"
month
"
,
"
day
"
];
this
.
searchForm
.
groupList
=
[
'
year
'
,
'
month
'
,
'
day
'
];
if
(
day
)
{
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
,
this
.
searchForm
.
day
]
=
day
.
split
(
"
-
"
);
[
this
.
searchForm
.
year
,
this
.
searchForm
.
month
,
this
.
searchForm
.
day
]
=
day
.
split
(
'
-
'
);
}
}
this
.
searchForm
.
businessList
=
businessName
?
[
businessName
]
:
[];
...
...
@@ -228,28 +227,28 @@ export default {
tHeader
,
filterVal
,
data
,
"
排队数据汇总报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
排队数据汇总报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
}
else
{
dataSection
(
this
.
queueStatList
,
{},
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
data
.
forEach
((
v
)
=>
{
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
""
;
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
''
;
});
export2Excel
(
tHeader
,
filterVal
,
data
,
"
排队数据汇总报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
排队数据汇总报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
}
this
.
exportLoading
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/engineSearch/components/Search.vue
View file @
15017fd2
<
template
>
<div
class=
"search mb-[15px] flex h-[170px] w-full flex-col items-center justify-around"
>
<div
class=
"search mb-[15px] flex h-[170px] w-full flex-col items-center justify-around"
>
<div
class=
"flex gap-10"
>
<router-link
v-for=
"(v, i) in subMenus"
:key=
"i"
:to=
"v.path"
>
{{
v
.
meta
.
title
}}
...
...
@@ -12,11 +10,7 @@
<div
class=
"flex gap-2"
>
<div
class=
"item border"
>
<span
class=
"pl-[15px] text-[14px]"
>
选择时间
</span>
<el-popover
trigger=
"click"
placement=
"bottom-start"
popper-class=
"search-popover"
>
<el-popover
trigger=
"click"
placement=
"bottom-start"
popper-class=
"search-popover"
>
<div
class=
"flex flex-col items-center"
>
<div
class=
"tab-box"
>
<div
...
...
@@ -75,10 +69,7 @@
></el-input>
</el-popover>
</div>
<div
class=
"item border"
v-if=
"$route.path == '/enginesearch/queueupdata'"
>
<div
class=
"item border"
v-if=
"$route.path == '/enginesearch/queueupdata'"
>
<span
class=
"pl-[15px] text-[14px]"
>
选择业务
</span>
<el-popover
trigger=
"click"
...
...
@@ -103,13 +94,8 @@
</div>
</div>
</div>
<div
v-else
class=
"flex h-full w-full items-center justify-center"
>
<el-empty
:image=
"require('@/assets/img/empty.png')"
></el-empty>
<div
v-else
class=
"flex h-full w-full items-center justify-center"
>
<el-empty
:image=
"require('@/assets/img/empty.png')"
></el-empty>
</div>
</div>
<el-input
...
...
@@ -131,12 +117,7 @@
filterable
size=
"small"
>
<el-option
v-for=
"(v, i) in pjOption"
:key=
"i"
:label=
"v"
:value=
"v"
></el-option>
<el-option
v-for=
"(v, i) in pjOption"
:key=
"i"
:label=
"v"
:value=
"v"
></el-option>
</el-select>
</div>
<div
class=
"item border"
>
...
...
@@ -164,13 +145,8 @@
</div>
</div>
</div>
<div
v-else
class=
"flex h-full w-full items-center justify-center"
>
<el-empty
:image=
"require('@/assets/img/empty.png')"
></el-empty>
<div
v-else
class=
"flex h-full w-full items-center justify-center"
>
<el-empty
:image=
"require('@/assets/img/empty.png')"
></el-empty>
</div>
</div>
<el-input
...
...
@@ -210,13 +186,8 @@
</div>
</div>
</div>
<div
v-else
class=
"flex h-full w-full items-center justify-center"
>
<el-empty
:image=
"require('@/assets/img/empty.png')"
></el-empty>
<div
v-else
class=
"flex h-full w-full items-center justify-center"
>
<el-empty
:image=
"require('@/assets/img/empty.png')"
></el-empty>
</div>
</div>
<el-input
...
...
@@ -238,14 +209,14 @@
</
template
>
<
script
>
import
{
findBottomSubarrays
}
from
"
@/utils
"
;
import
{
findBottomSubarrays
}
from
'
@/utils
'
;
export
default
{
components
:
{},
props
:
{
dict
:
{
required
:
true
,
default
:
()
=>
{}
,
}
,
default
:
()
=>
{}
}
},
data
()
{
return
{
...
...
@@ -258,15 +229,15 @@ export default {
sectionList
:
[],
windowList
:
[],
form
:
{
type
:
"
year
"
,
businessName
:
""
,
deptName
:
""
,
windowNum
:
""
,
year
:
""
,
month
:
""
,
day
:
""
,
pjOption
:
""
,
}
,
type
:
'
year
'
,
businessName
:
''
,
deptName
:
''
,
windowNum
:
''
,
year
:
''
,
month
:
''
,
day
:
''
,
pjOption
:
''
}
};
},
computed
:
{
...
...
@@ -274,9 +245,9 @@ export default {
return
this
.
$route
.
path
;
},
dateInputVal
()
{
if
(
this
.
form
.
type
==
"
year
"
)
{
if
(
this
.
form
.
type
==
'
year
'
)
{
return
this
.
form
.
year
;
}
else
if
(
this
.
form
.
type
==
"
month
"
)
{
}
else
if
(
this
.
form
.
type
==
'
month
'
)
{
return
this
.
form
.
month
;
}
else
{
return
this
.
form
.
day
;
...
...
@@ -288,7 +259,7 @@ export default {
},
set
(
val
)
{
this
.
calcBusiness
=
val
;
}
,
}
},
calcDeptList
:
{
get
()
{
...
...
@@ -296,7 +267,7 @@ export default {
},
set
(
val
)
{
this
.
calcDept
=
val
;
}
,
}
},
calcWindowList
:
{
get
()
{
...
...
@@ -304,8 +275,8 @@ export default {
},
set
(
val
)
{
this
.
calcWindow
=
val
;
}
,
}
,
}
}
},
watch
:
{
dict
:
{
...
...
@@ -313,8 +284,8 @@ export default {
this
.
changeOptions
(
newVal
);
},
deep
:
true
,
immediate
:
true
,
}
,
immediate
:
true
}
},
created
()
{
this
.
getSubMenus
();
...
...
@@ -327,14 +298,10 @@ export default {
// 获取当前顶层路由下的所有子路由
getSubMenus
()
{
let
path
=
this
.
$route
?.
meta
.
parentPath
?
this
.
$route
.
meta
.
parentPath
:
this
.
$route
.
path
;
let
path
=
this
.
$route
?.
meta
.
parentPath
?
this
.
$route
.
meta
.
parentPath
:
this
.
$route
.
path
;
let
options
=
this
.
$router
.
options
.
routes
[
0
].
children
;
let
curRouters
=
options
.
filter
((
v
)
=>
v
.
path
==
path
);
this
.
subMenus
=
findBottomSubarrays
(
curRouters
).
filter
(
(
v
)
=>
!
v
.
meta
.
hidden
);
this
.
subMenus
=
findBottomSubarrays
(
curRouters
).
filter
((
v
)
=>
!
v
.
meta
.
hidden
);
},
getTopKeyList
(
arr
)
{
...
...
@@ -343,33 +310,29 @@ export default {
// 获取搜索配置
changeOptions
(
dict
)
{
if
(
JSON
.
stringify
(
dict
)
==
"
{}
"
)
return
;
if
(
JSON
.
stringify
(
dict
)
==
'
{}
'
)
return
;
let
{
businessList
,
sectionNameList
,
windowFromnumList
,
pjOption
}
=
dict
;
this
.
pjOption
=
pjOption
?
pjOption
:
[];
this
.
calcBusiness
=
this
.
businessList
=
businessList
?
this
.
getTopKeyList
(
businessList
)
:
[];
this
.
calcDept
=
this
.
sectionList
=
sectionNameList
?
this
.
getTopKeyList
(
sectionNameList
)
:
[];
this
.
calcBusiness
=
this
.
businessList
=
businessList
?
this
.
getTopKeyList
(
businessList
)
:
[];
this
.
calcDept
=
this
.
sectionList
=
sectionNameList
?
this
.
getTopKeyList
(
sectionNameList
)
:
[];
this
.
calcWindow
=
this
.
windowList
=
windowFromnumList
?
this
.
getTopKeyList
(
windowFromnumList
)
:
[];
},
changeTab
(
key
)
{
this
.
form
.
year
=
""
;
this
.
form
.
month
=
""
;
this
.
form
.
day
=
""
;
this
.
form
.
year
=
''
;
this
.
form
.
month
=
''
;
this
.
form
.
day
=
''
;
this
.
form
.
type
=
key
;
},
handleClearDate
()
{
this
.
form
.
year
=
""
;
this
.
form
.
month
=
""
;
this
.
form
.
day
=
""
;
this
.
form
.
year
=
''
;
this
.
form
.
month
=
''
;
this
.
form
.
day
=
''
;
},
handleBusinessNameInput
(
name
)
{
if
(
name
!=
""
)
{
if
(
name
!=
''
)
{
let
list
=
this
.
businessList
.
filter
((
v
)
=>
v
.
includes
(
name
));
this
.
calcBusinessList
=
list
.
slice
(
0
,
10
);
}
else
{
...
...
@@ -377,7 +340,7 @@ export default {
}
},
handleDeptNameInput
(
name
)
{
if
(
name
!=
""
)
{
if
(
name
!=
''
)
{
let
list
=
this
.
deptList
.
filter
((
v
)
=>
v
.
includes
(
name
));
this
.
calcDeptList
=
list
.
slice
(
0
,
10
);
}
else
{
...
...
@@ -385,7 +348,7 @@ export default {
}
},
handleWindowInput
(
value
)
{
if
(
value
!=
""
)
{
if
(
value
!=
''
)
{
let
list
=
this
.
windowList
.
filter
((
v
)
=>
v
.
includes
(
value
));
this
.
calcWindowList
=
list
.
slice
(
0
,
10
);
}
else
{
...
...
@@ -393,29 +356,28 @@ export default {
}
},
handleSearch
()
{
this
.
$emit
(
"
search
"
,
this
.
form
);
this
.
$emit
(
'
search
'
,
this
.
form
);
},
handleShowPopper
(
type
)
{
switch
(
type
)
{
case
"
business
"
:
case
'
business
'
:
this
.
calcBusinessList
=
this
.
businessList
.
slice
(
0
,
10
);
break
;
case
"
deptName
"
:
case
'
deptName
'
:
this
.
calcDeptList
=
this
.
sectionList
.
slice
(
0
,
10
);
break
;
case
"
window
"
:
case
'
window
'
:
this
.
calcWindowList
=
this
.
windowList
.
slice
(
0
,
10
);
}
}
,
}
,
}
}
};
</
script
>
<
style
lang=
"less"
scoped
>
.search {
flex-shrink: 0;
background: url("@/assets/img/engineSearch_bg.svg") no-repeat center / 100%
100%;
background: url('@/assets/img/engineSearch_bg.svg') no-repeat center / 100% 100%;
a {
color: rgba(254, 254, 254, 0.65);
}
...
...
admin_2/src/pages/home/components/AreaCard.vue
View file @
15017fd2
<
template
>
<div
:class=
"[
'area-card',
'is-hover',
tag.length ? 'cursor-pointer' : 'cursor-not-allowed',
]"
:class=
"['area-card', 'is-hover', tag.length ? 'cursor-pointer' : 'cursor-not-allowed']"
@
click=
"handleClick"
>
<div
class=
"banner"
>
...
...
@@ -14,9 +10,7 @@
<!-- 对接时间 -->
<div
class=
"w-full"
>
<span
class=
"time"
v-if=
"isAccess"
>
对接时间:
<span
v-if=
"data.accessTime"
>
{{
data
.
accessTime
|
dateDayFormat
}}
</span>
对接时间:
<span
v-if=
"data.accessTime"
>
{{
data
.
accessTime
|
dateDayFormat
}}
</span>
</span>
</div>
<!-- name -->
...
...
@@ -36,8 +30,8 @@ export default {
type
:
Object
,
default
()
{
return
{};
}
,
}
,
}
}
},
data
()
{
return
{};
...
...
@@ -45,7 +39,7 @@ export default {
computed
:
{
tag
()
{
if
(
this
.
data
.
tag
)
{
return
this
.
data
.
tag
.
split
(
"
,
"
);
return
this
.
data
.
tag
.
split
(
'
,
'
);
}
else
{
return
[];
}
...
...
@@ -58,21 +52,21 @@ export default {
}
else
{
return
false
;
}
}
,
}
},
methods
:
{
handleClick
()
{
if
(
this
.
tag
.
length
)
{
this
.
$emit
(
"
click
"
,
this
.
data
);
this
.
$emit
(
'
click
'
,
this
.
data
);
this
.
$router
.
push
({
name
:
"
queueupreport
"
,
name
:
'
queueupreport
'
,
params
:
{
siteId
:
this
.
data
.
siteId
+
""
,
}
,
siteId
:
this
.
data
.
siteId
+
''
}
});
}
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/home/components/Card.vue
View file @
15017fd2
<
template
>
<div
:class=
"[
'card',
info.systemList.length ? 'cursor-pointer' : 'cursor-not-allowed',
]"
:class=
"['card', info.systemList.length ? 'cursor-pointer' : 'cursor-not-allowed']"
@
click=
"handleClick"
>
<div>
{{
info
.
name
}}
</div>
<el-tag
size=
"small"
type=
"danger"
color=
"#fff"
v-if=
"!info.systemList.length"
>
<el-tag
size=
"small"
type=
"danger"
color=
"#fff"
v-if=
"!info.systemList.length"
>
<i
class=
"el-icon-link"
></i>
等待对接
</el-tag
>
<div
class=
"cur flex gap-2"
v-else
>
<el-tag
v-for=
"(v, i) in info.systemList"
:key=
"i"
size=
"small"
>
{{
v
}}
</el-tag>
</div>
<div
class=
"card-date"
v-if=
"info.systemList.length"
>
对接时间:
{{
info
.
date
}}
<el-tag
v-for=
"(v, i) in info.systemList"
:key=
"i"
size=
"small"
>
{{
v
}}
</el-tag>
</div>
<div
class=
"card-date"
v-if=
"info.systemList.length"
>
对接时间:
{{
info
.
date
}}
</div>
<div
class=
"mask"
v-else
></div>
</div>
</
template
>
...
...
@@ -35,8 +23,8 @@ export default {
type
:
Object
,
default
()
{
return
{};
}
,
}
,
}
}
},
data
()
{
return
{};
...
...
@@ -44,10 +32,10 @@ export default {
methods
:
{
handleClick
()
{
if
(
this
.
info
.
systemList
.
length
)
{
this
.
$emit
(
"
click
"
,
this
.
info
);
this
.
$emit
(
'
click
'
,
this
.
info
);
}
}
,
}
,
}
}
};
</
script
>
...
...
@@ -56,7 +44,7 @@ export default {
width: 100%;
height: 100%;
color: #fff;
background: url(
"@/assets/img/changningxian.png"
) no-repeat center / 100% 100%;
background: url(
'@/assets/img/changningxian.png'
) no-repeat center / 100% 100%;
border-radius: 4px;
color: #fff;
position: relative;
...
...
admin_2/src/pages/home/components/Carousel.vue
View file @
15017fd2
...
...
@@ -2,37 +2,32 @@
<div
class=
"carousel"
>
<div
class=
"swiper-container"
>
<div
class=
"swiper-wrapper"
>
<img
class=
"swiper-slide"
v-for=
"(v, index) in ImageArray"
:key=
"index"
:src=
"v"
/>
<img
class=
"swiper-slide"
v-for=
"(v, index) in ImageArray"
:key=
"index"
:src=
"v"
/>
</div>
</div>
</div>
</
template
>
<
script
>
import
Swiper
from
"
swiper
"
;
import
Swiper
from
'
swiper
'
;
export
default
{
props
:
{
ImageArray
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
}
,
}
},
speed
:
{
type
:
Number
,
default
:
1500
,
}
,
default
:
1500
}
},
data
()
{
return
{
currentIndex
:
0
,
timer
:
null
,
mySwiper
:
null
,
mySwiper
:
null
};
},
watch
:
{},
...
...
@@ -41,22 +36,22 @@ export default {
},
methods
:
{
initSwiper
()
{
this
.
mySwiper
=
new
Swiper
(
"
.swiper-container
"
,
{
this
.
mySwiper
=
new
Swiper
(
'
.swiper-container
'
,
{
autoplay
:
true
,
effect
:
"
fade
"
,
effect
:
'
fade
'
,
fadeEffect
:
true
,
speed
:
this
.
speed
,
loop
:
true
,
updateOnWindowResize
:
true
,
watchSlidesProgress
:
true
,
watchSlidesProgress
:
true
});
this
.
mySwiper
.
init
();
}
,
}
},
beforeDestroy
()
{
this
.
mySwiper
.
destroy
();
}
,
}
};
</
script
>
...
...
admin_2/src/pages/home/components/LineEchart.vue
View file @
15017fd2
...
...
@@ -7,21 +7,21 @@ export default {
props
:
{
dataset
:
{
type
:
Object
,
default
:
()
=>
{}
,
default
:
()
=>
{}
},
endValue
:
{
type
:
Number
,
default
:
10
,
default
:
10
},
color
:
{
type
:
String
,
default
:
"
#0857E8
"
,
}
,
default
:
'
#0857E8
'
}
},
data
()
{
return
{
myChart
:
null
,
timer
:
null
,
timer
:
null
};
},
watch
:
{
...
...
@@ -32,8 +32,8 @@ export default {
});
},
deep
:
true
,
immediate
:
true
,
}
,
immediate
:
true
}
},
mounted
()
{},
methods
:
{
...
...
@@ -52,13 +52,13 @@ export default {
let
option
=
{
grid
:
{
top
:
"
15%
"
,
left
:
"
15%
"
,
right
:
"
5%
"
,
bottom
:
"
12%
"
,
top
:
'
15%
'
,
left
:
'
15%
'
,
right
:
'
5%
'
,
bottom
:
'
12%
'
},
tooltip
:
{
trigger
:
"
axis
"
,
trigger
:
'
axis
'
,
borderWidth
:
0
,
formatter
:
(
params
)
=>
{
return
`
${
...
...
@@ -66,12 +66,10 @@ export default {
}
<br/><div style='margin-top:4px;padding:4px 8px;background:
${
this
.
hexToRgba
(
this
.
color
,
0.1
)}
;color:
${
this
.
color
}
;border-radius:4px'><span style='margin-right:20px'>
${
)}
;color:
${
this
.
color
}
;border-radius:4px'><span style='margin-right:20px'>
${
params
[
0
].
seriesName
}
</span>
${
params
[
0
].
value
.
value
}
</div>`
;
}
,
}
},
// dataZoom: [
// {
...
...
@@ -82,77 +80,77 @@ export default {
// },
// ],
xAxis
:
{
type
:
"
category
"
,
type
:
'
category
'
,
boundaryGap
:
false
,
axisLabel
:
{
color
:
"
#5A5C60
"
,
color
:
'
#5A5C60
'
,
formatter
:
(
name
)
=>
{
let
formatterName
=
name
.
split
(
"
-
"
);
let
formatterName
=
name
.
split
(
'
-
'
);
return
`
${
formatterName
[
1
]}
-
${
formatterName
[
2
]}
`
;
}
,
}
},
axisLine
:
{
show
:
true
,
lineStyle
:
{
color
:
"
#E0E0E0
"
,
}
,
color
:
'
#E0E0E0
'
}
},
axisTick
:
{
show
:
false
,
show
:
false
},
splitLine
:
{
show
:
true
,
lineStyle
:
{
type
:
"
dashed
"
,
color
:
"
#E0E0E0
"
,
}
,
type
:
'
dashed
'
,
color
:
'
#E0E0E0
'
}
},
axisPointer
:
{
lineStyle
:
{
color
:
this
.
hexToRgba
(
this
.
color
,
1
)
,
}
,
}
,
color
:
this
.
hexToRgba
(
this
.
color
,
1
)
}
}
},
yAxis
:
{
type
:
"
value
"
,
type
:
'
value
'
,
splitNumber
:
3
,
axisLabel
:
{
color
:
"
#666
"
,
color
:
'
#666
'
},
nameTextStyle
:
{
color
:
"
#5A5C60
"
,
color
:
'
#5A5C60
'
,
fontSize
:
12
,
lineHeight
:
40
,
lineHeight
:
40
},
splitLine
:
{
lineStyle
:
{
type
:
"
dashed
"
,
color
:
"
#E0E0E0
"
,
}
,
type
:
'
dashed
'
,
color
:
'
#E0E0E0
'
}
},
axisLine
:
{
show
:
false
,
show
:
false
},
axisTick
:
{
show
:
false
,
}
,
show
:
false
}
},
series
:
[
{
name
:
"
数据量
"
,
type
:
"
line
"
,
name
:
'
数据量
'
,
type
:
'
line
'
,
smooth
:
true
,
showSymbol
:
false
,
symbolSize
:
8
,
lineStyle
:
{
color
:
this
.
hexToRgba
(
this
.
color
,
1
)
,
color
:
this
.
hexToRgba
(
this
.
color
,
1
)
},
itemStyle
:
{
color
:
this
.
hexToRgba
(
this
.
color
,
1
)
,
color
:
this
.
hexToRgba
(
this
.
color
,
1
)
},
areaStyle
:
{
color
:
{
type
:
"
linear
"
,
type
:
'
linear
'
,
x
:
0
,
y
:
0
,
x2
:
0
,
...
...
@@ -160,28 +158,28 @@ export default {
colorStops
:
[
{
offset
:
0
,
color
:
this
.
hexToRgba
(
this
.
color
,
0.4
)
,
color
:
this
.
hexToRgba
(
this
.
color
,
0.4
)
},
{
offset
:
0.6
,
color
:
this
.
hexToRgba
(
this
.
color
,
0.1
)
,
color
:
this
.
hexToRgba
(
this
.
color
,
0.1
)
},
{
offset
:
1
,
color
:
"
#0000
"
,
}
,
]
,
}
,
}
,
}
,
color
:
'
#0000
'
}
]
}
}
}
],
dataset
,
dataset
};
this
.
myChart
.
setOption
(
option
);
// 适配
window
.
addEventListener
(
"
resize
"
,
this
.
adapterEcharts
);
window
.
addEventListener
(
'
resize
'
,
this
.
adapterEcharts
);
// 清除现有定时器,防止多次调用
// clearInterval(this.timer);
...
...
@@ -221,20 +219,20 @@ export default {
},
hexToRgba
(
hex
,
opacity
)
{
let
rgbaColor
=
""
;
let
rgbaColor
=
''
;
let
reg
=
/^#
[\d
a-f
]{6}
$/i
;
if
(
reg
.
test
(
hex
))
{
rgbaColor
=
`rgba(
${
parseInt
(
"
0x
"
+
hex
.
slice
(
1
,
3
))}
,
${
parseInt
(
"
0x
"
+
hex
.
slice
(
3
,
5
)
)}
,
${
parseInt
(
"
0x
"
+
hex
.
slice
(
5
,
7
))}
,
${
opacity
}
)`
;
rgbaColor
=
`rgba(
${
parseInt
(
'
0x
'
+
hex
.
slice
(
1
,
3
))}
,
${
parseInt
(
'
0x
'
+
hex
.
slice
(
3
,
5
)
)}
,
${
parseInt
(
'
0x
'
+
hex
.
slice
(
5
,
7
))}
,
${
opacity
}
)`
;
}
return
rgbaColor
;
}
,
}
},
beforeDestroy
()
{
window
.
removeEventListener
(
"
resize
"
,
this
.
adapterEcharts
);
window
.
removeEventListener
(
'
resize
'
,
this
.
adapterEcharts
);
clearInterval
(
this
.
timer
);
}
,
}
};
</
script
>
...
...
admin_2/src/pages/login/Login.vue
View file @
15017fd2
...
...
@@ -3,13 +3,7 @@
<div
class=
"page page-login flex h-full w-full items-center justify-center"
>
<div
class=
"flex min-w-[450px] flex-col justify-center bg-white p-[25px]"
>
<h1
class=
"mb-4 text-center text-[24px] font-[500]"
>
{{
systemName
}}
</h1>
<el-form
class=
"w-full"
ref=
"form"
:model=
"form"
:rules=
"rules"
hide-required-asterisk
>
<el-form
class=
"w-full"
ref=
"form"
:model=
"form"
:rules=
"rules"
hide-required-asterisk
>
<el-form-item
l
prop=
"loginName"
>
<el-input
clearable
...
...
@@ -38,14 +32,8 @@
v-model=
"form.securityCode"
@
keyup.enter=
"onSubmit"
></el-input>
<div
class=
"code-box h-[40px] cursor-pointer overflow-hidden rounded-[4px]"
>
<img
class=
"h-full w-full"
:src=
"securityUrl"
@
click=
"createCode"
/>
<div
class=
"code-box h-[40px] cursor-pointer overflow-hidden rounded-[4px]"
>
<img
class=
"h-full w-full"
:src=
"securityUrl"
@
click=
"createCode"
/>
</div>
</div>
</el-form-item>
...
...
@@ -67,52 +55,48 @@
</
template
>
<
script
>
import
storage
from
"
@/utils/storage
"
;
import
{
mapMutations
}
from
"
vuex
"
;
import
{
getHomeData
}
from
"
@/api/home
"
;
import
{
generateRoutes
,
filterBtn
}
from
"
@/utils
"
;
import
{
calcMenu
}
from
"
@/router
"
;
import
{
login
}
from
"
@/api/login
"
;
import
{
systemName
}
from
"
@/config
"
;
import
storage
from
'
@/utils/storage
'
;
import
{
mapMutations
}
from
'
vuex
'
;
import
{
getHomeData
}
from
'
@/api/home
'
;
import
{
generateRoutes
,
filterBtn
}
from
'
@/utils
'
;
import
{
calcMenu
}
from
'
@/router
'
;
import
{
login
}
from
'
@/api/login
'
;
import
{
systemName
}
from
'
@/config
'
;
export
default
{
name
:
"
login
"
,
name
:
'
login
'
,
data
()
{
return
{
systemName
,
api
:
process
.
env
.
VUE_APP_API_BASE_URL
,
securityUrl
:
""
,
securityUrl
:
''
,
originData
:
[],
loading
:
false
,
redirect
:
this
.
$route
.
query
.
redirect
||
"
/
"
,
redirect
:
this
.
$route
.
query
.
redirect
||
'
/
'
,
form
:
{
loginName
:
""
,
password
:
""
,
securityCode
:
""
,
loginName
:
''
,
password
:
''
,
securityCode
:
''
},
rules
:
{
loginName
:
[
{
required
:
true
,
message
:
"
请输入用户名
"
,
trigger
:
"
blur
"
},
],
password
:
[{
required
:
true
,
message
:
"
请输入密码
"
,
trigger
:
"
blur
"
}],
securityCode
:
[
{
required
:
true
,
message
:
"
请输入验证码
"
,
trigger
:
"
blur
"
},
],
},
loginName
:
[{
required
:
true
,
message
:
'
请输入用户名
'
,
trigger
:
'
blur
'
}],
password
:
[{
required
:
true
,
message
:
'
请输入密码
'
,
trigger
:
'
blur
'
}],
securityCode
:
[{
required
:
true
,
message
:
'
请输入验证码
'
,
trigger
:
'
blur
'
}]
}
};
},
created
()
{
this
.
createCode
();
},
methods
:
{
...
mapMutations
(
"
user
"
,
[
"
SET_token
"
,
"
SET_sysName
"
,
"
SET_sysLogo
"
,
"
SET_path
"
,
"
SET_userInfo
"
,
"
SET_permissions
"
,
"
SET_routes
"
,
"
SET_menusList
"
,
...
mapMutations
(
'
user
'
,
[
'
SET_token
'
,
'
SET_sysName
'
,
'
SET_sysLogo
'
,
'
SET_path
'
,
'
SET_userInfo
'
,
'
SET_permissions
'
,
'
SET_routes
'
,
'
SET_menusList
'
]),
// 获取验证码
...
...
@@ -120,8 +104,7 @@ export default {
// 加时间戳印记用于刷新gif
let
mark
=
new
Date
().
getTime
();
// this.form.mark = mark;
this
.
securityUrl
=
this
.
api
+
"
/bill/securitycode/createCode
"
+
`?mark=
${
mark
}
`
;
this
.
securityUrl
=
this
.
api
+
'
/bill/securitycode/createCode
'
+
`?mark=
${
mark
}
`
;
},
onSubmit
()
{
...
...
@@ -132,17 +115,17 @@ export default {
if
(
res
.
data
.
code
==
1
)
{
let
{
token
,
user
:
{
id
,
loginName
,
siteIds
}
,
user
:
{
id
,
loginName
,
siteIds
}
}
=
res
.
data
.
data
;
let
form
=
{
token
,
userInfo
:
{
id
,
name
:
loginName
,
}
,
name
:
loginName
}
};
if
(
siteIds
)
{
let
siteid
=
siteIds
.
split
(
"
,
"
)[
0
];
let
siteid
=
siteIds
.
split
(
'
,
'
)[
0
];
form
.
siteid
=
siteid
;
}
await
this
.
getToken
(
form
);
...
...
@@ -157,11 +140,11 @@ export default {
if
(
token
&&
userInfo
)
{
this
.
SET_userInfo
(
userInfo
);
this
.
SET_token
(
token
);
storage
.
set
(
2
,
"
siteId
"
,
siteid
);
storage
.
set
(
2
,
'
siteId
'
,
siteid
);
// storage.set(2, "siteName", siteName);
await
this
.
getIndixData
();
}
else
{
this
.
$message
.
warning
(
"
登录失败,请稍后再试
"
);
this
.
$message
.
warning
(
'
登录失败,请稍后再试
'
);
}
},
// 获取菜单列表
...
...
@@ -180,7 +163,7 @@ export default {
let
path
=
routes
[
0
].
path
;
this
.
$router
.
push
(
path
);
}
else
{
this
.
$message
.
warning
(
"
暂无权限,请联系管理员!
"
);
this
.
$message
.
warning
(
'
暂无权限,请联系管理员!
'
);
}
}
},
...
...
@@ -191,8 +174,8 @@ export default {
.
filter
((
v
)
=>
v
.
perms
)
.
map
((
v
)
=>
v
.
perms
);
this
.
SET_permissions
(
btnPermissions
);
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/market/EvaluateReport.vue
View file @
15017fd2
...
...
@@ -18,10 +18,7 @@
统计时间段:
{{
searchForm
.
time
[
0
]
}}
~
{{
searchForm
.
time
[
1
]
}}
</div>
</div>
<div
class=
"flex items-center"
v-hasPermi=
"['market:evaluatereport:query']"
>
<div
class=
"flex items-center"
v-hasPermi=
"['market:evaluatereport:query']"
>
<el-form
ref=
"searchForm"
inline
size=
"small"
:model=
"searchForm"
>
<el-form-item>
<el-select
style=
"width: 130px"
v-model=
"searchForm.type"
>
...
...
@@ -56,11 +53,7 @@
</el-form-item>
</el-form>
</div>
<el-popover
placement=
"bottom"
trigger=
"click"
v-hasPermi=
"['market:evaluatereport:query']"
>
<el-popover
placement=
"bottom"
trigger=
"click"
v-hasPermi=
"['market:evaluatereport:query']"
>
<div
class=
"w-full"
>
<el-form
ref=
"searchForm2"
inline
size=
"small"
:model=
"searchForm2"
>
<el-form-item>
...
...
@@ -179,26 +172,26 @@
</
template
>
<
script
>
import
EvaluateDetails
from
"
./components/EvaluateDetails.vue
"
;
import
{
getEvaluateList
}
from
"
@/api/market
"
;
import
{
getDepartment
,
getHall
}
from
"
@/api/site
"
;
import
{
dataSection
}
from
"
@/utils
"
;
import
{
export2Excel
}
from
"
@/utils/exportExcel
"
;
import
storage
from
"
@/utils/storage
"
;
import
EvaluateDetails
from
'
./components/EvaluateDetails.vue
'
;
import
{
getEvaluateList
}
from
'
@/api/market
'
;
import
{
getDepartment
,
getHall
}
from
'
@/api/site
'
;
import
{
dataSection
}
from
'
@/utils
'
;
import
{
export2Excel
}
from
'
@/utils/exportExcel
'
;
import
storage
from
'
@/utils/storage
'
;
let
searchType
=
{
windowFromnum
:
"
按窗口编号
"
,
peopleName
:
"
按群众姓名
"
,
peoplePhone
:
"
按群众手机号
"
,
windowFromnum
:
'
按窗口编号
'
,
peopleName
:
'
按群众姓名
'
,
peoplePhone
:
'
按群众手机号
'
};
export
default
{
components
:
{
EvaluateDetails
,
EvaluateDetails
},
props
:
{
curTreeData
:
{
required
:
true
,
default
:
()
=>
{}
,
}
,
default
:
()
=>
{}
}
},
data
()
{
return
{
...
...
@@ -210,20 +203,17 @@ export default {
page
:
1
,
total
:
0
,
searchForm
:
{
type
:
"
windowFromnum
"
,
keyword
:
""
,
time
:
[
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
],
siteId
:
storage
.
get
(
2
,
"
siteId
"
),
type
:
'
windowFromnum
'
,
keyword
:
''
,
time
:
[
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
),
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
)],
siteId
:
storage
.
get
(
2
,
'
siteId
'
)
},
searchForm2
:
{
pjOption
:
""
,
// 评价选项
sectionName
:
""
,
// 部门名称
hallName
:
""
,
// 大厅名称
pjSource
:
""
,
// 评价来源
pjType
:
""
,
// 评价指向
pjOption
:
''
,
// 评价选项
sectionName
:
''
,
// 部门名称
hallName
:
''
,
// 大厅名称
pjSource
:
''
,
// 评价来源
pjType
:
''
// 评价指向
},
tableData
:
[],
dict
:
{},
...
...
@@ -233,153 +223,153 @@ export default {
hallList
:
[],
// 大厅列表
column
:
[
{
type
:
"
selection
"
,
width
:
"
50
"
,
align
:
"
center
"
,
type
:
'
selection
'
,
width
:
'
50
'
,
align
:
'
center
'
,
reserveSelection
:
true
,
fixed
:
"
left
"
,
fixed
:
'
left
'
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
"
50
"
,
align
:
"
center
"
,
fixed
:
"
left
"
,
type
:
'
index
'
,
label
:
'
序号
'
,
width
:
'
50
'
,
align
:
'
center
'
,
fixed
:
'
left
'
,
index
:
(
index
)
=>
{
return
index
+
1
+
(
this
.
page
-
1
)
*
this
.
size
;
}
,
}
},
{
label
:
"
站点名称
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
siteName
"
,
label
:
'
站点名称
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
siteName
'
},
{
label
:
"
身份证号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peopleIdcard
"
,
label
:
'
身份证号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peopleIdcard
'
},
{
label
:
"
姓名
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peopleName
"
,
label
:
'
姓名
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peopleName
'
},
{
label
:
"
性别
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peopleSex
"
,
label
:
'
性别
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peopleSex
'
},
{
label
:
"
手机号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peoplePhone
"
,
label
:
'
手机号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peoplePhone
'
},
{
label
:
"
评价选项
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
pjOption
"
,
label
:
'
评价选项
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
pjOption
'
},
{
label
:
"
评价标签
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
contentTag
"
,
label
:
'
评价标签
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
contentTag
'
},
{
label
:
"
部门
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
sectionName
"
,
label
:
'
部门
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
sectionName
'
},
{
label
:
"
大厅
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
hallName
"
,
label
:
'
大厅
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
hallName
'
},
{
label
:
"
评价来源
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
pjSource
"
,
label
:
'
评价来源
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
pjSource
'
},
{
label
:
"
手输意见
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
opinion
"
,
label
:
'
手输意见
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
opinion
'
},
{
label
:
"
窗口名
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
windowName
"
,
label
:
'
窗口名
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
windowName
'
},
{
label
:
"
窗口编号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
windowFromnum
"
,
label
:
'
窗口编号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
windowFromnum
'
},
{
label
:
"
窗口评价
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
pjxt
"
,
label
:
'
窗口评价
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
pjxt
'
},
{
label
:
"
工作人员
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
workmanName
"
,
label
:
'
工作人员
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
workmanName
'
},
{
label
:
"
工号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
workmanNumber
"
,
label
:
'
工号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
workmanNumber
'
},
{
label
:
"
评价状态
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
evaluatestatus
"
,
label
:
'
评价状态
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
evaluatestatus
'
},
{
label
:
"
评价指向
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
pjType
"
,
label
:
'
评价指向
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
pjType
'
},
{
label
:
"
评价时间
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
pjTime
"
,
label
:
'
评价时间
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
pjTime
'
},
{
label
:
"
扩展编号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
extNum
"
,
label
:
'
扩展编号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
extNum
'
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
fixed
:
"
right
"
,
width
:
"
100
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
fixed
:
'
right
'
,
width
:
'
100
'
,
formatter
:
(
row
)
=>
{
return
(
<
span
class
=
"
primary cursor-pointer
"
v
-
hasPermi
=
{[
"
market:evaluatereport:details
"
]}
v
-
hasPermi
=
{[
'
market:evaluatereport:details
'
]}
onClick
=
{()
=>
{
this
.
checkDetails
(
row
);
}}
...
...
@@ -387,9 +377,9 @@ export default {
查看详情
<
/span
>
);
}
,
}
,
]
,
}
}
]
};
},
created
()
{},
...
...
@@ -399,16 +389,16 @@ export default {
this
.
getSite
(
newVal
);
},
deep
:
true
,
immediate
:
true
,
}
,
immediate
:
true
}
},
methods
:
{
// 获取站点
getSite
(
data
)
{
if
(
JSON
.
stringify
(
data
)
!==
"
{}
"
)
{
if
(
JSON
.
stringify
(
data
)
!==
'
{}
'
)
{
this
.
page
=
1
;
this
.
size
=
10
;
if
(
data
.
type
==
"
site
"
)
{
if
(
data
.
type
==
'
site
'
)
{
this
.
searchForm
.
siteId
=
data
.
id
;
this
.
getEvaluateList
();
this
.
getDepartment
();
...
...
@@ -432,7 +422,7 @@ export default {
size
:
this
.
size
,
pjTimeStart
:
this
.
searchForm
.
time
[
0
],
pjTimeEnd
:
this
.
searchForm
.
time
[
1
],
siteId
:
this
.
searchForm
.
siteId
,
siteId
:
this
.
searchForm
.
siteId
};
let
val
=
`%
${
this
.
searchForm
.
keyword
}
%`
;
obj
[
this
.
searchForm
.
type
]
=
val
;
...
...
@@ -440,14 +430,14 @@ export default {
let
res
=
await
getEvaluateList
({
...
obj
,
...
this
.
searchForm2
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
return
res
.
data
.
data
;
}
else
{
return
{
data
:
[],
total
:
0
,
total
:
0
};
}
},
...
...
@@ -457,7 +447,7 @@ export default {
this
.
loading
=
true
;
let
{
data
,
total
,
dict
}
=
await
this
.
getData
(
form
);
data
.
forEach
((
v
)
=>
{
v
.
pjTime
=
this
.
$moment
(
v
.
pjTime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
pjTime
=
this
.
$moment
(
v
.
pjTime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
});
this
.
tableData
=
data
;
this
.
total
=
total
;
...
...
@@ -470,7 +460,7 @@ export default {
let
res
=
await
getDepartment
({
page
:
1
,
size
:
-
1
,
siteId
:
this
.
searchForm
.
siteId
,
siteId
:
this
.
searchForm
.
siteId
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -483,7 +473,7 @@ export default {
let
res
=
await
getHall
({
page
:
1
,
size
:
-
1
,
siteId
:
this
.
searchForm
.
siteId
,
siteId
:
this
.
searchForm
.
siteId
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -501,7 +491,7 @@ export default {
},
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getSite
(
this
.
curTreeData
);
},
// 导出表格
...
...
@@ -516,28 +506,28 @@ export default {
tHeader
,
filterVal
,
data
,
"
评价数据报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
评价数据报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
}
else
{
dataSection
(
this
.
getData
,
{},
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
data
.
forEach
((
v
)
=>
{
v
.
pjTime
=
this
.
$moment
(
v
.
pjTime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
pjTime
=
this
.
$moment
(
v
.
pjTime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
});
export2Excel
(
tHeader
,
filterVal
,
data
,
"
评价数据报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
评价数据报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
}
this
.
exportLoading
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/market/Market.vue
View file @
15017fd2
<
template
>
<div
class=
"flex h-full w-full gap-5"
>
<div
class=
"area-tree-box flex h-full w-[20%] flex-col rounded-[4px] bg-white"
>
<div
class=
"area-tree-box flex h-full w-[20%] flex-col rounded-[4px] bg-white"
>
<TabHeader
icon=
"el-icon-notebook-2"
label=
"组织架构"
></TabHeader>
<div
class=
"w-full flex-1 overflow-auto p-[20px]"
>
<AreaTree
@
change=
"changeSite"
></AreaTree>
...
...
@@ -12,10 +10,7 @@
<el-tabs
:value=
"activeKey"
@
tab-click=
"changeRouter"
>
<el-tab-pane
v-for=
"v in secondaryRoutes"
:key=
"v.path"
:name=
"v.path"
>
<template
slot=
"label"
>
<i
v-if=
"v.meta.icon"
:class=
"['mr-[5px]', 'primary', v.meta.icon]"
></i>
<i
v-if=
"v.meta.icon"
:class=
"['mr-[5px]', 'primary', v.meta.icon]"
></i>
<span
class=
"tab-label"
>
{{
v
.
meta
.
title
}}
</span>
</
template
>
</el-tab-pane>
...
...
@@ -28,18 +23,18 @@
</template>
<
script
>
import
{
mapGetters
}
from
"
vuex
"
;
import
{
mapGetters
}
from
'
vuex
'
;
export
default
{
data
()
{
return
{
curTreeData
:
{}
,
// 当前选择的站点
curTreeData
:
{}
// 当前选择的站点
};
},
computed
:
{
...
mapGetters
(
"
user
"
,
[
"
secondaryRoutes
"
]),
...
mapGetters
(
'
user
'
,
[
'
secondaryRoutes
'
]),
activeKey
()
{
return
this
.
$route
.
path
;
}
,
}
},
created
()
{},
methods
:
{
...
...
@@ -51,8 +46,8 @@ export default {
changeSite
(
data
)
{
this
.
curTreeData
=
data
;
// this.$refs.Page.getSite(data);
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/market/QueueUpReport.vue
View file @
15017fd2
...
...
@@ -18,10 +18,7 @@
统计时间段:
{{
searchForm
.
time
[
0
]
}}
~
{{
searchForm
.
time
[
1
]
}}
</div>
</div>
<div
class=
"flex items-center"
v-hasPermi=
"['market:queueupreport:query']"
>
<div
class=
"flex items-center"
v-hasPermi=
"['market:queueupreport:query']"
>
<el-form
ref=
"searchForm"
inline
size=
"small"
:model=
"searchForm"
>
<el-form-item>
<el-select
style=
"width: 130px"
v-model=
"searchForm.type"
>
...
...
@@ -56,11 +53,7 @@
</el-form-item>
</el-form>
</div>
<el-popover
placement=
"bottom"
trigger=
"click"
v-hasPermi=
"['market:queueupreport:query']"
>
<el-popover
placement=
"bottom"
trigger=
"click"
v-hasPermi=
"['market:queueupreport:query']"
>
<div
class=
"w-full"
>
<el-form
ref=
"searchForm2"
inline
size=
"small"
:model=
"searchForm2"
>
<!--
<el-form-item>
...
...
@@ -150,27 +143,27 @@
</
template
>
<
script
>
import
QueueUpDetails
from
"
./components/QueueUpDetails.vue
"
;
import
QueueUpDetails
from
'
./components/QueueUpDetails.vue
'
;
let
searchType
=
{
business
:
"
按业务
"
,
windowFromnum
:
"
按窗口编号
"
,
peopleName
:
"
按群众姓名
"
,
peoplePhone
:
"
按群众手机号
"
,
business
:
'
按业务
'
,
windowFromnum
:
'
按窗口编号
'
,
peopleName
:
'
按群众姓名
'
,
peoplePhone
:
'
按群众手机号
'
};
import
{
getQueueList
}
from
"
@/api/market
"
;
import
{
getDepartment
,
getHall
}
from
"
@/api/site
"
;
import
storage
from
"
@/utils/storage
"
;
import
{
formatSeconds
,
dataSection
}
from
"
@/utils
"
;
import
{
export2Excel
}
from
"
@/utils/exportExcel
"
;
import
{
getQueueList
}
from
'
@/api/market
'
;
import
{
getDepartment
,
getHall
}
from
'
@/api/site
'
;
import
storage
from
'
@/utils/storage
'
;
import
{
formatSeconds
,
dataSection
}
from
'
@/utils
'
;
import
{
export2Excel
}
from
'
@/utils/exportExcel
'
;
export
default
{
components
:
{
QueueUpDetails
,
QueueUpDetails
},
props
:
{
curTreeData
:
{
required
:
true
,
default
:
()
=>
{}
,
}
,
default
:
()
=>
{}
}
},
data
()
{
return
{
...
...
@@ -183,183 +176,178 @@ export default {
page
:
1
,
selectionRow
:
[],
searchForm
:
{
type
:
"
business
"
,
keyword
:
""
,
time
:
[
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
],
siteId
:
this
.
$route
.
params
.
siteId
?
this
.
$route
.
params
.
siteId
:
storage
.
get
(
2
,
"
siteId
"
),
type
:
'
business
'
,
keyword
:
''
,
time
:
[
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
),
this
.
$moment
().
format
(
'
YYYY-MM-DD
'
)],
siteId
:
this
.
$route
.
params
.
siteId
?
this
.
$route
.
params
.
siteId
:
storage
.
get
(
2
,
'
siteId
'
)
},
searchForm2
:
{
wySignin
:
""
,
// 取号方式(现场取号,微信取号)
hallName
:
""
,
// 大厅名称
sectionName
:
""
,
// 部门名称
wySignin
:
''
,
// 取号方式(现场取号,微信取号)
hallName
:
''
,
// 大厅名称
sectionName
:
''
// 部门名称
},
tableData
:
[],
column
:
[
{
type
:
"
selection
"
,
width
:
"
50
"
,
align
:
"
center
"
,
type
:
'
selection
'
,
width
:
'
50
'
,
align
:
'
center
'
,
reserveSelection
:
true
,
fixed
:
"
left
"
,
fixed
:
'
left
'
},
{
type
:
"
index
"
,
label
:
"
序号
"
,
width
:
"
50
"
,
align
:
"
center
"
,
fixed
:
"
left
"
,
type
:
'
index
'
,
label
:
'
序号
'
,
width
:
'
50
'
,
align
:
'
center
'
,
fixed
:
'
left
'
,
index
:
(
index
)
=>
{
return
index
+
1
+
(
this
.
page
-
1
)
*
this
.
size
;
}
,
}
},
{
label
:
"
站点名称
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
siteName
"
,
label
:
'
站点名称
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
siteName
'
},
{
label
:
"
业务名称
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
business
"
,
label
:
'
业务名称
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
business
'
},
{
label
:
"
预约编码
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
ordernumber
"
,
label
:
'
预约编码
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
ordernumber
'
},
{
label
:
"
叫号状态
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
style
"
,
label
:
'
叫号状态
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
style
'
},
{
label
:
"
窗口名
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
windowName
"
,
label
:
'
窗口名
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
windowName
'
},
{
label
:
"
窗口编号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
windowFromnum
"
,
label
:
'
窗口编号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
windowFromnum
'
},
{
label
:
"
流水号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
flownum
"
,
label
:
'
流水号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
flownum
'
},
{
label
:
"
呼叫转移
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
formernum
"
,
label
:
'
呼叫转移
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
formernum
'
},
{
label
:
"
身份证号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peopleIdcard
"
,
label
:
'
身份证号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peopleIdcard
'
},
{
label
:
"
姓名
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peopleName
"
,
label
:
'
姓名
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peopleName
'
},
{
label
:
"
手机号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
peoplePhone
"
,
label
:
'
手机号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
peoplePhone
'
},
{
label
:
"
工作人员
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
workmanName
"
,
label
:
'
工作人员
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
workmanName
'
},
{
label
:
"
工号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
workmanNumber
"
,
label
:
'
工号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
workmanNumber
'
},
{
label
:
"
取号方式
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
wySignin
"
,
label
:
'
取号方式
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
wySignin
'
},
{
label
:
"
部门名称
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
sectionName
"
,
label
:
'
部门名称
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
sectionName
'
},
{
label
:
"
大厅名称
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
hallName
"
,
label
:
'
大厅名称
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
hallName
'
},
{
label
:
"
取号时间
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
taketime
"
,
label
:
'
取号时间
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
taketime
'
},
{
label
:
"
叫号时间
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
calltime
"
,
label
:
'
叫号时间
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
calltime
'
},
{
label
:
"
结束时间
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
endtime
"
,
label
:
'
结束时间
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
endtime
'
},
{
label
:
"
等待时间
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
waitTime
"
,
label
:
'
等待时间
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
waitTime
'
},
{
label
:
"
办理时间
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
handleTime
"
,
label
:
'
办理时间
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
handleTime
'
},
{
label
:
"
扩展编号
"
,
align
:
"
center
"
,
width
:
"
150
"
,
prop
:
"
extNum
"
,
label
:
'
扩展编号
'
,
align
:
'
center
'
,
width
:
'
150
'
,
prop
:
'
extNum
'
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
fixed
:
"
right
"
,
width
:
"
100
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
fixed
:
'
right
'
,
width
:
'
100
'
,
formatter
:
(
row
)
=>
{
return
(
<
span
class
=
"
primary cursor-pointer
"
v
-
hasPermi
=
{[
"
market:queueupreport:details
"
]}
v
-
hasPermi
=
{[
'
market:queueupreport:details
'
]}
onClick
=
{()
=>
{
this
.
checkDetails
(
row
);
}}
...
...
@@ -367,12 +355,12 @@ export default {
查看详情
<
/span
>
);
}
,
}
,
}
}
],
detailsInfo
:
{},
deptList
:
[],
// 部门列表
hallList
:
[]
,
// 大厅列表
hallList
:
[]
// 大厅列表
};
},
...
...
@@ -382,17 +370,17 @@ export default {
this
.
getSite
(
newVal
);
},
deep
:
true
,
immediate
:
true
,
}
,
immediate
:
true
}
},
created
()
{},
methods
:
{
// 获取站点
getSite
(
data
)
{
if
(
JSON
.
stringify
(
data
)
!==
"
{}
"
)
{
if
(
JSON
.
stringify
(
data
)
!==
'
{}
'
)
{
this
.
page
=
1
;
this
.
size
=
10
;
if
(
data
.
type
==
"
site
"
)
{
if
(
data
.
type
==
'
site
'
)
{
this
.
searchForm
.
siteId
=
data
.
id
;
this
.
getQueueList
();
this
.
getDepartment
();
...
...
@@ -416,7 +404,7 @@ export default {
size
:
this
.
size
,
taketimeStart
:
this
.
searchForm
.
time
[
0
],
taketimeEnd
:
this
.
searchForm
.
time
[
1
],
siteId
:
this
.
searchForm
.
siteId
,
siteId
:
this
.
searchForm
.
siteId
};
let
val
=
`%
${
this
.
searchForm
.
keyword
}
%`
;
obj
[
this
.
searchForm
.
type
]
=
val
;
...
...
@@ -425,12 +413,12 @@ export default {
let
{
data
,
count
}
=
res
.
data
.
data
;
return
{
data
,
total
:
count
,
total
:
count
};
}
else
{
return
{
data
:
[],
total
:
0
,
total
:
0
};
}
},
...
...
@@ -439,14 +427,11 @@ export default {
this
.
loading
=
true
;
let
{
data
,
total
}
=
await
this
.
getData
(
form
);
data
.
forEach
((
v
)
=>
{
v
.
taketime
=
v
.
taketime
&&
this
.
$moment
(
v
.
taketime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
endtime
=
v
.
endtime
&&
this
.
$moment
(
v
.
endtime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
calltime
=
v
.
calltime
&&
this
.
$moment
(
v
.
calltime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
""
;
v
.
handleTime
=
v
.
handleTime
?
formatSeconds
(
v
.
handleTime
)
:
""
;
v
.
taketime
=
v
.
taketime
&&
this
.
$moment
(
v
.
taketime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
v
.
endtime
=
v
.
endtime
&&
this
.
$moment
(
v
.
endtime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
v
.
calltime
=
v
.
calltime
&&
this
.
$moment
(
v
.
calltime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
''
;
v
.
handleTime
=
v
.
handleTime
?
formatSeconds
(
v
.
handleTime
)
:
''
;
});
this
.
tableData
=
data
;
this
.
total
=
total
;
...
...
@@ -458,7 +443,7 @@ export default {
let
res
=
await
getDepartment
({
page
:
1
,
size
:
-
1
,
siteId
:
this
.
searchForm
.
siteId
,
siteId
:
this
.
searchForm
.
siteId
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -471,7 +456,7 @@ export default {
let
res
=
await
getHall
({
page
:
1
,
size
:
-
1
,
siteId
:
this
.
searchForm
.
siteId
,
siteId
:
this
.
searchForm
.
siteId
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -481,7 +466,7 @@ export default {
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getSite
(
this
.
curTreeData
);
},
checkDetails
(
row
)
{
...
...
@@ -504,38 +489,32 @@ export default {
tHeader
,
filterVal
,
data
,
"
排队数据报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
排队数据报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
}
else
{
dataSection
(
this
.
getData
,
{},
(
data
)
=>
{
if
(
!
data
.
length
)
{
this
.
$message
.
warning
(
"
暂无数据
"
);
this
.
$message
.
warning
(
'
暂无数据
'
);
return
;
}
data
.
forEach
((
v
)
=>
{
v
.
taketime
=
v
.
taketime
&&
this
.
$moment
(
v
.
taketime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
endtime
=
v
.
endtime
&&
this
.
$moment
(
v
.
endtime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
calltime
=
v
.
calltime
&&
this
.
$moment
(
v
.
calltime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
""
;
v
.
handleTime
=
v
.
handleTime
?
formatSeconds
(
v
.
handleTime
)
:
""
;
v
.
taketime
=
v
.
taketime
&&
this
.
$moment
(
v
.
taketime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
v
.
endtime
=
v
.
endtime
&&
this
.
$moment
(
v
.
endtime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
v
.
calltime
=
v
.
calltime
&&
this
.
$moment
(
v
.
calltime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
v
.
waitTime
=
v
.
waitTime
?
formatSeconds
(
v
.
waitTime
)
:
''
;
v
.
handleTime
=
v
.
handleTime
?
formatSeconds
(
v
.
handleTime
)
:
''
;
});
export2Excel
(
tHeader
,
filterVal
,
data
,
"
排队数据报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
'
排队数据报表
'
+
this
.
$moment
().
format
(
'
YYYYMMDDHHmmss
'
)
);
});
}
this
.
exportLoading
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/market/components/EvaluateDetails.vue
View file @
15017fd2
<
template
>
<el-drawer
title=
"详情"
:visible.sync=
"drawer"
size=
"60%"
@
close=
"drawer = false"
>
<el-drawer
title=
"详情"
:visible.sync=
"drawer"
size=
"60%"
@
close=
"drawer = false"
>
<div
class=
"main h-full w-full p-[20px]"
>
<el-descriptions
:column=
"3"
border
size=
"medium"
labelClassName=
"label-name"
>
<el-descriptions
:column=
"3"
border
size=
"medium"
labelClassName=
"label-name"
>
<template
v-for=
"(v, i) in dataInfo"
>
<el-descriptions-item
v-if=
"
(v.prop == 'photoautograph' || v.prop == 'picture') && v.content
"
v-if=
"(v.prop == 'photoautograph' || v.prop == 'picture') && v.content"
:key=
"i"
:label=
"v.title"
>
<el-image
style=
"width: 50px"
:src=
"v.content"
:preview-src-list=
"[v.content]"
>
<el-image
style=
"width: 50px"
:src=
"v.content"
:preview-src-list=
"[v.content]"
>
</el-image>
</el-descriptions-item>
<el-descriptions-item
v-else
:key=
"i"
:label=
"v.title"
>
...
...
@@ -41,168 +25,168 @@ export default {
props
:
{
show
:
{
type
:
Boolean
,
default
:
false
,
default
:
false
},
info
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{}
,
}
,
default
:
()
=>
{}
}
},
data
()
{
return
{
detailsList
:
[
{
title
:
"
身份证号
"
,
prop
:
"
peopleIdcard
"
,
content
:
""
,
title
:
'
身份证号
'
,
prop
:
'
peopleIdcard
'
,
content
:
''
},
{
title
:
"
姓名
"
,
prop
:
"
peopleName
"
,
content
:
""
,
title
:
'
姓名
'
,
prop
:
'
peopleName
'
,
content
:
''
},
{
title
:
"
性别
"
,
prop
:
"
peopleSex
"
,
content
:
""
,
title
:
'
性别
'
,
prop
:
'
peopleSex
'
,
content
:
''
},
{
title
:
"
手机号
"
,
prop
:
"
peoplePhone
"
,
content
:
""
,
title
:
'
手机号
'
,
prop
:
'
peoplePhone
'
,
content
:
''
},
{
title
:
"
评价选项
"
,
prop
:
"
pjOption
"
,
content
:
""
,
title
:
'
评价选项
'
,
prop
:
'
pjOption
'
,
content
:
''
},
{
title
:
"
评价标签
"
,
prop
:
"
contentTag
"
,
content
:
""
,
title
:
'
评价标签
'
,
prop
:
'
contentTag
'
,
content
:
''
},
{
title
:
"
评价人图片地址
"
,
prop
:
"
picUrl
"
,
content
:
""
,
title
:
'
评价人图片地址
'
,
prop
:
'
picUrl
'
,
content
:
''
},
{
title
:
"
部门
"
,
prop
:
"
sectionName
"
,
content
:
""
,
title
:
'
部门
'
,
prop
:
'
sectionName
'
,
content
:
''
},
{
title
:
"
大厅名称
"
,
prop
:
"
hallName
"
,
content
:
""
,
title
:
'
大厅名称
'
,
prop
:
'
hallName
'
,
content
:
''
},
{
title
:
"
评价来源
"
,
prop
:
"
pjSource
"
,
content
:
""
,
title
:
'
评价来源
'
,
prop
:
'
pjSource
'
,
content
:
''
},
{
title
:
"
手输意见
"
,
prop
:
"
opinion
"
,
content
:
""
,
title
:
'
手输意见
'
,
prop
:
'
opinion
'
,
content
:
''
},
{
title
:
"
窗口名称
"
,
prop
:
"
windowName
"
,
content
:
""
,
title
:
'
窗口名称
'
,
prop
:
'
windowName
'
,
content
:
''
},
{
title
:
"
窗口编号
"
,
prop
:
"
windowFromnum
"
,
content
:
""
,
title
:
'
窗口编号
'
,
prop
:
'
windowFromnum
'
,
content
:
''
},
{
title
:
"
排队编号
"
,
prop
:
"
flounum
"
,
content
:
""
,
title
:
'
排队编号
'
,
prop
:
'
flounum
'
,
content
:
''
},
{
title
:
"
窗口评价
"
,
prop
:
"
pjxt
"
,
content
:
""
,
title
:
'
窗口评价
'
,
prop
:
'
pjxt
'
,
content
:
''
},
{
title
:
"
工作人员姓名
"
,
prop
:
"
workmanName
"
,
content
:
""
,
title
:
'
工作人员姓名
'
,
prop
:
'
workmanName
'
,
content
:
''
},
{
title
:
"
工作人员工号
"
,
prop
:
"
workmanNumber
"
,
content
:
""
,
title
:
'
工作人员工号
'
,
prop
:
'
workmanNumber
'
,
content
:
''
},
{
title
:
"
评价器MAC地址
"
,
prop
:
"
devicenum
"
,
content
:
""
,
title
:
'
评价器MAC地址
'
,
prop
:
'
devicenum
'
,
content
:
''
},
{
title
:
"
评价状态
"
,
prop
:
"
evaluatestatus
"
,
content
:
""
,
title
:
'
评价状态
'
,
prop
:
'
evaluatestatus
'
,
content
:
''
},
{
title
:
"
截图还是评价
"
,
prop
:
"
evaluatetype
"
,
content
:
""
,
title
:
'
截图还是评价
'
,
prop
:
'
evaluatetype
'
,
content
:
''
},
{
title
:
"
截图地址
"
,
prop
:
"
photobefor
"
,
content
:
""
,
title
:
'
截图地址
'
,
prop
:
'
photobefor
'
,
content
:
''
},
{
title
:
"
签字图片
"
,
prop
:
"
photoautograph
"
,
content
:
""
,
title
:
'
签字图片
'
,
prop
:
'
photoautograph
'
,
content
:
''
},
{
title
:
"
抓拍评价人照片
"
,
prop
:
"
picture
"
,
content
:
""
,
title
:
'
抓拍评价人照片
'
,
prop
:
'
picture
'
,
content
:
''
},
{
title
:
"
音视频地址
"
,
prop
:
"
process
"
,
content
:
""
,
title
:
'
音视频地址
'
,
prop
:
'
process
'
,
content
:
''
},
{
title
:
"
评价标记
"
,
prop
:
"
eyevaluate
"
,
content
:
""
,
title
:
'
评价标记
'
,
prop
:
'
eyevaluate
'
,
content
:
''
},
{
title
:
"
评价指向
"
,
prop
:
"
pjType
"
,
content
:
""
,
title
:
'
评价指向
'
,
prop
:
'
pjType
'
,
content
:
''
},
{
title
:
"
评价时间
"
,
prop
:
"
pjTime
"
,
content
:
""
,
title
:
'
评价时间
'
,
prop
:
'
pjTime
'
,
content
:
''
},
{
title
:
"
站点编码
"
,
prop
:
"
siteCode
"
,
content
:
""
,
title
:
'
站点编码
'
,
prop
:
'
siteCode
'
,
content
:
''
},
{
title
:
"
站点名称
"
,
prop
:
"
siteName
"
,
content
:
""
,
title
:
'
站点名称
'
,
prop
:
'
siteName
'
,
content
:
''
},
{
title
:
"
扩展编号
"
,
prop
:
"
extNum
"
,
content
:
""
,
}
,
]
,
title
:
'
扩展编号
'
,
prop
:
'
extNum
'
,
content
:
''
}
]
};
},
computed
:
{
...
...
@@ -211,17 +195,17 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
},
dataInfo
()
{
this
.
detailsList
.
forEach
((
v
)
=>
{
v
.
content
=
this
.
info
[
v
.
prop
];
});
return
this
.
detailsList
;
}
,
}
},
methods
:
{}
,
methods
:
{}
};
</
script
>
...
...
admin_2/src/pages/market/components/QueueUpDetails.vue
View file @
15017fd2
<
template
>
<el-drawer
title=
"详情"
:visible.sync=
"drawer"
size=
"60%"
@
close=
"drawer = false"
>
<el-drawer
title=
"详情"
:visible.sync=
"drawer"
size=
"60%"
@
close=
"drawer = false"
>
<div
class=
"main h-full w-full p-[20px]"
>
<el-descriptions
:column=
"3"
border
size=
"medium"
labelClassName=
"label-name"
>
<el-descriptions-item
v-for=
"(v, i) in dataInfo"
:key=
"i"
:label=
"v.title"
>
<el-descriptions
:column=
"3"
border
size=
"medium"
labelClassName=
"label-name"
>
<el-descriptions-item
v-for=
"(v, i) in dataInfo"
:key=
"i"
:label=
"v.title"
>
{{
v
.
content
}}
</el-descriptions-item>
</el-descriptions>
...
...
@@ -29,158 +15,158 @@ export default {
props
:
{
show
:
{
type
:
Boolean
,
default
:
false
,
default
:
false
},
info
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{}
,
}
,
default
:
()
=>
{}
}
},
data
()
{
return
{
detailsList
:
[
{
title
:
"
预约编号
"
,
prop
:
"
ordernumber
"
,
content
:
""
,
title
:
'
预约编号
'
,
prop
:
'
ordernumber
'
,
content
:
''
},
{
title
:
"
叫号状态
"
,
prop
:
"
style
"
,
content
:
""
,
title
:
'
叫号状态
'
,
prop
:
'
style
'
,
content
:
''
},
{
title
:
"
业务名称
"
,
prop
:
"
business
"
,
content
:
""
,
title
:
'
业务名称
'
,
prop
:
'
business
'
,
content
:
''
},
{
title
:
"
窗口名称
"
,
prop
:
"
windowName
"
,
content
:
""
,
title
:
'
窗口名称
'
,
prop
:
'
windowName
'
,
content
:
''
},
{
title
:
"
窗口编号
"
,
prop
:
"
windowFromnum
"
,
content
:
""
,
title
:
'
窗口编号
'
,
prop
:
'
windowFromnum
'
,
content
:
''
},
{
title
:
"
流水编号,当天的第xxx号
"
,
prop
:
"
flownum
"
,
content
:
""
,
title
:
'
流水编号,当天的第xxx号
'
,
prop
:
'
flownum
'
,
content
:
''
},
{
title
:
"
呼叫转移号
"
,
prop
:
"
formernum
"
,
content
:
""
,
title
:
'
呼叫转移号
'
,
prop
:
'
formernum
'
,
content
:
''
},
{
title
:
"
姓名
"
,
prop
:
"
peopleName
"
,
content
:
""
,
title
:
'
姓名
'
,
prop
:
'
peopleName
'
,
content
:
''
},
{
title
:
"
身份证号
"
,
prop
:
"
peopleIdcard
"
,
content
:
""
,
title
:
'
身份证号
'
,
prop
:
'
peopleIdcard
'
,
content
:
''
},
{
title
:
"
性别
"
,
prop
:
"
peopleSex
"
,
content
:
""
,
title
:
'
性别
'
,
prop
:
'
peopleSex
'
,
content
:
''
},
{
title
:
"
手机号
"
,
prop
:
"
peoplePhone
"
,
content
:
""
,
title
:
'
手机号
'
,
prop
:
'
peoplePhone
'
,
content
:
''
},
{
title
:
"
工作人员姓名
"
,
prop
:
"
workmanName
"
,
content
:
""
,
title
:
'
工作人员姓名
'
,
prop
:
'
workmanName
'
,
content
:
''
},
{
title
:
"
工作人员工号
"
,
prop
:
"
workmanNumber
"
,
content
:
""
,
title
:
'
工作人员工号
'
,
prop
:
'
workmanNumber
'
,
content
:
''
},
{
title
:
"
取号时间
"
,
prop
:
"
taketime
"
,
content
:
""
,
title
:
'
取号时间
'
,
prop
:
'
taketime
'
,
content
:
''
},
{
title
:
"
叫号时间
"
,
prop
:
"
calltime
"
,
content
:
""
,
title
:
'
叫号时间
'
,
prop
:
'
calltime
'
,
content
:
''
},
{
title
:
"
结束时间
"
,
prop
:
"
endtime
"
,
content
:
""
,
title
:
'
结束时间
'
,
prop
:
'
endtime
'
,
content
:
''
},
{
title
:
"
等待时间
"
,
prop
:
"
waitTime
"
,
content
:
""
,
title
:
'
等待时间
'
,
prop
:
'
waitTime
'
,
content
:
''
},
{
title
:
"
办理时间
"
,
prop
:
"
handleTime
"
,
content
:
""
,
title
:
'
办理时间
'
,
prop
:
'
handleTime
'
,
content
:
''
},
{
title
:
"
取号设备类型
"
,
prop
:
"
deviceType
"
,
content
:
""
,
title
:
'
取号设备类型
'
,
prop
:
'
deviceType
'
,
content
:
''
},
{
title
:
"
取号设备名称
"
,
prop
:
"
deviceName
"
,
content
:
""
,
title
:
'
取号设备名称
'
,
prop
:
'
deviceName
'
,
content
:
''
},
{
title
:
"
呼叫设备
"
,
prop
:
"
callName
"
,
content
:
""
,
title
:
'
呼叫设备
'
,
prop
:
'
callName
'
,
content
:
''
},
{
title
:
"
事项名称
"
,
prop
:
"
matterName
"
,
content
:
""
,
title
:
'
事项名称
'
,
prop
:
'
matterName
'
,
content
:
''
},
{
title
:
"
排号队列ID,唯一
"
,
prop
:
"
queueid
"
,
content
:
""
,
title
:
'
排号队列ID,唯一
'
,
prop
:
'
queueid
'
,
content
:
''
},
{
title
:
"
大厅名称
"
,
prop
:
"
hallName
"
,
content
:
"
测试
"
,
title
:
'
大厅名称
'
,
prop
:
'
hallName
'
,
content
:
'
测试
'
},
{
title
:
"
站点ID
"
,
prop
:
"
siteId
"
,
content
:
""
,
title
:
'
站点ID
'
,
prop
:
'
siteId
'
,
content
:
''
},
{
title
:
"
站点编码
"
,
prop
:
"
siteCode
"
,
content
:
""
,
title
:
'
站点编码
'
,
prop
:
'
siteCode
'
,
content
:
''
},
{
title
:
"
站点名称
"
,
prop
:
"
siteName
"
,
content
:
""
,
title
:
'
站点名称
'
,
prop
:
'
siteName
'
,
content
:
''
},
{
title
:
"
扩展编号
"
,
prop
:
"
extNum
"
,
content
:
""
,
}
,
]
,
title
:
'
扩展编号
'
,
prop
:
'
extNum
'
,
content
:
''
}
]
};
},
computed
:
{
...
...
@@ -189,17 +175,17 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
},
dataInfo
()
{
this
.
detailsList
.
forEach
((
v
)
=>
{
v
.
content
=
this
.
info
[
v
.
prop
];
});
return
this
.
detailsList
;
}
,
}
},
methods
:
{}
,
methods
:
{}
};
</
script
>
...
...
admin_2/src/pages/sso/Sso.vue
View file @
15017fd2
...
...
@@ -5,35 +5,34 @@
</
template
>
<
script
>
import
storage
from
"
@/utils/storage
"
;
import
{
mapMutations
}
from
"
vuex
"
;
import
{
getHomeData
}
from
"
@/api/home
"
;
import
{
generateRoutes
,
filterBtn
}
from
"
@/utils
"
;
import
{
calcMenu
}
from
"
@/router
"
;
import
storage
from
'
@/utils/storage
'
;
import
{
mapMutations
}
from
'
vuex
'
;
import
{
getHomeData
}
from
'
@/api/home
'
;
import
{
generateRoutes
,
filterBtn
}
from
'
@/utils
'
;
import
{
calcMenu
}
from
'
@/router
'
;
export
default
{
data
()
{
return
{
menuList
:
[]
,
menuList
:
[]
};
},
created
()
{
this
.
getToken
();
},
methods
:
{
...
mapMutations
(
"
user
"
,
[
"
SET_token
"
,
"
SET_sysName
"
,
"
SET_sysLogo
"
,
"
SET_path
"
,
"
SET_userInfo
"
,
"
SET_permissions
"
,
"
SET_routes
"
,
"
SET_menusList
"
,
...
mapMutations
(
'
user
'
,
[
'
SET_token
'
,
'
SET_sysName
'
,
'
SET_sysLogo
'
,
'
SET_path
'
,
'
SET_userInfo
'
,
'
SET_permissions
'
,
'
SET_routes
'
,
'
SET_menusList
'
]),
// 获取token
async
getToken
()
{
let
{
token
,
userInfo
,
siteid
,
siteName
,
sysName
,
sysLogo
,
path
}
=
this
.
$route
.
query
;
let
{
token
,
userInfo
,
siteid
,
siteName
,
sysName
,
sysLogo
,
path
}
=
this
.
$route
.
query
;
if
(
token
&&
userInfo
)
{
userInfo
=
JSON
.
parse
(
userInfo
);
this
.
SET_userInfo
(
userInfo
);
...
...
@@ -41,11 +40,11 @@ export default {
this
.
SET_sysName
(
sysName
);
this
.
SET_sysLogo
(
sysLogo
);
this
.
SET_path
(
path
);
storage
.
set
(
2
,
"
siteId
"
,
siteid
);
storage
.
set
(
2
,
"
siteName
"
,
siteName
);
storage
.
set
(
2
,
'
siteId
'
,
siteid
);
storage
.
set
(
2
,
'
siteName
'
,
siteName
);
await
this
.
getIndixData
();
}
else
{
this
.
$message
.
warning
(
"
跳转失败,请重新登录
"
);
this
.
$message
.
warning
(
'
跳转失败,请重新登录
'
);
setTimeout
(()
=>
{
location
.
href
=
process
.
env
.
VUE_APP_API_portal_URL
;
},
2000
);
...
...
@@ -67,7 +66,7 @@ export default {
let
path
=
routes
[
0
].
path
;
this
.
$router
.
push
(
path
);
}
else
{
this
.
$message
.
warning
(
"
暂无权限,请联系管理员!
"
);
this
.
$message
.
warning
(
'
暂无权限,请联系管理员!
'
);
}
}
},
...
...
@@ -78,8 +77,8 @@ export default {
.
filter
((
v
)
=>
v
.
perms
)
.
map
((
v
)
=>
v
.
perms
);
this
.
SET_permissions
(
btnPermissions
);
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/System.vue
View file @
15017fd2
...
...
@@ -8,12 +8,12 @@
export
default
{
data
()
{
return
{
subMenus
:
[]
,
subMenus
:
[]
};
},
computed
:
{},
created
()
{},
methods
:
{}
,
methods
:
{}
};
</
script
>
...
...
admin_2/src/pages/system/access/Access.vue
View file @
15017fd2
...
...
@@ -2,11 +2,7 @@
<div
class=
"h-full w-full"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:access:add']"
@
click=
"handleAdd"
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:access:add']"
@
click=
"handleAdd"
>
新增
</el-button
>
<el-button
...
...
@@ -30,9 +26,7 @@
></el-input>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
...
...
@@ -77,63 +71,57 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddAccess
from
"
./components/AddAccess.vue
"
;
import
AccessSystem
from
"
./components/AccessSystem.vue
"
;
import
{
getAccessList
,
delAccess
}
from
"
@/api/system
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
AddAccess
from
'
./components/AddAccess.vue
'
;
import
AccessSystem
from
'
./components/AccessSystem.vue
'
;
import
{
getAccessList
,
delAccess
}
from
'
@/api/system
'
;
export
default
{
components
:
{
TableHeader
,
AddAccess
,
AccessSystem
,
AccessSystem
},
data
()
{
return
{
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
区域名称
"
,
prop
:
"
areaName
"
,
align
:
"
center
"
,
label
:
'
区域名称
'
,
prop
:
'
areaName
'
,
align
:
'
center
'
},
{
label
:
"
区域编码
"
,
prop
:
"
areaCode
"
,
align
:
"
center
"
,
label
:
'
区域编码
'
,
prop
:
'
areaCode
'
,
align
:
'
center
'
},
{
label
:
"
背景图片
"
,
prop
:
"
bigPath
"
,
align
:
"
center
"
,
label
:
'
背景图片
'
,
prop
:
'
bigPath
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
image
src
=
{
row
.
bigPath
}
previewSrcList
=
{[
row
.
bigPath
]}
class
=
"
h-[25px]
"
/>
);
},
return
<
el
-
image
src
=
{
row
.
bigPath
}
previewSrcList
=
{[
row
.
bigPath
]}
class
=
"
h-[25px]
"
/>
;
}
},
{
label
:
"
接入系统
"
,
align
:
"
center
"
,
label
:
'
接入系统
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
accessSystemList
&&
row
.
accessSystemList
.
length
)
{
return
(
...
...
@@ -144,16 +132,16 @@ export default {
<
/div
>
);
}
}
,
}
},
{
label
:
"
系统标签
"
,
align
:
"
center
"
,
label
:
'
系统标签
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
tag
)
{
return
(
<
div
class
=
"
flex flex-wrap gap-2
"
>
{
row
.
tag
.
split
(
"
,
"
).
map
((
v
)
=>
{
{
row
.
tag
.
split
(
'
,
'
).
map
((
v
)
=>
{
return
(
<
el
-
tag
type
=
"
info
"
size
=
"
small
"
>
{
v
}
...
...
@@ -163,59 +151,59 @@ export default {
<
/div
>
);
}
}
,
}
},
{
label
:
"
对接时间
"
,
align
:
"
center
"
,
label
:
'
对接时间
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
accessTime
)
{
return
this
.
$moment
(
row
.
accessTime
).
format
(
"
YYYY-MM-DD
"
);
return
this
.
$moment
(
row
.
accessTime
).
format
(
'
YYYY-MM-DD
'
);
}
}
,
}
},
{
label
:
"
排序
"
,
prop
:
"
sort
"
,
width
:
"
100
"
,
align
:
"
center
"
,
label
:
'
排序
'
,
prop
:
'
sort
'
,
width
:
'
100
'
,
align
:
'
center
'
},
{
label
:
"
描述
"
,
prop
:
"
content
"
,
align
:
"
center
"
,
showOverflowTooltip
:
true
,
label
:
'
描述
'
,
prop
:
'
content
'
,
align
:
'
center
'
,
showOverflowTooltip
:
true
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
,
align
:
"
center
"
,
showOverflowTooltip
:
true
,
label
:
'
备注
'
,
prop
:
'
remark
'
,
align
:
'
center
'
,
showOverflowTooltip
:
true
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
180
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
180
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
v
-
hasPermi
=
{[
"
system:access:accessSystem
"
]}
v
-
hasPermi
=
{[
'
system:access:accessSystem
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
accessSystem
(
row
)}
>
接入系统
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:access:edit
"
]}
v
-
hasPermi
=
{[
'
system:access:edit
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:access:remove
"
]}
v
-
hasPermi
=
{[
'
system:access:remove
'
]}
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
...
...
@@ -223,11 +211,11 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
areaName
:
""
,
areaName
:
''
},
tableData
:
[],
page
:
1
,
...
...
@@ -236,11 +224,11 @@ export default {
loading
:
false
,
selectRows
:
[],
show
:
false
,
title
:
"
新增
"
,
title
:
'
新增
'
,
dict
:
{},
// 字典
systemList
:
[],
accessShow
:
false
,
areaInfo
:
{}
,
areaInfo
:
{}
};
},
created
()
{
...
...
@@ -254,7 +242,7 @@ export default {
let
res
=
await
getAccessList
({
page
:
this
.
page
,
size
:
this
.
size
,
areaName
:
`%
${
this
.
searchForm
.
areaName
}
%`
,
areaName
:
`%
${
this
.
searchForm
.
areaName
}
%`
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -271,23 +259,23 @@ export default {
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectRows
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getAccessList
();
},
// 重置
handleReset
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
getAccessList
();
},
// 选中
...
...
@@ -297,24 +285,24 @@ export default {
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
title
=
'
新增
'
;
this
.
$refs
.
AddAccess
.
onAdd
();
this
.
show
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
title
=
'
编辑
'
;
let
data
=
this
.
$cloneDeep
(
row
);
this
.
$refs
.
AddAccess
.
onEdit
(
data
);
this
.
show
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
delAccess
({
id
});
...
...
@@ -322,19 +310,19 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getAccessList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
},
accessSystem
(
row
)
{
let
data
=
this
.
$cloneDeep
(
row
);
this
.
$refs
.
AccessSystem
.
onAdd
(
data
);
this
.
accessShow
=
true
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/access/components/AccessSystem.vue
View file @
15017fd2
...
...
@@ -8,32 +8,18 @@
<div
class=
"main w-full"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"addSystem"
>
添加
</el-button>
<el-table
:data=
"accessSystemList"
style=
"width: 100%"
>
<el-table-column
type=
"index"
:index=
"1"
label=
"序号"
align=
"center"
>
</el-table-column>
<el-table-column
type=
"index"
:index=
"1"
label=
"序号"
align=
"center"
>
</el-table-column>
<el-table-column
prop=
"systemName"
align=
"center"
label=
"系统名称"
>
<template
slot-scope=
"scope"
>
<el-input
size=
"small"
placeholder=
"请输入"
v-model=
"scope.row.systemName"
></el-input>
<el-input
size=
"small"
placeholder=
"请输入"
v-model=
"scope.row.systemName"
></el-input>
</
template
>
</el-table-column>
<el-table-column
prop=
"systemCode"
align=
"center"
label=
"系统编码"
>
<
template
slot-scope=
"scope"
>
<el-input
size=
"small"
placeholder=
"请输入"
v-model=
"scope.row.systemCode"
></el-input>
<el-input
size=
"small"
placeholder=
"请输入"
v-model=
"scope.row.systemCode"
></el-input>
</
template
>
</el-table-column>
<el-table-column
prop=
"accessTime"
align=
"center"
label=
"接入日期"
width=
"220"
>
<el-table-column
prop=
"accessTime"
align=
"center"
label=
"接入日期"
width=
"220"
>
<
template
slot-scope=
"scope"
>
<el-date-picker
style=
"width: 150px"
...
...
@@ -46,18 +32,9 @@
</el-date-picker>
</
template
>
</el-table-column>
<el-table-column
width=
"80"
align=
"center"
prop=
"enabled"
label=
"启\停用"
>
<el-table-column
width=
"80"
align=
"center"
prop=
"enabled"
label=
"启\停用"
>
<
template
slot-scope=
"scope"
>
<YSwitch
active-text=
"启用"
inactive-text=
"停用"
v-model=
"scope.row.enabled"
></YSwitch>
<YSwitch
active-text=
"启用"
inactive-text=
"停用"
v-model=
"scope.row.enabled"
></YSwitch>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
width=
"60"
prop=
"enabled"
label=
"删除"
>
...
...
@@ -73,42 +50,36 @@
<div
class=
"footer"
>
<el-button
size=
"small"
@
click=
"handleClose"
>
取 消
</el-button>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
<el-button
size=
"small"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
<el-button
size=
"small"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button>
</div>
</el-drawer>
</template>
<
script
>
import
{
saveAccess
,
deleteSystem
}
from
"
@/api/system
"
;
import
{
saveAccess
,
deleteSystem
}
from
'
@/api/system
'
;
export
default
{
props
:
{
show
:
{
type
:
Boolean
,
default
:
false
,
default
:
false
},
systemList
:
{
required
:
true
,
type
:
Array
,
default
:
()
=>
[]
,
}
,
default
:
()
=>
[]
}
},
data
()
{
return
{
loading
:
false
,
form
:
{
systemName
:
""
,
systemCode
:
""
,
accessTime
:
""
,
enabled
:
1
,
systemName
:
''
,
systemCode
:
''
,
accessTime
:
''
,
enabled
:
1
},
accessSystemList
:
[],
areaInfo
:
{}
,
areaInfo
:
{}
};
},
computed
:
{
...
...
@@ -117,9 +88,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
...
...
@@ -128,11 +99,11 @@ export default {
this
.
accessSystemList
.
push
(
row
);
},
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
drawer
=
false
;
},
handleReset
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
drawer
=
false
;
},
...
...
@@ -150,7 +121,7 @@ export default {
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -163,8 +134,8 @@ export default {
}
}
this
.
accessSystemList
.
splice
(
$index
,
1
);
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/access/components/AddAccess.vue
View file @
15017fd2
...
...
@@ -9,19 +9,9 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form-item
label=
"区域"
prop=
"areaName"
>
<InputTree
:treeData=
"initTree"
v-model=
"form.areaName"
@
change=
"changeArea"
></InputTree>
<InputTree
:treeData=
"initTree"
v-model=
"form.areaName"
@
change=
"changeArea"
></InputTree>
</el-form-item>
<el-form-item
label=
"系统标签"
prop=
"tag"
>
<div
class=
"flex gap-2"
>
...
...
@@ -65,11 +55,7 @@
</el-date-picker>
</el-form-item>
<el-form-item
label=
"排序"
prop=
"sort"
>
<el-input-number
v-model=
"form.sort"
controls-position=
"right"
:min=
"0"
></el-input-number>
<el-input-number
v-model=
"form.sort"
controls-position=
"right"
:min=
"0"
></el-input-number>
</el-form-item>
<el-form-item
label=
"描述"
prop=
"content"
>
<el-input
...
...
@@ -93,11 +79,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -106,74 +88,70 @@
</
template
>
<
script
>
import
{
mapState
}
from
"
vuex
"
;
import
{
saveAccess
}
from
"
@/api/system
"
;
import
InputTree
from
"
./InputTree.vue
"
;
import
{
mapState
}
from
'
vuex
'
;
import
{
saveAccess
}
from
'
@/api/system
'
;
import
InputTree
from
'
./InputTree.vue
'
;
export
default
{
components
:
{
InputTree
,
InputTree
},
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
}
,
default
:
false
}
},
data
()
{
return
{
api
:
process
.
env
.
VUE_APP_API_BASE_URL
,
loading
:
false
,
inputVisible
:
false
,
inputValue
:
""
,
inputValue
:
''
,
bigPathList
:
[],
form
:
{
areaName
:
""
,
areaCode
:
""
,
areaId
:
""
,
siteId
:
""
,
siteCode
:
""
,
siteName
:
""
,
latitude
:
""
,
longitude
:
""
,
type
:
""
,
bigPath
:
""
,
areaName
:
''
,
areaCode
:
''
,
areaId
:
''
,
siteId
:
''
,
siteCode
:
''
,
siteName
:
''
,
latitude
:
''
,
longitude
:
''
,
type
:
''
,
bigPath
:
''
,
tag
:
[],
sort
:
99
,
remark
:
""
,
icon
:
""
,
accessTime
:
""
,
// 接入时间
content
:
""
,
// 内容
accessSystemList
:
[]
,
remark
:
''
,
icon
:
''
,
accessTime
:
''
,
// 接入时间
content
:
''
,
// 内容
accessSystemList
:
[]
},
rules
:
{
areaName
:
[
{
required
:
true
,
message
:
"
请选择区域
"
,
trigger
:
"
change
"
},
],
bigPath
:
[
{
required
:
true
,
message
:
"
请上传背景图片
"
,
trigger
:
"
change
"
},
],
},
areaName
:
[{
required
:
true
,
message
:
'
请选择区域
'
,
trigger
:
'
change
'
}],
bigPath
:
[{
required
:
true
,
message
:
'
请上传背景图片
'
,
trigger
:
'
change
'
}]
}
};
},
computed
:
{
...
mapState
(
"
user
"
,
[
"
areaTree
"
]),
...
mapState
(
'
user
'
,
[
'
areaTree
'
]),
Visible
:
{
get
()
{
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
},
initTree
()
{
return
this
.
addAreaNameField
(
this
.
areaTree
);
}
,
}
},
methods
:
{
// 确定
...
...
@@ -183,12 +161,12 @@ export default {
this
.
loading
=
true
;
let
res
=
await
saveAccess
({
...
this
.
form
,
tag
:
this
.
form
.
tag
.
join
(
"
,
"
),
tag
:
this
.
form
.
tag
.
join
(
'
,
'
)
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -198,14 +176,14 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
setTimeout
(()
=>
{
this
.
form
=
row
;
if
(
this
.
form
.
tag
)
{
this
.
form
.
tag
=
this
.
form
.
tag
.
split
(
"
,
"
);
this
.
form
.
tag
=
this
.
form
.
tag
.
split
(
'
,
'
);
}
else
{
this
.
form
.
tag
=
[];
}
...
...
@@ -213,8 +191,8 @@ export default {
this
.
bigPathList
=
[
{
name
:
this
.
form
.
bigPath
,
url
:
this
.
form
.
bigPath
,
}
,
url
:
this
.
form
.
bigPath
}
];
}
},
10
);
...
...
@@ -222,33 +200,24 @@ export default {
// 重置
handleRest
()
{
this
.
bigPathList
=
[];
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
bigPathList
=
[];
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
},
changeArea
(
row
)
{
let
{
areaName
,
areaCode
,
id
,
label
,
siteCode
,
latitude
,
longitude
,
type
,
}
=
row
;
let
{
areaName
,
areaCode
,
id
,
label
,
siteCode
,
latitude
,
longitude
,
type
}
=
row
;
this
.
form
.
areaId
=
""
;
this
.
form
.
siteId
=
""
;
this
.
form
.
siteName
=
""
;
this
.
form
.
areaId
=
''
;
this
.
form
.
siteId
=
''
;
this
.
form
.
siteName
=
''
;
if
(
type
===
"
area
"
)
{
if
(
type
===
'
area
'
)
{
this
.
form
.
areaId
=
id
;
}
else
if
(
type
===
"
site
"
)
{
}
else
if
(
type
===
'
site
'
)
{
this
.
form
.
siteId
=
id
;
this
.
form
.
siteName
=
label
;
}
...
...
@@ -280,7 +249,7 @@ export default {
showInput
()
{
if
(
this
.
form
.
tag
.
length
>=
2
)
{
this
.
$message
.
warning
(
"
暂时只能添加两个系统标签
"
);
this
.
$message
.
warning
(
'
暂时只能添加两个系统标签
'
);
return
;
}
this
.
inputVisible
=
true
;
...
...
@@ -293,15 +262,15 @@ export default {
let
inputValue
=
this
.
inputValue
;
if
(
inputValue
)
{
if
(
this
.
form
.
tag
.
includes
(
inputValue
))
{
this
.
$message
.
warning
(
"
已存在相同标签
"
);
this
.
$message
.
warning
(
'
已存在相同标签
'
);
return
;
}
this
.
form
.
tag
.
push
(
inputValue
);
}
this
.
inputVisible
=
false
;
this
.
inputValue
=
""
;
}
,
}
,
this
.
inputValue
=
''
;
}
}
};
</
script
>
...
...
admin_2/src/pages/system/access/components/InputTree.vue
View file @
15017fd2
...
...
@@ -23,41 +23,41 @@
<
script
>
export
default
{
name
:
"
InputTree
"
,
name
:
'
InputTree
'
,
props
:
{
treeData
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
}
,
}
},
value
:
{
default
:
""
,
default
:
''
},
defaultProps
:
{
type
:
Object
,
default
:
()
=>
{
return
{
children
:
"
children
"
,
label
:
"
areaName
"
,
children
:
'
children
'
,
label
:
'
areaName
'
};
}
,
}
,
}
}
},
data
()
{
return
{};
},
methods
:
{
handleClear
()
{
this
.
$emit
(
"
input
"
,
""
);
this
.
$emit
(
"
change
"
,
{});
this
.
$emit
(
'
input
'
,
''
);
this
.
$emit
(
'
change
'
,
{});
this
.
$refs
.
tree
.
setCurrentKey
(
null
);
},
handleNodeClick
(
row
)
{
this
.
$emit
(
"
input
"
,
row
.
areaName
);
this
.
$emit
(
"
change
"
,
row
);
}
,
}
,
this
.
$emit
(
'
input
'
,
row
.
areaName
);
this
.
$emit
(
'
change
'
,
row
);
}
}
};
</
script
>
...
...
admin_2/src/pages/system/areaSystem/AreaSystem.vue
View file @
15017fd2
...
...
@@ -2,12 +2,8 @@
<div
class=
"h-full w-full"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleAdd"
>
新增
</el-button
>
<el-button
size=
"small"
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleAdd"
>
新增
</el-button>
<el-button
size=
"small"
type=
"danger"
@
click=
"handleDelAll"
>
批量删除
</el-button>
</div>
<div
slot=
"right"
>
<el-form
ref=
"searchForm"
:model=
"searchForm"
inline
>
...
...
@@ -22,9 +18,7 @@
></el-input>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
...
...
@@ -63,89 +57,83 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getSystemList
,
deleteSystem
}
from
"
@/api/system
"
;
import
AddAreaSystem
from
"
./components/AddAreaSystem.vue
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
{
getSystemList
,
deleteSystem
}
from
'
@/api/system
'
;
import
AddAreaSystem
from
'
./components/AddAreaSystem.vue
'
;
export
default
{
components
:
{
TableHeader
,
AddAreaSystem
,
AddAreaSystem
},
data
()
{
return
{
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
系统名称
"
,
prop
:
"
systemName
"
,
align
:
"
center
"
,
label
:
'
系统名称
'
,
prop
:
'
systemName
'
,
align
:
'
center
'
},
{
label
:
"
系统编码
"
,
prop
:
"
systemCode
"
,
align
:
"
center
"
,
label
:
'
系统编码
'
,
prop
:
'
systemCode
'
,
align
:
'
center
'
},
{
label
:
"
创建时间
"
,
align
:
"
center
"
,
label
:
'
创建时间
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
createTime
)
{
return
this
.
$moment
(
row
.
createTime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
return
this
.
$moment
(
row
.
createTime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
}
}
,
}
},
{
label
:
"
排序
"
,
prop
:
"
sort
"
,
align
:
"
center
"
,
label
:
'
排序
'
,
prop
:
'
sort
'
,
align
:
'
center
'
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
,
align
:
"
center
"
,
label
:
'
备注
'
,
prop
:
'
remark
'
,
align
:
'
center
'
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
120
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
120
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
<
span
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
<
span
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
删除
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
systemName
:
""
,
systemName
:
''
},
tableData
:
[],
page
:
1
,
...
...
@@ -154,8 +142,8 @@ export default {
loading
:
false
,
selectRows
:
[],
show
:
false
,
title
:
"
新增
"
,
dict
:
{}
,
// 字典
title
:
'
新增
'
,
dict
:
{}
// 字典
};
},
created
()
{
...
...
@@ -169,7 +157,7 @@ export default {
let
res
=
await
getSystemList
({
page
:
this
.
page
,
size
:
this
.
size
,
systemName
:
`%
${
this
.
searchForm
.
systemName
}
%`
,
systemName
:
`%
${
this
.
searchForm
.
systemName
}
%`
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -186,23 +174,23 @@ export default {
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectRows
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getSystemList
();
},
// 重置
handleReset
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
getSystemList
();
},
// 选中
...
...
@@ -212,24 +200,24 @@ export default {
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
title
=
'
新增
'
;
this
.
$refs
.
AddAreaSystem
.
onAdd
();
this
.
show
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
title
=
'
编辑
'
;
let
data
=
this
.
$cloneDeep
(
row
);
this
.
$refs
.
AddAreaSystem
.
onEdit
(
data
);
this
.
show
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
deleteSystem
({
id
});
...
...
@@ -237,14 +225,14 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getSystemList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/areaSystem/components/AddAreaSystem.vue
View file @
15017fd2
...
...
@@ -9,31 +9,15 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"small"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"small"
label-width=
"100px"
>
<el-form-item
label=
"系统名称"
prop=
"systemName"
>
<el-input
placeholder=
"请输入系统名称"
v-model=
"form.systemName"
></el-input>
<el-input
placeholder=
"请输入系统名称"
v-model=
"form.systemName"
></el-input>
</el-form-item>
<el-form-item
label=
"系统编码"
prop=
"systemCode"
>
<el-input
placeholder=
"请输入系统编码"
v-model=
"form.systemCode"
></el-input>
<el-input
placeholder=
"请输入系统编码"
v-model=
"form.systemCode"
></el-input>
</el-form-item>
<el-form-item
label=
"排序"
prop=
"sort"
>
<el-input-number
v-model=
"form.sort"
controls-position=
"right"
:min=
"0"
></el-input-number>
<el-input-number
v-model=
"form.sort"
controls-position=
"right"
:min=
"0"
></el-input-number>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
...
...
@@ -47,11 +31,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"small"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"small"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"small"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -60,38 +40,34 @@
</
template
>
<
script
>
import
{
saveSystem
}
from
"
@/api/system
"
;
import
{
saveSystem
}
from
'
@/api/system
'
;
export
default
{
components
:
{},
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
}
,
default
:
false
}
},
data
()
{
return
{
loading
:
false
,
form
:
{
systemName
:
""
,
systemCode
:
""
,
systemName
:
''
,
systemCode
:
''
,
sort
:
99
,
remark
:
""
,
remark
:
''
},
rules
:
{
systemName
:
[
{
required
:
true
,
message
:
"
请输入系统名称
"
,
trigger
:
"
blur
"
},
],
systemCode
:
[
{
required
:
true
,
message
:
"
请输入系统编码
"
,
trigger
:
"
blur
"
},
],
},
systemName
:
[{
required
:
true
,
message
:
'
请输入系统名称
'
,
trigger
:
'
blur
'
}],
systemCode
:
[{
required
:
true
,
message
:
'
请输入系统编码
'
,
trigger
:
'
blur
'
}]
}
};
},
computed
:
{
...
...
@@ -100,9 +76,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
// 确定
...
...
@@ -114,7 +90,7 @@ export default {
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -124,7 +100,7 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
...
...
@@ -134,14 +110,14 @@ export default {
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/menu/Menu.vue
View file @
15017fd2
...
...
@@ -2,11 +2,7 @@
<div
class=
"h-full w-full"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:menu:add']"
@
click=
"handleAdd"
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:menu:add']"
@
click=
"handleAdd"
>
新增
</el-button
>
<!--
<el-button
size=
"small"
type=
"danger"
@
click=
"handleDelAll"
...
...
@@ -70,19 +66,14 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddMenu
from
"
./components/AddMenu.vue
"
;
import
{
getMenuList
,
deleteMenu
,
saveMenu
,
changeMenuSort
,
}
from
"
@/api/system
"
;
import
{
buildTree
}
from
"
@/utils
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
AddMenu
from
'
./components/AddMenu.vue
'
;
import
{
getMenuList
,
deleteMenu
,
saveMenu
,
changeMenuSort
}
from
'
@/api/system
'
;
import
{
buildTree
}
from
'
@/utils
'
;
export
default
{
components
:
{
TableHeader
,
AddMenu
,
AddMenu
},
data
()
{
return
{
...
...
@@ -109,55 +100,55 @@ export default {
// align: "center",
// },
{
label
:
"
菜单名称
"
,
prop
:
"
name
"
,
label
:
'
菜单名称
'
,
prop
:
'
name
'
// align: "center",
},
{
label
:
"
ID
"
,
prop
:
"
id
"
,
align
:
"
center
"
,
label
:
'
ID
'
,
prop
:
'
id
'
,
align
:
'
center
'
},
{
label
:
"
图标
"
,
align
:
"
center
"
,
prop
:
"
imgPath
"
,
label
:
'
图标
'
,
align
:
'
center
'
,
prop
:
'
imgPath
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
imgPath
)
{
return
<
i
class
=
{
row
.
imgPath
}
><
/i>
;
}
}
,
}
},
{
label
:
"
权限类型
"
,
prop
:
"
authType
"
,
align
:
"
center
"
,
label
:
'
权限类型
'
,
prop
:
'
authType
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
this
.
dict
.
authType
[
row
.
authType
];
}
,
}
},
{
label
:
"
父ID
"
,
prop
:
"
parentId
"
,
align
:
"
center
"
,
label
:
'
父ID
'
,
prop
:
'
parentId
'
,
align
:
'
center
'
},
{
label
:
"
地址
"
,
prop
:
"
url
"
,
align
:
"
center
"
,
label
:
'
地址
'
,
prop
:
'
url
'
,
align
:
'
center
'
},
{
label
:
"
类型
"
,
prop
:
"
menuType
"
,
align
:
"
center
"
,
label
:
'
类型
'
,
prop
:
'
menuType
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
this
.
dict
.
menuType
[
row
.
menuType
];
}
,
}
},
{
label
:
"
状态
"
,
prop
:
"
status
"
,
align
:
"
center
"
,
label
:
'
状态
'
,
prop
:
'
status
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
switch
...
...
@@ -169,35 +160,35 @@ export default {
}}
><
/el-switch
>
);
}
,
}
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
180
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
180
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex items-center justify-center gap-4
"
>
<
i
v
-
hasPermi
=
{[
"
system:menu:up
"
]}
v
-
hasPermi
=
{[
'
system:menu:up
'
]}
class
=
"
el-icon-top primary cursor-pointer
"
onClick
=
{()
=>
this
.
changeMenuSort
(
row
.
id
,
0
)}
><
/i
>
<
i
v
-
hasPermi
=
{[
"
system:menu:down
"
]}
v
-
hasPermi
=
{[
'
system:menu:down
'
]}
class
=
"
el-icon-bottom primary cursor-pointer
"
onClick
=
{()
=>
this
.
changeMenuSort
(
row
.
id
,
1
)}
><
/i
>
<
span
v
-
hasPermi
=
{[
"
system:menu:edit
"
]}
v
-
hasPermi
=
{[
'
system:menu:edit
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:menu:remove
"
]}
v
-
hasPermi
=
{[
'
system:menu:remove
'
]}
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
...
...
@@ -205,11 +196,11 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
name
:
""
,
name
:
''
},
tableData
:
[],
menuList
:
[],
...
...
@@ -219,9 +210,9 @@ export default {
loading
:
false
,
selectRows
:
[],
show
:
false
,
title
:
"
新增
"
,
title
:
'
新增
'
,
dict
:
{},
// 字典
isAllSelected
:
false
,
isAllSelected
:
false
};
},
created
()
{
...
...
@@ -235,13 +226,13 @@ export default {
this
.
menuList
=
[
{
id
:
0
,
name
:
"
无
"
,
}
,
name
:
'
无
'
}
];
let
res
=
await
getMenuList
({
page
:
this
.
page
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -259,23 +250,23 @@ export default {
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectRows
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getMenuList
();
},
// 重置
handleReset
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
getMenuList
();
},
// 选中
...
...
@@ -285,24 +276,24 @@ export default {
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
title
=
'
新增
'
;
this
.
$refs
.
AddMenu
.
onAdd
();
this
.
show
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
title
=
'
编辑
'
;
let
data
=
this
.
$cloneDeep
(
row
);
this
.
$refs
.
AddMenu
.
onEdit
(
data
);
this
.
show
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
deleteMenu
({
id
});
...
...
@@ -310,11 +301,11 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getMenuList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
},
async
handleStatus
(
row
,
status
)
{
...
...
@@ -330,11 +321,11 @@ export default {
async
changeMenuSort
(
id
,
type
)
{
let
res
=
await
changeMenuSort
({
id
,
type
});
if
(
res
.
data
.
code
==
1
)
{
this
.
$message
.
success
(
"
更改排序成功
"
);
this
.
$message
.
success
(
'
更改排序成功
'
);
this
.
getMenuList
();
}
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/menu/components/AddMenu.vue
View file @
15017fd2
...
...
@@ -9,13 +9,7 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"130px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"130px"
>
<el-form-item
label=
"父级菜单"
prop=
"parentId"
>
<treeselect
v-model=
"form.parentId"
...
...
@@ -27,36 +21,21 @@
</el-form-item>
<el-form-item
label=
"菜单类型"
prop=
"menuType"
>
<el-radio-group
v-model=
"form.menuType"
>
<el-radio
v-for=
"(item, key) in dict.menuType"
:key=
"key"
:label=
"Number(key)"
>
{{
item
}}
</el-radio
>
<el-radio
v-for=
"(item, key) in dict.menuType"
:key=
"key"
:label=
"Number(key)"
>
{{
item
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"菜单名称"
prop=
"name"
>
<el-input
placeholder=
"请输入菜单名称"
v-model=
"form.name"
clearable
></el-input>
<el-input
placeholder=
"请输入菜单名称"
v-model=
"form.name"
clearable
></el-input>
</el-form-item>
<el-form-item
label=
"菜单图标"
prop=
"imgPath"
v-if=
"form.menuType != 2"
>
<IconSelect
v-model=
"form.imgPath"
></IconSelect>
</el-form-item>
<el-form-item
label=
"权限类型"
prop=
"authType"
v-if=
"form.menuType != 2"
>
<el-select
clearable
v-model=
"form.authType"
placeholder=
"请选择权限类型"
>
<el-form-item
label=
"权限类型"
prop=
"authType"
v-if=
"form.menuType != 2"
>
<el-select
clearable
v-model=
"form.authType"
placeholder=
"请选择权限类型"
>
<el-option
v-for=
"(item, key) in dict.authType"
:key=
"key"
...
...
@@ -73,11 +52,7 @@
</el-tooltip>
路由地址
</span>
<el-input
clearable
placeholder=
"请输入菜单路由地址"
v-model=
"form.url"
></el-input>
<el-input
clearable
placeholder=
"请输入菜单路由地址"
v-model=
"form.url"
></el-input>
</el-form-item>
<el-form-item
prop=
"component"
v-if=
"form.menuType != 2"
>
<span
slot=
"label"
>
...
...
@@ -89,11 +64,7 @@
</el-tooltip>
组件路径
</span>
<el-input
clearable
placeholder=
"请输入组件路径"
v-model=
"form.component"
></el-input>
<el-input
clearable
placeholder=
"请输入组件路径"
v-model=
"form.component"
></el-input>
</el-form-item>
<el-form-item
prop=
"activeDir"
v-if=
"form.menuType != 2"
>
<span
slot=
"label"
>
...
...
@@ -102,57 +73,37 @@
</el-tooltip>
激活菜单
</span>
<el-input
clearable
placeholder=
"请输入激活菜单地址"
v-model=
"form.activeDir"
></el-input>
<el-input
clearable
placeholder=
"请输入激活菜单地址"
v-model=
"form.activeDir"
></el-input>
</el-form-item>
<el-form-item
prop=
"perms"
v-if=
"form.menuType == 2"
>
<span
slot=
"label"
>
<el-tooltip
content=
"控制器中定义的权限字符,如:'system:menu:add'"
placement=
"top"
>
<el-tooltip
content=
"控制器中定义的权限字符,如:'system:menu:add'"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
权限字符
</span>
<el-input
clearable
placeholder=
"请输入权限字符"
v-model=
"form.perms"
></el-input>
<el-input
clearable
placeholder=
"请输入权限字符"
v-model=
"form.perms"
></el-input>
</el-form-item>
<el-row>
<el-col
:span=
"12"
v-if=
"form.menuType != 2"
>
<el-form-item
prop=
"visible"
>
<span
slot=
"label"
>
<el-tooltip
content=
"控制路由和子路由是否显示在菜单栏"
placement=
"top"
>
<el-tooltip
content=
"控制路由和子路由是否显示在菜单栏"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
显示状态
</span>
<el-radio-group
v-model=
"form.visible"
>
<el-radio
v-for=
"(item, key) in dict.visible"
:key=
"key"
:label=
"Number(key)"
>
{{
item
}}
</el-radio
>
<el-radio
v-for=
"(item, key) in dict.visible"
:key=
"key"
:label=
"Number(key)"
>
{{
item
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col
:span=
"12"
v-if=
"form.menuType != 2"
>
<el-form-item
prop=
"cache"
>
<span
slot=
"label"
>
<el-tooltip
content=
"选择是则会被`keep-alive`缓存"
placement=
"top"
>
<el-tooltip
content=
"选择是则会被`keep-alive`缓存"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
是否缓存
...
...
@@ -168,10 +119,7 @@
<el-col
:span=
"12"
v-if=
"form.menuType != 2"
>
<el-form-item
prop=
"hideChildrenInMenu"
>
<span
slot=
"label"
>
<el-tooltip
content=
"强制菜单显示为Item而不是SubItem"
placement=
"top"
>
<el-tooltip
content=
"强制菜单显示为Item而不是SubItem"
placement=
"top"
>
<i
class=
"el-icon-question"
></i>
</el-tooltip>
是否隐藏子菜单
...
...
@@ -185,12 +133,9 @@
<el-col
:span=
"12"
>
<el-form-item
label=
"菜单状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
<el-radio
v-for=
"(item, key) in dict.status"
:key=
"key"
:label=
"Number(key)"
>
{{
item
}}
</el-radio
>
<el-radio
v-for=
"(item, key) in dict.status"
:key=
"key"
:label=
"Number(key)"
>
{{
item
}}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
...
...
@@ -198,11 +143,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -211,80 +152,74 @@
</
template
>
<
script
>
import
{
saveMenu
}
from
"
@/api/system
"
;
import
IconSelect
from
"
./IconSelect.vue
"
;
import
iconJson
from
"
@/assets/icon.json
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
"
@riophae/vue-treeselect/dist/vue-treeselect.css
"
;
import
{
saveMenu
}
from
'
@/api/system
'
;
import
IconSelect
from
'
./IconSelect.vue
'
;
import
iconJson
from
'
@/assets/icon.json
'
;
import
Treeselect
from
'
@riophae/vue-treeselect
'
;
import
'
@riophae/vue-treeselect/dist/vue-treeselect.css
'
;
export
default
{
components
:
{
IconSelect
,
Treeselect
,
Treeselect
},
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
default
:
false
},
menuList
:
{
required
:
true
,
type
:
Array
,
default
:
()
=>
[]
,
default
:
()
=>
[]
},
dict
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{}
,
}
,
default
:
()
=>
{}
}
},
data
()
{
return
{
iconJson
,
loading
:
false
,
defaultProps
:
{
children
:
"
childList
"
,
label
:
"
name
"
,
children
:
'
childList
'
,
label
:
'
name
'
},
form
:
{
name
:
""
,
// 菜单名称
url
:
""
,
// 路由地址
ancestors
:
""
,
// 当前激活根目录
name
:
''
,
// 菜单名称
url
:
''
,
// 路由地址
ancestors
:
''
,
// 当前激活根目录
parentId
:
0
,
// 父菜单ID,一级菜单的该字段值为-1
linkType
:
0
,
// 链接方式 (0.普通,1.弹出,2.脚本)
imgPath
:
""
,
// 主菜单图标,主菜单图标的css样式名
buttonImgPath
:
""
,
// 按钮图标,按钮图标的css样式名
imgCommPath
:
""
,
// 常用菜单图标,常用菜单图标的css样式名
imgPath
:
''
,
// 主菜单图标,主菜单图标的css样式名
buttonImgPath
:
''
,
// 按钮图标,按钮图标的css样式名
imgCommPath
:
''
,
// 常用菜单图标,常用菜单图标的css样式名
commMenu
:
1
,
// 是否常用菜单 (0.非常用,1.常用)
component
:
""
,
// vue组件路径
component
:
''
,
// vue组件路径
menuType
:
0
,
// 菜单类型 (0.目录,1.菜单,2.按钮)
authType
:
0
,
// 权限类型 (0.无限制,1.无需登录查看,2.需要登录查看,3.需要角色权限查看)
visible
:
0
,
// 菜单显示状态 (0.显示,1.隐藏)
perms
:
""
,
// 权限标识,多个逗号分割
remark
:
""
,
// 备注信息
orderId
:
""
,
// 排序编号
perms
:
''
,
// 权限标识,多个逗号分割
remark
:
''
,
// 备注信息
orderId
:
''
,
// 排序编号
status
:
1
,
// 菜单状态 (0.停用,1.启用)
cache
:
0
,
// 是否缓存
activeDir
:
""
,
// 激活菜单
hideChildrenInMenu
:
1
,
// 是否隐藏子菜单
activeDir
:
''
,
// 激活菜单
hideChildrenInMenu
:
1
// 是否隐藏子菜单
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入菜单名称
"
,
trigger
:
"
blur
"
}],
url
:
[
{
required
:
true
,
message
:
"
请输入菜单访问地址
"
,
trigger
:
"
blur
"
},
],
component
:
[
{
required
:
true
,
message
:
"
请输入组件路径
"
,
trigger
:
"
blur
"
},
],
authType
:
[
{
required
:
true
,
message
:
"
请输入选择权限类型
"
,
trigger
:
"
change
"
},
],
},
name
:
[{
required
:
true
,
message
:
'
请输入菜单名称
'
,
trigger
:
'
blur
'
}],
url
:
[{
required
:
true
,
message
:
'
请输入菜单访问地址
'
,
trigger
:
'
blur
'
}],
component
:
[{
required
:
true
,
message
:
'
请输入组件路径
'
,
trigger
:
'
blur
'
}],
authType
:
[{
required
:
true
,
message
:
'
请输入选择权限类型
'
,
trigger
:
'
change
'
}]
}
};
},
computed
:
{
...
...
@@ -293,9 +228,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
// 确定
...
...
@@ -307,7 +242,7 @@ export default {
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -317,7 +252,7 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
...
...
@@ -327,11 +262,11 @@ export default {
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
},
/** 转换菜单数据结构 */
...
...
@@ -342,13 +277,13 @@ export default {
return
{
id
:
node
.
id
,
label
:
node
.
name
,
children
:
node
.
childList
,
children
:
node
.
childList
};
},
changeParent
(
row
)
{
console
.
log
(
row
);
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/menu/components/IconSelect.vue
View file @
15017fd2
<
template
>
<el-popover
placement=
"bottom-start"
trigger=
"click"
width=
"100%"
>
<div
class=
"content grid max-h-[300px] w-full grid-cols-2 gap-x-4 gap-y-2 overflow-auto"
>
<div
class=
"content grid max-h-[300px] w-full grid-cols-2 gap-x-4 gap-y-2 overflow-auto"
>
<div
v-for=
"(v, i) in iconJson"
:key=
"i"
>
<div
:class=
"[
'flex',
'cursor-pointer',
'items-center',
'gap-4',
{ active: v === value },
]"
:class=
"['flex', 'cursor-pointer', 'items-center', 'gap-4',
{ active: v === value }]"
@click="handleChange(v)"
>
<i
:class=
"v"
></i>
...
...
@@ -34,32 +26,32 @@
</
template
>
<
script
>
import
iconJson
from
"
@/assets/icon.json
"
;
import
iconJson
from
'
@/assets/icon.json
'
;
export
default
{
model
:
{
prop
:
"
value
"
,
event
:
"
change
"
,
prop
:
'
value
'
,
event
:
'
change
'
},
props
:
{
value
:
{
type
:
String
,
default
:
""
,
default
:
''
},
placeholder
:
{
type
:
String
,
default
:
"
点击选择图标
"
,
}
,
default
:
'
点击选择图标
'
}
},
data
()
{
return
{
iconJson
,
iconJson
};
},
methods
:
{
handleChange
(
v
)
{
this
.
$emit
(
"
change
"
,
v
);
}
,
}
,
this
.
$emit
(
'
change
'
,
v
);
}
}
};
</
script
>
...
...
admin_2/src/pages/system/parameter/Parameter.vue
View file @
15017fd2
...
...
@@ -20,11 +20,7 @@
<div
slot=
"right"
v-hasPermi=
"['system:parameter:query']"
>
<el-form
ref=
"searchForm"
:model=
"searchForm"
inline
>
<el-form-item
prop=
"type"
>
<el-select
size=
"small"
style=
"width: 150px"
v-model=
"searchForm.type"
>
<el-select
size=
"small"
style=
"width: 150px"
v-model=
"searchForm.type"
>
<el-option
label=
"按参数名称"
value=
"name"
></el-option>
<el-option
label=
"按二级组织"
value=
"secondOrganize"
></el-option>
</el-select>
...
...
@@ -40,9 +36,7 @@
></el-input>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
...
...
@@ -82,63 +76,63 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddParameter
from
"
./components/AddParameter.vue
"
;
import
{
getParamList
,
delParam
}
from
"
@/api/system
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
AddParameter
from
'
./components/AddParameter.vue
'
;
import
{
getParamList
,
delParam
}
from
'
@/api/system
'
;
export
default
{
components
:
{
TableHeader
,
AddParameter
,
AddParameter
},
data
()
{
return
{
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
参数名称
"
,
prop
:
"
name
"
,
align
:
"
center
"
,
label
:
'
参数名称
'
,
prop
:
'
name
'
,
align
:
'
center
'
},
{
label
:
"
一级组织
"
,
prop
:
"
firstOrganize
"
,
align
:
"
center
"
,
label
:
'
一级组织
'
,
prop
:
'
firstOrganize
'
,
align
:
'
center
'
},
{
label
:
"
二级组织
"
,
prop
:
"
secondOrganize
"
,
align
:
"
center
"
,
label
:
'
二级组织
'
,
prop
:
'
secondOrganize
'
,
align
:
'
center
'
},
{
label
:
"
参数键
"
,
prop
:
"
paramKey
"
,
align
:
"
center
"
,
label
:
'
参数键
'
,
prop
:
'
paramKey
'
,
align
:
'
center
'
},
{
label
:
"
参数值
"
,
prop
:
"
paramValue
"
,
align
:
"
center
"
,
label
:
'
参数值
'
,
prop
:
'
paramValue
'
,
align
:
'
center
'
},
{
label
:
"
参数有效状态
"
,
prop
:
"
validStatus
"
,
align
:
"
center
"
,
label
:
'
参数有效状态
'
,
prop
:
'
validStatus
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
this
.
dict
.
validStatus
)
{
return
(
...
...
@@ -147,29 +141,29 @@ export default {
<
/el-tag
>
);
}
}
,
}
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
,
align
:
"
center
"
,
label
:
'
备注
'
,
prop
:
'
remark
'
,
align
:
'
center
'
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
120
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
120
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
v
-
hasPermi
=
{[
"
system:parameter:edit
"
]}
v
-
hasPermi
=
{[
'
system:parameter:edit
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:parameter:remove
"
]}
v
-
hasPermi
=
{[
'
system:parameter:remove
'
]}
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
...
...
@@ -177,12 +171,12 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
type
:
"
name
"
,
keyword
:
""
,
type
:
'
name
'
,
keyword
:
''
},
tableData
:
[],
page
:
1
,
...
...
@@ -191,8 +185,8 @@ export default {
loading
:
false
,
selectKeys
:
[],
addVisible
:
false
,
title
:
"
新增参数
"
,
dict
:
{}
,
// 字典
title
:
'
新增参数
'
,
dict
:
{}
// 字典
};
},
created
()
{
...
...
@@ -204,7 +198,7 @@ export default {
this
.
loading
=
true
;
let
form
=
{};
let
value
=
`%
${
this
.
searchForm
.
keyword
}
%`
;
if
(
this
.
searchForm
.
type
==
"
name
"
)
{
if
(
this
.
searchForm
.
type
==
'
name
'
)
{
form
.
name
=
value
;
}
else
{
form
.
secondOrganize
=
value
;
...
...
@@ -212,7 +206,7 @@ export default {
let
res
=
await
getParamList
({
page
:
this
.
page
,
size
:
this
.
size
,
...
form
,
...
form
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
...
...
@@ -230,23 +224,23 @@ export default {
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectKeys
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectKeys
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectKeys
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getParamList
();
},
// 重置
handleReset
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
getParamList
();
},
// 选中
...
...
@@ -256,23 +250,23 @@ export default {
// 新增
handleAdd
()
{
this
.
title
=
"
新增参数
"
;
this
.
title
=
'
新增参数
'
;
this
.
$refs
.
AddParameter
.
onAdd
();
this
.
addVisible
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑参数
"
;
this
.
title
=
'
编辑参数
'
;
this
.
$refs
.
AddParameter
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
delParam
({
id
});
...
...
@@ -280,14 +274,14 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getParamList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/parameter/components/AddParameter.vue
View file @
15017fd2
...
...
@@ -9,39 +9,21 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
size=
"medium"
:model=
"form"
:rules=
"rules"
label-width=
"100px"
>
<el-form
ref=
"form"
size=
"medium"
:model=
"form"
:rules=
"rules"
label-width=
"100px"
>
<el-form-item
label=
"参数名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入参数名称"
></el-input>
</el-form-item>
<el-form-item
label=
"一级组织"
prop=
"firstOrganize"
>
<el-input
v-model=
"form.firstOrganize"
placeholder=
"请输入一级组织"
></el-input>
<el-input
v-model=
"form.firstOrganize"
placeholder=
"请输入一级组织"
></el-input>
</el-form-item>
<el-form-item
label=
"二级组织"
prop=
"secondOrganize"
>
<el-input
v-model=
"form.secondOrganize"
placeholder=
"请输入二级组织"
></el-input>
<el-input
v-model=
"form.secondOrganize"
placeholder=
"请输入二级组织"
></el-input>
</el-form-item>
<el-form-item
label=
"参数键"
prop=
"paramKey"
>
<el-input
v-model=
"form.paramKey"
placeholder=
"请输入参数键"
></el-input>
<el-input
v-model=
"form.paramKey"
placeholder=
"请输入参数键"
></el-input>
</el-form-item>
<el-form-item
label=
"参数值"
prop=
"paramValue"
>
<el-input
v-model=
"form.paramValue"
placeholder=
"请输入参数值"
></el-input>
<el-input
v-model=
"form.paramValue"
placeholder=
"请输入参数值"
></el-input>
</el-form-item>
<el-form-item
label=
"参数修改状态"
prop=
"modStatus"
>
<el-select
v-model=
"form.modStatus"
placeholder=
"请选择参数有效状态"
>
...
...
@@ -67,11 +49,7 @@
</el-form-item>
<el-form-item
label=
"参数有效状态"
prop=
"validStatus"
>
<el-radio-group
v-model=
"form.validStatus"
>
<el-radio
v-for=
"(v, key) in dict.validStatus"
:key=
"key"
:label=
"Number(key)"
>
<el-radio
v-for=
"(v, key) in dict.validStatus"
:key=
"key"
:label=
"Number(key)"
>
{{
v
}}
</el-radio>
</el-radio-group>
...
...
@@ -88,11 +66,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -101,50 +75,46 @@
</
template
>
<
script
>
import
{
saveParam
}
from
"
@/api/system
"
;
import
{
saveParam
}
from
'
@/api/system
'
;
export
default
{
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
default
:
false
},
dict
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
{
return
{};
}
,
}
,
}
}
},
data
()
{
return
{
loading
:
false
,
form
:
{
name
:
""
,
// 参数名称
firstOrganize
:
""
,
// 一级组织
secondOrganize
:
""
,
// 二级组织
paramKey
:
""
,
// 参数键
paramValue
:
""
,
// 参数值
modStatus
:
""
,
// 参数修改状态
displayType
:
""
,
// 展现类型
name
:
''
,
// 参数名称
firstOrganize
:
''
,
// 一级组织
secondOrganize
:
''
,
// 二级组织
paramKey
:
''
,
// 参数键
paramValue
:
''
,
// 参数值
modStatus
:
''
,
// 参数修改状态
displayType
:
''
,
// 展现类型
validStatus
:
1
,
// 参数有效状态
remark
:
""
,
// 备注
remark
:
''
// 备注
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入参数名称
"
,
trigger
:
"
blur
"
}],
paramKey
:
[
{
required
:
true
,
message
:
"
请输入参数键
"
,
trigger
:
"
blur
"
},
],
paramValue
:
[
{
required
:
true
,
message
:
"
请输入参数值
"
,
trigger
:
"
blur
"
},
],
},
name
:
[{
required
:
true
,
message
:
'
请输入参数名称
'
,
trigger
:
'
blur
'
}],
paramKey
:
[{
required
:
true
,
message
:
'
请输入参数键
'
,
trigger
:
'
blur
'
}],
paramValue
:
[{
required
:
true
,
message
:
'
请输入参数值
'
,
trigger
:
'
blur
'
}]
}
};
},
computed
:
{
...
...
@@ -153,9 +123,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
// 确定
...
...
@@ -167,7 +137,7 @@ export default {
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -177,7 +147,7 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
...
...
@@ -187,14 +157,14 @@ export default {
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/resourceManage/ResourceManage.vue
View file @
15017fd2
...
...
@@ -20,11 +20,7 @@
<div
slot=
"right"
v-hasPermi=
"['system:resourcemanage:query']"
>
<el-form
ref=
"searchForm"
:model=
"searchForm"
inline
>
<el-form-item
prop=
"authType"
>
<el-select
size=
"small"
style=
"width: 150px"
v-model=
"searchForm.authType"
>
<el-select
size=
"small"
style=
"width: 150px"
v-model=
"searchForm.authType"
>
<el-option
label=
"全部认证类型"
value=
""
></el-option>
<el-option
v-for=
"(v, key) in dict.authType"
...
...
@@ -45,9 +41,7 @@
></el-input>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
...
...
@@ -86,55 +80,55 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getResourceList
,
deleteResource
}
from
"
@/api/system
"
;
import
AddResource
from
"
./components/AddResource.vue
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
{
getResourceList
,
deleteResource
}
from
'
@/api/system
'
;
import
AddResource
from
'
./components/AddResource.vue
'
;
export
default
{
components
:
{
TableHeader
,
AddResource
,
AddResource
},
data
()
{
return
{
loading
:
false
,
show
:
false
,
title
:
"
新增资源
"
,
title
:
'
新增资源
'
,
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
所属分组
"
,
prop
:
"
groupName
"
,
align
:
"
center
"
,
label
:
'
所属分组
'
,
prop
:
'
groupName
'
,
align
:
'
center
'
},
{
label
:
"
名称
"
,
prop
:
"
name
"
,
align
:
"
center
"
,
label
:
'
名称
'
,
prop
:
'
name
'
,
align
:
'
center
'
},
{
label
:
"
资源
"
,
prop
:
"
url
"
,
align
:
"
center
"
,
label
:
'
资源
'
,
prop
:
'
url
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
url
)
{
return
row
.
url
.
split
(
"
,
"
).
map
((
v
)
=>
{
return
row
.
url
.
split
(
'
,
'
).
map
((
v
)
=>
{
return
(
<
el
-
tag
class
=
"
mb-2 mr-2
"
type
=
"
info
"
size
=
"
mini
"
>
{
v
}
...
...
@@ -142,32 +136,32 @@ export default {
);
});
}
}
,
}
},
{
label
:
"
认证类型
"
,
prop
:
"
authType
"
,
align
:
"
center
"
,
label
:
'
认证类型
'
,
prop
:
'
authType
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
this
.
dict
.
authType
[
row
.
authType
];
}
,
}
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
120
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
120
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
v
-
hasPermi
=
{[
"
system:resourcemanage:edit
"
]}
v
-
hasPermi
=
{[
'
system:resourcemanage:edit
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:resourcemanage:remove
"
]}
v
-
hasPermi
=
{[
'
system:resourcemanage:remove
'
]}
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
...
...
@@ -175,19 +169,19 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
authType
:
""
,
name
:
""
,
authType
:
''
,
name
:
''
},
total
:
0
,
size
:
10
,
page
:
1
,
tableData
:
[],
selectionRows
:
[],
dict
:
{}
,
dict
:
{}
};
},
created
()
{
...
...
@@ -201,7 +195,7 @@ export default {
page
:
this
.
page
,
size
:
this
.
size
,
...
this
.
searchForm
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -216,7 +210,7 @@ export default {
}
},
handleAdd
()
{
this
.
title
=
"
新增资源
"
;
this
.
title
=
'
新增资源
'
;
this
.
$refs
.
AddResource
.
onAdd
();
this
.
show
=
true
;
},
...
...
@@ -225,10 +219,10 @@ export default {
},
handleDelAll
()
{
if
(
!
this
.
selectionRows
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectionRows
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectionRows
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
handleSearch
()
{
...
...
@@ -237,23 +231,23 @@ export default {
},
handleReset
()
{
this
.
page
=
1
;
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getResourceList
();
},
handleEdit
(
row
)
{
let
data
=
this
.
$cloneDeep
(
row
);
this
.
title
=
"
编辑资源
"
;
this
.
title
=
'
编辑资源
'
;
this
.
$refs
.
AddResource
.
onEdit
(
data
);
this
.
show
=
true
;
},
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
deleteResource
({
id
});
...
...
@@ -261,14 +255,14 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getResourceList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/resourceManage/components/AddResource.vue
View file @
15017fd2
...
...
@@ -9,13 +9,7 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form-item
label=
"资源名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入资源名称"
></el-input>
</el-form-item>
...
...
@@ -35,23 +29,14 @@
v-for=
"(v, i) in form.urls"
:key=
"i"
:prop=
"`urls.$
{i}.value`"
:rules="[
{ required: true, validator: validatorUrl, trigger: 'blur' },
]"
:rules="[{ required: true, validator: validatorUrl, trigger: 'blur' }]"
>
<el-input
class=
"mr-[10px]"
v-model=
"v.value"
placeholder=
"请输入链接地址"
/>
<el-input
class=
"mr-[10px]"
v-model=
"v.value"
placeholder=
"请输入链接地址"
/>
<div
class=
"flex"
>
<el-button
type=
"primary"
@
click=
"changeParams(i, 'add')"
>
<i
class=
"el-icon-plus"
></i>
</el-button>
<el-button
type=
"danger"
v-if=
"i > 0"
@
click=
"changeParams(i, 'remove')"
<el-button
type=
"danger"
v-if=
"i > 0"
@
click=
"changeParams(i, 'remove')"
><i
class=
"el-icon-minus"
></i
></el-button>
</div>
...
...
@@ -60,11 +45,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
@
click=
"handleOk"
:loading=
"loading"
<el-button
size=
"medium"
type=
"primary"
@
click=
"handleOk"
:loading=
"loading"
>
确 定
</el-button
>
</span>
...
...
@@ -73,46 +54,44 @@
</
template
>
<
script
>
import
{
saveResource
}
from
"
@/api/system
"
;
import
{
saveResource
}
from
'
@/api/system
'
;
export
default
{
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
default
:
false
},
dict
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
{
return
{};
}
,
}
,
}
}
},
data
()
{
return
{
loading
:
false
,
form
:
{
name
:
""
,
authType
:
""
,
url
:
""
,
name
:
''
,
authType
:
''
,
url
:
''
,
urls
:
[
{
value
:
""
,
}
,
]
,
value
:
''
}
]
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入资源名称
"
,
trigger
:
"
blur
"
}],
authType
:
[
{
required
:
true
,
message
:
"
请选择权限类型
"
,
trigger
:
"
change
"
},
],
},
name
:
[{
required
:
true
,
message
:
'
请输入资源名称
'
,
trigger
:
'
blur
'
}],
authType
:
[{
required
:
true
,
message
:
'
请选择权限类型
'
,
trigger
:
'
change
'
}]
}
};
},
computed
:
{
...
...
@@ -121,9 +100,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
created
()
{},
methods
:
{
...
...
@@ -134,12 +113,12 @@ export default {
this
.
loading
=
true
;
let
res
=
await
saveResource
({
...
this
.
form
,
url
:
this
.
form
.
urls
.
map
((
v
)
=>
v
.
value
).
join
(
"
,
"
),
url
:
this
.
form
.
urls
.
map
((
v
)
=>
v
.
value
).
join
(
'
,
'
)
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -149,7 +128,7 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
...
...
@@ -157,23 +136,23 @@ export default {
this
.
form
=
{
...
row
};
let
arr
=
[];
if
(
this
.
form
.
url
)
{
arr
=
this
.
form
.
url
.
split
(
"
,
"
).
map
((
v
)
=>
{
arr
=
this
.
form
.
url
.
split
(
'
,
'
).
map
((
v
)
=>
{
return
{
value
:
v
,
value
:
v
};
});
}
this
.
$set
(
this
.
form
,
"
urls
"
,
arr
);
this
.
$set
(
this
.
form
,
'
urls
'
,
arr
);
},
10
);
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$set
(
this
.
form
,
"
urls
"
,
[{
value
:
""
}]);
this
.
$resetForm
(
'
form
'
);
this
.
$set
(
this
.
form
,
'
urls
'
,
[{
value
:
''
}]);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
},
// 判断是否存在链接
...
...
@@ -183,20 +162,20 @@ export default {
// 校验链接地址
validatorUrl
(
rule
,
value
,
callback
)
{
if
(
!
value
)
{
callback
(
new
Error
(
"
请输入链接
"
));
callback
(
new
Error
(
'
请输入链接
'
));
}
else
if
(
this
.
isRepeat
(
value
))
{
callback
(
new
Error
(
"
重复的链接地址
"
));
callback
(
new
Error
(
'
重复的链接地址
'
));
}
else
{
callback
();
}
},
changeParams
(
index
,
type
)
{
if
(
type
==
"
add
"
)
{
if
(
type
==
'
add
'
)
{
let
obj
=
{
value
:
""
,
value
:
''
};
if
(
this
.
form
.
urls
.
some
((
v
)
=>
!
v
.
value
))
{
this
.
$message
.
warning
(
"
请先完成前面地址的填写
"
);
this
.
$message
.
warning
(
'
请先完成前面地址的填写
'
);
return
;
}
this
.
form
.
urls
.
splice
(
index
+
1
,
0
,
obj
);
...
...
@@ -204,8 +183,8 @@ export default {
this
.
form
.
urls
.
splice
(
index
,
1
);
}
// this.$forceUpdate();
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/role/Role.vue
View file @
15017fd2
...
...
@@ -2,11 +2,7 @@
<div
class=
"h-full w-full"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:role:add']"
@
click=
"handleAdd"
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:role:add']"
@
click=
"handleAdd"
>
新增
</el-button
>
<el-button
...
...
@@ -30,9 +26,7 @@
></el-input>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
</el-form-item>
<el-form-item>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
...
...
@@ -61,18 +55,9 @@
@
change=
"getRoleList"
></Pagination>
<!-- 新增 -->
<AddRole
ref=
"AddRole"
:show.sync=
"show"
:title=
"title"
@
success=
"getRoleList"
></AddRole>
<AddRole
ref=
"AddRole"
:show.sync=
"show"
:title=
"title"
@
success=
"getRoleList"
></AddRole>
<!-- 分配资源 -->
<ApportionRes
ref=
"ApportionRes"
:show.sync=
"resShow"
@
success=
"getRoleList"
></ApportionRes>
<ApportionRes
ref=
"ApportionRes"
:show.sync=
"resShow"
@
success=
"getRoleList"
></ApportionRes>
<!-- 分配菜单 -->
<ApportionMenu
ref=
"ApportionMenu"
...
...
@@ -85,85 +70,85 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getRoleList
,
deleteRole
,
getMenuTreeselect
}
from
"
@/api/system
"
;
import
AddRole
from
"
./components/AddRole.vue
"
;
import
ApportionRes
from
"
./components/ApportionRes.vue
"
;
import
ApportionMenu
from
"
./components/ApportionMenu.vue
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
{
getRoleList
,
deleteRole
,
getMenuTreeselect
}
from
'
@/api/system
'
;
import
AddRole
from
'
./components/AddRole.vue
'
;
import
ApportionRes
from
'
./components/ApportionRes.vue
'
;
import
ApportionMenu
from
'
./components/ApportionMenu.vue
'
;
export
default
{
components
:
{
TableHeader
,
AddRole
,
ApportionRes
,
ApportionMenu
,
ApportionMenu
},
data
()
{
return
{
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
角色名称
"
,
prop
:
"
name
"
,
align
:
"
center
"
,
label
:
'
角色名称
'
,
prop
:
'
name
'
,
align
:
'
center
'
},
{
label
:
"
备注
"
,
prop
:
"
remark
"
,
align
:
"
center
"
,
label
:
'
备注
'
,
prop
:
'
remark
'
,
align
:
'
center
'
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
align
:
"
center
"
,
label
:
'
创建时间
'
,
prop
:
'
createTime
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
this
.
$moment
(
row
.
createTime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
}
,
return
this
.
$moment
(
row
.
createTime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
}
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
260
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
260
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
v
-
hasPermi
=
{[
"
system:role:roleRes
"
]}
v
-
hasPermi
=
{[
'
system:role:roleRes
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
apportion
(
row
)}
>
分配资源
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:role:roleMenu
"
]}
v
-
hasPermi
=
{[
'
system:role:roleMenu
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
apportionMenu
(
row
)}
>
分配菜单
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:role:edit
"
]}
v
-
hasPermi
=
{[
'
system:role:edit
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:role:remove
"
]}
v
-
hasPermi
=
{[
'
system:role:remove
'
]}
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
...
...
@@ -171,11 +156,11 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
name
:
""
,
name
:
''
},
tableData
:
[],
menuTree
:
[],
// 菜单树
...
...
@@ -186,10 +171,10 @@ export default {
selectRows
:
[],
show
:
false
,
menuShow
:
false
,
title
:
"
新增
"
,
title
:
'
新增
'
,
dict
:
{},
// 字典
resShow
:
false
,
roleInfo
:
{}
,
roleInfo
:
{}
};
},
created
()
{
...
...
@@ -202,7 +187,7 @@ export default {
async
getMenuTreeselect
()
{
let
res
=
await
getMenuTreeselect
({
page
:
1
,
size
:
-
1
,
size
:
-
1
});
if
(
res
.
data
.
code
==
1
)
{
let
{
result
}
=
res
.
data
.
data
;
...
...
@@ -214,7 +199,7 @@ export default {
let
res
=
await
getRoleList
({
page
:
this
.
page
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
,
name
:
`%
${
this
.
searchForm
.
name
}
%`
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -231,23 +216,23 @@ export default {
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectRows
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectRows
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getRoleList
();
},
// 重置
handleReset
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
getRoleList
();
},
// 选中
...
...
@@ -257,24 +242,24 @@ export default {
// 新增
handleAdd
()
{
this
.
title
=
"
新增
"
;
this
.
title
=
'
新增
'
;
this
.
$refs
.
AddRole
.
onAdd
();
this
.
show
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑
"
;
this
.
title
=
'
编辑
'
;
let
data
=
this
.
$cloneDeep
(
row
);
this
.
$refs
.
AddRole
.
onEdit
(
data
);
this
.
show
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
deleteRole
({
id
});
...
...
@@ -282,11 +267,11 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getRoleList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
},
// 分配资源
...
...
@@ -299,8 +284,8 @@ export default {
this
.
roleInfo
=
row
;
this
.
$refs
.
ApportionMenu
.
onAdd
(
row
);
this
.
menuShow
=
true
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/role/components/AddRole.vue
View file @
15017fd2
...
...
@@ -9,13 +9,7 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form-item
label=
"角色名称"
prop=
"name"
>
<el-input
placeholder=
"请输入角色名称"
v-model=
"form.name"
></el-input>
</el-form-item>
...
...
@@ -31,11 +25,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -44,31 +34,31 @@
</
template
>
<
script
>
import
{
addRole
}
from
"
@/api/system
"
;
import
{
addRole
}
from
'
@/api/system
'
;
export
default
{
components
:
{},
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
}
,
default
:
false
}
},
data
()
{
return
{
loading
:
false
,
form
:
{
name
:
""
,
remark
:
""
,
name
:
''
,
remark
:
''
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入角色名称
"
,
trigger
:
"
blur
"
}],
}
,
name
:
[{
required
:
true
,
message
:
'
请输入角色名称
'
,
trigger
:
'
blur
'
}]
}
};
},
computed
:
{
...
...
@@ -77,9 +67,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
// 确定
...
...
@@ -91,7 +81,7 @@ export default {
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -101,7 +91,7 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
...
...
@@ -111,14 +101,14 @@ export default {
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/role/components/ApportionMenu.vue
View file @
15017fd2
...
...
@@ -14,9 +14,7 @@
<el-input
readonly
:value=
"roleInfo.name"
></el-input>
</el-form-item>
<el-form-item
label=
"菜单权限"
>
<el-checkbox
v-model=
"isExpand"
@
change=
"handleCheckedTreeExpand"
>
展开/折叠
</el-checkbox
>
<el-checkbox
v-model=
"isExpand"
@
change=
"handleCheckedTreeExpand"
>
展开/折叠
</el-checkbox>
<el-checkbox
v-model=
"isNodeAll"
@
change=
"handleCheckedTreeNodeAll"
>
全选/全不选
</el-checkbox
>
...
...
@@ -35,11 +33,7 @@
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
:loading=
"loading"
type=
"primary"
@
click=
"handleOk"
<el-button
size=
"medium"
:loading=
"loading"
type=
"primary"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -48,25 +42,25 @@
</
template
>
<
script
>
import
{
addRoleMenu
,
getRoleMenuList
}
from
"
@/api/system
"
;
import
{
addRoleMenu
,
getRoleMenuList
}
from
'
@/api/system
'
;
export
default
{
components
:
{},
props
:
{
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
default
:
false
},
roleInfo
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
{}
,
default
:
()
=>
{}
},
menuTree
:
{
type
:
Array
,
required
:
true
,
default
:
()
=>
[]
,
}
,
default
:
()
=>
[]
}
},
data
()
{
return
{
...
...
@@ -77,13 +71,13 @@ export default {
isNodeAll
:
false
,
checkStrictly
:
true
,
defaultProps
:
{
label
:
"
label
"
,
children
:
"
children
"
,
label
:
'
label
'
,
children
:
'
children
'
},
form
:
{
menuIdList
:
[],
roleId
:
""
,
}
,
roleId
:
''
}
};
},
computed
:
{
...
...
@@ -92,9 +86,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
// 获取角色菜单列表
...
...
@@ -102,7 +96,7 @@ export default {
let
res
=
await
getRoleMenuList
({
roleId
:
this
.
form
.
roleId
,
page
:
1
,
size
:
-
1
,
size
:
-
1
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
;
...
...
@@ -119,12 +113,12 @@ export default {
this
.
loading
=
true
;
let
res
=
await
addRoleMenu
({
roleId
:
this
.
form
.
roleId
,
menuIdList
:
this
.
getMenuAllCheckedKeys
()
,
menuIdList
:
this
.
getMenuAllCheckedKeys
()
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
||
"
添加成功
"
);
this
.
$emit
(
"
success
"
);
this
.
$message
.
success
(
msg
||
'
添加成功
'
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -178,8 +172,8 @@ export default {
};
getData
(
data
);
return
result
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/role/components/ApportionRes.vue
View file @
15017fd2
...
...
@@ -19,10 +19,7 @@
>
全选
</el-checkbox
>
</div>
<el-checkbox-group
v-model=
"form.resourceIdList"
@
change=
"onChange($event, v)"
>
<el-checkbox-group
v-model=
"form.resourceIdList"
@
change=
"onChange($event, v)"
>
<el-row>
<el-col
:span=
"6"
v-for=
"item in v.list"
:key=
"item.id"
>
<el-checkbox
:label=
"item.id"
>
{{
item
.
name
}}
</el-checkbox>
...
...
@@ -32,11 +29,7 @@
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -45,19 +38,15 @@
</
template
>
<
script
>
import
{
getRoleResourceList
,
addRoleResource
,
getResourceGroup
,
}
from
"
@/api/system
"
;
import
{
getRoleResourceList
,
addRoleResource
,
getResourceGroup
}
from
'
@/api/system
'
;
export
default
{
components
:
{},
props
:
{
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
}
,
default
:
false
}
},
data
()
{
return
{
...
...
@@ -66,8 +55,8 @@ export default {
userResourceList
:
[],
// 用户资源列表
form
:
{
resourceIdList
:
[],
roleId
:
""
,
}
,
roleId
:
''
}
};
},
computed
:
{
...
...
@@ -76,16 +65,16 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
methods
:
{
// 获取资源分组
async
getResourceGroup
()
{
let
res
=
await
getResourceGroup
({
page
:
1
,
size
:
-
1
,
size
:
-
1
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -99,7 +88,7 @@ export default {
let
res
=
await
getRoleResourceList
({
size
:
-
1
,
page
:
1
,
roleId
,
roleId
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -131,7 +120,7 @@ export default {
group
[
key
]
=
{
isIndeterminate
:
false
,
checkAll
:
false
,
list
:
[]
,
list
:
[]
};
group
[
key
].
list
.
push
(...
data
[
key
]);
});
...
...
@@ -144,8 +133,8 @@ export default {
let
res
=
await
addRoleResource
(
this
.
form
);
let
{
code
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
"
添加成功
"
);
this
.
$emit
(
"
success
"
);
this
.
$message
.
success
(
'
添加成功
'
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -175,9 +164,7 @@ export default {
let
rowIds
=
row
.
list
.
map
((
v
)
=>
v
.
id
);
row
.
isIndeterminate
=
false
;
if
(
checked
)
{
this
.
form
.
resourceIdList
=
[
...
new
Set
([...
this
.
form
.
resourceIdList
,
...
rowIds
]),
];
this
.
form
.
resourceIdList
=
[...
new
Set
([...
this
.
form
.
resourceIdList
,
...
rowIds
])];
}
else
{
this
.
form
.
resourceIdList
=
this
.
form
.
resourceIdList
.
filter
((
v
)
=>
{
return
!
rowIds
.
includes
(
v
);
...
...
@@ -191,8 +178,8 @@ export default {
});
row
.
isIndeterminate
=
!!
list
.
length
&&
list
.
length
<
rowIds
.
length
;
row
.
checkAll
=
list
.
length
===
rowIds
.
length
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/systemlogs/SystemLogs.vue
View file @
15017fd2
...
...
@@ -10,9 +10,7 @@
placeholder=
"请输入请求地址搜索"
@
keyup.native.enter=
"handleSearch"
></el-input>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
</div>
</TableHeader>
...
...
@@ -39,67 +37,67 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
{
getlogsList
}
from
"
@/api/system
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
{
getlogsList
}
from
'
@/api/system
'
;
export
default
{
components
:
{
TableHeader
,
TableHeader
},
data
()
{
return
{
column
:
[
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
用户名称
"
,
prop
:
"
userName
"
,
align
:
"
center
"
,
label
:
'
用户名称
'
,
prop
:
'
userName
'
,
align
:
'
center
'
},
{
label
:
"
登录名称
"
,
prop
:
"
loginName
"
,
align
:
"
center
"
,
label
:
'
登录名称
'
,
prop
:
'
loginName
'
,
align
:
'
center
'
},
{
label
:
"
请求地址
"
,
prop
:
"
requestUrl
"
,
align
:
"
center
"
,
label
:
'
请求地址
'
,
prop
:
'
requestUrl
'
,
align
:
'
center
'
},
{
label
:
"
操作内容
"
,
prop
:
"
content
"
,
align
:
"
center
"
,
label
:
'
操作内容
'
,
prop
:
'
content
'
,
align
:
'
center
'
},
{
label
:
"
操作IP地址
"
,
prop
:
"
ip
"
,
align
:
"
center
"
,
label
:
'
操作IP地址
'
,
prop
:
'
ip
'
,
align
:
'
center
'
},
{
label
:
"
操作时间
"
,
prop
:
"
logDate
"
,
align
:
"
center
"
,
label
:
'
操作时间
'
,
prop
:
'
logDate
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
this
.
$moment
(
row
.
logDate
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
}
,
}
,
return
this
.
$moment
(
row
.
logDate
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
}
}
],
searchVal
:
""
,
searchVal
:
''
,
tableData
:
[],
page
:
1
,
size
:
10
,
total
:
10
,
loading
:
false
,
selectKeys
:
[],
dict
:
{}
,
// 字典
dict
:
{}
// 字典
};
},
created
()
{
...
...
@@ -113,7 +111,7 @@ export default {
let
res
=
await
getlogsList
({
page
:
this
.
page
,
size
:
this
.
size
,
requestUrl
:
`%
${
this
.
searchVal
}
%`
,
requestUrl
:
`%
${
this
.
searchVal
}
%`
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
...
...
@@ -131,17 +129,17 @@ export default {
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getlogsList
();
},
// 重置
handleReset
()
{
this
.
searchVal
=
""
;
this
.
searchVal
=
''
;
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getlogsList
();
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/task/TaskSet.vue
View file @
15017fd2
...
...
@@ -2,11 +2,7 @@
<div
class=
"task-set h-ull w-full"
>
<TableHeader>
<div
slot=
"left"
>
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:task:add']"
@
click=
"handleAdd"
<el-button
size=
"small"
type=
"primary"
v-hasPermi=
"['system:task:add']"
@
click=
"handleAdd"
>
新增任务
</el-button
>
<el-button
...
...
@@ -26,9 +22,7 @@
placeholder=
"请输入任务名称搜索"
@
keyup.native.enter=
"handleSearch"
></el-input>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button
>
<el-button
size=
"small"
type=
"primary"
@
click=
"handleSearch"
>
搜 索
</el-button>
<el-button
size=
"small"
@
click=
"handleReset"
>
重 置
</el-button>
</div>
</TableHeader>
...
...
@@ -64,100 +58,100 @@
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddTask
from
"
./components/AddTask.vue
"
;
import
{
getTaskList
,
delTask
}
from
"
@/api/system
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
AddTask
from
'
./components/AddTask.vue
'
;
import
{
getTaskList
,
delTask
}
from
'
@/api/system
'
;
export
default
{
components
:
{
TableHeader
,
AddTask
,
AddTask
},
data
()
{
return
{
column
:
[
{
label
:
"
全选
"
,
type
:
"
selection
"
,
width
:
"
55
"
,
align
:
"
center
"
,
reserveSelection
:
true
,
label
:
'
全选
'
,
type
:
'
selection
'
,
width
:
'
55
'
,
align
:
'
center
'
,
reserveSelection
:
true
},
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
任务名称
"
,
prop
:
"
name
"
,
align
:
"
center
"
,
label
:
'
任务名称
'
,
prop
:
'
name
'
,
align
:
'
center
'
},
{
label
:
"
执行主机
"
,
prop
:
"
excuteHost
"
,
align
:
"
center
"
,
label
:
'
执行主机
'
,
prop
:
'
excuteHost
'
,
align
:
'
center
'
},
{
label
:
"
执行关键字
"
,
prop
:
"
taskKey
"
,
align
:
"
center
"
,
label
:
'
执行关键字
'
,
prop
:
'
taskKey
'
,
align
:
'
center
'
},
{
label
:
"
执行策略
"
,
prop
:
"
excuteStrategy
"
,
align
:
"
center
"
,
label
:
'
执行策略
'
,
prop
:
'
excuteStrategy
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
tag
size
=
"
small
"
type
=
"
info
"
>
{
this
.
dict
.
excuteStrategy
[
row
.
excuteStrategy
]}
<
/el-tag
>
);
}
,
}
},
{
label
:
"
最后执行主机
"
,
prop
:
"
lastExcuteHost
"
,
align
:
"
center
"
,
label
:
'
最后执行主机
'
,
prop
:
'
lastExcuteHost
'
,
align
:
'
center
'
},
{
label
:
"
最后执行时间
"
,
prop
:
"
lastExcuteTime
"
,
align
:
"
center
"
,
label
:
'
最后执行时间
'
,
prop
:
'
lastExcuteTime
'
,
align
:
'
center
'
},
{
label
:
"
任务状态
"
,
prop
:
"
status
"
,
align
:
"
center
"
,
label
:
'
任务状态
'
,
prop
:
'
status
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
(
<
el
-
tag
size
=
"
small
"
type
=
"
info
"
>
{
this
.
dict
.
status
[
row
.
status
]}
<
/el-tag
>
);
}
,
}
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
120
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
120
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
v
-
hasPermi
=
{[
"
system:task:edit
"
]}
v
-
hasPermi
=
{[
'
system:task:edit
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
handleEdit
(
row
)}
>
编辑
<
/span
>
<
span
v
-
hasPermi
=
{[
"
system:task:remove
"
]}
v
-
hasPermi
=
{[
'
system:task:remove
'
]}
class
=
"
delete cursor-pointer
"
onClick
=
{()
=>
this
.
handleDel
(
row
.
id
)}
>
...
...
@@ -165,10 +159,10 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchVal
:
""
,
searchVal
:
''
,
tableData
:
[],
page
:
1
,
size
:
10
,
...
...
@@ -176,8 +170,8 @@ export default {
loading
:
false
,
selectKeys
:
[],
addVisible
:
false
,
title
:
"
新增参数
"
,
dict
:
{}
,
// 字典
title
:
'
新增参数
'
,
dict
:
{}
// 字典
};
},
created
()
{
...
...
@@ -191,7 +185,7 @@ export default {
let
res
=
await
getTaskList
({
page
:
this
.
page
,
size
:
this
.
size
,
name
:
`%
${
this
.
searchVal
}
%`
,
name
:
`%
${
this
.
searchVal
}
%`
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
,
total
,
dict
}
=
res
.
data
.
data
;
...
...
@@ -209,23 +203,23 @@ export default {
// 批量移除
handleDelAll
()
{
if
(
!
this
.
selectKeys
.
length
)
{
this
.
$message
.
warning
(
"
请先勾选数据
"
);
this
.
$message
.
warning
(
'
请先勾选数据
'
);
return
;
}
let
ids
=
this
.
selectKeys
.
map
((
v
)
=>
v
.
id
).
join
(
"
,
"
);
let
ids
=
this
.
selectKeys
.
map
((
v
)
=>
v
.
id
).
join
(
'
,
'
);
this
.
handleDel
(
ids
);
},
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getTaskList
();
},
// 重置
handleReset
()
{
this
.
searchVal
=
""
;
this
.
searchVal
=
''
;
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getTaskList
();
},
// 选中
...
...
@@ -234,23 +228,23 @@ export default {
},
// 新增
handleAdd
()
{
this
.
title
=
"
新增任务
"
;
this
.
title
=
'
新增任务
'
;
this
.
$refs
.
AddTask
.
onAdd
();
this
.
addVisible
=
true
;
},
// 编辑
handleEdit
(
row
)
{
this
.
title
=
"
编辑任务
"
;
this
.
title
=
'
编辑任务
'
;
this
.
$refs
.
AddTask
.
onEdit
(
row
);
this
.
addVisible
=
true
;
},
// 移除
handleDel
(
id
)
{
this
.
$confirm
(
"
此操作将删除所选数据,是否继续?
"
,
"
系统提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
cancelButtonClass
:
"
btn-custom-cancel
"
,
type
:
"
warning
"
,
this
.
$confirm
(
'
此操作将删除所选数据,是否继续?
'
,
'
系统提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
cancelButtonClass
:
'
btn-custom-cancel
'
,
type
:
'
warning
'
})
.
then
(
async
()
=>
{
let
res
=
await
delTask
({
id
});
...
...
@@ -258,14 +252,14 @@ export default {
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
getTaskList
();
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
}
})
.
catch
(()
=>
{
console
.
log
(
"
取消成功!
"
);
console
.
log
(
'
取消成功!
'
);
});
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/task/components/AddTask.vue
View file @
15017fd2
...
...
@@ -9,27 +9,15 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
size=
"medium"
:rules=
"rules"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"form"
size=
"medium"
:rules=
"rules"
label-width=
"100px"
>
<el-form-item
label=
"任务名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入任务名称"
></el-input>
</el-form-item>
<el-form-item
label=
"关键字"
prop=
"taskKey"
>
<el-input
v-model=
"form.taskKey"
placeholder=
"请输入关键字"
></el-input>
<el-input
v-model=
"form.taskKey"
placeholder=
"请输入关键字"
></el-input>
</el-form-item>
<el-form-item
label=
"执行服务"
prop=
"excuteService"
>
<el-input
v-model=
"form.excuteService"
placeholder=
"请输入执行服务"
></el-input>
<el-input
v-model=
"form.excuteService"
placeholder=
"请输入执行服务"
></el-input>
</el-form-item>
<el-form-item
label=
"执行策略"
prop=
"excuteStrategy"
>
<el-select
...
...
@@ -46,11 +34,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"执行日期"
v-if=
"form.excuteStrategy != 4"
prop=
"excuteDate"
>
<el-form-item
label=
"执行日期"
v-if=
"form.excuteStrategy != 4"
prop=
"excuteDate"
>
<el-input
disabled
v-if=
"form.excuteStrategy == 1"
...
...
@@ -62,12 +46,7 @@
v-model.number=
"form.excuteDate"
v-else-if=
"form.excuteStrategy == 2"
>
<el-option
v-for=
"(v, key) in weeks"
:key=
"key"
:value=
"Number(key)"
:label=
"v"
>
<el-option
v-for=
"(v, key) in weeks"
:key=
"key"
:value=
"Number(key)"
:label=
"v"
>
</el-option>
</el-select>
<el-select
...
...
@@ -75,12 +54,7 @@
v-else-if=
"form.excuteStrategy == 3"
v-model=
"form.excuteDate"
>
<el-option
v-for=
"(v, key) in days"
:key=
"key"
:value=
"Number(key)"
:label=
"v"
>
<el-option
v-for=
"(v, key) in days"
:key=
"key"
:value=
"Number(key)"
:label=
"v"
>
</el-option>
</el-select>
</el-form-item>
...
...
@@ -99,16 +73,10 @@
</el-time-picker>
</el-form-item>
<el-form-item
label=
"执行主机"
prop=
"excuteHost"
>
<el-input
v-model=
"form.excuteHost"
placeholder=
"请输入执行主机"
></el-input>
<el-input
v-model=
"form.excuteHost"
placeholder=
"请输入执行主机"
></el-input>
</el-form-item>
<el-form-item
label=
"执行参数"
prop=
"excuteParam"
>
<el-input
v-model=
"form.excuteParam"
placeholder=
"请输入执行参数"
></el-input>
<el-input
v-model=
"form.excuteParam"
placeholder=
"请输入执行参数"
></el-input>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
...
...
@@ -122,11 +90,7 @@
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
<el-button
size=
"medium"
type=
"primary"
:loading=
"loading"
@
click=
"handleOk"
>
确 定
</el-button
>
</span>
...
...
@@ -135,26 +99,26 @@
</template>
<
script
>
import
{
saveTask
}
from
"
@/api/system
"
;
import
{
saveTask
}
from
'
@/api/system
'
;
export
default
{
props
:
{
title
:
{
type
:
String
,
required
:
true
,
default
:
""
,
default
:
''
},
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
default
:
false
},
dict
:
{
type
:
Object
,
required
:
true
,
default
:
()
=>
{
return
{};
}
,
}
,
}
}
},
data
()
{
return
{
...
...
@@ -162,25 +126,21 @@ export default {
days
:
{},
// 号数
weeks
:
{},
// 周
form
:
{
name
:
""
,
// 任务名称
taskKey
:
""
,
// 关键字
excuteService
:
""
,
// 执行服务
name
:
''
,
// 任务名称
taskKey
:
''
,
// 关键字
excuteService
:
''
,
// 执行服务
excuteStrategy
:
1
,
// 执行策略
excuteDate
:
0
,
// 执行日期
excuteTime
:
""
,
// 执行时间
excuteHost
:
""
,
// 执行主机
excuteParam
:
""
,
// 执行参数
remark
:
""
,
// 备注
excuteTime
:
''
,
// 执行时间
excuteHost
:
''
,
// 执行主机
excuteParam
:
''
,
// 执行参数
remark
:
''
// 备注
},
rules
:
{
name
:
[{
required
:
true
,
message
:
"
请输入参数名称
"
,
trigger
:
"
blur
"
}],
paramKey
:
[
{
required
:
true
,
message
:
"
请输入参数键
"
,
trigger
:
"
blur
"
},
],
paramValue
:
[
{
required
:
true
,
message
:
"
请输入参数值
"
,
trigger
:
"
blur
"
},
],
},
name
:
[{
required
:
true
,
message
:
'
请输入参数名称
'
,
trigger
:
'
blur
'
}],
paramKey
:
[{
required
:
true
,
message
:
'
请输入参数键
'
,
trigger
:
'
blur
'
}],
paramValue
:
[{
required
:
true
,
message
:
'
请输入参数值
'
,
trigger
:
'
blur
'
}]
}
};
},
computed
:
{
...
...
@@ -189,17 +149,17 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
created
()
{
for
(
let
i
=
1
;
i
<=
31
;
i
++
)
{
this
.
days
[
i
]
=
i
+
"
号
"
;
this
.
days
[
i
]
=
i
+
'
号
'
;
}
let
numArr
=
[
"
一
"
,
"
二
"
,
"
三
"
,
"
四
"
,
"
五
"
,
"
六
"
,
"
日
"
];
let
numArr
=
[
'
一
'
,
'
二
'
,
'
三
'
,
'
四
'
,
'
五
'
,
'
六
'
,
'
日
'
];
for
(
let
i
=
1
;
i
<=
7
;
i
++
)
{
this
.
weeks
[
i
]
=
"
星期
"
+
numArr
[
i
-
1
];
this
.
weeks
[
i
]
=
'
星期
'
+
numArr
[
i
-
1
];
}
},
methods
:
{
...
...
@@ -212,7 +172,7 @@ export default {
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
===
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -222,7 +182,7 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
...
...
@@ -232,11 +192,11 @@ export default {
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
},
// 切换策略
...
...
@@ -244,13 +204,13 @@ export default {
if
(
val
==
1
)
{
this
.
form
.
excuteDate
=
0
;
}
else
{
this
.
form
.
excuteDate
=
""
;
this
.
form
.
excuteDate
=
''
;
}
if
(
val
==
4
)
{
this
.
form
.
excuteTime
=
""
;
this
.
form
.
excuteTime
=
''
;
}
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/user/User.vue
View file @
15017fd2
...
...
@@ -4,17 +4,8 @@
<div
slot=
"right"
v-hasPermi=
"['system:user:query']"
>
<el-form
ref=
"searchForm"
:model=
"searchForm"
inline
size=
"small"
>
<el-form-item
prop=
"type"
>
<el-select
style=
"width: 120px"
v-model=
"searchForm.type"
placeholder=
"请选择"
>
<el-option
v-for=
"(v, key) in typeList"
:key=
"key"
:label=
"v"
:value=
"key"
>
<el-select
style=
"width: 120px"
v-model=
"searchForm.type"
placeholder=
"请选择"
>
<el-option
v-for=
"(v, key) in typeList"
:key=
"key"
:label=
"v"
:value=
"key"
>
</el-option>
</el-select>
</el-form-item>
...
...
@@ -57,65 +48,61 @@
></Pagination>
<!-- 分配角色 -->
<AddUserRole
ref=
"AddUserRole"
:show.sync=
"show"
@
success=
"getUserList"
></AddUserRole>
<AddUserRole
ref=
"AddUserRole"
:show.sync=
"show"
@
success=
"getUserList"
></AddUserRole>
</div>
</
template
>
<
script
>
import
TableHeader
from
"
@/components/TableHeader.vue
"
;
import
AddUserRole
from
"
./components/AddUserRole.vue
"
;
import
{
getUserList
}
from
"
@/api/system
"
;
import
TableHeader
from
'
@/components/TableHeader.vue
'
;
import
AddUserRole
from
'
./components/AddUserRole.vue
'
;
import
{
getUserList
}
from
'
@/api/system
'
;
let
typeList
=
{
loginName
:
"
按登录名
"
,
realName
:
"
按用户姓名
"
,
mobile
:
"
按手机号码
"
,
loginName
:
'
按登录名
'
,
realName
:
'
按用户姓名
'
,
mobile
:
'
按手机号码
'
};
export
default
{
components
:
{
TableHeader
,
AddUserRole
,
AddUserRole
},
data
()
{
return
{
typeList
,
column
:
[
{
label
:
"
序号
"
,
type
:
"
index
"
,
width
:
"
55
"
,
align
:
"
center
"
,
label
:
'
序号
'
,
type
:
'
index
'
,
width
:
'
55
'
,
align
:
'
center
'
,
index
:
(
index
)
=>
{
return
(
this
.
page
-
1
)
*
this
.
size
+
index
+
1
;
}
,
}
},
{
label
:
"
登录名
"
,
prop
:
"
loginName
"
,
align
:
"
center
"
,
label
:
'
登录名
'
,
prop
:
'
loginName
'
,
align
:
'
center
'
},
{
label
:
"
用户姓名
"
,
prop
:
"
realName
"
,
align
:
"
center
"
,
label
:
'
用户姓名
'
,
prop
:
'
realName
'
,
align
:
'
center
'
},
{
label
:
"
手机号码
"
,
prop
:
"
mobile
"
,
align
:
"
center
"
,
label
:
'
手机号码
'
,
prop
:
'
mobile
'
,
align
:
'
center
'
},
{
label
:
"
所属角色
"
,
prop
:
"
roleIds
"
,
align
:
"
center
"
,
label
:
'
所属角色
'
,
prop
:
'
roleIds
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
row
.
roleIds
)
{
return
(
<
div
class
=
"
flex justify-center gap-2
"
>
{
row
.
roleIds
.
split
(
"
,
"
).
map
((
v
)
=>
{
{
row
.
roleIds
.
split
(
'
,
'
).
map
((
v
)
=>
{
return
(
<
el
-
tag
size
=
"
small
"
type
=
"
info
"
>
{
this
.
dict
.
roleIds
[
v
]}
...
...
@@ -125,35 +112,35 @@ export default {
<
/div
>
);
}
}
,
}
},
{
label
:
"
状态
"
,
prop
:
"
status
"
,
align
:
"
center
"
,
label
:
'
状态
'
,
prop
:
'
status
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
if
(
this
.
dict
.
status
)
{
return
this
.
dict
.
status
[
row
.
status
];
}
}
,
}
},
{
label
:
"
创建时间
"
,
prop
:
"
createTime
"
,
align
:
"
center
"
,
label
:
'
创建时间
'
,
prop
:
'
createTime
'
,
align
:
'
center
'
,
formatter
:
(
row
)
=>
{
return
this
.
$moment
(
row
.
createTime
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
);
}
,
return
this
.
$moment
(
row
.
createTime
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
);
}
},
{
label
:
"
操作
"
,
align
:
"
center
"
,
width
:
"
120
"
,
label
:
'
操作
'
,
align
:
'
center
'
,
width
:
'
120
'
,
formatter
:
(
row
)
=>
{
return
(
<
div
class
=
"
flex justify-center gap-4
"
>
<
span
v
-
hasPermi
=
{[
"
system:user:userRole
"
]}
v
-
hasPermi
=
{[
'
system:user:userRole
'
]}
class
=
"
primary cursor-pointer
"
onClick
=
{()
=>
this
.
apportion
(
row
)}
>
...
...
@@ -161,12 +148,12 @@ export default {
<
/span
>
<
/div
>
);
}
,
}
,
}
}
],
searchForm
:
{
type
:
"
loginName
"
,
keyword
:
""
,
type
:
'
loginName
'
,
keyword
:
''
},
tableData
:
[],
page
:
1
,
...
...
@@ -175,9 +162,9 @@ export default {
loading
:
false
,
selectRows
:
[],
show
:
false
,
title
:
"
新增
"
,
title
:
'
新增
'
,
dict
:
{},
// 字典
resShow
:
false
,
resShow
:
false
};
},
created
()
{
...
...
@@ -194,7 +181,7 @@ export default {
let
res
=
await
getUserList
({
page
:
this
.
page
,
size
:
this
.
size
,
...
obj
,
...
obj
});
this
.
loading
=
false
;
if
(
res
.
data
.
code
==
1
)
{
...
...
@@ -212,22 +199,22 @@ export default {
// 搜索
handleSearch
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
getUserList
();
},
// 重置
handleReset
()
{
this
.
page
=
1
;
this
.
$clearSelection
(
"
MyTable
"
);
this
.
$resetForm
(
"
searchForm
"
);
this
.
$clearSelection
(
'
MyTable
'
);
this
.
$resetForm
(
'
searchForm
'
);
this
.
getUserList
();
},
apportion
(
row
)
{
let
data
=
this
.
$cloneDeep
(
row
);
this
.
$refs
.
AddUserRole
.
onEdit
(
data
);
this
.
show
=
true
;
}
,
}
,
}
}
};
</
script
>
...
...
admin_2/src/pages/system/user/components/AddUserRole.vue
View file @
15017fd2
...
...
@@ -9,13 +9,7 @@
:close-on-click-modal=
"false"
top=
"10vh"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
size=
"medium"
label-width=
"100px"
>
<el-form-item
label=
"角色名称"
prop=
"roleIds"
>
<el-select
multiple
...
...
@@ -24,46 +18,38 @@
v-model=
"form.roleIds"
placeholder=
"请选择角色"
>
<el-option
v-for=
"v in roleList"
:key=
"v.id"
:label=
"v.name"
:value=
"v.id"
>
</el-option>
<el-option
v-for=
"v in roleList"
:key=
"v.id"
:label=
"v.name"
:value=
"v.id"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
size=
"medium"
@
click=
"handleRest"
>
重 置
</el-button>
<el-button
size=
"medium"
type=
"primary"
@
click=
"handleOk"
>
确 定
</el-button
>
<el-button
size=
"medium"
type=
"primary"
@
click=
"handleOk"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
getRoleList
,
saveUser
}
from
"
@/api/system
"
;
import
{
getRoleList
,
saveUser
}
from
'
@/api/system
'
;
export
default
{
components
:
{},
props
:
{
show
:
{
type
:
Boolean
,
required
:
true
,
default
:
false
,
}
,
default
:
false
}
},
data
()
{
return
{
roleList
:
[],
form
:
{
roleIds
:
[]
,
roleIds
:
[]
},
rules
:
{
roleIds
:
[{
required
:
true
,
message
:
"
请选择角色
"
,
trigger
:
"
change
"
}],
}
,
roleIds
:
[{
required
:
true
,
message
:
'
请选择角色
'
,
trigger
:
'
change
'
}]
}
};
},
computed
:
{
...
...
@@ -72,9 +58,9 @@ export default {
return
this
.
show
;
},
set
(
val
)
{
this
.
$emit
(
"
update:show
"
,
val
);
}
,
}
,
this
.
$emit
(
'
update:show
'
,
val
);
}
}
},
created
()
{
this
.
getRoleList
();
...
...
@@ -84,7 +70,7 @@ export default {
async
getRoleList
()
{
let
res
=
await
getRoleList
({
page
:
1
,
size
:
-
1
,
size
:
-
1
});
if
(
res
.
data
.
code
==
1
)
{
let
{
data
}
=
res
.
data
.
data
;
...
...
@@ -101,12 +87,12 @@ export default {
id
,
lastLoginAddress
,
mobile
,
roleIds
:
roleIds
.
join
(
"
,
"
),
roleIds
:
roleIds
.
join
(
'
,
'
)
});
let
{
code
,
msg
}
=
res
.
data
;
if
(
code
==
1
)
{
this
.
$message
.
success
(
msg
);
this
.
$emit
(
"
success
"
);
this
.
$emit
(
'
success
'
);
this
.
handleClose
();
}
this
.
loading
=
false
;
...
...
@@ -116,14 +102,14 @@ export default {
// 新增
onAdd
()
{
Object
.
assign
(
this
.
form
,
this
.
$options
.
data
().
form
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
"
id
"
);
this
.
form
.
id
&&
this
.
$delete
(
this
.
form
,
'
id
'
);
},
// 编辑
onEdit
(
row
)
{
setTimeout
(()
=>
{
this
.
form
=
{
...
row
};
if
(
this
.
form
.
roleIds
)
{
this
.
form
.
roleIds
=
this
.
form
.
roleIds
.
split
(
"
,
"
).
map
(
Number
);
this
.
form
.
roleIds
=
this
.
form
.
roleIds
.
split
(
'
,
'
).
map
(
Number
);
}
else
{
this
.
form
.
roleIds
=
[];
}
...
...
@@ -131,14 +117,14 @@ export default {
},
// 重置
handleRest
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
},
// 关闭
handleClose
()
{
this
.
$resetForm
(
"
form
"
);
this
.
$resetForm
(
'
form
'
);
this
.
Visible
=
false
;
}
,
}
,
}
}
};
</
script
>
...
...
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