city.vue 12 KB

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