diff --git a/src/views/recruitment/card/LaborSystemTwo.vue b/src/views/recruitment/card/LaborSystemTwo.vue index 849123d..3199a2e 100644 --- a/src/views/recruitment/card/LaborSystemTwo.vue +++ b/src/views/recruitment/card/LaborSystemTwo.vue @@ -1,7 +1,7 @@ @@ -36,91 +36,150 @@ const calcResponsivePX = (pxValue) => { // 初始点位数据 const initialPoints = [ - { name: "攀枝花", value: [101.718, 26.582, 0], count: 0 }, - { name: "雅安", value: [103.009, 29.988, 0], count: 0 }, - { name: "眉山", value: [103.848, 30.082, 0], count: 0 }, - { name: "自贡", value: [104.777, 29.350, 0], count: 0 }, - { name: "泸州", value: [105.442, 28.871, 0], count: 0 }, - { name: "资阳", value: [104.628, 30.122, 0], count: 0 }, - { name: "遂宁", value: [105.576, 30.523, 0], count: 0 }, - { name: "广安", value: [106.636, 30.463, 0], count: 0 }, - { name: "德阳", value: [104.399, 31.130, 0], count: 0 }, - { name: "绵阳", value: [104.684185, 31.473263, 0], count: 0 }, - { name: "广元", value: [105.834, 32.435, 0], count: 0 }, - { name: "巴中", value: [106.753, 31.857, 0], count: 0 }, - { name: "达州", value: [107.467, 31.209, 0], count: 0 }, - { name: "南充", value: [106.110, 30.837, 0], count: 0 } + { name: "绵阳市", value: [104.69,31.47, 0], count: 0 }, + { name: "广元市昭化区", value: [105.97,32.33, 0], count: 0 }, + { name: "巴中市恩阳区", value: [106.64,31.80, 0], count: 0 }, + { name: "达州市渠县", value: [106.98,30.84, 0], count: 0 }, + { name: "达州市开江县", value: [107.88,31.09, 0], count: 0 }, + { name: "达州市大竹县", value: [107.21,30.74, 0], count: 0 }, + { name: "广安市", value: [106.64,30.46, 0], count: 0 }, + { name: "广安市岳池县", value: [106.45,30.54, 0], count: 0 }, + { name: "广安华蓥市", value: [106.79,30.40, 0], count: 0 }, + { name: "南充顺庆区", value: [106.10,30.80, 0], count: 0 }, + { name: "遂宁市大英县", value: [105.24,30.60, 0], count: 0 }, + { name: "德阳市中江县", value: [104.69,31.04, 0], count: 0 }, + { name: "资阳市雁江区", value: [104.68,30.11, 0], count: 0 }, + { name: "雅安市荥经县", value: [102.85,29.80, 0], count: 0 }, + { name: "雅安市天全县", value: [102.76,30.07, 0], count: 0 }, + { name: "眉山市青神县", value: [103.85,29.84, 0], count: 0 }, + { name: "自贡贡井区", value: [104.72,29.35, 0], count: 0 }, + { name: "泸州市", value: [105.45,28.88, 0], count: 0 }, + { name: "攀枝花市", value: [101.73,26.59, 0], count: 0 }, ]; -// 获取动态配置 -const getChartOption = () => ({ - tooltip: { - trigger: "item", - formatter: (params) => { - if (params.seriesType === "scatter3D") { - return `${params.name}
合作社数量:${params.data.count || 0}`; +// 生成随机高度值函数 +const generateRandomHeights = (points, minHeight = 10, maxHeight = 25) => { + return points.map(point => ({ + ...point, + value: [point.value[0], point.value[1], Math.random() * (maxHeight - minHeight) + minHeight] + })); +}; + +// 获取动态配置 - 只展示 initialPoints 中的数据 +const getChartOption = () => { + // 每次调用生成新的随机高度 + const pointsWithRandomHeights = generateRandomHeights(initialPoints); + + return { + tooltip: { + trigger: "item", + formatter: (params) => { + if (params.seriesType === "scatter3D") { + return `${params.name}
合作社数量:${params.data.count || 0}`; + } + return params.name; + }, + backgroundColor: "rgba(0, 0, 0, 0.8)", + borderColor: "#30DCFF", + textStyle: { + color: "#fff", + fontSize: calcResponsivePX(12) } - return params.name; - } - }, - geo3D: { - type: "map3D", - map: "sichuan", - regionHeight: 6, - boxHeight: 2, - roam: false, - label: { - show: true, - color: "#CBF2FA", - fontSize: calcResponsivePX(10), - fontWeight: "bold" }, - itemStyle: { - color: "rgba(27, 129, 150, 0.4)", - borderColor: "#61cfff", - borderWidth: 2, - opacity: 0.75 - }, - emphasis: { - itemStyle: { color: "rgba(27, 129, 150, 0.65)", opacity: 0.85 }, - label: { color: "#ffff00" } - }, - light: { - main: { intensity: 1.6, shadow: true, shadowQuality: "high", alpha: 35, beta: 15 }, - ambient: { intensity: 0.35 } - }, - shading: "lambert", - viewControl: { - distance: 110, - alpha: 45, - beta: 10, - }, - groundPlane: { show: false }, - postEffect: { - enable: true, - bloom: { + geo3D: { + type: "map3D", + map: "sichuan", + regionHeight: 6, + boxHeight: 2, + roam: false, + label: { + show: false, // 隐藏地图区域标签,只显示散点 + color: "#fff", + fontSize: calcResponsivePX(10), + fontWeight: "bold", + borderWidth: 5, + borderColor: "rgba(40,40,41,0.48)" + }, + itemStyle: { + color: "rgba(27,129,150,0.18)", + borderColor: "#61cfff", + borderWidth: 2, + opacity: 0.3 // 降低地图透明度,突出散点 + }, + emphasis: { + itemStyle: { + color: "rgba(27, 129, 150, 0.3)", + opacity: 0.5 + }, + label: { show: false } + }, + light: { + main: { + intensity: 1.6, + shadow: true, + shadowQuality: "high", + alpha: 35, + beta: 15 + }, + ambient: { intensity: 0.35 } + }, + shading: "lambert", + viewControl: { + distance: 110, + alpha: 45, + beta: 10 + }, + groundPlane: { show: false }, + postEffect: { enable: true, - bloomIntensity: 0.25 + bloom: { + enable: true, + bloomIntensity: 0.25 + } } - } - }, - series: [ + }, + series: [ { name: "城市点位(3D)", type: "scatter3D", coordinateSystem: "geo3D", - data: initialPoints.map(p => ({ + data: pointsWithRandomHeights.map(p => ({ name: p.name, - value: [p.value[0], p.value[1], 6], - count: p.count + value: p.value, + count: p.count, + // 为每个点单独配置 label + label: { + show: true, + position: [0, 0, p.value[2] + 3], // 3D坐标 [x, y, z],在点上方3个单位 + formatter: p.name, + backgroundColor: 'rgba(0,0,0,0.7)', + borderWidth: 1, + padding: [2, 6], + borderRadius: 3, + color: '#fff', + fontSize: 10 + } })), - symbol: "triangle", - symbolSize: calcResponsivePX(12), + symbol: "triangle", // 改为圆形,更明显 + symbolSize: calcResponsivePX(12), // 增大符号尺寸 itemStyle: { color: "#FFBE34" }, - label: { show: false } + // label: { + // show: true, + // position: "top", + // formatter: "{b}", // 只显示名称 + // color: "#FFF", + // fontSize: calcResponsivePX(11), + // fontWeight: "bold", + // backgroundColor: "rgba(0,0,0,0.8)", + // // borderColor: "#FFBE34", + // borderWidth: calcResponsivePX(1), + // padding: [4, 6], + // borderRadius: calcResponsivePX(1) + // } } ] -}); + } +}; // 处理图表重绘(防抖优化) const handleChartResize = debounce(() => { diff --git a/src/views/recruitment/index.vue b/src/views/recruitment/index.vue index 4a64262..cc73e07 100644 --- a/src/views/recruitment/index.vue +++ b/src/views/recruitment/index.vue @@ -59,18 +59,18 @@ :type1="cardFourInfo.type1" :type2="cardFourInfo.type2" > - + + + + + + + - +
-
+