|
@@ -71,7 +71,7 @@ let AMap, map, scale;
|
|
|
// 鼠标绘制工具
|
|
|
const drawTool = useDrawTool();
|
|
|
// 初始化地图
|
|
|
-const { getAMap, getMap, switchMap, addMarker, addSearchMarker, clearMarker, getMarkers, getScale, showInfo } = useAMap({
|
|
|
+const { getAMap, getMap, switchMap, addMarker, addSearchMarker, clearMarker, getMarkers, getScale, showInfo, hideInfo } = useAMap({
|
|
|
key: '30d3d8448efd68cb0b284549fd41adcf', // 申请好的Web端开发者Key,首次调用 load 时必填
|
|
|
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
|
|
|
pitch: mapState.isThreeDimensional ? 45 : 0,
|
|
@@ -110,20 +110,31 @@ const { getAMap, getMap, switchMap, addMarker, addSearchMarker, clearMarker, get
|
|
|
const data2 = res.data.list;
|
|
|
let content = document.createElement('div');
|
|
|
content.className = 'point-info';
|
|
|
+ let content2 = '';
|
|
|
+ content2 += '<div class="title-box"><div class="gradient-text">多点位信息</div></div>';
|
|
|
+ content2 += '<div class="icon1"></div>';
|
|
|
+ content2 += '<div class="icon2"></div>';
|
|
|
+ content2 += '<div class="icon3"></div>';
|
|
|
+ content2 += '<div class="icon4"></div>';
|
|
|
+ content.innerHTML = content2;
|
|
|
let table = document.createElement('div');
|
|
|
- table.className = 'point-item';
|
|
|
- table.innerHTML = '<div>主题</div><div>名称</div>';
|
|
|
- content.appendChild(table);
|
|
|
+ table.className = 'table';
|
|
|
+ table.innerHTML = '<div class="point-item"><div class="td1">主题</div><div class="td1">名称</div></div>';
|
|
|
data2.forEach((item) => {
|
|
|
item.longitude = data.longitude;
|
|
|
item.latitude = data.latitude;
|
|
|
const div = document.createElement('div');
|
|
|
div.className = 'point-item';
|
|
|
- div.innerHTML = '<div>' + getDictLabel(point_type.value, item.dataType.toString()) + '</div><div>' + item.name + '</div>';
|
|
|
+ div.innerHTML = '<div class="td2">' + getDictLabel(point_type.value, item.dataType.toString()) + '</div><div class="td2">' + item.name + '</div>';
|
|
|
div.addEventListener('click', () => handlePointDetails(item));
|
|
|
- content.appendChild(div);
|
|
|
+ table.appendChild(div);
|
|
|
});
|
|
|
- showInfo(content, [data.longitude, data.latitude]);
|
|
|
+ content.appendChild(table);
|
|
|
+ let closeBtn = document.createElement('div');
|
|
|
+ closeBtn.className = 'close';
|
|
|
+ closeBtn.onclick = hideInfo;
|
|
|
+ content.appendChild(closeBtn);
|
|
|
+ showInfo(content, [data.longitude, data.latitude], true);
|
|
|
});
|
|
|
} else {
|
|
|
handlePointDetails(data);
|
|
@@ -148,23 +159,88 @@ const handlePointDetails = (data) => {
|
|
|
'14': getChemicalcompanyDetails,
|
|
|
'15': getUAVDetails
|
|
|
};
|
|
|
+ let titleList = {
|
|
|
+ '1': '专家信息'
|
|
|
+ };
|
|
|
let method = methodList[data.dataType];
|
|
|
+ let title = !!titleList[data.dataType] ? titleList[data.dataType] : '信息';
|
|
|
if (!method) return;
|
|
|
method(data.id).then((res) => {
|
|
|
if (!!pointDetailTemplate[data.dataType]) {
|
|
|
- let content = document.createElement('div');
|
|
|
- content.className = 'point-info';
|
|
|
- for (let key in res.rows[0]) {
|
|
|
- let keyLabel = !!pointDetailTemplate[data.dataType][key] ? pointDetailTemplate[data.dataType][key] : key;
|
|
|
- const div = document.createElement('div');
|
|
|
- div.className = 'point-item';
|
|
|
- div.innerHTML = '<div>' + keyLabel + '</div><div>' + res.rows[0][key] + '</div>';
|
|
|
- content.appendChild(div);
|
|
|
- }
|
|
|
- showInfo(content, [data.longitude, data.latitude]);
|
|
|
+ let div = document.createElement('div');
|
|
|
+ div.className = 'point-info';
|
|
|
+ let content = '';
|
|
|
+ content += '<div class="title-box"><div class="gradient-text">' + title + '</div></div>';
|
|
|
+ content += '<div class="icon1"></div>';
|
|
|
+ content += '<div class="icon2"></div>';
|
|
|
+ content += '<div class="icon3"></div>';
|
|
|
+ content += '<div class="icon4"></div>';
|
|
|
+ content += '<div class="table">';
|
|
|
+ const newData = filterTd(res.rows[0], data.dataType);
|
|
|
+
|
|
|
+ newData.forEach((item) => {
|
|
|
+ if (item.type === 'shortText') {
|
|
|
+ content += '<div class="tr">';
|
|
|
+ item.data.forEach((item2) => {
|
|
|
+ content += '<div class="point-item">';
|
|
|
+ content += '<div class="td1">' + item2.label + '</div><div class="td2">' + item2.value + '</div>';
|
|
|
+ content += '</div>';
|
|
|
+ });
|
|
|
+ content += '</div>';
|
|
|
+ } else {
|
|
|
+ content += '<div class="point-item2">';
|
|
|
+ content += '<div class="td1">' + item.data[0].label + '</div><div class="td2">' + item.data[0].value + '</div>';
|
|
|
+ content += '</div>';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ content += '</div>';
|
|
|
+ div.innerHTML = content;
|
|
|
+ let closeBtn = document.createElement('div');
|
|
|
+ closeBtn.className = 'close';
|
|
|
+ closeBtn.onclick = hideInfo;
|
|
|
+ div.appendChild(closeBtn);
|
|
|
+ showInfo(div, [data.longitude, data.latitude], true);
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
+const filterTd = (obj, dataType) => {
|
|
|
+ let data = [];
|
|
|
+ let tempData = {};
|
|
|
+ let content = '';
|
|
|
+ let i = 0;
|
|
|
+ for (let key in obj) {
|
|
|
+ let keyLabel = pointDetailTemplate[dataType][key];
|
|
|
+ if (!!keyLabel) {
|
|
|
+ if (i === 2) {
|
|
|
+ i = 0;
|
|
|
+ }
|
|
|
+ if (obj[key].length > 6) {
|
|
|
+ if (i === 0) {
|
|
|
+ data.push({ type: 'longText', data: [{ label: keyLabel, value: obj[key] }] });
|
|
|
+ i = 0;
|
|
|
+ } else {
|
|
|
+ tempData = { type: 'longText', data: [{ label: keyLabel, value: obj[key] }] };
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (i === 0) {
|
|
|
+ data.push({ type: 'shortText', data: [{ label: keyLabel, value: obj[key] }] });
|
|
|
+ } else {
|
|
|
+ data[data.length - 1].data.push({ label: keyLabel, value: obj[key] });
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ if (!!tempData && JSON.stringify(tempData) !== '{}') {
|
|
|
+ data.push(tempData);
|
|
|
+ tempData = {};
|
|
|
+ i = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!!tempData && JSON.stringify(tempData) !== '{}') {
|
|
|
+ data.push(tempData);
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+};
|
|
|
// 监听地图类型变化
|
|
|
watch(
|
|
|
() => props.activeMap,
|