collectData.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. <template>
  2. <div class="collectData">
  3. <!-- 汇总数据的 nav -->
  4. <div class="box">
  5. <label>区域选择:</label>
  6. <area-zz @getCityCode="getCityCode"></area-zz>
  7. <div class="box_item" v-for="item in boxList" :key="item.id">
  8. <p>{{item.name}}</p>
  9. <p>{{item.value}}</p>
  10. </div>
  11. </div>
  12. <!-- 以下为图表 -->
  13. <div>
  14. <div class="chartDiv">
  15. <div class="title">
  16. <span>母猪总存栏走势</span>
  17. <div class="right">
  18. <el-date-picker
  19. v-model="timeSelected"
  20. v-show="daySelected === 1"
  21. type="daterange"
  22. range-separator="—"
  23. start-placeholder="开始日期"
  24. end-placeholder="结束日期"
  25. @change="onChange"
  26. value-format="yyyy-MM-dd"
  27. size="mini">
  28. </el-date-picker>
  29. <el-date-picker
  30. v-model="monthSelected"
  31. v-show="daySelected === 2"
  32. type="monthrange"
  33. range-separator="至"
  34. start-placeholder="开始月份"
  35. end-placeholder="结束月份"
  36. @change="onChange"
  37. size="mini"
  38. value-format="yyyy-MM">
  39. </el-date-picker>
  40. <div v-show="daySelected === 3">
  41. <el-date-picker
  42. v-model="startYear"
  43. type="year"
  44. placeholder="选择年"
  45. size="mini"
  46. style="width: 100px;"
  47. value-format="yyyy">
  48. </el-date-picker>
  49. -
  50. <el-date-picker
  51. v-model="endYear"
  52. type="year"
  53. placeholder="选择年"
  54. size="mini"
  55. @change="onChange"
  56. style="width: 100px;"
  57. value-format="yyyy">
  58. </el-date-picker>
  59. </div>
  60. </div>
  61. <div class="right">
  62. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 1, 'borderLeft': true}" @click="scopeDay(1)">日</span>
  63. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 2}" @click="scopeDay(2)">月</span>
  64. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 3, 'borderRight': true}" @click="scopeDay(3)">年</span>
  65. </div>
  66. </div>
  67. <line-chart :lineList="lineList"></line-chart>
  68. </div>
  69. <div class="chartDiv">
  70. <div class="title">
  71. <span>各牧场母猪存栏比较</span>
  72. </div>
  73. <his-chart :hisList="hisList"></his-chart>
  74. </div>
  75. <div class="chartDiv">
  76. <div class="title">
  77. <span>牧场排名</span>
  78. </div>
  79. <!-- 查询 -->
  80. <div class="form_item">
  81. <el-form :inline="true" size="mini">
  82. <el-form-item label="母猪存栏:">
  83. <el-input style="width: 50px;" v-model="searchForm.pigAllMin"></el-input>
  84. &nbsp;至&nbsp;
  85. <el-input style="width: 50px;" v-model="searchForm.pigAllMax"></el-input>
  86. </el-form-item>
  87. <el-form-item label="母猪新增:">
  88. <el-input style="width: 50px;" v-model="searchForm.pigAddMin"></el-input>
  89. &nbsp;至&nbsp;
  90. <el-input style="width: 50px;" v-model="searchForm.pigAddMax"></el-input>
  91. </el-form-item>
  92. <el-form-item label="耳标离线:">
  93. <el-input style="width: 50px;" v-model="searchForm.eartagMin"></el-input>
  94. &nbsp;至&nbsp;
  95. <el-input style="width: 50px;" v-model="searchForm.eartagMax"></el-input>
  96. </el-form-item>
  97. <el-form-item label="能繁母猪:">
  98. <el-input style="width: 50px;" v-model="searchForm.bearPigMin"></el-input>
  99. &nbsp;至&nbsp;
  100. <el-input style="width: 50px;" v-model="searchForm.bearPigMax"></el-input>
  101. </el-form-item>
  102. <el-form-item>
  103. <el-button type="primary" @click="search">查询</el-button>
  104. </el-form-item>
  105. </el-form>
  106. </div>
  107. <div class="box_table">
  108. <el-table
  109. :data="tableData"
  110. border
  111. stripe
  112. :header-cell-style="{'text-align':'center', 'background-color': '#F9FAFC', 'padding': '5px 0', 'color': '#666666'}"
  113. :cell-style="{'text-align':'center', 'padding': '5px 0'}"
  114. height="700"
  115. row-key="name"
  116. default-expand-all
  117. :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
  118. style="width: 100%;"
  119. @row-click="rowClick">
  120. <el-table-column
  121. label="牧场名"
  122. prop="name">
  123. <template slot-scope="scope">
  124. <span style="cursor: pointer;" @click="onSelect(scope.row)">{{scope.row.name}}</span>
  125. </template>
  126. </el-table-column>
  127. <el-table-column label="母猪存栏">
  128. <el-table-column
  129. label="存栏量">
  130. </el-table-column>
  131. <el-table-column
  132. label="省排名">
  133. </el-table-column>
  134. </el-table-column>
  135. <el-table-column
  136. prop="eartagNew"
  137. label="母猪存栏月增长">
  138. <el-table-column
  139. label="存栏月环比增长量">
  140. </el-table-column>
  141. <el-table-column
  142. label="省排名">
  143. </el-table-column>
  144. </el-table-column>
  145. <el-table-column
  146. prop="eartagNew"
  147. label="MSY">
  148. <el-table-column
  149. label="MSY">
  150. </el-table-column>
  151. <el-table-column
  152. label="省排名">
  153. </el-table-column>
  154. </el-table-column>
  155. <el-table-column
  156. prop="eartagOffone"
  157. label="今年累计出栏量">
  158. </el-table-column>
  159. <el-table-column
  160. prop="sowStock"
  161. label="预计年出栏量">
  162. </el-table-column>
  163. <el-table-column
  164. prop="stock1"
  165. label="目标年出栏量">
  166. </el-table-column>
  167. <el-table-column
  168. prop="stock2"
  169. label="目标完成度">
  170. </el-table-column>
  171. </el-table>
  172. <table-footer
  173. :totals="totalPages"
  174. :size="pageSize"
  175. @sizeChange="sizeChange"
  176. @pageChange="pageChange"></table-footer>
  177. </div>
  178. </div>
  179. </div>
  180. <el-button @click="toCollectDay">每日汇总</el-button>
  181. </div>
  182. </template>
  183. <script>
  184. import lineChart from './charts/lineChart.vue'
  185. import hisChart from './charts/hisChart.vue'
  186. import areaZz from '../../components/areaZz.vue'
  187. import TableFooter from "../../components/TableFooter"
  188. import {mapState, mapMutations} from 'vuex';
  189. export default {
  190. name: "collectData",
  191. data () {
  192. return {
  193. areaSelected: '330000',
  194. boxList: [
  195. {
  196. id: 1,
  197. name: '母猪总存栏',
  198. value: 25000,
  199. },
  200. {
  201. id: 2,
  202. name: '预计年出栏量',
  203. value: 500000
  204. },
  205. {
  206. id: 3,
  207. name: '母猪目标存栏',
  208. value: 40000
  209. },
  210. {
  211. id: 4,
  212. name: '目标年出栏量',
  213. value: 800000
  214. }
  215. ],
  216. daySelected: 1, // 年月日选中值,默认月
  217. timeSelected: '', // 时间选择器选中的时间
  218. monthSelected: '', // 月份选择
  219. startYear: '',
  220. endYear: '',
  221. // 母猪总存栏走势
  222. lineList: [],
  223. // 母猪存栏比较
  224. hisList: [],
  225. searchForm: {
  226. pigAllMin: '', // 母猪存栏
  227. pigAllMax: '',
  228. pigAddMin: '', // 母猪新增
  229. pigAddMax: '',
  230. eartagMin: '', // 耳标离线
  231. eartagMax: '',
  232. bearPigMin: '', // 能繁母猪
  233. bearPigMax: ''
  234. },
  235. tableData: [
  236. {
  237. name: '测试牧场'
  238. }
  239. ],
  240. totalPages: 0,
  241. pageNum: 1,
  242. pageSize: 20
  243. }
  244. },
  245. computed: {
  246. ...mapState(['selected'])
  247. },
  248. components: {
  249. lineChart,
  250. hisChart,
  251. areaZz,
  252. TableFooter
  253. },
  254. methods: {
  255. ...mapMutations(['updateSelected']),
  256. /* 年月日选择 */
  257. scopeDay (val) {
  258. this.daySelected = val
  259. switch (val) {
  260. case 1: // 日
  261. this.initEchart()
  262. break;
  263. case 2: // 月
  264. this.initEchart()
  265. break;
  266. case 3: // 年
  267. this.initEchart()
  268. break;
  269. default:
  270. break;
  271. }
  272. },
  273. toCollectDay () {
  274. this.$router.push('/collectDay')
  275. },
  276. // 修改size
  277. sizeChange(val) {
  278. this.pageSize = val;
  279. },
  280. // 修改页数
  281. pageChange(val) {
  282. this.pageNum = val;
  283. },
  284. // echarts 图的数据
  285. initEchart () {
  286. let data = {}
  287. if(this.daySelected === 1) {
  288. data = {
  289. regionCode: this.areaSelected,
  290. start: this.timeSelected[0] ? this.timeSelected[0]: '',
  291. end: this.timeSelected[1] ? this.timeSelected[1]: '',
  292. type: this.daySelected
  293. }
  294. } else if(this.daySelected === 2) {
  295. data = {
  296. regionCode: this.areaSelected,
  297. start: this.monthSelected[0] ? this.monthSelected[0] : '',
  298. end: this.monthSelected[1] ? this.monthSelected[1] : '',
  299. type: this.daySelected
  300. }
  301. } else {
  302. data = {
  303. regionCode: this.areaSelected,
  304. start: this.startYear ? this.startYear : '',
  305. end: this.endYear ? this.endYear : '',
  306. type: this.daySelected
  307. }
  308. }
  309. this.$http({
  310. url: this.$http.adornUrl(`http://122.112.224.199:9000/dataAnalysis/getPigStockByRegionCode`),
  311. method: 'post',
  312. data: this.$http.adornData(data)
  313. }).then(res => {
  314. if(res.data.code === 0) {
  315. this.lineList = [res.data.dateList, res.data.stockList];
  316. }
  317. })
  318. },
  319. // 牧场排名的查询
  320. search () {
  321. console.log('查询');
  322. },
  323. // 牧场排名 - 表格
  324. init () {
  325. this.$http({
  326. url: this.$http.adornUrl(`http://192.168.1.171:8210/management/sowranktable/list`),
  327. method: 'post',
  328. data: this.$http.adornData({
  329. 'page': this.pageNum,
  330. 'limit': this.pageSize
  331. })
  332. }).then(res => {
  333. // if(data.code === 0) {
  334. console.log(res);
  335. // this.tableData = data.
  336. // } else {
  337. // this.hisList = [];
  338. // }
  339. })
  340. },
  341. // 点击表格的某一行
  342. rowClick (row) {
  343. console.log(row);
  344. console.log('点击了某一行');
  345. },
  346. // 省市县
  347. getCityCode (val) {
  348. console.log(val);
  349. let len = val.length
  350. this.areaSelected = val[len-1]
  351. this.initCom();
  352. },
  353. onChange() {
  354. if(this.daySelected === 3) {
  355. if(this.startYear > this.endYear) {
  356. this.$message.error('起始年份不能大于终止年份')
  357. this.startYear = '';
  358. this.endYear = '';
  359. return false;
  360. } else {
  361. this.initEchart()
  362. }
  363. } else {
  364. this.initEchart()
  365. }
  366. },
  367. // 存栏比较
  368. initCom() {
  369. let params = {
  370. regionCode: this.areaSelected
  371. }
  372. this.$http({
  373. url: this.$http.adornUrl('http://122.112.224.199:9000/dataAnalysis/childPigStock'),
  374. method: 'get',
  375. params: this.$http.adornParams(params)
  376. })
  377. .then(res => {
  378. if(res.data.code === 0) {
  379. this.hisList = [res.data.regionList, res.data.regionStockList];
  380. } else {
  381. this.hisList = [];
  382. }
  383. })
  384. },
  385. // 跳转
  386. onSelect() {
  387. this.updateSelected(1);
  388. this.$router.push({
  389. path: '/',
  390. query: {farmCode: 'N0003', type: 4}
  391. })
  392. }
  393. },
  394. mounted() {
  395. this.initEchart();
  396. this.initCom();
  397. // this.init()
  398. },
  399. }
  400. </script>
  401. <style scoped>
  402. .box {
  403. width: 100%;
  404. height: 140px;
  405. background-color: #F9F9F9;
  406. display: flex;
  407. justify-content: space-around;
  408. align-items: center;
  409. }
  410. /* 汇总数据块的顶栏 */
  411. .box_item {
  412. width: 198px;
  413. height: 78px;
  414. border: 1px solid #ddd;
  415. text-align: center;
  416. }
  417. .box_item p {
  418. height: 39px;
  419. line-height: 39px;
  420. margin: 0;
  421. }
  422. /* 图表结构的大局 */
  423. .chartDiv {
  424. margin: 10px;
  425. margin-top: 20px;
  426. border: 1px solid #ddd;
  427. height: 305px;
  428. background-color: #fff;
  429. }
  430. .title {
  431. background-color: rgba(243, 243, 243, 1);
  432. height: 50px;
  433. line-height: 50px;
  434. padding-left: 50px;
  435. font-size: 14px;
  436. border-bottom: 1px solid #ddd;
  437. }
  438. .right {
  439. float: right;
  440. margin-right: 20px;
  441. font-size: 12px;
  442. }
  443. /** 年月日选择 */
  444. .scopeEle {
  445. display: inline-block;
  446. border: 1px solid #ccc;
  447. width: 75px;
  448. text-align: center;
  449. height: 26px;
  450. line-height: 26px;
  451. margin-left: -1px;
  452. cursor: pointer;
  453. background-color: #fff;
  454. }
  455. .borderLeft {
  456. border-radius: 5px 0 0 5px;
  457. }
  458. .borderRight {
  459. border-radius: 0 5px 5px 0 ;
  460. }
  461. /* 如果选中了 */
  462. .ifScoped {
  463. background-color: #1abc9c;
  464. color: #fff;
  465. border: 1px solid #1abc9c;
  466. }
  467. .form_item {
  468. width: 100%;
  469. height: 60px;
  470. background-color: #fff;
  471. border-top: 1px solid #ddd;
  472. border-bottom: 1px solid #ddd;
  473. box-sizing: border-box;
  474. padding: 15px;
  475. margin-top: 15px;
  476. }
  477. .box_table {
  478. width: 100%;
  479. box-sizing: border-box;
  480. margin-top: 15px;
  481. padding-right: 10px;
  482. /*padding: 10px;*/
  483. }
  484. </style>