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.
149 lines
6.9 KiB
149 lines
6.9 KiB
const round = (value, decimals = 2) => {
|
|
const factor = 10 ** decimals
|
|
return Math.round((Number(value) || 0) * factor) / factor
|
|
}
|
|
|
|
const toWanMu = (value) => round((Number(value) || 0) / 10000, 2)
|
|
|
|
const cxptCoreRows = [
|
|
{ key: "pasture-total", name: "牧户数量", value: 9110, unit: "户", icon: "town" },
|
|
{ key: "avg-yak-per-household", name: "户均牦牛头数", value: 52, unit: "头", icon: "yield" },
|
|
{ key: "avg-grassland-area", name: "户均草地面积", value: 1131, unit: "亩", icon: "area" },
|
|
{ key: "joint-household-count", name: "联户数量", value: 237, unit: "户", icon: "town" },
|
|
{ key: "poverty-monitor-count", name: "防反贫监测户", value: 122, unit: "户", icon: "town" },
|
|
{ key: "average-income", name: "人均收入", value: 19679, unit: "元/年", icon: "rate" },
|
|
]
|
|
|
|
export const pastureCoreRows = cxptCoreRows
|
|
|
|
export const pastureTopStats = cxptCoreRows.map((item) => ({
|
|
...item,
|
|
zh: item.name,
|
|
decimals: 0,
|
|
}))
|
|
|
|
export const pastureTownRows = [
|
|
{ areaCode: "513233100", areaName: "邛溪镇", number: 1452, year: 2024 },
|
|
{ areaCode: "513233101", areaName: "刷经寺镇", number: 1500, year: 2024 },
|
|
{ areaCode: "513233103", areaName: "安曲镇", number: 76, year: 2024 },
|
|
{ areaCode: "513233105", areaName: "龙日镇", number: 828, year: 2024 },
|
|
{ areaCode: "513233202", areaName: "江茸乡", number: 902, year: 2024 },
|
|
{ areaCode: "513233203", areaName: "查尔玛乡", number: 450, year: 2024 },
|
|
{ areaCode: "513233204", areaName: "瓦切镇", number: 602, year: 2024 },
|
|
{ areaCode: "513233205", areaName: "阿木乡", number: 300, year: 2024 },
|
|
{ areaCode: "513233207", areaName: "麦洼乡", number: 1204, year: 2024 },
|
|
{ areaCode: "513233208", areaName: "色地镇", number: 2638, year: 2024 },
|
|
].map((item) => ({
|
|
...item,
|
|
key: item.areaCode,
|
|
name: item.areaName,
|
|
value: item.number,
|
|
unit: "户",
|
|
}))
|
|
|
|
export const pastureOnlineRows = [
|
|
{ areaCode: "513233105", areaName: "龙日镇", uplineRate: 4, year: 2024 },
|
|
{ areaCode: "513233207", areaName: "麦洼乡", uplineRate: 52, year: 2024 },
|
|
{ areaCode: "513233103", areaName: "安曲镇", uplineRate: 22, year: 2024 },
|
|
{ areaCode: "513233100", areaName: "邛溪镇", uplineRate: 23, year: 2024 },
|
|
{ areaCode: "513233208", areaName: "色地镇", uplineRate: 8, year: 2024 },
|
|
{ areaCode: "513233205", areaName: "阿木乡", uplineRate: 12, year: 2024 },
|
|
{ areaCode: "513233202", areaName: "江茸乡", uplineRate: 14, year: 2024 },
|
|
{ areaCode: "513233203", areaName: "查尔玛乡", uplineRate: 18, year: 2024 },
|
|
{ areaCode: "513233204", areaName: "瓦切镇", uplineRate: 16, year: 2024 },
|
|
{ areaCode: "513233101", areaName: "刷经寺镇", uplineRate: 9, year: 2024 },
|
|
].map((item) => ({
|
|
...item,
|
|
key: item.areaCode,
|
|
name: item.areaName,
|
|
value: item.uplineRate,
|
|
unit: "%",
|
|
extra: `${item.uplineRate}%`,
|
|
}))
|
|
|
|
export const pastureStructureRows = [
|
|
{ areaName: "全县", ageRange: "0-20", sex: "男", number: 340, value: 340, year: 2024 },
|
|
{ areaName: "全县", ageRange: "0-20", sex: "女", number: 348, value: 348, year: 2024 },
|
|
{ areaName: "全县", ageRange: "21-40", sex: "男", number: 1700, value: 1700, year: 2024 },
|
|
{ areaName: "全县", ageRange: "21-40", sex: "女", number: 2040, value: 2040, year: 2024 },
|
|
{ areaName: "全县", ageRange: "41-60", sex: "男", number: 2040, value: 2040, year: 2024 },
|
|
{ areaName: "全县", ageRange: "41-60", sex: "女", number: 2104, value: 2104, year: 2024 },
|
|
{ areaName: "全县", ageRange: "61-80", sex: "男", number: 680, value: 680, year: 2024 },
|
|
{ areaName: "全县", ageRange: "61-80", sex: "女", number: 580, value: 580, year: 2024 },
|
|
{ areaName: "全县", ageRange: "81-100", sex: "男", number: 60, value: 60, year: 2024 },
|
|
{ areaName: "全县", ageRange: "81-100", sex: "女", number: 60, value: 60, year: 2024 },
|
|
]
|
|
|
|
const aggregateBy = (rows, nameKey, valueKey, unit) => Array.from(rows.reduce((map, item) => {
|
|
const name = item[nameKey] || "未标注"
|
|
const row = map.get(name) || { key: name, name, value: 0, unit }
|
|
row.value += Number(item[valueKey]) || 0
|
|
map.set(name, row)
|
|
return map
|
|
}, new Map()).values())
|
|
|
|
export const pastureAgeRows = aggregateBy(pastureStructureRows, "ageRange", "value", "人")
|
|
export const pastureGenderRows = [
|
|
{ key: "male", name: "男", value: 4820, unit: "人" },
|
|
{ key: "female", name: "女", value: 5132, unit: "人" },
|
|
]
|
|
|
|
export const pastureListRows = [
|
|
{ name: "更洼尔", areaName: "瓦切镇", acreage: 4704.87, summerAcreage: 2267.26, winterAcreage: 2437.61, year: 2024 },
|
|
{ name: "涉尔丹", areaName: "麦洼乡", acreage: 1426.53, summerAcreage: 687.82, winterAcreage: 738.71, year: 2024 },
|
|
{ name: "热布丹", areaName: "查尔玛乡", acreage: 2176.09, summerAcreage: 1049.37, winterAcreage: 1126.72, year: 2024 },
|
|
{ name: "王西卓玛", areaName: "阿木乡", acreage: 4126.13, summerAcreage: 1989.59, winterAcreage: 2136.54, year: 2024 },
|
|
{ name: "阿尔", areaName: "色地镇", acreage: 1249.48, summerAcreage: 602.25, winterAcreage: 647.23, year: 2024 },
|
|
{ name: "尕让吉", areaName: "邛溪镇", acreage: 3688.72, summerAcreage: 1778.56, winterAcreage: 1910.16, year: 2024 },
|
|
{ name: "华尔甲", areaName: "安曲镇", acreage: 2956.44, summerAcreage: 1425.01, winterAcreage: 1531.43, year: 2024 },
|
|
{ name: "泽让措", areaName: "江茸乡", acreage: 3448.36, summerAcreage: 1662.61, winterAcreage: 1785.75, year: 2024 },
|
|
{ name: "扎西让布", areaName: "龙日镇", acreage: 2689.1, summerAcreage: 1296.15, winterAcreage: 1392.95, year: 2024 },
|
|
{ name: "格桑卓玛", areaName: "刷经寺镇", acreage: 3187.64, summerAcreage: 1536.84, winterAcreage: 1650.8, year: 2024 },
|
|
].map((item) => ({
|
|
...item,
|
|
township: item.areaName,
|
|
grasslandArea: item.acreage,
|
|
value: item.acreage,
|
|
unit: "亩",
|
|
canLocate: false,
|
|
locateText: "--",
|
|
searchText: `${item.name} ${item.areaName}`,
|
|
}))
|
|
|
|
export const pastureGrasslandRows = aggregateBy(pastureListRows, "township", "grasslandArea", "亩").map((item) => ({
|
|
...item,
|
|
value: toWanMu(item.value),
|
|
unit: "万亩",
|
|
}))
|
|
|
|
export const pastureSeasonRows = Array.from(pastureListRows.reduce((map, item) => {
|
|
const name = item.township || "未填写"
|
|
const row = map.get(name) || { key: `${name}-season`, name, values: { summer: 0, winter: 0 } }
|
|
row.values.summer += Number(item.summerAcreage) || 0
|
|
row.values.winter += Number(item.winterAcreage) || 0
|
|
map.set(name, row)
|
|
return map
|
|
}, new Map()).values()).map((item) => ({
|
|
...item,
|
|
values: {
|
|
summer: toWanMu(item.values.summer),
|
|
winter: toWanMu(item.values.winter),
|
|
},
|
|
unit: "万亩",
|
|
}))
|
|
|
|
export const pastureMapRows = pastureTownRows.map((item) => ({
|
|
name: item.name,
|
|
value: item.value,
|
|
unit: "户",
|
|
}))
|
|
|
|
export const pastureFallbackProfile = {
|
|
topStats: pastureTopStats,
|
|
coreRows: pastureCoreRows,
|
|
townRows: pastureTownRows,
|
|
ageRows: pastureStructureRows,
|
|
genderRows: pastureGenderRows,
|
|
onlineRows: pastureOnlineRows,
|
|
list: pastureListRows,
|
|
}
|
|
|