feat:飞线图开发

main
liu.tao3 2 years ago
parent 4415112fc4
commit a8c4e3a469

@ -0,0 +1,282 @@
<template>
<div
style="width: 100%; height: 100%"
class="bs-design-wrap bs-bar"
>
<div
:id="`chart${config.code}`"
style="width: 100%; height: 100%"
/>
</div>
</template>
<script>
import 'insert-css'
import * as echarts from 'echarts'
import {nameMap} from './json/mapData.js'
import commonMixins from 'data-room-ui/js/mixins/commonMixins.js'
import paramsMixins from 'data-room-ui/js/mixins/paramsMixins'
import linkageMixins from 'data-room-ui/js/mixins/linkageMixins'
export default {
name: 'MapCharts',
mixins: [paramsMixins, commonMixins, linkageMixins],
props: {
id: {
type: String,
default: ''
},
config: {
type: Object,
default: () => ({})
}
},
data () {
return {
charts: null,
hasData: false
}
},
computed: {
Data () {
return JSON.parse(JSON.stringify(this.config))
}
},
watch: {
Data: {
handler (newVal, oldVal) {
if (newVal.w !== oldVal.w || newVal.h !== oldVal.h) {
this.$nextTick(() => {
this.charts.resize()
})
}
},
deep: true
}
},
mounted () {
this.chartInit()
},
beforeDestroy () {
this.charts?.clear()
},
methods: {
chartInit () {
const config = this.config
// keycodelist
if (this.config.code === this.config.key || this.isPreview) {
//
this.changeDataByCode(config).then((res) => {
//
// config = this.changeStyle(res)
this.newChart(config)
}).catch(() => {})
} else {
// changeStylekey,chart
this.changeData(config).then((res) => {
//
this.newChart(res)
})
}
},
dataFormatting (config, data) {
config.option = {
...config.option,
data: data?.data
}
return config
},
async newChart (config) {
this.charts = echarts.init(
document.getElementById(`chart${this.config.code}`)
)
const lines_coord = []
let fromCoord=[]
let coord=[]
const mapUrl =config.customize.level==='world'?`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/worldMap/world.json`:`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${config.customize.level}/${config.customize.dataMap}`
this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true).then(res=>{
this.config.option.data.forEach(val => {
lines_coord.push({value:val.value,msg:{...val}, coords:[[val.lat1,val.lng1],[val.lat2,val.lng2]]})
if(val.type==='move_in'){
coord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
fromCoord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
}
if(val.type==='move_out'){
coord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
fromCoord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
}
})
echarts.registerMap(config.customize.scope, res)
const option = {
// nameMap: nameMap,
graphic: [
],
geo: {
map: config.customize.scope,
zlevel: 10,
show:true,
layoutCenter: ['50%', '50%'],
roam: true,
layoutSize: "100%",
zoom: 1,
label: {
//
normal: {
show: config.customize.mapName,
textStyle: {
color: '#fff'
}
},
//
emphasis: {
textStyle: {
color: '#fff'
}
}
},
//
itemStyle: {
normal: {
borderColor: config.customize.mapLineColor,
borderWidth: 1,
areaColor: config.customize.areaColor,
shadowColor: 'fffff',
shadowOffsetX: -2,
shadowOffsetY: 2,
shadowBlur: 10
},
//
emphasis: {
areaColor: '#389BB7',
borderWidth: 0
}
}
},
tooltip: {
backgroundColor: config.customize.tooltipBackgroundColor,
borderColor: config.customize.borderColor,
show: true,
textStyle: {
color: config.customize.fontColor,
},
},
series: [
{
type:'effectScatter',
coordinateSystem: 'geo',
zlevel: 15,
symbolSize:8,
rippleEffect: {
period: 4, brushType: 'stroke', scale: 4
},
tooltip: {
trigger: 'item',
formatter(params) {
const a= eval(config.customize.scatterFormatter)
return a
},
},
itemStyle:{
color:config.customize.scatterColor,
opacity:1
},
data:coord
},
{
type:'effectScatter',
coordinateSystem: 'geo',
zlevel: 15,
symbolSize:12,
tooltip: {
trigger: 'item',
formatter(params) {
const a= eval(config.customize.scatterFormatter)
return a
},
},
rippleEffect: {
period: 6, brushType: 'stroke', scale: 8
},
itemStyle:{
color:config.customize.scatterCenterColor,
opacity:1
},
data:fromCoord
},
{
type:'lines',
coordinateSystem:'geo',
zlevel: 15,
tooltip: {
trigger: 'item',
formatter(params) {
const a= eval(config.customize.lineFormatter)
return a
},
},
effect: {
show: true, period: 5, trailLength: 0, symbol: config.customize.symbol, color:config.customize.symbolColor,symbolSize: config.customize.symbolSize,
},
lineStyle: {
normal: {color: function(value){
return '#ffffff'
},width: 2, opacity: 0.6, curveness: 0.2 }
},
data:lines_coord
}
]
}
if (config.customize.visual) {
option.visualMap = {
show: false,
min: config.customize.range[0],
max: config.customize.range[1],
seriesIndex: [0,2],
inRange: {
color: config.customize.rangeColor
}
}
}
if(config.customize.down){
config?.customize?.graphic?.forEach((item,index)=>{
option.graphic.push({
type: "text",
left: `${(index+1) * 200}px`,
top: "2%",
style: {
text: item,
font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
fill: config.customize.fontGraphicColor,
},
onclick:()=>{
console.log(item,item=='中华人民共和国'?'country': 'province')
const arr=config.customize.graphic.slice(0,index+1)
console.log(arr,config.customize.graphic)
this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${item}.json`,graphic:[...arr],level:item=='中华人民共和国'?'country': 'province'}})
}
},)
})
}
this.charts.setOption(option)
this.charts.on('click', (params)=> {
if(params.name=='') return
if(config.customize.down===false||config.customize.level==='province') return
this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${params.name}.json`,graphic:[...config.customize.graphic,params.name], level:config.customize.level==='country'?'province':'country'} })
});
})
}
}
}
</script>
<style lang="scss" scoped>
@import '../../assets/style/echartStyle';
.light-theme {
background-color: #ffffff;
color: #000000;
}
.auto-theme {
background-color: rgba(0, 0, 0, 0);
}
</style>

@ -0,0 +1,219 @@
export const nameMap = {
Afghanistan: '阿富汗',
Singapore: '新加坡',
Angola: '安哥拉',
Albania: '阿尔巴尼亚',
'United Arab Emirates': '阿联酋',
Argentina: '阿根廷',
Armenia: '亚美尼亚',
'French Southern and Antarctic Lands':
'法属南半球和南极领地',
Australia: '澳大利亚',
Austria: '奥地利',
Azerbaijan: '阿塞拜疆',
Burundi: '布隆迪',
Belgium: '比利时',
Benin: '贝宁',
'Burkina Faso': '布基纳法索',
Bangladesh: '孟加拉国',
Bulgaria: '保加利亚',
'The Bahamas': '巴哈马',
'Bosnia and Herzegovina': '波斯尼亚和黑塞哥维那',
Belarus: '白俄罗斯',
Belize: '伯利兹',
Bermuda: '百慕大',
Bolivia: '玻利维亚',
Brazil: '巴西',
Brunei: '文莱',
Bhutan: '不丹',
Botswana: '博茨瓦纳',
'Central African Republic': '中非共和国',
Canada: '加拿大',
Switzerland: '瑞士',
Chile: '智利',
China: '中国',
'Ivory Coast': '象牙海岸',
Cameroon: '喀麦隆',
'Democratic Republic of the Congo': '刚果民主共和国',
'Republic of the Congo': '刚果共和国',
Colombia: '哥伦比亚',
'Costa Rica': '哥斯达黎加',
Cuba: '古巴',
'Northern Cyprus': '北塞浦路斯',
Cyprus: '塞浦路斯',
'Czech Republic': '捷克共和国',
Germany: '德国',
Djibouti: '吉布提',
Denmark: '丹麦',
'Dominican Republic': '多明尼加共和国',
Algeria: '阿尔及利亚',
Ecuador: '厄瓜多尔',
Egypt: '埃及',
Eritrea: '厄立特里亚',
Spain: '西班牙',
Estonia: '爱沙尼亚',
Ethiopia: '埃塞俄比亚',
Finland: '芬兰',
Fiji: '斐',
'Falkland Islands': '福克兰群岛',
France: '法国',
Gabon: '加蓬',
'United Kingdom': '英国',
Georgia: '格鲁吉亚',
Ghana: '加纳',
Guinea: '几内亚',
Gambia: '冈比亚',
'Guinea Bissau': '几内亚比绍',
Greece: '希腊',
Greenland: '格陵兰',
Guatemala: '危地马拉',
'French Guiana': '法属圭亚那',
Guyana: '圭亚那',
Honduras: '洪都拉斯',
Croatia: '克罗地亚',
Haiti: '海地',
Hungary: '匈牙利',
Indonesia: '印度尼西亚',
India: '印度',
Ireland: '爱尔兰',
Iran: '伊朗',
Iraq: '伊拉克',
Iceland: '冰岛',
Israel: '以色列',
Italy: '意大利',
Jamaica: '牙买加',
Jordan: '约旦',
Japan: '日本',
Kazakhstan: '哈萨克斯坦',
Kenya: '肯尼亚',
Kyrgyzstan: '吉尔吉斯斯坦',
Cambodia: '柬埔寨',
Kosovo: '科索沃',
Kuwait: '科威特',
Laos: '老挝',
Lebanon: '黎巴嫩',
Liberia: '利比里亚',
Libya: '利比亚',
'Sri Lanka': '斯里兰卡',
Lesotho: '莱索托',
Lithuania: '立陶宛',
Luxembourg: '卢森堡',
Latvia: '拉脱维亚',
Morocco: '摩洛哥',
Moldova: '摩尔多瓦',
Madagascar: '马达加斯加',
Mexico: '墨西哥',
Macedonia: '马其顿',
Mali: '马里',
Myanmar: '缅甸',
Montenegro: '黑山',
Mongolia: '蒙古',
Mozambique: '莫桑比克',
Mauritania: '毛里塔尼亚',
Malawi: '马拉维',
Malaysia: '马来西亚',
Namibia: '纳米比亚',
'New Caledonia': '新喀里多尼亚',
Niger: '尼日尔',
Nigeria: '尼日利亚',
Nicaragua: '尼加拉瓜',
Netherlands: '荷兰',
Norway: '挪威',
Nepal: '尼泊尔',
'New Zealand': '新西兰',
Oman: '阿曼',
Pakistan: '巴基斯坦',
Panama: '巴拿马',
Peru: '秘鲁',
Philippines: '菲律宾',
'Papua New Guinea': '巴布亚新几内亚',
Poland: '波兰',
'Puerto Rico': '波多黎各',
'North Korea': '北朝鲜',
Portugal: '葡萄牙',
Paraguay: '巴拉圭',
Qatar: '卡塔尔',
Romania: '罗马尼亚',
Russia: '俄罗斯',
Rwanda: '卢旺达',
'Western Sahara': '西撒哈拉',
'Saudi Arabia': '沙特阿拉伯',
Sudan: '苏丹',
'South Sudan': '南苏丹',
Senegal: '塞内加尔',
'Solomon Islands': '所罗门群岛',
'Sierra Leone': '塞拉利昂',
'El Salvador': '萨尔瓦多',
Somaliland: '索马里兰',
Somalia: '索马里',
'Republic of Serbia': '塞尔维亚',
Suriname: '苏里南',
Slovakia: '斯洛伐克',
Slovenia: '斯洛文尼亚',
Sweden: '瑞典',
Swaziland: '斯威士兰',
Syria: '叙利亚',
Chad: '乍得',
Togo: '多哥',
Thailand: '泰国',
Tajikistan: '塔吉克斯坦',
Turkmenistan: '土库曼斯坦',
'East Timor': '东帝汶',
'Trinidad and Tobago': '特里尼达和多巴哥',
Tunisia: '突尼斯',
Turkey: '土耳其',
'United Republic of Tanzania': '坦桑尼亚',
Uganda: '乌干达',
Ukraine: '乌克兰',
Uruguay: '乌拉圭',
'United States': '美国',
Uzbekistan: '乌兹别克斯坦',
Venezuela: '委内瑞拉',
Vietnam: '越南',
Vanuatu: '瓦努阿图',
'West Bank': '西岸',
Yemen: '也门',
'South Africa': '南非',
Zambia: '赞比亚',
Korea: '韩国',
Tanzania: '坦桑尼亚',
Zimbabwe: '津巴布韦',
Congo: '刚果',
'Central African Rep.': '中非',
Serbia: '塞尔维亚',
'Bosnia and Herz.': '波黑',
'Czech Rep.': '捷克',
'W. Sahara': '西撒哈拉',
'Lao PDR': '老挝',
'Dem.Rep.Korea': '朝鲜',
'Falkland Is.': '福克兰群岛',
'Timor-Leste': '东帝汶',
'Solomon Is.': '所罗门群岛',
Palestine: '巴勒斯坦',
'N. Cyprus': '北塞浦路斯',
Aland: '奥兰群岛',
'Fr. S. Antarctic Lands': '法属南半球和南极陆地',
Mauritius: '毛里求斯',
Comoros: '科摩罗',
'Eq. Guinea': '赤道几内亚',
'Guinea-Bissau': '几内亚比绍',
'Dominican Rep.': '多米尼加',
'Saint Lucia': '圣卢西亚',
Dominica: '多米尼克',
'Antigua and Barb.': '安提瓜和巴布达',
'U.S. Virgin Is.': '美国原始岛屿',
Montserrat: '蒙塞拉特',
Grenada: '格林纳达',
Barbados: '巴巴多斯',
Samoa: '萨摩亚',
Bahamas: '巴哈马',
'Cayman Is.': '开曼群岛',
'Faeroe Is.': '法罗群岛',
'IsIe of Man': '马恩岛',
Malta: '马耳他共和国',
Jersey: '泽西',
'Cape Verde': '佛得角共和国',
'Turks and Caicos Is.': '特克斯和凯科斯群岛',
'St. Vin. and Gren.': '圣文森特和格林纳丁斯'
}

@ -0,0 +1,382 @@
<template>
<div class="bs-setting-wrap">
<el-form
ref="form"
:model="config"
label-width="90px"
label-position="left"
class="setting-body bs-el-form"
>
<SettingTitle>标题</SettingTitle>
<div class="lc-field-body">
<el-form-item
label="标题"
label-width="100px"
>
<el-input
v-model="config.title"
placeholder="请输入标题"
clearable
/>
</el-form-item>
</div>
<SettingTitle>位置</SettingTitle>
<div class="lc-field-body">
<PosWhSetting :config="config" />
</div>
<SettingTitle>基础</SettingTitle>
<div class="lc-field-body">
<el-form-item
label="是否显示地名"
label-width="100px"
>
<el-switch
v-model="config.customize.mapName"
class="bs-el-switch"
active-color="#007aff"
/>
</el-form-item>
<el-form-item
label="地图级别"
label-width="100px"
>
<el-select
v-model="config.customize.level"
popper-class="bs-el-select"
class="bs-el-select"
@change="changeLevel()"
>
<el-option
label="世界"
value="world"
/>
<el-option
label="国家"
value="country"
/>
<el-option
label="省份"
value="province"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="config.customize.level == 'province'"
label="地图显示区域"
label-width="100px"
>
<el-select
v-model="config.customize.dataMap"
popper-class="bs-el-select"
class="bs-el-select"
>
<el-option
v-for="map in mapList"
:key="map.name"
:label="map.name"
:value="map.url"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="config.customize.level !== 'world'"
label="是否开启下钻"
label-width="100px"
>
<el-switch
v-model="config.customize.down"
class="bs-el-switch"
active-color="#007aff"
/>
</el-form-item>
<el-form-item
label="地图分割线颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.mapLineColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="地图分割块颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.areaColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="悬浮框背景色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.tooltipBackgroundColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="悬浮框边框色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.borderColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="悬浮框字体颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.fontColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="线悬浮框内容"
label-width="100px"
>
<el-input :rows="8" v-model="config.customize.lineFormatter" type="textarea"></el-input>
</el-form-item>
<el-form-item
label="点悬浮框内容"
label-width="100px"
>
<el-input :rows="4" v-model="config.customize.scatterFormatter" type="textarea"></el-input>
</el-form-item>
<el-form-item
label="轨迹样式"
label-width="100px"
>
<el-select
v-model="config.customize.symbol"
popper-class="bs-el-select"
class="bs-el-select"
>
<el-option
v-for="symbol in symbolList"
:key="symbol.name"
:label="symbol.name"
:value="symbol.value"
/>
</el-select>
</el-form-item>
<el-form-item
label="轨迹颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.symbolColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="轨迹大小"
label-width="100px"
>
<el-input-number
v-model="config.customize.symbolSize"
placeholder="请输入轨迹大小"
controls-position="right"
:step="1"
/>
</el-form-item>
<el-form-item
label="普通点颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.scatterColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="中心点颜色"
label-width="100px"
>
<ColorPicker
v-model="config.customize.scatterCenterColor"
:predefine-colors="predefineThemeColors"
/>
</el-form-item>
<el-form-item
label="是否开启筛选"
label-width="100px"
>
<el-switch
v-model="config.customize.visual"
class="bs-el-switch"
active-color="#007aff"
/>
</el-form-item>
<el-form-item
v-if="config.customize.visual"
label="数值范围"
label-width="100px"
>
<el-input-number
v-model="config.customize.range[0]"
placeholder="请输入最小值"
controls-position="right"
:step="1"
/>
-
<el-input-number
v-model="config.customize.range[1]"
controls-position="right"
placeholder="请输入最大值"
:step="1"
/>
</el-form-item>
<el-form-item
v-if="config.customize.visual"
label="配色方案"
label-width="100px"
>
<color-select
v-model="config.customize.rangeColor"
@update="updateColorScheme"
/>
<div
style="
display: flex;
align-items: center;
height: 42px;
flex-wrap: wrap;
"
>
<el-color-picker
v-for="(colorItem, index) in colors"
:key="index"
v-model="config.customize.rangeColor[index]"
show-alpha
popper-class="bs-el-color-picker"
class="start-color bs-el-color-picker"
/>
<span
class="el-icon-circle-plus-outline"
style="color: #007aff; font-size: 20px"
@click="addColor"
/>
<span
v-if="colors.length"
class="el-icon-remove-outline"
style="color: #ea0b30; font-size: 20px"
@click="delColor"
/>
</div>
</el-form-item>
</div>
</el-form>
</div>
</template>
<script>
import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
import { chartSettingMixins } from 'data-room-ui/js/mixins/chartSettingMixins'
import ColorSelect from 'data-room-ui/ColorMultipleSelect/index.vue'
import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
export default {
name: 'BarSetting',
components: {
ColorSelect,
ColorPicker,
PosWhSetting,
SettingTitle
},
mixins: [chartSettingMixins],
props: {},
data () {
return {
mapList: [],
predefineThemeColors: [
'#007aff',
'#1aa97b',
'#ff4d53',
'#1890FF',
'#DF0E1B',
'#0086CC',
'#2B74CF',
'#00BC9D',
'#ED7D32'
],
symbolList:[
{
name:'箭头',
value:'arrow'
}
]
}
},
computed: {
config: {
get () {
return this.$store.state.bigScreen.activeItemConfig
},
set (val) {
this.$store.state.bigScreen.activeItemConfig = val
}
}
},
watch: {
'config.customize.level': {
handler (val) {
this.getMapList()
}
}
},
mounted () {
this.getMapList()
},
methods: {
getMapList () {
this.$dataRoomAxios.get(`${window.BS_CONFIG?.httpConfigs?.baseURL}/bigScreen/design/map/list/${this.config.customize.level}`).then((res) => {
this.mapList = res
})
},
changeLevel () {
if (this.config.customize.level === 'country') {
this.config.customize.dataMap = '中华人民共和国.json'
} else if (this.config.customize.level === 'province') {
this.getMapList()
this.config.customize.dataMap = '安徽省.json'
}else{
this.config.customize.down=false
}
},
delColor () {
this.colors = []
this.config.customize.rangeColor = []
},
addColor () {
this.colors.push('')
},
updateColorScheme (colors) {
this.colors = [...colors]
this.config.customize.rangeColor = [...colors]
}
}
}
</script>
<style lang="scss" scoped>
@import '../../assets/style/settingWrap.scss';
@import '../../assets/style/bsTheme.scss';
//
.add-filter-box {
position: relative;
.add-filter {
margin-left: 90px;
margin-bottom: 10px;
}
.add-filter-btn {
position: absolute;
top: 0;
}
}
.lc-field-body {
padding: 12px 16px;
}
</style>

@ -0,0 +1,123 @@
import { commonConfig, displayOption } from 'data-room-ui/js/config'
// import Icon from 'data-room-ui/assets/images/bigScreenIcon/export'
import cloneDeep from 'lodash/cloneDeep'
import * as iconData from 'data-room-ui/assets/symbols/bigScreenIcon/iconfont.json'
const iconNames = iconData.glyphs.map(item => item.name).sort((a, b) => a.localeCompare(b))
export const settingConfig = {
padding: [30, 30, 50, 80],
legend: false,
isGroup: true,
data: [],
color: '',
theme: 'dark',
displayOption: {
...displayOption,
params: {
enable: true
},
headerField: {
enable: false
},
mapField: {
enable: false
},
metricField: {
// 指标
label: '维度',
enable: false,
multiple: false // 是否多选
},
dimensionField: {
// 表格列
label: '展示字段', // 维度/查询字段
enable: false,
multiple: false // 是否多选
}
}
}
const customConfig = {
type: 'flyMap',
root: {
version: '2023071001',
contribution: false
},
customize: {
// 是否显示文字
mapName: false,
// 悬浮框背景色
tooltipBackgroundColor: '#0C121C',
// 悬浮框边框色
borderColor: 'rgba(0, 0, 0, 0.16)',
// 悬浮框字体颜色
fontColor:'#DADADA',
// 打点图背景颜色
scatterBackgroundColor: 'rgba(255,0,0,.7)',
// 打点图文字颜色
scatterColor: 'rgba(165, 108, 91, 1)',
// 打点图中心点文字颜色
scatterCenterColor:'rgba(205, 196, 110, 1)',
// 分割线颜色
mapLineColor: 'rgba(53, 86, 165, 1)',
// 水印字体颜色
fontGraphicColor: '#fff',
fontSize:'30',
// 是否开启下钻
down: false,
// 轨迹图像
symbol: 'arrow',
// 轨迹颜色
symbolColor: '#01AAED',
// 轨迹大小
symbolSize:8,
// 地图级别
level: 'country',
// 范围
scope: '中国',
// 地图区域颜色
areaColor: 'rgba(31, 50, 121, 1)',
// 是否开启筛选
visual: true,
graphic:['中华人民共和国'],
// 筛选范围
range: [0, 100],
scatterFormatter:'`<p style="text-align:center;font-size: 14px">${params.name}</p>`',
// 格式化脚本
lineFormatter:'`<p style="font-size: 16px">销售额</p><div>${params.data.msg.from}-->${params.data.msg.to} ${params.data.msg.value} </div>`',
// 从上到下的颜色
rangeColor: ['rgba(165, 108, 91, 1)', 'rgba(205, 196, 110, 1)'],
// 地图数据
dataMap: '中华人民共和国.json',
// 展示字段
value: '',
// 横坐标
xaxis: '',
// 纵坐标
yaxis: '',
// 名称
name: ''
}
}
export const dataConfig = {
...commonConfig(customConfig)
}
export const FlyMapData = {
name: '飞线图',
title: '飞线图',
icon: iconNames[5],
className:
'com.gccloud.dataroom.core.module.chart.components.ScreenFlyMapChart',
w: 800,
h: 700,
x: 0,
y: 0,
type: 'flyMap',
option: {
...cloneDeep(settingConfig)
},
setting: undefined, // 右侧面板自定义配置
dataHandler: {}, // 数据自定义处理js脚本
...cloneDeep(dataConfig)
}

@ -67,7 +67,7 @@
class="data-setting-data-box"
>
<div class="lc-field-head">
<div class="lc-field-title">
<div v-if="config.type!=='flyMap'" class="lc-field-title">
数据配置
</div>
</div>

@ -406,7 +406,7 @@ export default {
},
//
updateSetting (config) {
if (config.type === 'map' || config.type === 'video') {
if (config.type === 'map' || config.type === 'video' ||config.type === 'flyMap') {
config.key = new Date().getTime()
}
this.changeChartConfig(cloneDeep(config))

@ -162,7 +162,6 @@
:key="table.name"
:label="table.name"
:value="table.name"
:disabled="table.status == 1"
/>
</el-option-group>
<el-option-group label="视图">
@ -171,7 +170,6 @@
:key="table.name"
:label="table.name"
:value="table.name"
:disabled="table.status == 1"
/>
</el-option-group>
</el-select>

@ -5,6 +5,7 @@
*/
import { dataConfig, settingConfig } from '../PlotRender/settingConfig'
import { mapData } from 'data-room-ui/BasicComponents/Map/settingConfig'
import { FlyMapData } from 'data-room-ui/BasicComponents/FlyMap/settingConfig'
// import _ from 'lodash'
import cloneDeep from 'lodash/cloneDeep'
import sortList from './plotListSort'
@ -85,5 +86,5 @@ export function getCustomPlots () {
return list
}
const plots = [...plotList, ...customPlots, mapData]
const plots = [...plotList, ...customPlots, mapData,FlyMapData]
export default plots

@ -26,7 +26,7 @@ export default {
}
},
mounted () {
if (!['tables'].includes(this.config.type)) {
if (!['tables', 'flyMap', 'map'].includes(this.config.type)) {
this.chartInit()
}
this.watchCacheData()

@ -66,7 +66,7 @@ export default {
state.pageLoading = booleanValue
},
// 改变当前组件配置
changeChartConfig (state, itemConfig) {
changeChartConfig(state, itemConfig) {
const index = state.pageInfo.chartList.findIndex(
item => item.code === itemConfig.code
)

Loading…
Cancel
Save