Kaynağa Gözat

增加了生产履历的部分页面

ooo 1 yıl önce
ebeveyn
işleme
d0b7c9d5b8

+ 137 - 0
src/views/pro/traceability/components/checkCom.vue

@@ -0,0 +1,137 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef2"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+    />
+    <!-- <el-collapse accordion>
+      <el-collapse-item
+        :title="item.opName"
+        :name="item.id"
+        v-for="item in data"
+        :key="item.id"
+      />
+    </el-collapse> -->
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
+
+// 数据字典相关
+const { dicts } = useDictionaryStoreHook();
+
+// 传入一个url,后面不带/
+const {
+  form,
+  data,
+  option,
+  search,
+  page,
+  toDeleteIds,
+  Methords,
+  Utils,
+  commonConfig,
+} = useCrud({
+  src: "/api/v1/process/web/traceability/checkRecordInfo",
+});
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+const refreshTra = (row) => {
+  commonConfig.value.params = { seqNo: row.seqNo };
+  dataList();
+};
+defineExpose({ refreshTra });
+onMounted(() => {});
+
+option.value = Object.assign(option.value, {
+  selection: false,
+  border: true,
+  index: false,
+  expandLevel: 3,
+  headerAlign: "center",
+  align: "center",
+  labelWidth: 100,
+  addBtn: false,
+  menu: false,
+  header: false,
+  column: [
+    {
+      label: "工序名称",
+      prop: "opName",
+    },
+    {
+      label: "点检项名称",
+      prop: "checkName",
+      search: false,
+    },
+    {
+      label: "点检项编码",
+      prop: "checkCode",
+      search: false,
+    },
+    {
+      label: "内容",
+      prop: "content",
+      search: false,
+    },
+    {
+      label: "结果",
+      prop: "result",
+      search: false,
+    },
+    // {
+    //   label: "操作人",
+    //   prop: "operator",
+    //   search: false,
+    // },
+    {
+      label: "标准值",
+      prop: "standard",
+      search: false,
+    },
+    {
+      label: "上限值",
+      prop: "upper",
+      search: false,
+    },
+    {
+      label: "下限值",
+      prop: "lower",
+      search: false,
+    },
+    {
+      label: "实测值",
+      prop: "realValue",
+      search: false,
+    },
+    {
+      label: "单位",
+      prop: "unit",
+      search: false,
+      dicData: dicts.danwei_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+    },
+    {
+      label: "录入时间",
+      prop: "created",
+      search: false,
+    },
+  ],
+});
+</script>

+ 137 - 0
src/views/pro/traceability/components/equitCom.vue

@@ -0,0 +1,137 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef2"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+    />
+    <!-- <el-collapse accordion>
+      <el-collapse-item
+        :title="item.opName"
+        :name="item.id"
+        v-for="item in data"
+        :key="item.id"
+      />
+    </el-collapse> -->
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
+
+// 数据字典相关
+const { dicts } = useDictionaryStoreHook();
+
+// 传入一个url,后面不带/
+const {
+  form,
+  data,
+  option,
+  search,
+  page,
+  toDeleteIds,
+  Methords,
+  Utils,
+  commonConfig,
+} = useCrud({
+  src: "/api/v1/process/web/traceability/equitRecordInfo",
+});
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+const refreshTra = (row) => {
+  commonConfig.value.params = { seqNo: row.seqNo };
+  dataList();
+};
+defineExpose({ refreshTra });
+onMounted(() => {});
+
+option.value = Object.assign(option.value, {
+  selection: false,
+  border: true,
+  index: false,
+  expandLevel: 3,
+  headerAlign: "center",
+  align: "center",
+  labelWidth: 100,
+  addBtn: false,
+  menu: false,
+  header: false,
+  column: [
+    {
+      label: "工序名称",
+      prop: "opName",
+    },
+    {
+      label: "点检项名称",
+      prop: "checkName",
+      search: false,
+    },
+    {
+      label: "点检项编码",
+      prop: "checkCode",
+      search: false,
+    },
+    {
+      label: "内容",
+      prop: "content",
+      search: false,
+    },
+    {
+      label: "结果",
+      prop: "result",
+      search: false,
+    },
+    // {
+    //   label: "操作人",
+    //   prop: "operator",
+    //   search: false,
+    // },
+    {
+      label: "标准值",
+      prop: "standard",
+      search: false,
+    },
+    {
+      label: "上限值",
+      prop: "upper",
+      search: false,
+    },
+    {
+      label: "下限值",
+      prop: "lower",
+      search: false,
+    },
+    {
+      label: "实测值",
+      prop: "realValue",
+      search: false,
+    },
+    {
+      label: "单位",
+      prop: "unit",
+      search: false,
+      dicData: dicts.danwei_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+    },
+    {
+      label: "录入时间",
+      prop: "created",
+      search: false,
+    },
+  ],
+});
+</script>

+ 106 - 0
src/views/pro/traceability/components/materialsCom.vue

@@ -0,0 +1,106 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef2"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+    />
+    <!-- <el-collapse accordion>
+      <el-collapse-item
+        :title="item.opName"
+        :name="item.id"
+        v-for="item in data"
+        :key="item.id"
+      />
+    </el-collapse> -->
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
+
+// 数据字典相关
+const { dicts } = useDictionaryStoreHook();
+
+// 传入一个url,后面不带/
+const {
+  form,
+  data,
+  option,
+  search,
+  page,
+  toDeleteIds,
+  Methords,
+  Utils,
+  commonConfig,
+} = useCrud({
+  src: "/api/v1/process/web/traceability/materialsRecordInfo",
+});
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+const refreshTra = (row) => {
+  commonConfig.value.params = { seqNo: row.seqNo };
+  dataList();
+};
+defineExpose({ refreshTra });
+onMounted(() => {});
+
+option.value = Object.assign(option.value, {
+  selection: false,
+  border: true,
+  index: false,
+  expandLevel: 3,
+  headerAlign: "center",
+  align: "center",
+  labelWidth: 100,
+  addBtn: false,
+  menu: false,
+  header: false,
+  column: [
+    {
+      label: "工序名称",
+      prop: "opName",
+    },
+    {
+      label: "物料名称",
+      prop: "itemName",
+    },
+    {
+      label: "物料规格",
+      prop: "itemModel",
+      type: "select",
+      dicData: dicts.workshop_section,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+    },
+    {
+      label: "物料编号",
+      prop: "itemCode",
+      search: false,
+    },
+    {
+      label: "需求数量",
+      prop: "needNum",
+      search: false,
+    },
+    {
+      label: "已采集数量",
+      prop: "realNum",
+      search: false,
+    },
+  ],
+});
+</script>

+ 116 - 0
src/views/pro/traceability/components/recordCom.vue

@@ -0,0 +1,116 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+      ref="crudRef2"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+    />
+    <!-- <el-collapse accordion>
+      <el-collapse-item
+        :title="item.opName"
+        :name="item.id"
+        v-for="item in data"
+        :key="item.id"
+      />
+    </el-collapse> -->
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+import { useCommonStoreHook, useDictionaryStoreHook } from "@/store";
+
+// 数据字典相关
+const { dicts } = useDictionaryStoreHook();
+
+// 传入一个url,后面不带/
+const {
+  form,
+  data,
+  option,
+  search,
+  page,
+  toDeleteIds,
+  Methords,
+  Utils,
+  commonConfig,
+} = useCrud({
+  src: "/api/v1/process/web/traceability/traceabilityRecordInfo",
+});
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+  Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+const refreshTra = (row) => {
+  commonConfig.value.params = { seqNo: row.seqNo };
+  dataList();
+};
+defineExpose({ refreshTra });
+onMounted(() => {});
+
+option.value = Object.assign(option.value, {
+  selection: false,
+  border: true,
+  index: false,
+  expandLevel: 3,
+  headerAlign: "center",
+  align: "center",
+  labelWidth: 100,
+  addBtn: false,
+  menu: false,
+  header: false,
+  column: [
+    {
+      label: "工序名称",
+      prop: "opName",
+    },
+    {
+      label: "记录项名称",
+      prop: "thName",
+    },
+    {
+      label: "单位",
+      prop: "unit",
+      search: false,
+      dicData: dicts.danwei_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+    },
+    {
+      label: "标准值",
+      prop: "standard",
+      search: false,
+    },
+    {
+      label: "上限值",
+      prop: "upper",
+      search: false,
+    },
+    {
+      label: "下限值",
+      prop: "lower",
+      search: false,
+    },
+    {
+      label: "实测值",
+      prop: "realValue",
+      search: false,
+    },
+    {
+      label: "录入时间",
+      prop: "created",
+      search: false,
+    },
+  ],
+});
+</script>

+ 2 - 2
src/views/pro/traceability/components/traceabilityCom.vue

@@ -41,8 +41,8 @@ const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等
 
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 
-const refreshTra = (seqNo) => {
-  commonConfig.value.params = { seqNo: seqNo };
+const refreshTra = (row) => {
+  commonConfig.value.params = { seqNo: row.seqNo };
   dataList();
 };
 defineExpose({ refreshTra });

+ 68 - 14
src/views/pro/traceability/index.vue

@@ -38,28 +38,42 @@
             <el-descriptions-item label="Remarks">
               <el-tag size="small">否</el-tag>
             </el-descriptions-item>
-            <el-descriptions-item label="工单出站">5</el-descriptions-item>
+            <el-descriptions-item label="工单出站">{{
+              productReviewInfo.outNum
+            }}</el-descriptions-item>
             <el-descriptions-item label="交付日期">{{
               productReviewInfo.planStartEnd
             }}</el-descriptions-item>
           </el-descriptions>
         </el-header>
         <el-main>
-          <el-tabs type="border-card">
-            <el-tab-pane label="生产履历">
+          <el-tabs
+            type="border-card"
+            @tab-click="tabsEvent"
+            v-model="defaultTabName"
+          >
+            <el-tab-pane name="traceabilityComRef" label="生产履历">
               <TraceabilityCom ref="traceabilityComRef" />
             </el-tab-pane>
-            <el-tab-pane label="已采物料">
-              <template #label>
-                <span
-                  >已采物料
-                  <el-badge value="8" class="item" type="primary" />
-                </span>
-              </template>
-              已采物料
+            <el-tab-pane name="materialsComRef" label="已采物料">
+              <MaterialsCom ref="materialsComRef" />
+            </el-tab-pane>
+            <el-tab-pane name="recordComRef" label="记录项">
+              <RecordCom ref="recordComRef"
+            /></el-tab-pane>
+            <el-tab-pane name="checkComRef" label="点检判定">
+              <CheckCom ref="checkComRef" />
             </el-tab-pane>
-            <el-tab-pane label="图片采集">图片采集</el-tab-pane>
-            <el-tab-pane label="缺陷项">缺陷项</el-tab-pane>
+            <el-tab-pane name="equitComRef" label="设备使用"
+              ><EquitCom ref="equitComRef"
+            /></el-tab-pane>
+            <el-tab-pane name="bugComRef" label="缺陷项">缺陷项</el-tab-pane>
+            <el-tab-pane name="imgComRef" label="图片采集"
+              >图片采集</el-tab-pane
+            >
+            <el-tab-pane name="faultComRef" label="报故记录"
+              >报故记录</el-tab-pane
+            >
           </el-tabs>
         </el-main>
       </el-container>
@@ -74,6 +88,10 @@ import ButtonPermKeys from "@/common/configs/buttonPermission";
 import { useCommonStoreHook } from "@/store";
 import { getMaterialDetailsByseqNo, getOperationCompent } from "@/api/material";
 import TraceabilityCom from "@/views/pro/traceability/components/traceabilityCom.vue";
+import MaterialsCom from "@/views/pro/traceability/components/materialsCom.vue";
+import RecordCom from "@/views/pro/traceability/components/recordCom.vue";
+import CheckCom from "@/views/pro/traceability/components/checkCom.vue";
+import EquitCom from "@/views/pro/traceability/components/equitCom.vue";
 
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
@@ -88,6 +106,24 @@ const { checkBtnPerm } = Utils; //按钮权限等工具
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 
 const traceabilityComRef = ref(null);
+const materialsComRef = ref(null);
+const recordComRef = ref(null);
+const checkComRef = ref(null);
+const equitComRef = ref(null);
+let defaultTabName = ref("traceabilityComRef");
+//tab页组件
+const tabNameComRef = new Map([
+  ["traceabilityComRef", traceabilityComRef],
+  ["materialsComRef", materialsComRef],
+  ["recordComRef", recordComRef],
+  ["checkComRef", checkComRef],
+  ["equitComRef", equitComRef],
+]);
+let temRow = ref({});
+const tabsEvent = (pane, ev) => {
+  defaultTabName.value = pane.props.name;
+  tabNameComRef.get(pane.props.name)?.value.refreshTra(temRow.value);
+};
 
 const chooseTagType = (row, type) => {
   let daynamicType = "";
@@ -114,12 +150,29 @@ let productReviewInfo = reactive({
   materialModel: "",
   planStartEnd: "",
   workOrderCode: "",
+  outNum: "",
 });
+
 const handleCellClick = (row, column, event) => {
+  //获取出单的数量
+  if (data.value) {
+    for (let topTree of data.value) {
+      if (topTree) {
+        for (let secondTree of topTree.children) {
+          if (row.workOrderCode == secondTree.workOrderCode) {
+            productReviewInfo.outNum = secondTree.children.length;
+          }
+        }
+      }
+    }
+  }
+  temRow.value = row;
   // 点击行时触发的逻辑
   if (!row.children && row.seqNo && row.seqNo.length > 16) {
     if (productReviewInfo.seqNo != row.seqNo) {
-      traceabilityComRef.value.refreshTra(row.seqNo);
+      //物料履历
+      //traceabilityComRef.value.refreshTra(row);
+      tabNameComRef.get(defaultTabName.value)?.value.refreshTra(temRow.value);
     }
     if (row.workOrderCode == productReviewInfo.workOrderCode) {
       productReviewInfo.seqNo = row.seqNo;
@@ -128,6 +181,7 @@ const handleCellClick = (row, column, event) => {
     getMaterialDetailsByseqNo(row.seqNo).then(({ data }) => {
       productReviewInfo = Object.assign(productReviewInfo, data);
       productReviewInfo.workOrderCode = row.workOrderCode;
+      // productReviewInfo.outNum =
     });
   }
 };