|
@@ -5,32 +5,102 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
-import { ref, onMounted } from 'vue';
|
|
|
|
|
|
+import { ref, onMounted, watch } from 'vue'; // 新增watch用于监听计算方式变化
|
|
import L from 'leaflet';
|
|
import L from 'leaflet';
|
|
import 'leaflet/dist/leaflet.css';
|
|
import 'leaflet/dist/leaflet.css';
|
|
|
|
|
|
|
|
+// 1. 接收父组件传递的计算方式(重量/体积)
|
|
|
|
+const props = defineProps({
|
|
|
|
+ calculationMethod: {
|
|
|
|
+ type: String,
|
|
|
|
+ required: true,
|
|
|
|
+ default: 'weight' // 默认按重量计算
|
|
|
|
+ }
|
|
|
|
+});
|
|
|
|
+
|
|
const mapContainer = ref(null);
|
|
const mapContainer = ref(null);
|
|
|
|
+const mapInstance = ref(null); // 保存地图实例
|
|
|
|
+const markers = ref([]); // 保存所有标记点实例及对应数据,用于后续更新弹窗
|
|
|
|
+
|
|
|
|
+// 2. 定义重量/体积对应的指标分类(核心:区分需要展示的字段)
|
|
|
|
+const metricsMap = {
|
|
|
|
+ weight: [ // 重量相关指标
|
|
|
|
+ { label: 'Cr mg/kg', key: 'Cr mg/kg' },
|
|
|
|
+ { label: 'As mg/kg', key: 'As mg/kg' },
|
|
|
|
+ { label: 'Cd mg/kg', key: 'Cd mg/kg' },
|
|
|
|
+ { label: 'Hg mg/kg', key: 'Hg mg/kg' },
|
|
|
|
+ { label: 'Pb mg/kg', key: 'Pb mg/kg' },
|
|
|
|
+ { label: '颗粒物重量 mg', key: '颗粒物的重量 mg' }
|
|
|
|
+ ],
|
|
|
|
+ volume: [ // 体积相关指标
|
|
|
|
+ { label: 'Cr ug/m³', key: 'Cr ug/m3' },
|
|
|
|
+ { label: 'As ug/m³', key: 'As ug/m3' },
|
|
|
|
+ { label: 'Cd ug/m³', key: 'Cd ug/m3' },
|
|
|
|
+ { label: 'Hg ug/m³', key: 'Hg ug/m3' },
|
|
|
|
+ { label: 'Pb ug/m³', key: 'Pb ug/m3' },
|
|
|
|
+ { label: '标准体积 m³', key: '标准体积 m3' },
|
|
|
|
+ { label: '颗粒物浓度 ug/m³', key: '颗粒物浓度ug/m3' },
|
|
|
|
+ ]
|
|
|
|
+};
|
|
|
|
|
|
// 辅助函数:数值格式化
|
|
// 辅助函数:数值格式化
|
|
function formatValue(value) {
|
|
function formatValue(value) {
|
|
if (value === undefined || value === null || value === '') return '未知';
|
|
if (value === undefined || value === null || value === '') return '未知';
|
|
- return parseFloat(value).toFixed(3);
|
|
|
|
|
|
+ return parseFloat(value);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 辅助函数:位置格式化(处理"广东省韶关市"前缀)
|
|
|
|
+function formatLocation(fullLocation) {
|
|
|
|
+ if (!fullLocation) return '未知位置';
|
|
|
|
+ const processed = fullLocation.replace(/^广东省韶关市/, '').trim().replace(/^韶关市/, '');
|
|
|
|
+ return processed || '未知位置';
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 3. 生成弹窗内容(根据计算方式动态生成)
|
|
|
|
+function generatePopupContent(item, method) {
|
|
|
|
+ const metrics = metricsMap[method]; // 获取当前计算方式对应的指标
|
|
|
|
+ // 生成指标HTML片段
|
|
|
|
+ const metricsHtml = metrics.map(metric => `
|
|
|
|
+ <div class="data-item">
|
|
|
|
+ <span class="item-label">${metric.label}:</span>
|
|
|
|
+ <span class="item-value">${formatValue(item[metric.key])}</span>
|
|
|
|
+ </div>
|
|
|
|
+ `).join('');
|
|
|
|
+
|
|
|
|
+ // 弹窗整体结构(非指标信息保持不变)
|
|
|
|
+ return `
|
|
|
|
+ <div class="popup-container">
|
|
|
|
+ <div class="popup-header">
|
|
|
|
+ <h3 class="popup-title">${formatLocation(item.采样 || '未知采样点')}</h3>
|
|
|
|
+ </div>
|
|
|
|
+ <ul class="popup-info-list">
|
|
|
|
+ <li>
|
|
|
|
+ <span class="info-label">采样点ID:</span>
|
|
|
|
+ <span class="info-value">${item.样品名称 || '未知'}</span>
|
|
|
|
+ </li>
|
|
|
|
+ </ul>
|
|
|
|
+ <div class="grid-container">
|
|
|
|
+ <div class="grid-item">${metricsHtml}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ `;
|
|
}
|
|
}
|
|
|
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
- // 初始化地图
|
|
|
|
if (!mapContainer.value) {
|
|
if (!mapContainer.value) {
|
|
console.error('❌ 地图容器未找到!');
|
|
console.error('❌ 地图容器未找到!');
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 初始化地图
|
|
const map = L.map(mapContainer.value, {
|
|
const map = L.map(mapContainer.value, {
|
|
center: [24.7, 114], // 韶关大致中心
|
|
center: [24.7, 114], // 韶关大致中心
|
|
zoom: 8.5,
|
|
zoom: 8.5,
|
|
minZoom: 8.3,
|
|
minZoom: 8.3,
|
|
});
|
|
});
|
|
|
|
+ mapInstance.value = map;
|
|
|
|
|
|
- // 区县颜色映射
|
|
|
|
|
|
+ // 区县颜色映射(保持不变)
|
|
const districtColorMap = {
|
|
const districtColorMap = {
|
|
"武江区": "#FF6B6B",
|
|
"武江区": "#FF6B6B",
|
|
"浈江区": "#4ECDC4",
|
|
"浈江区": "#4ECDC4",
|
|
@@ -44,7 +114,7 @@ onMounted(() => {
|
|
"南雄市": "#06D6A0",
|
|
"南雄市": "#06D6A0",
|
|
};
|
|
};
|
|
|
|
|
|
- // 加载区县边界
|
|
|
|
|
|
+ // 加载区县边界(保持不变)
|
|
fetch('/data/韶关市各区县边界图.geojson')
|
|
fetch('/data/韶关市各区县边界图.geojson')
|
|
.then(res => {
|
|
.then(res => {
|
|
if (!res.ok) throw new Error(`区县边界加载失败:${res.status}`);
|
|
if (!res.ok) throw new Error(`区县边界加载失败:${res.status}`);
|
|
@@ -66,7 +136,32 @@ onMounted(() => {
|
|
},
|
|
},
|
|
}).addTo(map);
|
|
}).addTo(map);
|
|
|
|
|
|
- // 加载大气数据
|
|
|
|
|
|
+ fetch('/data/乐昌市.geoJson') // 假设文件路径为 /data/乐昌市.geojson
|
|
|
|
+ .then(res => {
|
|
|
|
+ if (!res.ok) throw new Error(`乐昌市边界加载失败:${res.status}`);
|
|
|
|
+ return res.json();
|
|
|
|
+ })
|
|
|
|
+ .then(lechangGeojson => {
|
|
|
|
+ console.log('✅ 乐昌市边界数据加载完成', lechangGeojson);
|
|
|
|
+
|
|
|
|
+ // 为乐昌市设置更突出的样式(与原有边界区分)
|
|
|
|
+ L.geoJSON(lechangGeojson, {
|
|
|
|
+ style: () => {
|
|
|
|
+ return {
|
|
|
|
+ fillColor: districtColorMap["乐昌市"], // 复用原有颜色
|
|
|
|
+ fillOpacity: 0.5, // 透明度略低,避免覆盖原有边界
|
|
|
|
+ color: '#000000', // 边框颜色加深
|
|
|
|
+ weight: 4, // 边框加粗,突出显示
|
|
|
|
+ dashArray: '5, 5', // 可选:添加虚线效果,进一步区分
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ }).addTo(map);
|
|
|
|
+ })
|
|
|
|
+ .catch(err => {
|
|
|
|
+ console.warn('⚠️ 乐昌市边界加载失败(不影响主地图):', err);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // 加载大气数据并创建标记点
|
|
fetch('http://localhost:3000/table/Atmosphere_summary_data')
|
|
fetch('http://localhost:3000/table/Atmosphere_summary_data')
|
|
.then(res => {
|
|
.then(res => {
|
|
if (!res.ok) throw new Error(`大气数据加载失败:${res.status}`);
|
|
if (!res.ok) throw new Error(`大气数据加载失败:${res.status}`);
|
|
@@ -74,11 +169,11 @@ onMounted(() => {
|
|
})
|
|
})
|
|
.then(atmosphereData => {
|
|
.then(atmosphereData => {
|
|
console.log('✅ 大气数据加载完成,记录数:', atmosphereData.length);
|
|
console.log('✅ 大气数据加载完成,记录数:', atmosphereData.length);
|
|
|
|
+ markers.value = []; // 清空标记点数组
|
|
|
|
|
|
- let markerCount = 0;
|
|
|
|
atmosphereData.forEach((item, idx) => {
|
|
atmosphereData.forEach((item, idx) => {
|
|
try {
|
|
try {
|
|
- // 提取经纬度
|
|
|
|
|
|
+ // 提取经纬度(保持不变)
|
|
const latField = ['latitude', 'lat', '纬度'].find(key => item[key] !== undefined);
|
|
const latField = ['latitude', 'lat', '纬度'].find(key => item[key] !== undefined);
|
|
const lngField = ['longitude', 'lng', '经度'].find(key => item[key] !== undefined);
|
|
const lngField = ['longitude', 'lng', '经度'].find(key => item[key] !== undefined);
|
|
|
|
|
|
@@ -87,114 +182,40 @@ onMounted(() => {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- // 清理经纬度数据
|
|
|
|
|
|
+ // 清理经纬度数据(保持不变)
|
|
const cleanLat = String(item[latField]).replace(/[^\d.-]/g, '');
|
|
const cleanLat = String(item[latField]).replace(/[^\d.-]/g, '');
|
|
const cleanLng = String(item[lngField]).replace(/[^\d.-]/g, '');
|
|
const cleanLng = String(item[lngField]).replace(/[^\d.-]/g, '');
|
|
|
|
|
|
const lat = parseFloat(parseFloat(cleanLat).toFixed(6));
|
|
const lat = parseFloat(parseFloat(cleanLat).toFixed(6));
|
|
const lng = parseFloat(parseFloat(cleanLng).toFixed(6));
|
|
const lng = parseFloat(parseFloat(cleanLng).toFixed(6));
|
|
|
|
|
|
- // 坐标范围校验
|
|
|
|
|
|
+ // 坐标范围校验(保持不变)
|
|
if (isNaN(lat) || isNaN(lng) || lat < 22.7 || lat > 25.5 || lng < 112.7 || lng > 115.3) {
|
|
if (isNaN(lat) || isNaN(lng) || lat < 22.7 || lat > 25.5 || lng < 112.7 || lng > 115.3) {
|
|
console.warn(`❌ 坐标超出范围(第${idx}条):`, lat, lng);
|
|
console.warn(`❌ 坐标超出范围(第${idx}条):`, lat, lng);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- // 创建标记点
|
|
|
|
|
|
+ // 创建标记点(保持不变)
|
|
const marker = L.circleMarker([lat, lng], {
|
|
const marker = L.circleMarker([lat, lng], {
|
|
- radius: 3.5, // 略微减小标记点大小
|
|
|
|
|
|
+ radius: 3.5,
|
|
color: '#FF3333',
|
|
color: '#FF3333',
|
|
fillColor: '#FF3333',
|
|
fillColor: '#FF3333',
|
|
fillOpacity: 0.9,
|
|
fillOpacity: 0.9,
|
|
- weight: 1.5, // 减小边框宽度
|
|
|
|
|
|
+ weight: 1.5,
|
|
zIndexOffset: 1000,
|
|
zIndexOffset: 1000,
|
|
}).addTo(map);
|
|
}).addTo(map);
|
|
|
|
|
|
- // 构建弹窗内容(双列布局)
|
|
|
|
- const content = `
|
|
|
|
- <div class="popup-container">
|
|
|
|
- <div class="popup-header">
|
|
|
|
- <h3 class="popup-title">${item.采样 || '未知采样点'}</h3>
|
|
|
|
- </div>
|
|
|
|
- <ul class="popup-info-list">
|
|
|
|
- <li>
|
|
|
|
- <span class="info-label">采样点ID:</span>
|
|
|
|
- <span class="info-value">${item.样品名称 || '未知'}</span>
|
|
|
|
- </li>
|
|
|
|
- <li>
|
|
|
|
- <span class="info-label">样品编号:</span>
|
|
|
|
- <span class="info-value">${item.样品编号 || '未知'}</span>
|
|
|
|
- </li>
|
|
|
|
- </ul>
|
|
|
|
- <div class="grid-container" style="grid-template-columns: 1fr 1fr;">
|
|
|
|
- <div class="grid-item">
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Cr mg/kg:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Cr mg/kg'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Cr ug/m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Cr ug/m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">As mg/kg:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['As mg/kg'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">As ug/m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['As ug/m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Cd mg/kg:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Cd mg/kg'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Cd ug/m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Cd ug/m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="grid-item">
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Hg mg/kg:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Hg mg/kg'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Hg ug/m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Hg ug/m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Pb mg/kg:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Pb mg/kg'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">Pb ug/m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['Pb ug/m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">颗粒物重量 mg:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['颗粒物的重量 mg'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">标准体积 m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['标准体积 m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="data-item">
|
|
|
|
- <span class="item-label">颗粒物浓度 ug/m3:</span>
|
|
|
|
- <span class="item-value">${formatValue(item['颗粒物浓度ug/m3'])}</span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- `;
|
|
|
|
-
|
|
|
|
- marker.bindPopup(content);
|
|
|
|
- markerCount++;
|
|
|
|
|
|
+ // 绑定初始弹窗内容(根据默认计算方式)
|
|
|
|
+ marker.bindPopup(generatePopupContent(item, props.calculationMethod));
|
|
|
|
+
|
|
|
|
+ // 保存标记点实例和对应数据,用于后续更新
|
|
|
|
+ markers.value.push({ marker, item });
|
|
} catch (err) {
|
|
} catch (err) {
|
|
console.error(`❌ 处理大气数据失败(第${idx}条):`, err);
|
|
console.error(`❌ 处理大气数据失败(第${idx}条):`, err);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
- console.log(`✅ 成功创建 ${markerCount} 个大气数据标记点`);
|
|
|
|
|
|
+ console.log(`✅ 成功创建 ${markers.value.length} 个大气数据标记点`);
|
|
})
|
|
})
|
|
.catch(err => {
|
|
.catch(err => {
|
|
console.error('❌ 大气数据加载失败:', err);
|
|
console.error('❌ 大气数据加载失败:', err);
|
|
@@ -206,9 +227,22 @@ onMounted(() => {
|
|
alert('区县边界加载错误:' + err.message);
|
|
alert('区县边界加载错误:' + err.message);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+// 4. 监听计算方式变化,更新所有标记点的弹窗内容
|
|
|
|
+watch(
|
|
|
|
+ () => props.calculationMethod,
|
|
|
|
+ (newMethod) => {
|
|
|
|
+ markers.value.forEach(({ marker, item }) => {
|
|
|
|
+ // 重新绑定弹窗内容(使用新的计算方式)
|
|
|
|
+ marker.bindPopup(generatePopupContent(item, newMethod));
|
|
|
|
+ });
|
|
|
|
+ console.log(`✅ 已切换为${newMethod === 'weight' ? '重量' : '体积'}计算方式,弹窗内容已更新`);
|
|
|
|
+ }
|
|
|
|
+);
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|
|
|
|
+/* 样式保持不变,仅需确保弹窗内容布局适配单组数据 */
|
|
.map-wrapper {
|
|
.map-wrapper {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|
|
@@ -229,12 +263,12 @@ onMounted(() => {
|
|
::v-deep .leaflet-popup-content {
|
|
::v-deep .leaflet-popup-content {
|
|
margin: 0 !important;
|
|
margin: 0 !important;
|
|
width: auto !important;
|
|
width: auto !important;
|
|
- max-width: 400px; /* 减小最大宽度 */
|
|
|
|
|
|
+ max-width: 300px; /* 适当减小最大宽度,适配单列布局 */
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .popup-container {
|
|
::v-deep .popup-container {
|
|
- min-width: 280px; /* 减小最小宽度 */
|
|
|
|
- padding: 12px; /* 减小内边距 */
|
|
|
|
|
|
+ min-width: 280px;
|
|
|
|
+ padding: 12px;
|
|
font-family: "Microsoft YaHei", sans-serif;
|
|
font-family: "Microsoft YaHei", sans-serif;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -244,7 +278,7 @@ onMounted(() => {
|
|
|
|
|
|
::v-deep .popup-title {
|
|
::v-deep .popup-title {
|
|
text-align: center;
|
|
text-align: center;
|
|
- font-size: 16px; /* 减小标题字体大小 */
|
|
|
|
|
|
+ font-size: 16px;
|
|
font-weight: 700;
|
|
font-weight: 700;
|
|
color: #0066CC;
|
|
color: #0066CC;
|
|
margin: 0 0 5px;
|
|
margin: 0 0 5px;
|
|
@@ -258,59 +292,60 @@ onMounted(() => {
|
|
margin: 0 0 10px;
|
|
margin: 0 0 10px;
|
|
display: grid;
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-template-columns: 1fr 1fr;
|
|
- gap: 6px; /* 减小间隙 */
|
|
|
|
|
|
+ gap: 6px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .popup-info-list li {
|
|
::v-deep .popup-info-list li {
|
|
display: flex;
|
|
display: flex;
|
|
margin: 0;
|
|
margin: 0;
|
|
- padding: 3px 6px; /* 减小内边距 */
|
|
|
|
|
|
+ padding: 3px 6px;
|
|
background: #f9f9f9;
|
|
background: #f9f9f9;
|
|
- border-radius: 3px; /* 减小圆角 */
|
|
|
|
|
|
+ border-radius: 3px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .info-label {
|
|
::v-deep .info-label {
|
|
- flex: 0 0 85px; /* 减小标签宽度 */
|
|
|
|
|
|
+ flex: 0 0 85px;
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
color: #333;
|
|
color: #333;
|
|
- font-size: 13px; /* 减小字体大小 */
|
|
|
|
|
|
+ font-size: 13px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .info-value {
|
|
::v-deep .info-value {
|
|
flex: 1;
|
|
flex: 1;
|
|
color: #666;
|
|
color: #666;
|
|
- font-size: 13px; /* 减小字体大小 */
|
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
+ white-space: nowrap;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .grid-container {
|
|
::v-deep .grid-container {
|
|
display: grid;
|
|
display: grid;
|
|
- grid-template-columns: 1fr 1fr;
|
|
|
|
- gap: 6px; /* 减小间隙 */
|
|
|
|
|
|
+ grid-template-columns: 1fr; /* 改为单列布局,适配分类后的指标 */
|
|
|
|
+ gap: 6px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .grid-item {
|
|
::v-deep .grid-item {
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
- gap: 6px; /* 减小间隙 */
|
|
|
|
|
|
+ gap: 6px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .data-item {
|
|
::v-deep .data-item {
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
- padding: 6px 8px; /* 减小内边距 */
|
|
|
|
|
|
+ padding: 6px 8px;
|
|
background: #f9f9f9;
|
|
background: #f9f9f9;
|
|
- border-radius: 3px; /* 减小圆角 */
|
|
|
|
|
|
+ border-radius: 3px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .item-label {
|
|
::v-deep .item-label {
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
color: #555;
|
|
color: #555;
|
|
- font-size: 13px; /* 减小字体大小 */
|
|
|
|
|
|
+ font-size: 13px;
|
|
}
|
|
}
|
|
|
|
|
|
::v-deep .item-value {
|
|
::v-deep .item-value {
|
|
color: #000;
|
|
color: #000;
|
|
- font-size: 13px; /* 减小字体大小 */
|
|
|
|
|
|
+ font-size: 13px;
|
|
}
|
|
}
|
|
|
|
|
|
/* 隐藏弹窗箭头 */
|
|
/* 隐藏弹窗箭头 */
|
|
@@ -328,4 +363,4 @@ onMounted(() => {
|
|
fill-opacity: 1 !important;
|
|
fill-opacity: 1 !important;
|
|
stroke-width: 2.5px !important;
|
|
stroke-width: 2.5px !important;
|
|
}
|
|
}
|
|
-</style>
|
|
|
|
|
|
+</style>
|