vBottomMenu.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982
  1. <template>
  2. <div class="btm-box">
  3. <img class="light" src="../assets/images/integrated/btm-light.png"/>
  4. <div class="btm-left" :class="btmTipIndent">
  5. <div class="btm-left-tip">
  6. <div class="btm-left-block btm-left-state-c1"></div>
  7. 新上报
  8. </div>
  9. <div class="btm-left-tip">
  10. <div class="btm-left-block btm-left-state-c2"></div>
  11. 催办
  12. </div>
  13. <div class="btm-left-tip">
  14. <div class="btm-left-block btm-left-state-c3"></div>
  15. 已签收
  16. </div>
  17. <!-- div class="btm-left-tip">
  18. <div class="btm-left-block btm-left-state-c4"></div>
  19. 联动
  20. </div> -->
  21. <div class="btm-left-tip">
  22. <div class="btm-left-block btm-left-state-c5"></div>
  23. 办结
  24. </div>
  25. <div class="btm-left-tip">
  26. <div class="btm-left-block btm-left-state-c6"></div>
  27. 归档
  28. </div>
  29. <div class="btm-legend" @click="btmIndent">
  30. <span>图例</span>
  31. <i class="el-icon-caret-right" v-if="this.btmTipIndent !== 'btm-tip-to-right'"></i>
  32. <i class="el-icon-caret-left" v-if="this.btmTipIndent == 'btm-tip-to-right'"></i>
  33. </div>
  34. </div>
  35. <div class="bottom-menu-normal">
  36. <div v-for="(fastMenu,index) in fastMenu" :key="index" class="btm-m-con"
  37. @click.stop="showDialog(fastMenu.click)">
  38. <a><i :class="fastMenu.icon"></i>{{ fastMenu.name }}
  39. <div v-if="showChild && fastMenu.click == 'layerSwitching'" class="nav-child">
  40. <el-button type="primary"
  41. @click.stop="choseLayerSwitching('http://218.27.1.154:8090/iserver/services/map-sipingshi/rest/maps/tiedong_lunkuo',true)"
  42. class="nav-child-btn" plain>铁东
  43. </el-button>
  44. <el-button type="primary"
  45. @click.stop="choseLayerSwitching('http://218.27.1.154:8090/iserver/services/map-sipingshi/rest/maps/tiexi_lunkuo',true)"
  46. class="nav-child-btn" plain>铁西
  47. </el-button>
  48. <!-- <el-button type="danger" icon="el-icon-close" style="position: absolute;right: 0;top: 0;width: 1rem;height: 1rem;padding:0;"
  49. @click.stop="closeChild"></el-button> -->
  50. </div>
  51. <!-- 林斑 -->
  52. <div v-if="showBanChild && fastMenu.click == 'forestban'" class="nav-child">
  53. <div class="forestban">
  54. <div class="forestban-con">
  55. <el-tree :data="deptOptionsLiandong" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  56. </div>
  57. <div class="forestban-right">
  58. <el-input placeholder="请输入内容" prefix-icon="el-icon-search" v-model="searchFB">
  59. </el-input>
  60. <el-checkbox-group v-model="banCheckList" @change="handleCheckedCitiesChangeBan">
  61. <el-checkbox label="http://218.27.1.154:8090/iserver/services/map-sipingshi/rest/maps/tiedong_lunkuo">
  62. 铁东
  63. </el-checkbox>
  64. <el-checkbox label="http://218.27.1.154:8090/iserver/services/map-sipingshi/rest/maps/tiexi_lunkuo">
  65. 铁西
  66. </el-checkbox>
  67. </el-checkbox-group>
  68. </div>
  69. <el-button type="danger" icon="el-icon-close"
  70. style="position: absolute;right: 0;top: 0;width: 1rem;height: 1rem;padding:0;"
  71. @click.stop="closeBanChild"></el-button>
  72. </div>
  73. </div>
  74. <!-- 林场 -->
  75. <div v-if="showChangChild && fastMenu.click == 'forestchang'" class="nav-child">
  76. <div class="forestban">
  77. <div class="forestban-con">
  78. <el-tree :data="deptOptionsLiandong" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  79. </div>
  80. <div class="forestban-right">
  81. <el-input placeholder="请输入内容" prefix-icon="el-icon-search" v-model="searchFB">
  82. </el-input>
  83. <el-checkbox-group v-model="changCheckList" @change="handleCheckedCitiesChangeChang">
  84. <el-checkbox label="http://218.27.1.154:8090/iserver/services/map-sipingshi/rest/maps/tiedong_lunkuo">
  85. 铁东
  86. </el-checkbox>
  87. <el-checkbox label="http://218.27.1.154:8090/iserver/services/map-sipingshi/rest/maps/tiexi_lunkuo">
  88. 铁西
  89. </el-checkbox>
  90. </el-checkbox-group>
  91. </div>
  92. <el-button type="danger" icon="el-icon-close"
  93. style="position: absolute;right: 0;top: 0;width: 1rem;height: 1rem;padding:0;"
  94. @click.stop="closeChangChild"></el-button>
  95. </div>
  96. </div>
  97. </a>
  98. </div>
  99. </div>
  100. <div class="btm-right">
  101. <el-popover placement="top" trigger="click">
  102. <div class="btm-r-pop-info">
  103. <div class="btm-r-pop-info-box" v-for="(item,index) in taskList">
  104. <div class="btm-r-pop-info-tit">
  105. <h3>{{ item.taskSourceValue }}</h3>
  106. </div>
  107. <div class="btm-r-pop-info-con">
  108. <div class="btm-r-pop-info-list">
  109. <div class="btm-r-pop-info-list-name">标题</div>
  110. <div class="btm-r-pop-info-list-text">{{ item.taskTitle }}</div>
  111. </div>
  112. <div class="btm-r-pop-info-list">
  113. <div class="btm-r-pop-info-list-name">发起人</div>
  114. <div class="btm-r-pop-info-list-text">{{ item.sendPersonName }}</div>
  115. </div>
  116. <div class="btm-r-pop-info-list">
  117. <div class="btm-r-pop-info-list-name">发起时间</div>
  118. <div class="btm-r-pop-info-list-text">{{ item.taskSendTime }}</div>
  119. </div>
  120. <div class="btm-r-pop-info-list">
  121. <div class="btm-r-pop-info-list-name">关联事件</div>
  122. <div class="btm-r-pop-info-list-text">{{ item.eventName }}</div>
  123. </div>
  124. <div class="btm-r-pop-info-list">
  125. <div class="btm-r-pop-info-list-name">催办状态</div>
  126. <div class="btm-r-pop-info-list-text" v-if="item.isUrged==1">已催办</div>
  127. <div class="btm-r-pop-info-list-text" v-else>未催办</div>
  128. </div>
  129. </div>
  130. <div class="btm-r-pop-info-btm">
  131. <el-link type="success" @click="showEventDialog( item.eventCode )">查看详情</el-link>
  132. <div class="btm-r-pop-info-btm-btn">
  133. <el-button type="danger" @click="selectTaskDtpts(item.taskId,item.eventCode,'jj')">拒绝</el-button>
  134. <el-button type="primary" @click="selectTaskDtpts(item.taskId,item.eventCode,'lq')">领取</el-button>
  135. </div>
  136. </div>
  137. </div>
  138. </div>
  139. <el-badge :value="taskCount" slot="reference">
  140. <el-button size="small" icon="el-icon-bank-card" @click="refreshTaskList">任务</el-button>
  141. </el-badge>
  142. </el-popover>
  143. <el-popover placement="top" trigger="click">
  144. <div class="btm-r-pop-info">
  145. <div class="btm-r-pop-info-box" v-for="(item,index) in 0">
  146. <div class="btm-r-pop-info-tit">
  147. <h3>火险任务</h3>
  148. </div>
  149. <div class="btm-r-pop-info-con">
  150. <div class="btm-r-pop-info-list">
  151. <div class="btm-r-pop-info-list-name">标题</div>
  152. <div class="btm-r-pop-info-list-text">四平阿斯利康大姐夫啊路上的风景可丽金啊水电分离家</div>
  153. </div>
  154. <div class="btm-r-pop-info-list">
  155. <div class="btm-r-pop-info-list-name">发起人</div>
  156. <div class="btm-r-pop-info-list-text">张三</div>
  157. </div>
  158. <div class="btm-r-pop-info-list">
  159. <div class="btm-r-pop-info-list-name">发起时间</div>
  160. <div class="btm-r-pop-info-list-text">2022-09-05 12:12:15</div>
  161. </div>
  162. <div class="btm-r-pop-info-list">
  163. <div class="btm-r-pop-info-list-name">关联事件</div>
  164. <div class="btm-r-pop-info-list-text">啊萨杜拉副科级啊萨杜拉副科级</div>
  165. </div>
  166. </div>
  167. <div class="btm-r-pop-info-btm">
  168. <el-link type="success">查看详情</el-link>
  169. <div class="btm-r-pop-info-btm-btn">
  170. <el-button type="danger">拒绝</el-button>
  171. <el-button type="primary">领取</el-button>
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. <el-badge :value="0" slot="reference">
  177. <el-button size="small" icon="el-icon-chat-line-round">消息</el-button>
  178. </el-badge>
  179. </el-popover>
  180. <el-badge type="primary">
  181. <el-button size="small" icon="el-icon-bell">警报</el-button>
  182. </el-badge>
  183. <el-badge type="warning">
  184. <el-button size="small" icon="el-icon-refresh-right" @click="refresh">刷新</el-button>
  185. </el-badge>
  186. </div>
  187. <!-- 事件详情弹层 -->
  188. <el-dialog title="事件详情" :visible.sync="eventDialog" v-if="eventDialog" width="95%" append-to-body
  189. @close="cancelEventShow()">
  190. <div class="dia-event-info">
  191. <el-row>
  192. <!-- 左侧 -->
  193. <el-col :span="18" class="dia-left">
  194. <div ref="imageTofile" style="height: 75vh;">
  195. <!-- 应急预案 -->
  196. <div class="dia-left-top">
  197. <div class="dia-left-top-tit">应急预案</div>
  198. <div class="dia-left-top-carousel">
  199. <el-carousel height="30px" direction="vertical" :interval="2000">
  200. <el-carousel-item v-if="visuForestCloudYuAnBo!=null">
  201. <a :href="visuForestCloudYuAnBo.fileUrl">{{ visuForestCloudYuAnBo.reserveName }}</a>
  202. </el-carousel-item>
  203. <el-carousel-item v-else>
  204. <a href="#">未选预案</a>
  205. </el-carousel-item>
  206. </el-carousel>
  207. </div>
  208. </div>
  209. <!-- 应急预案end -->
  210. <!-- 地图 -->
  211. <supermapTaskDialog ref="supermapTaskDialog"
  212. style="position: absolute; top:0;left: 0;"
  213. :mapDiv="'taskDialogSuperMap'"
  214. :mapSite="{zoom:12,doubleClickZoom:false,dragging:false,scrollWheelZoom:false}"
  215. :codes="['9fa5']"
  216. :isSideBySide="false"
  217. :isdynamicPlotting="false"/>
  218. <!-- 地图end -->
  219. </div>
  220. </el-col>
  221. <!-- 左侧end -->
  222. <!-- 右侧 -->
  223. <el-col :span="6" class="dia-right">
  224. <div class="e-right" style="height: 75vh;!important;">
  225. <div class="forthis" style="height: 75vh;!important;">
  226. <dv-border-box-7 backgroundColor="#040b1f" :color="['#25335d', '#5baffd']"
  227. style="padding-bottom:1rem ;height: 75vh;!important;">
  228. <div class="i-list-con" style="height: 75vh;!important;">
  229. <div class="this-con" style="height: 75vh;!important;">
  230. <div class="z-info-list" style="margin-top: 0;height: 75vh;!important;">
  231. <el-timeline style="height: 75vh;!important;">
  232. <el-timeline-item color="#2bacf7" :timestamp="item.createTime"
  233. placement="top" v-for="(item,index) in eventLogList">
  234. <el-card style="width: 40vh">
  235. <div class="z-info-list-con">
  236. <div class="user-and-time flex-d">
  237. <span>{{ item.createName }}</span>
  238. <span v-if="eventLogList.length - 1 == index&&address!=null&&address!=''"><i
  239. class="el-icon-location"></i> {{ address }}</span>
  240. </div>
  241. <div class="z-info">
  242. <div class="this-con-list-info">
  243. {{ item.logContent }}
  244. </div>
  245. <div>
  246. <el-image :src="itemfile.fileUrl" v-if="isAssetTypeAnImage(itemfile.fileUrl)"
  247. :preview-src-list="assetTypeAnImage(item.attachs)"
  248. style="width:3rem; height:3rem;margin: 2px;"
  249. v-for="(itemfile,index1) in item.fileVOs">
  250. </el-image>
  251. <br>
  252. <el-link :href="itemfile.fileUrl" :underline="false" target="_blank"
  253. v-for="(itemfile,index1) in item.fileVOs"
  254. v-if="!isAssetTypeAnImage(itemfile.fileUrl)">
  255. <span class="el-icon-document"> {{ itemfile.fileName }} </span>
  256. </el-link>
  257. </div>
  258. </div>
  259. </div>
  260. </el-card>
  261. </el-timeline-item>
  262. </el-timeline>
  263. </div>
  264. </div>
  265. </div>
  266. </dv-border-box-7>
  267. </div>
  268. <!-- <div class="forthis">-->
  269. <!-- <dv-border-box-7 backgroundColor="#040b1f" :color="['#25335d', '#5baffd']">-->
  270. <!-- <div class="i-list-con">-->
  271. <!-- <div class="this-con h-25 no-padding">-->
  272. <!-- <div class="z-info-list" style="margin-top: 0;">-->
  273. <!-- <div class="z-info-btm-grp">-->
  274. <!-- <div class="z-info-btm-grp-top">-->
  275. <!-- <div class="z-info-btm-grp-left">-->
  276. <!-- &lt;!&ndash; <el-button size="small" icon="el-icon-s-flag">责任制&ndash;&gt;-->
  277. <!-- &lt;!&ndash; </el-button>&ndash;&gt;-->
  278. <!-- <el-button size="small" icon="el-icon-upload" @click="showEventLogUpload()">上传-->
  279. <!-- </el-button>-->
  280. <!-- <el-button size="small" icon="el-icon-download" @click="toImage()">保存-->
  281. <!-- </el-button>-->
  282. <!-- </div>-->
  283. <!-- <div class="z-info-btm-grp-right">-->
  284. <!-- <el-button size="small" icon="el-icon-mic">会议-->
  285. <!-- </el-button>-->
  286. <!-- </div>-->
  287. <!-- </div>-->
  288. <!-- </div>-->
  289. <!-- </div>-->
  290. <!-- </div>-->
  291. <!-- </div>-->
  292. <!-- </dv-border-box-7>-->
  293. <!-- </div>-->
  294. </div>
  295. </el-col>
  296. <!-- 左侧end -->
  297. </el-row>
  298. </div>
  299. </el-dialog>
  300. <!-- 任务选择领取部门弹层 -->
  301. <el-dialog title="选择部门" :visible.sync="showDeptConfirm" v-if="showDeptConfirm" width="30%" append-to-body
  302. @close="cancelEventConfirm()">
  303. <el-form label-width="80px">
  304. <el-form-item label="选择部门">
  305. <el-select v-model="deptName" multiple placeholder="请选择部门" class="m-r-1rem" @change="setValue">
  306. <el-option
  307. v-for="item in deptOptions"
  308. :key="item.taskDeptId"
  309. :label="item.taskDeptName"
  310. :value="{value:item.taskDeptId,label:item.taskDeptName}">
  311. <!--:disabled="item.eventStatus=='未处理' ? false:true"-->
  312. </el-option>
  313. </el-select>
  314. </el-form-item>
  315. <el-button size="mini" type="primary" v-if="taskStatusButton=='lq'"
  316. @click="receiveTask(taskId,eventCode)">领取
  317. </el-button>
  318. <el-button size="mini" type="primary" v-if="taskStatusButton=='jj'"
  319. @click="refusedTask(taskId,eventCode)">拒绝
  320. </el-button>
  321. </el-form>
  322. </el-dialog>
  323. </div>
  324. </template>
  325. <script>
  326. import {
  327. selectTaskBO, getEventDetail, selectTaskDtpts, receiveTask, refusedTask
  328. } from '@/api/forest'
  329. import {
  330. treeselectAll as deptTreeselect
  331. } from '@/api/system/dept'
  332. import supermapTaskDialog from '@/components/supermap' //超图
  333. export default {
  334. components: {
  335. supermapTaskDialog
  336. },
  337. data() {
  338. return {
  339. eventId: null,
  340. eventCode: null,
  341. longitude: null,
  342. latitude: null,
  343. eventLogList: [],//事件详情日志
  344. eventDialog: false,//事件详情弹层
  345. taskStatusButton: null,//任务按钮
  346. visuForestCloudYuAnBo: null,
  347. address:null,//事件上报地址
  348. taskId: null,//任务ID
  349. showDeptConfirm: false,//任务领取选择部门弹窗
  350. deptOptions: [],//任务领取部门列表
  351. centerTaskTaskDepts: [],//任务领取部门
  352. deptName: [],//任务领取部门
  353. taskCount: 0,//任务数量
  354. taskList: 0,//任务列表
  355. btmTipIndent: '', //图例收起弹出
  356. eventLocationVisible: false,
  357. showChild: false,
  358. showBanChild: false, //林斑
  359. showChangChild: false, //林场
  360. fastMenu: [
  361. {
  362. name: '事件定位',
  363. icon: 'iconfont sj-icon-sjdw',
  364. click: 'eventLocation'
  365. },
  366. {
  367. name: '图层切换',
  368. icon: 'iconfont sj-icon-tcqh',
  369. click: 'layerSwitching'
  370. },
  371. {
  372. name: '测量工具',
  373. icon: 'iconfont sj-icon-clgj',
  374. click: 'editableLayers'
  375. },
  376. {
  377. name: '林班',
  378. icon: 'iconfont sj-icon-lbzy',
  379. click: 'forestban'
  380. },
  381. {
  382. name: '林场',
  383. icon: 'iconfont sj-icon-lczy',
  384. click: 'forestchang'
  385. },
  386. {
  387. name: '电视墙',
  388. icon: 'el-icon-s-grid',
  389. click: 'TVWall'
  390. }
  391. ],
  392. deptOptionsLiandong:[],
  393. data: [
  394. {
  395. label: '一级 1',
  396. children: [{
  397. label: '二级 1-1',
  398. children: [{
  399. label: '三级 1-1-1'
  400. }]
  401. }]
  402. }, {
  403. label: '一级 2',
  404. children: [{
  405. label: '二级 2-1',
  406. children: [{
  407. label: '三级 2-1-1'
  408. }]
  409. }, {
  410. label: '二级 2-2',
  411. children: [{
  412. label: '三级 2-2-1'
  413. }]
  414. }]
  415. }, {
  416. label: '一级 3',
  417. children: [{
  418. label: '二级 3-1',
  419. children: [{
  420. label: '三级 3-1-1'
  421. }]
  422. }, {
  423. label: '二级 3-2',
  424. children: [{
  425. label: '三级 3-2-1'
  426. }]
  427. }]
  428. }],
  429. defaultProps: {
  430. children: 'children',
  431. label: 'label'
  432. },
  433. banCheckList: [], //林班
  434. changCheckList: [], //林场
  435. searchFB: '',
  436. btmCurrent: ''
  437. }
  438. },
  439. created() {
  440. /** 查询部门树结构 */
  441. deptTreeselect().then(response => {
  442. this.deptOptionsLiandong = response.data
  443. })
  444. },
  445. methods: {
  446. // 返回图片列表
  447. assetTypeAnImage(filePath) {
  448. let imageList=[]
  449. if(filePath!=null&&filePath.length>0){
  450. for (let i = 0; i < filePath.length; i++) {
  451. //获取最后一个.的位置
  452. var index = filePath[i].lastIndexOf('.')
  453. //获取后缀
  454. var ext = filePath[i].substr(index + 1)
  455. let aa = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff'].indexOf(ext.toLowerCase()) !== -1
  456. if(aa){
  457. imageList.push(filePath[i])
  458. }
  459. }
  460. }
  461. return imageList
  462. },
  463. // 判断是否为图片
  464. isAssetTypeAnImage(filePath) {
  465. //获取最后一个.的位置
  466. var index = filePath.lastIndexOf('.')
  467. //获取后缀
  468. var ext = filePath.substr(index + 1)
  469. let aa = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff'].indexOf(ext.toLowerCase()) !== -1
  470. return aa
  471. },
  472. // 获取文件名称
  473. getFileName(name) {
  474. if (name.lastIndexOf('/') > -1) {
  475. return name.slice(name.lastIndexOf('/') + 1)
  476. } else {
  477. return ''
  478. }
  479. },
  480. setValue(event) {
  481. this.centerTaskTaskDepts = []
  482. //签收选择部门
  483. if (event != null && event.length > 0) {
  484. for (let i = 0; i < event.length; i++) {
  485. if (event[i].label != undefined && event[i].value != undefined) {
  486. this.centerTaskTaskDepts.push({ taskDeptId: event[i].value, taskDeptName: event[i].label })
  487. }
  488. }
  489. }
  490. },
  491. receiveTask(taskId,eventCode) {
  492. let param = { taskId: taskId,eventCode: eventCode, centerTaskTaskDepts: this.centerTaskTaskDepts }
  493. receiveTask(param).then(res => {
  494. //任务领取
  495. if (res.code == 200) {
  496. this.$message.success(`任务领取成功!`)
  497. this.deptOptions = []
  498. this.deptName = []
  499. this.centerTaskTaskDepts = []
  500. //刷新任务列表
  501. this.selectTaskList()
  502. this.showDeptConfirm = false
  503. }
  504. })
  505. },
  506. refusedTask(taskId,eventCode) {
  507. let param = { taskId: taskId,eventCode: eventCode, centerTaskTaskDepts: this.centerTaskTaskDepts }
  508. refusedTask(param).then(res => {
  509. //任务拒绝
  510. if (res.code == 200) {
  511. this.$message.success(`任务拒绝成功!`)
  512. this.deptOptions = []
  513. this.deptName = []
  514. this.centerTaskTaskDepts = []
  515. //刷新任务列表
  516. this.selectTaskList()
  517. this.showDeptConfirm = false
  518. }
  519. })
  520. },
  521. selectTaskDtpts(taskId,eventCode, state) {
  522. this.taskId = taskId
  523. this.eventCode = eventCode
  524. selectTaskDtpts({ taskId: taskId }).then(res => {
  525. //任务领取部门列表
  526. if (res.code == 200) {
  527. this.deptOptions = res.data
  528. this.taskStatusButton = state
  529. this.showDeptConfirm = true
  530. }
  531. })
  532. },
  533. cancelEventShow() {
  534. console.log('关闭事件弹窗')
  535. this.eventCode=null
  536. this.eventLogList = []
  537. },
  538. cancelEventConfirm() {
  539. console.log('关闭任务选择部门')
  540. this.eventCode=null
  541. this.deptOptions = []
  542. this.deptName = []
  543. this.centerTaskTaskDepts = []
  544. },
  545. showEventDialog(eventCode) {
  546. this.eventCode = eventCode
  547. let that = this
  548. //获取事件详情
  549. getEventDetail({ eventCode: eventCode }).then(res => {
  550. this.eventDialog = true
  551. this.eventLogList = res.data.eventlog
  552. this.visuForestCloudYuAnBo = res.data.visuForestCloudYuAnBo//应急预案
  553. if (res.data.catalogue != null && res.data.catalogue.length > 0) {
  554. this.address = res.data.catalogue[0].address
  555. this.eventType = res.data.catalogue[0].eventType
  556. this.eventId = res.data.catalogue[0].id
  557. this.longitude = res.data.catalogue[0].longitude
  558. this.latitude = res.data.catalogue[0].latitude
  559. let markersMap = {
  560. lng: 124.59,
  561. lat: 43.02,
  562. icon: 'marker',
  563. bindPopupHtml: '',
  564. click: '',
  565. parameter: '',
  566. keepBindPopup: false,
  567. isAggregation: false,
  568. radius: 0
  569. }
  570. if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_1'&&res.data.catalogue[0].urgeCount==0) {
  571. markersMap.icon = 'sj-icon-map-xinshangbao'
  572. }if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_1'&&res.data.catalogue[0].urgeCount>0) {
  573. markersMap.icon = 'sj-icon-map-cuiban'
  574. } else if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_2') {
  575. markersMap.icon = 'sj-icon-map-qianshou'
  576. }else if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_5') {
  577. markersMap.icon = 'sj-icon-map-banjie'
  578. } else if (res.data.catalogue[0].eventStatusValue == 'forest_event_status_6') {
  579. markersMap.icon = 'sj-icon-map-guidnag'
  580. }
  581. markersMap.lng = res.data.catalogue[0].longitude
  582. markersMap.lat = res.data.catalogue[0].latitude
  583. if (res.data.eventdetail != null && res.data.eventdetail.length > 0 && res.data.eventdetail[0].fireRadius != null && res.data.eventdetail[0].fireRadius != '' && res.data.eventdetail[0].fireRadius > 0) {
  584. markersMap.radius = res.data.eventdetail[0].fireRadius
  585. }
  586. setTimeout(() => {
  587. // that.$refs.supermapTaskDialog.dynamicPlotting()//弹出动态绘制窗口,防止截图位置改变
  588. that.$refs.supermapTaskDialog.clearM(false)
  589. that.$refs.supermapTaskDialog.setMarkersRadius([markersMap])
  590. that.$refs.supermapTaskDialog.dropLocation(res.data.catalogue[0].latitude, res.data.catalogue[0].longitude)
  591. }, 1000)
  592. }
  593. })
  594. },
  595. refreshTaskList() {
  596. //刷新任务列表
  597. this.selectTaskList()
  598. },
  599. selectTaskList: async function() {
  600. //获取任务列表
  601. selectTaskBO().then(res => {
  602. this.taskList = res.data
  603. this.taskCount = res.data.length
  604. })
  605. },
  606. handleCheckedCitiesChangeBan(value) {
  607. this.choseLayerSwitchingList(this.banCheckList)
  608. },
  609. handleCheckedCitiesChangeChang(value) {
  610. this.choseLayerSwitchingList(this.changCheckList)
  611. },
  612. handleNodeClick(data) {
  613. console.log(data)
  614. },
  615. refresh() {
  616. window.location.reload()
  617. },
  618. showDialog(click) {
  619. window.showDialog(click)
  620. },
  621. choseLayerSwitching(url, isClear) {
  622. window.choseLayerSwitching(url, isClear)
  623. },
  624. choseLayerSwitchingList(urlList) {//选择图层(传递数组)
  625. window.choseLayerSwitchingList(urlList)
  626. },
  627. forestban() {
  628. window.forestban()
  629. console.log('林班')
  630. },
  631. forestchang() {
  632. window.forestchang()
  633. console.log('林场')
  634. },
  635. closeBanChild() {
  636. this.banCheckList = []
  637. this.showBanChild = false
  638. },
  639. closeChangChild() {
  640. this.changCheckList = []
  641. this.showChangChild = false
  642. },
  643. //图例收起弹出
  644. btmIndent() {
  645. if (this.btmTipIndent == '') {
  646. this.btmTipIndent = 'btm-tip-to-right'
  647. } else if (this.btmTipIndent == 'btm-tip-to-right') {
  648. this.btmTipIndent = ''
  649. }
  650. }
  651. }
  652. }
  653. </script>
  654. <style rel="stylesheet/scss" lang="scss" scoped>
  655. @import '@/assets/styles/base.scss';
  656. .btm-box {
  657. width: 100%;
  658. height: auto;
  659. background: linear-gradient($btmMemu);
  660. position: absolute;
  661. z-index: 999;
  662. bottom: 0;
  663. height: 2.5rem;
  664. display: flex;
  665. align-items: center;
  666. .light {
  667. position: absolute;
  668. top: -.5rem;
  669. }
  670. .btm-left {
  671. position: absolute;
  672. font-size: .7rem;
  673. height: 2rem;
  674. line-height: 2rem;
  675. border: 1px $searchBorder;
  676. border-left: none;
  677. color: $inBlue;
  678. display: flex;
  679. -webkit-transform: translateX(-21rem) !important;
  680. transform: translateX(-21rem) !important;
  681. transition: all 0.5s ease-in-out !important;
  682. .btm-legend {
  683. height: 2rem;
  684. text-align: center;
  685. color: $inBlue;
  686. padding: 0 .5rem;
  687. cursor: pointer;
  688. }
  689. .btm-legend:hover {
  690. background-color: $tipHover;
  691. color: $white;
  692. }
  693. .btm-left-tip {
  694. display: flex;
  695. align-items: center;
  696. margin: 0 .5rem;
  697. .btm-left-block {
  698. width: 1rem;
  699. height: 1rem;
  700. margin-right: .3rem;
  701. border-radius: .2rem;
  702. }
  703. .btm-left-state-c1 {
  704. background-color: $eventStateColor-xsb;
  705. }
  706. .btm-left-state-c2 {
  707. background-color: $eventStateColor-cb;
  708. }
  709. .btm-left-state-c3 {
  710. background-color: $eventStateColor-yqs;
  711. }
  712. .btm-left-state-c4 {
  713. background-color: $eventStateColor-ld;
  714. }
  715. .btm-left-state-c5 {
  716. background-color: $eventStateColor-bj;
  717. }
  718. .btm-left-state-c6 {
  719. background-color: $eventStateColor-tb;
  720. }
  721. }
  722. }
  723. .btm-tip-to-right {
  724. -webkit-transform: translateX(0) !important;
  725. transform: translateX(0) !important;
  726. transition: all 0.5s ease-in-out !important;
  727. }
  728. .bottom-menu-normal {
  729. max-width: 70%;
  730. padding: 0 3rem;
  731. position: absolute;
  732. left: 50%;
  733. transform: translateX(-50%);
  734. bottom: 0;
  735. z-index: 999;
  736. border-radius: 5px;
  737. display: flex;
  738. justify-content: center;
  739. align-items: center;
  740. // background: url(../assets/images/integrated/btm-menu.png) center no-repeat;
  741. // background-size: cover;
  742. .btm-m-con {
  743. position: relative;
  744. color: $inBlue;
  745. font-size: .5rem;
  746. padding: .6rem 1rem;
  747. display: flex;
  748. align-items: center;
  749. justify-content: center;
  750. -webkit-transform: translateY(0);
  751. transform: translateY(0);
  752. transition: all 0.2s ease-in-out;
  753. cursor: pointer;
  754. white-space: nowrap;
  755. i {
  756. font-size: 1rem;
  757. color: $inBlue;
  758. text-shadow: 0 0 10px rgba($color: $inBlue, $alpha: .6);
  759. margin-right: 0.2rem;
  760. }
  761. .nav-child {
  762. text-shadow: none !important;
  763. position: absolute;
  764. bottom: 3rem;
  765. border: 1px solid saddlebrown;
  766. padding: .5rem;
  767. -moz-border-radius-topleft: 0;
  768. -moz-border-radius-bottomright: 0;
  769. background-color: $barBgc;
  770. box-shadow: $barShadow;
  771. border: 1px $barBorder;
  772. left: 50%;
  773. transform: translateX(-50%);
  774. color: $inBlue;
  775. .nav-child-btn {
  776. padding: .2rem;
  777. }
  778. .forestban {
  779. display: flex;
  780. .forestban-con {
  781. width: 20rem;
  782. height: 20rem;
  783. overflow-y: scroll;
  784. border: 1px solid rgba(51, 70, 127, 0.7);
  785. }
  786. .forestban-right {
  787. width: 10rem;
  788. height: 20rem;
  789. overflow-y: scroll;
  790. padding: 0 1rem;
  791. .el-checkbox-group {
  792. display: flex;
  793. flex-direction: column;
  794. label {
  795. padding: .4rem 0;
  796. }
  797. .el-checkbox {
  798. color: $white;
  799. }
  800. }
  801. }
  802. }
  803. }
  804. }
  805. .btm-m-con:hover,
  806. .on {
  807. text-shadow: 0 0 20px rgba($color: $inBlueHover, $alpha: 1.0);
  808. -webkit-transform: translateX(0.2rem);
  809. transform: translateX(0.2rem);
  810. transition: all 0.2s ease-in-out;
  811. .nav-child {
  812. text-shadow: none !important;
  813. }
  814. i {
  815. color: $inBlueHover;
  816. text-shadow: 0 0 20px rgba($color: $inBlueHover, $alpha: 1.0);
  817. }
  818. }
  819. }
  820. .btm-right {
  821. position: absolute;
  822. font-size: .7rem;
  823. height: 2rem;
  824. display: flex;
  825. right: 1rem;
  826. align-items: center;
  827. .el-badge {
  828. display: flex !important;
  829. margin-left: 1.5rem;
  830. button {
  831. padding: 0 .3rem;
  832. height: 1.5rem;
  833. background-color: #112543;
  834. color: $inBlue;
  835. border: 1px $searchBorder;
  836. }
  837. }
  838. .el-badge:hover {
  839. -webkit-transform: translateX(0.1rem);
  840. transform: translateX(0.1rem);
  841. transition: all 0.2s ease-in-out;
  842. button {
  843. text-shadow: 0 0 15px rgba($color: $inBlueHover, $alpha: 1.0);
  844. }
  845. }
  846. }
  847. }
  848. .btm-r-pop-info {
  849. display: flex;
  850. width: 35rem;
  851. flex-direction: column;
  852. max-height: 85vh;
  853. min-height: fit-content;
  854. overflow-y: scroll;
  855. padding: 1rem;
  856. .btm-r-pop-info-box:hover {
  857. box-shadow: $shadowListHover;
  858. color: $inBlue;
  859. border: 1px $countBorder;
  860. }
  861. .btm-r-pop-info-box {
  862. width: 100%;
  863. display: flex;
  864. flex-direction: column;
  865. background-color: $deepBG;
  866. padding: .5rem;
  867. border-radius: .5rem;
  868. color: $inBlue;
  869. border: 1px $searchBorder;
  870. margin-bottom: 1rem;
  871. .btm-r-pop-info-tit {
  872. display: flex;
  873. padding: .5rem;
  874. h3 {
  875. font-weight: bolder;
  876. }
  877. }
  878. .btm-r-pop-info-con {
  879. padding: .5rem;
  880. display: flex;
  881. flex-direction: column;
  882. border-top: 1px $searchBorder;
  883. border-bottom: 1px $searchBorder;
  884. .btm-r-pop-info-list {
  885. display: flex;
  886. padding: .3rem 0;
  887. .btm-r-pop-info-list-name {
  888. width: 3.6rem;
  889. text-align: right;
  890. margin-right: 1rem;
  891. }
  892. .btm-r-pop-info-list-text {
  893. }
  894. }
  895. }
  896. .btm-r-pop-info-btm {
  897. padding: .5rem;
  898. display: flex;
  899. justify-content: space-between;
  900. .btm-r-pop-info-btm-btn {
  901. button {
  902. padding: .5rem;
  903. }
  904. }
  905. }
  906. }
  907. }
  908. </style>