Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Y
yishuju-ui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
何远江
yishuju-ui
Commits
98fcf58a
Commit
98fcf58a
authored
Mar 14, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
客户报告临时提交
parent
4a4db135
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
457 additions
and
152 deletions
+457
-152
customer.js
src/api/customer.js
+8
-0
index.ts
src/components/ECharts/config/index.ts
+4
-1
ChinaMapChart.vue
src/views/data-screen/components/ChinaMapChart.vue
+400
-145
index.scss
src/views/data-screen/index.scss
+1
-1
index.vue
src/views/infoGather/customerGather/index.vue
+35
-3
dangerReportDetail.vue
...infoGather/dangerReport/components/dangerReportDetail.vue
+9
-2
No files found.
src/api/customer.js
View file @
98fcf58a
...
...
@@ -27,3 +27,11 @@ export const saveContract = (data) => {
export
const
flowStatusByIds
=
(
data
)
=>
{
return
request
.
get
(
'/Contract/flowStatusByIds'
,
data
);
};
// 发起客户报告
export
const
sendReport
=
(
id
)
=>
{
return
request
.
get
(
'/customerReport/sendReport?customerId='
+
id
);
};
// 根据id获取客户详情
export
const
getByIdcustomerReport
=
(
id
)
=>
{
return
request
.
get
(
'/customerReport/getById?id='
+
id
);
};
\ No newline at end of file
src/components/ECharts/config/index.ts
View file @
98fcf58a
import
*
as
echarts
from
"echarts/core"
;
import
{
BarChart
,
LineChart
,
LinesChart
,
PieChart
,
ScatterChart
,
RadarChart
,
GaugeChart
}
from
"echarts/charts"
;
import
{
BarChart
,
LineChart
,
LinesChart
,
PieChart
,
ScatterChart
,
RadarChart
,
GaugeChart
,
MapChart
}
from
"echarts/charts"
;
import
{
TitleComponent
,
TooltipComponent
,
...
...
@@ -8,6 +8,7 @@ import {
TransformComponent
,
LegendComponent
,
PolarComponent
,
VisualMapComponent
,
GeoComponent
,
ToolboxComponent
,
DataZoomComponent
...
...
@@ -53,6 +54,7 @@ echarts.use([
EffectScatterChart
,
TitleComponent
,
TooltipComponent
,
VisualMapComponent
,
GridComponent
,
DatasetComponent
,
TransformComponent
,
...
...
@@ -63,6 +65,7 @@ echarts.use([
DataZoomComponent
,
BarChart
,
LineChart
,
MapChart
,
LinesChart
,
PieChart
,
ScatterChart
,
...
...
src/views/data-screen/components/ChinaMapChart.vue
View file @
98fcf58a
...
...
@@ -11,169 +11,424 @@ import echarts, { ECOption } from "@/components/ECharts/config";
import
ECharts
from
"@/components/ECharts/index.vue"
;
import
mapJson
from
"../assets/china.json"
;
echarts
.
registerMap
(
"china"
,
mapJson
as
Parameters
<
typeof
echarts
.
registerMap
>
[
1
]);
//
echarts.registerMap("china", mapJson as Parameters
<
typeof
echarts
.
registerMap
>
[
1
]);
var
geoCoordMap
=
{
台湾
:
[
121.5135
,
25.0308
],
哈尔滨
:
[
127.9688
,
45.368
],
内蒙古
:
[
110.3467
,
41.4899
],
吉林
:
[
125.8154
,
44.2584
],
北京市
:
[
116.4551
,
40.2539
],
沈阳
:
[
123.1238
,
42.1216
],
石家庄
:
[
114.4995
,
38.1006
],
天津
:
[
117.4219
,
39.4189
],
山西
:
[
112.3352
,
37.9413
],
西安
:
[
109.1162
,
34.2004
],
甘肃
:
[
103.5901
,
36.3043
],
宁夏
:
[
106.3586
,
38.1775
],
青海
:
[
101.4038
,
36.8207
],
新疆
:
[
87.9236
,
43.5883
],
西藏
:
[
91.11
,
29.97
],
成都
:
[
103.9526
,
30.7617
],
重庆
:
[
108.384366
,
30.439702
],
青岛
:
[
117.1582
,
36.8701
],
河南
:
[
113.4668
,
34.6234
],
江苏
:
[
118.8062
,
31.9208
],
安徽
:
[
117.29
,
32.0581
],
武汉
:
[
114.3896
,
30.6628
],
浙江
:
[
119.5313
,
29.8773
],
福州
:
[
119.4543
,
25.9222
],
江西
:
[
116.0046
,
28.6633
],
湖南
:
[
113.0823
,
28.2568
],
贵州
:
[
106.6992
,
26.7682
],
云南
:
[
102.9199
,
25.4663
],
广州
:
[
113.12244
,
23.009505
],
广西
:
[
108.479
,
23.1152
],
海南
:
[
110.3893
,
19.8516
],
上海
:
[
121.4648
,
31.2891
],
};
//
var geoCoordMap = {
//
台湾: [121.5135, 25.0308],
//
哈尔滨: [127.9688, 45.368],
//
内蒙古: [110.3467, 41.4899],
//
吉林: [125.8154, 44.2584],
//
北京市: [116.4551, 40.2539],
//
沈阳: [123.1238, 42.1216],
//
石家庄: [114.4995, 38.1006],
//
天津: [117.4219, 39.4189],
//
山西: [112.3352, 37.9413],
//
西安: [109.1162, 34.2004],
//
甘肃: [103.5901, 36.3043],
//
宁夏: [106.3586, 38.1775],
//
青海: [101.4038, 36.8207],
//
新疆: [87.9236, 43.5883],
//
西藏: [91.11, 29.97],
//
成都: [103.9526, 30.7617],
//
重庆: [108.384366, 30.439702],
//
青岛: [117.1582, 36.8701],
//
河南: [113.4668, 34.6234],
//
江苏: [118.8062, 31.9208],
//
安徽: [117.29, 32.0581],
//
武汉: [114.3896, 30.6628],
//
浙江: [119.5313, 29.8773],
//
福州: [119.4543, 25.9222],
//
江西: [116.0046, 28.6633],
//
湖南: [113.0823, 28.2568],
//
贵州: [106.6992, 26.7682],
//
云南: [102.9199, 25.4663],
//
广州: [113.12244, 23.009505],
//
广西: [108.479, 23.1152],
//
海南: [110.3893, 19.8516],
//
上海: [121.4648, 31.2891],
//
};
var
convertData
=
function
(
data
)
{
var
res
=
[];
for
(
var
i
=
0
;
i
<
data
.
length
;
i
++
)
{
var
geoCoord
=
geoCoordMap
[
data
[
i
].
name
];
if
(
geoCoord
)
{
res
.
push
({
name
:
data
[
i
].
name
,
value
:
geoCoord
.
concat
(
data
[
i
].
value
),
});
}
}
return
res
;
};
//
var convertData = function(data) {
//
var res = [];
//
for (var i = 0; i
<
data
.
length
;
i
++
)
{
//
var geoCoord = geoCoordMap[data[i].name];
//
if (geoCoord) {
//
res.push({
//
name: data[i].name,
//
value: geoCoord.concat(data[i].value),
//
});
//
}
//
}
//
return res;
//
};
var
data
=
[
{
name
:
"北京市"
,
value
:
300
},
{
name
:
"石家庄"
,
value
:
300
},
{
name
:
"沈阳"
,
value
:
300
},
{
name
:
"哈尔滨"
,
value
:
300
},
{
name
:
"青岛"
,
value
:
100
},
{
name
:
"成都"
,
value
:
200
},
{
name
:
"武汉"
,
value
:
250
},
{
name
:
"西安"
,
value
:
270
},
{
name
:
"广州"
,
value
:
300
},
{
name
:
"福州"
,
value
:
300
}
var
mapData
=
[{
name
:
"北京"
,
devicesCount
:
100
,
//总数
feiyue1
:
40
,
//肺悦1个数
feiyue2
:
60
,
//肺悦2个数
value
:
10
,
//使用个数
devicesUseLv
:
'40%'
,
//使用率
},
{
name
:
"天津"
,
devicesCount
:
50
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
20
,
devicesUseLv
:
'20%'
,
},
{
name
:
"上海"
,
devicesCount
:
80
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
30
,
devicesUseLv
:
'20%'
,
},
{
name
:
"重庆"
,
devicesCount
:
90
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"河北"
,
devicesCount
:
130
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
50
,
devicesUseLv
:
'20%'
,
},
{
name
:
"河南"
,
devicesCount
:
160
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
80
,
devicesUseLv
:
'20%'
,
},
{
name
:
"云南"
,
devicesCount
:
110
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"辽宁"
,
devicesCount
:
320
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
120
,
devicesUseLv
:
'20%'
,
},
{
name
:
"黑龙江"
,
devicesCount
:
80
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"湖南"
,
devicesCount
:
60
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
10
,
devicesUseLv
:
'20%'
,
},
{
name
:
"安徽"
,
devicesCount
:
300
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
270
,
devicesUseLv
:
'20%'
,
},
{
name
:
"山东"
,
devicesCount
:
50
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
9
,
devicesUseLv
:
'20%'
,
},
{
name
:
"新疆"
,
devicesCount
:
40
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
0
,
devicesUseLv
:
'20%'
,
},
{
name
:
"江苏"
,
devicesCount
:
240
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"浙江"
,
devicesCount
:
450
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
300
,
devicesUseLv
:
'20%'
,
},
{
name
:
"江西"
,
devicesCount
:
20
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
4
,
devicesUseLv
:
'20%'
,
},
{
name
:
"湖北"
,
devicesCount
:
50
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"广西"
,
devicesCount
:
10
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
0
,
devicesUseLv
:
'20%'
,
},
{
name
:
"甘肃"
,
devicesCount
:
20
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
1
,
devicesUseLv
:
'20%'
,
},
{
name
:
"山西"
,
devicesCount
:
230
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
140
,
devicesUseLv
:
'20%'
,
},
{
name
:
"内蒙古"
,
devicesCount
:
200
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
0
,
devicesUseLv
:
'20%'
,
},
{
name
:
"陕西"
,
devicesCount
:
30
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"吉林"
,
devicesCount
:
77
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"福建"
,
devicesCount
:
55
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
8
,
devicesUseLv
:
'20%'
,
},
{
name
:
"贵州"
,
devicesCount
:
55
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
7
,
devicesUseLv
:
'20%'
,
},
{
name
:
"广东省"
,
devicesCount
:
44
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
6
,
devicesUseLv
:
'20%'
,
},
{
name
:
"青海"
,
devicesCount
:
33
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
5
,
devicesUseLv
:
'20%'
,
},
{
name
:
"西藏"
,
devicesCount
:
10
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
4
,
devicesUseLv
:
'20%'
,
},
{
name
:
"四川"
,
devicesCount
:
99
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
20
,
devicesUseLv
:
'20%'
,
},
{
name
:
"宁夏"
,
devicesCount
:
145
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
40
,
devicesUseLv
:
'20%'
,
},
{
name
:
"海南"
,
devicesCount
:
122
,
feiyue1
:
40
,
feiyue2
:
60
,
value
:
90
,
devicesUseLv
:
'20%'
,
},
{
name
:
"台湾"
,
devicesCount
:
10
,
feiyue1
:
4
,
feiyue2
:
6
,
value
:
0
,
devicesUseLv
:
'20%'
,
},
{
name
:
"香港"
,
devicesCount
:
0
,
feiyue1
:
0
,
feiyue2
:
0
,
value
:
0
,
devicesUseLv
:
'0%'
,
},
{
name
:
"澳门"
,
devicesCount
:
0
,
feiyue1
:
0
,
feiyue2
:
0
,
value
:
0
,
devicesUseLv
:
'0%'
,
}
];
const
option
:
ECOption
=
{
tooltip
:
{
trigger
:
"item"
,
formatter
:
function
(
params
,
ticket
,
callback
)
{
if
(
params
.
seriesType
==
"effectScatter"
)
{
console
.
log
(
'params'
,
params
)
return
params
.
data
.
name
+
":"
+
params
.
data
.
name
+
'调解中心'
+
'<br />'
+
'案件总数:'
+
params
.
data
.
value
[
2
]
+
'<br />'
+
'案件总金额:'
+
params
.
data
.
value
[
2
];
}
else
{
return
params
.
name
;
show
:
true
,
formatter
:
function
(
params
)
{
if
(
params
.
value
){
return
' '
+
params
.
name
+
' '
+
params
.
value
+
'个 '
;
}
else
{
return
' '
+
params
.
name
+
' 0个 '
;
}
}
},
grid
:
{
left
:
"0px"
,
right
:
"80px"
,
top
:
"10px"
,
bottom
:
"10px"
visualMap
:
{
min
:
0
,
left
:
26
,
bottom
:
40
,
showLabel
:
!
0
,
text
:
[
"高"
,
"低"
],
pieces
:
[{
gt
:
200
,
label
:
"1 - 9 人"
,
color
:
"#8616fe"
},
{
gt
:
100
,
lt
:
200
,
label
:
"疑似"
,
color
:
"#6b1dfd"
},
{
value
:
0
,
color
:
"rbga(255, 255, 255, 0.5)"
}],
show
:
!
0
},
geo
:
{
map
:
"china"
,
map
:
'china'
,
show
:
true
,
roam
:
false
,
label
:
{
emphasis
:
{
show
:
false
,
color
:
"#fff"
show
:
false
},
normal
:
{
show
:
false
,
color
:
"#fff"
},
show
:
false
}
},
// 放大我们的地图
zoom
:
1.2
,
itemStyle
:
{
normal
:
{
areaColor
:
"rgba(43, 196, 243, 0.42)"
,
borderColor
:
"rgba(43, 196, 243, 1)"
,
borderWidth
:
1
},
emphasis
:
{
areaColor
:
"#2B91B7"
show
:
false
}
}
},
series
:
[
{
name
:
'散点'
,
type
:
'scatter'
,
coordinateSystem
:
'geo'
,
data
:
convertData
(
data
),
name
:
"确诊病例"
,
type
:
"map"
,
map
:
'china'
,
aspectScale
:
0.75
,
zoom
:
1.3
,
label
:
{
normal
:
{
formatter
:
'{b}'
,
position
:
'right'
,
show
:
true
,
fontSize
:
16
,
color
:
'#fff'
formatter
:
function
(
para
)
{
return
'{name|'
+
para
.
name
+
'}'
},
emphasis
:
{
show
:
true
}
rich
:
{
cnNum
:
{
fontSize
:
11
,
color
:
'#333333'
,
align
:
'center'
,
},
itemStyl
e
:
{
normal
:
{
color
:
'#fff'
}
}
nam
e
:
{
fontSize
:
11
,
color
:
'#333333'
,
align
:
'center'
,
lineHeight
:
20
,
},
{
name
:
'Top 5'
,
type
:
'effectScatter'
,
coordinateSystem
:
'geo'
,
data
:
convertData
(
data
.
sort
(
function
(
a
,
b
)
{
return
b
.
value
-
a
.
value
;
})),
symbolSize
:
function
(
val
)
{
return
val
[
2
]
/
10
;
},
showEffectOn
:
'render
'
,
rippleEffect
:
{
brushType
:
'stroke'
//formatter: '{b}
',
color
:
'#333333'
,
show
:
true
},
hoverAnimation
:
true
,
label
:
{
normal
:
{
formatter
:
'{b}'
,
position
:
'left'
,
show
:
false
emphasis
:
{
show
:
true
,
}
},
itemStyle
:
{
normal
:
{
color
:
'#fff'
,
shadowBlur
:
10
,
shadowColor
:
'#fff'
areaColor
:
'#D9EEFF'
,
borderColor
:
'#fff'
,
borderWidth
:
1
,
},
emphasis
:
{
areaColor
:
'#FFAE00'
,
}
},
zlevel
:
1
data
:
mapData
}
]
};
...
...
src/views/data-screen/index.scss
View file @
98fcf58a
.dataScreen-container
{
width
:
100%
;
height
:
100%
;
background
:
#
00204b
;
background
:
#
140f59
;
.dataScreen-content
{
position
:
fixed
;
top
:
50%
;
...
...
src/views/infoGather/customerGather/index.vue
View file @
98fcf58a
...
...
@@ -11,7 +11,7 @@
>
新建网贷
&
信用贷
</el-button
>
-->
<el-button
type=
"primary"
@
click=
"pushCustomer()"
>
新建客户
</el-button>
<
el-button
type=
"primary"
>
发起风控审核
</el-button
>
<
!--
<el-button
type=
"primary"
>
发起风控审核
</el-button>
--
>
</
template
>
</ProTable>
</div>
...
...
@@ -20,7 +20,7 @@
<
script
setup
lang=
"jsx"
name=
"platformManage"
>
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
;
import
{
Plus
,
Delete
,
Edit
,
Setting
}
from
'@element-plus/icons-vue'
;
import
{
getCustomerPage
}
from
'@/api/customer'
;
import
{
getCustomerPage
,
sendReport
}
from
'@/api/customer'
;
import
{
ElMessageBox
,
ElMessage
,
ElButton
,
ElTag
}
from
'element-plus'
;
import
{
useRouter
}
from
'vue-router'
;
...
...
@@ -59,6 +59,22 @@
query
:
{
id
:
44
},
//这里不能直接写成 query: JSON.stringify(item)
});
};
const
send
=
async
(
e
,
row
)
=>
{
e
.
stopPropagation
()
await
ElMessageBox
.
confirm
(
`是否分起客户名称为
${
row
.
name
}
,身份证号为
${
row
.
idCard
}
,创建时间为
${
row
.
createTime
}
的风控审核?`
,
'提示'
,
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
});
sendReport
(
row
.
id
).
then
(
res
=>
{
if
(
res
.
success
)
{
router
.
push
({
path
:
'/infoGather/dangerReport/dangerReportDetail'
,
query
:
res
.
result
?
{
id
:
res
.
result
.
id
}:
{},
//这里不能直接写成 query: JSON.stringify(item)
});
}
})
}
const
onCellClick
=
({
row
,
rowIndex
})
=>
{
pushCustomer
(
row
)
}
...
...
@@ -67,7 +83,7 @@
onCheckboxAll
:
onCheckboxAll
,
onCellClick
:
onCellClick
,
columns
:
[
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
//
{ type: 'checkbox', width: 60,fixed: 'left' },
{
field
:
'name'
,
title
:
'客户名称'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'createTime'
,
...
...
@@ -89,6 +105,22 @@
{
field
:
'reserveWorkUnit'
,
title
:
'预留工作单位'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'reserveAddress'
,
title
:
'预留家庭地址'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'remark'
,
title
:
'备注'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'code'
,
title
:
'操作'
,
width
:
100
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
ElButton
type
=
"primary"
onClick
=
{(
e
)
=>
send
(
e
,
row
)}
>
发起风控审核
<
/ElButton
>
<
/
>
);
},
},
},
],
});
...
...
src/views/infoGather/dangerReport/components/dangerReportDetail.vue
View file @
98fcf58a
...
...
@@ -266,6 +266,7 @@
import
{
ElButton
,
ElTag
,
ElMessage
}
from
'element-plus'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
getByIdcustomerReport
}
from
'@/api/customer'
;
import
{
ref
,
reactive
,
onBeforeMount
}
from
'vue'
;
const
form
=
ref
({
status
:
''
...
...
@@ -313,10 +314,16 @@ const cancel = () => {
});
}
const
query
=
async
(
type
)
=>
{
const
id
=
JSON
.
parse
(
route
.
query
.
id
);
getByIdcustomerReport
(
route
.
query
.
id
).
then
(
res
=>
{
if
(
res
.
success
)
{
form
.
value
=
res
.
result
}
})
}
onBeforeMount
(
async
()
=>
{
if
(
route
.
query
.
id
)
{
query
()
}
})
const
cardConfig
=
reactive
({
minHeight
:
200
,
...
...
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