linwe
2024-12-20 b27a8931ebfb2264c45858c60ded692bbedec944
Merge remote-tracking branch 'origin/master'
8 files modified
1 files added
4502 ■■■■ changed files
src/components/map/components/architecturePopup.vue 1053 ●●●● patch | view | raw | blame | history
src/components/map/components/mapPopup.vue 687 ●●●● patch | view | raw | blame | history
src/components/policeInforDialog/index.vue 202 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 2 ●●● patch | view | raw | blame | history
src/views/home/components/dialog/areaDetailsBox.vue 456 ●●●● patch | view | raw | blame | history
src/views/home/components/dialog/keyPersonBox.vue 470 ●●●● patch | view | raw | blame | history
src/views/home/index.vue 4 ●●●● patch | view | raw | blame | history
src/views/intelligentSearch/index.vue 19 ●●●●● patch | view | raw | blame | history
src/views/policeInfor/index.vue 1609 ●●●● patch | view | raw | blame | history
src/components/map/components/architecturePopup.vue
@@ -1,311 +1,365 @@
<template>
    <div>
        <div v-if="architecturePopup" class="divForms-dom" id="architectureDivElementDom">
            <div style="width: 100%; height: 100%; transform: translate(0, 50%);">
                <div class="divForms divForms-theme" :class="{ 'scale-dom': scaleDomFlag }">
                    <div class="divForms-wrap">
                        <div class="area">
                            <div class="arrow-lt"></div>
                            <div class="b-t"></div>
                            <div class="b-r"></div>
                            <div class="b-b"></div>
                            <div class="b-l"></div>
                            <div class="arrow-rb"></div>
                            <div class="label-wrap">
                                <div class="title">
                                    详细信息
                                    <div class="close" @click="closePopup" title="关闭"></div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '学校'" class="label-content">
                                    <div class="item">
                                        <div>校园名:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                    <div class="item">
                                        <div>在校教职工人数:</div>
                                        <div>{{ architectureDataPopup.teacherScale }}</div>
                                    </div>
                                    <div class="item">
                                        <div>在校学生数量:</div>
                                        <div>{{ architectureDataPopup.studentScale }}</div>
                                    </div>
                                    <div class="item">
                                        <div>办学区域:</div>
                                        <div>{{ architectureDataPopup.officeArea }}</div>
                                    </div>
                                    <div class="item">
                                        <div>学校类型:</div>
                                        <div>{{ architectureDataPopup.attentionType }}</div>
                                    </div>
                                    <div class="item">
                                        <div>办学主体:</div>
                                        <div>{{ architectureDataPopup.officeMain }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '危爆品'" class="label-content">
                                    <div class="item">
                                        <div>单位名称:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                    <div class="item">
                                        <div>危险物品名称:</div>
                                        <div>{{ architectureDataPopup.hazardousGoodsName }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '医院'" class="label-content">
                                    <div class="item">
                                        <div>医院名称:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '党政机关' || architectureDataPopup.curDataType == '银行'"
                                    class="label-content">
                                    <div class="item">
                                        <div>单位名称:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                    <div class="item">
                                        <div>关注类型:</div>
                                        <div>{{ architectureDataPopup.attentionType }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '其它重点单位'" class="label-content">
                                    <div class="item">
                                        <div>单位名称:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '油气站'" class="label-content">
                                    <div class="item">
                                        <div>单位名称:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                    <div class="item">
                                        <div>关注类型:</div>
                                        <div>{{ architectureDataPopup.attentionType }}</div>
                                    </div>
                                    <div class="item">
                                        <div>规模:</div>
                                        <div>{{ architectureDataPopup.scale }}</div>
                                    </div>
                                    <div class="item">
                                        <div>状态:</div>
                                        <div>{{ architectureDataPopup.status }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '旅馆酒店公寓'" class="label-content">
                                    <div class="item">
                                        <div>单位名称:</div>
                                        <div>{{ architectureDataPopup.unitName }}</div>
                                    </div>
                                    <div class="item">
                                        <div>座机:</div>
                                        <div>{{ architectureDataPopup.tel }}</div>
                                    </div>
                                </div>
                                <div class="label-content public" v-show="architectureDataPopup.curDataType != '茅家岭派出所'">
                                    <div class="item">
                                        <div>地址:</div>
                                        <div>{{ architectureDataPopup.address }}</div>
                                    </div>
                                    <div class="item">
                                        <div>辖区派出所:</div>
                                        <div>{{ architectureDataPopup.policeStationName }}</div>
                                    </div>
                                    <div class="item">
                                        <div>责任人:</div>
                                        <div>{{ architectureDataPopup.person }}</div>
                                    </div>
                                    <div class="item">
                                        <div>责任人职务:</div>
                                        <div>{{ architectureDataPopup.job }}</div>
                                    </div>
                                    <div class="item">
                                        <div>责任人电话:</div>
                                        <div>{{ architectureDataPopup.phone }}</div>
                                    </div>
                                    <div class="item">
                                        <div>责任民警:</div>
                                        <div>{{ architectureDataPopup.policeman }}</div>
                                    </div>
                                    <div class="item">
                                        <div>责任民警电话:</div>
                                        <div>{{ architectureDataPopup.policemanPhone }}</div>
                                    </div>
                                    <div class="item">
                                        <div>安保级别:</div>
                                        <div>{{ architectureDataPopup.securityLevel }}</div>
                                    </div>
                                    <div class="item">
                                        <div>备注:</div>
                                        <div>{{ architectureDataPopup.remark }}</div>
                                    </div>
                                </div>
                                <div v-show="architectureDataPopup.curDataType == '茅家岭派出所'">
                                    <div v-show="architectureDataPopup.curDataTitle == '学校'" class="label-content">
                                        <div class="item">
                                            <div>县(市、区):</div>
                                            <div>{{ architectureDataPopup.ZXXSQ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>辖区派出所:</div>
                                            <div>{{ architectureDataPopup.XQPCS }}</div>
                                        </div>
                                        <div class="item">
                                            <div>校园名:</div>
                                            <div>{{ architectureDataPopup.XXMC }}</div>
                                        </div>
                                        <div class="item">
                                            <div>地址:</div>
                                            <div>{{ architectureDataPopup.JZDZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>在校教职工人数:</div>
                                            <div>{{ architectureDataPopup.ZXZG }}</div>
                                        </div>
                                        <div class="item">
                                            <div>在校学生数量:</div>
                                            <div>{{ architectureDataPopup.ZXXS }}</div>
                                        </div>
                                        <div class="item">
                                            <div>责任民警:</div>
                                            <div>{{ architectureDataPopup.BGMJ }}</div>
                                        </div>
                                    </div>
                                    <div v-show="architectureDataPopup.curDataTitle == '宾馆酒店'" class="label-content">
                                        <div class="item">
                                            <div>宾馆名称:</div>
                                            <div>{{ architectureDataPopup.JDMC }}</div>
                                        </div>
                                        <div class="item">
                                            <div>法人姓名:</div>
                                            <div>{{ architectureDataPopup.JDFR }}</div>
                                        </div>
                                        <div class="item">
                                            <div>法人身份证号码:</div>
                                            <div>{{ architectureDataPopup.FRSFZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>法人电话号码:</div>
                                            <div>{{ architectureDataPopup.FRLXDH }}</div>
                                        </div>
                                        <div class="item">
                                            <div>警务对接人姓名:</div>
                                            <div>{{ architectureDataPopup.JWDJ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>警务对接人身份证号码:</div>
                                            <div>{{ architectureDataPopup.JWDJSFZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>警务对接人号码:</div>
                                            <div>{{ architectureDataPopup.JWDJLXFS }}</div>
                                        </div>
                                        <div class="item">
                                            <div>具体地址:</div>
                                            <div>{{ architectureDataPopup.JDDZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>现有员工数:</div>
                                            <div>{{ architectureDataPopup.JDYGS }}</div>
                                        </div>
                                        <div class="item">
                                            <div>房间数:</div>
                                            <div>{{ architectureDataPopup.JDFJS }}</div>
                                        </div>
                                    </div>
                                    <div v-show="architectureDataPopup.curDataTitle == '医院'" class="label-content">
                                        <div class="item">
                                            <div>医院名称:</div>
                                            <div>{{ architectureDataPopup.YYMC }}</div>
                                        </div>
                                        <div class="item">
                                            <div>社区:</div>
                                            <div>{{ architectureDataPopup.JZSQ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>法人姓名:</div>
                                            <div>{{ architectureDataPopup.JZFR }}</div>
                                        </div>
                                        <div class="item">
                                            <div>身份证号码:</div>
                                            <div>{{ architectureDataPopup.FRSFZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>电话号码:</div>
                                            <div>{{ architectureDataPopup.JZDH }}</div>
                                        </div>
                                        <div class="item">
                                            <div>警务对接人员:</div>
                                            <div>{{ architectureDataPopup.JWDJ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>警务对接人员身份证:</div>
                                            <div>{{ architectureDataPopup.JWDJSFZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>电话号码:</div>
                                            <div>{{ architectureDataPopup.JWDJLXFS }}</div>
                                        </div>
                                        <div class="item">
                                            <div>医院地址:</div>
                                            <div>{{ architectureDataPopup.JZDZ }}</div>
                                        </div>
                                    </div>
                                    <div v-show="architectureDataPopup.curDataTitle == '重点人员'" class="label-content">
                                        <div class="item">
                                            <div>姓名:</div>
                                            <div>{{ architectureDataPopup.realName }}</div>
                                        </div>
                                        <div class="item">
                                            <div>证件号码:</div>
                                            <div>{{ architectureDataPopup.realNameSFZ }}</div>
                                        </div>
                                        <div class="item">
                                            <div>性别:</div>
                                            <div>{{ architectureDataPopup.realNameXB }}</div>
                                        </div>
                                        <div class="item">
                                            <div>重点人员类别:</div>
                                            <div>{{ architectureDataPopup.zdryxl }}</div>
                                        </div>
                                        <div class="item">
                                            <div>户籍地详址:</div>
                                            <div>{{ architectureDataPopup.address }}</div>
                                        </div>
                                        <div class="item">
                                            <div>联系电话:</div>
                                            <div>{{ architectureDataPopup.phone }}</div>
                                        </div>
                                        <div class="item">
                                            <div>责任人:</div>
                                            <div>{{ architectureDataPopup.zdryzry }}</div>
                                        </div>
                                        <div class="item">
                                            <div>街道责任领导:</div>
                                            <div>{{ architectureDataPopup.zdrtjdld }}</div>
                                        </div>
                                        <div class="item">
                                            <div>列管事由:</div>
                                            <div>{{ architectureDataPopup.realNameLGSY }}</div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="b-t-l"></div>
                        <div class="b-b-r"></div>
                    </div>
                    <div class="arrow"></div>
  <div>
    <div v-if="architecturePopup" class="divForms-dom" id="architectureDivElementDom">
      <div style="width: 100%; height: 100%; transform: translate(0, 50%);">
        <div class="divForms divForms-theme" :class="{ 'scale-dom': scaleDomFlag }">
          <div class="divForms-wrap">
            <div class="area">
              <div class="arrow-lt"></div>
              <div class="b-t"></div>
              <div class="b-r"></div>
              <div class="b-b"></div>
              <div class="b-l"></div>
              <div class="arrow-rb"></div>
              <div class="label-wrap">
                <div class="title">
                  详细信息
                  <div class="close" @click="closePopup" title="关闭"></div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '学校'" class="label-content">
                  <div class="item">
                    <div>校园名:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                  <div class="item">
                    <div>在校教职工人数:</div>
                    <div>{{ architectureDataPopup.teacherScale }}</div>
                  </div>
                  <div class="item">
                    <div>在校学生数量:</div>
                    <div>{{ architectureDataPopup.studentScale }}</div>
                  </div>
                  <div class="item">
                    <div>办学区域:</div>
                    <div>{{ architectureDataPopup.officeArea }}</div>
                  </div>
                  <div class="item">
                    <div>学校类型:</div>
                    <div>{{ architectureDataPopup.attentionType }}</div>
                  </div>
                  <div class="item">
                    <div>办学主体:</div>
                    <div>{{ architectureDataPopup.officeMain }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '危爆品'" class="label-content">
                  <div class="item">
                    <div>单位名称:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                  <div class="item">
                    <div>危险物品名称:</div>
                    <div>{{ architectureDataPopup.hazardousGoodsName }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '医院'" class="label-content">
                  <div class="item">
                    <div>医院名称:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '党政机关' || architectureDataPopup.curDataType == '银行'"
                  class="label-content">
                  <div class="item">
                    <div>单位名称:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                  <div class="item">
                    <div>关注类型:</div>
                    <div>{{ architectureDataPopup.attentionType }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '其它重点单位'" class="label-content">
                  <div class="item">
                    <div>单位名称:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '油气站'" class="label-content">
                  <div class="item">
                    <div>单位名称:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                  <div class="item">
                    <div>关注类型:</div>
                    <div>{{ architectureDataPopup.attentionType }}</div>
                  </div>
                  <div class="item">
                    <div>规模:</div>
                    <div>{{ architectureDataPopup.scale }}</div>
                  </div>
                  <div class="item">
                    <div>状态:</div>
                    <div>{{ architectureDataPopup.status }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '旅馆酒店公寓'" class="label-content">
                  <div class="item">
                    <div>单位名称:</div>
                    <div>{{ architectureDataPopup.unitName }}</div>
                  </div>
                  <div class="item">
                    <div>座机:</div>
                    <div>{{ architectureDataPopup.tel }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '户籍-实有人口'" class="label-content">
                  <div class="item">
                    <div>姓名:</div>
                    <div>{{ architectureDataPopup.realName }}</div>
                  </div>
                  <div class="item">
                    <div>证件号码:</div>
                    <div>{{ architectureDataPopup.cardNo }}</div>
                  </div>
                  <div class="item">
                    <div>性别:</div>
                    <div>{{ architectureDataPopup.sex }}</div>
                  </div>
                  <div class="item">
                    <div>地址:</div>
                    <div>{{ architectureDataPopup.address }}</div>
                  </div>
                  <div class="item">
                    <div>新地址:</div>
                    <div>{{ architectureDataPopup.reAddress.replace('江西省上饶市', '') }}</div>
                  </div>
                  <div class="item">
                    <div>联系电话:</div>
                    <div>{{ architectureDataPopup.phone }}</div>
                  </div>
                  <div class="item">
                    <div>与户主关系:</div>
                    <div>{{ architectureDataPopup.relation }}</div>
                  </div>
                  <div class="item">
                    <div>社区局村委会:</div>
                    <div>{{ architectureDataPopup.neightborhoood }}</div>
                  </div>
                  <div class="item">
                    <div>重点人员细类:</div>
                    <div>{{ architectureDataPopup.zdryxl }}</div>
                  </div>
                </div>
                <div class="label-content public"
                  v-show="architectureDataPopup.curDataType != '茅家岭派出所' && architectureDataPopup.showPublic">
                  <div class="item">
                    <div>地址:</div>
                    <div>{{ architectureDataPopup.address }}</div>
                  </div>
                  <div class="item">
                    <div>辖区派出所:</div>
                    <div>{{ architectureDataPopup.policeStationName }}</div>
                  </div>
                  <div class="item">
                    <div>责任人:</div>
                    <div>{{ architectureDataPopup.person }}</div>
                  </div>
                  <div class="item">
                    <div>责任人职务:</div>
                    <div>{{ architectureDataPopup.job }}</div>
                  </div>
                  <div class="item">
                    <div>责任人电话:</div>
                    <div>{{ architectureDataPopup.phone }}</div>
                  </div>
                  <div class="item">
                    <div>责任民警:</div>
                    <div>{{ architectureDataPopup.policeman }}</div>
                  </div>
                  <div class="item">
                    <div>责任民警电话:</div>
                    <div>{{ architectureDataPopup.policemanPhone }}</div>
                  </div>
                  <div class="item">
                    <div>安保级别:</div>
                    <div>{{ architectureDataPopup.securityLevel }}</div>
                  </div>
                  <div class="item">
                    <div>备注:</div>
                    <div>{{ architectureDataPopup.remark }}</div>
                  </div>
                </div>
                <div v-show="architectureDataPopup.curDataType == '茅家岭派出所'">
                  <div v-show="architectureDataPopup.curDataTitle == '学校'" class="label-content">
                    <div class="item">
                      <div>县(市、区):</div>
                      <div>{{ architectureDataPopup.ZXXSQ }}</div>
                    </div>
                    <div class="item">
                      <div>辖区派出所:</div>
                      <div>{{ architectureDataPopup.XQPCS }}</div>
                    </div>
                    <div class="item">
                      <div>校园名:</div>
                      <div>{{ architectureDataPopup.XXMC }}</div>
                    </div>
                    <div class="item">
                      <div>地址:</div>
                      <div>{{ architectureDataPopup.JZDZ }}</div>
                    </div>
                    <div class="item">
                      <div>在校教职工人数:</div>
                      <div>{{ architectureDataPopup.ZXZG }}</div>
                    </div>
                    <div class="item">
                      <div>在校学生数量:</div>
                      <div>{{ architectureDataPopup.ZXXS }}</div>
                    </div>
                    <div class="item">
                      <div>责任民警:</div>
                      <div>{{ architectureDataPopup.BGMJ }}</div>
                    </div>
                  </div>
                  <div v-show="architectureDataPopup.curDataTitle == '宾馆酒店'" class="label-content">
                    <div class="item">
                      <div>宾馆名称:</div>
                      <div>{{ architectureDataPopup.JDMC }}</div>
                    </div>
                    <div class="item">
                      <div>法人姓名:</div>
                      <div>{{ architectureDataPopup.JDFR }}</div>
                    </div>
                    <div class="item">
                      <div>法人身份证号码:</div>
                      <div>{{ architectureDataPopup.FRSFZ }}</div>
                    </div>
                    <div class="item">
                      <div>法人电话号码:</div>
                      <div>{{ architectureDataPopup.FRLXDH }}</div>
                    </div>
                    <div class="item">
                      <div>警务对接人姓名:</div>
                      <div>{{ architectureDataPopup.JWDJ }}</div>
                    </div>
                    <div class="item">
                      <div>警务对接人身份证号码:</div>
                      <div>{{ architectureDataPopup.JWDJSFZ }}</div>
                    </div>
                    <div class="item">
                      <div>警务对接人号码:</div>
                      <div>{{ architectureDataPopup.JWDJLXFS }}</div>
                    </div>
                    <div class="item">
                      <div>具体地址:</div>
                      <div>{{ architectureDataPopup.JDDZ }}</div>
                    </div>
                    <div class="item">
                      <div>现有员工数:</div>
                      <div>{{ architectureDataPopup.JDYGS }}</div>
                    </div>
                    <div class="item">
                      <div>房间数:</div>
                      <div>{{ architectureDataPopup.JDFJS }}</div>
                    </div>
                  </div>
                  <div v-show="architectureDataPopup.curDataTitle == '医院'" class="label-content">
                    <div class="item">
                      <div>医院名称:</div>
                      <div>{{ architectureDataPopup.YYMC }}</div>
                    </div>
                    <div class="item">
                      <div>社区:</div>
                      <div>{{ architectureDataPopup.JZSQ }}</div>
                    </div>
                    <div class="item">
                      <div>法人姓名:</div>
                      <div>{{ architectureDataPopup.JZFR }}</div>
                    </div>
                    <div class="item">
                      <div>身份证号码:</div>
                      <div>{{ architectureDataPopup.FRSFZ }}</div>
                    </div>
                    <div class="item">
                      <div>电话号码:</div>
                      <div>{{ architectureDataPopup.JZDH }}</div>
                    </div>
                    <div class="item">
                      <div>警务对接人员:</div>
                      <div>{{ architectureDataPopup.JWDJ }}</div>
                    </div>
                    <div class="item">
                      <div>警务对接人员身份证:</div>
                      <div>{{ architectureDataPopup.JWDJSFZ }}</div>
                    </div>
                    <div class="item">
                      <div>电话号码:</div>
                      <div>{{ architectureDataPopup.JWDJLXFS }}</div>
                    </div>
                    <div class="item">
                      <div>医院地址:</div>
                      <div>{{ architectureDataPopup.JZDZ }}</div>
                    </div>
                  </div>
                  <div v-show="architectureDataPopup.curDataTitle == '重点人员'" class="label-content">
                    <div class="item">
                      <div>姓名:</div>
                      <div>{{ architectureDataPopup.realName }}</div>
                    </div>
                    <div class="item">
                      <div>证件号码:</div>
                      <div>{{ architectureDataPopup.realNameSFZ }}</div>
                    </div>
                    <div class="item">
                      <div>性别:</div>
                      <div>{{ architectureDataPopup.realNameXB }}</div>
                    </div>
                    <div class="item">
                      <div>重点人员类别:</div>
                      <div>{{ architectureDataPopup.zdryxl }}</div>
                    </div>
                    <div class="item">
                      <div>户籍地详址:</div>
                      <div>{{ architectureDataPopup.address }}</div>
                    </div>
                    <div class="item">
                      <div>联系电话:</div>
                      <div>{{ architectureDataPopup.phone }}</div>
                    </div>
                    <div class="item">
                      <div>责任人:</div>
                      <div>{{ architectureDataPopup.zdryzry }}</div>
                    </div>
                    <div class="item">
                      <div>街道责任领导:</div>
                      <div>{{ architectureDataPopup.zdrtjdld }}</div>
                    </div>
                    <div class="item">
                      <div>列管事由:</div>
                      <div>{{ architectureDataPopup.realNameLGSY }}</div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="b-t-l"></div>
            <div class="b-b-r"></div>
          </div>
          <div class="arrow"></div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
@@ -314,86 +368,86 @@
import { getActAsPoliceList } from "@/api/home/index.js"
export default {
    name: 'mapPopup',
  name: 'mapPopup',
    inject: ["getWidth", 'userInfo'],
  inject: ["getWidth", 'userInfo'],
    data () {
        return {
            CJdata: {},
            scaleDomFlag: false
        }
    },
    computed: {
        ...mapGetters([
            'architecturePopup',
            'architectureDataPopup'
        ])
    },
    mounted () {
        if (this.getWidth() > 7000) {
            this.scaleDomFlag = true
        } else {
            this.scaleDomFlag = false
        }
    },
    methods: {
        closePopup () {
            this.$store.commit('SET_ARCHITECTUREPOPUP', false)
        }
  data () {
    return {
      CJdata: {},
      scaleDomFlag: false
    }
  },
  computed: {
    ...mapGetters([
      'architecturePopup',
      'architectureDataPopup'
    ])
  },
  mounted () {
    if (this.getWidth() > 7000) {
      this.scaleDomFlag = true
    } else {
      this.scaleDomFlag = false
    }
  },
  methods: {
    closePopup () {
      this.$store.commit('SET_ARCHITECTUREPOPUP', false)
    }
  }
}
</script>
<style lang="scss" scoped>
.divForms-dom {
    position: fixed;
    left: 0;
    z-index: 1 !important;
  position: fixed;
  left: 0;
  z-index: 1 !important;
    .scale-dom {
        transform: scale(3);
        transform-origin: left;
    }
  .scale-dom {
    transform: scale(3);
    transform-origin: left;
  }
}
.divForms .arrow {
    position: absolute;
    bottom: 50%;
    left: 0;
    width: 45px;
    height: 2px;
    transform: rotate(-45deg) translate(5px, -15px);
    background-color: #28bbf0;
  position: absolute;
  bottom: 50%;
  left: 0;
  width: 45px;
  height: 2px;
  transform: rotate(-45deg) translate(5px, -15px);
  background-color: #28bbf0;
}
.divForms-theme .area {
    background-image: linear-gradient(135deg,
            transparent 30px,
            #1831a79a 30px,
            #3f487ba6 50%,
            transparent 50%),
        linear-gradient(-45deg,
            transparent 30px,
            #1831a79a 30px,
            #3f487ba6 50.1%,
            transparent 50%);
  background-image: linear-gradient(135deg,
      transparent 30px,
      #1831a79a 30px,
      #3f487ba6 50%,
      transparent 50%),
    linear-gradient(-45deg,
      transparent 30px,
      #1831a79a 30px,
      #3f487ba6 50.1%,
      transparent 50%);
}
.divForms .area {
    position: relative;
    min-width: 360px;
  position: relative;
  min-width: 360px;
}
.divForms-wrap {
    position: relative;
    overflow: hidden;
    padding: 30px;
  position: relative;
  overflow: hidden;
  padding: 30px;
}
.divForms-theme .b-b,
@@ -402,191 +456,192 @@
.divForms-theme .b-r,
.divForms-theme .b-t,
.divForms-theme .b-t-l {
    background-color: #1831a7;
    box-shadow: 0 0 10px 2px #1831a7;
  background-color: #1831a7;
  box-shadow: 0 0 10px 2px #1831a7;
}
.divForms .b-t {
    position: absolute;
    top: 0;
    left: 44px;
    right: 0;
    height: 1px;
    z-index: 10;
  position: absolute;
  top: 0;
  left: 44px;
  right: 0;
  height: 1px;
  z-index: 10;
}
.divForms .b-r {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 44px;
    width: 1px;
    z-index: 10;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 44px;
  width: 1px;
  z-index: 10;
}
.divForms .b-l {
    position: absolute;
    top: 44px;
    left: 0;
    bottom: 0;
    width: 1px;
    z-index: 10;
  position: absolute;
  top: 44px;
  left: 0;
  bottom: 0;
  width: 1px;
  z-index: 10;
}
.divForms .b-b {
    position: absolute;
    left: 0;
    right: 44px;
    bottom: 0;
    height: 1px;
    z-index: 10;
  position: absolute;
  left: 0;
  right: 44px;
  bottom: 0;
  height: 1px;
  z-index: 10;
}
.divForms .b-b-r {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 1px;
    height: 62px;
    transform: rotate(45deg) translate(-52px, 22px);
    z-index: 10;
  position: absolute;
  bottom: 0;
  right: 0;
  width: 1px;
  height: 62px;
  transform: rotate(45deg) translate(-52px, 22px);
  z-index: 10;
}
.divForms .b-t-l {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 62px;
    transform: rotate(45deg) translate(52px, -22px);
    z-index: 10;
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 62px;
  transform: rotate(45deg) translate(52px, -22px);
  z-index: 10;
}
.divForms .label-wrap {
    padding: 0 12px;
    color: #fff;
    font-size: 16px;
    white-space: nowrap;
    overflow: hidden;
  padding: 0 12px;
  color: #fff;
  font-size: 16px;
  white-space: nowrap;
  overflow: hidden;
    .change-btn {
        margin-top: 6px;
        display: flex;
        align-items: center;
        justify-content: space-around;
  .change-btn {
    margin-top: 6px;
    display: flex;
    align-items: center;
    justify-content: space-around;
        &>div {
            width: 36%;
            height: 36px;
            line-height: 36px;
            cursor: pointer;
        }
        &>div.on {
            color: #3d95f3;
            border-bottom: 2px solid #3d95f3;
        }
    &>div {
      width: 36%;
      height: 36px;
      line-height: 36px;
      cursor: pointer;
    }
    .label-content {
        padding: 10px 0;
        .item {
            display: flex;
            flex-direction: row;
            width: calc(100% - 20px);
            height: 30px;
            line-height: 30px;
            margin: 0 10px;
            text-align: left;
            &>div:first-child {
                min-width: 112px;
                text-align: justify;
                display: inline-block;
                text-align-last: justify;
                margin-right: 20px;
            }
            &>div:nth-of-type(2) {
                flex: 1;
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
            }
        }
    &>div.on {
      color: #3d95f3;
      border-bottom: 2px solid #3d95f3;
    }
  }
    .public {
        padding-top: 0;
        margin-top: -10px;
    }
  .label-content {
    padding: 10px 0;
    .label-content.no-data {
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 240px;
    .item {
      display: flex;
      flex-direction: row;
      width: calc(100% - 20px);
      margin: 0 10px;
      text-align: left;
      &>div:first-child {
        min-width: 112px;
        text-align: justify;
        display: inline-block;
        text-align-last: justify;
        margin-right: 20px;
        line-height: 30px;
      }
      &>div:nth-of-type(2) {
        flex: 1;
        max-width: 240px;
        // overflow: hidden;
        // text-overflow: ellipsis;
        white-space: wrap;
        line-height: 30px;
      }
    }
  }
  .public {
    padding-top: 0;
    margin-top: -10px;
  }
  .label-content.no-data {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 240px;
  }
}
.divForms .title {
    position: relative;
    margin-top: 20px;
    padding: 0 12px 0 30px;
    height: 36px;
    line-height: 36px;
  position: relative;
  margin-top: 20px;
  padding: 0 12px 0 30px;
  height: 36px;
  line-height: 36px;
    .details-btn {
        position: absolute;
        top: 0;
        right: 28px;
        height: 100%;
        cursor: pointer;
  .details-btn {
    position: absolute;
    top: 0;
    right: 28px;
    height: 100%;
    cursor: pointer;
        span {
            font-size: 14px;
        }
    span {
      font-size: 14px;
    }
  }
    .details-btn:hover {
        color: #3d95f3;
    }
  .details-btn:hover {
    color: #3d95f3;
  }
    .close {
        position: absolute;
        right: 5px;
        top: 0;
    }
  .close {
    position: absolute;
    right: 5px;
    top: 0;
  }
    .close::before {
        font-family: element-icons;
        content: '\e6db';
        cursor: pointer;
        font-size: 16px;
    }
  .close::before {
    font-family: element-icons;
    content: '\e6db';
    cursor: pointer;
    font-size: 16px;
  }
    .close:hover::before {
        color: #3d95f3;
    }
  .close:hover::before {
    color: #3d95f3;
  }
}
.divForms-theme .title {
    background-image: linear-gradient(135deg, transparent 25px, #1c309e9a 25px);
  background-image: linear-gradient(135deg, transparent 25px, #1c309e9a 25px);
}
.divForms-theme .arrow,
.divForms-theme .title::before {
    background-color: #1c309e;
  background-color: #1c309e;
}
.divForms .title::before {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    right: 0;
    z-index: 10;
    height: 2px;
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  right: 0;
  z-index: 10;
  height: 2px;
}
</style>
src/components/map/components/mapPopup.vue
@@ -1,117 +1,119 @@
<template>
    <div>
        <div v-if="detailsPopup.showBox" class="divForms-dom" id="divFormsDomBox">
            <div style="width: 100%; height: 100%; transform: translate(0, 50%);">
                <div class="divForms divForms-theme" :class="{ 'scale-dom': scaleDomFlag }">
                    <div class="divForms-wrap">
                        <div class="area">
                            <div class="arrow-lt"></div>
                            <div class="b-t"></div>
                            <div class="b-r"></div>
                            <div class="b-b"></div>
                            <div class="b-l"></div>
                            <div class="arrow-rb"></div>
                            <div class="label-wrap">
                                <div class="title">
                                    警情信息
                                    <div class="close" @click="closePopup" title="关闭"></div>
                                </div>
                                <div class="change-btn" v-show="detailsPopup.showBtn">
                                    <div @click="currentBtn = '接警信息'" :class="{ on: currentBtn == '接警信息' }">接警信息</div>
                                    <div @click="currentBtnChange('出警信息')" :class="{ on: currentBtn == '出警信息' }">出警信息</div>
                                </div>
                                <div v-show="currentBtn == '接警信息'" class="label-content">
                                    <div class="item">
                                        <div>接警单位:</div>
                                        <div>{{ dataPopup.JJDWMC }}</div>
                                    </div>
                                    <div class="item">
                                        <div>接警员:</div>
                                        <div>{{ dataPopup.JJYXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警时间:</div>
                                        <div>{{ dataPopup.BJSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警人:</div>
                                        <div>{{ dataPopup.BJRXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>联系电话:</div>
                                        <div>{{ dataPopup.LXDH }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警内容:</div>
                                        <div :title="dataPopup.BJNR">{{ dataPopup.BJNR }}</div>
                                    </div>
                                    <div class="item">
                                        <div>事发地址:</div>
                                        <div :title="dataPopup.SFDZ">{{ dataPopup.SFDZ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警类型:</div>
                                        <div>{{ dataPopup.BJLX }}</div>
                                    </div>
                                    <div class="item">
                                        <div>备注:</div>
                                        <div>{{ dataPopup.MEMO }}</div>
                                    </div>
                                </div>
                                <div v-show="currentBtn == '出警信息' && JSON.stringify(CJdata) != '{}'" class="label-content">
                                    <div class="item">
                                        <div>处警单位:</div>
                                        <div>{{ CJdata.CJDWMC }}</div>
                                    </div>
                                    <div class="item">
                                        <div>处警员:</div>
                                        <div>{{ CJdata.CJYXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>接警时间:</div>
                                        <div>{{ CJdata.JJSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>出动人员:</div>
                                        <div>{{ CJdata.CDRY }}</div>
                                    </div>
                                    <div class="item">
                                        <div>出动车辆:</div>
                                        <div>{{ CJdata.CDCL }}</div>
                                    </div>
                                    <div class="item">
                                        <div>到达现场时间:</div>
                                        <div>{{ CJdata.DDXCSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>处理完毕时间:</div>
                                        <div>{{ CJdata.CLWBSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>处警类型:</div>
                                        <div>{{ CJdata.CJLX }}</div>
                                    </div>
                                    <div class="item">
                                        <div>备注:</div>
                                        <div>{{ CJdata.MEMO }}</div>
                                    </div>
                                </div>
                                <div v-show="currentBtn == '出警信息' && JSON.stringify(CJdata) == '{}'"
                                    class="label-content no-data">暂无数据</div>
                            </div>
                        </div>
                        <div class="b-t-l"></div>
                        <div class="b-b-r"></div>
                    </div>
                    <div class="arrow"></div>
  <div>
    <div v-if="detailsPopup.showBox" class="divForms-dom" id="divFormsDomBox">
      <div style="width: 100%; height: 100%; transform: translate(0, 50%);">
        <div class="divForms divForms-theme" :class="{ 'scale-dom': scaleDomFlag }">
          <div class="divForms-wrap">
            <div class="area">
              <div class="arrow-lt"></div>
              <div class="b-t"></div>
              <div class="b-r"></div>
              <div class="b-b"></div>
              <div class="b-l"></div>
              <div class="arrow-rb"></div>
              <div class="label-wrap">
                <div class="title">
                  警情信息
                  <div class="details-btn" @click="siteClick" title="详情"></div>
                  <div class="close" @click="closePopup" title="关闭"></div>
                </div>
                <div class="change-btn" v-show="detailsPopup.showBtn">
                  <div @click="currentBtn = '接警信息'" :class="{ on: currentBtn == '接警信息' }">接警信息</div>
                  <div @click="currentBtnChange('出警信息')" :class="{ on: currentBtn == '出警信息' }">出警信息</div>
                </div>
                <div v-show="currentBtn == '接警信息'" class="label-content">
                  <div class="item">
                    <div>接警单位:</div>
                    <div>{{ dataPopup.JJDWMC }}</div>
                  </div>
                  <div class="item">
                    <div>接警员:</div>
                    <div>{{ dataPopup.JJYXM }}</div>
                  </div>
                  <div class="item">
                    <div>报警时间:</div>
                    <div>{{ dataPopup.BJSJ }}</div>
                  </div>
                  <div class="item">
                    <div>报警人:</div>
                    <div>{{ dataPopup.BJRXM }}</div>
                  </div>
                  <div class="item">
                    <div>联系电话:</div>
                    <div>{{ dataPopup.LXDH }}</div>
                  </div>
                  <div class="item">
                    <div>报警内容:</div>
                    <div :title="dataPopup.BJNR">{{ dataPopup.BJNR }}</div>
                  </div>
                  <div class="item">
                    <div>事发地址:</div>
                    <div :title="dataPopup.SFDZ">{{ dataPopup.SFDZ }}</div>
                  </div>
                  <div class="item">
                    <div>报警类型:</div>
                    <div>{{ dataPopup.BJLX }}</div>
                  </div>
                  <div class="item">
                    <div>备注:</div>
                    <div>{{ dataPopup.MEMO }}</div>
                  </div>
                </div>
                <div v-show="currentBtn == '出警信息' && JSON.stringify(CJdata) != '{}'" class="label-content">
                  <div class="item">
                    <div>处警单位:</div>
                    <div>{{ CJdata.CJDWMC }}</div>
                  </div>
                  <div class="item">
                    <div>处警员:</div>
                    <div>{{ CJdata.CJYXM }}</div>
                  </div>
                  <div class="item">
                    <div>接警时间:</div>
                    <div>{{ CJdata.JJSJ }}</div>
                  </div>
                  <div class="item">
                    <div>出动人员:</div>
                    <div>{{ CJdata.CDRY }}</div>
                  </div>
                  <div class="item">
                    <div>出动车辆:</div>
                    <div>{{ CJdata.CDCL }}</div>
                  </div>
                  <div class="item">
                    <div>到达现场时间:</div>
                    <div>{{ CJdata.DDXCSJ }}</div>
                  </div>
                  <div class="item">
                    <div>处理完毕时间:</div>
                    <div>{{ CJdata.CLWBSJ }}</div>
                  </div>
                  <div class="item">
                    <div>处警类型:</div>
                    <div>{{ CJdata.CJLX }}</div>
                  </div>
                  <div class="item">
                    <div>备注:</div>
                    <div>{{ CJdata.MEMO }}</div>
                  </div>
                </div>
                <div v-show="currentBtn == '出警信息' && JSON.stringify(CJdata) == '{}'" class="label-content no-data">暂无数据
                </div>
              </div>
            </div>
            <div class="b-t-l"></div>
            <div class="b-b-r"></div>
          </div>
          <div class="arrow"></div>
        </div>
      </div>
    </div>
    <police-infor-dialog ref="policeInforDialog"></police-infor-dialog>
  </div>
</template>
<script>
@@ -120,123 +122,127 @@
import { getActAsPoliceList } from "@/api/home/index.js"
export default {
    name: 'mapPopup',
  name: 'mapPopup',
    inject: ["getWidth", 'userInfo'],
  inject: ["getWidth", 'userInfo'],
    data () {
        return {
            currentBtn: '接警信息',
            CJdata: {},
            scaleDomFlag: false
        }
    },
    computed: {
        ...mapGetters([
            'detailsPopup',
            'dataPopup'
        ])
    },
    watch: {
        detailsPopup: {
            handler (newData, oldData) {
                if (newData.showBox == false) {
                    this.currentBtn = '接警信息'
                }
            }
        }
    },
    mounted () {
        if (this.getWidth() > 7000) {
            this.scaleDomFlag = true
        } else {
            this.scaleDomFlag = false
        }
    },
    methods: {
        closePopup () {
            this.currentBtn = '接警信息'
            this.$store.commit('SET_DETAILSPOPUP', {
                showBox: false,
                showBtn: false
            })
        },
        currentBtnChange (type) {
            this.currentBtn = type
            this.CJdata = {}
            getActAsPoliceList(this.dataPopup.JJDBH, this.userInfo.dept_id).then(res => {
                if (res.data.data.records.length > 0) {
                    this.CJdata = res.data.data.records[0]
                }
            })
        },
        popupDetailShow () {
            if (this.detailsPopup.openMenu != '' && this.detailsPopup.openMenu == 'policeInfor') {
                this.$EventBus.$emit('PoliceInforSiteClick', this.dataPopup)
            } else {
                this.detailsPopup.showBtn == true ?
                    this.$EventBus.$emit('policeSituationSiteClick', this.dataPopup) :
                    this.$EventBus.$emit('housingPoliceSiteClick', this.dataPopup)
            }
        }
  data () {
    return {
      currentBtn: '接警信息',
      CJdata: {},
      scaleDomFlag: false
    }
  },
  computed: {
    ...mapGetters([
      'detailsPopup',
      'dataPopup'
    ])
  },
  watch: {
    detailsPopup: {
      handler (newData, oldData) {
        if (newData.showBox == false) {
          this.currentBtn = '接警信息'
        }
      }
    }
  },
  mounted () {
    if (this.getWidth() > 7000) {
      this.scaleDomFlag = true
    } else {
      this.scaleDomFlag = false
    }
  },
  methods: {
    closePopup () {
      this.currentBtn = '接警信息'
      this.$store.commit('SET_DETAILSPOPUP', {
        showBox: false,
        showBtn: false
      })
    },
    currentBtnChange (type) {
      this.currentBtn = type
      this.CJdata = {}
      getActAsPoliceList(this.dataPopup.JJDBH, this.userInfo.dept_id).then(res => {
        if (res.data.data.records.length > 0) {
          this.CJdata = res.data.data.records[0]
        }
      })
    },
    popupDetailShow () {
      if (this.detailsPopup.openMenu != '' && this.detailsPopup.openMenu == 'policeInfor') {
        this.$EventBus.$emit('PoliceInforSiteClick', this.dataPopup)
      } else {
        this.detailsPopup.showBtn == true ?
          this.$EventBus.$emit('policeSituationSiteClick', this.dataPopup) :
          this.$EventBus.$emit('housingPoliceSiteClick', this.dataPopup)
      }
    },
    siteClick () {
      this.$refs.policeInforDialog.initOpen(this.dataPopup)
    },
  }
}
</script>
<style lang="scss" scoped>
.divForms-dom {
    position: fixed;
    left: 0;
    z-index: 1 !important;
  position: fixed;
  left: 0;
  z-index: 1 !important;
    .scale-dom {
        transform: scale(3);
        transform-origin: left;
    }
  .scale-dom {
    transform: scale(3);
    transform-origin: left;
  }
}
.divForms .arrow {
    position: absolute;
    bottom: 50%;
    left: 0;
    width: 45px;
    height: 2px;
    transform: rotate(-45deg) translate(5px, -15px);
    background-color: #28bbf0;
  position: absolute;
  bottom: 50%;
  left: 0;
  width: 45px;
  height: 2px;
  transform: rotate(-45deg) translate(5px, -15px);
  background-color: #28bbf0;
}
.divForms-theme .area {
    background-image: linear-gradient(135deg,
            transparent 30px,
            #1831a79a 30px,
            #3f487ba6 50%,
            transparent 50%),
        linear-gradient(-45deg,
            transparent 30px,
            #1831a79a 30px,
            #3f487ba6 50.1%,
            transparent 50%);
  background-image: linear-gradient(135deg,
      transparent 30px,
      #1831a79a 30px,
      #3f487ba6 50%,
      transparent 50%),
    linear-gradient(-45deg,
      transparent 30px,
      #1831a79a 30px,
      #3f487ba6 50.1%,
      transparent 50%);
}
.divForms .area {
    position: relative;
    min-width: 360px;
  position: relative;
  min-width: 360px;
}
.divForms-wrap {
    position: relative;
    overflow: hidden;
    padding: 30px;
  position: relative;
  overflow: hidden;
  padding: 30px;
}
.divForms-theme .b-b,
@@ -245,187 +251,188 @@
.divForms-theme .b-r,
.divForms-theme .b-t,
.divForms-theme .b-t-l {
    background-color: #1831a7;
    box-shadow: 0 0 10px 2px #1831a7;
  background-color: #1831a7;
  box-shadow: 0 0 10px 2px #1831a7;
}
.divForms .b-t {
    position: absolute;
    top: 0;
    left: 44px;
    right: 0;
    height: 1px;
    z-index: 10;
  position: absolute;
  top: 0;
  left: 44px;
  right: 0;
  height: 1px;
  z-index: 10;
}
.divForms .b-r {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 44px;
    width: 1px;
    z-index: 10;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 44px;
  width: 1px;
  z-index: 10;
}
.divForms .b-l {
    position: absolute;
    top: 44px;
    left: 0;
    bottom: 0;
    width: 1px;
    z-index: 10;
  position: absolute;
  top: 44px;
  left: 0;
  bottom: 0;
  width: 1px;
  z-index: 10;
}
.divForms .b-b {
    position: absolute;
    left: 0;
    right: 44px;
    bottom: 0;
    height: 1px;
    z-index: 10;
  position: absolute;
  left: 0;
  right: 44px;
  bottom: 0;
  height: 1px;
  z-index: 10;
}
.divForms .b-b-r {
    position: absolute;
    bottom: 0;
    right: 0;
    width: 1px;
    height: 62px;
    transform: rotate(45deg) translate(-52px, 22px);
    z-index: 10;
  position: absolute;
  bottom: 0;
  right: 0;
  width: 1px;
  height: 62px;
  transform: rotate(45deg) translate(-52px, 22px);
  z-index: 10;
}
.divForms .b-t-l {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 62px;
    transform: rotate(45deg) translate(52px, -22px);
    z-index: 10;
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 62px;
  transform: rotate(45deg) translate(52px, -22px);
  z-index: 10;
}
.divForms .label-wrap {
    padding: 0 12px;
    color: #fff;
    font-size: 16px;
    white-space: nowrap;
    overflow: hidden;
  padding: 0 12px;
  color: #fff;
  font-size: 16px;
  white-space: nowrap;
  overflow: hidden;
    .change-btn {
        margin-top: 6px;
        display: flex;
        align-items: center;
        justify-content: space-around;
  .change-btn {
    margin-top: 6px;
    display: flex;
    align-items: center;
    justify-content: space-around;
        &>div {
            width: 36%;
            height: 36px;
            line-height: 36px;
            cursor: pointer;
        }
        &>div.on {
            color: #3d95f3;
            border-bottom: 2px solid #3d95f3;
        }
    &>div {
      width: 36%;
      height: 36px;
      line-height: 36px;
      cursor: pointer;
    }
    .label-content {
        padding: 10px 0;
        .item {
            display: flex;
            flex-direction: row;
            width: calc(100% - 20px);
            height: 30px;
            line-height: 30px;
            margin: 0 10px;
            text-align: left;
            &>div:first-child {
                width: 112px;
                text-align: justify;
                display: inline-block;
                text-align-last: justify;
                margin-right: 20px;
            }
            &>div:nth-of-type(2) {
                width: calc(100% - 120px);
                max-width: 190px;
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
            }
        }
    &>div.on {
      color: #3d95f3;
      border-bottom: 2px solid #3d95f3;
    }
  }
    .label-content.no-data {
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 240px;
  .label-content {
    padding: 10px 0;
    .item {
      display: flex;
      flex-direction: row;
      width: calc(100% - 20px);
      height: 30px;
      line-height: 30px;
      margin: 0 10px;
      text-align: left;
      &>div:first-child {
        width: 112px;
        text-align: justify;
        display: inline-block;
        text-align-last: justify;
        margin-right: 20px;
      }
      &>div:nth-of-type(2) {
        width: calc(100% - 120px);
        max-width: 190px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
    }
  }
  .label-content.no-data {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 240px;
  }
}
.divForms .title {
    position: relative;
    margin-top: 20px;
    padding: 0 12px 0 30px;
    height: 36px;
    line-height: 36px;
  position: relative;
  margin-top: 20px;
  padding: 0 12px 0 30px;
  height: 36px;
  line-height: 36px;
    .details-btn {
        position: absolute;
        top: 0;
        right: 28px;
        height: 100%;
        cursor: pointer;
  .details-btn {
    position: absolute;
    top: 0;
    right: 28px;
  }
        span {
            font-size: 14px;
        }
    }
  .details-btn::before {
    font-family: element-icons;
    content: '\e785';
    cursor: pointer;
    font-size: 16px;
  }
    .details-btn:hover {
        color: #3d95f3;
    }
  .details-btn:hover {
    color: #3d95f3;
  }
    .close {
        position: absolute;
        right: 5px;
        top: 0;
    }
  .close {
    position: absolute;
    right: 5px;
    top: 0;
  }
    .close::before {
        font-family: element-icons;
        content: '\e6db';
        cursor: pointer;
        font-size: 16px;
    }
  .close::before {
    font-family: element-icons;
    content: '\e6db';
    cursor: pointer;
    font-size: 16px;
  }
    .close:hover::before {
        color: #3d95f3;
    }
  .close:hover::before {
    color: #3d95f3;
  }
}
.divForms-theme .title {
    background-image: linear-gradient(135deg, transparent 25px, #1c309e9a 25px);
  background-image: linear-gradient(135deg, transparent 25px, #1c309e9a 25px);
}
.divForms-theme .arrow,
.divForms-theme .title::before {
    background-color: #1c309e;
  background-color: #1c309e;
}
.divForms .title::before {
    content: '';
    position: absolute;
    bottom: -4px;
    left: 0;
    right: 0;
    z-index: 10;
    height: 2px;
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  right: 0;
  z-index: 10;
  height: 2px;
}
</style>
src/components/policeInforDialog/index.vue
New file
@@ -0,0 +1,202 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-01-17 16:04:08
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-12-20 14:42:37
 * @FilePath: \srs-police-affairs\src\components\policeInforDialog\index.vue
 * @Description:
 *
 * Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<template>
  <el-dialog title="警情信息" :visible.sync="policeSituationVisible" :modal-append-to-body="false"
    :before-close="policeSituationBeforeClose" :modal="true" :close-on-click-modal="false"
    class="policeSituation-details-box">
    <div class="btn-change">
      <div :class="{ on: policeInformationType == '接警信息' }" @click="alarmOrActAsPolice('接警信息')">接警信息</div>
      <div :class="{ on: policeInformationType == '出警信息' }" @click="alarmOrActAsPolice('出警信息')">出警信息</div>
    </div>
    <div v-show="policeInformationType == '接警信息'" class="box">
      <div class="item">
        <div>接警单位编号:</div>
        <div>{{ policeSituationDetailObj.JJDWBH }}</div>
      </div>
      <div class="item">
        <div>接警单位名称:</div>
        <div>{{ policeSituationDetailObj.JJDWMC }}</div>
      </div>
      <div class="item">
        <div>接警单编号:</div>
        <div>{{ policeSituationDetailObj.JJDBH }}</div>
      </div>
      <div class="item">
        <div>接警员编号:</div>
        <div>{{ policeSituationDetailObj.JJYBH }}</div>
      </div>
      <div class="item">
        <div>接警员姓名:</div>
        <div>{{ policeSituationDetailObj.JJYXM }}</div>
      </div>
      <div class="item">
        <div>报警时间:</div>
        <div>{{ policeSituationDetailObj.BJSJ }}</div>
      </div>
      <div class="item">
        <div>报警电话:</div>
        <div>{{ policeSituationDetailObj.LXDH }}</div>
      </div>
      <div class="item">
        <div>报警人姓名:</div>
        <div>{{ policeSituationDetailObj.BJRXM }}</div>
      </div>
      <div class="item">
        <div>报警类别:</div>
        <div>{{ policeSituationDetailObj.BJLB }}</div>
      </div>
      <div class="item">
        <div>报警类型:</div>
        <div>{{ policeSituationDetailObj.jqlxName }}</div>
      </div>
      <div class="dialog-content">
        <div>事发地址:</div>
        <div>{{ policeSituationDetailObj.SFDZ }}</div>
      </div>
      <div class="dialog-content">
        <div>报警内容:</div>
        <div>{{ policeSituationDetailObj.BJNR }}</div>
      </div>
      <div class="dialog-content">
        <div>备注:</div>
        <div>{{ policeSituationDetailObj.MEMO }}</div>
      </div>
    </div>
    <div v-show="policeInformationType == '出警信息' && JSON.stringify(CJdata) != '{}'" class="box">
      <div class="item">
        <div>处警单位编号:</div>
        <div>{{ CJdata.CJDWBH }}</div>
      </div>
      <div class="item">
        <div>处警单位名称:</div>
        <div>{{ CJdata.CJDWMC }}</div>
      </div>
      <div class="item">
        <div>处警单编号:</div>
        <div>{{ CJdata.CJDBH }}</div>
      </div>
      <div class="item">
        <div>处警员编号:</div>
        <div>{{ CJdata.CJYBH }}</div>
      </div>
      <div class="item">
        <div>处警员姓名:</div>
        <div>{{ CJdata.CJYXM }}</div>
      </div>
      <div class="item">
        <div>接警时间:</div>
        <div>{{ CJdata.JJSJ }}</div>
      </div>
      <div class="item">
        <div>到达现场时间:</div>
        <div>{{ CJdata.DDXCSJ }}</div>
      </div>
      <div class="item">
        <div>首次反馈时间:</div>
        <div>{{ CJdata.SCFKSJ }}</div>
      </div>
      <div class="item">
        <div>处理完毕时间:</div>
        <div>{{ CJdata.CLWBSJ }}</div>
      </div>
      <div class="item">
        <div>出动人员:</div>
        <div>{{ CJdata.CDRY }}</div>
      </div>
      <div class="item">
        <div>出动车辆:</div>
        <div>{{ CJdata.CDCL }}</div>
      </div>
      <div class="item">
        <div>处警类型:</div>
        <div>{{ CJdata.CJLX }}</div>
      </div>
      <div class="dialog-content">
        <div>备注:</div>
        <div>{{ CJdata.MEMO }}</div>
      </div>
    </div>
    <div v-show="policeInformationType == '出警信息' && JSON.stringify(CJdata) == '{}'" class="box no-data">暂无警情</div>
  </el-dialog>
</template>
<script>
import { getActAsPoliceList } from "@/api/home/index.js"
export default {
  name: 'policeInforDialog',
  data () {
    return {
      policeInformationType: '接警信息',
      policeSituationDetailObj: {},
      policeSituationVisible: false,
      CJdata: {},
    }
  },
  computed: {
  },
  methods: {
    // 打开弹窗初始化数据
    initOpen (e) {
      this.policeSituationDetailObj = e
      this.policeInformationType = '接警信息'
      this.policeSituationVisible = true
    },
    // 接出警切换
    alarmOrActAsPolice (type) {
      this.policeInformationType = type
      if (type == '出警信息') {
        this.CJdata = {}
        getActAsPoliceList(this.policeSituationDetailObj.JJDBH, this.userInfo.dept_id).then(res => {
          if (res.data.data.records.length > 0) {
            this.CJdata = res.data.data.records[0]
          }
        })
      }
    },
  },
}
</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/styles/media/index.scss
@@ -2960,7 +2960,7 @@
        font-size: countSizeVh(16) !important;
        height: countSizeVh(36) !important;
        line-height: countSizeVh(36) !important;
        padding: 0 !important;
        padding: 0 countSizeVw(6, 1920) !important;
      }
    }
src/views/home/components/dialog/areaDetailsBox.vue
@@ -1,65 +1,64 @@
<template>
    <!-- 户籍人口 -->
    <el-dialog :title="peopleTitle" :visible.sync="peopleVisible" :before-close="personInfoClose" :modal="true"
        :modal-append-to-body="false" :close-on-click-modal="false" class="area-details-box">
        <div class="header">
            <div>
                人员名称:
                <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
            </div>
            <div>
                联系电话:
                <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
            </div>
            <div>
                身份证号:
                <input type="text" v-model="peopleCardID" placeholder="请输入身份证号" />
            </div>
            <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
            <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
        </div>
  <!-- 户籍人口 -->
  <el-dialog :title="peopleTitle" :visible.sync="peopleVisible" :before-close="personInfoClose" :modal="true"
    :modal-append-to-body="false" :close-on-click-modal="false" class="area-details-box">
    <div class="header">
      <div>
        人员名称:
        <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
      </div>
      <div>
        联系电话:
        <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
      </div>
      <div>
        身份证号:
        <input type="text" v-model="peopleCardID" placeholder="请输入身份证号" />
      </div>
      <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
      <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</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="peopleInfoList" 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>{{ peopleEmptyText }}</div>
                </template>
                <el-table-column label="序号" type="index" align="center">
                    <template slot-scope="scope">
                        <span>{{ (peoplePage.currentPage - 1) * peoplePage.pageSize + scope.$index + 1 }}</span>
                    </template>
                </el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="realName" label="姓名"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="reAddress" label="地址"
                    min-width="240%"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="phone" label="电话"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="policeStationName" label="所属派出所"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="areaName" label="所属责任区"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="personType" label="人口类型">
                    <template slot-scope="scope">
                        {{ scope.row.personType == 1 ? '户籍人口' : '实有人口' }}
                    </template>
                </el-table-column>
                <el-table-column label="操作" align="center">
                    <template slot-scope="scope">
                        <el-button :disabled="positionDisabled(scope.row)" @click="rowClick(scope.row)" type="text"
                            size="small" title="定位">
                            <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
                        </el-button>
                    </template>
                </el-table-column>
            </el-table>
    <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="peopleInfoList" 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>{{ peopleEmptyText }}</div>
        </template>
        <el-table-column label="序号" type="index" align="center">
          <template slot-scope="scope">
            <span>{{ (peoplePage.currentPage - 1) * peoplePage.pageSize + scope.$index + 1 }}</span>
          </template>
        </el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="realName" label="姓名"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="reAddress" label="地址" min-width="240%"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="phone" label="电话"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="policeStationName" label="所属派出所"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="areaName" label="所属责任区"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="personType" label="人口类型">
          <template slot-scope="scope">
            {{ scope.row.personType == 1 ? '户籍人口' : '实有人口' }}
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <el-button :disabled="positionDisabled(scope.row)" @click="rowClick(scope.row)" type="text" size="small"
              title="定位">
              <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
            </el-button>
          </template>
        </el-table-column>
      </el-table>
            <div class="pages all-pagination-sty" ref="tablePagination">
                <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
                    :total="peoplePage.total" :current-page="peoplePage.currentPage"
                    @current-change="handlePeopleCurrentChange"></el-pagination>
            </div>
        </div>
    </el-dialog>
      <div class="pages all-pagination-sty" ref="tablePagination">
        <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
          :total="peoplePage.total" :current-page="peoplePage.currentPage"
          @current-change="handlePeopleCurrentChange"></el-pagination>
      </div>
    </div>
  </el-dialog>
</template>
<script>
@@ -67,176 +66,193 @@
import { getPersonInfoPage } from '@/api/dept/index.js'
export default {
    inject: ['userInfo'],
  inject: ['userInfo'],
    props: ['policeStaionID'],
  props: ['policeStaionID'],
    data () {
        return {
            curLoading: false,
            peopleEmptyText: "",
  data () {
    return {
      curLoading: false,
      peopleEmptyText: "",
            peopleTitle: '',
            peopleVisible: false,
      peopleTitle: '',
      peopleVisible: false,
            peoplePoliceName: '',
            peopleCallPhone: '',
            peopleCardID: '',
            peopleInfoList: [],
            peoplePage: {
                total: 0,
                pageSize: 12,
                currentPage: 1
            },
            peopleSearchQuery: {
                id: "",
                policeName: "",
                phone: "",
            },
      peoplePoliceName: '',
      peopleCallPhone: '',
      peopleCardID: '',
      peopleInfoList: [],
      peoplePage: {
        total: 0,
        pageSize: 12,
        currentPage: 1
      },
      peopleSearchQuery: {
        id: "",
        policeName: "",
        phone: "",
      },
    }
  },
  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"
        }
      }
    },
    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: {
        rowClick (row) {
            console.log('rowClick', row)
            this.$EventBus.$emit('toPosition', {
                siteJd: row.lng,
                siteWd: row.lat,
                siteGd: 200
            })
            this.peopleVisible = false
        },
        /**
         * @description: 现有人员和重点人员列表弹窗关闭的事件
         * @return {*}
         */
        personInfoClose () {
            this.peoplePoliceName = ''
            this.peopleCallPhone = ''
            this.peopleCardID = ''
            this.peoplePage.currentPage = 1
            this.peopleInfoList = []
            this.peopleVisible = false
        },
        /**
         * @description: 列表弹框中的搜索
         * @return {*}
         */
        searchPeopleDetail () {
            this.peoplePage.currentPage = 1
            this.peopleInfoList = []
            this.getPersonInfoPage(1)
        },
        /**
         * @description: 列表弹框中的清除
         * @return {*}
         */
        clearPeopleDetailSearchValue () {
            this.peoplePoliceName = ''
            this.peopleCallPhone = ''
            this.peopleCardID = ''
            this.peoplePage.currentPage = 1
            this.peopleInfoList = []
            this.getPersonInfoPage(1)
        },
        /**
         * @description: 户籍人口列表分页切换
         * @param {*} currentPage
         * @return {*}
         */
        handlePeopleCurrentChange (currentPage) {
            this.peoplePage.currentPage = currentPage
            this.peopleInfoList = []
            this.getPersonInfoPage(1)
        },
        /**
         * @description: 获取重点人员列表信息
         * @return {*}
         */
        getPersonInfoPage (status) {
            this.curLoading = true
            this.peopleEmptyText = ""
            getPersonInfoPage({
                status,
                // deptId: this.userInfo.dept_id,
                deptId: this.peopleSearchQuery.dept_id,
                areaId: this.peopleSearchQuery.id,
                realName: this.peoplePoliceName,
                phone: this.peopleCallPhone,
                cardNo: this.peopleCardID,
                current: this.peoplePage.currentPage,
                size: this.peoplePage.pageSize
            }).then(res => {
                this.peoplePage.total = 0
                console.log('getPersonInfoPage', res)
                if (res.data.data.records.length > 0) {
                    this.peoplePage.total = res.data.data.total
                    setTimeout(() => {
                        this.peopleInfoList = res.data.data.records
                    }, 200)
                } else {
                    this.peopleInfoList = []
                    this.peoplePage.total = 0
                    this.peopleEmptyText = "暂无户籍人口数据"
                }
                setTimeout(() => {
                    this.curLoading = false
                }, 500)
            })
        },
        showpeopledetail (id, name, isIncludeKeypeople, deptId) {
            this.peopleTitle = name
            this.peopleSearchQuery.id = id
            if (deptId) {
                this.peopleSearchQuery.dept_id = deptId
            } else {
                this.peopleSearchQuery.dept_id = this.userInfo.dept_id
            }
            this.peopleVisible = true
            this.peopleInfoList = []
            console.log('id, name, isIncludeKeypeople,deptId', id, name, isIncludeKeypeople, deptId)
            if (isIncludeKeypeople == 'includeKeypeople') {
                this.getPersonInfoPage()
            } else if (isIncludeKeypeople == 'onlyKeypeople') {
                this.getPersonInfoPage(2)
            } else {
                this.getPersonInfoPage()
            }
    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: {
    rowClick (row) {
      this.$EventBus.$emit('toPosition', {
        siteJd: row.x,
        siteWd: row.y,
        siteGd: 200
      })
      this.$store.commit('SET_ARCHITECTUREPOPUP', true)
      this.$store.commit('SET_ARCHITECTUREDATAPOPUP', { ...row, curDataType: '户籍-实有人口', showPublic: false })
      // eslint-disable-next-line no-redeclare
      var popup = new global.DC.DivForms(global.viewer, {
        domId: 'architectureDivElementDom',
        position: [
          global.DC.Transform.transformWGS84ToCartesian(
            new global.DC.Position(
              Number(row.x),
              Number(row.y),
              0
            )
          )
        ]
      })
      this.peopleVisible = false
    },
    /**
     * @description: 现有人员和重点人员列表弹窗关闭的事件
     * @return {*}
     */
    personInfoClose () {
      this.peoplePoliceName = ''
      this.peopleCallPhone = ''
      this.peopleCardID = ''
      this.peoplePage.currentPage = 1
      this.peopleInfoList = []
      this.peopleVisible = false
    },
    /**
     * @description: 列表弹框中的搜索
     * @return {*}
     */
    searchPeopleDetail () {
      this.peoplePage.currentPage = 1
      this.peopleInfoList = []
      this.getPersonInfoPage(1)
    },
    /**
     * @description: 列表弹框中的清除
     * @return {*}
     */
    clearPeopleDetailSearchValue () {
      this.peoplePoliceName = ''
      this.peopleCallPhone = ''
      this.peopleCardID = ''
      this.peoplePage.currentPage = 1
      this.peopleInfoList = []
      this.getPersonInfoPage(1)
    },
    /**
     * @description: 户籍人口列表分页切换
     * @param {*} currentPage
     * @return {*}
     */
    handlePeopleCurrentChange (currentPage) {
      this.peoplePage.currentPage = currentPage
      this.peopleInfoList = []
      this.getPersonInfoPage(1)
    },
    /**
     * @description: 获取重点人员列表信息
     * @return {*}
     */
    getPersonInfoPage (status) {
      this.curLoading = true
      this.peopleEmptyText = ""
      getPersonInfoPage({
        status,
        // deptId: this.userInfo.dept_id,
        deptId: this.peopleSearchQuery.dept_id,
        areaId: this.peopleSearchQuery.id,
        realName: this.peoplePoliceName,
        phone: this.peopleCallPhone,
        cardNo: this.peopleCardID,
        current: this.peoplePage.currentPage,
        size: this.peoplePage.pageSize
      }).then(res => {
        this.peoplePage.total = 0
        console.log('getPersonInfoPage', res)
        if (res.data.data.records.length > 0) {
          this.peoplePage.total = res.data.data.total
          setTimeout(() => {
            this.peopleInfoList = res.data.data.records
          }, 200)
        } else {
          this.peopleInfoList = []
          this.peoplePage.total = 0
          this.peopleEmptyText = "暂无户籍人口数据"
        }
        setTimeout(() => {
          this.curLoading = false
        }, 500)
      })
    },
    showpeopledetail (id, name, isIncludeKeypeople, deptId) {
      this.peopleTitle = name
      this.peopleSearchQuery.id = id
      if (deptId) {
        this.peopleSearchQuery.dept_id = deptId
      } else {
        this.peopleSearchQuery.dept_id = this.userInfo.dept_id
      }
      this.peopleVisible = true
      this.peopleInfoList = []
      console.log('id, name, isIncludeKeypeople,deptId', id, name, isIncludeKeypeople, deptId)
      if (isIncludeKeypeople == 'includeKeypeople') {
        this.getPersonInfoPage()
      } else if (isIncludeKeypeople == 'onlyKeypeople') {
        this.getPersonInfoPage(2)
      } else {
        this.getPersonInfoPage()
      }
    }
  },
}
</script>
src/views/home/components/dialog/keyPersonBox.vue
@@ -1,58 +1,58 @@
<template>
    <!-- 重点人员 -->
    <el-dialog :title="keyPersonTitle" :visible.sync="keyPersonVisible" :before-close="personInfoClose" :modal="true"
        :modal-append-to-body="false" :close-on-click-modal="false" class="keyPerson-details-box">
        <div class="header" v-show="userInfo.dept_id != '1596020515064381442'">
            <div>
                人员名称:
                <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
            </div>
            <div>
                联系电话:
                <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
            </div>
            <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
            <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
        </div>
  <!-- 重点人员 -->
  <el-dialog :title="keyPersonTitle" :visible.sync="keyPersonVisible" :before-close="personInfoClose" :modal="true"
    :modal-append-to-body="false" :close-on-click-modal="false" class="keyPerson-details-box">
    <div class="header" v-show="userInfo.dept_id != '1596020515064381442'">
      <div>
        人员名称:
        <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
      </div>
      <div>
        联系电话:
        <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
      </div>
      <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
      <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</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="keyPersonDetailArr" 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>{{ keyPersonEmptyText }}</div>
                </template>
                <el-table-column label="序号" type="index" align="center">
                    <template slot-scope="scope">
                        <span>{{ (peoplePage.currentPage - 1) * peoplePage.pageSize + scope.$index + 1 }}</span>
                    </template>
                </el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="realName" label="姓名"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="address" label="地址" min-width="240%"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="phone" label="联系电话"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="zdryzry" label="责任人"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="zdrtjdld" label="街道责任领导"></el-table-column>
                <el-table-column :show-overflow-tooltip="true" prop="zdryxl" label="重点人员类型"></el-table-column>
                <!-- <el-table-column :show-overflow-tooltip="true" prop="policeStationName" label="所属派出所"></el-table-column> -->
                <!-- <el-table-column :show-overflow-tooltip="true" prop="areaName" label="所属责任区"></el-table-column> -->
                <el-table-column label="操作" align="center">
                    <template slot-scope="scope">
                        <el-button :disabled="positionDisabled(scope.row)" @click="rowClick(scope.row)" type="text"
                            size="small" title="定位">
                            <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
                        </el-button>
                    </template>
                </el-table-column>
            </el-table>
    <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="keyPersonDetailArr" 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>{{ keyPersonEmptyText }}</div>
        </template>
        <el-table-column label="序号" type="index" align="center">
          <template slot-scope="scope">
            <span>{{ (peoplePage.currentPage - 1) * peoplePage.pageSize + scope.$index + 1 }}</span>
          </template>
        </el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="realName" label="姓名"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="address" label="地址" min-width="240%"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="phone" label="联系电话"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="zdryzry" label="责任人"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="zdrtjdld" label="街道责任领导"></el-table-column>
        <el-table-column :show-overflow-tooltip="true" prop="zdryxl" label="重点人员类型"></el-table-column>
        <!-- <el-table-column :show-overflow-tooltip="true" prop="policeStationName" label="所属派出所"></el-table-column> -->
        <!-- <el-table-column :show-overflow-tooltip="true" prop="areaName" label="所属责任区"></el-table-column> -->
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <el-button :disabled="positionDisabled(scope.row)" @click="rowClick(scope.row)" type="text" size="small"
              title="定位">
              <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
            </el-button>
          </template>
        </el-table-column>
      </el-table>
            <div class="pages all-pagination-sty" ref="tablePagination" v-show="userInfo.dept_id != '1596020515064381442'">
                <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
                    :total="peoplePage.total" :current-page="peoplePage.currentPage"
                    @current-change="handlePersonPageChange"></el-pagination>
            </div>
        </div>
    </el-dialog>
      <div class="pages all-pagination-sty" ref="tablePagination" v-show="userInfo.dept_id != '1596020515064381442'">
        <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
          :total="peoplePage.total" :current-page="peoplePage.currentPage"
          @current-change="handlePersonPageChange"></el-pagination>
      </div>
    </div>
  </el-dialog>
</template>
<script>
@@ -61,208 +61,208 @@
import { getPersonInfoPage } from '@/api/dept/index.js'
export default {
    inject: ['userInfo'],
  inject: ['userInfo'],
    props: ['policeStaionID'],
  props: ['policeStaionID'],
    data () {
        return {
            curLoading: false,
            keyPersonEmptyText: "",
  data () {
    return {
      curLoading: false,
      keyPersonEmptyText: "",
            peoplePoliceName: '',
      peoplePoliceName: '',
            keyPersonTitle: '',
            keyPersonVisible: false,
            keyPersonDetailArr: [],
      keyPersonTitle: '',
      keyPersonVisible: false,
      keyPersonDetailArr: [],
            peoplePage: {
                total: 0,
                pageSize: 15,
                currentPage: 1
            },
      peoplePage: {
        total: 0,
        pageSize: 15,
        currentPage: 1
      },
    }
  },
  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"
        }
      }
    },
    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
        }
      }
    },
  },
        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: {
    showkeypersondetail (name) {
      this.curLoading = true
      this.keyPersonEmptyText = ""
      this.keyPersonDetailArr = []
      this.keyPersonVisible = true
      this.keyPersonTitle = name
      if (this.userInfo.dept_id == '1596020515064381442') {
        if (name == '征地拆迁群体') {
          this.keyPersonDetailArr = keypeopleJSON.filter(item => {
            return item.zdryxl == '征地拆迁群体'
          })
        } else if (name == '非涉法涉诉重点个访人员') {
          this.keyPersonDetailArr = keypeopleJSON.filter(item => {
            return item.zdryxl == '非涉法涉诉重点个访人员'
          })
        } else if (name == '涉法涉诉重点个访人员') {
          this.keyPersonDetailArr = keypeopleJSON.filter(item => {
            return item.zdryxl == '涉法涉诉重点个访人员'
          })
        } else if (name == '楼盘业主维权群体') {
          this.keyPersonDetailArr = keypeopleJSON.filter(item => {
            return item.zdryxl == '楼盘业主维权群体'
          })
        }
        setTimeout(() => {
          this.curLoading = false
        }, 500)
      } else {
        this.getPersonInfoPage(2)
      }
    },
    methods: {
        showkeypersondetail (name) {
            this.curLoading = true
            this.keyPersonEmptyText = ""
            this.keyPersonDetailArr = []
    rowClick (row) {
      this.$EventBus.$emit('toPosition', {
        siteJd: row.x,
        siteWd: row.y,
        siteGd: 200
      })
            this.keyPersonVisible = true
            this.keyPersonTitle = name
      this.$store.commit('SET_ARCHITECTUREPOPUP', true)
            if (this.userInfo.dept_id == '1596020515064381442') {
                if (name == '征地拆迁群体') {
                    this.keyPersonDetailArr = keypeopleJSON.filter(item => {
                        return item.zdryxl == '征地拆迁群体'
                    })
                } else if (name == '非涉法涉诉重点个访人员') {
                    this.keyPersonDetailArr = keypeopleJSON.filter(item => {
                        return item.zdryxl == '非涉法涉诉重点个访人员'
                    })
                } else if (name == '涉法涉诉重点个访人员') {
                    this.keyPersonDetailArr = keypeopleJSON.filter(item => {
                        return item.zdryxl == '涉法涉诉重点个访人员'
                    })
                } else if (name == '楼盘业主维权群体') {
                    this.keyPersonDetailArr = keypeopleJSON.filter(item => {
                        return item.zdryxl == '楼盘业主维权群体'
                    })
                }
      this.$store.commit('SET_ARCHITECTUREDATAPOPUP', { ...row, curDataTitle: '重点人员', curDataType: '茅家岭派出所' })
                setTimeout(() => {
                    this.curLoading = false
                }, 500)
            } else {
                this.getPersonInfoPage(2)
            }
        },
      // eslint-disable-next-line no-redeclare
      var popup = new global.DC.DivForms(global.viewer, {
        domId: 'architectureDivElementDom',
        position: [
          global.DC.Transform.transformWGS84ToCartesian(
            new global.DC.Position(
              Number(row.x),
              Number(row.y),
              0
            )
          )
        ]
      })
        rowClick (row) {
            this.$EventBus.$emit('toPosition', {
                siteJd: row.x,
                siteWd: row.y,
                siteGd: 200
            })
            this.$store.commit('SET_ARCHITECTUREPOPUP', true)
            this.$store.commit('SET_ARCHITECTUREDATAPOPUP', { ...row, curDataTitle: '重点人员', curDataType: '茅家岭派出所' })
            // eslint-disable-next-line no-redeclare
            var popup = new global.DC.DivForms(global.viewer, {
                domId: 'architectureDivElementDom',
                position: [
                    global.DC.Transform.transformWGS84ToCartesian(
                        new global.DC.Position(
                            Number(row.x),
                            Number(row.y),
                            0
                        )
                    )
                ]
            })
            this.keyPersonVisible = false
        },
        /**
         * @description: 现有人员和重点人员列表弹窗关闭的事件
         * @return {*}
         */
        personInfoClose () {
            this.peoplePoliceName = ''
            this.peopleCallPhone = ''
            this.peoplePage.currentPage = 1
            this.keyPersonDetailArr = []
            this.keyPersonVisible = false
        },
        /**
         * @description: 列表弹框中的搜索
         * @return {*}
         */
        searchPeopleDetail () {
            this.curLoading = true
            this.keyPersonDetailArr = []
            this.keyPersonEmptyText = ""
            this.peoplePage.currentPage = 1
            this.getPersonInfoPage(2)
        },
        /**
         * @description: 列表弹框中的清除
         * @return {*}
         */
        clearPeopleDetailSearchValue () {
            this.curLoading = true
            this.keyPersonDetailArr = []
            this.keyPersonEmptyText = ""
            this.peoplePoliceName = ''
            this.peopleCallPhone = ''
            this.peoplePage.currentPage = 1
            this.getPersonInfoPage(2)
        },
        /**
         * @description: 重点人员列表分页切换
         * @param {*} current 当前页
         * @return {*}
         */
        handlePersonPageChange (current) {
            this.curLoading = true
            this.keyPersonDetailArr = []
            this.keyPersonEmptyText = ""
            this.peoplePage.currentPage = current
            this.getPersonInfoPage(2)
        },
        /**
         * @description: 获取重点人员列表信息
         * @return {*}
         */
        getPersonInfoPage (status) {
            getPersonInfoPage({
                status,
                depaId: this.userInfo.dept_id,
                zdryxl: this.keyPersonTitle,
                realName: this.peoplePoliceName,
                phone: this.peopleCallPhone,
                current: this.peoplePage.currentPage,
                size: this.peoplePage.pageSize
            }).then(res => {
                this.keyPersonDetailArr = []
                this.peoplePage.total = 0
                if (res.data.data.records.length > 0) {
                    this.keyPersonEmptyText = ""
                    this.peoplePage.total = res.data.data.total
                    this.keyPersonDetailArr = res.data.data.records
                } else {
                    this.keyPersonEmptyText = "暂无重点人员数据"
                    this.keyPersonDetailArr = []
                    this.peoplePage.total = 0
                }
                setTimeout(() => {
                    this.curLoading = false
                }, 500)
            })
        },
      this.keyPersonVisible = false
    },
    destroyed () {
        this.$store.commit('SET_ARCHITECTUREPOPUP', false)
    /**
     * @description: 现有人员和重点人员列表弹窗关闭的事件
     * @return {*}
     */
    personInfoClose () {
      this.peoplePoliceName = ''
      this.peopleCallPhone = ''
      this.peoplePage.currentPage = 1
      this.keyPersonDetailArr = []
      this.keyPersonVisible = false
    },
    /**
     * @description: 列表弹框中的搜索
     * @return {*}
     */
    searchPeopleDetail () {
      this.curLoading = true
      this.keyPersonDetailArr = []
      this.keyPersonEmptyText = ""
      this.peoplePage.currentPage = 1
      this.getPersonInfoPage(2)
    },
    /**
     * @description: 列表弹框中的清除
     * @return {*}
     */
    clearPeopleDetailSearchValue () {
      this.curLoading = true
      this.keyPersonDetailArr = []
      this.keyPersonEmptyText = ""
      this.peoplePoliceName = ''
      this.peopleCallPhone = ''
      this.peoplePage.currentPage = 1
      this.getPersonInfoPage(2)
    },
    /**
     * @description: 重点人员列表分页切换
     * @param {*} current 当前页
     * @return {*}
     */
    handlePersonPageChange (current) {
      this.curLoading = true
      this.keyPersonDetailArr = []
      this.keyPersonEmptyText = ""
      this.peoplePage.currentPage = current
      this.getPersonInfoPage(2)
    },
    /**
     * @description: 获取重点人员列表信息
     * @return {*}
     */
    getPersonInfoPage (status) {
      getPersonInfoPage({
        status,
        depaId: this.userInfo.dept_id,
        zdryxl: this.keyPersonTitle,
        realName: this.peoplePoliceName,
        phone: this.peopleCallPhone,
        current: this.peoplePage.currentPage,
        size: this.peoplePage.pageSize
      }).then(res => {
        this.keyPersonDetailArr = []
        this.peoplePage.total = 0
        if (res.data.data.records.length > 0) {
          this.keyPersonEmptyText = ""
          this.peoplePage.total = res.data.data.total
          this.keyPersonDetailArr = res.data.data.records
        } else {
          this.keyPersonEmptyText = "暂无重点人员数据"
          this.keyPersonDetailArr = []
          this.peoplePage.total = 0
        }
        setTimeout(() => {
          this.curLoading = false
        }, 500)
      })
    },
  },
  destroyed () {
    this.$store.commit('SET_ARCHITECTUREPOPUP', false)
  },
}
</script>
src/views/home/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-12-19 16:37:54
 * @LastEditTime: 2024-12-20 17:44:13
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -1222,7 +1222,7 @@
        siteGd: 200
      })
      this.$store.commit('SET_ARCHITECTUREPOPUP', true)
      this.$store.commit('SET_ARCHITECTUREDATAPOPUP', { ...row, curDataType: row.type })
      this.$store.commit('SET_ARCHITECTUREDATAPOPUP', { ...row, curDataType: row.type, showPublic: true })
      var popup = new global.DC.DivForms(global.viewer, {
        domId: 'architectureDivElementDom',
        position: [
src/views/intelligentSearch/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-12-19 17:28:42
 * @LastEditTime: 2024-12-20 16:50:18
 * @FilePath: \srs-police-affairs\src\views\intelligentSearch\index.vue
 * @Description: 辖区管理
 * 
@@ -14,13 +14,12 @@
    <div v-show="boxShow" class="container-content" ref="containerContent">
      <div class="time-select" ref="timeSelect">
        <div class="search-item-box">
          <el-input size="small" placeholder="请输入(姓名、手机号、身份证号、住址)" v-model="searchKey" clearable></el-input>
          <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>
          <el-input size="small" clearable v-model="searchKey" @input="searchBtn" placeholder="请输入(姓名、手机号、身份证号、住址)"
            style="cursor: pointer;"></el-input>
        </div>
      </div>
      <div class="list police-info intelligent-table" ref="tableBox">
      <div v-show="tableData.length > 0" class="list police-info intelligent-table" ref="tableBox">
        <el-table :data="tableData" style="width: 100%" :height="currentTableHeight"
          :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
          :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }"
@@ -87,7 +86,7 @@
    that.$nextTick(() => {
      initMapPosition()
      that.getList()
      that.searchBtn()
    })
  },
@@ -284,8 +283,14 @@
      })
    },
    searchBtn () {
    searchBtn (e = '') {
      this.pages.currentPage = 1
      if (e == '') {
        this.tableData = []
        return
      }
      this.getList()
    },
src/views/policeInfor/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-07-19 15:26:58
 * @LastEditTime: 2024-12-20 14:52:23
 * @FilePath: \srs-police-affairs\src\views\policeInfor\index.vue
 * @Description: 辖区管理
 * 
@@ -10,210 +10,84 @@
-->
<template>
    <div class="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>
  <div class="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 style="flex: 1;" size="small" v-model="policeInforValue" @change="policeTypeChange"
                        placeholder="请选择">
                        <el-option v-for="item in policeInforOptions" :key="item.value" :label="item.label"
                            :value="item.value"></el-option>
                    </el-select>
          <el-select style="flex: 1;" size="small" v-model="policeInforValue" @change="policeTypeChange"
            placeholder="请选择">
            <el-option v-for="item in policeInforOptions" :key="item.value" :label="item.label"
              :value="item.value"></el-option>
          </el-select>
                    <div style="margin-left: 8px;">
                        <el-checkbox v-model="siteLayerShow" @change="siteLayerChange">点位图</el-checkbox>
                    </div>
          <div style="margin-left: 8px;">
            <el-checkbox v-model="siteLayerShow" @change="siteLayerChange">点位图</el-checkbox>
          </div>
                    <div style="margin-left: 8px;">
                        <el-checkbox v-model="heatMapShow" @change="heatMapChange">热力图</el-checkbox>
                    </div>
                </div>
                <div class="search-item-box" v-show="areaChangeShow">
                    <span>辖区选择:</span>
                    <el-select style="flex: 1;" size="small" v-model="areaChangeValue" @change="areaValueChange"
                        placeholder="请选择">
                        <el-option v-for="item in areaListData" :key="item.value" :label="item.label"
                            :value="item.value"></el-option>
                    </el-select>
                </div>
                <div class="search-item-box">
                    <el-date-picker size="mini" :clearable="false" v-model="currentTime" type="daterange" align="center"
                        unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
                        @change="datePickerChange" :picker-options="pickerOptions"></el-date-picker>
                </div>
                <div class="search-item-box">
                    <el-input size="small" placeholder="请输入报警内容…" v-model="searchBjnr" @change="bjnrSearch"
                        clearable></el-input><el-button icon="el-icon-search" class="bjnr-btn">搜索</el-button>
                </div>
                <div class="search-item-box">数量:{{ historyPoliceInforData.length }} 起</div>
            </div>
            <div class="police-info">
                <el-table :data="historyPoliceInforData" style="width: 100%" :height="currentTableHeight"
                    :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" @cell-mouse-enter="tableEnter"
                    @cell-mouse-leave="tabelLeave">
                    <template slot="empty">
                        <div>{{ historyEmptyText }}</div>
                    </template>
                    <el-table-column prop="JJDWMC" :show-overflow-tooltip="true" label="接警单位"
                        min-width="80%"></el-table-column>
                    <el-table-column prop="BJSJ" label="报警时间" min-width="50%"></el-table-column>
                    <el-table-column prop="jqlxName" label="报警类型"></el-table-column>
                    <el-table-column label="操作" align="center" min-width="32%">
                        <template slot-scope="scope">
                            <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)" type="text"
                                size="small" title="定位">
                                <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
                            </el-button>
                            <el-buttonalign-justify @click="siteClick(scope.row)" type="text" size="small" title="详情">
                                <i class="el-icon-document"></i>
                            </el-buttonalign-justify>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
          <div style="margin-left: 8px;">
            <el-checkbox v-model="heatMapShow" @change="heatMapChange">热力图</el-checkbox>
          </div>
        </div>
        <el-dialog title="警情信息" :visible.sync="policeSituationVisible" :modal-append-to-body="false"
            :before-close="policeSituationBeforeClose" :modal="true" :close-on-click-modal="false"
            class="policeSituation-details-box">
            <div class="btn-change">
                <div :class="{ on: policeInformationType == '接警信息' }" @click="alarmOrActAsPolice('接警信息')">接警信息</div>
                <div :class="{ on: policeInformationType == '出警信息' }" @click="alarmOrActAsPolice('出警信息')">出警信息</div>
            </div>
        <div class="search-item-box" v-show="areaChangeShow">
          <span>辖区选择:</span>
            <div v-show="policeInformationType == '接警信息'" class="box">
                <div class="item">
                    <div>接警单位编号:</div>
                    <div>{{ policeSituationDetailObj.JJDWBH }}</div>
                </div>
                <div class="item">
                    <div>接警单位名称:</div>
                    <div>{{ policeSituationDetailObj.JJDWMC }}</div>
                </div>
                <div class="item">
                    <div>接警单编号:</div>
                    <div>{{ policeSituationDetailObj.JJDBH }}</div>
                </div>
                <div class="item">
                    <div>接警员编号:</div>
                    <div>{{ policeSituationDetailObj.JJYBH }}</div>
                </div>
                <div class="item">
                    <div>接警员姓名:</div>
                    <div>{{ policeSituationDetailObj.JJYXM }}</div>
                </div>
                <div class="item">
                    <div>报警时间:</div>
                    <div>{{ policeSituationDetailObj.BJSJ }}</div>
                </div>
                <div class="item">
                    <div>报警电话:</div>
                    <div>{{ policeSituationDetailObj.LXDH }}</div>
                </div>
                <div class="item">
                    <div>报警人姓名:</div>
                    <div>{{ policeSituationDetailObj.BJRXM }}</div>
                </div>
                <div class="item">
                    <div>报警类别:</div>
                    <div>{{ policeSituationDetailObj.BJLB }}</div>
                </div>
                <div class="item">
                    <div>报警类型:</div>
                    <div>{{ policeSituationDetailObj.jqlxName }}</div>
                </div>
                <div class="dialog-content">
                    <div>事发地址:</div>
                    <div>{{ policeSituationDetailObj.SFDZ }}</div>
                </div>
                <div class="dialog-content">
                    <div>报警内容:</div>
                    <div>{{ policeSituationDetailObj.BJNR }}</div>
                </div>
                <div class="dialog-content">
                    <div>备注:</div>
                    <div>{{ policeSituationDetailObj.MEMO }}</div>
                </div>
            </div>
            <div v-show="policeInformationType == '出警信息' && JSON.stringify(CJdata) != '{}'" class="box">
                <div class="item">
                    <div>处警单位编号:</div>
                    <div>{{ CJdata.CJDWBH }}</div>
                </div>
                <div class="item">
                    <div>处警单位名称:</div>
                    <div>{{ CJdata.CJDWMC }}</div>
                </div>
                <div class="item">
                    <div>处警单编号:</div>
                    <div>{{ CJdata.CJDBH }}</div>
                </div>
                <div class="item">
                    <div>处警员编号:</div>
                    <div>{{ CJdata.CJYBH }}</div>
                </div>
                <div class="item">
                    <div>处警员姓名:</div>
                    <div>{{ CJdata.CJYXM }}</div>
                </div>
                <div class="item">
                    <div>接警时间:</div>
                    <div>{{ CJdata.JJSJ }}</div>
                </div>
                <div class="item">
                    <div>到达现场时间:</div>
                    <div>{{ CJdata.DDXCSJ }}</div>
                </div>
                <div class="item">
                    <div>首次反馈时间:</div>
                    <div>{{ CJdata.SCFKSJ }}</div>
                </div>
                <div class="item">
                    <div>处理完毕时间:</div>
                    <div>{{ CJdata.CLWBSJ }}</div>
                </div>
                <div class="item">
                    <div>出动人员:</div>
                    <div>{{ CJdata.CDRY }}</div>
                </div>
                <div class="item">
                    <div>出动车辆:</div>
                    <div>{{ CJdata.CDCL }}</div>
                </div>
                <div class="item">
                    <div>处警类型:</div>
                    <div>{{ CJdata.CJLX }}</div>
                </div>
                <div class="dialog-content">
                    <div>备注:</div>
                    <div>{{ CJdata.MEMO }}</div>
                </div>
            </div>
            <div v-show="policeInformationType == '出警信息' && JSON.stringify(CJdata) == '{}'" class="box no-data">暂无警情</div>
        </el-dialog>
        <div class="cur-tooltip" v-show="currentTooltip"
            :style="{ top: currentPointerPosition.y + 'px', left: currentPointerPosition.x + 'px' }">
            <div class="type-name">报警内容</div>
            <div class="type-content">{{ currentBJNR }}</div>
          <el-select style="flex: 1;" size="small" v-model="areaChangeValue" @change="areaValueChange"
            placeholder="请选择">
            <el-option v-for="item in areaListData" :key="item.value" :label="item.label"
              :value="item.value"></el-option>
          </el-select>
        </div>
        <div class="search-item-box">
          <el-date-picker size="mini" :clearable="false" v-model="currentTime" type="daterange" align="center"
            unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="datePickerChange"
            :picker-options="pickerOptions"></el-date-picker>
        </div>
        <div class="search-item-box">
          <el-input size="small" placeholder="请输入报警内容…" v-model="searchBjnr" @change="bjnrSearch"
            clearable></el-input><el-button icon="el-icon-search" class="bjnr-btn">搜索</el-button>
        </div>
        <div class="search-item-box">数量:{{ historyPoliceInforData.length }} 起</div>
      </div>
      <div class="police-info">
        <el-table :data="historyPoliceInforData" style="width: 100%" :height="currentTableHeight"
          :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" @cell-mouse-enter="tableEnter"
          @cell-mouse-leave="tabelLeave">
          <template slot="empty">
            <div>{{ historyEmptyText }}</div>
          </template>
          <el-table-column prop="JJDWMC" :show-overflow-tooltip="true" label="接警单位" min-width="80%"></el-table-column>
          <el-table-column prop="BJSJ" label="报警时间" min-width="50%"></el-table-column>
          <el-table-column prop="jqlxName" label="报警类型"></el-table-column>
          <el-table-column label="操作" align="center" min-width="32%">
            <template slot-scope="scope">
              <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)" type="text" size="small"
                title="定位">
                <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
              </el-button>
              <el-buttonalign-justify @click="siteClick(scope.row)" type="text" size="small" title="详情">
                <i class="el-icon-document"></i>
              </el-buttonalign-justify>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
    <div class="cur-tooltip" v-show="currentTooltip"
      :style="{ top: currentPointerPosition.y + 'px', left: currentPointerPosition.x + 'px' }">
      <div class="type-name">报警内容</div>
      <div class="type-content">{{ currentBJNR }}</div>
    </div>
    <police-infor-dialog ref="policeInforDialog"></police-infor-dialog>
  </div>
</template>
<script>
@@ -229,726 +103,703 @@
let loading = null
export default {
    inject: ['userInfo'],
  inject: ['userInfo'],
    data () {
        return {
            realPoliceInforData: [], // 实时
            historyPoliceInforData: [],
  data () {
    return {
      realPoliceInforData: [], // 实时
      historyPoliceInforData: [],
            realEmptyText: "",
      realEmptyText: "",
            historyEmptyText: "",
      historyEmptyText: "",
            boxShow: false,
            pages: {
                total: 0,
            },
      boxShow: false,
      pages: {
        total: 0,
      },
            currentTableHeight: 0,
            currentTime: [],
      currentTableHeight: 0,
      currentTime: [],
            policeInformationType: '接警信息',
            policeSituationDetailObj: {},
            policeSituationVisible: false,
      currentPointerPosition: {
        x: 0,
        y: 0
      },
            CJdata: {},
      currentTooltip: false,
      currentBJNR: '',
      pickerOptions: {
        shortcuts: [
          {
            text: '最近一周',
            onClick (picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近两周',
            onClick (picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 14)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近一个月',
            onClick (picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              picker.$emit('pick', [start, end])
            }
          },
          {
            text: '最近三个月',
            onClick (picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
              picker.$emit('pick', [start, end])
            }
          }]
      },
            currentPointerPosition: {
                x: 0,
                y: 0
            },
            currentTooltip: false,
            currentBJNR: '',
            pickerOptions: {
                shortcuts: [
                    {
                        text: '最近一周',
                        onClick (picker) {
                            const end = new Date()
                            const start = new Date()
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
                            picker.$emit('pick', [start, end])
                        }
                    },
                    {
                        text: '最近两周',
                        onClick (picker) {
                            const end = new Date()
                            const start = new Date()
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 14)
                            picker.$emit('pick', [start, end])
                        }
                    },
                    {
                        text: '最近一个月',
                        onClick (picker) {
                            const end = new Date()
                            const start = new Date()
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
                            picker.$emit('pick', [start, end])
                        }
                    },
                    {
                        text: '最近三个月',
                        onClick (picker) {
                            const end = new Date()
                            const start = new Date()
                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
                            picker.$emit('pick', [start, end])
                        }
                    }]
            },
            policeInforValue: '',
            policeInforOptions: [
                {
                    value: '',
                    label: '全部'
                },
                {
                    value: '盗窃',
                    label: '盗窃'
                },
                {
                    value: '涉诈',
                    label: '涉诈'
                },
                {
                    value: '纠纷',
                    label: '纠纷'
                },
                {
                    value: '涉赌',
                    label: '涉赌'
                },
                {
                    value: '涉毒',
                    label: '涉毒'
                },
                {
                    value: '涉黄',
                    label: '涉黄'
                },
                {
                    value: '求助',
                    label: '求助'
                },
                {
                    value: '其他',
                    label: '其他'
                }
            ],
            areaChangeShow: true,
            areaChangeValue: '1123598813738675201',
            areaListData: [
                {
                    label: '信州分局',
                    value: '1123598813738675201'
                },
                {
                    label: '东市派出所',
                    value: '1596019492522426369'
                },
                {
                    label: '水南派出所',
                    value: '1596020272834936833'
                },
                {
                    label: '西市派出所',
                    value: '1596020342712041474'
                },
                {
                    label: '北门派出所',
                    value: '1596020390174785537'
                },
                {
                    label: '车站派出所',
                    value: '1596020461461176321'
                },
                {
                    label: '茅家岭派出所',
                    value: '1596020515064381442'
                },
                {
                    label: '沙溪派出所',
                    value: '1596020574275371010'
                },
                {
                    label: '朝阳派出所',
                    value: '1596020623172567041'
                },
                {
                    label: '灵溪派出所',
                    value: '1596020683096588290'
                },
                {
                    label: '秦峰派出所',
                    value: '1596020727883366401'
                },
                {
                    label: '凤凰派出所',
                    value: '1596020775790706690'
                },
                {
                    label: '石狮派出所',
                    value: '1614543582897971202'
                },
                {
                    label: '大院派出所',
                    value: '1614543698551709698'
                },
                {
                    label: '师院派出所',
                    value: '1614543791782699010'
                }
            ],
            heatMap: null,
            heatMapShow: false,
            heatMapData: [],
            siteLayerShow: true,
            searchBjnr: ''
      policeInforValue: '',
      policeInforOptions: [
        {
          value: '',
          label: '全部'
        },
        {
          value: '盗窃',
          label: '盗窃'
        },
        {
          value: '涉诈',
          label: '涉诈'
        },
        {
          value: '纠纷',
          label: '纠纷'
        },
        {
          value: '涉赌',
          label: '涉赌'
        },
        {
          value: '涉毒',
          label: '涉毒'
        },
        {
          value: '涉黄',
          label: '涉黄'
        },
        {
          value: '求助',
          label: '求助'
        },
        {
          value: '其他',
          label: '其他'
        }
    },
      ],
    created () {
        const that = this
        this.$nextTick(() => {
            initMapPosition()
        })
        this.defaultDate()
        this.$EventBus.$on('PoliceInforSiteClick', (params) => {
            that.siteClick(params)
        })
        if (this.userInfo.dept_id != '1123598813738675201') {
            console.log(this.userInfo.dept_id)
            this.areaChangeShow = false
      areaChangeShow: true,
      areaChangeValue: '1123598813738675201',
      areaListData: [
        {
          label: '信州分局',
          value: '1123598813738675201'
        },
        {
          label: '东市派出所',
          value: '1596019492522426369'
        },
        {
          label: '水南派出所',
          value: '1596020272834936833'
        },
        {
          label: '西市派出所',
          value: '1596020342712041474'
        },
        {
          label: '北门派出所',
          value: '1596020390174785537'
        },
        {
          label: '车站派出所',
          value: '1596020461461176321'
        },
        {
          label: '茅家岭派出所',
          value: '1596020515064381442'
        },
        {
          label: '沙溪派出所',
          value: '1596020574275371010'
        },
        {
          label: '朝阳派出所',
          value: '1596020623172567041'
        },
        {
          label: '灵溪派出所',
          value: '1596020683096588290'
        },
        {
          label: '秦峰派出所',
          value: '1596020727883366401'
        },
        {
          label: '凤凰派出所',
          value: '1596020775790706690'
        },
        {
          label: '石狮派出所',
          value: '1614543582897971202'
        },
        {
          label: '大院派出所',
          value: '1614543698551709698'
        },
        {
          label: '师院派出所',
          value: '1614543791782699010'
        }
      ],
        window.addEventListener("mousemove", this.tableMouse)
      heatMap: null,
      heatMapShow: false,
      heatMapData: [],
      siteLayerShow: true,
      searchBjnr: ''
    }
  },
  created () {
    const that = this
    this.$nextTick(() => {
      initMapPosition()
    })
    this.defaultDate()
    this.$EventBus.$on('PoliceInforSiteClick', (params) => {
      that.siteClick(params)
    })
    if (this.userInfo.dept_id != '1123598813738675201') {
      console.log(this.userInfo.dept_id)
      this.areaChangeShow = false
    }
    window.addEventListener("mousemove", this.tableMouse)
  },
  mounted () {
    this.$parent.$parent.resize('400px', true)
    this.$nextTick(() => {
      policeInforSiteLayer = new global.DC.PrimitiveLayer('policeInforSiteLayer')
      global.viewer.addLayer(policeInforSiteLayer)
      this.$EventBus.$emit('closeMxTileset')
      this.navClick()
      this.setTableHeight()
    })
    window.addEventListener('resize', this.setTableHeight)
  },
  computed: {
    whetherPosition () {
      return (row) => {
        return !(row.ZDDWXZB && row.ZDDWXZB != 0 && row.ZDDWYZB && row.ZDDWYZB != 0 && row.ZDDWXZB > 73)
      }
    },
    mounted () {
        this.$parent.$parent.resize('400px', true)
        this.$nextTick(() => {
            policeInforSiteLayer = new global.DC.PrimitiveLayer('policeInforSiteLayer')
            global.viewer.addLayer(policeInforSiteLayer)
            this.$EventBus.$emit('closeMxTileset')
            this.navClick()
            this.setTableHeight()
        })
        window.addEventListener('resize', this.setTableHeight)
    },
    computed: {
        whetherPosition () {
            return (row) => {
                return !(row.ZDDWXZB && row.ZDDWXZB != 0 && row.ZDDWYZB && row.ZDDWYZB != 0 && row.ZDDWXZB > 73)
            }
        },
        positionColor () {
            return (row) => {
                if (row.ZDDWXZB && row.ZDDWXZB != 0 && row.ZDDWYZB && row.ZDDWYZB != 0 && row.ZDDWXZB > 73) {
                    return "#1AFA29"
                } else {
                    return "#ccc"
                }
            }
    positionColor () {
      return (row) => {
        if (row.ZDDWXZB && row.ZDDWXZB != 0 && row.ZDDWYZB && row.ZDDWYZB != 0 && row.ZDDWXZB > 73) {
          return "#1AFA29"
        } else {
          return "#ccc"
        }
    },
      }
    }
  },
    methods: {
        heatMapChange (e) {
            if (e) {
                this.heatMapData.length > 0 && this.addHeatmap(this.heatMapData)
            } else {
                if (this.heatMap != null) {
                    this.heatMap.show(false)
                }
            }
        },
        siteLayerChange (e) {
            e ? policeInforSiteLayer.show = true : policeInforSiteLayer.show = false
        },
        tableMouse (e) {
            this.currentPointerPosition = {
                x: e.clientX,
                y: e.clientY
            }
        },
        tableEnter (e) {
            this.currentBJNR = e.BJNR
            this.currentTooltip = true
        },
        tabelLeave (e) {
            console.log(e)
            this.currentTooltip = false
        },
        loading () {
            loading = this.$loading({
                lock: true,
                text: '拼命加载中',
                spinner: 'el-icon-loading',
                background: 'rgba(0, 0, 0, 0.5)'
            })
        },
        // 接出警切换
        alarmOrActAsPolice (type) {
            this.policeInformationType = type
            if (type == '出警信息') {
                this.CJdata = {}
                getActAsPoliceList(this.policeSituationDetailObj.JJDBH, this.userInfo.dept_id).then(res => {
                    if (res.data.data.records.length > 0) {
                        this.CJdata = res.data.data.records[0]
                    }
                })
            }
        },
        policeTypeChange () {
            this.navClick()
        },
        areaValueChange () {
            this.navClick()
        },
        // 搜索按钮
        bjnrSearch () {
            this.navClick()
        },
        // 设置默认时间
        defaultDate () {
            var current = new Date()
            var seven = new Date(current.getTime() - 7 * 24 * 60 * 60 * 1000)
            this.currentTime = [seven, current] //将值设置给插件绑定的数据
        },
        datePickerChange (e) {
            this.pages.current = 1
            const date = e.map(item => {
                return this.dateFormat(item)
            })
            this.getAlarmList({ start: date[0], end: date[1] })
        },
        /**
         * @description: 获取当前日期
         * @param {*} dateData
         * @return {*}
         */
        dateFormat (dateData) {
            var date = new Date(dateData)
            var y = date.getFullYear()
            var m = date.getMonth() + 1
            m = m < 10 ? ('0' + m) : m
            var d = date.getDate()
            d = d < 10 ? ('0' + d) : d
            const time = y + '-' + m + '-' + d
            return time
        },
        // 获取实时接警记录
        getAnswerPolices () {
            this.loading()
            this.realPoliceInforData = []
            this.realEmptyText = "  "
            getAnswerPolices({ deptId: this.userInfo.dept_id }).then(res => {
                if (res.data && res.data.length) {
                    this.realPoliceInforData = res.data.map((item, index) => {
                        if (item.JJDWMC.indexOf('上饶市公安局') != -1) item.JJDWMC = item.JJDWMC.replace(/上饶市公安局/, '市局')
                        if (item.JJDWMC.indexOf('信州区分局') != -1) item.JJDWMC = item.JJDWMC.replace(/信州区分局/, '')
                        if (item.JJDWMC.indexOf('信州') != -1) item.JJDWMC = item.JJDWMC.replace(/信州/, '')
                        return { ...item, index: index + 1, lng: item.ZDDWXZB, lat: item.ZDDWYZB }
                    })
                } else {
                    this.realPoliceInforData = []
                    this.realEmptyText = "暂无实时警情信息"
                }
                setTimeout(() => {
                    loading && loading.close()
                }, 500)
            }).catch(res => {
                this.realEmptyText = "暂无实时警情信息"
                setTimeout(() => {
                    loading && loading.close()
                }, 500)
            })
        },
        addHeatmap (data) {
            if (this.heatMap != null) {
                this.heatMap.show(false)
            }
            let bounds = {
                west: 117.9,
                south: 28.3,
                east: 118.2,
                north: 28.7
            }
            //初始化cesiumheatmap对象,传入相应的参数
            // eslint-disable-next-line no-undef
            let heatMap = CesiumHeatmap.create(
                global.viewer, // 视图层
                bounds, // 矩形坐标
                {
                    radius: 10,
                    maxOpacity: .5,
                    minOpacity: 0,
                    blur: .75
                }
            )
            let valueMin = 0
            let valueMax = 100
            // add data to heatmap
            //获取动态数据
            heatMap.setWGS84Data(valueMin, valueMax, data)
            this.heatMap = heatMap
        },
        // 获取历史接警记录(不分页)
        getAlarmList (params) {
            const that = this
            this.loading()
            this.clearLayer()
            this.historyPoliceInforData = []
            this.heatMapData = []
            this.historyEmptyText = ""
            if (this.heatMap != null) {
                this.heatMap.show(false)
            }
            let jjdwbh = ''
            if (this.userInfo.dept_id == '1123598813738675201') {
                jjdwbh = this.areaChangeValue
            } else {
                jjdwbh = this.userInfo.dept_id
            }
            that.$axios.all([
                getAlarmList({ ...params, jjdwbh, type: 3, bjlx: that.policeInforValue, bjnr: that.searchBjnr }),
                getAlarmList({ ...params, jjdwbh, type: 3, bjlx: '', bjnr: that.searchBjnr })
            ]).then(that.$axios.spread(function (classifyData, allData) {
                if (classifyData.data.data.length > 0) {
                    that.historyPoliceInforData = classifyData.data.data.map((item, index) => {
                        if (item.JJDWMC.indexOf('上饶市公安局') != -1) item.JJDWMC = item.JJDWMC.replace(/上饶市公安局/, '市局')
                        if (item.JJDWMC.indexOf('信州区分局') != -1) item.JJDWMC = item.JJDWMC.replace(/信州区分局/, '')
                        if (item.JJDWMC.indexOf('信州') != -1) item.JJDWMC = item.JJDWMC.replace(/信州/, '')
                        return { ...item, index: index + 1, lng: item.ZDDWXZB, lat: item.ZDDWYZB }
                    })
                } else {
                    // that.pages.total = 0
                    that.historyPoliceInforData = []
                    that.realEmptyText = "暂无历史警情信息"
                }
                if (allData.data.data.length > 0) {
                    allData.data.data.forEach((item, index) => {
                        if (item.ZDDWXZB && item.ZDDWXZB != '' && item.ZDDWXZB > 0 && item.ZDDWXZB > 73) {
                            that.heatMapData.push({ x: Number(item.ZDDWXZB), y: Number(item.ZDDWYZB), value: 23 })
                        }
                    })
                }
                if (that.siteLayerShow) {
                    that.addPoliceInforSiteLayer(that.historyPoliceInforData)
                }
                if (that.heatMapShow) {
                    that.heatMapData.length > 0 && that.addHeatmap(that.heatMapData)
                }
                setTimeout(() => {
                    loading && loading.close()
                }, 500)
            })).catch(res => {
                setTimeout(() => {
                    loading && loading.close()
                }, 500)
            })
        },
        addPoliceInforSiteLayer (data) {
            this.clearLayer()
            let policeInfoPositionList = []
            this.siteLayerShow = true
            data.forEach((item, index) => {
                let pointColor, pointOutlineColor
                switch (item.jqlxJointName) {
                    case '盗窃':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(57, 16, 133, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(57, 16, 133, 125)
                        break
                    case '涉诈':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(196, 29, 127, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(196, 29, 127, 125)
                        break
                    case '纠纷':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 120, 117, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 120, 117, 125)
                        break
                    case '涉赌':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 122, 69, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 122, 69, 125)
                        break
                    case '涉毒':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(47, 84, 235, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(47, 84, 235, 125)
                        break
                    case '涉黄':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 236, 61, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 236, 61, 125)
                        break
                    case '求助':
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(82, 196, 26, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(82, 196, 26, 125)
                        break
                    default:
                        pointColor = global.DC.Namespace.Cesium.Color.fromBytes(207, 19, 34, 255)
                        pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(207, 19, 34, 125)
                        break
                }
                if (item.lng && item.lng != undefined && item.lng != '') {
                    let center = new global.DC.Position(Number(item.lng), Number(item.lat))
                    let point = new global.DC.PointPrimitive(center)
                    policeInfoPositionList.push(center)
                    let num = 0
                    timer[index] = setInterval(() => {
                        num++
                        if (num >= 10) {
                            num = 0
                        }
                        point.setStyle({
                            outlineColor: pointOutlineColor,//边框颜色
                            outlineWidth: num,//边框大小,
                            color: pointColor
                        })
                    }, 100)
                    point.attrParams = item
                    point.on(global.DC.MouseEventType.CLICK, this.siteClick)
                    policeInforSiteLayer.addOverlay(point)
                }
            })
        },
        /**
         * @description: 警情闪烁点的点击事件
         * @param {*} e
         * @return {*}
         */
        siteClick (e) {
            if ('overlay' in e) {
                this.$store.commit('SET_DETAILSPOPUP', {
                    showBox: true,
                    showBtn: true,
                    openMenu: 'policeInfor'
                })
                this.$store.commit('SET_DATAPOPUP', e.overlay.attrParams)
                var popup = new global.DC.DivForms(global.viewer, {
                    domId: 'divFormsDomBox',
                    position: [
                        global.DC.Transform.transformWGS84ToCartesian(
                            new global.DC.Position(
                                Number(e.overlay.attrParams.lng),
                                Number(e.overlay.attrParams.lat),
                                0
                            )
                        )
                    ]
                })
            } else {
                this.policeSituationDetailObj = e
                this.policeInformationType = '接警信息'
                this.policeSituationVisible = true
            }
        },
        /**
         * @description: 清除图层
         * @return {*}
         */
        clearLayer () {
            for (let i = 0; i < timer.length; i++) {
                clearInterval(timer[i])
            }
            if (policeInforSiteLayer && policeInforSiteLayer != null && policeInforSiteLayer != undefined) {
                policeInforSiteLayer.clear()
            }
        },
        setTableHeight () {
            this.currentTableHeight = this.$refs.containerContent.offsetHeight - this.$refs.timeSelect.offsetHeight
        },
        /**
         * @description: 实时历史警情切换
         * @return {*}
         */
        async navClick () {
            const date = this.currentTime.map(item => {
                return this.dateFormat(item)
            })
            this.pages.current = 1
            await this.getAlarmList({
                start: date[0],
                end: date[1]
            })
            this.$nextTick(() => {
                this.setTableHeight()
            })
        },
        /**
         * @description: 警情列表点击事件
         * @param {*} item
         * @return {*}
         */
        clickData (item) {
            if (item.ZDDWXZB && item.ZDDWXZB != 0 && item.ZDDWYZB && item.ZDDWYZB != 0) {
                this.$EventBus.$emit('toPosition', {
                    siteJd: Number(item.ZDDWXZB),
                    siteWd: Number(item.ZDDWYZB)
                })
                this.$store.commit('SET_DETAILSPOPUP', {
                    showBox: true,
                    showBtn: true,
                    openMenu: 'policeInfor'
                })
                this.$store.commit('SET_DATAPOPUP', item)
                var popup = new global.DC.DivForms(global.viewer, {
                    domId: 'divFormsDomBox',
                    position: [
                        global.DC.Transform.transformWGS84ToCartesian(
                            new global.DC.Position(
                                Number(item.ZDDWXZB),
                                Number(item.ZDDWYZB),
                                0
                            )
                        )
                    ]
                })
            } else {
                this.siteClick(item)
            }
        },
        // 大小重置
        boxResize (val) {
            this.boxShow = val
        },
    },
    destroyed () {
        loading && loading.close()
  methods: {
    heatMapChange (e) {
      if (e) {
        this.heatMapData.length > 0 && this.addHeatmap(this.heatMapData)
      } else {
        if (this.heatMap != null) {
            this.heatMap.show(false)
          this.heatMap.show(false)
        }
      }
    },
    siteLayerChange (e) {
      e ? policeInforSiteLayer.show = true : policeInforSiteLayer.show = false
    },
    tableMouse (e) {
      this.currentPointerPosition = {
        x: e.clientX,
        y: e.clientY
      }
    },
    tableEnter (e) {
      this.currentBJNR = e.BJNR
      this.currentTooltip = true
    },
    tabelLeave (e) {
      console.log(e)
      this.currentTooltip = false
    },
    loading () {
      loading = this.$loading({
        lock: true,
        text: '拼命加载中',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.5)'
      })
    },
    policeTypeChange () {
      this.navClick()
    },
    areaValueChange () {
      this.navClick()
    },
    // 搜索按钮
    bjnrSearch () {
      this.navClick()
    },
    // 设置默认时间
    defaultDate () {
      var current = new Date()
      var seven = new Date(current.getTime() - 7 * 24 * 60 * 60 * 1000)
      this.currentTime = [seven, current] //将值设置给插件绑定的数据
    },
    datePickerChange (e) {
      this.pages.current = 1
      const date = e.map(item => {
        return this.dateFormat(item)
      })
      this.getAlarmList({ start: date[0], end: date[1] })
    },
    /**
     * @description: 获取当前日期
     * @param {*} dateData
     * @return {*}
     */
    dateFormat (dateData) {
      var date = new Date(dateData)
      var y = date.getFullYear()
      var m = date.getMonth() + 1
      m = m < 10 ? ('0' + m) : m
      var d = date.getDate()
      d = d < 10 ? ('0' + d) : d
      const time = y + '-' + m + '-' + d
      return time
    },
    // 获取实时接警记录
    getAnswerPolices () {
      this.loading()
      this.realPoliceInforData = []
      this.realEmptyText = "  "
      getAnswerPolices({ deptId: this.userInfo.dept_id }).then(res => {
        if (res.data && res.data.length) {
          this.realPoliceInforData = res.data.map((item, index) => {
            if (item.JJDWMC.indexOf('上饶市公安局') != -1) item.JJDWMC = item.JJDWMC.replace(/上饶市公安局/, '市局')
            if (item.JJDWMC.indexOf('信州区分局') != -1) item.JJDWMC = item.JJDWMC.replace(/信州区分局/, '')
            if (item.JJDWMC.indexOf('信州') != -1) item.JJDWMC = item.JJDWMC.replace(/信州/, '')
            return { ...item, index: index + 1, lng: item.ZDDWXZB, lat: item.ZDDWYZB }
          })
        } else {
          this.realPoliceInforData = []
          this.realEmptyText = "暂无实时警情信息"
        }
        setTimeout(() => {
          loading && loading.close()
        }, 500)
      }).catch(res => {
        this.realEmptyText = "暂无实时警情信息"
        setTimeout(() => {
          loading && loading.close()
        }, 500)
      })
    },
        window.removeEventListener('resize', this.setTableHeight)
    addHeatmap (data) {
      if (this.heatMap != null) {
        this.heatMap.show(false)
      }
        policeInforSiteLayer != null && policeInforSiteLayer.remove()
      let bounds = {
        west: 117.9,
        south: 28.3,
        east: 118.2,
        north: 28.7
      }
      //初始化cesiumheatmap对象,传入相应的参数
      // eslint-disable-next-line no-undef
      let heatMap = CesiumHeatmap.create(
        global.viewer, // 视图层
        bounds, // 矩形坐标
        {
          radius: 10,
          maxOpacity: .5,
          minOpacity: 0,
          blur: .75
        }
      )
      let valueMin = 0
      let valueMax = 100
      // add data to heatmap
      //获取动态数据
      heatMap.setWGS84Data(valueMin, valueMax, data)
      this.heatMap = heatMap
    },
    // 获取历史接警记录(不分页)
    getAlarmList (params) {
      const that = this
      this.loading()
      this.clearLayer()
      this.historyPoliceInforData = []
      this.heatMapData = []
      this.historyEmptyText = ""
      if (this.heatMap != null) {
        this.heatMap.show(false)
      }
      let jjdwbh = ''
      if (this.userInfo.dept_id == '1123598813738675201') {
        jjdwbh = this.areaChangeValue
      } else {
        jjdwbh = this.userInfo.dept_id
      }
      that.$axios.all([
        getAlarmList({ ...params, jjdwbh, type: 3, bjlx: that.policeInforValue, bjnr: that.searchBjnr }),
        getAlarmList({ ...params, jjdwbh, type: 3, bjlx: '', bjnr: that.searchBjnr })
      ]).then(that.$axios.spread(function (classifyData, allData) {
        if (classifyData.data.data.length > 0) {
          that.historyPoliceInforData = classifyData.data.data.map((item, index) => {
            if (item.JJDWMC.indexOf('上饶市公安局') != -1) item.JJDWMC = item.JJDWMC.replace(/上饶市公安局/, '市局')
            if (item.JJDWMC.indexOf('信州区分局') != -1) item.JJDWMC = item.JJDWMC.replace(/信州区分局/, '')
            if (item.JJDWMC.indexOf('信州') != -1) item.JJDWMC = item.JJDWMC.replace(/信州/, '')
            return { ...item, index: index + 1, lng: item.ZDDWXZB, lat: item.ZDDWYZB }
          })
        } else {
          // that.pages.total = 0
          that.historyPoliceInforData = []
          that.realEmptyText = "暂无历史警情信息"
        }
        if (allData.data.data.length > 0) {
          allData.data.data.forEach((item, index) => {
            if (item.ZDDWXZB && item.ZDDWXZB != '' && item.ZDDWXZB > 0 && item.ZDDWXZB > 73) {
              that.heatMapData.push({ x: Number(item.ZDDWXZB), y: Number(item.ZDDWYZB), value: 23 })
            }
          })
        }
        if (that.siteLayerShow) {
          that.addPoliceInforSiteLayer(that.historyPoliceInforData)
        }
        if (that.heatMapShow) {
          that.heatMapData.length > 0 && that.addHeatmap(that.heatMapData)
        }
        setTimeout(() => {
          loading && loading.close()
        }, 500)
      })).catch(res => {
        setTimeout(() => {
          loading && loading.close()
        }, 500)
      })
    },
    addPoliceInforSiteLayer (data) {
      this.clearLayer()
      let policeInfoPositionList = []
      this.siteLayerShow = true
      data.forEach((item, index) => {
        let pointColor, pointOutlineColor
        switch (item.jqlxJointName) {
          case '盗窃':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(57, 16, 133, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(57, 16, 133, 125)
            break
          case '涉诈':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(196, 29, 127, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(196, 29, 127, 125)
            break
          case '纠纷':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 120, 117, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 120, 117, 125)
            break
          case '涉赌':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 122, 69, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 122, 69, 125)
            break
          case '涉毒':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(47, 84, 235, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(47, 84, 235, 125)
            break
          case '涉黄':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 236, 61, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(255, 236, 61, 125)
            break
          case '求助':
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(82, 196, 26, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(82, 196, 26, 125)
            break
          default:
            pointColor = global.DC.Namespace.Cesium.Color.fromBytes(207, 19, 34, 255)
            pointOutlineColor = global.DC.Namespace.Cesium.Color.fromBytes(207, 19, 34, 125)
            break
        }
        if (item.lng && item.lng != undefined && item.lng != '') {
          let center = new global.DC.Position(Number(item.lng), Number(item.lat))
          let point = new global.DC.PointPrimitive(center)
          policeInfoPositionList.push(center)
          let num = 0
          timer[index] = setInterval(() => {
            num++
            if (num >= 10) {
              num = 0
            }
            point.setStyle({
              outlineColor: pointOutlineColor,//边框颜色
              outlineWidth: num,//边框大小,
              color: pointColor
            })
          }, 100)
          point.attrParams = item
          point.on(global.DC.MouseEventType.CLICK, this.siteClick)
          policeInforSiteLayer.addOverlay(point)
        }
      })
    },
    /**
     * @description: 警情闪烁点的点击事件
     * @param {*} e
     * @return {*}
     */
    siteClick (e) {
      if ('overlay' in e) {
        this.$store.commit('SET_DETAILSPOPUP', {
          showBox: true,
          showBtn: true,
          openMenu: 'policeInfor'
        })
        this.$store.commit('SET_DATAPOPUP', e.overlay.attrParams)
        var popup = new global.DC.DivForms(global.viewer, {
          domId: 'divFormsDomBox',
          position: [
            global.DC.Transform.transformWGS84ToCartesian(
              new global.DC.Position(
                Number(e.overlay.attrParams.lng),
                Number(e.overlay.attrParams.lat),
                0
              )
            )
          ]
        })
      } else {
        this.$refs.policeInforDialog.initOpen(e)
      }
    },
    /**
     * @description: 清除图层
     * @return {*}
     */
    clearLayer () {
      for (let i = 0; i < timer.length; i++) {
        clearInterval(timer[i])
      }
      if (policeInforSiteLayer && policeInforSiteLayer != null && policeInforSiteLayer != undefined) {
        policeInforSiteLayer.clear()
      }
    },
    setTableHeight () {
      this.currentTableHeight = this.$refs.containerContent.offsetHeight - this.$refs.timeSelect.offsetHeight
    },
    /**
     * @description: 实时历史警情切换
     * @return {*}
     */
    async navClick () {
      const date = this.currentTime.map(item => {
        return this.dateFormat(item)
      })
      this.pages.current = 1
      await this.getAlarmList({
        start: date[0],
        end: date[1]
      })
      this.$nextTick(() => {
        this.setTableHeight()
      })
    },
    /**
     * @description: 警情列表点击事件
     * @param {*} item
     * @return {*}
     */
    clickData (item) {
      if (item.ZDDWXZB && item.ZDDWXZB != 0 && item.ZDDWYZB && item.ZDDWYZB != 0) {
        this.$EventBus.$emit('toPosition', {
          siteJd: Number(item.ZDDWXZB),
          siteWd: Number(item.ZDDWYZB)
        })
        this.$store.commit('SET_DETAILSPOPUP', {
            showBox: false,
            showBtn: false,
            openMenu: ''
          showBox: true,
          showBtn: true,
          openMenu: 'policeInfor'
        })
        for (let i = 0; i < timer.length; i++) {
            clearInterval(timer[i])
        }
        this.$store.commit('SET_DATAPOPUP', item)
        this.$parent.$parent.resize('0px')
        var popup = new global.DC.DivForms(global.viewer, {
          domId: 'divFormsDomBox',
          position: [
            global.DC.Transform.transformWGS84ToCartesian(
              new global.DC.Position(
                Number(item.ZDDWXZB),
                Number(item.ZDDWYZB),
                0
              )
            )
          ]
        })
      } else {
        this.siteClick(item)
      }
    },
        this.$EventBus.$off('PoliceInforSiteClick')
    // 大小重置
    boxResize (val) {
      this.boxShow = val
    },
  },
  destroyed () {
    loading && loading.close()
    if (this.heatMap != null) {
      this.heatMap.show(false)
    }
    window.removeEventListener('resize', this.setTableHeight)
    policeInforSiteLayer != null && policeInforSiteLayer.remove()
    this.$store.commit('SET_DETAILSPOPUP', {
      showBox: false,
      showBtn: false,
      openMenu: ''
    })
    for (let i = 0; i < timer.length; i++) {
      clearInterval(timer[i])
    }
    this.$parent.$parent.resize('0px')
    this.$EventBus.$off('PoliceInforSiteClick')
  }
}
</script>
<style scoped lang="scss">
.container {
    position: relative;
  position: relative;
  width: 100%;
  height: 100%;
  &-content {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    color: #fff;
    background: $bg-color;
  }
    &-content {
        display: flex;
        flex-direction: column;
        width: 100%;
        height: 100%;
        color: #fff;
        background: $bg-color;
    }
  .cur-tooltip {
    padding: 10px;
    position: fixed;
    top: 0;
    left: 0;
    .cur-tooltip {
        padding: 10px;
        position: fixed;
        top: 0;
        left: 0;
    max-width: 320px;
        max-width: 320px;
    transform: translate(2%, -50%);
    z-index: 9999;
        transform: translate(2%, -50%);
        z-index: 9999;
        color: #fff;
        background: rgba(35, 50, 167, 0.7);
        border-radius: 10px;
    }
    color: #fff;
    background: rgba(35, 50, 167, 0.7);
    border-radius: 10px;
  }
}
</style>