浏览代码

2021-10-21 ERP对接

East 3 年之前
父节点
当前提交
5c7019d692

+ 21 - 1
src/utils/api.js

@@ -387,4 +387,24 @@ export function getVideo(data) {
     method: 'post',
     data: data
   })
-}
+}
+
+/** 生产数据 */
+/* 生产数据 - ERP */
+// 存栏结构 - 存栏变动折线图
+export function getInventoryLines(data) {
+  return axios({
+    url: '/env/prodStock/listStorage',
+    method: 'get',
+    params: data
+  })
+}
+
+// 存栏情况 + 生产情况
+export function getInventoryAndProduct(data) {
+  return axios({
+    url: '/env/prodStock/listERP',
+    method: 'get',
+    params: data
+  })
+}

+ 56 - 5
src/views/PdcData/Analysis.vue

@@ -20,13 +20,13 @@
       <div>
         <div>
           <!-- 存栏结构 -->
-          <chart-inventory-pie></chart-inventory-pie>
+          <chart-inventory-pie :data="inventoryPieData"></chart-inventory-pie>
           <!-- 存栏变动 -->
-          <chart-inventory-lines></chart-inventory-lines>
+          <chart-inventory-lines :data="inventoryLinesData"></chart-inventory-lines>
         </div>
         <div>
           <!-- 存栏计数 -->
-          <inventory-items></inventory-items>
+          <inventory-items :data="inventoryItemsData"></inventory-items>
         </div>
       </div>
     </board>
@@ -34,9 +34,9 @@
     <!-- 生产情况 -->
     <board :title="title[2]">
       <!-- 环形图 -->
-      <production-donuts></production-donuts>
+      <production-donuts :data="productionPercents"></production-donuts>
       <!-- 8个格子 -->
-      <production-items></production-items>
+      <production-items :data="productionItems"></production-items>
     </board>
 
     <!-- 经营分析 -->
@@ -188,6 +188,8 @@ import { yingshouTableItems, yingshouTableShows } from './analysis/yingshouTable
 import { safetyTableItems, safetyTableShows } from './analysis/safetyTable.config'
 import { formItems } from './analysis/salesXForm.config'
 
+import { getInventoryLines, getInventoryAndProduct } from 'utils/api'
+
 export default {
   name: "Analysis",
   components: {
@@ -247,7 +249,14 @@ export default {
       tableShows: {},
       height: 300,
       tableData: [],
+      // 存栏情况
+      inventoryLinesData: {}, // 折线图数据
+      inventoryPieData: [], // 环形图数据
+      inventoryItemsData: [], // 下面块图的数据
       // 生产情况
+      productionPercents: [], // 百分比
+      productionItems: [], // 下面块图的数据
+      // 经营分析
       costOptions: [],
       costValue: '',
       // 重要指标
@@ -284,6 +293,9 @@ export default {
     this.yingshouTableShows = yingshouTableShows
     this.safetyTableItems = safetyTableItems
     this.safetyTableShows = safetyTableShows
+    /** 获取网络请求数据 */
+    this.initInventoryLines()
+    this.initInventoryAndProduct()
   },
   methods: {
     handleWorkInfoClick(item) {
@@ -315,6 +327,45 @@ export default {
     // 销售额选中日周月
     salesOnClickType(data) {
       console.log(data)
+    },
+    // 存栏情况 - 存栏变动折线图数据请求
+    initInventoryLines() {
+      getInventoryLines({}).then(res => {
+        if (res.code === 10000) {
+          this.inventoryLinesData = res.data
+        } else {
+          this.inventoryLinesData = {
+            boarStock: [],
+            fatpigStock: [],
+            griceStock: [],
+            month: [],
+            pigletStock: [],
+            sowStock: []
+          }
+        }
+      })
+    },
+    // 存栏情况 + 生产情况
+    initInventoryAndProduct() {
+      getInventoryAndProduct({}).then(res => {
+        if (res.code === 10000) {
+          // this.inventoryLinesData = res.data
+          console.log(res.data)
+          this.inventoryPieData = res.data.slice(0, 6)
+          this.inventoryItemsData = [res.data[1].stockQuantity, res.data[6].stockQuantity, res.data[7].stockQuantity, res.data[8].stockQuantity, res.data[2].stockQuantity, res.data[9].stockQuantity]
+          this.productionPercents = [res.data[12].rate*100, res.data[13].rate*100, res.data[14].rate*100, res.data[15].rate*100, res.data[16].rate*100]
+          this.productionItems = [res.data[17].stockQuantity, res.data[18].stockQuantity, res.data[19].stockQuantity, res.data[20].stockQuantity, res.data[21].stockQuantity, res.data[22].stockQuantity, res.data[23].stockQuantity, res.data[24].stockQuantity]
+        } else {
+          // this.inventoryLinesData = {
+          //   boarStock: [],
+          //   fatpigStock: [],
+          //   griceStock: [],
+          //   month: [],
+          //   pigletStock: [],
+          //   sowStock: []
+          // }
+        }
+      })
     }
   },
 }

+ 21 - 8
src/views/PdcData/analysis/ChartInventoryLines.vue

@@ -1,9 +1,9 @@
 <!--
  * @Author: your name
  * @Date: 2021-10-08 17:24:29
- * @LastEditTime: 2021-10-11 09:37:46
+ * @LastEditTime: 2021-10-21 15:48:04
  * @LastEditors: Please set LastEditors
- * @Description: In User Settings Edit
+ * @Description: 存栏结构 - 存栏变动折线图
  * @FilePath: \hyyfClient\src\views\PdcData\analysis\ChartInventoryLines.vue
 -->
 <template>
@@ -19,6 +19,12 @@ export default {
       myChart: null
     }
   },
+  props: {
+    data: {
+      type: Object,
+      required: true
+    }
+  },
   methods: {
     init() {
       let options = {
@@ -43,7 +49,8 @@ export default {
         xAxis: [
           {
             type: 'category',
-            data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+            name: '月',
+            data: this.data.month,
             axisPointer: {
               type: 'shadow'
             },
@@ -103,7 +110,7 @@ export default {
             name: '头',
             type: 'line',
             smooth: false,
-            data: [300, 1000, 1600, 1300, 2300, 2450, 2400, 2000, 2200, 1700, 1800, 1500],
+            data: this.data.sowStock,
             itemStyle: {
               normal: {
                 color: '#3aa0ff',
@@ -117,7 +124,7 @@ export default {
             name: '头',
             type: 'line',
             smooth: false,
-            data: [100, 500, 1000, 1100, 1700, 2100, 1900, 900, 800, 850, 900, 600],
+            data: this.data.boarStock,
             itemStyle: {
               normal: {
                 color: '#4dcb73',
@@ -131,7 +138,7 @@ export default {
             name: '头',
             type: 'line',
             smooth: false,
-            data: [600, 1300, 1900, 1600, 2500, 2750, 2600, 2300, 2400, 2000, 2100, 1900],
+            data: this.data.griceStock,
             itemStyle: {
               normal: {
                 color: '#fad337',
@@ -145,7 +152,7 @@ export default {
             name: '头',
             type: 'line',
             smooth: false,
-            data: [1600, 2300, 2900, 2600, 3500, 3450, 3600, 3500, 3400, 3000, 3100, 2800],
+            data: this.data.pigletStock,
             itemStyle: {
               normal: {
                 color: '#f2637b',
@@ -159,7 +166,7 @@ export default {
             name: '头',
             type: 'line',
             smooth: false,
-            data: [900, 1700, 2300, 2000, 2800, 2950, 3000, 2800, 2900, 2700, 2800, 2400],
+            data: this.data.fatpigStock,
             itemStyle: {
               normal: {
                 color: '#975fe4',
@@ -184,6 +191,12 @@ export default {
   mounted() {
     this.myChart = this.$echarts.init(document.getElementById('chartLines'));
     this.init();
+  },
+  watch: {
+    data(newValue) {
+      console.log(newValue)
+      this.init()
+    }
   }
 }
 </script>

+ 39 - 25
src/views/PdcData/analysis/ChartInventoryPie.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-09-30 15:46:57
- * @LastEditTime: 2021-10-12 08:42:45
+ * @LastEditTime: 2021-10-21 18:08:06
  * @LastEditors: Please set LastEditors
  * @Description: 存栏结构图
  * @FilePath: \hyyfClient\src\views\PdcData\analysis\ChartInventoryPie.vue
@@ -18,8 +18,16 @@ export default {
       myChart: null
     }
   },
+  props: {
+    data: {
+      type: Array,
+      required: true
+    }
+  },
   methods: {
     init() {
+      const _this = this
+      let total = this.data[1].stockQuantity + this.data[2].stockQuantity + this.data[3].stockQuantity + this.data[4].stockQuantity + this.data[5].stockQuantity
       let options = {
         title: {
           text: '存栏结构',
@@ -46,22 +54,22 @@ export default {
             fontSize: 15,
             color: '#666'
           },
-          // formatter: function (name) {
-          //   var legendIndex = 0;
-          //   var clientLabels = [
-          //     { name: '母猪存栏', percent: '36%', number: 4544 },
-          //     { name: '公猪存栏', percent: '20%', number: 3244 },
-          //     { name: '哺乳仔猪存栏', percent: '16%', number: 2032 },
-          //     { name: '保育猪存栏', percent: '10%', number: 1644 },
-          //     { name: '育肥猪存栏', percent: '9%', number: 1546 },
-          //   ]
-          //   clientLabels.forEach(function (value, i) {
-          //       if (value.name == name) {
-          //           legendIndex = i;
-          //       }
-          //   });
-          //   return name + "|     " + clientLabels[legendIndex].percent + "     " + clientLabels[legendIndex].number + '头';
-          // }
+          formatter: function (name) {
+            var legendIndex = 0;
+            var clientLabels = [
+              { name: '母猪存栏', percent: parseFloat(_this.data[1].stockQuantity / total)*100 + '%', number: _this.data[1].stockQuantity },
+              { name: '公猪存栏', percent:  parseFloat(_this.data[2].stockQuantity / total)*100 + '%', number: _this.data[2].stockQuantity },
+              { name: '哺乳仔猪存栏', percent:  parseFloat(_this.data[3].stockQuantity / total)*100 + '%', number: _this.data[3].stockQuantity },
+              { name: '保育猪存栏', percent:  parseFloat(_this.data[4].stockQuantity / total)*100 + '%', number: _this.data[4].stockQuantity },
+              { name: '育肥猪存栏', percent:  parseFloat(_this.data[5].stockQuantity / total)*100 + '%', number: _this.data[5].stockQuantity },
+            ]
+            clientLabels.forEach(function (value, i) {
+                if (value.name == name) {
+                    legendIndex = i;
+                }
+            });
+            return name + " (" + clientLabels[legendIndex].percent + ', ' + clientLabels[legendIndex].number + '头' + ") ";
+          }
         },
         graphic: [
           {
@@ -76,10 +84,10 @@ export default {
           },
           {
             type: 'text',
-            left: '24%',
+            left: '25%',
             top: '53%',
             style: {
-              text: '123,224头',
+              text: total + '头',
               fontSize: 22,
               fontWeight: 700
             }
@@ -117,11 +125,11 @@ export default {
               }
             },
             data: [
-              { value: 4544, name: '母猪存栏' },
-              { value: 3244, name: '公猪存栏' },
-              { value: 2032, name: '哺乳仔猪存栏' },
-              { value: 1644, name: '保育猪存栏' },
-              { value: 1546, name: '育肥猪存栏' }
+              { value: this.data[1].stockQuantity, name: '母猪存栏' },
+              { value: this.data[2].stockQuantity, name: '公猪存栏' },
+              { value: this.data[3].stockQuantity, name: '哺乳仔猪存栏' },
+              { value: this.data[4].stockQuantity, name: '保育猪存栏' },
+              { value: this.data[5].stockQuantity, name: '育肥猪存栏' }
             ]
           }
         ]
@@ -132,7 +140,13 @@ export default {
   },
   mounted() {
     this.myChart = this.$echarts.init(document.getElementById('chartPie'));
-    this.init()
+    // this.init()
+  },
+  watch: {
+    data(newValue) {
+      console.log(newValue)
+      this.init()
+    }
   }
 }
 </script>

+ 19 - 7
src/views/PdcData/analysis/InventoryItems.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-10-11 10:10:26
- * @LastEditTime: 2021-10-11 14:49:33
+ * @LastEditTime: 2021-10-21 16:42:37
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: \hyyfClient\src\views\PdcData\analysis\InventoryItems.vue
@@ -16,7 +16,7 @@
         <span>母猪存栏</span>
       </template>
       <template v-slot:dataNum>
-        <span>15</span>
+        <span>{{ data[0] }}</span>
       </template>
     </inventory-item>
     <inventory-item>
@@ -30,7 +30,7 @@
       </template>
       <template v-slot:dataNum>
         <div>
-          5000
+          {{ data[1] }}
         </div>
       </template>
     </inventory-item>
@@ -45,7 +45,7 @@
       </template>
       <template v-slot:dataNum>
         <div>
-          5000
+          {{ data[2] }}
         </div>
       </template>
     </inventory-item>
@@ -63,7 +63,7 @@
       </template>
       <template v-slot:dataNum>
         <div>
-          15240
+          {{data[3] }}
         </div>
       </template>
     </inventory-item>
@@ -78,7 +78,7 @@
       </template>
       <template v-slot:dataNum>
         <div>
-          15240
+          {{ data[4] }}
         </div>
       </template>
     </inventory-item>
@@ -96,7 +96,7 @@
       </template>
       <template v-slot:dataNum>
         <div>
-          15240
+          {{ data[5] }}
         </div>
       </template>
     </inventory-item>
@@ -106,8 +106,20 @@
 import InventoryItem from 'components/erp/InventoryItem.vue'
 
 export default {
+  props: {
+    data: {
+      type: Array,
+      default: () => ([1, 1, 1, 1, 1, 1])
+    }
+  },
   components: {
     InventoryItem
+  },
+  watch: {
+    // data(newValue) {
+    //   this.getData = newValue
+    //   console.log('-------------------------', this.getData.length)
+    // }
   }
 }
 </script>

+ 19 - 8
src/views/PdcData/analysis/ProductionDonuts.vue

@@ -1,14 +1,14 @@
 <!--
  * @Author: your name
  * @Date: 2021-10-11 14:56:37
- * @LastEditTime: 2021-10-11 15:39:12
+ * @LastEditTime: 2021-10-21 17:52:11
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: \hyyfClient\src\views\PdcData\analysis\ProductionDonuts.vue
 -->
 <template>
   <div class="production-donuts">
-    <template v-for="item in data">
+    <template v-for="item in datas">
       <production-donut :key="item.title" v-bind="item"></production-donut>
     </template>
   </div>
@@ -17,37 +17,48 @@
 import ProductionDonut from 'components/erp/ProductionDonut'
 
 export default {
+  props: {
+    data: {
+      type: Array,
+      required: true
+    }
+  },
   data() {
     return {
-      data: [
+      datas: []
+    }
+  },
+  watch: {
+    data(newValue) {
+      this.datas = [
         {
           id: 'chart01',
           title: '产房成活率',
-          number: 95,
+          number: newValue[0],
           color: 'rgb(112,249,250)'
         },
         {
           id: 'chart02',
           title: '保育成活率',
-          number: 15,
+          number: newValue[1],
           color: 'rgb(51, 211, 137)'
         },
         {
           id: 'chart03',
           title: '育肥成活率',
-          number: 45,
+          number: newValue[2],
           color: 'rgb(255, 125, 0)'
         },
         {
           id: 'chart04',
           title: '7日内断配率',
-          number: 45,
+          number: newValue[3],
           color: 'rgb(2, 167, 240)'
         },
         {
           id: 'chart05',
           title: '配种分娩率',
-          number: 79,
+          number: newValue[4],
           color: 'rgb(112, 0, 217)'
         }
       ]

+ 16 - 10
src/views/PdcData/analysis/ProductionItems.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2021-10-11 15:40:26
- * @LastEditTime: 2021-10-11 16:09:54
+ * @LastEditTime: 2021-10-21 17:52:04
  * @LastEditors: Please set LastEditors
  * @Description: 生产情况下面的8个
  * @FilePath: \hyyfClient\src\views\PdcData\analysis\ProductionItems.vue
@@ -17,7 +17,7 @@
           <span>平均窝产仔数</span>
         </template>
         <template v-slot:dataNum>
-          <span>15</span>
+          <span>{{ data[0] }}</span>
         </template>
       </inventory-item>
       <inventory-item>
@@ -31,7 +31,7 @@
           <div>平均窝产活仔数</div>
         </template>
         <template v-slot:dataNum>
-          <div>5000</div>
+          <div>{{ data[1] }}</div>
         </template>
       </inventory-item>
       <inventory-item>
@@ -45,7 +45,7 @@
           <div>平均窝产正常仔数</div>
         </template>
         <template v-slot:dataNum>
-          <div>5000</div>
+          <div>{{ data[2] }}</div>
         </template>
       </inventory-item>
       <inventory-item>
@@ -56,7 +56,7 @@
           <div>窝断奶仔猪数</div>
         </template>
         <template v-slot:dataNum>
-          <div>15240</div>
+          <div>{{ data[3] }}</div>
         </template>
       </inventory-item>
     </div>
@@ -69,7 +69,7 @@
           <div>平均窝断奶重</div>
         </template>
         <template v-slot:dataNum>
-          <div>15240</div>
+          <div>{{ data[4] }}</div>
         </template>
       </inventory-item>
       <inventory-item>
@@ -80,7 +80,7 @@
           <div>非生产天数</div>
         </template>
         <template v-slot:dataNum>
-          <div>24天</div>
+          <div>{{ data[5] }}天</div>
         </template>
       </inventory-item>
       <inventory-item>
@@ -94,7 +94,7 @@
           <div>年产窝数</div>
         </template>
         <template v-slot:dataNum>
-          <div>2.36</div>
+          <div>{{ data[6] }}</div>
         </template>
       </inventory-item>
       <inventory-item>
@@ -107,7 +107,7 @@
           <div>PSY</div>
         </template>
         <template v-slot:dataNum>
-          <div>25.5</div>
+          <div>{{ data[7] }}</div>
         </template>
       </inventory-item>
     </div>
@@ -120,7 +120,13 @@ export default {
   components: {
     InventoryItem,
   },
-};
+  props: {
+    data: {
+      type: Array,
+      required: true
+    }
+  }
+}
 </script>
 <style scoped>
 .inventory-items {

+ 3 - 2
vue.config.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-09-16 11:27:35
- * @LastEditTime: 2021-10-11 10:17:10
+ * @LastEditTime: 2021-10-21 14:39:52
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: \hyyfClient\vue.config.js
@@ -38,7 +38,8 @@ module.exports = {
       '@': path.resolve(__dirname, 'src'),
       'components': '@/components',
       'views': '@/views',
-      'assets': '@/assets'
+      'assets': '@/assets',
+      'utils': '@/utils'
     }
   },
   css: {