diff --git a/src/assets/img/shuju/logo1.png b/src/assets/img/shuju/logo1.png new file mode 100644 index 00000000..1297692b Binary files /dev/null and b/src/assets/img/shuju/logo1.png differ diff --git a/src/assets/scss/modules/visual/houseStatic.scss b/src/assets/scss/modules/visual/houseStatic.scss new file mode 100644 index 00000000..4d9c6da6 --- /dev/null +++ b/src/assets/scss/modules/visual/houseStatic.scss @@ -0,0 +1,344 @@ +.warning-box{ + padding: 0 21px 20px 24px +} +.no-data{ + margin-top:50px; + display:flex; + justify-content: center; +} +.card-title { + + display: flex; + align-items: center; + cursor: pointer; + .title-icon { + display: block; + width: 46px; + height: 34px; + box-sizing: border-box; + margin-right: 6px; + } + ::v-deep .el-dropdown { + font-size: 18px; + color: #fff; + font-weight: 800; + } + .title-time { + display: flex; + align-items: center; + box-sizing: border-box; + margin-left: 30px; + font-size: 14px; + color: #fff; + .title-time-label { + margin-right: 10px; + } + ::v-deep .el-date-editor--month { + width: 100px; + .el-input__inner { + width: 100px; + height: 24px; + box-sizing: border-box; + padding: 0; + font-size: 14px; + color: #fff; + line-height: 24px; + text-align: center; + background: #06186d; + border: 1px solid #1a64cc; + border-radius: 2px; + } + .el-input__prefix { + display: none; + } + .el-input__suffix { + right: 0; + .el-input__icon { + line-height: 24px; + } + } + } + } + .title-label { + font-size: 20px; + font-weight: 800; + ::v-deep .el-input { + width: 180px; + .el-input__inner { + font-size: 18px; + // font-weight: 800; + color: #fff; + background: #06186d; + border: 1px solid #1a64cc; + } + .el-icon-arrow-down::before { + content: "\e790"; + } + } + } +} +.card-left-title { + margin-top: 20px; + position: relative; + padding-left: 40px; + font-size: 16px; + font-weight: 500; + color: #fff; +} +.card-left-title::after { + content: ""; + position: absolute; + top: 5%; + left: 20px; + width: 12px; + height: 12px; + box-sizing: border-box; + + background: #2865fa; + border-radius: 50%; +} +.card-echart { + min-height: 500px; + display: flex; + margin-top: 10px; + height: 100%; + .card-left { + position: relative; + flex-grow:0; + flex-shrink:0; + width:50%; + + height: 100%; + .div-chart{ + display: flex; + width: 100%; + .echart-wr{ + flex-shrink: 0; + height: 420px; + width: 70%; + } + .div-tip{ + flex-shrink: 0; + width: 30%; + display: flex; + flex-direction: column; + justify-content: center; + margin-left:20px; + margin-top: -23px; + + display: flex; + justify-content: center; + + .legend_item { + margin-top: 30px; + .item_name { + margin-left: 5px; + font-size: 10px; + font-family: PingFang SC; + font-weight: 500; + color: #eff0f1; + } + + > img { + margin-top: -10px; + width: 80px; + height: 10px; + } + + } + + } + + .div-tip2{ + flex-shrink: 0; + width: 30%; + display: flex; + flex-direction: column; + justify-content: center; + margin-left:20px; + margin-top: -23px; + + display: flex; + justify-content: center; + .cz-tip{ + display: flex; + justify-content: flex-start; + margin-top: 30px; + + .cz-tip-dot { + margin-top:2px; + width: 20px; + height: 10px; + background: #1B51FF; + border-radius: 4px; + } + + >span{ + margin-left:10px; + } + } + + .ld-tip{ + display: flex; + justify-content: flex-start; + margin-top: 30px; + + .ld-tip-dot{ + margin-top:2px; + width: 20px; + height: 10px; + background: #00E5ED; + border-radius: 4px; + } + >span{ + margin-left:10px; + } + } + + + + } + } + + .pie-table{ + margin-top:0px; + display: flex; + justify-content: center; + align-items:center; + + + } + + .loading-status{ + width: 100%; + display: flex; + justify-content: center; + margin-top: 200px; + + + } + } + +} + +.card-table{ + margin:37px 70px 0; + + .table_item{ + padding:31px 60px 36px 30px; + + .item_name{ + + font-size: 18px; + font-family: PingFang SC; + font-weight: bold; + color: #FFFFFF; + + >img{ + width:25px; + height:14px; + padding-right: 10px; + } + } + + .item_name:hover{ + cursor: pointer; + } + + .item_data{ + margin-top:31px; + display: flex; + justify-content: space-between; + } + + .item_left{ + align-items: center; + display: flex; + justify-content: space-around; + flex-grow:0; + flex-shrink:0; + + } + .item_right{ + align-items: center; + display: flex; + justify-content: space-around; + flex-grow:0; + flex-shrink:0; + // margin-left:250px; + } + + } + + .item_dark{ + background: #082586; + opacity: 0.85; + } +} + +.pie-table-total{ + margin-left:40px; + .pie-table-total-count{ + min-width: 98px; + text-align: center; + font-size: 40px; + font-family: PingFang SC; + font-weight: bold; + color: #FFFFFF; + } + + .zz{ + font-size: 35px; + font-family: PingFang SC; + font-weight: bold; + color: #FAC126; + } + + .cz{ + font-size: 35px; + font-family: PingFang SC; + font-weight: bold; + color: #45D97F; + } + + .xz{ + font-size: 35px; + font-family: PingFang SC; + font-weight: bold; + color: #2865FA; + } + + .colorwhite{ + font-size: 35px; + font-family: PingFang SC; + font-weight: bold; + color: #ffffff; + } + + .pie-table-title{ + margin-top:7px; + text-align: center; + font-size:10px; + font-family: PingFang SC; + font-weight: 400; + color: #FFFFFF; + min-width:62px; + } + + .table-table-title{ + margin-top:2px; + } +} + +.pie-table-line{ + margin-left:40px; + height:30px; + width:1px; + background-color: #1797FF; + opacity: 0.5; +} + +.table-table-line{ + +} + diff --git a/src/router/index.js b/src/router/index.js index 866ee5f0..a39738d7 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -239,6 +239,11 @@ router.beforeEach((to, from, next) => { name: "人员类别分析", id: "5fwaefwaefawef5", }, + { + url: "/visual/basicinfo/houseStatic/houseStatic", + name: "人房概览统计", + id: "5fwaefwaefawef6", + }, ], }, { diff --git a/src/views/modules/base/community/buildTable.vue b/src/views/modules/base/community/buildTable.vue index 4edc6b48..dc67bf6a 100644 --- a/src/views/modules/base/community/buildTable.vue +++ b/src/views/modules/base/community/buildTable.vue @@ -92,6 +92,9 @@ + + diff --git a/src/views/modules/visual/basicinfo/basicInfoCommunity.vue b/src/views/modules/visual/basicinfo/basicInfoCommunity.vue index 7cd5384b..4cc2f402 100644 --- a/src/views/modules/visual/basicinfo/basicInfoCommunity.vue +++ b/src/views/modules/visual/basicinfo/basicInfoCommunity.vue @@ -184,6 +184,8 @@ export default { if (this.selBuildingId) { await this.loadRoom() + } else { + this.roomArray = [] } }, @@ -250,6 +252,7 @@ export default { //点击用户 handleClickUser (userId) { + this.handleCloseAllUser() this.$emit('toSubAgency', 'people', userId, "") }, //获取右侧infolist数据 diff --git a/src/views/modules/visual/basicinfo/houseStatic/houseStatic.vue b/src/views/modules/visual/basicinfo/houseStatic/houseStatic.vue new file mode 100644 index 00000000..85b3c7f9 --- /dev/null +++ b/src/views/modules/visual/basicinfo/houseStatic/houseStatic.vue @@ -0,0 +1,633 @@ + + + + + + + + diff --git a/src/views/modules/visual/basicinfo/houseStatic/options.js b/src/views/modules/visual/basicinfo/houseStatic/options.js new file mode 100644 index 00000000..180d3b55 --- /dev/null +++ b/src/views/modules/visual/basicinfo/houseStatic/options.js @@ -0,0 +1,180 @@ + +export function housePieOption (_charts) { + const center= ['50%', '200px'] + return { + title: { + text: '0', + top: 170, + left: 'center', + textStyle: { + width: '100%', + fontSize: 30, + color: '#FFFFFF', + fontWeight: 400 + }, + itemGap: 5, + subtext: '房屋总数', + subtextStyle: { + fontSize: 20, + color: '#fff', + fontWeight: 400 + } + }, + tooltip: { + show: false + }, + // legend: { + // top: 500, + // bottom: 0, + // itemWidth: 20, + // itemHeight: 10, + // textStyle: { + // color: '#D2E7FF', + // fontSize: 16, + // lineHeight: 20, + // }, + + // }, + series: [ + // 外侧圆环 + { + type: 'pie', + // 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。 + startAngle: 0, + hoverAnimation: false, + // tooltip: { + // }, + center: center, + radius: ['61%', '61.3%'], + label: { + show: false + }, + labelLine: { + show: false + }, + data: [{ + value: 360, + itemStyle: { + color: 'rgba(40, 101, 250, 0)', + width:0, + borderColor: 'rgba(40, 101, 250, 0.5)', + borderWidth: 1, + borderType: 'dotted' + } + } + ] + }, + + // 突出的 + { + hoverAnimation: false, + // name: 'Access From', + type: 'pie', + center: center, + radius: ['40%', '54%'], + avoidLabelOverlap: false, + // top: top + '%', + // height: '80%', + selectedMode: 'single', + left: 'center', + width: 480, + label: { + // show: false, + position: 'outside', + alignTo: 'edge', + // formatter: '{a|{c}}\n\n{name|{b}}', + formatter: '{name|{b}}\n{r|}\n{a|{c}%}', + minMargin: 5, + edgeDistance: 1, + lineHeight: 15, + color: '#fff', + fontSize: 10, + // distanceToLabelLine: -60, + rich: { + name: { + padding: [0, 6, 0, 6] + }, + a: { + fontSize: 20, + color: '#fff', + padding: [16, 0, 6, 6] + }, + r: { + backgroundColor: 'auto', + borderRadius: 6, + width: 6, + height: 6, + // padding: [3, 3, 0, -12] + } + } + }, + labelLine: { + show: false, + smooth: 0.2, + length: 50, + length2: 0, + maxSurfaceAngle: 80 + }, + labelLayout: function (params) { + + const isLeft = params.labelRect.x < _charts.getWidth() / 2; + const points = params.labelLinePoints; + // Update the end point. + if (points) { + points[2][0] = isLeft + ? params.labelRect.x + : params.labelRect.x + params.labelRect.width; + } + + return { + labelLinePoints: points + }; + }, + itemStyle: { + // color:function(params) { + // //自定义颜色 + // var colorList = [ + // '#00FFFF', '#00FF00', '#FFFF00', '#FF8C00', '#FF0000', '#FE8463', + // ]; + // return colorList[params.dataIndex] + // } + }, + data: [], + + }, + // 中间圆环 + { + type: 'pie', + // 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。 + startAngle: 0, + hoverAnimation: false, + center: center, + // tooltip: { + // }, + radius: ['0%', '27%'], + label: { + + show: false + + }, + labelLine: { + + show: false + + }, + data: [{ + value: 360, + itemStyle: { + normal: { + color: 'rgba(8, 37, 134, 1)', + + } + } + } + ] + }, + ] + + } + } + \ No newline at end of file diff --git a/src/views/modules/visual/basicinfo/houseStatic/userOptions.js b/src/views/modules/visual/basicinfo/houseStatic/userOptions.js new file mode 100644 index 00000000..ba1eab7f --- /dev/null +++ b/src/views/modules/visual/basicinfo/houseStatic/userOptions.js @@ -0,0 +1,182 @@ + +export function userPieOption (_charts) { + const center= ['50%', '200px'] + return { + title: { + text: '0', + top: 170, + left: 'center', + textStyle: { + width: '100%', + fontSize: 30, + color: '#FFFFFF', + fontWeight: 400 + }, + itemGap: 5, + subtext: '房屋总数', + subtextStyle: { + fontSize: 20, + color: '#fff', + fontWeight: 400 + } + }, + tooltip: { + show: false + }, + // legend: { + // orient: 'vertical', + // right: 0, + // top: 200, + // bottom: 20, + // itemWidth: 20, + // itemHeight: 10, + // textStyle: { + // color: '#D2E7FF', + // fontSize: 16, + // lineHeight: 20, + // }, + + // }, + series: [ + // 外侧圆环 + { + type: 'pie', + // 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。 + startAngle: 0, + hoverAnimation: false, + // tooltip: { + // }, + center: center, + radius: ['61%', '61.3%'], + label: { + show: false + }, + labelLine: { + show: false + }, + data: [{ + value: 360, + itemStyle: { + color: 'rgba(40, 101, 250, 0)', + width:0, + borderColor: 'rgba(40, 101, 250, 0.5)', + borderWidth: 1, + borderType: 'dotted' + } + } + ] + }, + + // 突出的 + { + hoverAnimation: false, + // name: 'Access From', + type: 'pie', + center: center, + radius: ['40%', '54%'], + avoidLabelOverlap: false, + // top: top + '%', + // height: '80%', + selectedMode: 'single', + left: 'center', + width: 480, + label: { + // show: false, + position: 'outside', + alignTo: 'edge', + // formatter: '{a|{c}}\n\n{name|{b}}', + formatter: '{name|{b}}\n{r|}\n{a|{c}%}', + minMargin: 5, + edgeDistance: 1, + lineHeight: 15, + color: '#fff', + fontSize: 10, + // distanceToLabelLine: -60, + rich: { + name: { + padding: [0, 6, 0, 6] + }, + a: { + fontSize: 20, + color: '#fff', + padding: [16, 0, 6, 6] + }, + r: { + backgroundColor: 'auto', + borderRadius: 6, + width: 6, + height: 6, + // padding: [3, 3, 0, -12] + } + } + }, + labelLine: { + show: false, + smooth: 0.2, + length: 50, + length2: 0, + maxSurfaceAngle: 80 + }, + labelLayout: function (params) { + + const isLeft = params.labelRect.x < _charts.getWidth() / 2; + const points = params.labelLinePoints; + // Update the end point. + if (points) { + points[2][0] = isLeft + ? params.labelRect.x + : params.labelRect.x + params.labelRect.width; + } + + return { + labelLinePoints: points + }; + }, + itemStyle: { + // color:function(params) { + // //自定义颜色 + // var colorList = [ + // '#00FFFF', '#00FF00', '#FFFF00', '#FF8C00', '#FF0000', '#FE8463', + // ]; + // return colorList[params.dataIndex] + // } + }, + data: [], + + }, + // 中间圆环 + { + type: 'pie', + // 起始刻度的角度,默认为 90 度,即圆心的正上方。0 度为圆心的正右方。 + startAngle: 0, + hoverAnimation: false, + center: center, + // tooltip: { + // }, + radius: ['0%', '27%'], + label: { + + show: false + + }, + labelLine: { + + show: false + + }, + data: [{ + value: 360, + itemStyle: { + normal: { + color: 'rgba(8, 37, 134, 1)', + + } + } + } + ] + }, + ] + + } + } + \ No newline at end of file diff --git a/src/views/modules/visual/communityGovern/typeAnalyze.vue b/src/views/modules/visual/communityGovern/typeAnalyze.vue index 7466c3d5..d5ec1516 100644 --- a/src/views/modules/visual/communityGovern/typeAnalyze.vue +++ b/src/views/modules/visual/communityGovern/typeAnalyze.vue @@ -76,7 +76,7 @@