|
@@ -1,154 +1,178 @@
|
|
|
<template>
|
|
|
- <div class="mainContentBox common-layout">
|
|
|
-
|
|
|
- <el-container>
|
|
|
- <el-aside width="600px" style="height: 800px">
|
|
|
- <avue-crud
|
|
|
- ref="crudRef"
|
|
|
- v-model:search="search"
|
|
|
- v-model="form"
|
|
|
- :data="data"
|
|
|
- :option="option"
|
|
|
- v-model:page="page"
|
|
|
- @cell-click="handleCellClick">
|
|
|
- <template #seqNo="{ row }">
|
|
|
- <el-tag :type="chooseTagType(row.seqNo,'css')">{{chooseTagType(row.seqNo,'text')}}</el-tag>
|
|
|
- {{row.seqNo}}
|
|
|
- </template>
|
|
|
- </avue-crud>
|
|
|
- </el-aside>
|
|
|
- <el-container>
|
|
|
- <el-header style="height: 20%;">
|
|
|
- <el-descriptions title="产品信息回顾" border>
|
|
|
- <el-descriptions-item label="产品名称">{{productReviewInfo.materialName}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="序列号">{{productReviewInfo.seqNo}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="物料编号">{{productReviewInfo.materialCode}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="产品规格">{{productReviewInfo.materialModel}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="铭牌号">-</el-descriptions-item>
|
|
|
- <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.planStartEnd}}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- </el-header>
|
|
|
- <el-main>
|
|
|
- <!-- <el-container>
|
|
|
- <el-header style="background-color: black;height: 30%;padding: 0%;">
|
|
|
-
|
|
|
- </el-header>
|
|
|
- <el-main style="background-color: red;">Main</el-main>
|
|
|
- </el-container> -->
|
|
|
- <el-tabs type="border-card">
|
|
|
- <el-tab-pane label="生产履历">生产履历</el-tab-pane>
|
|
|
- <el-tab-pane label="已采物料">已采物料</el-tab-pane>
|
|
|
- <el-tab-pane label="图片采集">图片采集</el-tab-pane>
|
|
|
- <el-tab-pane label="缺陷项">缺陷项</el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
- </el-main>
|
|
|
- </el-container>
|
|
|
- </el-container>
|
|
|
- </div>
|
|
|
+ <div class="mainContentBox common-layout">
|
|
|
+ <el-container>
|
|
|
+ <el-aside width="600px" style="height: 800px">
|
|
|
+ <avue-crud
|
|
|
+ ref="crudRef"
|
|
|
+ v-model:search="search"
|
|
|
+ v-model="form"
|
|
|
+ :data="data"
|
|
|
+ :option="option"
|
|
|
+ v-model:page="page"
|
|
|
+ @cell-click="handleCellClick"
|
|
|
+ >
|
|
|
+ <template #seqNo="{ row }">
|
|
|
+ <el-tag :type="chooseTagType(row.seqNo, 'css')">{{
|
|
|
+ chooseTagType(row.seqNo, "text")
|
|
|
+ }}</el-tag>
|
|
|
+ {{ row.seqNo }}
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
+ </el-aside>
|
|
|
+ <el-container>
|
|
|
+ <el-header style="height: 20%">
|
|
|
+ <el-descriptions title="产品信息回顾" border>
|
|
|
+ <el-descriptions-item label="产品名称">{{
|
|
|
+ productReviewInfo.materialName
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="序列号">{{
|
|
|
+ productReviewInfo.seqNo
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="物料编号">{{
|
|
|
+ productReviewInfo.materialCode
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="产品规格">{{
|
|
|
+ productReviewInfo.materialModel
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="铭牌号">-</el-descriptions-item>
|
|
|
+ <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.planStartEnd
|
|
|
+ }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </el-header>
|
|
|
+ <el-main>
|
|
|
+ <el-tabs type="border-card">
|
|
|
+ <el-tab-pane 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>
|
|
|
+ <el-tab-pane label="图片采集">图片采集</el-tab-pane>
|
|
|
+ <el-tab-pane label="缺陷项">缺陷项</el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-main>
|
|
|
+ </el-container>
|
|
|
+ </el-container>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<script setup>
|
|
|
- import { ref, getCurrentInstance } from "vue";
|
|
|
- import { useCrud } from "@/hooks/userCrud";
|
|
|
- import ButtonPermKeys from "@/common/configs/buttonPermission";
|
|
|
+import { ref, getCurrentInstance } from "vue";
|
|
|
+import { useCrud } from "@/hooks/userCrud";
|
|
|
+import ButtonPermKeys from "@/common/configs/buttonPermission";
|
|
|
|
|
|
- import { useCommonStoreHook } from "@/store";
|
|
|
- import {
|
|
|
- getMaterialDetailsByseqNo,
|
|
|
- } from "@/api/material";
|
|
|
- const { isShowTable, tableType } = toRefs(useCommonStoreHook());
|
|
|
- const test = () => {
|
|
|
- isShowTable.value = true;
|
|
|
- tableType.value = tableType.value == 1 ? 2 : 1;
|
|
|
- };
|
|
|
+import { useCommonStoreHook } from "@/store";
|
|
|
+import { getMaterialDetailsByseqNo, getOperationCompent } from "@/api/material";
|
|
|
+import TraceabilityCom from "@/views/pro/traceability/components/traceabilityCom.vue";
|
|
|
|
|
|
- // 传入一个url,后面不带/
|
|
|
- const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
|
|
|
- useCrud({
|
|
|
- src: "/api/v1/process/web/traceability",
|
|
|
- });
|
|
|
- const { dataList, createRow, updateRow, deleteRow } = Methords; //增删改查
|
|
|
- const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
|
|
|
- const { checkBtnPerm } = Utils; //按钮权限等工具
|
|
|
+// 传入一个url,后面不带/
|
|
|
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
|
|
|
+ useCrud({
|
|
|
+ src: "/api/v1/process/web/traceability",
|
|
|
+ });
|
|
|
|
|
|
- const crudRef = ref(null); //crudRef.value 获取avue-crud对象
|
|
|
- const chooseTagType = (row,type) => {
|
|
|
- let daynamicType = ''
|
|
|
- if(type == 'text'){
|
|
|
- daynamicType = row.startsWith("DD") ? '订单' : (row.startsWith("GD") ? '工单' : '序列号')
|
|
|
- }else{
|
|
|
- daynamicType = row.startsWith("DD") ? 'success' : (row.startsWith("GD") ? 'warning' : 'primary')
|
|
|
- }
|
|
|
- return daynamicType
|
|
|
- };
|
|
|
-
|
|
|
- let productReviewInfo = {
|
|
|
- materialName:'',
|
|
|
- seqNo:'',
|
|
|
- materialCode:'',
|
|
|
- materialModel:'',
|
|
|
- planStartEnd:'',
|
|
|
- workOrderCode:''
|
|
|
- }
|
|
|
- const handleCellClick = (row, column, event) => {
|
|
|
- // 点击行时触发的逻辑
|
|
|
- if(!row.children && row.seqNo && row.seqNo.length > 16){
|
|
|
- if(row.workOrderCode == productReviewInfo.workOrderCode){
|
|
|
- return
|
|
|
- }
|
|
|
- getMaterialDetailsByseqNo(row.seqNo).then(({ data }) => {
|
|
|
- productReviewInfo = {...data}
|
|
|
- productReviewInfo.workOrderCode = row.workOrderCode
|
|
|
- // productReviewInfo.materialName = data.materialName
|
|
|
- console.log('productReviewInfo',productReviewInfo)
|
|
|
- }
|
|
|
- );
|
|
|
- }
|
|
|
- };
|
|
|
- // 设置表格列或者其他自定义的option
|
|
|
- option.value = Object.assign(option.value, {
|
|
|
- // selection: true,
|
|
|
- excelBtn: true,
|
|
|
- border: true,
|
|
|
- index: false,
|
|
|
- expandLevel: 3,
|
|
|
- headerAlign: 'center',
|
|
|
- align: 'center',
|
|
|
- tree: true,
|
|
|
- labelWidth: 100,
|
|
|
- addBtn:false,
|
|
|
- menu: false,
|
|
|
- header: false,
|
|
|
- searchMenuSpan: 8,
|
|
|
- rowKey: 'seqNo',
|
|
|
- rowParentKey: 'seqNo',
|
|
|
- column: [
|
|
|
- {
|
|
|
- label: "Id",
|
|
|
- prop: "id",
|
|
|
- search: false,
|
|
|
- hide: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "产品序列号",
|
|
|
- prop: "seqNo",
|
|
|
- search: true,
|
|
|
- searchLabelWidth: '100',
|
|
|
- searchSpan:12,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "数量",
|
|
|
- prop: "quantity",
|
|
|
- search: false,
|
|
|
- width: '100'
|
|
|
- }
|
|
|
- ],
|
|
|
- });
|
|
|
+const { dataList, createRow, updateRow, deleteRow } = Methords; //增删改查
|
|
|
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
|
|
|
+const { checkBtnPerm } = Utils; //按钮权限等工具
|
|
|
+
|
|
|
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
|
|
|
+
|
|
|
+const traceabilityComRef = ref(null);
|
|
|
|
|
|
- onMounted(() => {
|
|
|
- dataList();
|
|
|
+const chooseTagType = (row, type) => {
|
|
|
+ let daynamicType = "";
|
|
|
+ if (type == "text") {
|
|
|
+ daynamicType = row.startsWith("DD")
|
|
|
+ ? "订单"
|
|
|
+ : row.startsWith("GD")
|
|
|
+ ? "工单"
|
|
|
+ : "序列号";
|
|
|
+ } else {
|
|
|
+ daynamicType = row.startsWith("DD")
|
|
|
+ ? "success"
|
|
|
+ : row.startsWith("GD")
|
|
|
+ ? "warning"
|
|
|
+ : "primary";
|
|
|
+ }
|
|
|
+ return daynamicType;
|
|
|
+};
|
|
|
+
|
|
|
+let productReviewInfo = reactive({
|
|
|
+ materialName: "",
|
|
|
+ seqNo: "",
|
|
|
+ materialCode: "",
|
|
|
+ materialModel: "",
|
|
|
+ planStartEnd: "",
|
|
|
+ workOrderCode: "",
|
|
|
+});
|
|
|
+const handleCellClick = (row, column, event) => {
|
|
|
+ // 点击行时触发的逻辑
|
|
|
+ if (!row.children && row.seqNo && row.seqNo.length > 16) {
|
|
|
+ if (productReviewInfo.seqNo != row.seqNo) {
|
|
|
+ traceabilityComRef.value.refreshTra(row.seqNo);
|
|
|
+ }
|
|
|
+ if (row.workOrderCode == productReviewInfo.workOrderCode) {
|
|
|
+ productReviewInfo.seqNo = row.seqNo;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ getMaterialDetailsByseqNo(row.seqNo).then(({ data }) => {
|
|
|
+ productReviewInfo = Object.assign(productReviewInfo, data);
|
|
|
+ productReviewInfo.workOrderCode = row.workOrderCode;
|
|
|
});
|
|
|
-</script>
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 设置表格列或者其他自定义的option
|
|
|
+option.value = Object.assign(option.value, {
|
|
|
+ // selection: true,
|
|
|
+ excelBtn: true,
|
|
|
+ border: true,
|
|
|
+ index: false,
|
|
|
+ expandLevel: 3,
|
|
|
+ headerAlign: "center",
|
|
|
+ align: "center",
|
|
|
+ tree: true,
|
|
|
+ labelWidth: 100,
|
|
|
+ addBtn: false,
|
|
|
+ menu: false,
|
|
|
+ header: false,
|
|
|
+ searchMenuSpan: 8,
|
|
|
+ rowKey: "seqNo",
|
|
|
+ rowParentKey: "seqNo",
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "Id",
|
|
|
+ prop: "id",
|
|
|
+ search: false,
|
|
|
+ hide: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "产品序列号",
|
|
|
+ prop: "seqNo",
|
|
|
+ search: true,
|
|
|
+ searchLabelWidth: "100",
|
|
|
+ searchSpan: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "数量",
|
|
|
+ prop: "quantity",
|
|
|
+ search: false,
|
|
|
+ width: "100",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+});
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ dataList();
|
|
|
+});
|
|
|
+</script>
|