From 25b4809f1d38c518289b800f80c10105384422b9 Mon Sep 17 00:00:00 2001 From: yuzongping <835949940@qq.com> Date: Tue, 15 Jul 2025 14:22:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E9=87=91=E5=BE=80=E6=9D=A5=E4=B8=8D?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E9=A2=84=E8=AD=A6=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/common/uploadAttachment.js | 17 +- src/components/charts/bar/index.js | 10 +- src/components/charts/pie/index.js | 10 +- src/components/gis-map/index.js | 2 - src/store/getters.js | 4 +- .../capital/comps/right/bottom/1/index.html | 7 +- .../capital/comps/right/bottom/2/index.js | 1 - src/views/property/api/index.js | 172 ++++++++++++++++++ src/views/property/comps/buttom/1/index.js | 37 +++- src/views/property/comps/buttom/2/index.js | 35 ++++ .../property/comps/left/bottom/1/index.html | 9 +- .../property/comps/left/bottom/1/index.js | 41 ++++- .../property/comps/left/bottom/2/index.html | 9 +- .../property/comps/left/bottom/2/index.js | 32 ++++ .../property/comps/left/bottom/3/index.js | 1 - .../property/comps/left/middle/1/index.html | 9 +- .../property/comps/left/middle/1/index.js | 40 +++- .../property/comps/left/middle/3/index.js | 1 - src/views/property/comps/left/top/1/data.js | 8 +- .../property/comps/left/top/1/index.html | 7 +- src/views/property/comps/left/top/1/index.js | 40 +++- .../property/comps/left/top/2/index.html | 9 +- src/views/property/comps/left/top/2/index.js | 49 +++++ src/views/property/comps/left/top/4/index.js | 1 - .../property/comps/right/bottom/1/index.html | 9 +- .../property/comps/right/bottom/1/index.js | 34 +++- .../property/comps/right/bottom/2/index.html | 9 +- .../property/comps/right/bottom/2/index.js | 32 ++++ .../property/comps/right/middle/1/index.html | 9 +- .../property/comps/right/middle/1/index.js | 50 ++++- .../property/comps/right/middle/2/index.html | 10 +- .../property/comps/right/middle/2/index.js | 39 +++- .../property/comps/right/middle/3/index.js | 1 - src/views/property/comps/right/top/1/data.js | 8 +- .../property/comps/right/top/1/index.html | 7 +- src/views/property/comps/right/top/1/index.js | 36 ++++ .../property/comps/right/top/2/index.html | 9 +- src/views/property/comps/right/top/2/index.js | 32 ++++ src/views/property/main-gis/index.js | 77 ++++---- src/views/resources/api/index.js | 27 +++ .../resources/comps/left/bottom/2/index.html | 9 +- .../resources/comps/left/bottom/2/index.js | 35 ++++ .../resources/comps/left/middle/2/index.html | 9 +- .../resources/comps/left/middle/2/index.js | 34 ++++ src/views/resources/comps/left/top/1/index.js | 3 + .../resources/comps/left/top/2/index.html | 9 +- src/views/resources/comps/left/top/2/index.js | 34 ++++ src/views/sanqing/main-gis/index.js | 2 - 48 files changed, 946 insertions(+), 129 deletions(-) create mode 100644 src/views/resources/api/index.js diff --git a/src/api/common/uploadAttachment.js b/src/api/common/uploadAttachment.js index 1279d26..1cc5d6a 100644 --- a/src/api/common/uploadAttachment.js +++ b/src/api/common/uploadAttachment.js @@ -2,11 +2,16 @@ import request from '@/utils/request' import { usingExternalUploadService } from "@/api/system/config"; //查询已上传附件 -export const attachmentList = (data) => { +export const attachmentList = (deptId, year, useType) => { + let query = { + deptId, + year, + useType + } return request({ - url: '/api/system/attachment/query', + url: 'api/home/xixia/asset/zcList', method: 'get', - params: data + params: query }) } @@ -51,7 +56,6 @@ export const extUploader = function () { // 内部方式上传 this._Upload_inner = (url, data) => { - //console.log('使用内部上传: ' + process.env.VUE_APP_BASE_API + url); return request({ url: url, method: 'post', @@ -66,7 +70,6 @@ export const extUploader = function () { data.append('token', this._token); else data.token = this._token; - //console.log('使用外部上传: ' + this._remoteHost + url); return request({ url: url, method: 'post', @@ -86,13 +89,11 @@ export const extUploader = function () { this._token = resp.data; this._remoteHost = resp.fileServerAddress; this._usingExternal = true; - //console.log('使用外部上传: ' + this._remoteHost); } else { this._token = null; this._remoteHost = null; this._usingExternal = false; - //console.log('使用内部上传'); } this._supportExternal = true; }).catch(() => { @@ -100,7 +101,6 @@ export const extUploader = function () { this._remoteHost = null; this._usingExternal = false; this._supportExternal = false; - //console.log('未配置文件外部服务, 将使用内部上传'); }); }; @@ -151,7 +151,6 @@ export const extUploader = function () { throw '请先调用Init进行初始化'; if (this._UsingExternal()) { return this._Upload_external(extUrl, data).catch(() => { - //console.log('外部上传失败! 尝试转为内部上传'); this.ForceDisableExternal(); return this._Upload_inner(innerUrl, data); }); diff --git a/src/components/charts/bar/index.js b/src/components/charts/bar/index.js index ead94d6..3ed521a 100644 --- a/src/components/charts/bar/index.js +++ b/src/components/charts/bar/index.js @@ -46,15 +46,14 @@ export default { watch: { data: { handler: function (val) { - this.$nextTick(function(){ - setTimeout(()=>{ + this.$nextTick(function () { + setTimeout(() => { this.initChart(); - },2000) - console.log(val) + }, 2000) }); }, immediate: true, - deep:true + deep: true } }, create () { @@ -91,7 +90,6 @@ export default { bgData.push(100) }); - //console.log(data); const option = { color: ["#3398DB"], tooltip: { diff --git a/src/components/charts/pie/index.js b/src/components/charts/pie/index.js index 98b08a1..b484659 100644 --- a/src/components/charts/pie/index.js +++ b/src/components/charts/pie/index.js @@ -54,15 +54,14 @@ export default { watch: { data: { handler: function (val) { - this.$nextTick(function(){ - setTimeout(()=>{ + this.$nextTick(function () { + setTimeout(() => { this.initChart(); - },2000) - console.log(val) + }, 2000) }); }, immediate: true, - deep:true + deep: true } }, mounted () { @@ -89,7 +88,6 @@ export default { ...this.data ]; var that = this; - console.log(echartData) var rich = { yellow: { color: "rgba(185, 211, 235, 1)", diff --git a/src/components/gis-map/index.js b/src/components/gis-map/index.js index 4949d81..19d0a89 100644 --- a/src/components/gis-map/index.js +++ b/src/components/gis-map/index.js @@ -25,7 +25,6 @@ export default { watch: { 'queryParams.deptId': { handler: function () { - console.log(this.queryParams.deptId); this.commitDept(this.queryParams.deptId); }, immediate: true, // 立即执行 @@ -89,7 +88,6 @@ export default { created () { }, mounted () { - // console.log('当前年份', this.centerYear); this.commitYear(this.centerYear); // 获取geoserver的地址 this.getGeoServerUrl(); diff --git a/src/store/getters.js b/src/store/getters.js index 2d4b3e5..1e01b22 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -1,7 +1,7 @@ const getters = { sidebar: state => state.app.sidebar, - year: state => state.user.year, - deptId: state => state.user.deptId, + year: state => { return state.user.year ? state.user.year : new Date().getFullYear() }, + deptId: state => { return state.user.deptId ? state.user.deptId : 100 }, size: state => state.app.size, device: state => state.app.device, visitedViews: state => state.tagsView.visitedViews, diff --git a/src/views/capital/comps/right/bottom/1/index.html b/src/views/capital/comps/right/bottom/1/index.html index 39228ad..1220226 100644 --- a/src/views/capital/comps/right/bottom/1/index.html +++ b/src/views/capital/comps/right/bottom/1/index.html @@ -1,3 +1,8 @@ - + \ No newline at end of file diff --git a/src/views/capital/comps/right/bottom/2/index.js b/src/views/capital/comps/right/bottom/2/index.js index e5a7beb..751ffb4 100644 --- a/src/views/capital/comps/right/bottom/2/index.js +++ b/src/views/capital/comps/right/bottom/2/index.js @@ -65,7 +65,6 @@ export default { } }, tabChange (info) { - console.log('222', info); this.type = info.type; this.tabIndex = info.id this.getData() diff --git a/src/views/property/api/index.js b/src/views/property/api/index.js index cadee4d..91290d9 100644 --- a/src/views/property/api/index.js +++ b/src/views/property/api/index.js @@ -90,4 +90,176 @@ export function longTermIdleResourceWarning (deptId, year) { method: 'get', params: query }) +} + +// 资产一张图-债务分析-左上-债务概况分析 +export function debtOverviewAnalysis (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/assetAnalysis/zwhkfx', + method: 'get', + params: query + }) +} + +// 资产一张图-债务分析-左下-债务趋势分析 +export function debtTrendAnalysis (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/assetAnalysis/zwqsfx', + method: 'get', + params: query + }) +} + +// 资产一张图-债务分析-左下-债务趋势分析 +export function rankingOfDebtAmount (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/assetAnalysis/zwjepm', + method: 'get', + params: query + }) +} + +// 资产一张图-债务分析-右中-债务变化排名 +export function debtChangeRanking (deptId, year, type) { + let query = { + deptId, + year, + type + } + return request({ + url: 'api/home/xixia/assetAnalysis/zwbhpm', + method: 'get', + params: query + }) +} + +// 资产一张图-债务分析-右下-债务超标分析 +export function analysisOfExcessiveDebt (deptId, year) { + let query = { + deptId, + year, + zwRate: 40 + } + return request({ + url: 'api/home/xixia/assetAnalysis/zwcbfx', + method: 'get', + params: query + }) +} + +// 资产一张图-债务分析-中下-7指标 +export function debtAnalysis (deptId, year) { + let query = { + deptId, + year, + zwRate: 40 + } + return request({ + url: 'api/home/xixia/assetAnalysis/zczwfxzb', + method: 'get', + params: query + }) +} + +// 资产一张图-左上-固定资产概况分析 +export function analysisOfFixedAssetOverview (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/gdzcgkfx', + method: 'get', + params: query + }) +} + +// 资产一张图-左中-固定资产类型分析 +export function analysisOfFixedAssetTypes (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/gdzclxfx', + method: 'get', + params: query + }) +} + +// 资产一张图-左下-经营性资产分析 +export function analysisOfOperatingAssets (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/jyxzcfx', + method: 'get', + params: query + }) +} + +// 资产一张图-右上-合同类型分析 +export function analysisOfContractTypes (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/htgkfx', + method: 'get', + params: query + }) +} + +// 资产一张图-右中-合同数量/金额排名分析 +export function analysisOfAmountRanking (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/htsljepmfx', + method: 'get', + params: query + }) +} + +// 资产一张图-右下-合同不规范管理排名分析 +export function rankingAnalysisOfNonStandardContractManagement (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/htbgfglpmfx', + method: 'get', + params: query + }) +} + +// 资产一张图-中下-7指标 +export function indicatorBelowAverage (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/asset/zczb', + method: 'get', + params: query + }) } \ No newline at end of file diff --git a/src/views/property/comps/buttom/1/index.js b/src/views/property/comps/buttom/1/index.js index 7b2a5a9..1c98a68 100644 --- a/src/views/property/comps/buttom/1/index.js +++ b/src/views/property/comps/buttom/1/index.js @@ -1,5 +1,7 @@ import BlockValue from '@/components/value/index.vue'; import data from './data.js'; +import { mapGetters } from 'vuex'; +import { indicatorBelowAverage } from '../../../api/index.js'; export default { components: { BlockValue @@ -9,10 +11,41 @@ export default { data }; }, - created () { + computed: { + ...mapGetters(['year', 'deptId']) }, - mounted () { + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } }, methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + indicatorBelowAverage(this.deptId, this.year).then(res => { + this.data[0][0].value = res.data.cqtz + this.data[0][1].value = res.data.dqtz + this.data[0][2].value = res.data.ysk + + + this.data[1][0].value = res.data.kcwz + this.data[1][1].value = res.data.swzc + this.data[1][2].value = res.data.gdzc + this.data[1][3].value = res.data.wxzc + this.data = data + this.isLoad = true; + }) + } + } } }; diff --git a/src/views/property/comps/buttom/2/index.js b/src/views/property/comps/buttom/2/index.js index 7b2a5a9..81f6916 100644 --- a/src/views/property/comps/buttom/2/index.js +++ b/src/views/property/comps/buttom/2/index.js @@ -1,9 +1,28 @@ import BlockValue from '@/components/value/index.vue'; import data from './data.js'; +import { debtAnalysis } from '../../../api/index.js' +import { mapGetters } from 'vuex'; export default { components: { BlockValue }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { data @@ -14,5 +33,21 @@ export default { mounted () { }, methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + debtAnalysis(this.deptId, this.year, this.type).then(res => { + this.data[0][0].value = res.data.dqjk + this.data[0][1].value = res.data.yfk + this.data[0][2].value = res.data.yfgz + + this.data[1][0].value = res.data.yflwf + this.data[1][1].value = res.data.cqjkjyfk + this.data[1][2].value = res.data.ysyyzj + this.data[1][3].value = res.data.zxyfk + this.isLoad = true; + }) + } + } } }; diff --git a/src/views/property/comps/left/bottom/1/index.html b/src/views/property/comps/left/bottom/1/index.html index 7fa37d7..d42a7e1 100644 --- a/src/views/property/comps/left/bottom/1/index.html +++ b/src/views/property/comps/left/bottom/1/index.html @@ -1,10 +1,15 @@ - +
- +
\ No newline at end of file diff --git a/src/views/property/comps/left/bottom/1/index.js b/src/views/property/comps/left/bottom/1/index.js index c66c658..4b2fec9 100644 --- a/src/views/property/comps/left/bottom/1/index.js +++ b/src/views/property/comps/left/bottom/1/index.js @@ -1,15 +1,35 @@ import Pannel from '@/components/pannel/index.vue'; import PannelTabs from '@/components/pannel-tabs/index.vue'; import Bar from '@/components/charts/bar/index.vue'; - +import { analysisOfOperatingAssets } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { Bar, PannelTabs, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + data: [], + isLoad: false, pannelTabData: [ { id: '1', @@ -23,14 +43,25 @@ export default { tabIndex: '1' }; }, - created () { - }, - mounted () { - }, methods: { + getData () { + if (this.year && this.deptId) { + this.isLoad = false; + analysisOfOperatingAssets(this.deptId, this.year).then(res => { + console.log(res, 999); + if (this.tabIndex == 1) { + this.data = res.data.jyx + } else if (this.tabIndex == 2) { + this.data = res.data.fjyx + } + this.isLoad = true; + }) + } + }, tabChange (info) { //console.log(info); this.tabIndex = info.id + this.getData() } } }; diff --git a/src/views/property/comps/left/bottom/2/index.html b/src/views/property/comps/left/bottom/2/index.html index 3501bd3..7d8c3d4 100644 --- a/src/views/property/comps/left/bottom/2/index.html +++ b/src/views/property/comps/left/bottom/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/property/comps/left/bottom/2/index.js b/src/views/property/comps/left/bottom/2/index.js index 36ea38d..b64ab8a 100644 --- a/src/views/property/comps/left/bottom/2/index.js +++ b/src/views/property/comps/left/bottom/2/index.js @@ -1,12 +1,44 @@ import Pannel from '@/components/pannel/index.vue'; import Lines from '@/components/charts/line/index.vue'; +import { debtTrendAnalysis } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { Lines, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, + methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + debtTrendAnalysis(this.deptId, this.year).then(res => { + this.data = res.data; + this.isLoad = true; + }) + } + } + }, data () { return { + data: [], + isLoad: false }; } }; diff --git a/src/views/property/comps/left/bottom/3/index.js b/src/views/property/comps/left/bottom/3/index.js index f93f4bb..76c8adc 100644 --- a/src/views/property/comps/left/bottom/3/index.js +++ b/src/views/property/comps/left/bottom/3/index.js @@ -38,7 +38,6 @@ export default { if (this.year, this.deptId) { this.isLoad = false; longTermIdleResourceWarning(this.deptId, this.year).then(res => { - console.log('longTermIdleResourceWarning', res); let data = res.data.map(item => { return [item.name, item.resourceSort, item.resourceType, item.deptName] }) diff --git a/src/views/property/comps/left/middle/1/index.html b/src/views/property/comps/left/middle/1/index.html index 89edd1a..c5bce15 100644 --- a/src/views/property/comps/left/middle/1/index.html +++ b/src/views/property/comps/left/middle/1/index.html @@ -1,10 +1,15 @@ - +
- +
\ No newline at end of file diff --git a/src/views/property/comps/left/middle/1/index.js b/src/views/property/comps/left/middle/1/index.js index ea79495..e5b322f 100644 --- a/src/views/property/comps/left/middle/1/index.js +++ b/src/views/property/comps/left/middle/1/index.js @@ -1,15 +1,34 @@ import Pannel from '@/components/pannel/index.vue'; import PannelTabs from '@/components/pannel-tabs/index.vue'; import Bar from '@/components/charts/bar/index.vue'; - +import { analysisOfFixedAssetTypes } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { Bar, PannelTabs, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, pannelTabData: [ { id: '1', @@ -20,16 +39,27 @@ export default { name: '非经营性' } ], + data: [], tabIndex: '1' }; }, - created () { - }, - mounted () { - }, methods: { + getData () { + if (this.year && this.deptId) { + this.isLoad = false; + analysisOfFixedAssetTypes(this.deptId, this.year).then(res => { + if (this.tabIndex == 1) { + this.data = res.data.jyx + } else if (this.tabIndex == 2) { + this.data = res.data.fjyx + } + this.isLoad = true; + }) + } + }, tabChange (info) { this.tabIndex = info.id + this.getData() } } }; diff --git a/src/views/property/comps/left/middle/3/index.js b/src/views/property/comps/left/middle/3/index.js index 179909f..58d5b13 100644 --- a/src/views/property/comps/left/middle/3/index.js +++ b/src/views/property/comps/left/middle/3/index.js @@ -38,7 +38,6 @@ export default { if (this.year, this.deptId) { this.isLoad = false; warningForNonStandardRentalOfResources(this.deptId, this.year).then(res => { - console.log('warningForNonStandardRentalOfResources', res); let data = res.data.map(item => { return [item.name, item.resourceSort, item.resourceType, item.deptName] }) diff --git a/src/views/property/comps/left/top/1/data.js b/src/views/property/comps/left/top/1/data.js index b851696..33ab69f 100644 --- a/src/views/property/comps/left/top/1/data.js +++ b/src/views/property/comps/left/top/1/data.js @@ -3,24 +3,24 @@ export default [ { name: '固定资产(个)', icon: require('./1.png'), - value: '3420' + value: '0' }, { name: '总原值(万元)', icon: require('./2.png'), - value: '257' + value: '0' } ], [ { name: '经营性固定资产(个)', icon: require('./3.png'), - value: '160' + value: '0' }, { name: '总原值(万元)', icon: require('./2.png'), - value: '101' + value: '0' } ] ] \ No newline at end of file diff --git a/src/views/property/comps/left/top/1/index.html b/src/views/property/comps/left/top/1/index.html index 496eaf4..941fdfc 100644 --- a/src/views/property/comps/left/top/1/index.html +++ b/src/views/property/comps/left/top/1/index.html @@ -1,4 +1,9 @@ - +
diff --git a/src/views/property/comps/left/top/1/index.js b/src/views/property/comps/left/top/1/index.js index dd153d1..8e6dcc0 100644 --- a/src/views/property/comps/left/top/1/index.js +++ b/src/views/property/comps/left/top/1/index.js @@ -1,14 +1,52 @@ import Pannel from '@/components/pannel/index.vue'; import Block from '@/components/block/index.vue'; import data from './data.js'; +import { analysisOfFixedAssetOverview } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { Block, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, data }; - } + }, + created () { + this.getData() + }, + + methods: { + getData () { + if (this.year && this.deptId) { + this.isLoad = false; + analysisOfFixedAssetOverview(this.deptId, this.year).then(res => { + this.data[0][0].value = res.data.num + this.data[0][1].value = res.data.zyz + this.data[1][0].value = res.data.numJyx + this.data[1][1].value = res.data.jyxzyz + this.isLoad = true; + }) + } + } + }, }; diff --git a/src/views/property/comps/left/top/2/index.html b/src/views/property/comps/left/top/2/index.html index 472efb5..ad08170 100644 --- a/src/views/property/comps/left/top/2/index.html +++ b/src/views/property/comps/left/top/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/property/comps/left/top/2/index.js b/src/views/property/comps/left/top/2/index.js index 2f6e630..1745cfc 100644 --- a/src/views/property/comps/left/top/2/index.js +++ b/src/views/property/comps/left/top/2/index.js @@ -1,12 +1,61 @@ import Pannel from '@/components/pannel/index.vue'; import Pies from '@/components/charts/pies/index.vue'; +import { debtOverviewAnalysis } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { Pies, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, + methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + debtOverviewAnalysis(this.deptId, this.year).then(res => { + let data = [ + { + name: '债务规模', + value: res.data.zwgm, + unit: '万' + }, + { + name: '负债规模', + value: res.data.fzgm, + unit: '万' + }, + { + name: '集体资产', + value: res.data.jtzc, + unit: '万' + } + ] + this.data = data; + this.isLoad = true; + }) + } + } + }, data () { return { + isLoad: false, + data: [] }; } }; diff --git a/src/views/property/comps/left/top/4/index.js b/src/views/property/comps/left/top/4/index.js index e8aa9e5..827e93b 100644 --- a/src/views/property/comps/left/top/4/index.js +++ b/src/views/property/comps/left/top/4/index.js @@ -36,7 +36,6 @@ export default { this.isLoad = false // 是否加载完成 if (this.year, this.deptId) { debtOverview(this.deptId, this.year).then(res => { - console.log('debtOverview', res); this.data.topData[0][0].value = res.data.zbdz this.data.topData[0][1].value = res.data.gfzl this.data.topData[1][0].value = res.data.zfzl diff --git a/src/views/property/comps/right/bottom/1/index.html b/src/views/property/comps/right/bottom/1/index.html index acc4586..dd334b7 100644 --- a/src/views/property/comps/right/bottom/1/index.html +++ b/src/views/property/comps/right/bottom/1/index.html @@ -1,3 +1,8 @@ - - + + \ No newline at end of file diff --git a/src/views/property/comps/right/bottom/1/index.js b/src/views/property/comps/right/bottom/1/index.js index 82f0947..7f71ae9 100644 --- a/src/views/property/comps/right/bottom/1/index.js +++ b/src/views/property/comps/right/bottom/1/index.js @@ -1,13 +1,33 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; - +import { mapGetters } from 'vuex'; +import { rankingAnalysisOfNonStandardContractManagement } from '../../../../api/index.js'; export default { components: { ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, + data: [], headers: ['部门名称', '合同数量', '排名'] }; }, @@ -16,5 +36,17 @@ export default { mounted () { }, methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + rankingAnalysisOfNonStandardContractManagement(this.deptId, this.year).then(res => { + let data = res.data.map(item => { + return [item.name, item.value, item.index] + }) + this.data = data + this.isLoad = true; + }) + } + }, } }; diff --git a/src/views/property/comps/right/bottom/2/index.html b/src/views/property/comps/right/bottom/2/index.html index 72c9d71..b144b96 100644 --- a/src/views/property/comps/right/bottom/2/index.html +++ b/src/views/property/comps/right/bottom/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/property/comps/right/bottom/2/index.js b/src/views/property/comps/right/bottom/2/index.js index 00455d1..8394413 100644 --- a/src/views/property/comps/right/bottom/2/index.js +++ b/src/views/property/comps/right/bottom/2/index.js @@ -1,12 +1,32 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; +import { analysisOfExcessiveDebt } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, headers: ['经济组织名称', '债务金额', '债务率'], data: [['经济组织名称', '债务金额', '21%']] }; @@ -16,5 +36,17 @@ export default { mounted () { }, methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + analysisOfExcessiveDebt(this.deptId, this.year, this.type).then(res => { + let data = res.rows.map(item => { + return [item.name, item.zwje, item.zwl] + }) + this.data = data; + this.isLoad = true; + }) + } + }, } }; diff --git a/src/views/property/comps/right/middle/1/index.html b/src/views/property/comps/right/middle/1/index.html index b0ef707..458cc77 100644 --- a/src/views/property/comps/right/middle/1/index.html +++ b/src/views/property/comps/right/middle/1/index.html @@ -1,10 +1,15 @@ - +
- +
\ No newline at end of file diff --git a/src/views/property/comps/right/middle/1/index.js b/src/views/property/comps/right/middle/1/index.js index a6d9491..861340c 100644 --- a/src/views/property/comps/right/middle/1/index.js +++ b/src/views/property/comps/right/middle/1/index.js @@ -1,14 +1,35 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; import PannelTabs from '@/components/pannel-tabs/index.vue'; +import { mapGetters } from 'vuex'; +import { analysisOfAmountRanking } from '../../../../api/index.js'; export default { components: { PannelTabs, ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + tabIndex: '1', + isLoad: false, headers: ['部门名称', '数量', '排名'], pannelTabData: [ { @@ -20,15 +41,32 @@ export default { name: '金额' } ], + data: [] }; }, - created () { - }, - mounted () { - }, methods: { - tabChange () { - + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + analysisOfAmountRanking(this.deptId, this.year).then(res => { + if (this.tabIndex == 1) { + let data = res.data.sl.map(item => { + return [item.name, item.value, item.index] + }) + this.data = data + } else if (this.tabIndex == 2) { + let data = res.data.je.map(item => { + return [item.name, item.value, item.index] + }) + this.data = data + } + this.isLoad = true; + }) + } + }, + tabChange (info) { + this.tabIndex = info.id; + this.getData(); } } }; diff --git a/src/views/property/comps/right/middle/2/index.html b/src/views/property/comps/right/middle/2/index.html index 0087236..1ffd9b6 100644 --- a/src/views/property/comps/right/middle/2/index.html +++ b/src/views/property/comps/right/middle/2/index.html @@ -1,12 +1,16 @@ - - +
- +
\ No newline at end of file diff --git a/src/views/property/comps/right/middle/2/index.js b/src/views/property/comps/right/middle/2/index.js index 4e04619..f1f9cb6 100644 --- a/src/views/property/comps/right/middle/2/index.js +++ b/src/views/property/comps/right/middle/2/index.js @@ -1,14 +1,34 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; import PannelTabs from '@/components/pannel-tabs/index.vue'; +import { debtChangeRanking } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { PannelTabs, ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + type: '1', pannelData: [ { id: '1', @@ -19,6 +39,7 @@ export default { name: '增加' }, ], + isLoad: false, headers: ['部门名称', '债务金额', '排名'], data: [['部门名称', '债务金额', '1']] }; @@ -28,8 +49,22 @@ export default { mounted () { }, methods: { - tabChange () { - + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + debtChangeRanking(this.deptId, this.year, this.type).then(res => { + let data = res.rows.map(item => { + return [item.name, item.value, item.index] + }) + this.data = data; + this.isLoad = true; + }) + } + }, + tabChange (info) { + // console.log('indo', info); + this.type = info.id; + this.getData() } } }; diff --git a/src/views/property/comps/right/middle/3/index.js b/src/views/property/comps/right/middle/3/index.js index f52a08a..6cc601c 100644 --- a/src/views/property/comps/right/middle/3/index.js +++ b/src/views/property/comps/right/middle/3/index.js @@ -40,7 +40,6 @@ export default { if (this.year, this.deptId) { this.isLoad = false; contractExpirationWarning(this.deptId, this.year).then(res => { - console.log(2222, res); let data = res.data.map(item => { return [item.code, item.name, item.endTime, item.deptName] }) diff --git a/src/views/property/comps/right/top/1/data.js b/src/views/property/comps/right/top/1/data.js index 408b061..ffce1c9 100644 --- a/src/views/property/comps/right/top/1/data.js +++ b/src/views/property/comps/right/top/1/data.js @@ -1,24 +1,24 @@ export default [ [ { - name: '总资产(万元)', + name: '合同数量(个)', icon: require('./1.png'), value: '8000' }, { - name: '总负债(万元)', + name: '总合同额(万元)', icon: require('./2.png'), value: '257' } ], [ { - name: '总收入(万元)', + name: '已结款(万元)', icon: require('./3.png'), value: '1460' }, { - name: '总支出(万元)', + name: '待结款(万元)', icon: require('./2.png'), value: '1011' } diff --git a/src/views/property/comps/right/top/1/index.html b/src/views/property/comps/right/top/1/index.html index 9a735bb..60eded2 100644 --- a/src/views/property/comps/right/top/1/index.html +++ b/src/views/property/comps/right/top/1/index.html @@ -1,4 +1,9 @@ - +
diff --git a/src/views/property/comps/right/top/1/index.js b/src/views/property/comps/right/top/1/index.js index dd153d1..0cbec6c 100644 --- a/src/views/property/comps/right/top/1/index.js +++ b/src/views/property/comps/right/top/1/index.js @@ -1,14 +1,50 @@ import Pannel from '@/components/pannel/index.vue'; import Block from '@/components/block/index.vue'; import data from './data.js'; +import { analysisOfContractTypes } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { Block, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, data }; + }, + methods: { + getData () { + this.isLoad = false // 是否加载完成 + if (this.year, this.deptId) { + analysisOfContractTypes(this.deptId, this.year).then(res => { + this.data[0][0].value = res.data.numHt + this.data[0][1].value = res.data.zhte + this.data[1][0].value = res.data.yjk + this.data[1][1].value = res.data.djk + + this.isLoad = true // 是否加载完成 + }) + } + + } } }; diff --git a/src/views/property/comps/right/top/2/index.html b/src/views/property/comps/right/top/2/index.html index 6575384..0bc0be3 100644 --- a/src/views/property/comps/right/top/2/index.html +++ b/src/views/property/comps/right/top/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/property/comps/right/top/2/index.js b/src/views/property/comps/right/top/2/index.js index b0115ff..de97d93 100644 --- a/src/views/property/comps/right/top/2/index.js +++ b/src/views/property/comps/right/top/2/index.js @@ -1,12 +1,32 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; +import { rankingOfDebtAmount } from '../../../../api/index.js'; +import { mapGetters } from 'vuex'; export default { components: { ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, headers: ['部门名称', '债务金额', '排名'], data: [['部门名称', '债务金额', '1']] }; @@ -16,5 +36,17 @@ export default { mounted () { }, methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + rankingOfDebtAmount(this.deptId, this.year).then(res => { + let data = res.rows.map(item => { + return [item.name, item.value, item.index] + }) + this.data = data; + this.isLoad = true; + }) + } + } } }; diff --git a/src/views/property/main-gis/index.js b/src/views/property/main-gis/index.js index 9b8e310..fc26ebb 100644 --- a/src/views/property/main-gis/index.js +++ b/src/views/property/main-gis/index.js @@ -9,6 +9,7 @@ import { attachmentList } from "@/api/common/uploadAttachment.js"; let gis = null; import { treeselectByDeptId } from "@/api/system/dept"; import Legend from '@/components/legend/index.vue'; +import { mapGetters } from 'vuex'; import { fromLonLat } from 'ol/proj' @@ -28,7 +29,6 @@ export default { deptLayer: "", // 坐标点图层 countyBorderLayerName: "", // 区县边界图层名称 townBorderLayerName: "", // 乡镇边界图层名称 - //villageBorderLayerName: "", // 村边界图层名称 groupBorderLayerName: "", // 组边界图层名称 LegendData: [ { @@ -223,6 +223,7 @@ export default { }; }, computed: { + ...mapGetters(['year', 'deptId']) }, created () { // 获取geoserver的地址 @@ -544,43 +545,39 @@ export default { }, openPermanentDialog (data) { - data.fileList = []; - let parmasData = { - tableId: data.id, - tableName: 't_asset_permanent', - bizPath: 'asset', - }; - attachmentList(parmasData).then((res) => { + let useType = data.useType + attachmentList(this.deptId, this.year, useType).then((res) => { + console.log(res, 777); if (res.code == 200) { - let UattachmentList = res.rows; - for (let i = 0; i < UattachmentList.length; i++) { - let fileName = UattachmentList[i].fileName; - let subIndex = fileName.lastIndexOf("."); - let ext = fileName.substring(subIndex + 1, fileName.length); - let urls = ""; - let type = ""; - if (ext == "xlsx" || ext == "xls") { - urls = require("@/assets/images/icon_excel.jpg"); - type = 'excel'; - } else if (ext == "doc" || ext == "docx") { - urls = require("@/assets/images/icon_word.jpg"); - type = 'word'; - } else if (ext == "pdf") { - urls = require("@/assets/images/icon_pdf.jpg"); - type = 'pdf'; - } else if (ext == "zip") { - urls = require("@/assets/images/icon_zip.jpg"); - type = 'zip'; - } else { - urls = '/api' + UattachmentList[i].fileUrl; - type = 'image'; - } - data.fileList.push({ - url: urls, - urlApi: '/api' + UattachmentList[i].fileUrl, - type: type - }) - } + // let UattachmentList = res.rows; + // for (let i = 0; i < UattachmentList.length; i++) { + // let fileName = UattachmentList[i].fileName; + // let subIndex = fileName.lastIndexOf("."); + // let ext = fileName.substring(subIndex + 1, fileName.length); + // let urls = ""; + // let type = ""; + // if (ext == "xlsx" || ext == "xls") { + // urls = require("@/assets/images/icon_excel.jpg"); + // type = 'excel'; + // } else if (ext == "doc" || ext == "docx") { + // urls = require("@/assets/images/icon_word.jpg"); + // type = 'word'; + // } else if (ext == "pdf") { + // urls = require("@/assets/images/icon_pdf.jpg"); + // type = 'pdf'; + // } else if (ext == "zip") { + // urls = require("@/assets/images/icon_zip.jpg"); + // type = 'zip'; + // } else { + // urls = '/api' + UattachmentList[i].fileUrl; + // type = 'image'; + // } + // data.fileList.push({ + // url: urls, + // urlApi: '/api' + UattachmentList[i].fileUrl, + // type: type + // }) + // } this.showPermanentDetail = true; this.permanentDetail = data; } @@ -588,10 +585,11 @@ export default { }, // 加载地图 initMap (deptId) { + this.$store.commit('SET_DEPTID', deptId); + this.$store.commit('SET_YEAR', new Date().getFullYear()); getDept(deptId).then(response => { - const dept = response.data; - let mapCenterLocation; + const dept = response.data; // 定义地图中心坐标 if (dept.lng && dept.lat) { mapCenterLocation = [dept.lng, dept.lat]; @@ -599,6 +597,7 @@ export default { mapCenterLocation = [116.391458, 39.902377]; } gis = new GisUtils('map2') + console.log('=============='); gis.addTianDiTuLayer() gis.addAnnotationLayer() // 添加村边界 diff --git a/src/views/resources/api/index.js b/src/views/resources/api/index.js new file mode 100644 index 0000000..88b4ba4 --- /dev/null +++ b/src/views/resources/api/index.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +// 河南资源一张图-预警分析-左上-资源处置预警(分页) +export function resourceFisposalWarning (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/resourceWarning/zyczyj', + method: 'get', + params: query + }) +} + +// 河南资源一张图-预警分析-左下-资源长期闲置预警 +export function longTermIdleResourceWarning (deptId, year) { + let query = { + deptId, + year + } + return request({ + url: 'api/home/xixia/resourceWarning/zccqxzyj', + method: 'get', + params: query + }) +} diff --git a/src/views/resources/comps/left/bottom/2/index.html b/src/views/resources/comps/left/bottom/2/index.html index 1c15822..3bbfefb 100644 --- a/src/views/resources/comps/left/bottom/2/index.html +++ b/src/views/resources/comps/left/bottom/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/resources/comps/left/bottom/2/index.js b/src/views/resources/comps/left/bottom/2/index.js index 3b95b31..2a0e18b 100644 --- a/src/views/resources/comps/left/bottom/2/index.js +++ b/src/views/resources/comps/left/bottom/2/index.js @@ -1,16 +1,51 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; +import { mapGetters } from 'vuex'; +import { longTermIdleResourceWarning } from '../../../../api/index.js'; export default { components: { ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, headers: ['资源名称', '类别', '面积(亩)', '部门'], data: [ ['资源名称', '类别', '面积(亩)', '部门'] ] }; + }, + methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + longTermIdleResourceWarning(this.deptId, this.year).then(res => { + let data = res.data.map(item => { + return [item.name, item.resourceSort, item.totalArea, item.deptName] + }) + this.data = data; + this.isLoad = true; + }) + } + }, } + }; diff --git a/src/views/resources/comps/left/middle/2/index.html b/src/views/resources/comps/left/middle/2/index.html index eca4902..8075abf 100644 --- a/src/views/resources/comps/left/middle/2/index.html +++ b/src/views/resources/comps/left/middle/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/resources/comps/left/middle/2/index.js b/src/views/resources/comps/left/middle/2/index.js index 3b95b31..9bbd0f8 100644 --- a/src/views/resources/comps/left/middle/2/index.js +++ b/src/views/resources/comps/left/middle/2/index.js @@ -1,16 +1,50 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; +import { longTermIdleResourceWarning } from '../../../../api/index.js' +import { mapGetters } from 'vuex'; export default { components: { ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, headers: ['资源名称', '类别', '面积(亩)', '部门'], data: [ ['资源名称', '类别', '面积(亩)', '部门'] ] }; + }, + methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + longTermIdleResourceWarning(this.deptId, this.year).then(res => { + let data = res.data.map(item => { + return [item.name, item.resourceSort, item.totalArea, item.deptName] + }) + this.data = data; + this.isLoad = true; + }) + } + } } }; diff --git a/src/views/resources/comps/left/top/1/index.js b/src/views/resources/comps/left/top/1/index.js index b5a7671..b8917af 100644 --- a/src/views/resources/comps/left/top/1/index.js +++ b/src/views/resources/comps/left/top/1/index.js @@ -1,5 +1,6 @@ import Pannel from '@/components/pannel/index.vue'; import HorizontalBar from '@/components/charts/horizontal-bar/index.vue'; + export default { components: { HorizontalBar, @@ -25,5 +26,7 @@ export default { } ] }; + }, + methods: { } }; diff --git a/src/views/resources/comps/left/top/2/index.html b/src/views/resources/comps/left/top/2/index.html index a8f8a68..f206f5a 100644 --- a/src/views/resources/comps/left/top/2/index.html +++ b/src/views/resources/comps/left/top/2/index.html @@ -1,4 +1,9 @@ - - + + \ No newline at end of file diff --git a/src/views/resources/comps/left/top/2/index.js b/src/views/resources/comps/left/top/2/index.js index e2de6b0..348edb6 100644 --- a/src/views/resources/comps/left/top/2/index.js +++ b/src/views/resources/comps/left/top/2/index.js @@ -1,16 +1,50 @@ import Pannel from '@/components/pannel/index.vue'; import ScrollTable from '@/components/scroll-table/index.vue'; +import { resourceFisposalWarning } from '../../../../api/index.js' +import { mapGetters } from 'vuex'; export default { components: { ScrollTable, Pannel }, + computed: { + ...mapGetters(['year', 'deptId']) + }, + watch: { + year: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + }, + deptId: { + handler () { + this.getData(); + }, + immediate: true, // 立即执行 + } + }, data () { return { + isLoad: false, headers: ['资源名称', '类别', '面积(亩)', '处置类型', '部门'], data: [ ['资源名称', '类别', '面积(亩)', '处置类型', '部门'] ] }; + }, + methods: { + getData () { + if (this.year, this.deptId) { + this.isLoad = false; + resourceFisposalWarning(this.deptId, this.year).then(res => { + let data = res.rows.map(item => { + return [item.assetName, item.assetType, 'null', item.assetStatus, item.deptId] + }) + this.data = data; + this.isLoad = true; + }) + } + } } }; diff --git a/src/views/sanqing/main-gis/index.js b/src/views/sanqing/main-gis/index.js index cc0c478..d943f57 100644 --- a/src/views/sanqing/main-gis/index.js +++ b/src/views/sanqing/main-gis/index.js @@ -545,7 +545,6 @@ export default { }, openResourceDialog (data) { data.fileList = []; - console.log(data) let parmasData = { tableId: data.id, tableName: 't_asset_three', @@ -617,7 +616,6 @@ export default { resourceList.forEach(item => { if (item.theGeom != null && item.theGeom !== '') { const { threeAssetType } = item - // console.log(222, threeAssetType, item); let color = this.LegendData[threeAssetType - 1 + ''] let fs = gis.getFeature3(item, color.iconStyle.background, color.iconStyle.borderColor) features.push(fs);