Переглянути джерело

质量异常,今日检验任务,产量统计。

jiaxiaoqiang 10 місяців тому
батько
коміт
aac99db159

+ 24 - 0
src/api/screens/index.ts

@@ -74,3 +74,27 @@ export function productionQuantity() {
     method: "POST",
   });
 }
+
+// 质量异常
+export function qualityException() {
+  return request({
+    url: "/data/qualityAbnormal",
+    method: "POST",
+  });
+}
+
+// 今日检验任务
+export function todayInspectionDetail() {
+  return request({
+    url: `/data/check`,
+    method: "POST",
+  });
+}
+
+// 产量统计
+export function productionStatisticsDetail() {
+  return request({
+    url: `/data/material/finish`,
+    method: "POST",
+  });
+}

+ 63 - 2
src/views/screens/screen-components/ChanLiangTongJi.vue

@@ -8,7 +8,11 @@
 <script lang="ts" setup>
 import ScreenComHeader from "@/views/screens/configs/screenComHeader.vue";
 import * as echarts from "echarts";
-import { chartLegend } from "@/views/screens/configs/chartsConfig";
+import {
+  allChartColors,
+  chartLegend,
+} from "@/views/screens/configs/chartsConfig";
+import { productionStatisticsDetail } from "@/api/screens";
 
 const chartRef = ref(null);
 
@@ -87,8 +91,65 @@ const option = {
   ],
 };
 
-onMounted(() => {
+onMounted(async () => {
   const chart = echarts.init(chartRef.value, "dark");
+
+  let res = await productionStatisticsDetail();
+  let seriesData = [];
+  for (let i = 0; i < res?.data?.materialCountVOList.length; i++) {
+    let item = res.data.materialCountVOList[i];
+    seriesData.push({
+      type: "bar",
+      name: item.materialName,
+      // tooltip: {
+      //   valueFormatter: function (value) {
+      //     return value + " ml";
+      //   },
+      // },
+      data: item?.counts ?? [],
+    });
+  }
+
+  let option = {
+    color: allChartColors,
+    backgroundColor: "transparent",
+    tooltip: {
+      trigger: "axis",
+      axisPointer: {
+        type: "cross",
+        // crossStyle: {
+        //   color: "#999",
+        // },
+      },
+    },
+    legend: {
+      data: res?.data?.materialNames ?? [],
+    },
+    xAxis: [
+      {
+        type: "category",
+        data: res?.data?.weeks ?? [],
+        axisPointer: {
+          type: "shadow",
+        },
+      },
+    ],
+    yAxis: [
+      {
+        type: "value",
+        name: "数量",
+        // min: 0,
+        // max: 250,
+        // interval: 50,
+        minInterval: 1,
+        axisLabel: {
+          formatter: "{value} ",
+        },
+      },
+    ],
+    series: seriesData,
+  };
+
   chart.setOption(option);
 });
 

+ 35 - 23
src/views/screens/screen-components/InspectionTaskOfToday.vue

@@ -10,6 +10,7 @@
 
 <script lang="ts" setup>
 import ScreenComHeader from "@/views/screens/configs/screenComHeader.vue";
+import { todayInspectionDetail } from "@/api/screens";
 
 const config = ref({});
 
@@ -20,28 +21,39 @@ const props = defineProps({
   },
 });
 
-onMounted(() => {
-  config.value = {
-    header: ["检验单号", "产品型号", "送检数量", "送检单位", "检验状态"],
-    data: [
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-      ["行9列1", "行9列2", "行9列3", "行9列1", "行9列2"],
-    ],
-    index: true,
-    indexHeader: "序号",
-    // columnWidth: [50],
-    align: ["center"],
-    carousel: "page",
-  };
+onMounted(async () => {
+  let res = await todayInspectionDetail();
+  if (res.data.length > 0) {
+    let dicts = {
+      formName: "检验名称",
+      materialCode: "产品编号",
+      materialName: "产品名称",
+      passNum: "合格数量",
+      unPassNum: "不合格数量",
+      workOrderCode: "工单编号",
+    };
+
+    let bigData: any[] = [];
+    res.data.forEach((item: any) => {
+      let row: any[] = [];
+      Object.keys(dicts).forEach((key) => {
+        row.push(item[key]);
+      });
+
+      bigData.push(row);
+    });
+
+    config.value = {
+      header: Object.values(dicts),
+      data: bigData,
+      // index: true,
+      // columnWidth: [50],
+      align: ["left"],
+      carousel: "page",
+      click: (row: any, index: number) => {
+        console.log("mouseover", row, index);
+      },
+    };
+  }
 });
 </script>

+ 34 - 20
src/views/screens/screen-components/QualityAnomaly.vue

@@ -10,6 +10,7 @@
 
 <script lang="ts" setup>
 import ScreenComHeader from "@/views/screens/configs/screenComHeader.vue";
+import { qualityException } from "@/api/screens";
 
 const config = ref({});
 
@@ -20,25 +21,38 @@ const props = defineProps({
   },
 });
 
-onMounted(() => {
-  config.value = {
-    header: ["列1", "列2", "列3"],
-    data: [
-      ["行1列1", "行1列2", "行1列3"],
-      ["行2列1", "行2列2", "行2列3"],
-      ["行3列1", "行3列2", "行3列3"],
-      ["行4列1", "行4列2", "行4列3"],
-      ["行5列1", "行5列2", "行5列3"],
-      ["行6列1", "行6列2", "行6列3"],
-      ["行7列1", "行7列2", "行7列3"],
-      ["行8列1", "行8列2", "行8列3"],
-      ["行9列1", "行9列2", "行9列3"],
-      ["行10列1", "行10列2", "行10列3"],
-    ],
-    index: true,
-    columnWidth: [50],
-    align: ["center"],
-    carousel: "page",
-  };
+onMounted(async () => {
+  let res = await qualityException();
+  if (res.data.length > 0) {
+    let dicts = {
+      materlName: "物料名称",
+      // orderCode: "编码",
+      materialCode: "物料编码",
+      workOrderCode: "工单编号",
+    };
+
+    let bigData: any[] = [];
+    res.data.forEach((item: any) => {
+      let row = [
+        item.materlName,
+        // item.orderCode,
+        item.materialCode,
+        item.workOrderCode,
+      ];
+      bigData.push(row);
+    });
+
+    config.value = {
+      header: Object.values(dicts),
+      data: bigData,
+      // index: true,
+      // columnWidth: [50],
+      align: ["left"],
+      carousel: "page",
+      click: (row: any, index: number) => {
+        console.log("mouseover", row, index);
+      },
+    };
+  }
 });
 </script>