epmet 工作端 小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
5.2 KiB

import * as echarts from '../../../../../../ec-canvas/echarts';
import {
getFamilyRelationshipList
} from "../../../../../../utils/api";
var chart;
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
Component({
properties: {
resiId: {
type: String,
value: '',
}
},
data: {
ec: {
lazyLoad: true
// onInit: initChart
},
tabList: [{
label: "问题突出类别",
value: 1
}, {
label: '行业领域分析',
value: 2
}],
tabValue: 1
},
lifetimes: {
ready() {
this.getData()
}
},
methods: {
getData() {
this.selectComponent('#hotlineComplaints').init((canvas, width, height, dpr) => {
chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // 像素比
});
canvas.setChart(chart);
let params = {
type: "0",
id: this.data.resiId
}
getFamilyRelationshipList(params).then(({
data
}) => {
let resiName = data.filter(item=>item.id === this.data.resiId)[0].name
let nodeList = data.map((item, index) => ({
'name': item.name,
'id':index+1,
'category':0,
'symbolSize': item.id == this.data.resiId ? 50 : 30,
'symbol':item.type == 1?'image://https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/internal/20240402/a6cdfe6f699040f58fd8b2c10486b41d.png': item.houseHolderRel == '丈夫' ? 'image://https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/internal/20240402/1e21790833b04e9abe61e2a8f40446cb.png' : 'image://https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/test/internal/20240402/1e21790833b04e9abe61e2a8f40446cb.png',
// 'data': {
// id: item.id,
// type: item.type,
// name: item.name
// },
}))
let links = data.map((item, index) => ({
"source": 0,
"target": index+1,
"name": item.houseHolderRel||'暂不清楚',
"label": {
"align": "center",
"fontSize": 12
},
"lineStyle": {
"color": "#ff7d18"
}
}))
links.splice(links.length-1,1)
let categories = data.map((item, index) => ({
"name":item.houseHolderRel||'暂不清楚',
"id":index+1,
"itemStyle": {
"color": 'red'
},
"lineStyle": {
"color": "#ff7d18"
}
}))
console.log(nodeList,links,categories);
console.log(JSON.stringify(nodeList));
console.log(JSON.stringify(links));
console.log(JSON.stringify(categories));
var option = {
legend: [{
// selectedMode: 'single',
// icon: 'circle'
show: false
}],
series: [{
type: 'graph',
layout: 'force',
symbolSize: 10,
draggable: true,
roam: false,
focusNodeAdjacency: false,
categories: categories,
edgeSymbol: ['', 'arrow'],
// edgeSymbolSize: [80, 10],
edgeLabel: {
normal: {
show: true,
textStyle: {
fontSize: 20
},
formatter(x) {
return x.data.name;
}
}
},
label: {
show: true
},
force: {
repulsion: 2000,
edgeLength: 120
},
data: nodeList,
links: links
}]
};
chart.setOption(option);
})
return chart;
});
}
}
});