| | |
| | | v-model="companyType" |
| | | filterable |
| | | placeholder="请选择企业类型" |
| | | style="width: 100%" |
| | | style="flex: 1" |
| | | remote |
| | | remote-show-suffix |
| | | :remote-method="getList" |
| | | > |
| | | <el-option |
| | | v-for="item in typeList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | <el-select |
| | | clearable |
| | | :teleported="false" |
| | | v-model="warningType" |
| | | filterable |
| | | placeholder="请选择风险等级" |
| | | style="flex: 1" |
| | | remote |
| | | remote-show-suffix |
| | | :remote-method="getList" |
| | | > |
| | | <el-option |
| | | v-for="item in warningList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | |
| | | // 表格数据 |
| | | const companyData = ref([]) |
| | | // 配置参数 |
| | | const visibleRows = 8 // 显示的行数 |
| | | const visibleRows = 10 // 显示的行数 |
| | | const scrollSpeed = 0.5 // 每次滚动的像素数 |
| | | const rowHeight = 40 // 行高,与CSS一致 |
| | | const viewport = ref(null) |
| | |
| | | |
| | | onMounted(()=>{ |
| | | getList() |
| | | initChart() |
| | | // initChart() |
| | | // 设置视口高度 |
| | | if (viewport.value) { |
| | | viewport.value.style.height = `${visibleRows * rowHeight}px` |
| | |
| | | }) |
| | | |
| | | const companyType = ref('') |
| | | const warningType = ref('') |
| | | const typeList = [ |
| | | { |
| | | id: 0, |
| | |
| | | name: '中试类' |
| | | } |
| | | ] |
| | | const warningList = [ |
| | | { |
| | | id: 1, |
| | | name: '红' |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '橙' |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: '黄' |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: '蓝' |
| | | } |
| | | ] |
| | | |
| | | const getList = async () => { |
| | | const res = await getCompanyMessage(companyType.value) |
| | | if(res.code == 200){ |
| | | companyData.value = res.data |
| | | // console.log(companyData.value,555) |
| | | if(res.data && Array.isArray(res.data) && res.data.length>0){ |
| | | companyData.value = res.data |
| | | const mapData = companyData.value.map(i=>{ |
| | | return { |
| | | name: i.companyName + '\n' + i.warningCount, |
| | | value: [i.longitude,i.latitude] |
| | | } |
| | | }) |
| | | initChart(mapData) |
| | | } |
| | | |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | animationFrame = requestAnimationFrame(scrollAnimation) |
| | | } |
| | | |
| | | const initChart =()=>{ |
| | | const initChart =(mapData)=>{ |
| | | //获取echart对象 |
| | | let dom = document.getElementById('areaMap') |
| | | if (dom) { |
| | | let data = [ |
| | | { |
| | | name: "姑苏区", |
| | | value: Math.round(Math.random() * 100) |
| | | }, |
| | | { |
| | | name: "虎丘区", |
| | | value: Math.round(Math.random() * 100) |
| | | }, |
| | | { |
| | | name: "吴中区", |
| | | value: Math.round(Math.random() * 100) |
| | | }, |
| | | ] |
| | | //初始化 |
| | | let myEchart = echarts.init(dom) |
| | | //注册地图 |
| | |
| | | let option = { |
| | | geo: { |
| | | map: '苏州市', |
| | | roam: 'scale', |
| | | aspectScale: 0.8, |
| | | layoutCenter: ['50%', '50%'], //地图位置 |
| | | layoutSize: '75%', |
| | |
| | | } |
| | | } |
| | | }, |
| | | data: data |
| | | }, |
| | | // 区域散点图 |
| | | { |
| | | type: 'effectScatter', |
| | | coordinateSystem: 'geo', |
| | | symbolSize: 10, |
| | | symbolSize: 4, |
| | | rippleEffect: { |
| | | period: 3, |
| | | scale: 10, |
| | | period: 2, |
| | | scale: 6, |
| | | brushType: 'fill' |
| | | }, |
| | | label: { |
| | |
| | | position: 'right', |
| | | formatter: '{b}', |
| | | color: 'yellow', |
| | | fontSize: 12 |
| | | fontSize: 14 |
| | | } |
| | | }, |
| | | data: [ |
| | | { name: '斜塘街道 11', value: [120.697614, 31.288664] }, |
| | | { name: '桑田岛 12', value: [120.807510, 31.350300] }, |
| | | { name: '车坊 2', value: [120.627614, 31.338664] } |
| | | ], |
| | | data: mapData, |
| | | itemStyle: { |
| | | //坐标点颜色 |
| | | normal: { |
| | | show: true, |
| | | color: 'skyblue', |
| | | shadowBlur: 20, |
| | | color: 'orange', |
| | | shadowBlur: 6, |
| | | shadowColor: '#fff' |
| | | }, |
| | | emphasis: { |
| | |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: flex-start; |
| | | gap: 10px |
| | | } |
| | | |
| | | .container-left{ |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | width: 300px; |
| | | } |
| | | |
| | | .filter{ |
| | | width: 300px; |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | :deep(.el-input__wrapper){ |
| | | height: 28px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | .table-wrapper { |
| | | position: relative; |
| | | width: 300px; |
| | | width: 100%; |
| | | margin-top: 10px; |
| | | border: 1px solid rgba(255,255,255,.1); |
| | | border-radius: 2px; |
| | |
| | | 100% { opacity: 1; } |
| | | } |
| | | |
| | | #areaMap{ |
| | | flex: 1; |
| | | height: 500px; |
| | | } |
| | | #areaMap{ |
| | | flex: 2; |
| | | height: 100%; |
| | | } |
| | | :deep(.BMap_cpyCtrl) { |
| | | display: none !important; |
| | | } |
| | | :deep(.anchorBL) { |
| | | display: none !important; |
| | | } |
| | | </style> |