Ver código fonte

fix:修改维修履历弹窗

lupeng 5 meses atrás
pai
commit
d5f4e935b0
28 arquivos alterados com 386 adições e 65 exclusões
  1. 2 2
      src/api/craft/process/index.ts
  2. 3 3
      src/api/craft/route/index.ts
  3. 8 0
      src/api/process/index.ts
  4. 2 2
      src/common/configs/dictDataUtil.ts
  5. 6 6
      src/components/CommonTable/configs/tableConfig.ts
  6. 3 3
      src/views/base/craftManagement/process/index.vue
  7. 1 1
      src/views/base/craftManagement/route/bindConfig.ts
  8. 1 1
      src/views/base/craftManagement/route/bindProcess.vue
  9. 1 1
      src/views/base/craftManagement/route/components/configs.ts
  10. 12 12
      src/views/base/craftManagement/route/index.vue
  11. 9 9
      src/views/base/craftManagement/routeCommon/index.vue
  12. 2 2
      src/views/plan/prepare/index.vue
  13. 1 1
      src/views/plan/schedule/index.vue
  14. 1 1
      src/views/plan/track/index.vue
  15. 3 3
      src/views/plan/workOrder/components/choice-route-page.vue
  16. 1 1
      src/views/plan/workOrder/components/work-order-page.vue
  17. 2 2
      src/views/plan/workOrder/index.vue
  18. 2 2
      src/views/pro/baseoperation/index.vue
  19. 8 1
      src/views/pro/traceability/components/checkCom.vue
  20. 8 0
      src/views/pro/traceability/components/equitCom.vue
  21. 8 0
      src/views/pro/traceability/components/excelCom.vue
  22. 8 0
      src/views/pro/traceability/components/faultCom.vue
  23. 8 0
      src/views/pro/traceability/components/materialsCom.vue
  24. 8 0
      src/views/pro/traceability/components/mediaCom.vue
  25. 9 0
      src/views/pro/traceability/components/recordCom.vue
  26. 8 0
      src/views/pro/traceability/components/testData.vue
  27. 203 7
      src/views/pro/traceability/components/traceabilityCom.vue
  28. 58 5
      src/views/pro/traceability/index.vue

+ 2 - 2
src/api/craft/process/index.ts

@@ -8,7 +8,7 @@ export function processTreeList() {
   });
 }
 
-// 新增自定义工艺工序组件路径
+// 新增自定义维修工序组件路径
 export function saveCompoents(data: object) {
   return request({
     url: "/api/v1/op/compent/saveOrUpdate",
@@ -17,7 +17,7 @@ export function saveCompoents(data: object) {
   });
 }
 
-// 获取工艺工序组件路径信息
+// 获取维修工序组件路径信息
 export function getCompoentsList(opId: string) {
   return request({
     url: `/api/v1/op/compent/get/${opId}`,

+ 3 - 3
src/api/craft/route/index.ts

@@ -1,6 +1,6 @@
 import request from "@/utils/request";
 
-// 复制工艺路线
+// 复制维修流程
 export function copyRoute(data: object) {
   return request({
     url: `/api/v1/op/route/copyAdd`,
@@ -9,7 +9,7 @@ export function copyRoute(data: object) {
   });
 }
 
-// 获取工艺路线 工序关系表信息
+// 获取维修流程 工序关系表信息
 export function processesByRouteId(id: string) {
   return request({
     url: `/api/v1/op/routeOperation/get/${id}`,
@@ -17,7 +17,7 @@ export function processesByRouteId(id: string) {
   });
 }
 
-// 新增-更新工艺路线《---》工序关系表
+// 新增-更新维修流程《---》工序关系表
 export function saveProcessInRoute(data: object) {
   return request({
     url: `/api/v1/op/routeOperation/saveOrUpdate`,

+ 8 - 0
src/api/process/index.ts

@@ -38,3 +38,11 @@ export function traceabilityTabCount(
     data: params
   });
 }
+
+export function treeList(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/process/web/traceability/tree",
+    method: "post",
+    data: data,
+  });
+}

+ 2 - 2
src/common/configs/dictDataUtil.ts

@@ -27,7 +27,7 @@ const DictDataUtil = {
     device_run_status: "device_run_status",
     //设备维护频率
     device_maintenance_cycle: "device_maintenance_cycle",
-    // 工艺路线类型
+    // 维修流程类型
     routing_type: "routing_type",
     //缺陷管理
     defect_mana: "defect_mana",
@@ -53,7 +53,7 @@ const DictDataUtil = {
     prepare_device_info: "prepare_device_info",
     //维修准备-图纸
     prepare_data_file: "prepare_data_file",
-    //维修准备-工艺文件
+    //维修准备-维修文件
     prepare_craft_file: "prepare_craft_file",
     //   维修计划-工位任务状态
     station_task_state: "station_task_state",

+ 6 - 6
src/components/CommonTable/configs/tableConfig.ts

@@ -674,7 +674,7 @@ export const tableConfig = {
     url: "/api/v1/op/route/common",
     column: [
       {
-        label: "工艺编号",
+        label: "维修编号",
         prop: "processRouteCode",
         search: true,
         width: 150,
@@ -684,13 +684,13 @@ export const tableConfig = {
         rules: [
           {
             required: true,
-            message: "工艺路线名称不能为空",
+            message: "维修流程名称不能为空",
             trigger: "blur",
           },
         ],
       },
       {
-        label: "工艺名称",
+        label: "维修名称",
         prop: "processRouteName",
         width: 150,
         search: true,
@@ -698,13 +698,13 @@ export const tableConfig = {
         rules: [
           {
             required: true,
-            message: "工艺路线名称不能为空",
+            message: "维修流程名称不能为空",
             trigger: "blur",
           },
         ],
       },
       {
-        label: "工艺类型",
+        label: "维修类型",
         prop: "processRouteType",
         minWidth: 120,
         search: true,
@@ -712,7 +712,7 @@ export const tableConfig = {
         rules: [
           {
             required: true,
-            message: "工艺路线类型不能为空",
+            message: "维修流程类型不能为空",
             trigger: "change",
           },
         ],

+ 3 - 3
src/views/base/craftManagement/process/index.vue

@@ -176,13 +176,13 @@ option.value = Object.assign(option.value, {
       ],
     },
     {
-      label: "工艺条件",
+      label: "维修条件",
       prop: "processAsk",
       span: 12,
       rules: [
         {
           required: true,
-          message: "工艺条件不能为空",
+          message: "维修条件不能为空",
           trigger: "blur",
         },
       ],
@@ -346,7 +346,7 @@ option.value = Object.assign(option.value, {
       value: 0,
     },
     //  {
-    //    label: "是否工艺数量",
+    //    label: "是否维修数量",
     //    prop: "common",
     //    span: 8,
     // hide: true,

+ 1 - 1
src/views/base/craftManagement/route/bindConfig.ts

@@ -167,7 +167,7 @@ export const formOption = {
       value: 0,
     },
     {
-      label: "工艺条件",
+      label: "维修条件",
       prop: "processAsk",
       span: 24,
     },

+ 1 - 1
src/views/base/craftManagement/route/bindProcess.vue

@@ -91,7 +91,7 @@
             <el-button @click="getPng">导出流程图 </el-button>
           </div>
 
-          <!-- 工艺路线编辑模式 -->
+          <!-- 维修流程编辑模式 -->
           <div v-if="!editStatus && usableStatus">
             <div class="btns">
               <el-button type="primary" @click="saveFlow">保存</el-button>

+ 1 - 1
src/views/base/craftManagement/route/components/configs.ts

@@ -317,7 +317,7 @@ export const getTableConfig = (id: string) => {
   };
 };
 
-// 工艺工序组件路径的组件类别
+// 维修工序组件路径的组件类别
 interface comType {
   compentName: string;
   compentType: string;

+ 12 - 12
src/views/base/craftManagement/route/index.vue

@@ -75,7 +75,7 @@
     />
     <CommonTable
       ref="commonRef"
-      tableTitle="选择通用工艺"
+      tableTitle="选择通用维修"
       tableType="ROUTE_COMMON"
       @selected-sure="onCommonFinish"
     />
@@ -89,13 +89,13 @@
       <el-form :model="tmpForm" label-width="auto" style="max-width: 800px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="工艺路线编号">
+            <el-form-item label="维修流程编号">
               <el-input v-model="tmpForm.processRouteCode" />
             </el-form-item>
           </el-col>
 
           <el-col :span="12">
-            <el-form-item label="工艺路线名称">
+            <el-form-item label="维修流程名称">
               <el-input v-model="tmpForm.processRouteName" />
             </el-form-item>
           </el-col>
@@ -238,7 +238,7 @@ option.value = Object.assign(option.value, {
   editBtn: false,
   column: [
     {
-      label: "工艺路线编号",
+      label: "维修流程编号",
       prop: "processRouteCode",
       search: true,
       width: 150,
@@ -248,7 +248,7 @@ option.value = Object.assign(option.value, {
       display: false,
     },
     {
-      label: "工艺路线名称",
+      label: "维修流程名称",
       prop: "processRouteName",
       width: 150,
       search: true,
@@ -256,13 +256,13 @@ option.value = Object.assign(option.value, {
       rules: [
         {
           required: true,
-          message: "工艺路线名称不能为空",
+          message: "维修流程名称不能为空",
           trigger: "blur",
         },
       ],
     },
     {
-      label: "工艺路线类型",
+      label: "维修流程类型",
       prop: "processRouteType",
       minWidth: 120,
       search: true,
@@ -270,7 +270,7 @@ option.value = Object.assign(option.value, {
       rules: [
         {
           required: true,
-          message: "工艺路线类型不能为空",
+          message: "维修流程类型不能为空",
           trigger: "change",
         },
       ],
@@ -282,7 +282,7 @@ option.value = Object.assign(option.value, {
       },
     },
     {
-      label: "通用工艺id",
+      label: "通用维修id",
       prop: "commonRouteId",
       addDisplay: false,
       editDisplay: false,
@@ -291,7 +291,7 @@ option.value = Object.assign(option.value, {
       overHidden: true,
     },
     {
-      label: "通用工艺名字",
+      label: "通用维修名字",
       prop: "commonRouteName",
       editDisplay: false,
       width: 150,
@@ -301,7 +301,7 @@ option.value = Object.assign(option.value, {
       },
     },
     {
-      label: "通用工艺编码",
+      label: "通用维修编码",
       prop: "commonRouteCode",
       disabled: true,
       editDisplay: false,
@@ -364,7 +364,7 @@ option.value = Object.assign(option.value, {
       minWidth: 200,
       disabled: true,
     },
-    // 在产品那边绑定了工艺路线才是已绑定
+    // 在产品那边绑定了维修流程才是已绑定
     {
       label: "路线状态",
       prop: "usable",

+ 9 - 9
src/views/base/craftManagement/routeCommon/index.vue

@@ -68,13 +68,13 @@
       <el-form :model="tmpForm" label-width="auto" style="max-width: 800px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="工艺路线编号">
+            <el-form-item label="维修流程编号">
               <el-input v-model="tmpForm.processRouteCode" />
             </el-form-item>
           </el-col>
 
           <el-col :span="12">
-            <el-form-item label="工艺路线名称">
+            <el-form-item label="维修流程名称">
               <el-input v-model="tmpForm.processRouteName" />
             </el-form-item>
           </el-col>
@@ -200,7 +200,7 @@ option.value = Object.assign(option.value, {
   searchLabelWidth: 110,
   column: [
     {
-      label: "工艺路线编号",
+      label: "维修流程编号",
       prop: "processRouteCode",
       search: true,
       width: 150,
@@ -210,7 +210,7 @@ option.value = Object.assign(option.value, {
       display: false,
     },
     {
-      label: "工艺路线名称",
+      label: "维修流程名称",
       prop: "processRouteName",
       width: 150,
       search: true,
@@ -218,13 +218,13 @@ option.value = Object.assign(option.value, {
       rules: [
         {
           required: true,
-          message: "工艺路线名称不能为空",
+          message: "维修流程名称不能为空",
           trigger: "blur",
         },
       ],
     },
     {
-      label: "工艺路线类型",
+      label: "维修流程类型",
       prop: "processRouteType",
       minWidth: 120,
       search: true,
@@ -232,7 +232,7 @@ option.value = Object.assign(option.value, {
       rules: [
         {
           required: true,
-          message: "工艺路线类型不能为空",
+          message: "维修流程类型不能为空",
           trigger: "change",
         },
       ],
@@ -243,7 +243,7 @@ option.value = Object.assign(option.value, {
         value: "dictValue",
       },
     },
-    // 在产品那边绑定了工艺路线才是已绑定
+    // 在产品那边绑定了维修流程才是已绑定
     {
       label: "启用状态",
       prop: "enabled",
@@ -304,7 +304,7 @@ option.value = Object.assign(option.value, {
       overHidden: true,
     },
     {
-      label: "工艺路线类型",
+      label: "维修流程类型",
       prop: "routeType",
       width: 150,
       hide: true,

+ 2 - 2
src/views/plan/prepare/index.vue

@@ -301,7 +301,7 @@ option.value = Object.assign(option.value, {
       },
     },
     {
-      label: "工艺BOM",
+      label: "维修BOM",
       width: 90,
       overHidden: true,
       prop: "bom",
@@ -317,7 +317,7 @@ option.value = Object.assign(option.value, {
       },
     },
     {
-      label: "工艺路线",
+      label: "维修流程",
       width: 160,
       overHidden: true,
       viewDisplay: false,

+ 1 - 1
src/views/plan/schedule/index.vue

@@ -213,7 +213,7 @@ option.value = Object.assign(option.value, {
       editDisabled: true,
     },
     {
-      label: "工艺路线",
+      label: "维修流程",
       prop: "routeName",
       editDisabled: true,
     },

+ 1 - 1
src/views/plan/track/index.vue

@@ -112,7 +112,7 @@ option.value = Object.assign(option.value, {
       editDisabled: true,
     },
     {
-      label: "工艺路线",
+      label: "维修流程",
       prop: "routeName",
       editDisabled: true,
     },

+ 3 - 3
src/views/plan/workOrder/components/choice-route-page.vue

@@ -85,7 +85,7 @@ option.value = Object.assign(option.value, {
   menu: false,
   column: [
     {
-      label: "工艺编号",
+      label: "维修编号",
       prop: "processRouteCode",
       search: true,
       width: 150,
@@ -94,14 +94,14 @@ option.value = Object.assign(option.value, {
       overHidden: true,
     },
     {
-      label: "工艺名称",
+      label: "维修名称",
       prop: "processRouteName",
       width: 150,
       search: true,
       overHidden: true,
     },
     {
-      label: "工艺类型",
+      label: "维修类型",
       prop: "processRouteType",
       minWidth: 100,
       overHidden: true,

+ 1 - 1
src/views/plan/workOrder/components/work-order-page.vue

@@ -133,7 +133,7 @@ option.value = Object.assign(option.value, {
       },
     },
     {
-      label: "工艺路线",
+      label: "维修流程",
       prop: "processRouteName",
       width: 125,
       overHidden: true,

+ 2 - 2
src/views/plan/workOrder/index.vue

@@ -360,7 +360,7 @@ const dialog = reactive({
   visible: false,
 });
 const dialog1 = reactive({
-  title: "工艺选择",
+  title: "维修选择",
   visible: false,
 });
 const dialog2 = reactive({
@@ -718,7 +718,7 @@ option.value = Object.assign(option.value, {
       },
     },
     {
-      label: "工艺版本",
+      label: "维修版本",
       width: 100,
       overHidden: true,
       prop: "processRouteVersion",

+ 2 - 2
src/views/pro/baseoperation/index.vue

@@ -149,7 +149,7 @@ option.value = Object.assign(option.value, {
                     search: false,
                 },*/
     {
-      label: "工艺条件",
+      label: "维修条件",
       prop: "processAsk",
       search: false,
     },
@@ -219,7 +219,7 @@ option.value = Object.assign(option.value, {
       search: false,
     },
     {
-      label: "是否工艺数量",
+      label: "是否维修数量",
       prop: "common",
       search: false,
     },

+ 8 - 1
src/views/pro/traceability/components/checkCom.vue

@@ -55,7 +55,12 @@ const { selectionChange, multipleDelete } = Methords; //选中和批量删除事
 const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 
 const crudRef2 = ref(null); //crudRef.value 获取avue-crud对象
-
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
+});
 const refreshTra = (row) => {
   commonConfig.value.params = { seqNo: row.seqNo,workOrderCode: row.workOrderCode};
   dataList();
@@ -63,10 +68,12 @@ const refreshTra = (row) => {
 defineExpose({ refreshTra });
 const userStore = useUserStoreHook();
 onMounted(() => {
+  search.value.processId=props.processId;
   if(userStore.user.userId===10000){
     option.value.menu=true;
 
   }
+  dataList();
 });
 const doEdit = (row, index) => {
   crudRef2.value && crudRef2.value.rowEdit(row, index);

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

@@ -62,6 +62,12 @@ const dialog = reactive({
   title: "设备选择",
   visible: false,
 });
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
+});
 const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
   Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
@@ -90,10 +96,12 @@ const deviceInfo = (value) => {
 }
 defineExpose({ refreshTra });
 onMounted(() => {
+  search.value.processId=props.processId;
   if(userStore.user.userId===10000){
     option.value.menu=true;
 
   }
+  dataList();
 
 });
 

+ 8 - 0
src/views/pro/traceability/components/excelCom.vue

@@ -83,6 +83,12 @@ const opView = (row) => {
 const closeShow = () => {
   updataShow.value = false;
 };
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
+});
 const ExData = ref("");
 // 传入一个url,后面不带/
 const {
@@ -117,9 +123,11 @@ const refreshDatalist = () => {
 };
 defineExpose({ refreshTra });
 onMounted(() => {
+  search.value.processId = props.processId;
   if (userStore.user.userId === 10000) {
     option.value.menu = true;
   }
+  dataList();
 });
 
 option.value = Object.assign(option.value, {

+ 8 - 0
src/views/pro/traceability/components/faultCom.vue

@@ -62,11 +62,19 @@ const onSelectedFinish = (selectValue) => {
   form.value.creator = selectValue.userName;
 };
 defineExpose({ refreshTra });
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
+});
 onMounted(() => {
+  search.value.processId=props.processId;
   if (userStore.user.userId === 10000) {
     option.value.menu = true;
     option.value.editBtn = true;
   }
+  dataList();
 });
 const ctableRef = ref(null);
 option.value = Object.assign(option.value, {

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

@@ -73,9 +73,17 @@ const refreshTra = (row) => {
 };
 defineExpose({ refreshTra });
 onMounted(() => {
+  search.value.processId=props.processId;
   if (userStore.user.userId === 10000) {
     option.value.menu = true;
   }
+  dataList();
+});
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
 });
 const onSelectedFinish = (selectedValue) => {
   form.value.itemCode = selectedValue.materialCode;

+ 8 - 0
src/views/pro/traceability/components/mediaCom.vue

@@ -89,9 +89,17 @@ const refreshTra = (row) => {
 const userStore = useUserStoreHook();
 defineExpose({ refreshTra });
 onMounted(() => {
+  search.value.processId=props.processId;
   if (userStore.user.userId === 10000) {
     option.value.editBtn = true;
   }
+  dataList();
+});
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
 });
 const onSelectedFinish = (selectValue) => {
   form.value.creator = selectValue.userName;

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

@@ -62,12 +62,21 @@ const refreshTra = (row) => {
   commonConfig.value.params = { seqNo: row.seqNo,workOrderCode: row.workOrderCode};
   dataList();
 };
+
 defineExpose({ refreshTra });
 const userStore = useUserStoreHook();
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
+});
 onMounted(() => {
+  search.value.processId=props.processId;
   if (userStore.user.userId === 10000) {
     option.value.menu = true;
   }
+  dataList();
 });
 const doEdit = (row, index) => {
   crudRef2.value && crudRef2.value.rowEdit(row, index);

+ 8 - 0
src/views/pro/traceability/components/testData.vue

@@ -86,12 +86,20 @@ const refreshTra = (row) => {
   };
   dataList();
 };
+const props =defineProps({
+  processId: {
+    type: Number,
+    required: true,
+  },
+});
 defineExpose({ refreshTra });
 onMounted(() => {
+  search.value.processId=props.processId;
   if (userStore.user.userId === 10000) {
     option.value.menu = true;
     option.value.editBtn = true;
   }
+  dataList();
 });
 
 option.value = Object.assign(option.value, {

+ 203 - 7
src/views/pro/traceability/components/traceabilityCom.vue

@@ -6,6 +6,7 @@
       v-model:search="search"
       v-model="form"
       :data="data"
+      @tree-load="treeLoad"
       :option="option"
       @row-update="updateRow"
       v-model:page="page"
@@ -13,13 +14,98 @@
       @search-reset="resetChange"
       @size-change="dataList"
       @current-change="dataList"
-    />
+      :span-method="spanMethod"
+    >
+      <template #operationName="{ row }">
+        <el-button
+            v-if="!row.id"
+            v-for="b in row.list"
+            @click="clientB(b.type,b.processId)"
+            type="primary"
+            link
+        >{{ b.operationName }}</el-button>
+        <el-tag v-if="row.id" type="primary">{{ row.operationName }}</el-tag>
+      </template>
+    </avue-crud>
     <CommonTable
       ref="userRef"
       tableTitle="操作人选择"
       tableType="USERS"
       @selected-sure="onUserSelectedFinish"
     />
+    <el-dialog
+        v-model="dialog.visible"
+        :title="dialog.title"
+        width="850px"
+        @close="dialog.visible = false"
+        :destroy-on-close="true"
+    >
+      <mediaCom   :processId="processInfo.processId"/>
+    </el-dialog>
+
+    <el-dialog
+        v-model="dialog2.visible"
+        :title="dialog2.title"
+        width="850px"
+        @close="dialog2.visible = false"
+        :destroy-on-close="true"
+    >
+      <excelCom   :processId="processInfo.processId"/>
+    </el-dialog>
+    <el-dialog
+        v-model="dialog3.visible"
+        :title="dialog3.title"
+        width="850px"
+        @close="dialog3.visible = false"
+        :destroy-on-close="true"
+    >
+      <RecordCom   :processId="processInfo.processId"/>
+    </el-dialog>
+    <el-dialog
+        v-model="dialog4.visible"
+        :title="dialog4.title"
+        width="850px"
+        @close="dialog4.visible = false"
+        :destroy-on-close="true"
+    >
+      <MaterialsCom   :processId="processInfo.processId"/>
+    </el-dialog>
+    <el-dialog
+        v-model="dialog5.visible"
+        :title="dialog5.title"
+        width="850px"
+        @close="dialog5.visible = false"
+        :destroy-on-close="true"
+    >
+      <CheckCom   :processId="processInfo.processId"/>
+    </el-dialog>
+    <el-dialog
+        v-model="dialog6.visible"
+        :title="dialog6.title"
+        width="850px"
+        @close="dialog6.visible = false"
+        :destroy-on-close="true"
+    >
+      <EquitCom   :processId="processInfo.processId"/>
+    </el-dialog>
+    <el-dialog
+        v-model="dialog7.visible"
+        :title="dialog7.title"
+        width="850px"
+        @close="dialog7.visible = false"
+        :destroy-on-close="true"
+    >
+      <FaultCom   :processId="processInfo.processId"/>
+    </el-dialog>
+    <el-dialog
+        v-model="dialog8.visible"
+        :title="dialog8.title"
+        width="850px"
+        @close="dialog8.visible = false"
+        :destroy-on-close="true"
+    >
+      <testCom   :processId="processInfo.processId"/>
+    </el-dialog>
   </div>
 </template>
 <script setup>
@@ -27,15 +113,101 @@ import { ref, getCurrentInstance } from "vue";
 import { useCrud } from "@/hooks/userCrud";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
+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";
+import FaultCom from "@/views/pro/traceability/components/faultCom.vue";
+import mediaCom from "@/views/pro/traceability/components/mediaCom.vue";
+import excelCom from "@/views/pro/traceability/components/excelCom.vue";
+import testCom from "@/views/pro/traceability/components/testData.vue";
 import {
   useCommonStoreHook,
   useDictionaryStore,
   useUserStoreHook,
 } from "@/store";
+import {treeList} from "@/api/process";
+import TestData from "@/views/pro/traceability/components/testData.vue";
 
 // 数据字典相关
 const { dicts } = useDictionaryStore();
 const userStore = useUserStoreHook();
+const dialog= reactive({
+  visible: false,
+  title: "图片采集",
+});
+
+const dialog2= reactive({
+  visible: false,
+  title: "数据表格",
+});
+const dialog3= reactive({
+  visible: false,
+  title: "记录项",
+});
+const dialog4= reactive({
+  visible: false,
+  title: "物料采集",
+});
+const dialog5= reactive({
+  visible: false,
+  title: "点检项",
+});
+const dialog6= reactive({
+  visible: false,
+  title: "设备使用",
+});
+const dialog7= reactive({
+  visible: false,
+  title: "报故记录",
+});
+const dialog8= reactive({
+  visible: false,
+  title: "设备采集",
+});
+const processInfo = ref({});
+const clientB = (type,processId)=>{
+   if(type==="medias"){
+      dialog.visible=true;
+      processInfo.value.processId=processId;
+
+   }
+  if(type==="excel"){
+    dialog2.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+  if(type==="record"){
+    dialog3.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+  if(type==="materials"){
+    dialog4.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+  if(type==="checks"){
+    dialog5.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+  if(type==="equit"){
+    dialog6.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+  if(type==="fault"){
+    dialog7.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+  if(type==="testData"){
+    dialog8.visible=true;
+    processInfo.value.processId=processId;
+
+  }
+}
 
 // 传入一个url,后面不带/
 const {
@@ -64,6 +236,17 @@ const refreshTra = (row) => {
   commonConfig.value.params = { seqNo: row.seqNo,workOrderCode: row.workOrderCode};
   dataList();
 };
+const spanMethod = ({ row, column, rowIndex, columnIndex })=> {
+  if (!row.id) {
+    if (columnIndex === 0) {
+      return [1, 9]
+    } else if(columnIndex > 0){
+      return [0, 0]
+    }
+  }else{
+    console.log(rowIndex)
+  }
+}
 defineExpose({ refreshTra });
 onMounted(() => {
   if (userStore.user.userId === 10000) {
@@ -75,6 +258,7 @@ onMounted(() => {
 option.value = Object.assign(option.value, {
   selection: false,
   border: true,
+  lazy: true,
   index: false,
   expandLevel: 3,
   headerAlign: "center",
@@ -99,9 +283,9 @@ option.value = Object.assign(option.value, {
       label: "工序名称",
       prop: "operationName",
       editDisplay: false,
-      width: 120,
+      width: 200,
     },
-    {
+   /* {
       label: "工段",
       prop: "workSection",
       editDisplay: false,
@@ -111,7 +295,7 @@ option.value = Object.assign(option.value, {
         label: "dictLabel",
         value: "dictValue",
       },
-    },
+    },*/
     {
       label: "状态",
       editDisplay: false,
@@ -199,15 +383,27 @@ option.value = Object.assign(option.value, {
       editDisplay: false,
       search: false,
     },
-    {
+   /* {
       label: "工步",
       prop: "operationSort",
       editDisplay: false,
       search: false,
-    },
+    },*/
   ],
 });
-
+const treeLoad = (tree, treeNode, resolve) =>{
+  treeList({ id: tree.id}).then((data)=>{
+    if(data.data){
+      data.data.forEach(item=>{
+        item.operationName = item.label
+        item.id = null,
+        item.processId = tree.id
+      })
+      let list = [{id: null,list: data.data}];
+      resolve(list)
+    }
+  })
+}
 // const validateTimeEnd = (rule, value, callback) => {
 //   if (value === "") {
 //     callback(new Error("Please input the password again"));

+ 58 - 5
src/views/pro/traceability/index.vue

@@ -92,9 +92,23 @@
                 />
               </span>
             </template>
+<!--              <div style="padding-left: 30px" class="operation-node">
+              <div style="margin-bottom: 20px">工序</div>
+              <el-aside
+                      width="600px"
+                      style="overflow-y: hidden"
+              >
+              <avue-tree
+                         :option="optionTree"
+                         :data="dataTree"
+                         v-model="form"
+                         @node-click="nodeClickTwo">
+              </avue-tree>
+              </el-aside>
+              </div>-->
             <TraceabilityCom ref="traceabilityComRef" />
           </el-tab-pane>
-          <el-tab-pane name="materialsComRef" label="已采物料">
+<!--          <el-tab-pane name="materialsComRef" label="已采物料">
             <template #label>
               <span
                 >已采物料
@@ -151,7 +165,7 @@
             </template>
             <FaultCom ref="faultComRef" />
           </el-tab-pane>
-          <!--            <el-tab-pane name="bugComRef" label="缺陷项">缺陷项</el-tab-pane>-->
+          &lt;!&ndash;            <el-tab-pane name="bugComRef" label="缺陷项">缺陷项</el-tab-pane>&ndash;&gt;
           <el-tab-pane name="mediaComRef" label="图片采集"
             ><template #label>
               <span
@@ -186,7 +200,7 @@
               </span>
             </template>
             <TestData ref="cssjComRef"
-          /></el-tab-pane>
+          /></el-tab-pane>-->
         </el-tabs>
       </el-main>
     </div>
@@ -195,7 +209,7 @@
 <script setup>
 import { ref, getCurrentInstance } from "vue";
 import { useCrud } from "@/hooks/userCrud";
-import { traceabilityTabCount } from "@/api/process";
+import {traceabilityTabCount, treeList} from "@/api/process";
 import { getMaterialDetailsByseqNo, getOperationCompent } from "@/api/material";
 import TraceabilityCom from "@/views/pro/traceability/components/traceabilityCom.vue";
 import MaterialsCom from "@/views/pro/traceability/components/materialsCom.vue";
@@ -218,7 +232,7 @@ const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
   Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
 const { checkBtnPerm } = Utils; //按钮权限等工具
-
+const tree = ref(null);
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 const formTree = ref(null);
 const traceabilityComRef = ref(null);
@@ -232,6 +246,10 @@ const excelComRef = ref(null);
 const cssjComRef = ref(null);
 const treeData = ref([]);
 const dataDetail = ref({});
+const dataTree = ref({});
+const nodeClickTwo = (data) => {
+
+}
 const nodeClick = (data) => {
   search.value.aircraftId = null;
   search.value.sortiesId = null;
@@ -267,6 +285,29 @@ const treeOption = {
     children: "children",
   },
 };
+
+const optionTree = {
+    addBtn: false,
+    editBtn: false,
+    delBtn: false,
+    filter : false,
+    formOption: {
+        labelWidth: 100,
+        column: [
+            {
+                label: "层级名称",
+                prop: "label",
+            },
+        ],
+    },
+    props: {
+        labelText: "标题",
+        label: "label",
+        value: "value",
+        children: "children",
+    },
+};
+
 let defaultTabName = ref("traceabilityComRef");
 //tab页组件
 const tabNameComRef = new Map([
@@ -326,6 +367,7 @@ let tabCount = reactive({
 });
 
 const handleCellClick = (row, column, event) => {
+    dataTree.value=[];
   if (row.level === "order") {
     productReviewInfo.bug = "-";
   }
@@ -371,6 +413,11 @@ const handleCellClick = (row, column, event) => {
       productReviewInfo.workOrderCode = row.workOrderCode;
       // productReviewInfo.outNum =
     });
+    /*  treeList(row).then((data) => {
+          dataTree.value = data.data;
+          }
+
+      );*/
   }
 };
 
@@ -418,6 +465,12 @@ onMounted(() => {
   orderLevelList(dataDetail.value).then((data) => {
     treeData.value = data.data;
   });
+
   dataList();
 });
 </script>
+<style>
+ .operation-node .el-tree-node{
+     min-height: 40px;
+ }
+</style>