linwe
2025-12-18 98deba2c6a2c376422aadef8266431ca2296b4c4
经开分局优化
12 files modified
3 files added
1712 ■■■■ changed files
src/api/companyInfo/index.js 163 ●●●●● patch | view | raw | blame | history
src/components/companyInfo/index.vue 509 ●●●●● patch | view | raw | blame | history
src/components/map/index.vue 2 ●●● patch | view | raw | blame | history
src/components/siteDialog/index.vue 110 ●●●●● patch | view | raw | blame | history
src/router/page/index.js 8 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 2 ●●● patch | view | raw | blame | history
src/views/companyInfo/index.vue 445 ●●●●● patch | view | raw | blame | history
src/views/home/components/dialog/landDetailsBox.vue 307 ●●●● patch | view | raw | blame | history
src/views/home/components/dialog/otherPlaceDetailsBox.vue 25 ●●●●● patch | view | raw | blame | history
src/views/home/components/dialog/placeDetailsBox.vue 10 ●●●● patch | view | raw | blame | history
src/views/home/components/dialog/riskDetailsBox.vue 11 ●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 12 ●●●● patch | view | raw | blame | history
src/views/home/index.vue 97 ●●●● patch | view | raw | blame | history
src/views/house/index.vue 3 ●●●● patch | view | raw | blame | history
src/views/layout/index.vue 8 ●●●● patch | view | raw | blame | history
src/api/companyInfo/index.js
New file
@@ -0,0 +1,163 @@
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-15 15:10:41
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-12-27 17:08:39
 * @FilePath: \srs-police-affairs\src\api\site\index.js
 * @Description:
 *
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved.
 */
import request from "@/router/axios.js"
/**
 * 获取字典表
 * @returns
 */
export const getDictBizTree = (param) => {
  return request({
    url: "/api/blade-system/dict-biz/tree",
    method: "get",
    params: param
  })
}
/**
 * 获取九小场所字典表
 * @param {*} page 页数
 * @param {*} count 每页数量
 * @returns
 */
export const getNineTypeTree = () => {
  return request({
    url: "/api/blade-system/dict-biz/tree?code=nineType",
    method: "get",
  })
}
/**
 * 风险隐患场所
 * @param {*} page 页数
 * @param {*} count 每页数量
 * @returns
 */
export const getRiskPage = (param) => {
  return request({
    url: "/api/blade-riskHazard/riskHazard/page",
    method: "get",
    params: param,
  })
}
/**
 * 获取阵地字典表
 * @param {*} page 页数
 * @param {*} count 每页数量
 * @returns
 */
export const getFrontTypeTree = () => {
  return request({
    url: "/api/blade-system/dict-biz/tree?code=frontType",
    method: "get",
  })
}
/**
 * 获取九小场所列表
 * @param {*} page 页数
 * @param {*} count 每页数量
 * @returns
 */
export const getNinePage = (params, needIsNine = true) => {
  let isNine = {}
  return request({
    url: "/api/blade-enterprise/info/page",
    method: "get",
    params: {
      ...params,
      ...isNine
    },
  })
}
/**
 * 获取阵地列表
 * @param {*} page 页数
 * @param {*} count 每页数量
 * @returns
 */
export const getFrontPage = (params) => {
  return request({
    url: "/api/blade-place/place/ninePage",
    method: "get",
    params: {
      ...params,
      isFront: 1,
    },
  })
}
/**
 * 获取九小场所检查列表
 * @param {*} page 页数
 * @param {*} count 每页数量
 * @returns
 */
export const getPlaceCheckPage = (params) => {
  return request({
    url: "/api/blade-placeCheck/placeCheck/page",
    method: "get",
    params,
  })
}
/**
 * 获取九小场所检查详情
 * @returns
 */
export const getPlaceCheckInfo = (params) => {
  return request({
    url: "/api/blade-placeCheck/placeCheck/getPlaceCheckInfo",
    method: "get",
    params,
  })
}
/**
 * 获取九小场所从业人员
 * @returns
 */
export const getPlacePractitionerPage = (params) => {
  return request({
    url: "/api/blade-placePractitioner/placePractitioner/page",
    method: "get",
    params,
  })
}
/**
 * 获取交易登记列表
 * @returns
 */
export const getTaskLabelReportingEventPage = (params) => {
  return request({
    url: "/api/blade-taskLabelReportingEvent/taskLabelReportingEvent/page",
    method: "get",
    params,
  })
}
/**
 * 获取九小场所隐患数量统计
 * @returns
 */
export const getNineStatisticsNum = (params) => {
  return request({
    url: "/api/blade-place/place/getNineStatisticsNum",
    method: "get",
    params,
  })
}
src/components/companyInfo/index.vue
New file
@@ -0,0 +1,509 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-01-17 16:04:08
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-02-19 16:34:09
 * @FilePath: \srs-police-affairs\src\components\siteDialog\index.vue
 * @Description:
 *
 * Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<template>
  <el-dialog class="syld-details-box site-dialog-popup business-detail-box" :title="'企业详情'" append-to-body
    :close-on-click-modal="false" :visible.sync="popupShow" center @close="popupClose">
    <div class="flex f-d-c" style="height: 100%;" v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.5)">
      <div class="type-tab-box">
        <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 1 }" @click="tabClick(1)">
          基本信息</div>
        <!-- <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 2 }" @click="tabClick(2)">
          从业人员 </div>
        <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 3 }" @click="tabClick(3)">
          消防检查 </div> -->
      </div>
      <div class="flex-1 tab-content-box" v-if="chooseTab == 1">
        <div class="info-list">
          <div class="info-item">
            <div class="name">
              企业名称:
            </div>
            <div class="value">
              {{ businessDetailData.companyName }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              企业地址:
            </div>
            <div class="value">
              {{ businessDetailData.standardAddress }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              负责人:
            </div>
            <div class="value">
              {{ businessDetailData.companyContactPerson }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              手机号码:
            </div>
            <div class="value">
              {{ businessDetailData.companyContactPhone }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              挂点干部:
            </div>
            <div class="value">
              {{ businessDetailData.cadreInCharge }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              挂点干部联系电话:
            </div>
            <div class="value">
              {{ businessDetailData.cadreContactPhone }}
            </div>
          </div>
          <!-- industry_category 产业类别 -->
          <!-- main_products 主营产品 -->
          <div class="info-item">
            <div class="name">
              产业类别:
            </div>
            <div class="value">
              {{ businessDetailData.industryCategory }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              主营产品:
            </div>
            <div class="value">
              {{ businessDetailData.mainProducts }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              规上/规下
            </div>
            <div class="value">
              {{ businessDetailData.complianceType }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              产业类别
            </div>
            <div class="value">
              {{ businessDetailData.industryCategory }}
            </div>
          </div>
          <!-- `service_team` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '服务小组',
  `is_industrial_enterprise` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否工业企业(是/否)',
  `match_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '匹配类型', -->
          <div class="info-item">
            <div class="name">
              服务小组:
            </div>
            <div class="value">
              {{ businessDetailData.serviceTeam }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              是否工业企业:
            </div>
            <div class="value">
              {{ businessDetailData.isIndustrialEnterprise }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              匹配类型:
            </div>
            <div class="value">
              {{ businessDetailData.matchType }}
            </div>
          </div>
          <!-- <div class="info-item">
                        <div class="name">
                            所属社区:
                        </div>
                        <div class="value">
                            361102003027
                        </div>
                    </div>
                    <div class="info-item">
                        <div class="name">
                            所属网格:
                        </div>
                        <div class="value">
                            第五网格
                        </div>
                    </div> -->
        </div>
      </div>
      <div class="flex-1  flex f-d-c tab-content-box" v-if="chooseTab == 2">
        <el-table :data="personTableData" style="width: 100%" :header-cell-style="{ 'text-align': 'center' }"
          :cell-style="{ 'text-align': 'center' }">
          <el-table-column prop="name" label="名称" width="180">
          </el-table-column>
          <el-table-column prop="telephone" label="手机号码" width="180">
          </el-table-column>
          <el-table-column prop="tempAddress" label="暂住地">
          </el-table-column>
        </el-table>
      </div>
      <div class="flex-1 flex f-d-c tab-content-box" ref="TabContentBox" v-if="chooseTab == 3">
        <div v-show="examineListShow" class="flex-1 flex f-d-c examine-list">
          <div class="search-box">
            <div>
              检查时间
              <el-date-picker v-model="searchDate" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd">
              </el-date-picker>
            </div>
            <el-button type="primary" icon="el-icon-search" @click="dateSearch">搜索</el-button>
          </div>
          <el-table :data="tableData" style="width: 100%" @row-click="clickExamine($event)"
            :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
            :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }"
            :row-class-name="tableRowClassName">
            <el-table-column prop="principal" :show-overflow-tooltip="true" label="场所负责人"></el-table-column>
            <el-table-column prop="createTime" :show-overflow-tooltip="true" label="检查时间"></el-table-column>
            <el-table-column prop="remark" :show-overflow-tooltip="true" label="备注"></el-table-column>
          </el-table>
          <div class="pages all-pagination-sty" ref="tablePagination" style="padding-top:-15px">
            <el-pagination background layout="prev, pager, next" :page-size="pages.size" :total="pages.total"
              :pager-count="4" :current-page="pages.current" @current-change="handleCurrentChange"></el-pagination>
          </div>
        </div>
        <div v-show="!examineListShow" class="flex-1 flex f-d-c examine-details">
          <div class="back-btn" @click="examineListShow = true">返回</div>
          <div class="title">
            <div class="icon">{{ refreshNum }}</div>
            基础信息
          </div>
          <div class="basic-info">
            <div class="info-item">
              <div class="info-name">场所名称</div>
              <div class="info-value">{{ examineDetails.placeName }}</div>
            </div>
            <div class="info-item">
              <div class="info-name">检查时间</div>
              <div class="info-value">{{ examineDetails.createTime }}</div>
            </div>
          </div>
          <div class="title">
            <div class="icon"></div>
            检查记录
          </div>
          <div class="question-list" v-for="(tItem, tIndex) in examineDetails.patrolGroupDTOList" :key='tIndex'>
            <div class="question-type" @click="flodQL(tIndex)">
              <div class="type-name">
                {{ CNNum[tIndex] }}、{{ tItem.name }}
              </div>
              <div class="icon-box"><i class="el-icon-arrow-down" v-show="tItem.isShowQList"></i><i
                  class="el-icon-arrow-up" v-show="!tItem.isShowQList"></i></div>
            </div>
            <div v-show="'patrolRecordVOList' in tItem && tItem.isShowQList" class="question-item"
              v-for="(item, index) in tItem.patrolRecordVOList" :key='index'>
              <div class="question-name">
                <div class="key">{{ index + 1 }}、{{ item.itemsName }}</div>
                <div class="value">
                  <el-radio v-show="item.state == 0" v-model="item.state" :label="0" disabled>存在</el-radio>
                  <el-radio v-show="item.state == 1" v-model="item.state" :label="1" disabled>不存在</el-radio>
                </div>
              </div>
              <div v-show="item.state == 0" class="yh-pic-box">
                <div class="yh-pic-name">
                  隐患图片:
                </div>
                <div class="yh-pic-list">
                  <div class="pic-item" v-for="(pic, picIndex) in getImgUrls(item)" :key="picIndex">
                    <el-image :src="pic" :fit="fit" :preview-src-list="getImgUrls(item)"></el-image>
                  </div>
                </div>
              </div>
              <div v-show="item.state == 0" class="yh-remark">
                <div class="yh-remark-name">
                  隐患描述:
                </div>
                <div class="yh-remark-value">
                  {{ getRemark(item) }}
                </div>
              </div>
              <div v-show="item.state == 0" class="yh-pic-box">
                <div class="yh-pic-name">
                  整改后图片:
                </div>
                <div class="yh-pic-list">
                  <div class="pic-item" v-for="(pic, picIndex)  in getRectificationImageUrls(item)" :key="picIndex">
                    <el-image :src="pic" :fit="fit" :preview-src-list="getRectificationImageUrls(item)"></el-image>
                  </div>
                </div>
              </div>
              <div v-show="item.state == 0" class="yh-remark">
                <div class="yh-remark-name">
                  整改后描述:
                </div>
                <div class="yh-remark-value">
                  {{ getRectificationRemark(item) }}
                </div>
              </div>
            </div>
            <div v-show="!('patrolRecordVOList' in tItem)">{{ tItem.remark }}</div>
          </div>
        </div>
      </div>
    </div>
  </el-dialog>
</template>
<script>
import {
  getPlaceCheckPage,
  getPlaceCheckInfo,
  getPlacePractitionerPage
} from "@/api/site/index.js"
export default {
  name: 'CompanyInfoPopup',
  data () {
    return {
      searchDate: '',
      popupShow: false,
      businessId: '',
      chooseTab: 1,
      tableData: [],
      personTableData: [],
      loading: false,
      businessDetailData: {},
      pages: {
        current: 1,
        size: 22,
        total: 0,
        count: 0,
      },
      examineListShow: true,
      examineDetails: {},
      refreshNum: 1,
      CNNum: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五'],
    }
  },
  computed: {
    getImgUrls () {
      return (item) => {
        let imageUrls = item.imageUrls
        if (imageUrls && imageUrls != '' && imageUrls.length > 0) {
          imageUrls = imageUrls.split(',').filter(ele => ele != '').map(ele => {
            return 'http://47.217.32.232:80/place/' + ele
          })
        }
        return imageUrls || []
      }
    },
    getRectificationImageUrls () {
      return (item) => {
        let imageUrls = item.rectificationImageUrls
        if (imageUrls && imageUrls != '' && imageUrls.length > 0) {
          imageUrls = imageUrls.split(',').filter(ele => ele != '').map(ele => {
            return 'http://47.217.32.232:80/place/' + ele
          })
        }
        return imageUrls || []
      }
    },
    getRemark () {
      return (item) => {
        return item.remark
      }
    },
    getRectificationRemark () {
      return (item) => {
        return item.rectificationRemark
      }
    }
  },
  methods: {
    // 点击展开收缩
    flodQL (index) {
      this.examineDetails.patrolGroupDTOList[index].isShowQList = !this.examineDetails.patrolGroupDTOList[index].isShowQList
      this.refreshNum += 1
    },
    // 打开弹窗初始化数据
    initOpen (row) {
      this.searchDate = ''
      this.examineListShow = true
      this.businessDetailData = row
      this.chooseTab = 1
      this.popupShow = true
      this.pages.current = 1
      // this.getPlaceCheckPage()
      // this.getPlacePractitionerPage()
    },
    // 分页处理
    handleCurrentChange (current) {
      this.pages.current = current
      this.getPlaceCheckPage()
    },
    // 获取检查列表数据
    getPlaceCheckPage (params = {}) {
      this.loading = true
      this.checkFlag = false
      getPlaceCheckPage({
        houseCode: this.businessDetailData.houseCode,
        current: this.pages.current,
        size: this.pages.size,
        ...params
      }).then(res => {
        const data = res.data.data
        this.tableData = data.records
        this.pages.total = data.total
        this.checkFlag = true
        setTimeout(() => {
          if (this.checkFlag && this.flag) this.loading = false
        }, 500)
      })
    },
    getPlacePractitionerPage () {
      this.flag = false
      getPlacePractitionerPage({
        placeId: this.businessDetailData.id,
        current: 1,
        size: 9999,
      }).then(res => {
        const data = res.data.data
        this.personTableData = data.records
        this.flag = true
        setTimeout(() => {
          if (this.checkFlag && this.flag) this.loading = false
        }, 500)
      })
    },
    clickExamine (row) {
      getPlaceCheckInfo({ id: row.id }).then(res => {
        if (res.data.data == null) {
          this.$message({ message: '暂无数据', type: 'warning', duration: 2000 })
          return
        }
        this.examineDetails = res.data.data
        this.examineDetails.patrolGroupDTOList.push({
          name: '其他隐患问题',
          remark: this.examineDetails.remark
        })
        this.examineDetails.patrolGroupDTOList = res.data.data.patrolGroupDTOList.map(item => {
          return {
            ...item,
            isShowQList: true
          }
        })
        this.examineListShow = false
      })
    },
    // 关闭弹窗按钮
    popupClose () {
      this.popupShow = false
    },
    // tab切换
    tabClick (type) {
      this.chooseTab = type
      if (type == 3) {
        this.examineListShow = true
      }
    },
    dateSearch () {
      this.pages.current = 1
      this.getPlaceCheckPage({
        startTime: this.searchDate,
        endTime: this.searchDate
      })
    }
  },
}
</script>
<style lang="scss" scoped>
:deep(.el-image__error) {
  height: 120px;
}
.flex {
  display: flex;
}
.f-d-c {
  flex-direction: column;
}
.flex-1 {
  height: 0;
  flex: 1;
}
</style>
src/components/map/index.vue
@@ -355,7 +355,7 @@
      // that.highOrLightChange('light')
      // 地形数据添加 ----- 想看效果,这里要注释
      that.addTerrain()
      // that.addTerrain()
      // 外网 ----- 想看效果,这里要打开
      // global.viewer.imageryLayers.addImageryProvider(
src/components/siteDialog/index.vue
@@ -15,10 +15,10 @@
      <div class="type-tab-box">
        <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 1 }" @click="tabClick(1)">
          基本信息</div>
        <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 2 }" @click="tabClick(2)">
        <!-- <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 2 }" @click="tabClick(2)">
          从业人员 </div>
        <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == 3 }" @click="tabClick(3)">
          消防检查 </div>
          消防检查 </div> -->
      </div>
      <div class="flex-1 tab-content-box" v-if="chooseTab == 1">
@@ -55,6 +55,110 @@
              {{ businessDetailData.principalPhone }}
            </div>
          </div>
          <!-- `medium_category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '中类(行业分类)',
  `small_category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '小类(行业分类)',
  `industry_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '行业类别',
  `fire_key_unit` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '消防重点单位(是/否/未知)',
  `unit_property` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '单位性质(如:企业、事业单位等)',
  `business_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '营业状态(如:正常营业、停业等)',
  `employee_count` int unsigned DEFAULT '0' COMMENT '当前职工人数,非负整数',
   -->
          <div class="info-item">
            <div class="name">
              中类(行业分类):
            </div>
            <div class="value">
              {{ businessDetailData.mediumCategory }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              小类(行业分类):
            </div>
            <div class="value">
              {{ businessDetailData.smallCategory }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              行业类别:
            </div>
            <div class="value">
              {{ businessDetailData.industryType }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              消防重点单位:
            </div>
            <div class="value">
              {{ businessDetailData.fireKeyUnit }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              单位性质:
            </div>
            <div class="value">
              {{ businessDetailData.unitProperty }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              营业状态:
            </div>
            <div class="value">
              {{ businessDetailData.businessStatus }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              职工人数:
            </div>
            <div class="value">
              {{ businessDetailData.employeeCount }}
            </div>
          </div>
          <!-- `credit_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '统一社会信用代码,18位',
  `legal_person_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '法人姓名',
  `legal_person_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '法人证件号码(身份证/护照等)',
  `legal_person_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '法人手机号码',
   -->
          <div class="info-item">
            <div class="name">
              统一社会信用代码:
            </div>
            <div class="value">
              {{ businessDetailData.creditCode }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              法人姓名:
            </div>
            <div class="value">
              {{ businessDetailData.legalPersonName }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              法人证件号码:
            </div>
            <div class="value">
              {{ businessDetailData.legalPersonId }}
            </div>
          </div>
          <div class="info-item">
            <div class="name">
              法人手机号码:
            </div>
            <div class="value">
              {{ businessDetailData.legalPersonPhone }}
            </div>
          </div>
          <!-- <div class="info-item">
                        <div class="name">
                            所属社区:
@@ -175,7 +279,7 @@
                  整改后图片:
                </div>
                <div class="yh-pic-list">
                  <div class="pic-item" v-for="(pic, picIndex)  in getRectificationImageUrls(item)" :key="picIndex">
                  <div class="pic-item" v-for="(pic, picIndex) in getRectificationImageUrls(item)" :key="picIndex">
                    <el-image :src="pic" :fit="fit" :preview-src-list="getRectificationImageUrls(item)"></el-image>
                  </div>
                </div>
src/router/page/index.js
@@ -11,6 +11,7 @@
const layout = () => import("../../views/layout/index.vue")
const site = () => import("../../views/site/index.vue")
const companyInfo = () => import("../../views/companyInfo/index.vue")
const home = () => import("../../views/home/index.vue")
const house = () => import("../../views/house/index.vue")
const police = () => import("../../views/police/index.vue")
@@ -70,6 +71,13 @@
        component: site,
      },
      {
        path: "companyInfo",
        meta: {
          title: "企业信息",
        },
        component: companyInfo,
      },
      {
        path: "home",
        meta: {
          title: "首页",
src/styles/media/index.scss
@@ -389,7 +389,7 @@
                            }
                            .selects-container .issel {
                                max-height: countSizeVh(140) !important;
                                max-height: countSizeVh(240) !important;
                            }
                        }
src/views/companyInfo/index.vue
New file
@@ -0,0 +1,445 @@
<template>
  <div class="site-page-home police-page container">
    <div v-show="boxShow" class="container-content" ref="containerContent">
      <div class="time-select" ref="timeSelect">
        <div class="search-item-box">
          <span>企业类型:</span>
          <el-select clearable style="flex: 1;" size="small" v-model="typeValue" @change="typeChange"
            placeholder="请选择企业类型">
            <el-option v-for="item in typeOptions" :key="item.key" :label="item.title" :value="item.key"></el-option>
          </el-select>
        </div>
        <div class="search-item-box">
          <span>企业名称:</span>
          <el-input style="flex: 1;" size="small" placeholder="请输入企业名称" v-model="companyName" @change="searchChange"
            clearable></el-input>
        </div>
        <div class="search-item-box" style="justify-content: center;">
          <el-button @click="searchBtn" icon="el-icon-search" class="bjnr-btn">搜索</el-button>
          <el-button @click="clearRow" icon="el-icon-delete" class="bjnr-btn">清除</el-button>
        </div>
      </div>
      <div class="list police-info" ref="tableBox">
        <el-table :data="tableData" style="width: 100%"
          :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
          :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }"
          :row-class-name="tableRowClassName" class="police-infor-table">
          <el-table-column prop="companyName" :show-overflow-tooltip="true" label="企业名称"></el-table-column>
          <el-table-column prop="standardAddress" :show-overflow-tooltip="true" label="企业地址"></el-table-column>
          <el-table-column prop="industryCategory" :show-overflow-tooltip="true" label="产业类别"></el-table-column>
          <el-table-column prop="complianceType" :show-overflow-tooltip="true" label="规上/规下"></el-table-column>
          <el-table-column width="80" label="操作" align="center">
            <template slot-scope="scope">
              <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)"
                @click="rowClick(scope.row)">
                <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
              </el-button>
              <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)">
                <i class="el-icon-document" style="color:#66b1ff"></i>
              </el-button>
            </template>
          </el-table-column>
        </el-table>
        <div class="pages all-pagination-sty" ref="tablePagination">
          <el-pagination background layout="prev, pager, next" :page-size="pages.size" :total="pages.total"
            :pager-count="4" :current-page="pages.current" @current-change="handleCurrentChange"></el-pagination>
        </div>
      </div>
    </div>
    <CompanyInfoPopup ref="SiteDialogPopup"></CompanyInfoPopup>
  </div>
</template>
<script>
let cylinderLayer = null
let DataSourcesArray = []
let circleLayer = null
let timer = []
let JQSmychart = null
let positionColor = [
  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(255, 192, 97, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 242, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(0, 185, 209, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(250, 84, 28, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(221, 255, 97, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(51, 255, 0, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 255, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(97, 255, 181, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(58, 181, 252, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(252, 129, 58, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 236, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(97, 184, 255, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 58, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(97, 113, 255, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(81, 252, 58, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(126, 97, 255, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(168, 252, 58, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(171, 97, 255, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(252, 249, 58, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(210, 97, 255, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(252, 174, 58, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(255, 226, 97, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 176, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(58, 252, 155, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(252, 58, 155, 20),
]
import { initMapPosition } from '@/utils/mapPositionInit'
import { getNineTypeTree, getNinePage, getNineStatisticsNum } from "@/api/companyInfo/index.js"
import { getPoliceStationTree } from "@/api/home/index.js"
let loading = null
export default {
  inject: ['userInfo'],
  data () {
    return {
      boxShow: false,
      isDanger: null,
      companyName: '',
      typeValue: '',
      typeOptions: [
        { key: '', title: '全部' },
        { key: '规上', title: '规上' },
        { key: '规下', title: '规下' },
        { key: '无', title: '无' },
      ],
      tableData: [],
      yhcsNum: 0,
      yhNum: 0,
      yzgcsNum: 0,
      yzgyhNum: 0,
      wzgcsNum: 0,
      wzgyhNum: 0,
      pages: {
        current: 1,
        size: 22,
        total: 0,
        count: 0,
      },
      policeStationOptions: []
    }
  },
  created () {
    // 获取九小场所隐患数量统计
    // this.getNineStatisticsNum()
    // this.getNineTypeTree()
    this.getNinePage()
    const that = this
    that.$nextTick(() => {
      initMapPosition()
    })
    this.getPoliceStationTree(1)
  },
  mounted () {
    this.$parent.$parent.resize('400px', true)
    this.$nextTick(() => {
      this.$EventBus.$emit('closeMxTileset')
    })
  },
  computed: {
    positionColor () {
      return (row) => {
        if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) {
          return "#1AFA29"
        } else {
          return "#ccc"
        }
      }
    },
    positionDisabled () {
      return (row) => {
        if (row.X && row.X != 0 || row.lng && row.lng != 0 || row.longitude && row.longitude != 0 || row.x && row.x != 0) {
          return false
        } else {
          return true
        }
      }
    },
  },
  methods: {
    // 加载首页下拉列表数据
    getPoliceStationTree (type, id = '') {
      var that = this
      getPoliceStationTree(type, id).then(res => {
        if (type == 1) {
          this.policeStationOptions = res.data.data
          this.policeStationOptions.unshift({
            name: '全部',
            id: 1
          })
          this.initPoliceStationLayer()
        }
      })
    },
    // 加载面数据的方法
    initPoliceStationLayer () {
      const that = this
      cylinderLayer = new global.DC.PrimitiveLayer('cylinderLayer')
      global.viewer.addLayer(cylinderLayer)
      DataSourcesArray.forEach(item => {
        global.viewer.dataSources.remove(item, true)
      })
      this.policeStationOptions.forEach((item, index) => {
        if (item.position && item.position.length > 0) {
          item.position.forEach((sourceItem, sourceIndex) => {
            const Json = { ...JSON.parse(sourceItem) }
            global.DC.Namespace.Cesium.GeoJsonDataSource.load(Json, {
              stroke: positionColor[index],
              fill: positionColor[index], //注意:颜色必须大写,即不能为blue
              strokeWidth: 0,
              clampToGround: false
            }).then(function (dataSource) {
              let entities = dataSource.entities.values
              //修改entity样式
              for (let i = 0; i < entities.length; i++) {
                let entity = entities[i]
                entity.polyline = {
                  positions: entity.polygon.hierarchy._value.positions,
                  width: 4,
                  material: global.DC.Namespace.Cesium.Color.fromCssColorString('#19298d'),
                  clampToGround: true
                }
              }
              DataSourcesArray.push(dataSource)
              dataSource.show = true
              global.viewer.dataSources.add(dataSource)
            })
          })
        }
      })
    },
    // 是否有隐患
    filterBtn (isDanger) {
      this.isDanger = isDanger
      this.getNinePage()
    },
    // 获取九小场所隐患数量统计
    getNineStatisticsNum () {
      var that = this
      getNineStatisticsNum({
        nineType: this.typeValue,
        companyName: this.companyName
      }).then(res => {
        const data = res.data.data
        that.yhcsNum = data[0].total
        that.yhNum = data[0].patrolNum
        that.yzgcsNum = data[1].total
        that.yzgyhNum = data[1].patrolNum
        that.wzgcsNum = data[2].total
        that.wzgyhNum = data[2].patrolNum
      })
    },
    getNineTypeTree () {
      // getNineTypeTree().then(res => {
      //   this.typeOptions = res.data.data
      // })
    },
    // 切换登记类型
    typeChange () {
      this.pages.current = 1
      this.getNinePage()
      this.getNineStatisticsNum()
    },
    searchChange () {
      if (this.companyName.trim() == '') {
        this.pages.current = 1
        this.getNinePage()
        this.getNineStatisticsNum()
      }
    },
    searchBtn () {
      this.pages.current = 1
      this.getNinePage()
      this.getNineStatisticsNum()
    },
    // 分页处理
    handleCurrentChange (current) {
      this.pages.current = current
      this.getNinePage()
      this.getNineStatisticsNum()
    },
    // 加载动画
    loading () {
      loading = this.$loading({
        lock: true,
        text: '拼命加载中',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.5)'
      })
    },
    getNinePage () {
      this.loading()
      getNinePage({
        current: this.pages.current,
        size: this.pages.size,
        // nineType: this.typeValue,
        companyName: this.companyName,
        complianceType: this.typeValue
      }).then(res => {
        const data = res.data.data
        this.tableData = data.records
        this.pages.total = data.total
        setTimeout(() => {
          loading && loading.close()
        }, 300)
      }).catch(error => {
        setTimeout(() => {
          loading && loading.close()
        }, 300)
      })
    },
    // 点击定位
    rowClick (row) {
      // let lng = global.DC.CoordTransform.GCJ02ToWGS84(row.lng, row.lat)[0]
      // let lat = global.DC.CoordTransform.GCJ02ToWGS84(row.lng, row.lat)[1]
      let lng = row.longitude
      let lat = row.latitude
      this.$EventBus.$emit('toPosition', {
        siteJd: lng,
        siteWd: lat,
        siteGd: 2000
      })
      this.$EventBus.$emit('mapClearLayer', {
        layerName: 'scanLayer',
        type: 'VectorLayer'
      })
      this.$EventBus.$emit('layerPointAdd', {
        layerName: 'scanLayer',
        type: "billboard",
        params: {
          ...row,
          lng: lng,
          lat: lat,
          alt: 1,
          size: [25.8, 32.4],
          url: `/img/icon/site.png`,
          setStyle: {
            disableDepthTestDistance: Number.POSITIVE_INFINITY
          }
        },
        incident: this.siteClick
      })
    },
    // 查看详情
    goDetail (row) {
      this.$refs.SiteDialogPopup.initOpen(row)
    },
    siteClick (e) {
      this.$refs.SiteDialogPopup.initOpen(e.overlay.attrParams)
    },
    // 清空按钮-清除图标图层
    clearRow () {
      this.isDanger = null
      this.companyName = null
      this.typeValue = null
      this.$EventBus.$emit('mapClearLayer', {
        layerName: 'scanLayer',
        type: 'VectorLayer'
      })
      this.$store.commit('SET_DIALOGDETAILPOPUP', false)
      this.pages.current = 1
      this.getNinePage()
      this.getNineStatisticsNum()
    },
    // 大小重置
    boxResize (val) {
      this.boxShow = val
    },
  },
  destroyed () {
    DataSourcesArray.forEach(item => {
      global.viewer.dataSources.remove(item, true)
    })
    DataSourcesArray = []
    if (cylinderLayer != null) {
      cylinderLayer.remove()
      cylinderLayer = null
    }
    loading && loading.close()
    this.$parent.$parent.resize('0px')
    this.clearRow()
  }
}
</script>
<style scoped lang="scss">
.container {
  position: relative;
  width: 100%;
  height: 100%;
  &-content {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    color: #fff;
    background: $bg-color;
  }
}
.list {
  display: flex;
  flex-direction: column;
  .pages {
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
</style>
src/views/home/components/dialog/landDetailsBox.vue
@@ -1,170 +1,167 @@
<template>
    <el-dialog :title="landTitle" :visible.sync="landVisible" :before-close="landBeforeClose" :modal="true"
        :modal-append-to-body="false" :close-on-click-modal="false" class="land-details-box">
        <div class="header">
            <div v-show="landType == 2">
                小区名称:
                <input type="text" v-model="landSearchAoiName" placeholder="请输入小区名称" />
            </div>
            <div v-show="landType == 1">
                责任区名称:
                <input type="text" v-model="landSearchAoiName" placeholder="请输入责任区名称" />
            </div>
            <div>
                包干民警:
                <input type="text" v-model="policeName" placeholder="请输入包干民警名称" />
            </div>
            <div>
                联系电话:
                <input type="text" v-model="callPhone" placeholder="请输入联系电话" />
            </div>
            <el-button type="primary" icon="el-icon-search" @click="searchLandDetail">搜索</el-button>
            <el-button type="primary" icon="el-icon-delete" @click="clearLandDetailSearchValue">清空</el-button>
        </div>
        <div v-loading="curLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
            element-loading-background="rgba(0, 0, 0, 0.5)" class="body">
            <el-table :data="landDetailArr" style="width: 100%"
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }">
                <template slot="empty">
                    <div>{{ landEmptyText }}</div>
                </template>
                <el-table-column label="序号" type="index" align="center">
                    <template slot-scope="scope">
                        <span>{{ (landPage.currentPage - 1) * landPage.pageSize + scope.$index + 1 }}</span>
                    </template>
                </el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="name" label="责任区名称"
                    v-if="landType == 1"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="aoiName" label="小区名称"
                    v-if="landType == 2"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="policeName" label="包干民警"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="phone" label="联系电话"></el-table-column>
            </el-table>
  <el-dialog :title="landTitle" :visible.sync="landVisible" :before-close="landBeforeClose" :modal="true"
    :modal-append-to-body="false" :close-on-click-modal="false" class="land-details-box">
    <div class="header">
      <div v-show="landType == 2">
        院落名称:
        <input type="text" v-model="landSearchAoiName" placeholder="请输入院落名称" />
      </div>
      <div v-show="landType == 1">
        责任区名称:
        <input type="text" v-model="landSearchAoiName" placeholder="请输入责任区名称" />
      </div>
      <div>
        包干民警:
        <input type="text" v-model="policeName" placeholder="请输入包干民警名称" />
      </div>
      <div>
        联系电话:
        <input type="text" v-model="callPhone" placeholder="请输入联系电话" />
      </div>
      <el-button type="primary" icon="el-icon-search" @click="searchLandDetail">搜索</el-button>
      <el-button type="primary" icon="el-icon-delete" @click="clearLandDetailSearchValue">清空</el-button>
    </div>
    <div v-loading="curLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
      element-loading-background="rgba(0, 0, 0, 0.5)" class="body">
      <el-table :data="landDetailArr" style="width: 100%"
        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }">
        <template slot="empty">
          <div>{{ landEmptyText }}</div>
        </template>
        <el-table-column label="序号" type="index" align="center">
          <template slot-scope="scope">
            <span>{{ (landPage.currentPage - 1) * landPage.pageSize + scope.$index + 1 }}</span>
          </template>
        </el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="name" label="责任区名称" v-if="landType == 1"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="aoiName" label="院落名称" v-if="landType == 2"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="policeName" label="包干民警"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="phone" label="联系电话"></el-table-column>
      </el-table>
            <div class="pages all-pagination-sty" ref="tablePagination">
                <el-pagination background layout="prev, pager, next, total" :total="landPage.total"
                    :page-size="landPage.pageSize" :current-page="landPage.currentPage"
                    @current-change="landHandleCurrentChange"></el-pagination>
            </div>
        </div>
    </el-dialog>
      <div class="pages all-pagination-sty" ref="tablePagination">
        <el-pagination background layout="prev, pager, next, total" :total="landPage.total" :page-size="landPage.pageSize"
          :current-page="landPage.currentPage" @current-change="landHandleCurrentChange"></el-pagination>
      </div>
    </div>
  </el-dialog>
</template>
<script>
import { getLandDetail } from "@/api/home/index.js"
export default {
    props: ['policeStaionID'],
  props: ['policeStaionID'],
    data () {
        return {
            curLoading: false,
            landEmptyText: '',
            landVisible: false,
            landTitle: '',
            landType: '',
            landDetailArr: [],
            callPhone: '',
            landPage: {
                total: 0,
                pageSize: 12,
                currentPage: 1
            },
            // 现有小区搜索条件-小区名称
            landSearchAoiName: '',
            policeName: '',
        }
  data () {
    return {
      curLoading: false,
      landEmptyText: '',
      landVisible: false,
      landTitle: '',
      landType: '',
      landDetailArr: [],
      callPhone: '',
      landPage: {
        total: 0,
        pageSize: 12,
        currentPage: 1
      },
      // 现有小区搜索条件-院落名称
      landSearchAoiName: '',
      policeName: '',
    }
  },
  methods: {
    /**
    * @description: 显示现有小区弹窗列表
    * @param {*} name
    * @param {*} type
    * @param {*} id
    * @return {*}
    */
    showlanddetail (name, type, id) {
      this.landVisible = true
      this.landTitle = name
      this.landType = type
      this.landDetailId = id
      this.landPage.currentPage = 1
      this.getLandDetail(type, id, this.landPage.currentPage)
    },
    methods: {
        /**
        * @description: 显示现有小区弹窗列表
        * @param {*} name
        * @param {*} type
        * @param {*} id
        * @return {*}
        */
        showlanddetail (name, type, id) {
            this.landVisible = true
            this.landTitle = name
            this.landType = type
            this.landDetailId = id
            this.landPage.currentPage = 1
            this.getLandDetail(type, id, this.landPage.currentPage)
        },
        /**
        * @description: 现有小区弹窗中搜索
        * @return {*}
        */
        searchLandDetail () {
            this.landPage.currentPage = 1
            this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage, this.policeName, this.callPhone, this.landSearchAoiName)
        },
        clearLandDetailSearchValue () {
            this.policeName = ''
            this.callPhone = ''
            this.landSearchAoiName = ''
            this.landPage.currentPage = 1
            this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage)
        },
        /**
        * @description: 现有小区详情弹窗分页
        * @param {*} currentPage 当前页数
        * @return {*}
        */
        landHandleCurrentChange (currentPage) {
            this.landPage.currentPage = currentPage
            this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage, this.policeName, this.callPhone, this.landSearchAoiName)
        },
        getLandDetail (type, id, current, policeName = '', phone = '', aoiName = '') {
            this.curLoading = true
            this.landEmptyText = ''
            const name = type == 1 ? {
                name: aoiName
            } : {
                aoiName
            }
            getLandDetail({
                type,
                policeStationId: this.policeStaionID == '1123598813738675201' || this.policeStaionID == '' ? id : '',
                areaId: this.policeStaionID != '1123598813738675201' && this.policeStaionID != '' ? id : '',
                current,
                policeName,
                phone,
                ...name,
                size: this.landPage.pageSize
            }).then(res => {
                this.landDetailArr = []
                this.landPage.total = 0
                if (res.data.data.records.length > 0) {
                    this.landDetailArr = res.data.data.records
                    this.landPage.total = res.data.data.total
                    this.landEmptyText = ''
                } else {
                    this.landDetailArr = []
                    this.landPage.total = 0
                    this.landEmptyText = type == 1 ? '暂无小区数据' : '暂无责任区数据'
                }
                setTimeout(() => {
                    this.curLoading = false
                }, 500)
            })
        },
        landBeforeClose () {
            this.landVisible = false
        }
    /**
    * @description: 现有小区弹窗中搜索
    * @return {*}
    */
    searchLandDetail () {
      this.landPage.currentPage = 1
      this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage, this.policeName, this.callPhone, this.landSearchAoiName)
    },
    clearLandDetailSearchValue () {
      this.policeName = ''
      this.callPhone = ''
      this.landSearchAoiName = ''
      this.landPage.currentPage = 1
      this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage)
    },
    /**
    * @description: 现有小区详情弹窗分页
    * @param {*} currentPage 当前页数
    * @return {*}
    */
    landHandleCurrentChange (currentPage) {
      this.landPage.currentPage = currentPage
      this.getLandDetail(this.landType, this.landDetailId, this.landPage.currentPage, this.policeName, this.callPhone, this.landSearchAoiName)
    },
    getLandDetail (type, id, current, policeName = '', phone = '', aoiName = '') {
      this.curLoading = true
      this.landEmptyText = ''
      const name = type == 1 ? {
        name: aoiName
      } : {
        aoiName
      }
      getLandDetail({
        type,
        policeStationId: this.policeStaionID == '1123598813738675201' || this.policeStaionID == '' ? id : '',
        areaId: this.policeStaionID != '1123598813738675201' && this.policeStaionID != '' ? id : '',
        current,
        policeName,
        phone,
        ...name,
        size: this.landPage.pageSize
      }).then(res => {
        this.landDetailArr = []
        this.landPage.total = 0
        if (res.data.data.records.length > 0) {
          this.landDetailArr = res.data.data.records
          this.landPage.total = res.data.data.total
          this.landEmptyText = ''
        } else {
          this.landDetailArr = []
          this.landPage.total = 0
          this.landEmptyText = type == 1 ? '暂无院落数据' : '暂无责任区数据'
        }
        setTimeout(() => {
          this.curLoading = false
        }, 500)
      })
    },
    landBeforeClose () {
      this.landVisible = false
    }
  },
}
</script>
src/views/home/components/dialog/otherPlaceDetailsBox.vue
@@ -17,10 +17,10 @@
          'background-color': '#203c60',
          borderColor: '#324e75',
        }" :cell-style="{
  'text-align': 'center',
  borderColor: '#324e75',
  cursor: 'default',
}">
          'text-align': 'center',
          borderColor: '#324e75',
          cursor: 'default',
        }">
          <template slot="empty">
            <div>{{ landEmptyText }}</div>
          </template>
@@ -31,23 +31,18 @@
              }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="placeName" :show-overflow-tooltip="true" label="场所名称"></el-table-column>
          <el-table-column width="260" prop="placeName" :show-overflow-tooltip="true" label="场所名称"></el-table-column>
          <el-table-column prop="location" :show-overflow-tooltip="true" label="场所地址"></el-table-column>
          <el-table-column prop="labelName" :show-overflow-tooltip="true" label="场所类型"></el-table-column>
          <el-table-column prop="smallCategory" :show-overflow-tooltip="true" label="场所类型"></el-table-column>
          <el-table-column prop="responsibilityArea" :show-overflow-tooltip="true" label="所属责任区"></el-table-column>
          <el-table-column prop="responsiblePolice" :show-overflow-tooltip="true" label="责任民警"></el-table-column>
          <el-table-column prop="businessStatus" :show-overflow-tooltip="true" label="营业状态"></el-table-column>
          <el-table-column width="80" label="操作" align="center">
            <template slot-scope="scope">
              <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)"
                @click="rowClick(scope.row)">
                <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
              </el-button>
              <!-- <el-button
              type="text"
              size="small"
              title="详情"
              @click="goDetail(scope.row)"
            >
              <i class="el-icon-document" style="color: #66b1ff"></i>
            </el-button> -->
            </template>
          </el-table-column>
        </el-table>
@@ -236,7 +231,7 @@
      getNinePage({
        current: this.pages.current,
        size: this.pages.pageSize,
        poiCode: this.poiCode,
        mediumCategory: this.poiCode,
        placeName: this.placeName,
        deptId: this.policeStaionID,
        areaId: this.areaId,
src/views/home/components/dialog/placeDetailsBox.vue
@@ -35,10 +35,10 @@
          'background-color': '#203c60',
          borderColor: '#324e75',
        }" :cell-style="{
  'text-align': 'center',
  borderColor: '#324e75',
  cursor: 'default',
}">
          'text-align': 'center',
          borderColor: '#324e75',
          cursor: 'default',
        }">
          <template slot="empty">
            <div>{{ landEmptyText }}</div>
          </template>
@@ -49,7 +49,7 @@
              }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="placeName" :show-overflow-tooltip="true" label="场所名称"></el-table-column>
          <el-table-column width="260" prop="placeName" :show-overflow-tooltip="true" label="场所名称"></el-table-column>
          <el-table-column prop="location" :show-overflow-tooltip="true" label="场所地址"></el-table-column>
          <el-table-column prop="nineName" :show-overflow-tooltip="true" label="场所类型"></el-table-column>
          <el-table-column width="80" label="操作" align="center">
src/views/home/components/dialog/riskDetailsBox.vue
@@ -39,10 +39,10 @@
          'background-color': '#203c60',
          borderColor: '#324e75',
        }" :cell-style="{
  'text-align': 'center',
  borderColor: '#324e75',
  cursor: 'default',
}">
          'text-align': 'center',
          borderColor: '#324e75',
          cursor: 'default',
        }">
          <template slot="empty">
            <div>{{ landEmptyText }}</div>
          </template>
@@ -53,7 +53,8 @@
              }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="riskHazardName" :show-overflow-tooltip="true" label="风险隐患点名称"></el-table-column>
          <el-table-column prop="riskHazardName" width="200" :show-overflow-tooltip="true"
            label="风险隐患点名称"></el-table-column>
          <el-table-column prop="riskHazardCategory" :show-overflow-tooltip="true" label="风险隐患类别"></el-table-column>
          <el-table-column prop="dataSource" :show-overflow-tooltip="true" label="数据来源"></el-table-column>
          <el-table-column prop="detailedAddress" :show-overflow-tooltip="true" label="详细地址"></el-table-column>
src/views/home/components/leftContainer.vue
@@ -70,7 +70,7 @@
    </div>
    <div class="house-box" style="position: relative;">
      <div class="box">
        <div class="title">重点场所</div>
        <div class="title">场所信息</div>
        <el-main v-loading="houseEchartsLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
          element-loading-background="rgba(0, 0, 0, 0.5)" style="height: calc(100% - 17.6%);">
          <div class="sub-tab">
@@ -79,7 +79,7 @@
              <div class="tab-title-small">{{ placeNum }}</div>
            </div>
            <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 1 }" @click="houseTabClick(1)">
              <div class="tab-title-small">其它场所:</div>
              <div class="tab-title-small">重点场所:</div>
              <div class="tab-title-small">{{ otherPlaceNum }}</div>
            </div>
            <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 2 }" @click="houseTabClick(2)">
@@ -508,7 +508,7 @@
      if (this.policeStationPersonInfo.data.length > 0) {
        this.policeStationPersonInfo.data.forEach(e => {
          xDate.push(e.name.replace('派出', ''))
          xDate.push(e.name.replace('派出所', ''))
          yDate1.push({
            value: e.hjnum,
            id: e.id,
@@ -835,7 +835,7 @@
      houseMyChart.on('click', params => {
        console.log(type, 1122)
        if (type == 1) {
          this.$emit('showplacedetail', type, '其它场所列表', params.data.id, this.areaId)
          this.$emit('showplacedetail', type, '重点场所列表', params.name, this.areaId)
        } else if (type == 2) {
          this.$emit('showplacedetail', type, '风险隐患场所列表', params.name, this.areaId)
        } else {
@@ -1719,7 +1719,7 @@
          let nameArr = []
          let countArr = []
          res.data.data.data.forEach(item => {
            nameArr.push(item.name.replace('派出', '').replace('居民委员会', ''))
            nameArr.push(item.name.replace('派出所', '').replace('居民委员会', ''))
            countArr.push({ value: item.count, id: item.id })
          })
          landData = [nameArr, countArr]
@@ -1729,7 +1729,7 @@
          let nameArr = []
          let countArr = []
          res.data.data.data.forEach(item => {
            nameArr.push(item.name.replace('派出', ''))
            nameArr.push(item.name.replace('派出所', ''))
            countArr.push({ value: item.count, id: item.id })
          })
          landData = [nameArr, countArr]
src/views/home/index.vue
@@ -641,68 +641,6 @@
let circleLayer = null
let DataSourcesArray = []
let loading = null
let treeData = [
  {
    label: '全部',
    id: '1',
    children: [
      {
        label: '车站派出所',
        id: '2',
        children: [{
          label: '责任区1',
          id: '4',
        }, {
          label: '责任区2',
          id: '5',
        }]
      },
      {
        label: '沙溪派出所',
        id: '3',
        children: [{
          label: '责任区1',
          id: '6',
        }, {
          label: '责任区2',
          id: '7',
        }]
      },
      {
        label: '北门派出所',
        id: '8',
        children: [{
          label: '责任区1',
          id: '9',
        }, {
          label: '责任区2',
          id: '10',
        }]
      },
      {
        label: '灵溪派出所',
        id: '11',
        children: [{
          label: '责任区1',
          id: '12',
        }, {
          label: '责任区2',
          id: '13',
        }]
      },
      {
        label: '江光派出所',
        id: '14',
        children: [{
          label: '责任区1',
          id: '15',
        }, {
          label: '责任区2',
          id: '16',
        }]
      }],
  }]
let positionColor = [
  global.DC.Namespace.Cesium.Color.fromBytes(255, 97, 97, 20),
  global.DC.Namespace.Cesium.Color.fromBytes(255, 142, 97, 20),
@@ -845,7 +783,7 @@
      policeStationCheckValue: '全部',
      areaOptionData: [],
      areaCheckValue: '请选择责任区',
      housingCheckValue: '请选择小区',
      housingCheckValue: '请选择院落',
      //下拉框的内容 (Array类型) 必传
      policeStationOptions: [],
      policeStaionChecked: '',
@@ -1507,13 +1445,13 @@
        } else {
          if (res.data.data.length == 0 || JSON.stringify(res.data.data) === "{}") {
            this.selectHouseClass = true
            this.housingCheckValue = '该责任区暂无小区'
            this.housingCheckValue = '该责任区暂无院落'
            this.initHousingLayer()
            return
          }
          this.selectHouseClass = false
          this.housingCheckValue = '请选择小区'
          this.housingCheckValue = '请选择院落'
          this.housingOptions = res.data.data
          this.housingOptions.unshift({
            name: '全部',
@@ -1749,6 +1687,7 @@
    },
    areaSelect (item) {
      console.log(item, '666666667')
      this.areaCheckValue = item.name
      this.housingOptions = []
@@ -2496,19 +2435,19 @@
            })
          })
          // const center = this.getRegionCenter(item.position)
          // this.$EventBus.$emit('layerPointAdd', {
          //   layerName: 'areaPolygonLabel',
          //   type: 'label',
          //   params: {
          //     lng: center[0],
          //     lat: center[1],
          //     alt: 0,
          //     text: `${item.name}`,
          //     outW: 20
          //   },
          //   distanceDisplayCondition: { "near": 0, "far": 200000 }
          // })
          const center = this.getRegionCenter(item.position)
          this.$EventBus.$emit('layerPointAdd', {
            layerName: 'areaPolygonLabel',
            type: 'label',
            params: {
              lng: center[0],
              lat: center[1],
              alt: 0,
              text: `${item.name}`,
              outW: 20
            },
            distanceDisplayCondition: { "near": 0, "far": 200000 }
          })
        }
@@ -2824,7 +2763,7 @@
     * @return {*}
     */
    showplacedetail (id, name, isIncludeKeypeople, deptId) {
      console.log('showplacedetail', name)
      console.log('showplacedetail', name, id, isIncludeKeypeople, deptId)
      if (id == 1) {
        this.$refs.otherPlaceDetailsBox.showplacedetail(id, name, isIncludeKeypeople, deptId)
      } else if (id == 2) {
src/views/house/index.vue
@@ -1989,7 +1989,8 @@
        then.$EventBus.$emit("showThreeDimensions", {
          positions: houseData.kmj3a,
          minHeight: res.data.data.properties.hwtxa.features[0].properties.yjpca,
          maxHeight: res.data.data.properties.hwtxa.features[0].properties.mbfdr + res.data.data.properties.hwtxa.features[0].properties.yjpca + 20,
          // maxHeight: res.data.data.properties.hwtxa.features[0].properties.mbfdr,
          maxHeight: res.data.data.properties.hwtxa.features[0].properties.mbfdr + res.data.data.properties.hwtxa.features[0].properties.yjpca,
        })
        then.unitChoosed3DList = houseData.nwwqd.features
        then.curHousingHWTXAYjpca = houseData.hwtxa.features[0].properties.yjpca
src/views/layout/index.vue
@@ -59,10 +59,10 @@
          <div class="triangle"></div>
          <div class="userName">用户名:{{ currentUserInfo.user_name }}</div>
          <div class="userBtn">
            <!-- <div class="back-system" v-if="permission.operation_manager" @click="goToBack">
            <div class="back-system" v-if="permission.operation_manager" @click="goToBack">
              <i class="el-icon-user-back"></i>
              运维管理
            </div> -->
            </div>
            <!-- <div class="back-system" :style="{ color: currentUrl == '/layout/available' ? '#fcbd56' : '#fff' }"
              @click="goToPage('/layout/available')">
              <i class="el-icon-s-grid"></i>
@@ -241,6 +241,10 @@
              path: '/layout/site'
            },
            {
              menuName: '企业信息',
              path: '/layout/companyInfo'
            },
            {
              menuName: '矛盾纠纷',
              path: '/layout/contradictionEventShow'
            },