lianxiD.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886
  1. <!-- -->
  2. <template>
  3. <div class="statistics_box" :style="'height:' + fullHeight + 'px'">
  4. <!-- nav -->
  5. <div class="dbd">
  6. <!-- 返回 -->
  7. <el-page-header v-if="typeShow" title @back="goBack" content="虫害数据统计"></el-page-header>
  8. <el-page-header v-else title @back="goBack" content="病害数据统计"></el-page-header>
  9. <!-- 背景渐变 -->
  10. <div class="bgc"></div>
  11. </div>
  12. <div class="statistics_main">
  13. <!-- 筛选下拉框-虫害 -->
  14. <el-cascader
  15. v-if="typeShow"
  16. :options="optionsA"
  17. v-model="selectedOptions"
  18. placeholder="科目筛选"
  19. @change="result($event)"
  20. class="content"
  21. :props="props"
  22. ></el-cascader>
  23. <!-- 筛选下拉框-虫害 -->
  24. <!-- 筛选下拉框-病害 -->
  25. <el-cascader
  26. v-else
  27. :options="optionsA"
  28. v-model="selectedOptions"
  29. placeholder="种类筛选"
  30. @change="result($event)"
  31. class="content"
  32. :props="props"
  33. ></el-cascader>
  34. <!-- 筛选下拉框-病害 -->
  35. <!-- 饼状统计图 -->
  36. <div id="main" style="width: 100%;height: 400px;"></div>
  37. <!-- 饼状统计图 -->
  38. <!-- 表格筛选框-时间筛选 -->
  39. <el-date-picker
  40. v-model="selectedOptionsB"
  41. @change="resultA($event)"
  42. type="daterange"
  43. range-separator="至"
  44. start-placeholder="开始日期"
  45. end-placeholder="结束日期"
  46. ></el-date-picker>
  47. </div>
  48. <!-- 表格筛选框-时间筛选 -->
  49. <!-- 表格 -->
  50. <mescroll-vue ref="mescroll" :down="mescrollDown" :up="mescrollUp" @init="mescrollInit">
  51. <div class>
  52. <!-- <el-table :data="tableData" style="width: 100%">
  53. <el-table-column label="日期" width="180" prop="data1">
  54. <template slot-scope="scope">
  55. <span style="margin-left: 10px">{{ scope.row.data1}}</span>
  56. </template>
  57. </el-table-column>
  58. <el-table-column label="分类" width="180" prop="data2">
  59. <template slot-scope="scope">
  60. <el-popover trigger="hover" placement="top">
  61. <p>分类: {{ scope.row.data2 }}</p>
  62. <div slot="reference" class="name-wrapper">
  63. <el-tag size="medium">{{ scope.row.data2 }}</el-tag>
  64. </div>
  65. </el-popover>
  66. </template>
  67. </el-table-column>
  68. <el-table-column label="用户名称" width="100" prop="data3">
  69. <template slot-scope="scope">
  70. <el-popover trigger="hover" placement="top">
  71. <p>用户名称: {{ scope.row.data3 }}</p>
  72. <div slot="reference" class="name-wrapper">
  73. <el-tag size="medium">{{ scope.row.data3 }}</el-tag>
  74. </div>
  75. </el-popover>
  76. </template>
  77. </el-table-column>
  78. <el-table-column label="采集地点" width="180" prop="data5">
  79. <template slot-scope="scope">
  80. <el-popover trigger="hover" placement="top">
  81. <p>采集地址: {{ scope.row.data5 }}</p>
  82. <div slot="reference" class="name-wrapper">
  83. <el-tag size="medium">{{ scope.row.data5 | ellipsis }}</el-tag>
  84. </div>
  85. </el-popover>
  86. </template>
  87. </el-table-column>
  88. <el-table-column label="操作">
  89. <template slot-scope="scope">
  90. <el-button size="mini" @click="handleDerive(scope.$index, scope.row)">导出</el-button>
  91. <el-button
  92. size="mini"
  93. type="danger"
  94. @click="handleDelete(scope.$index, scope.row, scope)"
  95. >删除</el-button>
  96. </template>
  97. </el-table-column>
  98. </el-table>-->
  99. <el-table :data="tableData" style="width: 100%">
  100. <el-table-column type="expand">
  101. <template slot-scope="props">
  102. <el-form label-position="left" inline class="demo-table-expand">
  103. <el-form-item label="用户名称:">
  104. <span>{{ props.row.data3 }}</span>
  105. </el-form-item>
  106. <el-form-item label="采集地址:">
  107. <span>{{ props.row.data5 }}</span>
  108. </el-form-item>
  109. </el-form>
  110. </template>
  111. </el-table-column>
  112. <el-table-column label="日期" prop="data1"></el-table-column>
  113. <el-table-column label="分类" prop="data2"></el-table-column>
  114. <el-table-column label="操作">
  115. <template slot-scope="scope">
  116. <el-button size="mini" @click="handleDerive(scope.$index, scope.row)">导出</el-button>
  117. <el-button
  118. size="mini"
  119. type="danger"
  120. @click="handleDelete(scope.$index, scope.row, scope)"
  121. >删除</el-button>
  122. </template>
  123. </el-table-column>
  124. </el-table>
  125. </div>
  126. </mescroll-vue>
  127. <!-- 表格 -->
  128. </div>
  129. </template>
  130. <script>
  131. import echarts from "echarts";
  132. // 引入mescroll的vue组件
  133. import MescrollVue from "mescroll.js/mescroll.vue";
  134. export default {
  135. filters: {
  136. ellipsis(value) {
  137. if (!value) return "";
  138. if (value.length > 8) {
  139. return value.slice(0, 8) + "...";
  140. }
  141. return value;
  142. }
  143. },
  144. components: {
  145. MescrollVue // 注册mescroll组件
  146. },
  147. data() {
  148. //这里存放数据
  149. return {
  150. //测试
  151. tableData: [
  152. {
  153. id: "12987122",
  154. name: "好滋好味鸡蛋仔",
  155. category: "江浙小吃、小吃零食",
  156. desc: "荷兰优质淡奶,奶香浓而不腻",
  157. address: "上海市普陀区真北路",
  158. shop: "王小虎夫妻店",
  159. shopId: "10333"
  160. },
  161. {
  162. id: "12987123",
  163. name: "好滋好味鸡蛋仔",
  164. category: "江浙小吃、小吃零食",
  165. desc: "荷兰优质淡奶,奶香浓而不腻",
  166. address: "上海市普陀区真北路",
  167. shop: "王小虎夫妻店",
  168. shopId: "10333"
  169. },
  170. {
  171. id: "12987125",
  172. name: "好滋好味鸡蛋仔",
  173. category: "江浙小吃、小吃零食",
  174. desc: "荷兰优质淡奶,奶香浓而不腻",
  175. address: "上海市普陀区真北路",
  176. shop: "王小虎夫妻店",
  177. shopId: "10333"
  178. },
  179. {
  180. id: "12987126",
  181. name: "好滋好味鸡蛋仔",
  182. category: "江浙小吃、小吃零食",
  183. desc: "荷兰优质淡奶,奶香浓而不腻",
  184. address: "上海市普陀区真北路",
  185. shop: "王小虎夫妻店",
  186. shopId: "10333"
  187. }
  188. ],
  189. fullHeight: document.documentElement.clientHeight,
  190. //饼状统计图
  191. charts: "",
  192. opinion: [],
  193. //下拉框
  194. optionsA: [],
  195. props: {
  196. value: "name",
  197. label: "name"
  198. },
  199. selectedOptions: "",
  200. typeShow: true, //判断头部是虫害还是病害
  201. //表格
  202. // 表格下拉框
  203. selectedOptionsB: "",
  204. propsB: {
  205. value: "name",
  206. label: "name"
  207. },
  208. tableData: [
  209. {
  210. data1: "",
  211. data2: "",
  212. data3: "",
  213. data5: "",
  214. data6: "",
  215. data7: ""
  216. }
  217. ], //表格数据
  218. //上拉加载下拉刷新
  219. //测试
  220. mescroll: null, // mescroll实例对象
  221. mescrollDown: {}, //下拉刷新的配置. (如果下拉刷新和上拉加载处理的逻辑是一样的,则mescrollDown可不用写了)
  222. mescrollUp: {
  223. // 上拉加载的配置.
  224. callback: this.upCallback, // 上拉回调,此处简写; 相当于 callback: function(page, mescroll) { }
  225. //以下是一些常用的配置,当然不写也可以的.
  226. page: {
  227. num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
  228. size: 7 //每页数据条数,默认10
  229. },
  230. isBounce: true, //根据记录的滚动条高度回弹
  231. htmlNodata: '<p class="upwarp-nodata">-- 已经到底了! --</p>',
  232. noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;
  233. // 避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
  234. // 这就是为什么无更多数据有时候不显示的原因
  235. toTop: {
  236. //回到顶部按钮
  237. // src: "../../../static/gotop.png", //图片路径,默认null,支持网络图
  238. src:
  239. "http://pic.51yuansu.com/pic3/cover/00/65/23/5896fa4bc81fc_610.jpg", //图片路径,默认null,支持网络图
  240. offset: 800 //列表滚动1000px才显示回到顶部按钮
  241. },
  242. empty: {
  243. //列表第一页无任何数据时,显示的空提示布局; 需配置warpId才显示
  244. warpId: "xxid", //父布局的id (1.3.5版本支持传入dom元素)
  245. icon: "./static/mescroll/mescroll-empty.png", //图标,默认null,支持网络图
  246. tip: "暂无相关数据~" //提示
  247. },
  248. onScroll: function(mescroll, y, isUp) {
  249. //监听滚动条
  250. // console.log(y);
  251. },
  252. lazyLoad: {
  253. use: true // 是否开启懒加载,默认false
  254. }
  255. },
  256. aggregate: "" //后端传来数据的总条数
  257. };
  258. },
  259. //监听属性 类似于data概念
  260. computed: {},
  261. //监控data中的数据变化
  262. beforeRouteEnter(to, from, next) {
  263. // 如果没有配置顶部按钮或isBounce,则beforeRouteEnter不用写
  264. next(vm => {
  265. // 滚动到原来的列表位置,恢复顶部按钮和isBounce的配置
  266. vm.$refs.mescroll && vm.$refs.mescroll.beforeRouteEnter();
  267. });
  268. },
  269. beforeRouteLeave(to, from, next) {
  270. // 如果没有配置顶部按钮或isBounce,则beforeRouteLeave不用写
  271. // 记录列表滚动的位置,隐藏顶部按钮和isBounce的配置
  272. this.$refs.mescroll && this.$refs.mescroll.beforeRouteLeave();
  273. next();
  274. },
  275. watch: {
  276. fullHeight(val) {
  277. //监控浏览器高度变化
  278. if (!this.timer) {
  279. this.fullHeight = val;
  280. this.timer = true;
  281. let that = this;
  282. setTimeout(function() {
  283. //防止过度调用监测事件,导致卡顿
  284. that.timer = false;
  285. }, 400);
  286. }
  287. }
  288. },
  289. //方法集合
  290. methods: {
  291. mescrollInit(mescroll) {
  292. this.mescroll = mescroll; // 如果this.mescroll对象没有使用到,则mescrollInit可以不用配置
  293. },
  294. // 上拉回调 page = {num:1, size:10}; num:当前页 ,默认从1开始; size:每页数据条数,默认10
  295. upCallback(page, mescroll) {
  296. let _this = this;
  297. _this
  298. .$axios({
  299. method: "get",
  300. url: "/report_forms",
  301. params: {
  302. page: this.mescrollUp.page.num,
  303. ret: localStorage.getItem("examineIndex")
  304. }
  305. })
  306. .then(res => {
  307. //判断data中的变量是否为空 ,为空的话存后端发来的总条数
  308. if (this.aggregate === "") {
  309. //存变量
  310. this.aggregate = res.data.num;
  311. var b = "6";
  312. this.aggregate = this.aggregate / b;
  313. this.aggregate = Math.ceil(this.aggregate); //将小数点转换为整数
  314. }
  315. //删除了默认的每页条数后判断数是否大于页码
  316. if (this.mescrollUp.page.num <= this.aggregate) {
  317. this.$axios({
  318. method: "get",
  319. url: "/report_forms",
  320. params: {
  321. page: this.mescrollUp.page.num,
  322. ret: localStorage.getItem("examineIndex")
  323. }
  324. })
  325. .then(res => {
  326. let arr = res.data.dat;
  327. // 如果是第一页需手动置空列表
  328. if (page.num === 1) this.redata = [];
  329. // 把请求到的数据添加到列表
  330. this.redata = this.redata.concat(arr);
  331. var data = [];
  332. for (var k = 0; k < res.data.dat.length; k++) {
  333. var obj = {};
  334. obj.data1 = res.data.dat[k].time; //日期
  335. obj.data2 = res.data.dat[k].insect_sort; //分类
  336. obj.data3 = res.data.dat[k].name; //用户名称
  337. obj.data5 = res.data.dat[k].user_city; //采集地点
  338. obj.data6 = res.data.dat[k].id; //id
  339. obj.data7 = res.data.dat[k].del; //id
  340. data[k] = obj;
  341. }
  342. _this.tableData = data;
  343. // 数据渲染成功后,隐藏下拉刷新的状态
  344. this.$nextTick(() => {
  345. mescroll.endSuccess(arr.length);
  346. });
  347. })
  348. .catch(error => {
  349. mescroll.endErr();
  350. });
  351. } else if (this.mescrollUp.page.num > this.aggregate) {
  352. // 数据渲染成功后,隐藏下拉刷新的状态
  353. this.$nextTick(() => {
  354. mescroll.endSuccess(this.aggregate);
  355. });
  356. }
  357. if (this.aggregate === 0) {
  358. this.axiosShow = false;
  359. this.FenShow = false;
  360. }
  361. })
  362. .catch(error => {
  363. mescroll.endErr();
  364. console.log(error);
  365. });
  366. },
  367. //表格删除
  368. handleDelete(index, row) {
  369. console.log(index, row.data6, row.data7);
  370. let _this = this;
  371. // if (localStorage.getItem("examineIndex") === "0") {
  372. // var a = 'insect'
  373. // } else if (localStorage.getItem("examineIndex") === "1") {
  374. // var a = 'plant'
  375. // }
  376. var b = row.data6 + "";
  377. var a = new Array(b);
  378. let postData = _this.$qs.parse({
  379. ret: row.data7,
  380. del: a
  381. });
  382. _this
  383. .$axios({
  384. method: "post",
  385. url: "/deleuser",
  386. data: postData
  387. })
  388. .then(res => {
  389. this.$message({
  390. type: "success",
  391. message: "删除成功!"
  392. });
  393. // const timer = setInterval(() => {
  394. // location.reload();
  395. // }, 1500);
  396. })
  397. .catch(err => {
  398. this.$message({
  399. type: "error",
  400. message: "删除失败!"
  401. });
  402. });
  403. },
  404. //表格导出
  405. handleDerive(index, row) {
  406. //转换id的类型
  407. var a = row.data6;
  408. var b = a.toString();
  409. let postData = this.$qs.parse({
  410. id: b,
  411. ret: ""
  412. });
  413. this.$axios({
  414. method: "post",
  415. url: "/expores",
  416. data: postData
  417. })
  418. .then(res => {
  419. window.location.href = "bigservers/" + res.data[0].file;
  420. })
  421. .catch(err => {
  422. this.$notify({
  423. title: "失败",
  424. message: "请求失败",
  425. type: "error",
  426. duration: 1000
  427. });
  428. });
  429. },
  430. //返回上一步
  431. goBack() {
  432. let _this = this;
  433. localStorage.removeItem("sortName");
  434. _this.$router.push("/examine");
  435. },
  436. //动态获取浏览器高度
  437. get_boderHeight() {
  438. const that = this;
  439. window.onresize = () => {
  440. return (() => {
  441. window.fullHeight = document.documentElement.clientHeight;
  442. that.fullHeight = window.fullHeight;
  443. })();
  444. };
  445. },
  446. //饼状统计图
  447. drawPie(id) {
  448. this.charts = echarts.init(document.getElementById(id));
  449. //判断是虫害还是病害
  450. if (localStorage.getItem("examineIndex") === "0") {
  451. //虫害数据
  452. let postData = this.$qs.parse({
  453. sort: localStorage.getItem("sortName")
  454. });
  455. //判断是默认,还是选择后的数据请求
  456. if (localStorage.getItem("sortName") !== null) {
  457. this.$axios({
  458. method: "post",
  459. url: "/count_num",
  460. data: postData
  461. })
  462. .then(res => {
  463. this.charts.setOption({
  464. tooltip: {
  465. trigger: "item"
  466. },
  467. legend: {
  468. orient: "vertical",
  469. x: "left",
  470. data: this.opinion
  471. },
  472. series: [
  473. {
  474. name: "类别",
  475. type: "pie",
  476. radius: ["45%", "70%"],
  477. avoidLabelOverlap: false,
  478. label: {
  479. normal: {
  480. show: false,
  481. position: "center"
  482. },
  483. emphasis: {
  484. show: true,
  485. textStyle: {
  486. fontSize: "60",
  487. fontWeight: "blod"
  488. }
  489. }
  490. },
  491. labelLine: {
  492. normal: {
  493. show: false
  494. }
  495. },
  496. data: res.data
  497. }
  498. ]
  499. });
  500. // this.charts.clear();
  501. })
  502. .catch(err => {
  503. console.log(err);
  504. });
  505. } else if (localStorage.getItem("sortName") === null) {
  506. this.$axios({
  507. method: "get",
  508. url: "/count_num"
  509. })
  510. .then(res => {
  511. this.charts.setOption({
  512. tooltip: {
  513. trigger: "item"
  514. },
  515. legend: {
  516. orient: "vertical",
  517. x: "left",
  518. data: this.opinion
  519. },
  520. series: [
  521. {
  522. name: "类别",
  523. type: "pie",
  524. radius: ["45%", "70%"],
  525. avoidLabelOverlap: false,
  526. label: {
  527. normal: {
  528. show: false,
  529. position: "center"
  530. },
  531. emphasis: {
  532. show: true,
  533. textStyle: {
  534. fontSize: "60",
  535. fontWeight: "blod"
  536. }
  537. }
  538. },
  539. labelLine: {
  540. normal: {
  541. show: false
  542. }
  543. },
  544. data: res.data
  545. }
  546. ]
  547. });
  548. // this.charts.clear();
  549. })
  550. .catch(err => {
  551. console.log(err);
  552. });
  553. }
  554. } else if (localStorage.getItem("examineIndex") === "1") {
  555. let postData = this.$qs.parse({
  556. sort: localStorage.getItem("sortName")
  557. });
  558. //判断是默认,还是选择后的数据请求
  559. if (localStorage.getItem("sortName") !== null) {
  560. this.$axios({
  561. method: "post",
  562. url: "/count_plant",
  563. data: postData
  564. })
  565. .then(res => {
  566. this.charts.setOption({
  567. tooltip: {
  568. trigger: "item"
  569. },
  570. legend: {
  571. orient: "vertical",
  572. x: "left",
  573. data: this.opinion
  574. },
  575. series: [
  576. {
  577. name: "类别",
  578. type: "pie",
  579. radius: ["45%", "70%"],
  580. avoidLabelOverlap: false,
  581. label: {
  582. normal: {
  583. show: false,
  584. position: "center"
  585. },
  586. emphasis: {
  587. show: true,
  588. textStyle: {
  589. fontSize: "60",
  590. fontWeight: "blod"
  591. }
  592. }
  593. },
  594. labelLine: {
  595. normal: {
  596. show: false
  597. }
  598. },
  599. data: res.data
  600. }
  601. ]
  602. });
  603. // this.charts.clear();
  604. })
  605. .catch(err => {
  606. console.log(err);
  607. });
  608. } else if (localStorage.getItem("sortName") === null) {
  609. this.$axios({
  610. method: "get",
  611. url: "/count_plant"
  612. })
  613. .then(res => {
  614. this.charts.setOption({
  615. tooltip: {
  616. trigger: "item"
  617. },
  618. legend: {
  619. orient: "vertical",
  620. x: "left",
  621. data: this.opinion
  622. },
  623. series: [
  624. {
  625. name: "类别",
  626. type: "pie",
  627. radius: ["45%", "70%"],
  628. avoidLabelOverlap: false,
  629. label: {
  630. normal: {
  631. show: false,
  632. position: "center"
  633. },
  634. emphasis: {
  635. show: true,
  636. textStyle: {
  637. fontSize: "60",
  638. fontWeight: "blod"
  639. }
  640. }
  641. },
  642. labelLine: {
  643. normal: {
  644. show: false
  645. }
  646. },
  647. data: res.data
  648. }
  649. ]
  650. });
  651. // this.charts.clear();
  652. })
  653. .catch(err => {
  654. console.log(err);
  655. });
  656. }
  657. }
  658. },
  659. //表格
  660. //图标-下拉框
  661. result(e) {
  662. localStorage.setItem("sortName", e[0]);
  663. this.drawPie("main");
  664. },
  665. //表格-下拉框
  666. resultA(e) {
  667. let _this = this;
  668. //开始时间
  669. const a = new Date(e[0]);
  670. const resDate =
  671. a.getFullYear() +
  672. "-" +
  673. this.p(a.getMonth() + 1) +
  674. "-" +
  675. this.p(a.getDate());
  676. const resTime =
  677. this.p(a.getHours()) +
  678. ":" +
  679. this.p(a.getMinutes()) +
  680. ":" +
  681. this.p(a.getSeconds());
  682. //结束时间
  683. const b = new Date(e[1]);
  684. const resDateA =
  685. b.getFullYear() +
  686. "-" +
  687. this.p(b.getMonth() + 1) +
  688. "-" +
  689. this.p(b.getDate());
  690. const resTimeA =
  691. this.p(b.getHours()) +
  692. ":" +
  693. this.p(b.getMinutes()) +
  694. ":" +
  695. this.p(b.getSeconds());
  696. let postData = this.$qs.parse({
  697. ret: localStorage.getItem("examineIndex"),
  698. start_time: resDate,
  699. end_time: resDateA,
  700. page: this.mescrollUp.page.num
  701. });
  702. this.$axios({
  703. method: "post",
  704. url: "/screen_time",
  705. data: postData
  706. })
  707. .then(res => {
  708. if (res.data.dat.length === 0) {
  709. for (var k = 0; k < res.data.dat.length; k++) {
  710. var obj = {};
  711. obj.data1 = res.data.dat[k].time; //日期
  712. obj.data2 = res.data.dat[k].insect_sort; //分类
  713. obj.data3 = res.data.dat[k].name; //用户名称
  714. obj.data5 = res.data.dat[k].user_city; //采集地点
  715. data[k] = obj;
  716. }
  717. _this.tableData = data;
  718. const timer = setInterval(() => {
  719. location.reload();
  720. }, 2000);
  721. } else if (res.data.dat.length !== 0) {
  722. // this.redata = res.data.dat;
  723. var data = [];
  724. for (var k = 0; k < res.data.dat.length; k++) {
  725. var obj = {};
  726. obj.data1 = res.data.dat[k].time; //日期
  727. obj.data2 = res.data.dat[k].insect_sort; //分类
  728. obj.data3 = res.data.dat[k].name; //用户名称
  729. obj.data5 = res.data.dat[k].user_city; //采集地点
  730. data[k] = obj;
  731. }
  732. _this.tableData = data;
  733. }
  734. })
  735. .catch(err => {
  736. console.log(err);
  737. });
  738. },
  739. //转换时间格式
  740. p(s) {
  741. return s < 10 ? "0" + s : s;
  742. }
  743. },
  744. //生命周期 - 创建完成(可以访问当前this实例)
  745. created() {
  746. let _this = this;
  747. //请求下拉框中的数据
  748. if (localStorage.getItem("examineIndex") === "0") {
  749. this.typeShow = true;
  750. //请求下拉框中的数据-虫害
  751. _this
  752. .$axios({
  753. method: "get",
  754. url: "/count_num"
  755. })
  756. .then(res => {
  757. this.optionsA = res.data;
  758. })
  759. .catch(err => {
  760. console.log(err);
  761. });
  762. } else if (localStorage.getItem("examineIndex") === "1") {
  763. this.typeShow = false;
  764. //请求下拉框中的数据-虫害
  765. _this
  766. .$axios({
  767. method: "get",
  768. url: "/count_plant"
  769. })
  770. .then(res => {
  771. this.optionsA = res.data;
  772. })
  773. .catch(err => {
  774. console.log(err);
  775. });
  776. }
  777. //请求表格数据
  778. this.$axios({
  779. method: "get",
  780. url: "/report_forms",
  781. params: {
  782. page: this.mescrollUp.page.num,
  783. ret: localStorage.getItem("examineIndex")
  784. }
  785. })
  786. .then(res => {
  787. // _this.tableData = res.dara.dat[0]
  788. var data = [];
  789. for (var k = 0; k < res.data.dat.length; k++) {
  790. var obj = {};
  791. obj.data1 = res.data.dat[k].time; //日期
  792. obj.data2 = res.data.dat[k].insect_sort; //分类
  793. obj.data3 = res.data.dat[k].name; //用户名称
  794. obj.data5 = res.data.dat[k].user_city; //采集地点
  795. obj.data6 = res.data.dat[k].id; //id
  796. obj.data7 = res.data.dat[k].del; //id
  797. data[k] = obj;
  798. }
  799. _this.tableData = data;
  800. })
  801. .catch(err => {
  802. console.log(erro);
  803. });
  804. },
  805. //生命周期 - 挂载完成(可以访问DOM元素)
  806. mounted() {
  807. this.get_boderHeight();
  808. // 统计图
  809. this.$nextTick(function() {
  810. this.drawPie("main");
  811. });
  812. },
  813. //清除内存中残留的echarts图例
  814. beforeDestroy() {
  815. this.charts.clear();
  816. }
  817. };
  818. </script>
  819. <style lang="scss">
  820. // @import "../../assets/style/bus.scss";
  821. @import "../../assets/style/scss/statistics.scss";
  822. .demo-table-expand {
  823. font-size: 0;
  824. }
  825. .demo-table-expand label {
  826. width: 90px;
  827. color: #99a9bf;
  828. }
  829. .demo-table-expand .el-form-item {
  830. margin-right: 0;
  831. margin-bottom: 0;
  832. width: 50%;
  833. }
  834. .el-form--inline .el-form-item__label {
  835. font-size: 30px;
  836. width: 2.1rem;
  837. }
  838. .el-table__expand-icon>.el-icon {
  839. position:absolute;
  840. top: 20%;
  841. left: 50%;
  842. }
  843. .el-icon-arrow-right:before {
  844. font-size: 25px;
  845. }
  846. .el-form-item__content {
  847. font-size: 25px;
  848. }
  849. </style>