Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
| | |
| | | <!-- |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2023-02-23 09:09:09 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-02-23 17:33:32 |
| | | * @FilePath: \srs-police-affairs\src\components\assemble\index.vue |
| | | * @Description: 聚合图标点的点击事件 |
| | | * |
| | | * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. |
| | | --> |
| | | <template> |
| | | <div> |
| | | <el-dialog :title="dialogTile" :modal="true" :visible.sync="dialogVisible" :before-close="beforClose" |
| | | :close-on-click-modal="true" class="equiment-details-box"> |
| | | <el-table :data="tableData" style="width: 100%" |
| | | <div class="header"> |
| | | <div> |
| | | 设备名称: |
| | | <input type="text" v-model="equimentSearchVal" placeholder="请输入…" /> |
| | | </div> |
| | | |
| | | <el-button type="primary" icon="el-icon-search" @click="searchEquiment">搜索</el-button> |
| | | <el-button type="primary" icon="el-icon-delete" @click="clearSearchEquiment">清空</el-button> |
| | | </div> |
| | | |
| | | <el-table :data="currentData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"> |
| | | <el-table-column label="序号" type="index" :index="indexMethod" align="center"> |
| | | <el-table-column label="序号" type="index" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ (pages.current - 1) * pages.size + scope.$index + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column :show-overflow-tooltip="true" prop="name" label="设备名称" min-width="320%"></el-table-column> |
| | |
| | | </el-table> |
| | | |
| | | <div class="pages"> |
| | | <el-pagination background layout="prev, pager, next, total" :total="pages.total" :page-size="pages.size" |
| | | pager-count="3" :current-page="pages.current" @current-change="handleCurrentChange"></el-pagination> |
| | | <el-pagination background layout="prev, pager, next, total" :total="searchData.length" |
| | | :page-size="pages.size" pager-count="3" :current-page="pages.current" |
| | | @current-change="handleCurrentChange"></el-pagination> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'assembleBOX', |
| | | name: 'assembleBox', |
| | | |
| | | data () { |
| | | return { |
| | | dialogTile: '', |
| | | dialogVisible: false, |
| | | tableData: [], |
| | | searchData: [], |
| | | dialogVisible: false, |
| | | dialogTile: '摄像头', |
| | | equimentSearchVal: '', |
| | | pages: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | } |
| | | } |
| | | }, |
| | | |
| | | mounted () { |
| | | global.viewer.on(global.DC.MouseEventType.CLICK, this.viewerClick) |
| | | this.$nextTick(() => { |
| | | global.viewer.on(global.DC.MouseEventType.CLICK, this.viewerClick) |
| | | }) |
| | | }, |
| | | |
| | | computed: { |
| | | currentData () { |
| | | return this.searchData.filter((item, index) => |
| | | index > (this.pages.current - 1) * this.pages.size && index <= this.pages.current * this.pages.size |
| | | ) |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | /** |
| | | * @description: 计算下标 |
| | | * @param {*} index |
| | | * @return {*} |
| | | */ |
| | | indexMethod (index) { |
| | | return index * 2 |
| | | }, |
| | | |
| | | /** |
| | | * @description: viewer点击 |
| | | * @param {*} e |
| | | * @return {*} |
| | | */ |
| | | viewerClick (e) { |
| | | |
| | | const that = this |
| | | if (e.target && e.target != undefined && e.target.id && e.target.id.length) { |
| | | this.$EventBus.$emit('getOverLayerID', { |
| | | layerName: 'cameraLayers', |
| | | ids: e.target.id, |
| | | cb (data) { |
| | | that.tableData = data |
| | | that.searchData = data |
| | | that.pages.current = 1 |
| | | that.dialogVisible = true |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @return {*} |
| | | */ |
| | | beforClose () { |
| | | |
| | | this.equimentSearchVal = '' |
| | | this.tableData = [] |
| | | this.searchData = [] |
| | | this.dialogVisible = false |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @description: 分页切换 |
| | | * @return {*} |
| | | */ |
| | | handleCurrentChange () { |
| | | handleCurrentChange (e) { |
| | | this.pages.current = e |
| | | }, |
| | | |
| | | |
| | | searchEquiment () { |
| | | this.pages.current = 1 |
| | | this.searchData = this.tableData.filter(item => item.name.indexOf(this.equimentSearchVal.trim()) != -1) |
| | | }, |
| | | |
| | | |
| | | clearSearchEquiment () { |
| | | this.equimentSearchVal = '' |
| | | this.searchData = this.tableData |
| | | } |
| | | }, |
| | | |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | </style> |
| | | <style></style> |
| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2022-08-18 17:00:30 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-02-22 17:44:18 |
| | | * @LastEditTime: 2023-02-23 17:31:31 |
| | | * @FilePath: \srs-police-affairs\src\components\map\index.vue |
| | | * @Description: 公用地图组件 |
| | | * |
| | |
| | | </div> |
| | | |
| | | <map-popup></map-popup> |
| | | |
| | | <assemble-box></assemble-box> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | that.layerPolylineAdd(params.layerName, params.positions, params.material, params.width, params.params, params.incident) |
| | | }) |
| | | |
| | | this.$EventBus.$on('getOverLayerID', (params) => { |
| | | that.getOverLayerID(params.layerName, params.ids, params.cb) |
| | | }) |
| | | |
| | | this.$EventBus.$on('layerShow', (params) => { |
| | | that.layerShow(params.layerName, params.flag) |
| | | }) |
| | |
| | | }, |
| | | |
| | | /** |
| | | * @description: 通过ID获取图层 |
| | | * @return {*} |
| | | */ |
| | | getOverLayerID (layerName, ids = [], cb) { |
| | | |
| | | const data = ids.reduce((pre, cur) => { |
| | | |
| | | if ( |
| | | layersObjcect[layerName].getOverlay(cur.overlayId) |
| | | && layersObjcect[layerName].getOverlay(cur.overlayId) != undefined |
| | | && layersObjcect[layerName].getOverlay(cur.overlayId) != null |
| | | && layersObjcect[layerName].getOverlay(cur.overlayId) != '' |
| | | ) { |
| | | pre.push(layersObjcect[layerName].getOverlay(cur.overlayId).attrParams) |
| | | } else { |
| | | layersObjcect[layerName].eachOverlay(item => { |
| | | if (item.overlayId == cur.overlayId) |
| | | pre.push(item.attrParams) |
| | | }) |
| | | } |
| | | |
| | | return pre |
| | | |
| | | }, []) |
| | | |
| | | cb(data) |
| | | |
| | | }, |
| | | |
| | | /** |
| | | * 图层显示隐藏 |
| | | * @param {*} layerName 图层名称 |
| | | * @param {*} flag 显示隐藏 |
| | |
| | | } |
| | | } |
| | | |
| | | .equiment-details-box { |
| | | .el-dialog { |
| | | width: countSizeVw(1000, 1920); |
| | | height: countSizeVh(620); |
| | | } |
| | | |
| | | .el-dialog__header button { |
| | | font-size: countSizeVh(18); |
| | | right: countSizeVw(10, 1920); |
| | | } |
| | | |
| | | .header input { |
| | | font-size: countSizeVh(14); |
| | | } |
| | | |
| | | .status-box { |
| | | display: inline-block; |
| | | margin: auto; |
| | | width: countSizeVh(10); |
| | | height: countSizeVh(10); |
| | | text-align: center; |
| | | border-radius: 50%; |
| | | background-color: #adadad; |
| | | } |
| | | |
| | | .online { |
| | | background-color: #4ccc7d; |
| | | } |
| | | |
| | | } |
| | | |
| | | .land-details-box { |
| | | .el-dialog { |
| | |
| | | } |
| | | } |
| | | |
| | | .equiment-details-box { |
| | | .el-dialog { |
| | | width: countSizeVw(1000, 1920); |
| | | height: countSizeVh(620); |
| | | } |
| | | |
| | | .el-dialog__header button { |
| | | font-size: countSizeVh(18); |
| | | right: countSizeVw(10, 1920); |
| | | } |
| | | |
| | | .header input { |
| | | font-size: countSizeVh(14); |
| | | } |
| | | |
| | | .status-box { |
| | | display: inline-block; |
| | | margin: auto; |
| | | width: countSizeVh(10); |
| | | height: countSizeVh(10); |
| | | text-align: center; |
| | | border-radius: 50%; |
| | | background-color: #adadad; |
| | | } |
| | | |
| | | .online { |
| | | background-color: #4ccc7d; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | .auth-page { |
| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2022-08-18 16:18:17 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-02-23 08:57:03 |
| | | * @LastEditTime: 2023-02-23 10:57:03 |
| | | * @FilePath: \srs-police-affairs\src\views\house\index.vue |
| | | * @Description: 小区-栋-层-房屋 |
| | | * |
| | |
| | | <div class="two"> |
| | | <div> |
| | | <div>98</div> |
| | | <div>户籍人口</div> |
| | | </div> |
| | | <div> |
| | | <div>户籍人口</div> |
| | | </div> |
| | | <div> |
| | | <div style="color:#0E88FF">20</div> |
| | | <div>流动人口</div> |
| | | </div> |
| | |
| | | <div> |
| | | <div>120</div> |
| | | <div>出租</div> |
| | | </div> |
| | | <div> |
| | | <div>160</div> |
| | | <div>自住</div> |
| | | </div> |
| | | <div> |
| | | <div>8</div> |
| | | <div>空置</div> |
| | | </div> |
| | | </div> |
| | | </div>--> |
| | | </div> |
| | | <div> |
| | | <div>160</div> |
| | | <div>自住</div> |
| | | </div> |
| | | <div> |
| | | <div>8</div> |
| | | <div>空置</div> |
| | | </div> |
| | | </div> |
| | | </div>--> |
| | | <div class="house-element-info" v-if="isShowHouseBox"> |
| | | <!-- 选择单元 --> |
| | | <div class="condo" v-show="isShowUnitChoose"> |
| | |
| | | <div> |
| | | <span class="zizhu"></span> |
| | | 自住 |
| | | </div> |
| | | <div> |
| | | <span class="kongzhi"></span> |
| | | 空置 |
| | | </div> |
| | | <div> |
| | | <span class="shangye"></span> |
| | | 商业 |
| | | </div> |
| | | </div> |
| | | </div>--> |
| | | </div> |
| | | <div> |
| | | <span class="kongzhi"></span> |
| | | 空置 |
| | | </div> |
| | | <div> |
| | | <span class="shangye"></span> |
| | | 商业 |
| | | </div> |
| | | </div> |
| | | </div>--> |
| | | <el-main v-loading="pictLoading" element-loading-background="rgba(17, 38, 163, .1)" |
| | | element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" |
| | | v-show="isShowHouseBox"> |
| | |
| | | <!-- :class="[{ 'chuzu': value.houseType == '出租' }, { 'zizhu': value.houseType == '自住' }, { 'kongzhi': value.houseType == '空置' }, { 'shangye': value.houseType == '商业' }]" --> |
| | | {{ value.properties.fojcu }} |
| | | <!-- <div class="flow"></div> |
| | | <div class="focus"></div> |
| | | <div class="warning"></div>--> |
| | | <div class="focus"></div> |
| | | <div class="warning"></div>--> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <el-table :data="businessData" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" |
| | | :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'business')"> |
| | | <el-table-column prop="name" label="名称" width="180" |
| | | :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'business')" |
| | | @sort-change="sortDevName"> |
| | | <el-table-column sortable="custom" prop="name" label="名称" width="180" |
| | | :show-overflow-tooltip="true"></el-table-column> |
| | | <el-table-column prop="x" label="经度" width="100"></el-table-column> |
| | | <el-table-column prop="y" label="纬度" width="100"></el-table-column> |
| | |
| | | }, |
| | | |
| | | buildingClick (item, aoiArr) { |
| | | console.log(item, 456) |
| | | this.unitHouseChoosed = [] |
| | | this.pictLoading = true |
| | | if (!aoiArr) { |
| | |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * @description: 小区商业排序 |
| | | * @return {*} |
| | | */ |
| | | sortDevName ({ prop, order }) { |
| | | this.businessData.sort(this.compare(prop, order)) |
| | | }, |
| | | |
| | | compare (property, order) { |
| | | if (order == 'ascending') { |
| | | return (a, b) => { |
| | | var value1 = a[property] |
| | | var value2 = b[property] |
| | | |
| | | const char1Type = this.getChartType(value1) |
| | | const char2Type = this.getChartType(value2) |
| | | |
| | | // 类型相同的逐个比较字符 |
| | | if (char1Type[0] === char2Type[0]) { |
| | | if (value1 === value2) { |
| | | return char1Type[1] - char2Type[1] |
| | | } else { |
| | | if (char1Type[0] === 'zh') { |
| | | return value1.localeCompare(value2) |
| | | } else if (char1Type[0] === 'en') { |
| | | return value1.charCodeAt(0) - value2.charCodeAt(0) |
| | | } else { |
| | | return value1 - value2 |
| | | } |
| | | } |
| | | } else { |
| | | return char1Type[1] - char2Type[1] |
| | | } |
| | | } |
| | | } else { |
| | | return (a, b) => { |
| | | var value1 = a[property] |
| | | var value2 = b[property] |
| | | |
| | | const char1Type = this.getChartType(value1) |
| | | const char2Type = this.getChartType(value2) |
| | | |
| | | // 类型相同的逐个比较字符 |
| | | if (char1Type[0] === char2Type[0]) { |
| | | if (value1 === value2) { |
| | | return char2Type[1] - char1Type[1] |
| | | } else { |
| | | if (char1Type[0] === 'zh') { |
| | | return value2.localeCompare(value1) |
| | | } else if (char1Type[0] === 'en') { |
| | | return value2.charCodeAt(0) - value1.charCodeAt(0) |
| | | } else { |
| | | return value2 - value1 |
| | | } |
| | | } |
| | | } else { |
| | | return char2Type[1] - char1Type[1] |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | |
| | | getChartType (char) { |
| | | // 数字可按照排序的要求进行自定义,我这边产品的要求是 |
| | | // 数字(0->9)->大写字母(A->Z)->小写字母(a->z)->中文拼音(a->z) |
| | | if (/^[\u4e00-\u9fa5]$/.test(char.trim().charAt(0))) { |
| | | return ['zh', 300] |
| | | } |
| | | if (/^[a-zA-Z]$/.test(char.trim().charAt(0))) { |
| | | return ['en', 200] |
| | | } |
| | | if (/^[0-9]$/.test(char.trim().charAt(0))) { |
| | | return ['number', 100] |
| | | } |
| | | return ['others', 999] |
| | | } |
| | | |
| | | }, |
| | | |
| | | destroyed () { |