farm.vue 11 KB

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