taskRegulatorDetails.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770
  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. mapStyle: "amap://styles/fresh",
  400. layers: [],
  401. });
  402. AMap.plugin(["AMap.ToolBar", "AMap.Geocoder"], () => {
  403. map.addControl(new AMap.ToolBar());
  404. this.geocoder = new AMap.Geocoder({
  405. city: "全国",
  406. radius: 1000,
  407. });
  408. });
  409. AMap.plugin("AMap.MoveAnimation", function () {});
  410. this.map = map;
  411. for (var i = 0; i < this.lineArr.length; i++) {
  412. this.inittrack(this.lineArr[i]);
  413. }
  414. for (var i = 0; i < this.taskObj.check_point_lnglat_list.length; i++) {
  415. var data = this.taskObj.check_point_lnglat_list[i];
  416. this.setmak(1, [Number(data.lng), Number(data.lat)]);
  417. }
  418. for (var i = 0; i < this.taskObj.trap_lnglat_list.length; i++) {
  419. var data = this.taskObj.trap_lnglat_list[i];
  420. this.setmak(2, [Number(data.lng), Number(data.lat)]);
  421. }
  422. for (var i = 0; i < this.taskObj.clock_in_lnglat_list.length; i++) {
  423. var data = this.taskObj.clock_in_lnglat_list[i];
  424. this.setmak(3, [Number(data.lng), Number(data.lat)]);
  425. }
  426. this.pos_icon_pserson = new AMap.Icon({
  427. // 图标尺寸
  428. size: new AMap.Size(44, 42),
  429. // 图标的取图地址
  430. image: "../../../static/images/warning/person1.png",
  431. // 图标所用图片大小
  432. imageSize: new AMap.Size(44, 42),
  433. });
  434. if (this.lineArr[0]) {
  435. this.trackmarker = new AMap.Marker({
  436. map: this.map,
  437. position: this.lineArr[0][0],
  438. icon: this.pos_icon_pserson,
  439. offset: new AMap.Pixel(-22, -36),
  440. });
  441. }
  442. },
  443. setmak(index, data) {
  444. // console.log(data);
  445. var pos_icon = new AMap.Icon({
  446. // 图标尺寸
  447. size: new AMap.Size(18, 22),
  448. // 图标的取图地址
  449. image: "../../../static/images/warning/" + index + ".png",
  450. // 图标所用图片大小
  451. imageSize: new AMap.Size(18, 22),
  452. });
  453. var marker = new AMap.Marker({
  454. position: data,
  455. offset: new AMap.Pixel(-10, -10),
  456. icon: pos_icon, // 添加 Icon 图标 URL
  457. title: "设备标点",
  458. });
  459. this.map.add(marker);
  460. },
  461. //渲染轨迹图
  462. inittrack(arrlist) {
  463. console.log(arrlist);
  464. if (this.checked1) {
  465. var polyline2 = new AMap.Polyline({
  466. map: this.map,
  467. path: arrlist,
  468. isOutline: true,
  469. outlineColor: "#ED7119",
  470. borderWeight: 10,
  471. strokeColor: "#3AD00C",
  472. strokeOpacity: 0.6,
  473. strokeWeight: 6,
  474. // 折线样式还支持 'dashed'
  475. strokeStyle: "solid",
  476. // strokeStyle是dashed时有效
  477. strokeDasharray: [10, 5],
  478. lineJoin: "round",
  479. lineCap: "round",
  480. zIndex: 50,
  481. });
  482. this.polyline2.push(polyline2);
  483. }
  484. var polyline = new AMap.Polyline({
  485. map: this.map,
  486. path: arrlist,
  487. showDir: true,
  488. strokeColor: "#3AD00C", //线颜色
  489. strokeOpacity: 1, //线透明度
  490. strokeWeight: 6, //线宽
  491. zIndex: 51,
  492. // strokeStyle: "solid" //线样式
  493. });
  494. var passedPolyline = new AMap.Polyline({
  495. map: this.map,
  496. strokeColor: "red", //线颜色
  497. strokeWeight: 6, //线宽
  498. });
  499. this.map.setFitView();
  500. },
  501. //播放轨迹
  502. playtrack(index) {
  503. this.btndisabled = true
  504. if (this.trackmarker) {
  505. this.map.remove(this.trackmarker);
  506. }
  507. // console.log(index);
  508. this.trackmarker = new AMap.Marker({
  509. map: this.map,
  510. position: this.lineArr[index][0],
  511. icon: this.pos_icon_pserson,
  512. offset: new AMap.Pixel(-22, -36),
  513. });
  514. this.trackmarker.moveAlong(this.lineArr[index], {
  515. // 每一段的时长
  516. duration: 500, //可根据实际采集时间间隔设置
  517. // JSAPI2.0 是否延道路自动设置角度在 moveAlong 里设置
  518. autoRotation: false,
  519. });
  520. this.trackmarker.on("movealong", (e) => {
  521. index++;
  522. if (index == this.lineArr.length || index > this.lineArr.length) {
  523. this.btndisabled = false
  524. return false;
  525. } else {
  526. this.map.remove(this.trackmarker);
  527. this.playtrack(index);
  528. }
  529. // console.log("结束");
  530. });
  531. },
  532. },
  533. //生命周期 - 创建完成(可以访问当前this实例)
  534. created() {},
  535. //生命周期 - 挂载完成(可以访问DOM元素)
  536. mounted() {
  537. this.loading = true; // 加载
  538. this.get_boderHeight(); // 动态获取浏览器高度
  539. this.detailsData(); //详情界面数据
  540. },
  541. beforeCreate() {}, //生命周期 - 创建之前
  542. beforeMount() {}, //生命周期 - 挂载之前
  543. beforeUpdate() {}, //生命周期 - 更新之前
  544. updated() {}, //生命周期 - 更新之后
  545. beforeDestroy() {}, //生命周期 - 销毁之前
  546. destroyed() {}, //生命周期 - 销毁完成
  547. activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发
  548. };
  549. </script>
  550. <style lang="less" scoped>
  551. .taskRegulatorDetails_box {
  552. // 任务信息
  553. .list_box {
  554. margin: 0 0 20px 0;
  555. .list_tlt {
  556. width: 80px;
  557. // margin-left: 2.5%;
  558. font-size: 20px;
  559. .list_tlt_p {
  560. width: 50%;
  561. margin: 5px auto 0;
  562. height: 3px;
  563. background-color: #1b76ff;
  564. border-radius: 3px;
  565. }
  566. }
  567. .list_tlt_box {
  568. display: flex;
  569. width: 100%;
  570. margin: 0 auto;
  571. .list_tlts {
  572. font-size: 20px;
  573. margin-right: 15px;
  574. .list_tlts_p {
  575. width: 50%;
  576. margin: 5px auto 0;
  577. height: 3px;
  578. background-color: #1b76ff;
  579. border-radius: 3px;
  580. }
  581. }
  582. .list_tlts_dian {
  583. margin-right: 15px;
  584. font-size: 20px;
  585. color: #e1eaf4;
  586. }
  587. }
  588. .list_ul {
  589. margin: 20px 0 0 0;
  590. padding: 20px 40px 20px 40px;
  591. background: #f6f8fa;
  592. .list_li {
  593. display: flex;
  594. flex-wrap: wrap;
  595. .list_div {
  596. margin: 0 0 25px 0;
  597. width: 33%;
  598. font-size: 14px;
  599. color: #333333;
  600. }
  601. }
  602. .list_sing_li {
  603. // display: flex;
  604. // justify-content: space-between;
  605. .list_sing_div {
  606. margin: 0 0 25px 0;
  607. width: 100%;
  608. font-size: 14px;
  609. display: flex;
  610. color: #333333;
  611. .list_div_img {
  612. width: 113px;
  613. margin: 0 15px 15px 0;
  614. display: flex;
  615. img {
  616. width: 100%;
  617. height: 100%;
  618. }
  619. }
  620. }
  621. }
  622. }
  623. // 任务填报信息
  624. .list_table_ul {
  625. margin: 20px 0 0 0;
  626. .list_li {
  627. display: flex;
  628. flex-wrap: wrap;
  629. .list_div {
  630. margin: 0 0 25px 0;
  631. width: 33%;
  632. font-size: 14px;
  633. color: #333333;
  634. }
  635. }
  636. }
  637. .clockinbox {
  638. width: 100%;
  639. height: 588px;
  640. display: flex;
  641. justify-content: space-between;
  642. margin-top: 20px;
  643. .clock_item {
  644. width: 49%;
  645. height: 588px;
  646. padding: 10px;
  647. box-sizing: border-box;
  648. overflow-y: auto;
  649. .clock_item_timeline {
  650. .timeline_title {
  651. font-size: 14px;
  652. color: #409eff;
  653. }
  654. .timeline_imglist {
  655. display: flex;
  656. margin: 10px 0;
  657. img {
  658. width: 100px;
  659. margin-right: 10px;
  660. }
  661. }
  662. .timeline_text {
  663. font-size: 14px;
  664. }
  665. }
  666. }
  667. .track_item {
  668. width: 49%;
  669. height: 588px;
  670. padding: 10px;
  671. box-sizing: border-box;
  672. .track_item_ser {
  673. display: flex;
  674. justify-content: space-between;
  675. .track_item_ser_right {
  676. display: flex;
  677. .track_item_ser_right_item {
  678. display: flex;
  679. margin-left: 20px;
  680. img {
  681. width: 18px;
  682. height: 22px;
  683. margin-top: 3px;
  684. }
  685. p {
  686. font-size: 14px;
  687. margin-left: 10px;
  688. line-height: 28px;
  689. }
  690. }
  691. }
  692. }
  693. /deep/.el-button--info {
  694. background-color: #409eff;
  695. border-color: #409eff;
  696. }
  697. .track_item_map {
  698. width: 100%;
  699. margin-top: 10px;
  700. height: calc(100% - 38px);
  701. /deep/.amap-logo {
  702. display: none !important;
  703. }
  704. /deep/.amap-copyright {
  705. display: none !important;
  706. }
  707. /deep/.amap-controls {
  708. display: none !important;
  709. }
  710. }
  711. }
  712. }
  713. // 任务汇报
  714. .list_report_ul {
  715. margin: 20px 0 0 0;
  716. padding: 20px 40px 20px 40px;
  717. background: #f6f8fa;
  718. .list_report_li {
  719. font-size: 14px;
  720. margin: 0 0 10px 0;
  721. color: #333333;
  722. }
  723. }
  724. }
  725. /deep/.el-table th.el-table__cell {
  726. background-color: #f6f8fa;
  727. }
  728. /deep/.el-card {
  729. overflow: hidden;
  730. overflow-y: auto;
  731. }
  732. // 害虫弹框
  733. .insect_ul {
  734. .insect_list {
  735. display: flex;
  736. // margin: 0 0 20px 0 l;'
  737. margin-bottom: 20px;
  738. div {
  739. font-size: 16px;
  740. width: 30%;
  741. text-align: left;
  742. }
  743. }
  744. }
  745. }
  746. </style>