From 128b3e0bbc4ec7657a2ebe0d6728450f8e232132 Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Fri, 20 Dec 2024 16:49:19 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.prostaging | 4 - package.json | 1 + src/assets/arrow.png | Bin 0 -> 11623 bytes src/store/modules/bigdata.js | 17 ++- src/views/assets/detail.vue | 2 +- src/views/dataShow/index.vue | 4 +- src/views/dataShow/leftBottom.vue | 10 +- src/views/dataShow/map.vue | 131 +++++++++++++++--- src/views/dataShow/tooltip.vue | 43 +++++- src/views/lease/component/LetImport.vue | 17 +++ src/views/statics/DepartmentStatistics.vue | 37 +++-- src/views/statics/component/HousePieChart.vue | 113 +++++++++++++++ src/views/statics/component/LandPieChart.vue | 112 +++++++++++++++ src/views/statics/component/barLineChart.vue | 94 +++++++------ src/views/statics/component/barLineChart1.vue | 98 ++++++------- 15 files changed, 544 insertions(+), 139 deletions(-) create mode 100644 src/assets/arrow.png create mode 100644 src/views/lease/component/LetImport.vue create mode 100644 src/views/statics/component/HousePieChart.vue create mode 100644 src/views/statics/component/LandPieChart.vue diff --git a/.env.prostaging b/.env.prostaging index 99c98d1..b6fdf0d 100644 --- a/.env.prostaging +++ b/.env.prostaging @@ -3,10 +3,6 @@ NODE_ENV = production # just a flag ENV = 'prostaging' -# base api -#VUE_APP_BASE_API=http://wuxiwuye.ali251.langye.net/ -#VUE_APP_UPLOAD_API=http://wuxiwuye.ali251.langye.net/api/admin/upload-file -#VUE_APP_PREVIEW=//view.langye.net:8012/onlinePreview # base api VUE_APP_BASE_API='' VUE_APP_UPLOAD_API=/api/admin/upload-file diff --git a/package.json b/package.json index 68420eb..5722ed5 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "author": "Pan ", "scripts": { "dev": "vue-cli-service serve", + "dev:prod": "vue-cli-service serve --mode production", "build:prod": "vue-cli-service build", "build:stage": "vue-cli-service build --mode staging", "build:prostaging": "vue-cli-service build --mode prostaging", diff --git a/src/assets/arrow.png b/src/assets/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4ede9d6bc682793bfaab2abf4680ca6b140567d6 GIT binary patch literal 11623 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 literal 0 HcmV?d00001 diff --git a/src/store/modules/bigdata.js b/src/store/modules/bigdata.js index 969ac90..4fcfe1b 100644 --- a/src/store/modules/bigdata.js +++ b/src/store/modules/bigdata.js @@ -1,4 +1,5 @@ import { index } from "@/api/system/baseForm"; +import { departmentStatistics } from "@/api/statics"; import * as $moment from "moment"; const state = { assets: [[],[]], @@ -7,6 +8,7 @@ const state = { safety: [], safetyPlan: [], adventSafetyPlan: [], + departmentStatics: {}, type: 1, is_auth: 1, } @@ -36,6 +38,9 @@ const mutations = { }, SET_SAFETY: (state, safety) => { state.safety = safety + }, + SET_DEPARTMENT_STATICS: (state, val) => { + state.departmentStatics = val } } @@ -235,7 +240,17 @@ const actions = { reject(err) }) }) - } + }, + async getDepartmentStatics({ commit }) { + return new Promise((resolve, reject) => { + departmentStatistics().then(res => { + commit("SET_DEPARTMENT_STATICS", res.departments) + resolve(res) + }).catch(err => { + reject(err) + }) + }) + } } export default { diff --git a/src/views/assets/detail.vue b/src/views/assets/detail.vue index 733631e..5af612a 100644 --- a/src/views/assets/detail.vue +++ b/src/views/assets/detail.vue @@ -1193,7 +1193,7 @@ export default { if ((this.detail.tudiquanshuren !== this.detail.quanliren) || (this.detail.dengjimianji !== this.detail.shijimianji)) { let text = "" - text += this.detail.tudiquanshuren !== this.detail.quanliren + text += (this.detail.hasOwnProperty('land_id') ? (this.detail.quanshuren !== this.detail.quanliren) : (this.detail.tudiquanshuren !== this.detail.quanliren)) ? " 权利人名称不符 " : "" text += this.detail.dengjimianji !== this.detail.shijimianji diff --git a/src/views/dataShow/index.vue b/src/views/dataShow/index.vue index ce5508c..dd5606a 100644 --- a/src/views/dataShow/index.vue +++ b/src/views/dataShow/index.vue @@ -68,7 +68,8 @@ export default { getAdventLeases: "getAdventLeases", getSafety: "getSafety", getSafetyPlan: "getSafetyPlan", - getAdventSafetyPlan: "getAdventSafetyPlan" + getAdventSafetyPlan: "getAdventSafetyPlan", + getDepartmentStatics: "getDepartmentStatics" }) }, computed: { @@ -88,6 +89,7 @@ export default { this.getSafety() this.getSafetyPlan() this.getAdventSafetyPlan() + this.getDepartmentStatics() } } diff --git a/src/views/dataShow/leftBottom.vue b/src/views/dataShow/leftBottom.vue index f6636f9..dc6a945 100644 --- a/src/views/dataShow/leftBottom.vue +++ b/src/views/dataShow/leftBottom.vue @@ -10,7 +10,7 @@ @@ -23,15 +43,19 @@ import * as echarts from 'echarts' import 'echarts-gl' import WUXI from '@/assets/wuxi.json' import tooltip from './tooltip.vue' +import SvgIcon from "@/components/SvgIcon" import { show as customFormFieldShow } from '@/api/system/customFormField' export default { components: { - tooltip + tooltip, + SvgIcon }, data() { return { + infoHouse: [], areaName: "", + wxAreas: ["宜兴市", "惠山区", "新吴区", "梁溪区", "江阴市", "滨湖区", "锡山区"], areas: new Map([ [1,"宜兴市"], [2,"惠山区"], @@ -73,10 +97,25 @@ export default { mapTooltipPos: { x: 0, y: 0, - } + position: 'fixed' + }, + + config: { + data: [] + }, + departmentStaticsWatch: null, + departmentStaticsId: 0, } }, methods: { + boardClick ({ rowIndex }) { + let data = this.labelData.filter(i => !i.isWx)[rowIndex] + this.mapTooltipPos.position = 'absolute' + this.areaName = data?.name + this.params = data?.originalData + this.infoHouse = data?.originalHouse + this.$refs.tooltip.show() + }, async getWxAreas () { try { const res = await customFormFieldShow({ id: 120 }) @@ -106,8 +145,10 @@ export default { this.chart.on("click", params => { this.mapTooltipPos.x = params.event.offsetX; this.mapTooltipPos.y = params.event.offsetY; + this.mapTooltipPos.position = 'fixed'; this.areaName = params.name; - this.params = params?.data?.originalData; + this.infoHouse = this.labelData.find(j => j.name === params.name)?.originalHouse + this.params = this.labelData.find(j => j.name === params.name)?.originalData; this.$refs.tooltip.show() }) }, @@ -119,19 +160,20 @@ export default { }, setOption () { this.chart.setOption(this.chartOption); + }, + setConfig () { + this.config = { + headerBGC: '#4fa497', + header: ['区域', '数量'], + data: this.labelData.filter(i => !i.isWx).map(i => [i.name, i.value]), + columnWidth: [200, 180], + align: ['center', 'center'] + } } }, computed: { chartOption () { return { - // tooltip: { - // trigger: 'item', - // formatter: (params) => { - // this.params = params; - // - // return this.mapTooltip; - // }, - // }, series: [{ type: 'map3D', // map、map3D map: 'wuxi', // 注册的地图名称 @@ -224,15 +266,10 @@ export default { tag: item[0], name: item[1], value: 0, - originalData: [] + originalData: [], + originalHouse: [], + isWx: this.wxAreas.indexOf(item[1]) !== -1 })) - // houses.forEach(item => { - // let find = temp.find(v => v.tag === item.area) - // if (find) { - // find.value++; - // find.originalData.push(item) - // } - // }) lands.forEach(item => { let find = temp.find(v => v.tag === item.area) if (find) { @@ -240,6 +277,12 @@ export default { find.originalData.push(item) } }) + houses.forEach(item => { + let find = temp.find(v => v.tag === item.area) + if (find) { + find.originalHouse.push(item) + } + }) return temp.filter(v => v.value > 0); } @@ -247,13 +290,18 @@ export default { watch: { labelData () { this.setOption() - } + this.setConfig() + }, }, created() { this.getWxAreas() }, mounted() { this.initMap(); + this.departmentStaticsWatch = this.$watch(() => this.$store.state.bigdata?.departmentStatics, () => this.departmentStaticsId++) + }, + beforeDestroy() { + this.departmentStaticsWatch() } } @@ -265,10 +313,10 @@ export default { background: linear-gradient(to bottom, #00000022 , #61b9ac66); } .tooltip-table { + width: 606px; + height: 500px; position: fixed; z-index: 99999996; - top: 0; - left: 0; } .switch-btn { position: absolute; @@ -329,4 +377,41 @@ export default { } } } +.department-statics { + position: absolute; + left: 10px; + top: 90px; + max-height: calc(100vh - 110px); + overflow: hidden scroll; + + &__item { + color: #fff; + padding: 12px 18px; + + &--name { + font-size: 17px; + font-weight: 600; + margin-bottom: 6px; + } + &--house, &--land { + text-indent: 6px; + } + .text-icon { + color: #73f3df; + } + } +} +.other-asset { + cursor: pointer; + position: absolute; + bottom: 10px; + right: 10px; + + &__arrow { + width: 110px; + height: 160px; + object-fit: contain; + transform: translateX(-30px) rotate(9deg); + } +} diff --git a/src/views/dataShow/tooltip.vue b/src/views/dataShow/tooltip.vue index 959c718..d0c1b3d 100644 --- a/src/views/dataShow/tooltip.vue +++ b/src/views/dataShow/tooltip.vue @@ -1,7 +1,13 @@ @@ -13,6 +19,10 @@ export default { info: { type: Array, default: () => [] + }, + house: { + type: Array, + default: () => [] } }, data() { @@ -39,7 +49,7 @@ export default { { key: 'department.name', title: '所属公司', - width: 180, + width: 170, align: 'center', render: (h, { row }) => h('div', row.department ? row.department.name : '') }, @@ -90,12 +100,39 @@ export default { if (!(tooltipDom === e.target || tooltipDom.contains(e.target))) { this.hide() } + }, + handleSummary({ columns, data }) { + const sums = {}; + columns.forEach((column, index) => { + const key = column.key; + if (index === 0) { + let landSum = this.info?.reduce((pre, cur) => pre + isNaN(Number(cur.shijimianji)) ? 0 : Number(cur.shijimianji),0) + sums[key] = { + key, + value: '土地'+landSum+'(m²)' + }; + return; + } else if (index === 1) { + let houseSum = this.house?.reduce((pre, cur) => pre + isNaN(Number(cur.shijimianji)) ? 0 : Number(cur.shijimianji),0) + sums[key] = { + key, + value: '房产'+houseSum+'(m²)' + }; + return; + } else { + sums[key] = { + key, + value: '' + }; + } + }); + + return sums; } }, computed: { showInfo () { return this.info - //return this.info?.slice(this.index, this.index + 8) || []; } }, watch: { diff --git a/src/views/lease/component/LetImport.vue b/src/views/lease/component/LetImport.vue new file mode 100644 index 0000000..1f9066c --- /dev/null +++ b/src/views/lease/component/LetImport.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/src/views/statics/DepartmentStatistics.vue b/src/views/statics/DepartmentStatistics.vue index 8e63f40..6a1d728 100644 --- a/src/views/statics/DepartmentStatistics.vue +++ b/src/views/statics/DepartmentStatistics.vue @@ -9,16 +9,23 @@ >
- -
- - + + + + + + + + + + +
@@ -26,21 +33,35 @@ diff --git a/src/views/statics/component/HousePieChart.vue b/src/views/statics/component/HousePieChart.vue new file mode 100644 index 0000000..8b00d2a --- /dev/null +++ b/src/views/statics/component/HousePieChart.vue @@ -0,0 +1,113 @@ + + + diff --git a/src/views/statics/component/LandPieChart.vue b/src/views/statics/component/LandPieChart.vue new file mode 100644 index 0000000..37595a9 --- /dev/null +++ b/src/views/statics/component/LandPieChart.vue @@ -0,0 +1,112 @@ + + + diff --git a/src/views/statics/component/barLineChart.vue b/src/views/statics/component/barLineChart.vue index 82766f0..304176f 100644 --- a/src/views/statics/component/barLineChart.vue +++ b/src/views/statics/component/barLineChart.vue @@ -28,16 +28,18 @@ export default { height: { type: String, default: '200px' + }, + myData: { + type: Array, + default: () => [] } }, data() { return { chart: null, - data: [], } }, mounted() { - this.getData().then(_ => this.initChart()) }, beforeDestroy() { if (!this.chart) { @@ -46,15 +48,36 @@ export default { this.chart.dispose() this.chart = null }, + computed: { + }, + watch: { + myData: { + handler: function(newVal) { + this.initChart() + }, + immediate: true + } + }, methods: { - async getData () { - const res = await departmentStatistics(); - console.log(res) - this.data = res.departments; + handleNum (num, precision=2) { + if (!num) return Number(0).toFixed(precision) + if (typeof num === 'string') { + if (isNaN(Number(num))) { + return Number(0).toFixed(precision) + } else { + return Number(num).toFixed(precision) + } + } else if (typeof num === 'number') { + return num.toFixed(precision) + } else { + return Number(0).toFixed(precision) + } }, initChart() { - this.chart = echarts.init(document.getElementById(this.id)) - this.setOption() + this.$nextTick(() => { + this.chart = echarts.init(document.getElementById(this.id)) + this.setOption() + }) }, setOption () { this.chart.setOption({ @@ -90,11 +113,23 @@ export default { saveAsImage: { show: true } } }, + dataZoom: [ + { + type: 'inside' + }, + { + type: 'slider' + } + ], xAxis: [ { type: 'category', axisTick: { show: false }, - data: this.data.map(i => i.name) + axisLabel: { + interval: 0, + rotate: 37 + }, + data: this.myData.map(i => i.name) } ], yAxis: [ @@ -104,59 +139,26 @@ export default { ], series: [ { - name: '土地', - type: 'bar', - barGap: 0, - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.land_count) - }, - { - name: '土地登记面积', - type: 'bar', - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.land_dengjimianji.toFixed(2)) - }, - { + barWidth: 30, name: '土地实际面积', type: 'bar', emphasis: { focus: 'series' }, - data: this.data.map(i => i.land_shijimianji.toFixed(2)) - }, - { - name: '房产', - type: 'bar', - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.house_count) - }, - { - name: '房产登记面积', - type: 'bar', - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.house_dengjimianji.toFixed(2)) + data: this.myData.map(i => this.handleNum(i.land_shijimianji)) }, { + barWidth: 30, name: '房产实际面积', type: 'bar', emphasis: { focus: 'series' }, - data: this.data.map(i => i.house_shijimianji.toFixed(2)) + data: this.myData.map(i => this.handleNum(i.house_shijimianji)) }, ] }) } }, - watch: { - } } diff --git a/src/views/statics/component/barLineChart1.vue b/src/views/statics/component/barLineChart1.vue index 769a0a2..51e48f0 100644 --- a/src/views/statics/component/barLineChart1.vue +++ b/src/views/statics/component/barLineChart1.vue @@ -28,16 +28,18 @@ export default { height: { type: String, default: '200px' + }, + myData: { + type: Array, + default: () => [] } }, data() { return { chart: null, - data: [], } }, mounted() { - this.getData().then(_ => this.initChart()) }, beforeDestroy() { if (!this.chart) { @@ -46,15 +48,34 @@ export default { this.chart.dispose() this.chart = null }, + watch: { + myData: { + handler: function() { + this.initChart() + }, + immediate: true + } + }, methods: { - async getData () { - const res = await departmentStatistics(); - console.log(res) - this.data = res.departments; + handleNum (num, precision=2) { + if (!num) return Number(0).toFixed(precision) + if (typeof num === 'string') { + if (isNaN(Number(num))) { + return Number(0).toFixed(precision) + } else { + return Number(num).toFixed(precision) + } + } else if (typeof num === 'number') { + return num.toFixed(precision) + } else { + return Number(0).toFixed(precision) + } }, initChart() { - this.chart = echarts.init(document.getElementById(this.id)) - this.setOption() + this.$nextTick(() => { + this.chart = echarts.init(document.getElementById(this.id)) + this.setOption() + }) }, setOption () { this.chart.setOption({ @@ -90,11 +111,23 @@ export default { saveAsImage: { show: true } } }, + dataZoom: [ + { + type: 'inside' + }, + { + type: 'slider' + } + ], xAxis: [ { type: 'category', axisTick: { show: false }, - data: this.data.map(i => i.name) + axisLabel: { + interval: 0, + rotate: 37 + }, + data: this.myData.map(i => i.name) } ], yAxis: [ @@ -104,59 +137,26 @@ export default { ], series: [ { - name: '租赁台账', - type: 'bar', - barGap: 0, - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.lease_count) - }, - { - name: '出租土地', + barWidth: 30, + name: '租赁土地面积', type: 'bar', emphasis: { focus: 'series' }, - data: this.data.map(i => i.leases_land_count) + data: this.myData.map(i => this.handleNum(i.leases_land_dengjimianji)) }, { - name: '出租土地面积', + barWidth: 30, + name: '租赁房产面积', type: 'bar', emphasis: { focus: 'series' }, - data: this.data.map(i => i.leases_land_dengjimianji.toFixed(2)) - }, - { - name: '出租房产', - type: 'bar', - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.leases_house_count) - }, - { - name: '出租房产面积', - type: 'bar', - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.leases_house_dengjimianji.toFixed(2)) - }, - { - name: '房产实际面积', - type: 'bar', - emphasis: { - focus: 'series' - }, - data: this.data.map(i => i.house_shijimianji.toFixed(2)) - }, + data: this.myData.map(i => this.handleNum(i.leases_house_dengjimianji)) + } ] }) } - }, - watch: { } }