hand.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <template>
  2. <div class="band">
  3. <div class="header_title">存栏走势</div>
  4. <div style="padding-top: 60px;">
  5. <div class="box">
  6. <div class="box_header">
  7. <span>母猪存栏统计</span>
  8. <div class="right">
  9. <el-date-picker
  10. v-model="timeSelected"
  11. v-show="daySelected === 1"
  12. type="daterange"
  13. range-separator="—"
  14. start-placeholder="开始日期"
  15. end-placeholder="结束日期"
  16. @change="onChange"
  17. value-format="yyyy-MM-dd"
  18. size="mini">
  19. </el-date-picker>
  20. <el-date-picker
  21. v-model="monthSelected"
  22. v-show="daySelected === 2"
  23. type="monthrange"
  24. range-separator="至"
  25. start-placeholder="开始月份"
  26. end-placeholder="结束月份"
  27. @change="onChange"
  28. size="mini"
  29. value-format="yyyy-MM">
  30. </el-date-picker>
  31. <div v-show="daySelected === 3">
  32. <el-date-picker
  33. v-model="startYear"
  34. type="year"
  35. placeholder="选择年"
  36. size="mini"
  37. style="width: 100px;"
  38. value-format="yyyy">
  39. </el-date-picker>
  40. -
  41. <el-date-picker
  42. v-model="endYear"
  43. type="year"
  44. placeholder="选择年"
  45. size="mini"
  46. @change="onChange"
  47. style="width: 100px;"
  48. value-format="yyyy">
  49. </el-date-picker>
  50. </div>
  51. </div>
  52. <div class="right">
  53. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 1, 'borderLeft': true}" @click="scopeDay(1)">日</span>
  54. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 2}" @click="scopeDay(2)">月</span>
  55. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 3, 'borderRight': true}" @click="scopeDay(3)">年</span>
  56. </div>
  57. </div>
  58. <div class="box_content">
  59. <chart-mzcl :mzclList="mzclList"></chart-mzcl>
  60. </div>
  61. </div>
  62. <div class="box">
  63. <div class="box_header">
  64. <span>母猪新增-离线走势图</span>
  65. <div class="right">
  66. <el-date-picker
  67. v-model="timeSelected"
  68. v-show="daySelected === 1"
  69. type="daterange"
  70. range-separator="—"
  71. start-placeholder="开始日期"
  72. end-placeholder="结束日期"
  73. @change="onChange"
  74. value-format="yyyy-MM-dd"
  75. size="mini">
  76. </el-date-picker>
  77. <el-date-picker
  78. v-model="monthSelected"
  79. v-show="daySelected === 2"
  80. type="monthrange"
  81. range-separator="至"
  82. start-placeholder="开始月份"
  83. end-placeholder="结束月份"
  84. @change="onChange"
  85. size="mini"
  86. value-format="yyyy-MM">
  87. </el-date-picker>
  88. <div v-show="daySelected === 3">
  89. <el-date-picker
  90. v-model="startYear"
  91. type="year"
  92. placeholder="选择年"
  93. size="mini"
  94. style="width: 100px;"
  95. value-format="yyyy">
  96. </el-date-picker>
  97. -
  98. <el-date-picker
  99. v-model="endYear"
  100. type="year"
  101. placeholder="选择年"
  102. size="mini"
  103. @change="onChange"
  104. style="width: 100px;"
  105. value-format="yyyy">
  106. </el-date-picker>
  107. </div>
  108. </div>
  109. <div class="right">
  110. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 1, 'borderLeft': true}" @click="scopeDay(1)">日</span>
  111. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 2}" @click="scopeDay(2)">月</span>
  112. <span :class="{'scopeEle': true, 'ifScoped': daySelected === 3, 'borderRight': true}" @click="scopeDay(3)">年</span>
  113. </div>
  114. </div>
  115. <div class="box_main">
  116. <chart-mzxz :mzxzList="mzxzList"></chart-mzxz>
  117. </div>
  118. </div>
  119. </div>
  120. <!-- <div class="box">-->
  121. <!-- <div class="box_header">公猪存栏走势</div>-->
  122. <!-- <div class="box_main">-->
  123. <!-- <chart-gzxz></chart-gzxz>-->
  124. <!-- </div>-->
  125. <!-- </div>-->
  126. </div>
  127. </template>
  128. <script>
  129. import chartMzcl from "./chart/chartMzcl";
  130. import chartMzxz from "./chart/chartMzxz";
  131. // import chartGzxz from "./chart/chartGzxz";
  132. export default {
  133. name: "hand",
  134. components: {
  135. chartMzcl,
  136. chartMzxz,
  137. // chartGzxz
  138. },
  139. data() {
  140. return {
  141. daySelected: 1, // 年月日选中值,默认月
  142. timeSelected: [], // 时间选择器选中的时间
  143. monthSelected: [], // 月份选择
  144. startYear: '',
  145. endYear: '',
  146. farmCode: '330703010000422',
  147. mzclList: [],
  148. mzxzList: [],
  149. }
  150. },
  151. methods: {
  152. init() {
  153. let params = {
  154. farmCode: this.farmCode,
  155. type: this.daySelected,
  156. }
  157. if(this.daySelected === 1) {
  158. params.startDate = this.timeSelected[0];
  159. params.endDate = this.timeSelected[1];
  160. } else if(this.daySelected === 2) {
  161. params.startDate = this.monthSelected[0];
  162. params.endDate = this.monthSelected[1];
  163. } else if(this.daySelected === 3) {
  164. params.startDate = this.startYear;
  165. params.endDate = this.endYear
  166. }
  167. this.$http({
  168. url: this.$http.adornUrl('http://122.112.224.199:9000/manager/dailytabulatedata/countAllChange'),
  169. method: 'get',
  170. params: this.$http.adornParams(params)
  171. })
  172. .then(res => {
  173. if(res.data.code === 0) {
  174. let arr = [];
  175. let arr1 = [];
  176. let arr2 = [];
  177. let arr3 = [];
  178. let arr4 = [];
  179. let arr5 = [];
  180. res.data.page.forEach(item => {
  181. arr.push(item.ydate);
  182. arr1.push(item.stockNew);
  183. arr2.push(item.offlineNo);
  184. // 配怀
  185. arr3.push(item.stock1);
  186. // 分娩
  187. arr4.push(item.stock2);
  188. // 后备
  189. arr5.push(item.stock3);
  190. })
  191. let time = arr.reverse()
  192. let stockNew = arr1.reverse();
  193. let offlineNo = arr2.reverse()
  194. let stock1 = arr3.reverse();
  195. let stock2 = arr4.reverse();
  196. let stock3 = arr5.reverse()
  197. this.mzclList = [time, stock1, stock2, stock3];
  198. this.mzxzList = [time, stockNew, offlineNo];
  199. } else {
  200. this.mzclList = [];
  201. }
  202. })
  203. },
  204. onChange() {
  205. if(this.daySelected === 3) {
  206. if(this.startYear > this.endYear) {
  207. this.$message.error('起始年份不能大于终止年份')
  208. this.startYear = '';
  209. this.endYear = '';
  210. return false;
  211. } else {
  212. this.init()
  213. }
  214. } else {
  215. this.init()
  216. }
  217. },
  218. scopeDay(val) {
  219. this.daySelected = val
  220. this.init();
  221. // switch (val) {
  222. // case 1: // 日
  223. // this.init()
  224. // break;
  225. // case 2: // 月
  226. // this.init()
  227. // break;
  228. // case 3: // 年
  229. // this.init()
  230. // break;
  231. // default:
  232. // break;
  233. // }
  234. }
  235. },
  236. mounted() {
  237. this.init();
  238. }
  239. }
  240. </script>
  241. <style scoped>
  242. .band {
  243. width: 100%;
  244. box-sizing: border-box;
  245. /*padding: 20px 0;*/
  246. }
  247. .box {
  248. border: 1px solid #ddd;
  249. box-sizing: border-box;
  250. margin-bottom: 20px;
  251. }
  252. .box_header {
  253. box-sizing: border-box;
  254. padding: 10px 20px;
  255. background-color: #F3F3F3;
  256. height: 50px;
  257. border-bottom: 1px solid #ddd;
  258. }
  259. .box_content {
  260. box-sizing: border-box;
  261. padding: 10px 20px;
  262. background-color: #fff;
  263. height: 500px;
  264. }
  265. .box_main {
  266. box-sizing: border-box;
  267. padding: 10px 20px;
  268. background-color: #fff;
  269. height: 340px;
  270. }
  271. .right {
  272. float: right;
  273. margin-right: 20px;
  274. font-size: 12px;
  275. }
  276. /** 年月日选择 */
  277. .scopeEle {
  278. display: inline-block;
  279. border: 1px solid #ccc;
  280. width: 75px;
  281. text-align: center;
  282. height: 26px;
  283. line-height: 26px;
  284. margin-left: -1px;
  285. cursor: pointer;
  286. background-color: #fff;
  287. }
  288. .borderLeft {
  289. border-radius: 5px 0 0 5px;
  290. }
  291. .borderRight {
  292. border-radius: 0 5px 5px 0 ;
  293. }
  294. /* 如果选中了 */
  295. .ifScoped {
  296. background-color: #1abc9c;
  297. color: #fff;
  298. border: 1px solid #1abc9c;
  299. }
  300. .header_title {
  301. position: fixed;
  302. width: 1640px;
  303. height: 40px;
  304. background-color: #F7F7F7;
  305. border: 1px solid #ddd;
  306. line-height: 40px;
  307. color: #6FA8C8;
  308. margin-bottom: 10px;
  309. padding-left: 20px;
  310. z-index: 99;
  311. }
  312. </style>