Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
smart_gov_platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
smart_gov_platform
Commits
b0f1c775
Commit
b0f1c775
authored
Apr 16, 2023
by
廖旭伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
267e1c51
a1a24488
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
295 additions
and
209 deletions
+295
-209
portal-manager-ui/admin/src/api/dataActuary.js
portal-manager-ui/admin/src/api/dataActuary.js
+8
-0
portal-manager-ui/admin/src/api/dataAdmin.js
portal-manager-ui/admin/src/api/dataAdmin.js
+4
-0
portal-manager-ui/admin/src/views/dataActuary/behaviour/eventanalyse/eventanalyse.vue
...views/dataActuary/behaviour/eventanalyse/eventanalyse.vue
+1
-1
portal-manager-ui/admin/src/views/dataActuary/behaviour/pageanalyse/pageAnalyse.vue
...c/views/dataActuary/behaviour/pageanalyse/pageAnalyse.vue
+47
-25
portal-manager-ui/admin/src/views/dataActuary/behaviour/pathanalyse/pathAnalyse.vue
...c/views/dataActuary/behaviour/pathanalyse/pathAnalyse.vue
+41
-78
portal-manager-ui/admin/src/views/dataActuary/behaviour/product/product.vue
...admin/src/views/dataActuary/behaviour/product/product.vue
+86
-71
portal-manager-ui/admin/src/views/dataAdmin/components/Impossible/index.vue
...admin/src/views/dataAdmin/components/Impossible/index.vue
+3
-2
portal-manager-ui/admin/src/views/dataAdmin/components/networkGovernance/callRecordForm.vue
...dataAdmin/components/networkGovernance/callRecordForm.vue
+84
-21
portal-manager-ui/admin/src/views/dataAdmin/components/networkGovernance/networkForm.vue
...ws/dataAdmin/components/networkGovernance/networkForm.vue
+18
-8
portal-manager-ui/admin/src/views/dataAdmin/components/serviceDataAnalyse/crowdPortrait.vue
...dataAdmin/components/serviceDataAnalyse/crowdPortrait.vue
+3
-3
No files found.
portal-manager-ui/admin/src/api/dataActuary.js
View file @
b0f1c775
...
...
@@ -10,4 +10,12 @@ export function getEventCensus(params) {
//产品热力图
export
function
getProductHotCensus
(
params
)
{
return
http
.
post
(
`
${
baseURL
}
/zwfw/act/analyse/productHotCensus`
,
params
);
}
//页面访问分析
export
function
getAccessAnalyse
(
params
)
{
return
http
.
post
(
`
${
baseURL
}
/zwfw/act/analyse/accessAnalyse`
,
params
);
}
//路径分析
export
function
getWayAccessAnalyse
(
params
)
{
return
http
.
post
(
`
${
baseURL
}
/zwfw/act/analyse/wayAccessAnalyse`
,
params
);
}
\ No newline at end of file
portal-manager-ui/admin/src/api/dataAdmin.js
View file @
b0f1c775
...
...
@@ -66,6 +66,10 @@ export function getWLLZCount(params) {
export
function
getWLLZInfo
(
params
)
{
return
http
.
get
(
`
${
BASEURL
}
/wllz/index/complainInfo`
,
params
);
}
// 12345报表
export
function
getSys12345
(
params
)
{
return
http
.
get
(
`
${
BASEURL
}
/wllz/complainapi/sys12345`
,
params
);
}
// 样表列表
export
function
getBillList
(
params
)
{
...
...
portal-manager-ui/admin/src/views/dataActuary/behaviour/eventanalyse/eventanalyse.vue
View file @
b0f1c775
...
...
@@ -13,7 +13,7 @@
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"time"
style=
"width: 300px"
:allowClear=
"false"
/>
</a-form-model-item>
<a-form-model-item>
<a-button
type=
"primary"
>
<a-button
type=
"primary"
@
click=
"getList"
>
开始分析
</a-button>
</a-form-model-item>
...
...
portal-manager-ui/admin/src/views/dataActuary/behaviour/pageanalyse/pageAnalyse.vue
View file @
b0f1c775
...
...
@@ -3,17 +3,17 @@
<div
class=
"page"
>
<a-form-model
:model=
"queryform"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
layout=
"inline"
>
<a-form-model-item>
<a-select
v-model=
"queryform.
value"
style=
"width: 200px"
placeholder=
"选择产品"
>
<a-select-option
value=
"jack"
>
Jack
</a-select-option>
<a-select
v-model=
"queryform.
productId"
style=
"width: 200px"
placeholder=
"选择产品"
>
<a-select-option
:value=
"item.id"
v-for=
"(item,index) in product"
:key=
"index"
>
{{
item
.
title
}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"
queryform.value"
style=
"width: 300px"
/>
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"
time"
style=
"width: 300px"
:allowClear=
"false"
/>
</a-form-model-item>
<a-form-model-item>
<a-button
type=
"primary"
>
<a-button
type=
"primary"
@
click=
"getData"
>
开始分析
</a-button>
</a-form-model-item>
...
...
@@ -23,11 +23,11 @@
<div>
页面访问指标趋势
</div>
<div
class=
"txt-dv"
>
<div>
<div
class=
"num"
>
4058
</div>
<div
class=
"num"
>
{{
data
?
data
.
accessSum
:
0
}}
</div>
<div>
页面累计访问次数
</div>
</div>
<div>
<div
class=
"num"
>
4058
</div>
<div
class=
"num"
>
{{
data
?
data
.
dayAccessAvg
:
0
}}
</div>
<div>
日均访问次数
</div>
</div>
</div>
...
...
@@ -37,11 +37,11 @@
<div
class=
"page-box"
>
<div
class=
"page-dv"
>
<div>
人均访问深度
</div>
<div
class=
"page-num"
>
4.00
页
</div>
<div
class=
"page-num"
>
{{
data
?
data
.
depthAvg
:
0
}}
页
</div>
</div>
<div
class=
"page-dv"
>
<div>
次均访问深度
</div>
<div
class=
"page-num"
>
4.00
页
</div>
<div
class=
"page-num"
>
{{
data
?
data
.
singleDepth
:
0
}}
页
</div>
</div>
</div>
<div
class=
"chatrs-dv"
>
...
...
@@ -54,27 +54,49 @@
</
template
>
<
script
>
import
*
as
echarts
from
'
echarts
'
import
*
as
echarts
from
'
echarts
'
import
{
getAccessAnalyse
}
from
'
@/api/dataActuary.js
'
import
moment
from
'
moment
'
;
export
default
{
data
()
{
return
{
queryform
:
{
value
:
null
},
queryform
:
{
productId
:
1
,
dateTimeStart
:
moment
().
format
(
'
yyyy-MM-DD
'
),
dateTimeEnd
:
moment
().
format
(
'
yyyy-MM-DD
'
)
},
time
:[
moment
().
format
(
'
yyyy-MM-DD
'
),
moment
().
format
(
'
yyyy-MM-DD
'
)],
product
:[{
title
:
'
排队机
'
,
id
:
1
}],
labelCol
:
{
span
:
1
},
wrapperCol
:
{
span
:
14
},
},
data
:
null
}
},
mounted
()
{
this
.
initLine
()
this
.
initBar
()
mounted
()
{
this
.
getData
()
},
methods
:
{
initBar
()
{
methods
:
{
getData
()
{
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
0
]
:
null
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
1
]
:
null
getAccessAnalyse
(
this
.
queryform
).
then
(
res
=>
{
this
.
data
=
res
.
data
let
lineX
=
res
.
data
.
accessTrend
.
map
(
item
=>
item
.
accessDay
)
let
lineY
=
res
.
data
.
accessTrend
.
map
(
item
=>
item
.
accessCount
)
let
barX
=
res
.
data
.
pageAccessTop
.
map
(
item
=>
item
.
accessCount
)
let
barY
=
res
.
data
.
pageAccessTop
.
map
(
item
=>
item
.
pageName
)
this
.
initLine
(
lineX
,
lineY
)
this
.
initBar
(
barX
,
barY
)
})
},
initBar
(
barX
,
barY
)
{
let
chartDom
=
document
.
getElementById
(
'
pages
'
)
let
myChart
=
echarts
.
init
(
chartDom
);
myChart
.
setOption
({
...
...
@@ -103,7 +125,7 @@
},
yAxis
:
{
type
:
'
category
'
,
data
:
[
'
Brazil
'
,
'
Indonesia
'
,
'
USA
'
,
'
India
'
,
'
China
'
,
'
World
'
]
,
data
:
barY
,
axisTick
:
{
show
:
false
}
...
...
@@ -111,13 +133,13 @@
series
:
[{
name
:
'
访问次数
'
,
type
:
'
bar
'
,
data
:
[
18203
,
23489
,
29034
,
104970
,
131744
,
630230
]
,
data
:
barX
,
barWidth
:
10
}
]
})
},
initLine
()
{
initLine
(
lineX
,
lineY
)
{
let
chartDom
=
document
.
getElementById
(
'
number
'
)
let
myChart
=
echarts
.
init
(
chartDom
);
myChart
.
setOption
({
...
...
@@ -132,7 +154,7 @@
},
xAxis
:
{
type
:
'
category
'
,
data
:
[
'
Mon
'
,
'
Tue
'
,
'
Wed
'
,
'
Thu
'
,
'
Fri
'
,
'
Sat
'
,
'
Sun
'
]
,
data
:
lineX
,
axisTick
:
{
show
:
false
}
...
...
@@ -142,7 +164,7 @@
},
series
:
[{
name
:
'
页面访问次数
'
,
data
:
[
150
,
230
,
224
,
218
,
135
,
147
,
260
]
,
data
:
lineY
,
type
:
'
line
'
,
markLine
:
{
data
:
[{
...
...
portal-manager-ui/admin/src/views/dataActuary/behaviour/pathanalyse/pathAnalyse.vue
View file @
b0f1c775
...
...
@@ -3,17 +3,17 @@
<div
class=
"page"
>
<a-form-model
:model=
"queryform"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
layout=
"inline"
>
<a-form-model-item>
<a-select
v-model=
"queryform.
value
"
style=
"width: 200px"
placeholder=
"选择产品"
>
<a-select-option
value=
"jack
"
>
Jack
<a-select
v-model=
"queryform.
productId
"
style=
"width: 200px"
placeholder=
"选择产品"
>
<a-select-option
:value=
"item.id"
v-for=
"(item,index) in product"
:key=
"index
"
>
{{
item
.
title
}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"
queryform.value"
style=
"width: 300px"
/>
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"
time"
style=
"width: 300px"
:allowClear=
"false"
/>
</a-form-model-item>
<a-form-model-item>
<a-button
type=
"primary"
>
<a-button
type=
"primary"
@
click=
"getData"
>
开始分析
</a-button>
</a-form-model-item>
...
...
@@ -23,13 +23,22 @@
</
template
>
<
script
>
import
*
as
echarts
from
'
echarts
'
import
*
as
echarts
from
'
echarts
'
import
{
getWayAccessAnalyse
}
from
'
@/api/dataActuary.js
'
import
moment
from
'
moment
'
;
export
default
{
data
()
{
return
{
queryform
:
{
value
:
null
productId
:
1
,
dateTimeStart
:
moment
().
format
(
'
yyyy-MM-DD
'
),
dateTimeEnd
:
moment
().
format
(
'
yyyy-MM-DD
'
)
},
time
:[
moment
().
format
(
'
yyyy-MM-DD
'
),
moment
().
format
(
'
yyyy-MM-DD
'
)],
product
:[{
title
:
'
排队机
'
,
id
:
1
}],
labelCol
:
{
span
:
1
},
...
...
@@ -39,10 +48,30 @@
}
},
mounted
()
{
this
.
init
()
this
.
getData
()
},
methods
:
{
init
()
{
methods
:
{
getData
()
{
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
0
]
:
null
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
1
]
:
null
getWayAccessAnalyse
(
this
.
queryform
).
then
(
res
=>
{
let
data
=
res
.
data
.
data
.
map
(
item
=>
({
name
:
item
.
name
}))
let
links
=
res
.
data
.
links
.
map
(
item
=>
({
source
:
item
.
sourceName
,
target
:
item
.
targetName
,
value
:
item
.
value
,
lineStyle
:{
color
:
'
source
'
}
}))
this
.
init
(
data
,
links
)
})
},
uniqueFunc
(
arr
,
uniId
){
const
res
=
new
Map
();
return
arr
.
filter
((
item
)
=>
!
res
.
has
(
item
[
uniId
])
&&
res
.
set
(
item
[
uniId
],
1
));
},
init
(
data
,
links
)
{
let
chartDom
=
document
.
getElementById
(
'
path
'
)
let
myChart
=
echarts
.
init
(
chartDom
);
myChart
.
setOption
({
...
...
@@ -54,74 +83,8 @@
},
color
:[
'
#FFCAC4
'
,
'
#6D86DE
'
,
'
#409AFE
'
,
'
#4DB3EA
'
,
'
#07CF8C
'
],
nodeWidth
:
10
,
data
:
[{
name
:
'
a
'
},
{
name
:
'
b
'
},
{
name
:
'
a1
'
},
{
name
:
'
a2
'
},
{
name
:
'
b1
'
},
{
name
:
'
c
'
}
],
links
:
[{
source
:
'
a
'
,
target
:
'
a1
'
,
value
:
5
,
lineStyle
:{
color
:
'
source
'
}
},
{
source
:
'
a
'
,
target
:
'
a2
'
,
value
:
3
,
lineStyle
:{
color
:
'
source
'
}
},
{
source
:
'
b
'
,
target
:
'
b1
'
,
value
:
8
,
lineStyle
:{
color
:
'
source
'
}
},
{
source
:
'
a
'
,
target
:
'
b1
'
,
value
:
3
,
lineStyle
:{
color
:
'
source
'
}
},
{
source
:
'
b1
'
,
target
:
'
a1
'
,
value
:
1
,
lineStyle
:{
color
:
'
source
'
}
},
{
source
:
'
b1
'
,
target
:
'
c
'
,
value
:
2
,
lineStyle
:{
color
:
'
source
'
}
}
]
data
:
data
,
links
:
links
}
})
}
...
...
portal-manager-ui/admin/src/views/dataActuary/behaviour/product/product.vue
View file @
b0f1c775
<
template
>
<!-- 产品分析 -->
<div
class=
"page"
>
<div
class=
"img-dv"
>
<img
:src=
"BASE_URL + img"
>
<div
class=
"img-dv"
>
<img
:src=
"BASE_URL + img"
ref=
"img"
>
<div
id=
"queuing"
></div>
</div>
<div
class=
"list-dv"
>
<a-form-model
:model=
"queryform"
:label-col=
"labelCol"
:wrapper-col=
"wrapperCol"
layout=
"inline"
>
<a-form-model-item>
<a-select
v-model=
"queryform.productId"
style=
"width: 200px"
placeholder=
"选择产品"
>
<a-select-option
:value=
"item.id"
v-for=
"(item,index) in product"
:key=
"index"
>
{{
item
.
title
}}
</a-select-option>
<a-select
v-model=
"queryform.productId"
style=
"width: 200px"
placeholder=
"选择产品"
>
<a-select-option
:value=
"item.id"
v-for=
"(item,index) in product"
:key=
"index"
>
{{
item
.
title
}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"time"
style=
"width: 300px"
:allowClear=
"false"
/>
<a-range-picker
valueFormat=
"yyyy-MM-DD"
v-model=
"time"
style=
"width: 300px"
:allowClear=
"false"
/>
</a-form-model-item>
<a-form-model-item>
<a-select
v-model=
"queryform.pageCode"
style=
"width:
200px"
>
<a-select-option
:value=
"item.id"
v-for=
"(item,index) in page"
:key=
"index"
>
{{
item
.
title
}}
</a-select-option>
<a-select
v-model=
"queryform.pageCode"
style=
"width:
410px"
>
<a-select-option
:value=
"item.id"
v-for=
"(item,index) in page"
:key=
"index"
>
{{
item
.
title
}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-button
type=
"primary"
>
<a-button
type=
"primary"
@
click=
"getList"
>
开始分析
</a-button>
</a-form-model-item>
...
...
@@ -44,32 +44,34 @@
</
template
>
<
script
>
import
Heatmap
from
'
heatmap.js
'
;
import
moment
from
'
moment
'
;
import
{
getProductHotCensus
}
from
'
@/api/dataActuary.js
'
import
Heatmap
from
'
heatmap.js
'
;
import
moment
from
'
moment
'
;
import
{
getProductHotCensus
}
from
'
@/api/dataActuary.js
'
export
default
{
data
()
{
return
{
queryform
:
{
productId
:
1
,
dateTimeStart
:
moment
().
format
(
'
yyyy-MM-DD
'
),
dateTimeEnd
:
moment
().
format
(
'
yyyy-MM-DD
'
),
pageCode
:
'
/
'
},
time
:
[
moment
().
format
(
'
yyyy-MM-DD
'
),
moment
().
format
(
'
yyyy-MM-DD
'
)],
product
:
[{
title
:
'
排队机
'
,
id
:
1
}],
page
:
[{
title
:
'
首页
'
,
id
:
'
/
'
}],
labelCol
:
{
span
:
1
},
wrapperCol
:
{
span
:
14
return
{
queryform
:
{
productId
:
1
,
dateTimeStart
:
moment
().
format
(
'
yyyy-MM-DD
'
),
dateTimeEnd
:
moment
().
format
(
'
yyyy-MM-DD
'
),
pageCode
:
'
/
'
},
time
:
[
moment
().
format
(
'
yyyy-MM-DD
'
),
moment
().
format
(
'
yyyy-MM-DD
'
)],
product
:
[{
title
:
'
排队机
'
,
id
:
1
}],
page
:
[{
title
:
'
首页
'
,
id
:
'
/
'
}],
labelCol
:
{
span
:
1
},
wrapperCol
:
{
span
:
14
},
columns
:
[{
title
:
"
序号
"
,
...
...
@@ -95,26 +97,45 @@
],
data
:
[],
heatmapInstance
:
null
,
dataPoint
:
[],
img
:
''
,
BASE_URL
:
process
.
env
.
VUE_APP_API_BASE_URL
dataPoint
:
[],
img
:
''
,
BASE_URL
:
process
.
env
.
VUE_APP_API_BASE_URL
+
'
/
'
}
},
mounted
()
{
this
.
getList
(
)
mounted
()
{
this
.
init
(
'
queuing
'
)
},
methods
:
{
getList
()
{
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
0
]
:
null
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
1
]
:
null
getProductHotCensus
(
this
.
queryform
).
then
(
res
=>
{
this
.
data
=
res
.
data
.
data
this
.
img
=
res
.
data
.
screenUrl
this
.
dataPoint
=
res
.
data
.
data
.
map
(({
x
,
y
,
value
})
=>
({
x
,
y
,
value
}))
this
.
init
(
'
queuing
'
,
this
.
dataPoint
)
})
methods
:
{
getList
()
{
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
0
]
:
null
this
.
queryform
.
dateTimeStart
=
this
.
time
?
this
.
time
[
1
]
:
null
getProductHotCensus
(
this
.
queryform
).
then
(
res
=>
{
this
.
data
=
res
.
data
.
data
this
.
img
=
res
.
data
.
screenUrl
let
imgSize
=
new
Image
();
imgSize
.
src
=
this
.
BASE_URL
+
this
.
img
;
imgSize
.
onload
=
()
=>
{
let
w
=
this
.
$refs
.
img
.
width
/
imgSize
.
width
let
h
=
this
.
$refs
.
img
.
height
/
imgSize
.
height
this
.
dataPoint
=
res
.
data
.
data
.
map
(({
x
,
y
,
value
})
=>
({
x
:
parseInt
(
x
*
w
),
y
:
parseInt
(
y
*
h
),
value
}))
let
data
=
{
max
:
10
,
min
:
0
,
data
:
this
.
dataPoint
};
this
.
heatmapInstance
.
setData
(
data
);
}
})
},
init
(
el
,
dataPoint
)
{
init
(
el
)
{
let
config
=
{
container
:
document
.
getElementById
(
el
),
radius
:
30
,
...
...
@@ -122,13 +143,8 @@
minOpacity
:
0
,
blur
:
.
5
};
this
.
heatmapInstance
=
Heatmap
.
create
(
config
);
let
data
=
{
max
:
10
,
min
:
0
,
data
:
this
.
dataPoint
};
this
.
heatmapInstance
.
setData
(
data
);
this
.
heatmapInstance
=
Heatmap
.
create
(
config
);
this
.
getList
()
}
}
};
...
...
@@ -142,20 +158,19 @@
.img-dv {
width: 60%;
min-height: 100%;
margin-top: 100px;
padding: 0 100px;
position: relative;
img{
width: 100%;
background-size: 100% 100%;
margin: 100px;
position: relative;
img {
width: 100%;
}
#queuing {
width:
calc(100% - 200px);
height: 100%;
position: absolute !important;
top: 0;
left:
100px;
width:
100%;
height: 100%;
position: absolute !important;
top: 0;
left:
0;
z-index: 999;
}
}
...
...
portal-manager-ui/admin/src/views/dataAdmin/components/Impossible/index.vue
View file @
b0f1c775
...
...
@@ -316,12 +316,13 @@
});
});
}
else
{
data
=
this
.
$_
.
cloneDeep
(
let
datas
=
this
.
$_
.
cloneDeep
(
await
getImpossible
({
page
:
1
,
size
:
-
1
})
);
);
data
=
datas
.
data
.
data
if
(
!
data
.
length
)
return
;
for
(
let
item
of
data
)
{
Object
.
keys
(
obj
).
forEach
((
key
)
=>
{
...
...
portal-manager-ui/admin/src/views/dataAdmin/components/networkGovernance/callRecordForm.vue
View file @
b0f1c775
...
...
@@ -2,16 +2,16 @@
<div
class=
"callRecord-Container"
>
<div
class=
"header_box"
>
<div>
<a-button
type=
"success"
@
click=
"e
xportTable"
>
<a-button
:loading=
"btnLoading"
type=
"success"
@
click=
"handleE
xportTable"
>
<span>
{{
tableSelectedRows
.
length
?
"
导出
"
:
"
导出全部
"
}}
</span>
</a-button>
<b>
拨打次数:
<i>
233
次
</i></b>
<b>
拨打次数:
<i>
{{
total
}}
次
</i></b>
</div>
<span>
<a-input
style=
"width:250px;"
v-model=
"searchName"
placeholder=
"请输入标题或姓名关键字搜索"
>
<a-icon
slot=
"prefix"
type=
"search"
/>
</a-input>
<a-button
type=
"primary"
>
搜索
</a-button>
<a-button
type=
"primary"
@
click=
"getList"
>
搜索
</a-button>
</span>
</div>
<div
class=
"main"
>
...
...
@@ -19,7 +19,7 @@
selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading"
:columns="tableHeaders" :dataSource="tableSourceData">
:columns="tableHeaders" :dataSource="tableSourceData"
>
</a-table>
</div>
</div>
...
...
@@ -27,7 +27,10 @@
<
script
>
import
table
from
"
@/mixins/table
"
;
import
{
getSys12345
}
from
"
@/api/dataAdmin
"
import
{
export2Excel
}
from
"
@/utils/js/exportExcel
"
;
export
default
{
mixins
:
[
table
],
name
:
"
callRecordForm
"
,
...
...
@@ -45,49 +48,55 @@ export default {
{
title
:
"
微信号
"
,
align
:
"
center
"
,
dataIndex
:
"
微信号
"
,
dataIndex
:
"
nickname
"
,
customRender
:
(
text
,
record
,
index
)
=>
`
${
record
.
nickname
||
'
--
'
}
`
},
{
title
:
"
电话号码
"
,
align
:
"
center
"
,
dataIndex
:
"
电话号码
"
,
dataIndex
:
"
phone
"
,
customRender
:
(
text
,
record
,
index
)
=>
`
${
record
.
phone
||
'
--
'
}
`
},
{
title
:
"
拨打位置
"
,
align
:
"
center
"
,
dataIndex
:
"
拨打位置
"
,
dataIndex
:
"
address
"
,
customRender
:
(
text
,
record
,
index
)
=>
`
${
record
.
address
||
'
--
'
}
`
},
{
title
:
"
拨打时间
"
,
align
:
"
center
"
,
dataIndex
:
"
拨打时间
"
,
dataIndex
:
"
create_time
"
,
customRender
:
(
text
,
record
,
index
)
=>
`
${
record
.
create_time
||
'
--
'
}
`
},
],
btnLoading
:
false
,
tableSelectedKeys
:
[],
tableSelectedRows
:
[],
BegindAndEndTime
:
[],
searchName
:
undefined
,
visible
:
false
,
total
:
0
};
},
components
:
{
},
mounted
()
{
this
.
setMoment
();
for
(
let
key
=
0
;
key
<
20
;
key
++
)
{
this
.
tableSourceData
.
push
({
id
:
`00
${
key
+
1
}
`
,
微信号
:
`liudefa
${
key
+
1
}
`
,
电话号码
:
`1388888888888`
,
拨打位置
:
`四川省成都市武侯区天益街1号理想中心3栋170
${
key
+
1
}
号`
,
拨打时间
:
`2022-09-26 13:30:00`
});
}
this
.
getList
();
},
methods
:
{
getList
(){
getSys12345
({
phone
:
this
.
searchName
}).
then
(
res
=>
{
this
.
tableSourceData
=
res
.
data
.
data
this
.
total
=
res
.
data
.
total
})
},
rangePickerChange
(
val
)
{
console
.
log
(
val
);
},
QueueState
(
type
)
{
switch
(
type
)
{
case
0
:
...
...
@@ -98,7 +107,61 @@ export default {
return
"
type0
"
;
}
},
// 选中
onSelectChange
(
keys
,
rows
)
{
this
.
tableSelectedKeys
=
keys
;
const
res
=
new
Map
();
this
.
tableSelectedRows
=
[...
this
.
tableSelectedRows
,
...
rows
]
.
filter
((
v
)
=>
{
return
!
res
.
has
(
v
.
id
)
&&
res
.
set
(
v
.
id
,
1
);
})
.
filter
((
v
)
=>
{
return
this
.
tableSelectedKeys
.
some
((
val
)
=>
v
.
id
==
val
);
});
},
// 导出
async
handleExportTable
()
{
this
.
btnLoading
=
true
;
let
obj
=
{
1
:
"
本地打印
"
,
2
:
"
在线提交
"
,
};
let
data
=
[];
if
(
this
.
tableSelectedKeys
.
length
&&
this
.
tableSelectedRows
.
length
)
{
// 深度克隆避免影响页面表格展示
data
=
this
.
$_
.
cloneDeep
(
this
.
tableSelectedRows
);
data
.
forEach
((
item
)
=>
{
Object
.
keys
(
obj
).
forEach
((
keys
)
=>
{
if
(
item
.
type
==
keys
)
{
item
.
type
=
obj
[
keys
];
}
});
});
}
else
{
let
datas
=
this
.
$_
.
cloneDeep
(
await
getSys12345
({
page
:
1
,
size
:
-
1
})
);
data
=
datas
.
data
.
data
if
(
!
data
.
length
)
return
;
for
(
let
item
of
data
)
{
Object
.
keys
(
obj
).
forEach
((
key
)
=>
{
if
(
item
.
type
==
key
)
{
item
.
type
=
obj
[
key
];
}
});
}
}
export2Excel
(
this
.
tHeader
,
this
.
filterVal
,
data
,
"
填单记录报表
"
+
this
.
$moment
().
format
(
"
YYYYMMDDHHmmss
"
)
);
this
.
btnLoading
=
false
;
},
showDrawer
()
{
this
.
visible
=
true
;
},
...
...
portal-manager-ui/admin/src/views/dataAdmin/components/networkGovernance/networkForm.vue
View file @
b0f1c775
...
...
@@ -11,31 +11,32 @@
</div>
<span>
<a-space>
<a-checkbox
@
change=
"changeReply"
>
<a-checkbox
@
change=
"changeReply"
v-model=
"isReply"
>
只看未回复
</a-checkbox>
<a-select
placeholder=
"全部类型"
@
change=
"changeType"
>
<a-select
placeholder=
"全部类型"
v-model=
"nowType"
@
change=
"changeType"
>
<a-select-option
value=
"1"
>
部门建议
</a-select-option>
<a-select-option
value=
"2"
>
办事建议
</a-select-option>
<a-select-option
value=
"3"
>
网站建议
</a-select-option>
<a-select-option
value=
"4"
>
我要就错
</a-select-option>
<a-select-option
value=
"5"
>
我要投诉
</a-select-option>
</a-select>
<a-select
placeholder=
"全部来源"
@
change=
"changeDevice"
>
<a-select
placeholder=
"全部来源"
v-model=
"nowDevice"
@
change=
"changeDevice"
>
<a-select-option
value=
"1"
>
评价系统
</a-select-option>
<a-select-option
value=
"2"
>
导视系统
</a-select-option>
<a-select-option
value=
"3"
>
自助服务系统
</a-select-option>
<a-select-option
value=
"4"
>
微官网
</a-select-option>
<a-select-option
value=
"5"
>
数字填单系统
</a-select-option>
</a-select>
<a-range-picker
style=
"width:250px;"
format=
"YYYY
年MM月DD日
"
class=
"range_picker_style"
@
change=
"rangePickerChange"
>
<a-range-picker
style=
"width:250px;"
format=
"YYYY
-MM-DD
"
class=
"range_picker_style"
@
change=
"rangePickerChange"
v-model=
"timeList"
>
</a-range-picker>
<a-input
style=
"width:250px;"
v-model=
"searchName"
placeholder=
"请输入标题或姓名关键字搜索"
>
<a-icon
slot=
"prefix"
type=
"search"
/>
</a-input>
<a-button
type=
"primary"
@
click=
"togetWLLZCount"
>
搜索
</a-button>
<a-button
@
click=
"resetting"
>
重置
</a-button>
</a-space>
</span>
</div>
...
...
@@ -153,8 +154,8 @@ export default {
visible
:
false
,
nowSite
:
null
,
//当前站点
isReply
:
false
,
//是否回复
nowType
:
null
,
//当前类型
nowDevice
:
null
,
// 来源
nowType
:
undefined
,
//当前类型
nowDevice
:
undefined
,
// 来源
timeList
:[],
// 时间
JYCount
:
0
,
//建议次数
HFCount
:
0
,
//回复次数
...
...
@@ -166,7 +167,7 @@ export default {
mounted
()
{
this
.
setMoment
();
// 设置默认时间为今天
this
.
timeList
=
[
this
.
$moment
(
new
Date
()).
format
(
"
YYYY-MM-DD
"
),
this
.
$moment
(
new
Date
()
).
format
(
"
YYYY-MM-DD
"
)]
this
.
timeList
=
[
this
.
$moment
(
).
format
(
"
YYYY-MM-DD
"
),
this
.
$moment
(
).
format
(
"
YYYY-MM-DD
"
)]
this
.
nowSite
=
localStorage
.
getItem
(
'
siteId
'
);
this
.
togetWLLZCount
()
},
...
...
@@ -176,6 +177,15 @@ export default {
}
},
methods
:
{
//重置
resetting
()
{
this
.
timeList
=
[
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
),
this
.
$moment
().
format
(
"
YYYY-MM-DD
"
)]
this
.
nowType
=
undefined
this
.
nowDevice
=
undefined
this
.
searchName
=
undefined
this
.
isReply
=
false
this
.
togetWLLZCount
()
},
// 重写导出
toexportTable
()
{
let
tableData
=
[];
...
...
portal-manager-ui/admin/src/views/dataAdmin/components/serviceDataAnalyse/crowdPortrait.vue
View file @
b0f1c775
...
...
@@ -282,7 +282,7 @@
type
:
'
map
'
,
mapType
:
'
china
'
,
top
:
'
30%
'
,
left
:
'
2
0
%
'
,
left
:
'
2
5
%
'
,
zoom
:
1.7
,
label
:
{
// 地图上的文字
normal
:
{
...
...
@@ -327,7 +327,7 @@
map
:
'
china
'
,
top
:
'
30%
'
,
aspectScale
:
0.75
,
// 长宽比
left
:
'
2
0
%
'
,
left
:
'
2
5
%
'
,
zoom
:
1.7
,
roam
:
false
,
itemStyle
:
{
...
...
@@ -396,7 +396,7 @@
}
&>._right {
width:
35
%;
width:
40
%;
padding: 15px;
.list {
...
...
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