farm.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. <template>
  2. <div>
  3. <div>
  4. <div class="box">
  5. <div class="box_item" v-for="item in boxList" :key="item.id">
  6. <p>{{item.name}}</p>
  7. <p class="number">
  8. {{item.value}}
  9. <template v-if="item.data !==0">
  10. <i :class="['icon', item.isUp ? '' : 'icon_red']"></i>
  11. <span v-if="item.isUp" class="icon_green">+{{item.data}}</span>
  12. <span v-else class="icon_dev">-{{item.data}}</span>
  13. </template>
  14. </p>
  15. </div>
  16. </div>
  17. <!-- 拆分 市 -->
  18. <div class="form_item">
  19. <el-form :inline="true" size="mini">
  20. <el-form-item label="时间:">
  21. <el-date-picker
  22. v-model="value2"
  23. type="datetimerange"
  24. :picker-options="pickerOptions"
  25. range-separator="至"
  26. start-placeholder="开始日期"
  27. end-placeholder="结束日期"
  28. align="right">
  29. </el-date-picker>
  30. </el-form-item>
  31. <el-form-item label="母猪存栏:">
  32. <el-input style="width: 50px;" v-model="minStockTotal"></el-input>
  33. &nbsp;至&nbsp;
  34. <el-input style="width: 50px;" v-model="maxStockTotal"></el-input>
  35. </el-form-item>
  36. <el-form-item label="母猪新增:">
  37. <el-input style="width: 50px;" v-model="minStockNew"></el-input>
  38. &nbsp;至&nbsp;
  39. <el-input style="width: 50px;" v-model="maxStockNew"></el-input>
  40. </el-form-item>
  41. <el-form-item label="耳标离线:">
  42. <el-input style="width: 50px;" v-model="minOfflineNo"></el-input>
  43. &nbsp;至&nbsp;
  44. <el-input style="width: 50px;" v-model="maxOfflineNo"></el-input>
  45. </el-form-item>
  46. <el-form-item label="能繁母猪:">
  47. <el-input style="width: 50px;" v-model="minSowStock"></el-input>
  48. &nbsp;至&nbsp;
  49. <el-input style="width: 50px;" v-model="maxSowStock"></el-input>
  50. </el-form-item>
  51. <el-form-item>
  52. <el-button type="primary" @click="search">查询</el-button>
  53. </el-form-item>
  54. </el-form>
  55. </div>
  56. <!-- 拆分 市 -->
  57. <div class="box_table">
  58. <el-table
  59. :data="tableData"
  60. border
  61. stripe
  62. :header-cell-style="{'text-align':'center', 'background-color': '#F9FAFC', 'padding': '5px 0', 'color': '#666666'}"
  63. :cell-style="{'text-align':'center', 'padding': '5px 0'}"
  64. height="700"
  65. style="width: 100%;">
  66. <el-table-column
  67. prop="sowTotalStock"
  68. label="时间">
  69. </el-table-column>
  70. <el-table-column
  71. prop="sowTotalStock"
  72. label="母猪总存栏">
  73. </el-table-column>
  74. <el-table-column
  75. prop="eartagNew"
  76. label="母猪新增">
  77. </el-table-column>
  78. <el-table-column
  79. prop="eartagOffone"
  80. label="耳标离线">
  81. </el-table-column>
  82. <el-table-column
  83. prop="sowStock"
  84. label="能繁母猪存栏">
  85. </el-table-column>
  86. <el-table-column label="存栏能繁母猪月龄分布">
  87. <el-table-column
  88. prop="date"
  89. label="8月-20月">
  90. </el-table-column>
  91. <el-table-column
  92. prop="date"
  93. label="20月-32月">
  94. </el-table-column>
  95. <el-table-column
  96. prop="date"
  97. label="32月-44月">
  98. </el-table-column>
  99. <el-table-column
  100. prop="date"
  101. label=">44月">
  102. </el-table-column>
  103. </el-table-column>
  104. <el-table-column
  105. prop="stock1"
  106. label="配怀存栏">
  107. </el-table-column>
  108. <el-table-column
  109. prop="stock2"
  110. label="分娩存栏">
  111. </el-table-column>
  112. <el-table-column
  113. prop="stock3"
  114. label="空怀存栏">
  115. </el-table-column>
  116. <el-table-column
  117. prop="stock4"
  118. label="后备存栏">
  119. </el-table-column>
  120. <el-table-column
  121. prop="stock5"
  122. label="公猪存栏">
  123. </el-table-column>
  124. </el-table>
  125. <table-footer
  126. :totals="totalPages"
  127. :size="pageSize"
  128. @sizeChange="sizeChange"
  129. @pageChange="pageChange"></table-footer>
  130. </div>
  131. </div>
  132. </div>
  133. </template>
  134. <script>
  135. import TableFooter from "../../../components/TableFooter";
  136. import {mapState} from "vuex";
  137. export default {
  138. name: "farm",
  139. components: {
  140. TableFooter
  141. },
  142. props: ['farmCode'],
  143. data() {
  144. return {
  145. boxList: [
  146. {
  147. id: 1,
  148. name: '母猪总存栏',
  149. value: 2500,
  150. data: 20,
  151. isUp: true,
  152. },
  153. {
  154. id: 2,
  155. name: '配怀存栏',
  156. value: 1689,
  157. data: 20,
  158. isUp: true,
  159. },
  160. {
  161. id: 3,
  162. name: '分娩存栏',
  163. value: 1689,
  164. data: 20,
  165. isUp: false,
  166. },
  167. {
  168. id: 4,
  169. name: '后备存栏',
  170. value: 1689,
  171. data: 0,
  172. isUp: true,
  173. },
  174. {
  175. id: 5,
  176. name: '公猪存栏',
  177. value: 1689,
  178. data: 20,
  179. isUp: true,
  180. },
  181. {
  182. id: 6,
  183. name: '预计年出栏量',
  184. value: 50000,
  185. data: 20,
  186. isUp: true,
  187. },
  188. ],
  189. pickerOptions: {
  190. shortcuts: [{
  191. text: '最近一周',
  192. onClick(picker) {
  193. const end = new Date();
  194. const start = new Date();
  195. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  196. picker.$emit('pick', [start, end]);
  197. }
  198. }, {
  199. text: '最近一个月',
  200. onClick(picker) {
  201. const end = new Date();
  202. const start = new Date();
  203. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  204. picker.$emit('pick', [start, end]);
  205. }
  206. }, {
  207. text: '最近三个月',
  208. onClick(picker) {
  209. const end = new Date();
  210. const start = new Date();
  211. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  212. picker.$emit('pick', [start, end]);
  213. }
  214. }]
  215. },
  216. value2: '',
  217. tableData: [],
  218. totalPages: 0,
  219. pageNum: 1,
  220. pageSize: 20,
  221. minStockTotal: '',
  222. maxStockTotal: '',
  223. minStockNew: '',
  224. maxStockNew: '',
  225. minOfflineNo: '',
  226. maxOfflineNo: '',
  227. minSowStock: '',
  228. maxSowStock: '',
  229. isProvince: false,
  230. }
  231. },
  232. computed: {
  233. ...mapState(['baseUrl'])
  234. },
  235. methods: {
  236. getCityCode(val) {
  237. let len = val.length;
  238. this.countyCode = val[len - 1];
  239. },
  240. // 修改size
  241. sizeChange(val) {
  242. this.pageSize = val;
  243. },
  244. // 修改页数
  245. pageChange(val) {
  246. this.pageNum = val;
  247. },
  248. search() {
  249. // this.init();
  250. },
  251. renderHeader(createElement, {column}) {
  252. const label = column.label
  253. const labelArr = label.split(' ')
  254. return createElement(
  255. 'span', //创建最外层的标签可随意
  256. [
  257. createElement('span', { // 创建第一个元素的标签可随意
  258. attrs: {type: 'text'}
  259. }, [labelArr[0]]),
  260. createElement('div', { // 创建第二个元素的标签可随意
  261. attrs: {type: 'text', style: 'font-size:14px'} // 给分割的某个元素单独加样式
  262. }, [labelArr[1] || ''])
  263. ]
  264. )
  265. },
  266. // 省级
  267. // init() {
  268. // let params = {
  269. // countyCode: this.countyCode,
  270. // farmCode: this.farmCode,
  271. // minStockTotal: this.minStockTotal,
  272. // maxStockTotal: this.maxStockTotal,
  273. // minStockNew: this.minStockNew,
  274. // maxStockNew: this.maxStockNew,
  275. // minOfflineNo: this.minOfflineNo,
  276. // maxOfflineNo: this.maxOfflineNo,
  277. // minSowStock: this.minSowStock,
  278. // maxSowStock: this.maxSowStock
  279. // }
  280. // console.log(111);
  281. // this.$http({
  282. // url: this.$http.adornUrl(`${this.baseUrl}/manager/farmstock/countAll`),
  283. // method: 'get',
  284. // params: this.$http.adornParams(params)
  285. // })
  286. // .then(res => {
  287. // if (res.data.code === 0) {
  288. // this.tableData = res.data.page;
  289. // }
  290. // })
  291. // },
  292. // // 市级
  293. // initCity() {
  294. // let params = {
  295. // countyCode: this.countyCode,
  296. // farmCode: this.farmCode,
  297. // minStockTotal: this.minStockTotal,
  298. // maxStockTotal: this.maxStockTotal,
  299. // minStockNew: this.minStockNew,
  300. // maxStockNew: this.maxStockNew,
  301. // minOfflineNo: this.minOfflineNo,
  302. // maxOfflineNo: this.maxOfflineNo,
  303. // minSowStock: this.minSowStock,
  304. // maxSowStock: this.maxSowStock
  305. // }
  306. // console.log(222);
  307. // this.$http({
  308. // url: this.$http.adornUrl(`${this.baseUrl}/manager/farmstock/cityCountAll`),
  309. // method: 'get',
  310. // params: this.$http.adornParams(params)
  311. // })
  312. // .then(res => {
  313. // if(res.data.code === 0) {
  314. // this.tableData = res.data.page;
  315. // }
  316. // })
  317. // },
  318. // 县级
  319. // initCounty() {
  320. // let params = {
  321. // countyCode: this.countyCode,
  322. // farmName: this.farmName,
  323. // minStockTotal: this.minStockTotal,
  324. // maxStockTotal: this.maxStockTotal,
  325. // minStockNew: this.minStockNew,
  326. // maxStockNew: this.maxStockNew,
  327. // minOfflineNo: this.minOfflineNo,
  328. // maxOfflineNo: this.maxOfflineNo,
  329. // minSowStock: this.minSowStock,
  330. // maxSowStock: this.maxSowStock
  331. // }
  332. // this.$http({
  333. // url: this.$http.adornUrl(`${this.baseUrl}/manager/farmstock/list`),
  334. // method: 'get',
  335. // params: this.$http.adornParams(params)
  336. // })
  337. // .then(res => {
  338. // if(res.data.code === 0) {
  339. // this.tableData = res.data.page.list;
  340. // }
  341. // })
  342. // },
  343. // // 去牧场
  344. onFarm() {
  345. let params = {
  346. farmCode: this.farmCode,
  347. startTime: this.value2[0],
  348. endTime: this.value2[1],
  349. minStockTotal: this.minStockTotal,
  350. maxStockTotal: this.maxStockTotal,
  351. minStockNew: this.minStockNew,
  352. maxStockNew: this.maxStockNew,
  353. minOfflineNo: this.minOfflineNo,
  354. maxOfflineNo: this.maxOfflineNo,
  355. minSowStock: this.minSowStock,
  356. maxSowStock: this.maxSowStock,
  357. }
  358. this.$http({
  359. url: this.$http.adornUrl(`${this.baseUrl}/manager/dailytabulatedata/list`),
  360. method: 'get',
  361. params: this.$http.adornParams(params)
  362. })
  363. .then(res => {
  364. if(res.data.code === 0) {
  365. this.tableData = res.data.page.list;
  366. }
  367. console.log(res);
  368. })
  369. },
  370. // 选择
  371. // onSelect(row) {
  372. // console.log(row);
  373. // this.countyCode = row.code;
  374. // this.type = row.type;
  375. // this.$emit('getCountyCode', {countyCode: this.countyCode, type: this.type});
  376. // // if (row.type === 1) {
  377. // // this.initCity();
  378. // // } else if (row.type === 2) {
  379. // // this.initCounty();
  380. // // }
  381. // },
  382. },
  383. mounted() {
  384. this.onFarm();
  385. }
  386. }
  387. </script>
  388. <style scoped>
  389. /deep/ .el-form--inline .el-form-item {
  390. margin-right: 15px;
  391. }
  392. .box{
  393. width: 100%;
  394. height: 140px;
  395. background-color: #F9F9F9;
  396. display: flex;
  397. justify-content: space-around;
  398. align-items: center;
  399. margin-bottom: 10px;
  400. }
  401. .box_item {
  402. width: 198px;
  403. height: 78px;
  404. border: 1px solid #ddd;
  405. text-align: center;
  406. }
  407. .box_item p {
  408. height: 39px;
  409. line-height: 39px;
  410. margin: 0;
  411. }
  412. .form_item {
  413. width: 100%;
  414. height: 60px;
  415. background-color: #fff;
  416. border: 1px solid #ddd;
  417. box-sizing: border-box;
  418. padding: 15px;
  419. }
  420. .box_table {
  421. width: 100%;
  422. box-sizing: border-box;
  423. margin-top: 10px;
  424. padding-right: 10px;
  425. /*padding: 10px;*/
  426. }
  427. .icon {
  428. display: inline-block;
  429. background-image: url("../../../assets/up.png");
  430. width: 24px;
  431. height: 24px;
  432. background-size: 100% 100%;
  433. }
  434. .icon_red {
  435. background-image: url("../../../assets/decline.png");
  436. background-size: 100% 100%;
  437. }
  438. .number {
  439. font-size: 24px;
  440. font-weight: 600;
  441. }
  442. .icon_green {
  443. color: #33FA40;
  444. font-size: 16px;
  445. }
  446. .icon_dev {
  447. color: #DA331D;
  448. font-size: 16px;
  449. }
  450. </style>