taskRegulatorDetails.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771
  1. <!-- -->
  2. <template>
  3. <div class="taskRegulatorDetails_box">
  4. <el-card :style="'height:' + fullHeight + 'px'" v-loading="loading">
  5. <el-row v-if="taskObj.task_id">
  6. <!-- 任务信息 -->
  7. <el-col :span="24">
  8. <div class="list_box">
  9. <!-- <span class="list_tlt">任务信息</span> -->
  10. <div class="list_tlt">
  11. <p>任务信息</p>
  12. <p class="list_tlt_p"></p>
  13. </div>
  14. <ul class="list_ul">
  15. <li class="list_li">
  16. <div class="list_div">
  17. <span class="list_div_tlt">任务类型:</span>
  18. <span class="list_div_val">{{ taskObj.task_type }}</span>
  19. </div>
  20. <div class="list_div">
  21. <span class="list_div_tlt">任务监督人:</span>
  22. <span class="list_div_val">{{
  23. taskObj.supervisor_user
  24. }}</span>
  25. </div>
  26. <div class="list_div">
  27. <span class="list_div_tlt">任务时间:</span>
  28. <span class="list_div_val">{{ taskObj.start_time }}</span>
  29. </div>
  30. <div class="list_div">
  31. <span class="list_div_tlt">任务发布人:</span>
  32. <span class="list_div_val">{{ taskObj.owner_user }}</span>
  33. </div>
  34. <div class="list_div">
  35. <span class="list_div_tlt">任务处理人:</span>
  36. <span class="list_div_val">{{ taskObj.operator_user }}</span>
  37. </div>
  38. <div class="list_div">
  39. <span class="list_div_tlt">任务状态:</span>
  40. <span class="list_div_val">{{ taskObj.task_status }}</span>
  41. </div>
  42. <div class="list_div">
  43. <span class="list_div_tlt">任务描述:</span>
  44. <span class="list_div_val">{{ taskObj.tesk_msg }}</span>
  45. </div>
  46. </li>
  47. </ul>
  48. </div>
  49. </el-col>
  50. <!-- 签到信息 -->
  51. <!-- <el-col :span="24">
  52. <div class="list_box">
  53. <div class="list_tlt">
  54. <p>签到信息</p>
  55. <p class="list_tlt_p"></p>
  56. </div>
  57. <ul class="list_ul">
  58. <li class="list_sing_li">
  59. <div class="list_sing_div">
  60. <p class="list_div_tlt" style="width: 12%">签到图片:</p>
  61. <p
  62. v-if="taskObj.img_list.length !== 0"
  63. style="display: flex; width: 88%; flex-wrap: wrap"
  64. >
  65. <span
  66. class="list_div_img"
  67. v-for="(item, index) in taskObj.img_list"
  68. :key="index"
  69. >
  70. <img v-viewer :src="item" alt="" />
  71. </span>
  72. </p>
  73. <span v-else>暂无签到图片</span>
  74. </div>
  75. <div class="list_sing_div">
  76. <span class="list_div_tlt">签到时间:</span>
  77. <span class="list_div_val">{{
  78. taskObj.end_time || "暂无"
  79. }}</span>
  80. </div>
  81. </li>
  82. </ul>
  83. </div>
  84. </el-col> -->
  85. <!-- 任务汇报 -->
  86. <el-col :span="24">
  87. <div class="list_box">
  88. <div class="list_tlt">
  89. <p>任务汇报</p>
  90. <p class="list_tlt_p"></p>
  91. </div>
  92. <ul class="list_report_ul">
  93. <!-- <li
  94. class="list_report_li"
  95. v-for="item in tabskObj.report_msg"
  96. :key="item"
  97. >
  98. {{ item }}
  99. </li> -->
  100. <li class="list_report_li">{{ taskObj.report_msg || "暂无" }}</li>
  101. </ul>
  102. </div>
  103. </el-col>
  104. <!-- 任务填报信息 -->
  105. <el-col :span="24">
  106. <div class="list_box">
  107. <div class="list_tlt_box">
  108. <div class="list_tlts" @click="tabtask(0)">
  109. <p>签到信息</p>
  110. <p class="list_tlts_p" v-if="taskindex == 0"></p>
  111. </div>
  112. <div
  113. class="list_tlts_dian"
  114. v-if="taskObj.task_type == '有害生物监测'"
  115. >
  116. </div>
  117. <div
  118. class="list_tlts"
  119. @click="tabtask(1)"
  120. v-if="taskObj.task_type == '有害生物监测'"
  121. >
  122. <p>任务填报信息</p>
  123. <p class="list_tlts_p" v-if="taskindex == 1"></p>
  124. </div>
  125. </div>
  126. <ul class="list_table_ul" v-if="taskindex == 1">
  127. <li class="list_li">
  128. <el-table :data="tableData" stripe style="width: 100%">
  129. <el-table-column prop="trap_number" label="设备编号">
  130. </el-table-column>
  131. <el-table-column prop="monitor_point" label="监测点">
  132. </el-table-column>
  133. <el-table-column prop="inducer_type" label="诱剂">
  134. </el-table-column>
  135. <el-table-column prop="report_status" label="有害生物登记">
  136. <template slot-scope="scope">
  137. <span
  138. v-if="scope.row.report_status == '已登记'"
  139. @click="examine(scope.row)"
  140. style="color: #409eff; cursor: pointer"
  141. >查看</span
  142. >
  143. <span v-else>{{ scope.row.report_status || "无" }}</span>
  144. </template>
  145. </el-table-column>
  146. <el-table-column prop="report_time" label="录入时间">
  147. <template slot-scope="scope">
  148. <span>{{ scope.row.report_time || "无" }}</span>
  149. </template>
  150. </el-table-column>
  151. </el-table>
  152. </li>
  153. </ul>
  154. <div class="clockinbox" v-show="taskindex == 0">
  155. <div class="clock_item">
  156. <p v-if="activities.length == 0">暂无打卡记录</p>
  157. <el-timeline>
  158. <el-timeline-item
  159. v-for="(activity, index) in activities"
  160. :key="index"
  161. :icon="activity.icon"
  162. :type="activity.type"
  163. :color="activity.color"
  164. :size="activity.size"
  165. :timestamp="activity.timestamp"
  166. >
  167. <div class="clock_item_timeline">
  168. <p class="timeline_title">{{ activity.content }}</p>
  169. <div class="timeline_imglist">
  170. <img
  171. v-for="(item, index) in activity.arrlist"
  172. :key="index"
  173. :src="$deriveData + item"
  174. alt=""
  175. v-viewer
  176. />
  177. </div>
  178. <p class="timeline_text">{{ activity.text }}</p>
  179. </div>
  180. </el-timeline-item>
  181. </el-timeline>
  182. </div>
  183. <div class="track_item">
  184. <div class="track_item_ser">
  185. <div class="track_item_ser_left">
  186. <el-checkbox
  187. v-model="checked1"
  188. size="mini"
  189. label="展示面积"
  190. ></el-checkbox>
  191. <el-button
  192. type="info"
  193. size="mini"
  194. @click="playtrack(0)"
  195. style="margin-left: 15px"
  196. :disabled="btndisabled"
  197. >播放轨迹</el-button
  198. >
  199. </div>
  200. <div class="track_item_ser_right">
  201. <div class="track_item_ser_right_item">
  202. <img src="../../../static/images/warning/1.png" alt="" />
  203. <p>监测点</p>
  204. </div>
  205. <div class="track_item_ser_right_item">
  206. <img src="../../../static/images/warning/2.png" alt="" />
  207. <p>诱捕器</p>
  208. </div>
  209. <div class="track_item_ser_right_item">
  210. <img src="../../../static/images/warning/3.png" alt="" />
  211. <p>打卡点</p>
  212. </div>
  213. </div>
  214. </div>
  215. <div class="track_item_map" id="mapContainer2"></div>
  216. </div>
  217. </div>
  218. </div>
  219. </el-col>
  220. </el-row>
  221. </el-card>
  222. <!-- 填报信息弹框 -->
  223. <el-dialog
  224. :title="titleData"
  225. :visible.sync="dialogVisible"
  226. :close-on-click-modal="false"
  227. :close-on-press-escape="false"
  228. width="30%"
  229. >
  230. <ul class="insect_ul">
  231. <li
  232. class="insect_list"
  233. v-for="(item, index) in insectList"
  234. :key="index"
  235. >
  236. <div>{{ item.pest_name + ":" }}</div>
  237. <div style="margin: 0 0 0 20px">{{ item.pest_number }}</div>
  238. </li>
  239. </ul>
  240. </el-dialog>
  241. </div>
  242. </template>
  243. <script>
  244. export default {
  245. components: {},
  246. data() {
  247. //这里存放数据
  248. return {
  249. fullHeight: document.documentElement.clientHeight - 116, //
  250. // 详情总数据
  251. taskObj: {},
  252. // 任务填报信息
  253. tableData: [],
  254. dialogVisible: false, // 弹框
  255. titleData: "", // 弹框标题
  256. insectList: [], //害虫列表
  257. // 任务汇报
  258. reportList: [
  259. "1、今天做了检测完成任务了没有",
  260. "2、途中发生了什么事情",
  261. "3、对这次任务有什么总结",
  262. "4、我对这次任务有哪些建议",
  263. ],
  264. loading: false, // 加载
  265. taskindex: 0,
  266. //轨迹地图
  267. map: null,
  268. trackmarker: [],
  269. lineArr: [],
  270. checked1: true,
  271. polyline2: [],
  272. pos_icon_pserson: null,
  273. //签到信息
  274. activities: [],
  275. btndisabled:false
  276. };
  277. },
  278. //监听属性 类似于data概念
  279. computed: {},
  280. //监控data中的数据变化
  281. watch: {
  282. fullHeight(val) {
  283. //监控浏览器高度变化
  284. if (!this.timer) {
  285. this.fullHeight = val;
  286. this.timer = true;
  287. let that = this;
  288. setTimeout(function () {
  289. //防止过度调用监测事件,导致卡顿
  290. that.timer = false;
  291. }, 400);
  292. }
  293. },
  294. checked1(val) {
  295. if (val) {
  296. for (var i = 0; i < this.lineArr.length; i++) {
  297. var polyline2 = new AMap.Polyline({
  298. map: this.map,
  299. path: this.lineArr[i],
  300. isOutline: true,
  301. outlineColor: "#ED7119",
  302. borderWeight: 10,
  303. strokeColor: "#3AD00C",
  304. strokeOpacity: 0.6,
  305. strokeWeight: 6,
  306. // 折线样式还支持 'dashed'
  307. strokeStyle: "solid",
  308. // strokeStyle是dashed时有效
  309. strokeDasharray: [10, 5],
  310. lineJoin: "round",
  311. lineCap: "round",
  312. zIndex: 50,
  313. });
  314. this.polyline2.push(polyline2);
  315. }
  316. } else {
  317. for (var i = 0; i < this.polyline2.length; i++) {
  318. this.map.remove(this.polyline2[i]);
  319. }
  320. this.polyline2 = []
  321. }
  322. },
  323. },
  324. //方法集合
  325. methods: {
  326. //动态获取浏览器高度
  327. get_boderHeight() {
  328. const that = this;
  329. window.onresize = () => {
  330. return (() => {
  331. window.fullHeight = document.documentElement.clientHeight;
  332. that.fullHeight = window.fullHeight;
  333. })();
  334. };
  335. },
  336. // 详情界面数据
  337. detailsData() {
  338. this.$axios({
  339. method: "POST",
  340. url: "/api/api_gateway?method=control_center.task.task_info",
  341. data: this.qs.stringify({
  342. task_id: this.$route.query.id,
  343. }),
  344. })
  345. .then((res) => {
  346. console.log(res);
  347. if (res.data.data) {
  348. var data = res.data.data;
  349. // data.img_list = JSON.parse(data.img_list);
  350. this.taskObj = data;
  351. this.activities = [];
  352. for (var i = 0; i < this.taskObj.clock_in_list.length; i++) {
  353. var obj = {
  354. content: this.taskObj.clock_in_list[i].address,
  355. timestamp: this.taskObj.clock_in_list[i].create_time,
  356. color: "#409eff",
  357. text: this.taskObj.clock_in_list[i].message,
  358. arrlist: [],
  359. };
  360. obj.arrlist = this.taskObj.clock_in_list[i].img_list;
  361. this.activities.push(obj);
  362. }
  363. this.lineArr = [];
  364. for (var i = 0; i < this.taskObj.walk_lnglat_list.length; i++) {
  365. var lnglat = this.taskObj.walk_lnglat_list[i];
  366. var arr = [];
  367. for (var j = 0; j < lnglat.length; j++) {
  368. arr.push([Number(lnglat[j].lng), Number(lnglat[j].lat)]);
  369. }
  370. this.lineArr.push(arr);
  371. }
  372. console.log(this.taskObj);
  373. this.tableData = data.trap_record_list;
  374. }
  375. this.$nextTick(() => {
  376. this.initmap();
  377. });
  378. this.loading = false;
  379. })
  380. .catch((err) => {
  381. this.loading = false;
  382. console.log(err);
  383. });
  384. },
  385. // 查看
  386. examine(data) {
  387. this.titleData = "设备编号:" + data.trap_number;
  388. this.insectList = data.pest_list;
  389. this.dialogVisible = true;
  390. },
  391. tabtask(index) {
  392. this.taskindex = index;
  393. },
  394. initmap() {
  395. var map = new AMap.Map(document.getElementById("mapContainer2"), {
  396. center: [114.052758, 22.545817],
  397. resizeEnable: true,
  398. zoom: 10,
  399. lang: "en",
  400. mapStyle: "amap://styles/fresh",
  401. layers: [],
  402. });
  403. AMap.plugin(["AMap.ToolBar", "AMap.Geocoder"], () => {
  404. map.addControl(new AMap.ToolBar());
  405. this.geocoder = new AMap.Geocoder({
  406. city: "全国",
  407. radius: 1000,
  408. });
  409. });
  410. AMap.plugin("AMap.MoveAnimation", function () {});
  411. this.map = map;
  412. for (var i = 0; i < this.lineArr.length; i++) {
  413. this.inittrack(this.lineArr[i]);
  414. }
  415. for (var i = 0; i < this.taskObj.check_point_lnglat_list.length; i++) {
  416. var data = this.taskObj.check_point_lnglat_list[i];
  417. this.setmak(1, [Number(data.lng), Number(data.lat)]);
  418. }
  419. for (var i = 0; i < this.taskObj.trap_lnglat_list.length; i++) {
  420. var data = this.taskObj.trap_lnglat_list[i];
  421. this.setmak(2, [Number(data.lng), Number(data.lat)]);
  422. }
  423. for (var i = 0; i < this.taskObj.clock_in_lnglat_list.length; i++) {
  424. var data = this.taskObj.clock_in_lnglat_list[i];
  425. this.setmak(3, [Number(data.lng), Number(data.lat)]);
  426. }
  427. this.pos_icon_pserson = new AMap.Icon({
  428. // 图标尺寸
  429. size: new AMap.Size(44, 42),
  430. // 图标的取图地址
  431. image: "../../../static/images/warning/person1.png",
  432. // 图标所用图片大小
  433. imageSize: new AMap.Size(44, 42),
  434. });
  435. if (this.lineArr[0]) {
  436. this.trackmarker = new AMap.Marker({
  437. map: this.map,
  438. position: this.lineArr[0][0],
  439. icon: this.pos_icon_pserson,
  440. offset: new AMap.Pixel(-22, -36),
  441. });
  442. }
  443. },
  444. setmak(index, data) {
  445. // console.log(data);
  446. var pos_icon = new AMap.Icon({
  447. // 图标尺寸
  448. size: new AMap.Size(18, 22),
  449. // 图标的取图地址
  450. image: "../../../static/images/warning/" + index + ".png",
  451. // 图标所用图片大小
  452. imageSize: new AMap.Size(18, 22),
  453. });
  454. var marker = new AMap.Marker({
  455. position: data,
  456. offset: new AMap.Pixel(-10, -10),
  457. icon: pos_icon, // 添加 Icon 图标 URL
  458. title: "设备标点",
  459. });
  460. this.map.add(marker);
  461. },
  462. //渲染轨迹图
  463. inittrack(arrlist) {
  464. console.log(arrlist);
  465. if (this.checked1) {
  466. var polyline2 = new AMap.Polyline({
  467. map: this.map,
  468. path: arrlist,
  469. isOutline: true,
  470. outlineColor: "#ED7119",
  471. borderWeight: 10,
  472. strokeColor: "#3AD00C",
  473. strokeOpacity: 0.6,
  474. strokeWeight: 6,
  475. // 折线样式还支持 'dashed'
  476. strokeStyle: "solid",
  477. // strokeStyle是dashed时有效
  478. strokeDasharray: [10, 5],
  479. lineJoin: "round",
  480. lineCap: "round",
  481. zIndex: 50,
  482. });
  483. this.polyline2.push(polyline2);
  484. }
  485. var polyline = new AMap.Polyline({
  486. map: this.map,
  487. path: arrlist,
  488. showDir: true,
  489. strokeColor: "#3AD00C", //线颜色
  490. strokeOpacity: 1, //线透明度
  491. strokeWeight: 6, //线宽
  492. zIndex: 51,
  493. // strokeStyle: "solid" //线样式
  494. });
  495. var passedPolyline = new AMap.Polyline({
  496. map: this.map,
  497. strokeColor: "red", //线颜色
  498. strokeWeight: 6, //线宽
  499. });
  500. this.map.setFitView();
  501. },
  502. //播放轨迹
  503. playtrack(index) {
  504. this.btndisabled = true
  505. if (this.trackmarker) {
  506. this.map.remove(this.trackmarker);
  507. }
  508. // console.log(index);
  509. this.trackmarker = new AMap.Marker({
  510. map: this.map,
  511. position: this.lineArr[index][0],
  512. icon: this.pos_icon_pserson,
  513. offset: new AMap.Pixel(-22, -36),
  514. });
  515. this.trackmarker.moveAlong(this.lineArr[index], {
  516. // 每一段的时长
  517. duration: 500, //可根据实际采集时间间隔设置
  518. // JSAPI2.0 是否延道路自动设置角度在 moveAlong 里设置
  519. autoRotation: false,
  520. });
  521. this.trackmarker.on("movealong", (e) => {
  522. index++;
  523. if (index == this.lineArr.length || index > this.lineArr.length) {
  524. this.btndisabled = false
  525. return false;
  526. } else {
  527. this.map.remove(this.trackmarker);
  528. this.playtrack(index);
  529. }
  530. // console.log("结束");
  531. });
  532. },
  533. },
  534. //生命周期 - 创建完成(可以访问当前this实例)
  535. created() {},
  536. //生命周期 - 挂载完成(可以访问DOM元素)
  537. mounted() {
  538. this.loading = true; // 加载
  539. this.get_boderHeight(); // 动态获取浏览器高度
  540. this.detailsData(); //详情界面数据
  541. },
  542. beforeCreate() {}, //生命周期 - 创建之前
  543. beforeMount() {}, //生命周期 - 挂载之前
  544. beforeUpdate() {}, //生命周期 - 更新之前
  545. updated() {}, //生命周期 - 更新之后
  546. beforeDestroy() {}, //生命周期 - 销毁之前
  547. destroyed() {}, //生命周期 - 销毁完成
  548. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  549. };
  550. </script>
  551. <style lang="less" scoped>
  552. .taskRegulatorDetails_box {
  553. // 任务信息
  554. .list_box {
  555. margin: 0 0 20px 0;
  556. .list_tlt {
  557. width: 80px;
  558. // margin-left: 2.5%;
  559. font-size: 20px;
  560. .list_tlt_p {
  561. width: 50%;
  562. margin: 5px auto 0;
  563. height: 3px;
  564. background-color: #1b76ff;
  565. border-radius: 3px;
  566. }
  567. }
  568. .list_tlt_box {
  569. display: flex;
  570. width: 100%;
  571. margin: 0 auto;
  572. .list_tlts {
  573. font-size: 20px;
  574. margin-right: 15px;
  575. .list_tlts_p {
  576. width: 50%;
  577. margin: 5px auto 0;
  578. height: 3px;
  579. background-color: #1b76ff;
  580. border-radius: 3px;
  581. }
  582. }
  583. .list_tlts_dian {
  584. margin-right: 15px;
  585. font-size: 20px;
  586. color: #e1eaf4;
  587. }
  588. }
  589. .list_ul {
  590. margin: 20px 0 0 0;
  591. padding: 20px 40px 20px 40px;
  592. background: #f6f8fa;
  593. .list_li {
  594. display: flex;
  595. flex-wrap: wrap;
  596. .list_div {
  597. margin: 0 0 25px 0;
  598. width: 33%;
  599. font-size: 14px;
  600. color: #333333;
  601. }
  602. }
  603. .list_sing_li {
  604. // display: flex;
  605. // justify-content: space-between;
  606. .list_sing_div {
  607. margin: 0 0 25px 0;
  608. width: 100%;
  609. font-size: 14px;
  610. display: flex;
  611. color: #333333;
  612. .list_div_img {
  613. width: 113px;
  614. margin: 0 15px 15px 0;
  615. display: flex;
  616. img {
  617. width: 100%;
  618. height: 100%;
  619. }
  620. }
  621. }
  622. }
  623. }
  624. // 任务填报信息
  625. .list_table_ul {
  626. margin: 20px 0 0 0;
  627. .list_li {
  628. display: flex;
  629. flex-wrap: wrap;
  630. .list_div {
  631. margin: 0 0 25px 0;
  632. width: 33%;
  633. font-size: 14px;
  634. color: #333333;
  635. }
  636. }
  637. }
  638. .clockinbox {
  639. width: 100%;
  640. height: 588px;
  641. display: flex;
  642. justify-content: space-between;
  643. margin-top: 20px;
  644. .clock_item {
  645. width: 49%;
  646. height: 588px;
  647. padding: 10px;
  648. box-sizing: border-box;
  649. overflow-y: auto;
  650. .clock_item_timeline {
  651. .timeline_title {
  652. font-size: 14px;
  653. color: #409eff;
  654. }
  655. .timeline_imglist {
  656. display: flex;
  657. margin: 10px 0;
  658. img {
  659. width: 100px;
  660. margin-right: 10px;
  661. }
  662. }
  663. .timeline_text {
  664. font-size: 14px;
  665. }
  666. }
  667. }
  668. .track_item {
  669. width: 49%;
  670. height: 588px;
  671. padding: 10px;
  672. box-sizing: border-box;
  673. .track_item_ser {
  674. display: flex;
  675. justify-content: space-between;
  676. .track_item_ser_right {
  677. display: flex;
  678. .track_item_ser_right_item {
  679. display: flex;
  680. margin-left: 20px;
  681. img {
  682. width: 18px;
  683. height: 22px;
  684. margin-top: 3px;
  685. }
  686. p {
  687. font-size: 14px;
  688. margin-left: 10px;
  689. line-height: 28px;
  690. }
  691. }
  692. }
  693. }
  694. /deep/.el-button--info {
  695. background-color: #409eff;
  696. border-color: #409eff;
  697. }
  698. .track_item_map {
  699. width: 100%;
  700. margin-top: 10px;
  701. height: calc(100% - 38px);
  702. /deep/.amap-logo {
  703. display: none !important;
  704. }
  705. /deep/.amap-copyright {
  706. display: none !important;
  707. }
  708. /deep/.amap-controls {
  709. display: none !important;
  710. }
  711. }
  712. }
  713. }
  714. // 任务汇报
  715. .list_report_ul {
  716. margin: 20px 0 0 0;
  717. padding: 20px 40px 20px 40px;
  718. background: #f6f8fa;
  719. .list_report_li {
  720. font-size: 14px;
  721. margin: 0 0 10px 0;
  722. color: #333333;
  723. }
  724. }
  725. }
  726. /deep/.el-table th.el-table__cell {
  727. background-color: #f6f8fa;
  728. }
  729. /deep/.el-card {
  730. overflow: hidden;
  731. overflow-y: auto;
  732. }
  733. // 害虫弹框
  734. .insect_ul {
  735. .insect_list {
  736. display: flex;
  737. // margin: 0 0 20px 0 l;'
  738. margin-bottom: 20px;
  739. div {
  740. font-size: 16px;
  741. width: 30%;
  742. text-align: left;
  743. }
  744. }
  745. }
  746. }
  747. </style>