From 2dec808df0b57d353e401ee41a40b60f5b08f87a Mon Sep 17 00:00:00 2001
From: xy <271556543@qq.com>
Date: Tue, 4 Jun 2024 17:36:11 +0800
Subject: [PATCH] 1
---
src/components/Charts/index.vue | 6 +-
src/store/index.js | 4 +-
src/store/modules/bigdata.js | 142 ++++
src/views/dashboard/index.vue | 22 +-
src/views/dataShow/btns.vue | 15 +-
src/views/dataShow/index.vue | 66 +-
src/views/dataShow/leftBottom.vue | 3 +-
src/views/dataShow/map.vue | 4 +-
src/views/dataShow/map1.vue | 169 +++++
src/views/dataShow/right1.vue | 42 +-
src/views/dataShow/right2.vue | 41 +-
src/views/dataShow/right3.vue | 7 +-
src/views/dataShow/tooltip.vue | 30 +-
src/views/safety/component/addSafetyPlan.vue | 256 +++++++
src/views/safety/safetyPlan.vue | 665 +++++++++++++++++++
15 files changed, 1369 insertions(+), 103 deletions(-)
create mode 100644 src/store/modules/bigdata.js
create mode 100644 src/views/dataShow/map1.vue
create mode 100644 src/views/safety/component/addSafetyPlan.vue
create mode 100644 src/views/safety/safetyPlan.vue
diff --git a/src/components/Charts/index.vue b/src/components/Charts/index.vue
index 16b5f09..4008418 100644
--- a/src/components/Charts/index.vue
+++ b/src/components/Charts/index.vue
@@ -190,7 +190,7 @@ export default {
color: 'rgba(255,255,255,.8)',
fontSize: 12
},
- data: newData.lease.map(item => item?.zulinkaishiqixian??'')
+ data: newData.lease?.map(item => item?.zulinkaishiqixian??'') || []
},
// 下方Y轴
yAxis: {
@@ -298,7 +298,7 @@ export default {
color: this.colorList.areaBtoG
}
},
- data: newData.lease.map(i => i?.zulinmianji??0),
+ data: newData.lease?.map(i => i?.zulinmianji??0) || [],
lineSmooth: true,
markLine: {
silent: true,
@@ -339,7 +339,7 @@ export default {
},
silent: true,
barWidth: '50%',
- data: newData.lease.map(i => i?.zulinmianji??0),
+ data: newData.lease?.map(i => i?.zulinmianji??0) || [],
animation: false
}
]
diff --git a/src/store/index.js b/src/store/index.js
index 461e409..5f1a9ac 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -6,6 +6,7 @@ import permission from './modules/permission'
import settings from './modules/settings'
import user from './modules/user'
import form from './modules/form'
+import bigdata from "./modules/bigdata"
Vue.use(Vuex)
@@ -15,7 +16,8 @@ const store = new Vuex.Store({
permission,
settings,
user,
- form
+ form,
+ bigdata
},
getters
})
diff --git a/src/store/modules/bigdata.js b/src/store/modules/bigdata.js
new file mode 100644
index 0000000..2009784
--- /dev/null
+++ b/src/store/modules/bigdata.js
@@ -0,0 +1,142 @@
+import { index } from "@/api/system/baseForm";
+import * as $moment from "moment";
+const state = {
+ assets: [[],[]],
+ leases: [],
+ adventLeases: [],
+ safety: [],
+ type: 1,
+}
+let config = {}
+
+const mutations = {
+ SET_ASSETS: (state, assets) => {
+ state.assets = assets
+ },
+ SET_LEASES: (state, leases) => {
+ state.leases = leases
+ },
+ SET_ADVENT_LEASES: (state, adventLeases) => {
+ state.adventLeases = adventLeases
+ },
+ SET_TYPE: (state, type) => {
+ state.type = type
+ },
+ SET_SAFETY: (state, safety) => {
+ state.safety = safety
+ }
+}
+
+const actions = {
+ getAssets({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ Promise.all([
+ index({
+ table_name: "houses",
+ page: 1,
+ page_size: 999
+ },false),
+ index({
+ table_name: "lands",
+ page: 1,
+ page_size: 999
+ })
+ ]).then(res => {
+ const [houses,lands] = res;
+ commit("SET_ASSETS",[houses.data,lands.data])
+ resolve([houses.data,lands.data])
+ }).catch(err => {
+ reject(err)
+ })
+ })
+ },
+ getLeases({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ index({
+ table_name: "leases",
+ page: 1,
+ page_size: 999,
+ filter: [
+ {
+ key: 'zulinjieshuqixian',
+ op: 'range',
+ value: `${$moment().format("YYYY-MM-DD")},2999-12-31`
+ },
+ {
+ key: 'zulinkaishiqixian',
+ op: 'range',
+ value: `${$moment(0).format("YYYY-MM-DD")},${$moment().format("YYYY-MM-DD")}`
+ }
+ ]
+ }).then(res => {
+ commit("SET_LEASES", res.data)
+ resolve(res)
+ }).catch(err => {
+ reject(err)
+ })
+ })
+ },
+ async getAdventLeases({ commit, state }) {
+ if (!config.time || !config.unit) {
+ const res = await index({
+ table_name: 'warnings',
+ filter: [
+ {
+ key: 'flag',
+ op: 'eq',
+ value: 'contract'
+ }
+ ]
+ },false)
+ config.time = Number(res.data[0]?.time);
+ config.unit = res.data[0]?.unit;
+ }
+ return new Promise((resolve, reject) => {
+ let preDate = $moment().add(config.time, config.unit).format("YYYY-MM-DD")
+ index({
+ table_name: "leases",
+ page: 1,
+ page_size: 999,
+ filter: [
+ {
+ key: 'zulinjieshuqixian',
+ op: 'range',
+ value: `${$moment().format("YYYY-MM-DD")},${preDate}`
+ },
+ {
+ key: 'zulinkaishiqixian',
+ op: 'range',
+ value: ``
+ }
+ ]
+ }).then(res => {
+ commit("SET_ADVENT_LEASES", res.data)
+ resolve(res)
+ }).catch(err => {
+ reject(err)
+ })
+ })
+ },
+ getSafety({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ index({
+ table_name: "asset_safety_inspections",
+ page: 1,
+ page_size: 999
+ }).then(res => {
+ commit("SET_SAFETY", res.data)
+ resolve(res)
+ }).catch(err => {
+ reject(err)
+ })
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index 2966d70..10a46a7 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -5,7 +5,7 @@
-
代办通知
+
待办通知
@@ -90,7 +90,7 @@
-
+
{{ item.zichanmingcheng }}
{{ $moment(new Date(item.riqi)).format('YYYY-MM-DD') }}
@@ -266,7 +266,7 @@
},
systems: [],
systemTotal: 0,
- assetSafetyInspectionsSelect: {
+ assetSafetyPlanSelect: {
table_name: 'asset_safety_inspections',
page: 1,
page_size: 10,
@@ -278,8 +278,8 @@
}
]
},
- assetSafetyInspectionsTotal: 0,
- assetSafetyInspections: [],
+ assetSafetyPlanTotal: 0,
+ assetSafetyPlan: [],
noticeSelect: {
table_name: 'notices',
page: 1,
@@ -471,11 +471,11 @@
this.notices = res;
this.noticeTotal = res.length;
},
- async getAssetSafetyInspections () {
- this.assetSafetyInspectionsSelect.filter[0].value = `${this.$moment().format("YYYY-MM-DD")},${this.$moment().add(this.config.time, this.config.unit).format("YYYY-MM-DD")}`
- const res = await index(this.assetSafetyInspectionsSelect,false);
- this.assetSafetyInspections = res.data;
- this.assetSafetyInspectionsTotal = res.total;
+ async getAssetSafetyPlan () {
+ this.assetSafetyPlanSelect.filter[0].value = `${this.$moment().format("YYYY-MM-DD")},${this.$moment().add(this.config.time, this.config.unit).format("YYYY-MM-DD")}`
+ const res = await index(this.assetSafetyPlanSelect,false);
+ this.assetSafetyPlan = res.data;
+ this.assetSafetyPlanTotal = res.total;
},
async getSystems () {
const res = await index(this.systemSelect,false);
@@ -499,7 +499,7 @@
this.getSystems();
this.getConfig().then(_ => {
this.getLeases();
- this.getAssetSafetyInspections();
+ this.getAssetSafetyPlan();
})
//this.loadData();
},
diff --git a/src/views/dataShow/btns.vue b/src/views/dataShow/btns.vue
index c57d40c..26153cb 100644
--- a/src/views/dataShow/btns.vue
+++ b/src/views/dataShow/btns.vue
@@ -1,6 +1,6 @@
-
+
@@ -31,13 +31,18 @@ export default {
return {
activeText: "资产总览",
items: [
- { text: "资产总览", icon: "house" },
- { text: "租赁数据", icon: "qiandai" },
- { text: "安全巡检", icon: "weixiu" }
+ { text: "资产总览", icon: "house", type: 1 },
+ { text: "租赁数据", icon: "qiandai", type: 2 },
+ { text: "安全巡检", icon: "weixiu", type: 3 },
]
}
},
- methods: {},
+ methods: {
+ btnClick (item) {
+ this.activeText = item.text
+ this.$store.commit("bigdata/SET_TYPE", item.type)
+ }
+ },
computed: {}
}
diff --git a/src/views/dataShow/index.vue b/src/views/dataShow/index.vue
index c7f6311..feddf5a 100644
--- a/src/views/dataShow/index.vue
+++ b/src/views/dataShow/index.vue
@@ -10,8 +10,10 @@
-
-
+
+
+
+
@@ -29,6 +31,7 @@
@@ -137,6 +108,7 @@ export default {
padding-left: 13%;
.left {
flex-basis: 74%;
+
}
.right {
flex: 1;
diff --git a/src/views/dataShow/leftBottom.vue b/src/views/dataShow/leftBottom.vue
index bbe9703..e7cbf95 100644
--- a/src/views/dataShow/leftBottom.vue
+++ b/src/views/dataShow/leftBottom.vue
@@ -37,7 +37,6 @@ export default {
components: {
SvgIcon
},
- inject: ["assets"],
data() {
return {
items: [
@@ -70,7 +69,7 @@ export default {
total () {
return function(tag) {
let total = 0;
- const [houses,lands] = this.assets()
+ const [houses,lands] = this.$store.state.bigdata.assets
switch (tag) {
case "total":
total += houses.reduce((a,b) => a + parseFloat(b.dengjimianji ?? 0),0)
diff --git a/src/views/dataShow/map.vue b/src/views/dataShow/map.vue
index 45a02b7..6a9e06e 100644
--- a/src/views/dataShow/map.vue
+++ b/src/views/dataShow/map.vue
@@ -10,7 +10,6 @@ import "echarts-gl";
import WUXI from "@/assets/wuxi.json";
import tooltip from "./tooltip.vue"
export default {
- inject: ["assets"],
data() {
return {
areas: new Map([
@@ -165,7 +164,7 @@ export default {
},
labelData () {
- let a = this.assets()
+ let a = this.$store.state.bigdata.assets
const [houses,lands] = a
let temp = Array.from(this.areas,(item,index) => ({
tag: item[0],
@@ -207,6 +206,5 @@ export default {
#map {
width: 100%;
height: 100%;
- padding: 20px;
}
diff --git a/src/views/dataShow/map1.vue b/src/views/dataShow/map1.vue
new file mode 100644
index 0000000..0a9824b
--- /dev/null
+++ b/src/views/dataShow/map1.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dataShow/right1.vue b/src/views/dataShow/right1.vue
index 96e90a2..fabd431 100644
--- a/src/views/dataShow/right1.vue
+++ b/src/views/dataShow/right1.vue
@@ -5,7 +5,7 @@
-
土地资产
+
{{ type === 1 ? '土地资产' : '合约中' }}
@@ -19,26 +19,44 @@ export default {
components: {
SvgIcon
},
- inject: ["assets"],
data() {
return {
}
},
methods: {},
computed: {
+ type () {
+ return this.$store.state.bigdata.type
+ },
ranking () {
- if (this.assets()[1]) {
- return {
- data: this.assets()[1].map(item => ({
- name: item.name.length > 16 ? (item.name.slice(0, 14) + '...') : item.name,
- value: item.dengjimianji ?? 0
- })),
- carousel: 'single',
- unit: '平方',
- waitTime: 4000,
- rowNum: 3
+ if (this.type === 1) {
+ if (this.$store.state.bigdata.assets[1]) {
+ return {
+ data: this.$store.state.bigdata.assets[1].map(item => ({
+ name: item.name.length > 16 ? (item.name.slice(0, 14) + '...') : item.name,
+ value: item.dengjimianji ?? 0
+ })),
+ carousel: 'single',
+ unit: '平方',
+ waitTime: 4000,
+ rowNum: 3
+ }
+ }
+ } else if (this.type === 2) {
+ if (this.$store.state.bigdata.leases) {
+ return {
+ data: this.$store.state.bigdata.leases.map(item => ({
+ name: item.dikuaimingcheng.length > 16 ? (item.dikuaimingcheng.slice(0, 14) + '...') : item.dikuaimingcheng,
+ value: item.zulinmianji ?? 0
+ })),
+ carousel: 'single',
+ unit: '平方',
+ waitTime: 4000,
+ rowNum: 3
+ }
}
}
+
}
}
}
diff --git a/src/views/dataShow/right2.vue b/src/views/dataShow/right2.vue
index cdf1fa9..d3f5317 100644
--- a/src/views/dataShow/right2.vue
+++ b/src/views/dataShow/right2.vue
@@ -5,7 +5,7 @@
-
房屋资产
+
{{ type === 1 ? '房屋资产' : '临期' }}
@@ -20,23 +20,40 @@ export default {
components: {
SvgIcon
},
- inject: ["assets"],
data() {
return {}
},
methods: {},
computed: {
+ type () {
+ return this.$store.state.bigdata.type
+ },
ranking() {
- if (this.assets()[0]) {
- return {
- data: this.assets()[0].map(item => ({
- name: item.name.length > 16 ? (item.name.slice(0, 14) + '...') : item.name,
- value: item.dengjimianji ?? 0
- })),
- carousel: 'single',
- unit: '平方',
- waitTime: 4000,
- rowNum: 3
+ if (this.type === 1) {
+ if (this.$store.state.bigdata.assets[0]) {
+ return {
+ data: this.$store.state.bigdata.assets[0].map(item => ({
+ name: item.name.length > 16 ? (item.name.slice(0, 14) + '...') : item.name,
+ value: item.dengjimianji ?? 0
+ })),
+ carousel: 'single',
+ unit: '平方',
+ waitTime: 4000,
+ rowNum: 3
+ }
+ }
+ } else if (this.type === 2) {
+ if (this.$store.state.bigdata.adventLeases) {
+ return {
+ data: this.$store.state.bigdata.adventLeases.map(item => ({
+ name: item.dikuaimingcheng.length > 16 ? (item.dikuaimingcheng.slice(0, 14) + '...') : item.dikuaimingcheng,
+ value: item.zulinmianji ?? 0
+ })),
+ carousel: 'single',
+ unit: '平方',
+ waitTime: 4000,
+ rowNum: 3
+ }
}
}
}
diff --git a/src/views/dataShow/right3.vue b/src/views/dataShow/right3.vue
index 0d40b4a..e853a13 100644
--- a/src/views/dataShow/right3.vue
+++ b/src/views/dataShow/right3.vue
@@ -25,7 +25,6 @@
import SvgIcon from "@/components/SvgIcon"
import Chart from "@/components/Charts"
export default {
- inject: ["assets","leases"],
components: {
SvgIcon,
Chart
@@ -63,7 +62,6 @@ export default {
assets = this.assetsList.filter(i => !!(i.jiaotong || i.jiaoyu || i.shangquan || i.shushidu))
myAsset = assets[Math.floor(Math.random() * assets.length)];
}
- console.log(myAsset)
// if (this.leaseList instanceof Array) {
// console.log(this.leaseList)
// myLease = this.leaseList[Math.floor(Math.random() * this.leaseList.length)];
@@ -72,7 +70,6 @@ export default {
// 清空轮询数据
this.cdata.asset = myAsset??{};
this.cdata.lease = myAsset ? myAsset["id_leases_land_id_relation"] : [];
- console.log(this.cdata.lease)
this.cdata.radarData = myAsset ? [myAsset.jiaotong, myAsset.jiaoyu, myAsset.shangquan, myAsset.shushidu] : [];
this.cdata.radarDataAvg = assets ?
[
@@ -86,10 +83,10 @@ export default {
},
computed: {
assetsList () {
- return this.assets()[1]
+ return this.$store.state.bigdata.assets[1]
},
leaseList () {
- return this.leases()
+ return this.$store.state.bigdata.leases
}
}
};
diff --git a/src/views/dataShow/tooltip.vue b/src/views/dataShow/tooltip.vue
index 8ef002a..b54be73 100644
--- a/src/views/dataShow/tooltip.vue
+++ b/src/views/dataShow/tooltip.vue
@@ -1,6 +1,6 @@
@@ -11,6 +11,8 @@ export default {
},
data() {
return {
+ index: 0,
+ timer: null,
columns: [
{
key: "name",
@@ -24,7 +26,27 @@ export default {
}
},
methods: {},
- computed: {}
+ computed: {
+ showInfo () {
+ return this.info?.slice(this.index, this.index + 8) || [];
+ }
+ },
+ watch: {
+ info (newData) {
+ this.$nextTick(() => {
+ clearInterval(this.timer)
+ if (this.info?.length > 8) {
+ this.timer = setInterval(() => {
+ this.index = (++this.index) % (this.info?.length || 0);
+ },3000)
+ }
+ })
+ }
+ },
+ beforeDestroy () {
+ clearInterval(this.timer)
+ console.log('des')
+ }
}
@@ -32,5 +54,9 @@ export default {
.table {
width: 320px;
height: auto;
+ max-height: 400px;
+ overflow-y: hidden;
}
+
+::v-deep .ivu-table {}
diff --git a/src/views/safety/component/addSafetyPlan.vue b/src/views/safety/component/addSafetyPlan.vue
new file mode 100644
index 0000000..243793d
--- /dev/null
+++ b/src/views/safety/component/addSafetyPlan.vue
@@ -0,0 +1,256 @@
+
+
+
+
diff --git a/src/views/safety/safetyPlan.vue b/src/views/safety/safetyPlan.vue
new file mode 100644
index 0000000..6ad6dd0
--- /dev/null
+++ b/src/views/safety/safetyPlan.vue
@@ -0,0 +1,665 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ inputStartHandler(e, select.filter[0])"
+ />
+ 至
+ inputEndHandler(e, select.filter[0])"
+ />
+
+
+
+
+
+
+
+
条件{{ index + 1 }}
+
+
+
+
+
+
+
+
+
+ inputStartHandler(e, item)"
+ />
+ 至
+ inputEndHandler(e, item)"
+ />
+
+
+
+
+
+
+ 新增一条
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{
+ $refs['dialog'].setId(row.id);
+ $refs['dialog'].setType('editor');
+ $refs['dialog'].show();
+ }
+ "
+ @loaded="adjustAlignment"
+ >
+
+
+
+
+
+
+
+
+
+
+