Explorar o código

上下料站模块详情页静态版(完成约70%)

oyq28 %!s(int64=3) %!d(string=hai) anos
pai
achega
1e261cfa3c

BIN=BIN
imcs-ui/src/assets/yunMap/clampImg.png


+ 2 - 0
imcs-ui/src/lang/zh/prepare.js

@@ -139,6 +139,8 @@ export default {
 				mapNo: '图号',
 				period: '周期',
 				num: '数量',
+				type: '类型',
+				clampImg: '装夹方式',
 				expiryDate: '有效期',
 				materialNo: '材料编号',
 				joinDate: '入厂日期',

+ 5 - 2
imcs-ui/src/lang/zh/runCenter.js

@@ -347,7 +347,7 @@ export default {
 				last: '个订单在生产'
 			},
 			viewSched: {
-				name: '任务信息',
+				name: '任务工单',
 				procedureDesc: '工序名称',
 				content: '工序内容',
 				status: '任务状态',
@@ -365,7 +365,10 @@ export default {
 				taskResour: '任务资源',
 				orderNo: '订单编号',
 				jindu: '进度',
-				autoLiuc: '自动化执行流程'
+				autoLiuc: '自动化执行流程',
+				procedurePosition: '执行位置',
+				startTime: '开始时间',
+				endTime: '结束时间'
 			}
 		},
 		// 表单验证规则提示信息

+ 76 - 21
imcs-ui/src/views/zuihou/machiningClient/touchScreen/Index.vue

@@ -94,16 +94,16 @@
             v-for="(item, index) in taskData.slice(0, 3)"
             :key="item.id"
             :offset="index == 0 ? 0 : 1"
-            v-show="item.status == 0 ? true : false"
+            v-show="item.status < 2 ? true : false"
             :style="
               index == 0
                 ? 'zoom:1;min-width:300px;'
                 : 'zoom:0.6;min-width:180px;'
             "
           >
-            <el-card :gutter="24" class="box-card" style="margin: 5px">
-              <div class="card_content">
-                <div class="block card_header">
+            <el-card :gutter="24" class="box-card" style="margin: 5px" >
+              <div class="card_content" >
+                <div class="block card_header" @click="view(item)">
                   <el-image
                     style="
                       width: 90px;
@@ -112,7 +112,7 @@
                       max-height: 200%;
                     "
                     :src="resolveLogo('status' + (index + 1) + '.png')"
-                    fit="fill"
+                    fit="fill"                    
                   >
                   </el-image>
                   <span>{{ item.taskName }}</span>
@@ -148,7 +148,7 @@
                         icon="el-icon-view"
                         size="medium"
                         :disabled="index == 0 ? false : true"
-                        @click="finishTask(item)"
+                        @click.native="finishTask(item)"
                       >
                         完成
                       </el-button>
@@ -167,7 +167,7 @@
             <el-table
               :data="finishData"              
               border
-			  style="height:100%;min-height:80px;"
+			        style="height:100%;min-height:80px;"
               :header-cell-style="{ background: '#1890ff', color: '#fff' }"
             >
               <el-table-column
@@ -185,21 +185,21 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column prop="name" label="零件名称" width="150">
+              <el-table-column prop="name" label="零件名称" align="center">
               </el-table-column>
-              <el-table-column prop="taskNo" label="工序号" width="80">
+              <el-table-column prop="taskNo" label="工序号" width="80" align="center">
               </el-table-column>
-              <el-table-column prop="taskName" label="工序名称" width="100">
+              <el-table-column prop="taskName" label="工序名称" align="center">
               </el-table-column>
-              <el-table-column prop="planTime" label="额定时间" width="100">
+              <el-table-column prop="planTime" label="额定时间" width="100" align="center">
               </el-table-column>
-              <el-table-column prop="activeTime" label="实际时间" width="100">
+              <el-table-column prop="activeTime" label="实际时间" width="100" align="center">
               </el-table-column>
-              <el-table-column prop="startTime" label="开始时间" width="150">
+              <el-table-column prop="startTime" label="开始时间" width="150" align="center">
               </el-table-column>
-              <el-table-column prop="endTime" label="结束时间" width="150">
+              <el-table-column prop="endTime" label="结束时间" width="150" align="center">
               </el-table-column>
-              <el-table-column prop="overTime" label="是否超时" width="100">
+              <el-table-column prop="overTime" label="是否超时" width="100" align="center">
 				  <template slot-scope="scope">
                       {{ scope.overTime ? "是" : "否" }}
                  </template>
@@ -216,18 +216,40 @@
       @get-data="showRFID"
       @close="viewClose"
     />
+
+    <!-- 【查看】组件 -->
+      <task-view1
+	      	ref="view1"
+	      	:dialog-visible="view1Visible"
+	      	@close="viewClose"
+	    />
+	    <task-view2
+	      	ref="view2"
+	      	:dialog-visible="view2Visible"
+	      	@close="viewClose"
+	    />
+
+      <!-- 【查看】组件 -->
+	    <task-view3
+	      	ref="view3"
+	      	:dialog-visible="view3Visible"
+	      	@close="viewClose"
+	    />
   </div>
 </template>
 
 
 <script>
 // 【查看】组件
-import TaskView from "../waitingTasks/components/View";
+import TaskView from "./components/View";
+import TaskView1 from "./components/View1";
+import TaskView2 from "./components/View2";
+import TaskView3 from "./components/View3";
 import { fullScreen, exitFullScreen, initQueryParams } from "@/utils/commons";
 import stationMgrApi from "@/api/machiningClient/stationMgr";
 export default {
   name: "TouchScreen",
-  components: { TaskView },
+  components: { TaskView,TaskView1,TaskView2,TaskView3 },
   props: {},
   data() {
     return {
@@ -250,7 +272,9 @@ export default {
           trayNo: "TP7788",
           time: 15,
           left: 2,
-          status: 0,
+          status: 1,
+          content: "完成装夹,rfid读写",
+          step: 1,
         },
         {
           id: 2,
@@ -261,7 +285,9 @@ export default {
           trayNo: "TP7788",
           time: 25,
           left: 6,
-          status: 0,
+          status: 1,
+          content: "",
+          step: 2,
         },
         {
           id: 3,
@@ -273,6 +299,8 @@ export default {
           time: 5,
           left: 1,
           status: 0,
+          content: "",
+          step: 3,
         },
         {
           id: 4,
@@ -284,12 +312,17 @@ export default {
           time: 5,
           left: 1,
           status: 0,
+          content: "",
+          step: 3
         },
       ],
       finishData: [],
-      step: 1,
+      current: 1,
       confirmDisabled: true,
       tenantViewVisible: false,
+      view1Visible: false,
+      view2Visible: false,
+      view3Visible: false,
       isFullSreen: false, // 默认不全屏
     };
   },
@@ -351,8 +384,30 @@ export default {
     resolveLogo(logo) {
       return require(`@/assets/yunMap/${logo}`);
     },
+    view (item) {
+        let that = this;
+        let current = that.options.filter(function (c, i, a) {
+          if (c.value == that.opValue) {
+             return c
+          }
+        })
+        item.procedurePosition = current[0].name;
+        let index = item.step;
+        if(index % 3 == 1){
+           this.$refs.view1.setTenant(item)
+           this.view1Visible = true
+        }else if(index % 3 == 2){
+           this.$refs.view2.setTenant(item)
+           this.view2Visible = true
+        }else if(index % 3 == 0){
+           this.$refs.view3.setTenant(item)
+           this.view3Visible = true
+        }
+	  },
     viewClose() {
-      this.tenantViewVisible = false;
+      this.view1Visible = false
+      this.view2Visible = false
+      this.view3Visible = false      
     },
     setPercentage(time, left) {
       return this.formatGap(time, left)[0] > 100

+ 518 - 0
imcs-ui/src/views/zuihou/machiningClient/touchScreen/components/View.vue

@@ -0,0 +1,518 @@
+<template>
+  <el-dialog
+    :title="$t(&quot;common.view&quot;)"
+    width="80%"
+    :append-to-body="true"
+    :visible.sync="isVisible"
+    class="tenant-view"
+  >
+    <div class="boxDiv">
+    	<!-- 任务信息 -->
+        <el-steps :active="1" finish-status="success" simple style="margin-top: 20px">
+  				<el-step title="夹具安装" >1111</el-step>
+  				<el-step title="物料装夹" >2222</el-step>  				
+		</el-steps>
+
+
+    	<el-row>
+    		<p class="titleP" style="margin-top: 0;">{{$t("runCenter.form.viewSched.name")+":"}}</p>
+    		<table class="comtable" border="0" cellspacing="0" cellpadding="6">
+    			<tr>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.procedureDesc")+":"}}</td>
+    				<td width="200">{{tenant.procedureDesc}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.content")+":"}}</td>
+    				<td width="300">{{tenant.content}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.status")+":"}}</td>
+    				<td width="200">
+		          <el-tag v-if="tenant.status == '1'" type="info">{{$t("runCenter.common.schedulStatus.noStart")}}</el-tag>
+							<el-tag v-if="tenant.status == '2'" type="">{{$t("runCenter.common.schedulStatus.run")}}</el-tag>
+							<el-tag v-if="tenant.status == '3'" type="success">{{$t("runCenter.common.schedulStatus.finished")}}</el-tag>
+    				</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.procedureNo")+":"}}</td>
+    				<td>{{tenant.procedureNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.prepareWorkHours")+":"}}</td>
+    				<td>{{tenant.prepareWorkHours}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.overtimeStatus")+":"}}</td>
+    				<td>{{tenant.overtimeStatus}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.bomDesc")+":"}}</td>
+    				<td>{{tenant.bomDesc}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.ratedWorkHours")+":"}}</td>
+    				<td>{{tenant.ratedWorkHours}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.resourceDesc")+":"}}</td>
+    				<td>{{tenant.resourceDesc}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.bomNo")+":"}}</td>
+    				<td>{{tenant.bomNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.planTime")+":"}}</td>
+    				<td>{{tenant.planTime}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.executorName")+":"}}</td>
+    				<td>{{tenant.executorName}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.planNo")+":"}}</td>
+    				<td>{{tenant.planNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.actualTime")+":"}}</td>
+    				<td>{{tenant.actualTime}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.taskResour")+":"}}</td>
+    				<td>查看任务资源</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.orderNo")+":"}}</td>
+    				<td>{{tenant.orderNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.jindu")+":"}}</td>
+    				<td><el-progress :text-inside="true" :stroke-width="24" :percentage="tenant.process"></el-progress></td>
+    				<td class="blodTd" align="center"></td>
+    				<td></td>
+    			</tr>
+    		</table>
+    	</el-row>
+    	
+    	<!-- 自动化执行流程 -->
+    	<el-row>
+    		<p class="titleP">{{$t("runCenter.form.viewSched.autoLiuc")}}</p>
+    		<el-table
+	      	:key="tableKey"
+	      	ref="table"
+	      	v-loading="loading"
+	      	:data="tableData.records"
+	      	border
+	      	fit
+	      	row-key="id"
+	      	style="width: 100%;"
+	      	highlight-current-row
+    			@current-change="handleCurrentChange"
+		    >
+		    	<!-- 序号 -->
+		    	<el-table-column :label='$t("common.serialNo")' width="55px" align="center">
+			      <template slot-scope="scope">
+			        <div>
+			          {{scope.$index+(queryParams.current - 1) * queryParams.size + 1}}
+			        </div>
+			      </template>
+		      	</el-table-column>
+		      	<!-- 权重 -->
+		      	<el-table-column prop="prority" :label='$t("runCenter.table.aotoProcess.prority")' :show-overflow-tooltip="true" width="120px"></el-table-column>
+				    <!-- 设备 -->
+				    <el-table-column prop="resourceName" :label='$t("runCenter.table.aotoProcess.resourceName")' :show-overflow-tooltip="true" width="120px"></el-table-column>
+				    <!-- 动作包指令(报文) -->
+				    <el-table-column prop="code" :label='$t("runCenter.table.aotoProcess.code")' :show-overflow-tooltip="true" width="160px"></el-table-column>
+				    <!-- 执行动作 -->
+				    <el-table-column prop="instructionName" :label='$t("runCenter.table.aotoProcess.instructionName")' :show-overflow-tooltip="true"></el-table-column>
+				    <!-- 操作说明 -->
+				    <el-table-column prop="remark" :label='$t("runCenter.table.aotoProcess.remark")' :show-overflow-tooltip="true" width="180px"></el-table-column>
+			     	<!-- 执行状态 -->
+			     	<el-table-column prop="exeStatus" :label='$t("runCenter.table.aotoProcess.exeStatus")' width="150px">
+			     		<template slot-scope="{ row }">
+				      	<el-tag v-if="row.exeStatus == '1'" type="info">{{$t("runCenter.common.exeStatus.noStart")}}</el-tag>
+								<el-tag v-if="row.exeStatus == '2'" type="">{{$t("runCenter.common.exeStatus.run")}}</el-tag>
+								<el-tag v-if="row.exeStatus == '3'" type="success">{{$t("runCenter.common.exeStatus.finished")}}</el-tag>
+							</template>
+			     	</el-table-column>
+			      <!-- 执行结果 -->
+			      <el-table-column prop="exeResult" :label='$t("runCenter.table.aotoProcess.exeResult")' width="150px">
+			      	<template slot-scope="{ row }">
+			      		<el-tag v-if="row.exeResult == '1'" type="success">{{$t("runCenter.common.exeResult.success")}}</el-tag>
+								<el-tag v-if="row.exeResult == '0'">{{$t("runCenter.common.exeResult.fail")}}</el-tag>
+							</template>
+			      </el-table-column>
+			      <!-- 开始时间 -->
+			      <el-table-column prop="startTime" :label='$t("runCenter.table.aotoProcess.startTime")' width="150px"></el-table-column>
+			      <!-- 结束时间 -->
+			      <el-table-column prop="endTime" :label='$t("runCenter.table.aotoProcess.endTime")' width="150px"></el-table-column>
+			      <!-- 反馈信息 -->
+			      <el-table-column prop="feedback" :label='$t("runCenter.table.aotoProcess.feedback")' width="150px"></el-table-column>
+			      <!-- 反馈附件 -->
+			      <el-table-column prop="feedbackFile" :label='$t("runCenter.table.aotoProcess.feedbackFile")' width="150px"></el-table-column>
+		    </el-table>
+		    <!-- 【分页】组件 -->
+		  	<pagination
+		      v-show="tableData.total > 0"
+		      :limit.sync="queryParams.size"
+		      :page.sync="queryParams.current"
+		      :total="Number(tableData.total)"
+		      @pagination="fetch"
+		    />
+    	</el-row>
+    	<!-- 所需原材料 -->
+    	<el-row>
+    		<p class="titleP">{{$t("prepare.common.meterial")}}</p>
+    		<!-- Table数据 -->
+				<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData1"
+		      border
+		      fit
+		      style="width: 100%;"
+		    >
+		    	<!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.tools.no")' align="center" width="120px"></el-table-column>
+		      <!-- 名称 -->
+		      <el-table-column prop="name" :label='$t("prepare.table.tools.name")' align="center" width="150px"></el-table-column>
+		     	<!-- 规格 -->
+		     	<el-table-column prop="specification" :label='$t("prepare.table.tools.specification")' :show-overflow-tooltip="true" width="180px"></el-table-column>
+		      <!-- 品牌 -->
+		      <el-table-column prop="brand.data" :label='$t("prepare.table.tools.brand")' width="120px"></el-table-column>
+		      <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("common.remark")'></el-table-column>
+		      <!-- 入产线编码 -->
+		      <el-table-column prop="uniqueCode" label='入产线编码'>
+		      	<template slot-scope="{ row }">
+		      		<el-input size="small" v-model="row.uniqueCode" :placeholder='$t("common.pleaseEnter")'></el-input>
+		      	</template>
+		      </el-table-column>
+		    </el-table>
+    	</el-row>	
+    	<!-- 托盘夹具组 -->
+    	<el-row>
+    		<p class="titleP">{{$t("prepare.common.tpJgroup")}}</p>
+    		<!-- Table数据 :span-method="objectSpanMethod"  -->
+				<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData2"
+		      border
+		      fit
+		      highlight-current-row
+	    		@current-change="handleCurrentChange"
+		      style="width: 100%;"
+		      :span-method="objectSpanMethod"
+		    >
+		    	<!-- 组序 -->
+		    	<el-table-column prop="groupSort" :label='$t("prepare.table.toolGroup.groupSort")' align="center" width="70px"></el-table-column>
+		    	<!-- 优先级 -->
+		    	<el-table-column prop="groupPrority" :label='$t("prepare.table.toolGroup.groupPrority")' align="center" width="80px"></el-table-column>
+		    	<!-- 类型 -->
+		    	<el-table-column prop="category.data" :label='$t("prepare.table.toolGroup.category")' align="center" width="100px">
+		    		<template slot-scope="{ row }">
+		    			<span>{{row.category.data}}</span>
+		    			<!--<el-button v-if="row.category.key == '02'" type="text" @click="editTools(row)">{{row.category.data}}</el-button>
+		    			<el-button v-else type="text" @click="addRow(row)">{{row.category.data}}</el-button>-->
+		    		</template>
+		    	</el-table-column>
+		    	<!-- 名称 -->
+		    	<el-table-column prop="name" :label='$t("prepare.table.toolGroup.name")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.toolGroup.no")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 规格 -->
+		      <el-table-column prop="specification" :label='$t("prepare.table.toolGroup.specification")' width="180px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 品牌 -->
+		      <el-table-column prop="brand.data" :label='$t("prepare.table.toolGroup.brand")' width="180px"></el-table-column>
+		      <!-- 使用加紧位置 -->
+		      <el-table-column prop="positions" :label='$t("prepare.table.toolGroup.positions")' align="center" width="180px"></el-table-column>
+		      <!-- 装甲方式 -->
+		      <el-table-column prop="armorPic" :label='$t("prepare.table.toolGroup.armorPic")' align="center" width="180px">
+		      	<template slot-scope="{ row }" v-if="row.category.key == '02'">
+		      		<div v-if="row.jjImgList && row.jjImgList.length > 0" class="demo-image__preview">
+							  <el-image 
+							    style="width: 100px; height: 60px"
+							    :src="row.jjImgList[0]" 
+							    :preview-src-list="row.jjImgList">
+							  </el-image>
+							</div>
+		          <!--<el-button v-else type="text" @click="handleClick(row)">{{$t("common.uploadImg")}}</el-button>-->
+						</template>
+		      </el-table-column>
+		      <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("common.remark")' width="180px"></el-table-column>
+		      <!-- 入产线编码 -->
+		      <el-table-column prop="uniqueCode" label='入产线编码' width="150px">
+		      	<template slot-scope="{ row }">
+		      		<el-input size="small" v-model="row.uniqueCode" :placeholder='$t("common.pleaseEnter")'></el-input>
+		      	</template>
+		      </el-table-column>
+		    </el-table>
+    	</el-row>
+    		
+    	<div slot="footer" class="dialog-footer">
+	      <el-button plain type="info" @click="isVisible = false">{{ $t('machining.buttons.noFinished') }}</el-button>
+	      <el-button type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('machining.buttons.finished') }}</el-button>
+	    </div>
+    </div>
+  </el-dialog>
+</template>
+<script>
+	// 【分页】组件
+	import Pagination from "@/components/Pagination"
+	// 【自动化程序管理】-API
+	import automatedProcessesApi from "@/api/prepareProductMgr/automatedProcesses"
+	// 【产品工艺版本管理】-API
+	import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
+	// 【机加工人端】-API
+	import machiningClientApi from "@/api/machiningClient/machiningClient"
+	// 列表查询的共通参数
+	import { initQueryParams } from '@/utils/commons'
+export default {
+  name: 'TaskView',
+  components: { Pagination },
+  props: {
+    dialogVisible: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      screenWidth: 0,
+      confirmDisabled: false,
+      width: this.initWidth(),
+      tenant: {},
+      queryParams: initQueryParams({}),
+      loading: false,
+    	tenantViewVisible: false,
+    	tableKey: 0,
+	  	tableData: {
+	    	total: 0
+	  	},
+	  	tableData1: [],
+	  	tableData2: [],
+	  	currentRow: null, // 当前选择的行
+	  	
+	  	spanArr: [],  // 【组序】合并单元格
+	    spanArr2: [],  // 【优先级】合并单元格
+    }
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+  	// 加载列表数据
+  	// this.fetch()
+	},
+  computed: {
+    isVisible: {
+      get () {
+        return this.dialogVisible
+      },
+      set () {
+        this.close()
+      }
+    }
+  },
+  mounted () {
+    window.onresize = () => {
+      return (() => {
+        this.width = this.initWidth()
+      })()
+    }
+  },
+  methods: {
+  	submitForm(){
+  		let obj ={
+  			taskNode: this.tenant,
+  			meterialList: this.tableData1,
+  			procedureTrayList: this.tableData2
+  		}
+  		console.log("表单数据:", obj)
+  		// return false
+  		machiningClientApi.finishTaskNode(obj).then((response) => {
+	      const res = response.data
+	      if (res.isSuccess) {
+	        this.isVisible = false
+	        this.$message({
+	          message: this.$t('tips.updateSuccess'),
+	          type: 'success'
+	        })
+	        // 通知列表
+	        this.$emit("success");
+	      }
+	    }).finally(() => {
+	      this.confirmDisabled = false
+	      return true
+	    })
+  	},
+  	// table的当前行值变化后
+  	handleCurrentChange(val) {
+			// 设置当前行
+    	this.currentRow = val;
+  	},
+    initWidth () {
+      this.screenWidth = document.body.clientWidth
+      if (this.screenWidth < 550) {
+        return '95%'
+      } else if (this.screenWidth < 990) {
+        return '580px'
+      } else if (this.screenWidth < 1400) {
+        return '600px'
+      } else {
+        return '650px'
+      }
+    },
+    setTenant (val) {
+      this.tenant = { ...val }
+      // 加载上部门2个数据
+  		this.fetch()
+  		// 加载下部分2个数据
+  		this.getDetail(val)
+    },
+    close () {
+      this.$emit('close')
+    },
+    fetch (params = {}) {
+      this.loading = true
+      /*// 日期区间-参数
+      if (this.queryParams.timeRange) {
+        this.queryParams.map.createTime_st = this.queryParams.timeRange[0]
+        this.queryParams.map.createTime_ed = this.queryParams.timeRange[1]
+      }
+			// 分页-参数
+      this.queryParams.current = params.current ? params.current : this.queryParams.current
+      this.queryParams.size = params.size ? params.size : this.queryParams.size
+      // 条件-参数*/
+      console.log("列表的row数据:", this.tenant)
+      automatedProcessesApi.taskAutoNodeList({taskId: this.tenant.taskId, procedureId: this.tenant.procedureId, orderId: this.tenant.orderId}).then(response => {
+        const res = response.data
+        if (res.isSuccess) {
+          this.tableData.records = res.data
+        }
+        // eslint-disable-next-line no-return-assign
+      }).finally(() => this.loading = false)
+     
+    },
+    //获得数据相同的行数
+ 		rowspanFiled(data, filed) {
+ 			let spanArr5 = [];
+	    data.forEach((item,index) => {
+        if( index === 0){
+            spanArr5.push(1);
+            this.position = 0;
+        }else{
+            if(data[index].groupSort === data[index-1].groupSort && data[index][filed] === data[index-1][filed]){
+                spanArr5[this.position] += 1;
+                spanArr5.push(0);
+            }else{
+                spanArr5.push(1);
+                this.position = index;
+            }
+        }
+	    })
+	    return spanArr5;
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    // 根据【工艺id】查询详情信息
+    getDetail(obj){
+    	machiningClientApi.getTaskNodeProcessAnalysis(obj).then(res => {
+    		res = res.data 
+    		if(res.isSuccess){
+    			console.log("详情信息:", res.data)
+    			// 给各个组件赋值
+		    	// 把【设备】的数据,给【程序】使用
+		    	// this.setProgram(eqList)
+		    	// 获取【所需原材料】数据
+		    	this.tableData1 = this.setKeyList(res.data.meterialList)
+		    	// 获取【托盘夹具组】数据
+		    	this.tableData2 = this.setKeyList(res.data.procedureTrayList, 'tray')
+		    	// 要合并列的准备数据
+		    	if(this.tableData2.length > 0){
+		    		this.spanArr = this.rowspanFiled(this.tableData2, "groupSort")
+				  	this.spanArr2 = this.rowspanFiled(this.tableData2, "groupPrority")
+		    	}
+    		}
+    	})
+    },
+    // 赋值前处理-添加key数据健
+    setKeyList(list, flag){
+    	if(list.length > 0){
+    		let arr = []
+    		list.forEach(item => {
+    			// 添加唯一键
+	    		item.key = ''+ Math.random()
+	    		// 如果是托盘夹具的时候,组装分类
+	    		if(flag == 'tray'){
+	    			// 把【组序】和【优先级】改成字符串
+	    			//item.groupSort = ''+ item.groupSort
+	    			//item.groupPrority = ''+ item.groupPrority
+	    			// 给图片一个列表数据,jjImgList
+	    			item.jjImgList = []
+	    			if(!!item.armorPic){
+	    				item.jjImgList.push(item.armorPic)
+	    			}
+	    			// 添加类型
+	    			if(item.bizType == '1'){
+	    				item.category = {key: '03',data: '托盘'}
+	    			}else{
+	    				item.category = {key: '02',data: '夹具'}
+	    			}
+	    		}
+	    		arr.push(item)
+	    	})
+    		list = arr
+    	}
+    	return list
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+	.dialog-footer{
+		text-align: center;
+		padding: 30px;
+	}
+	.titleP{
+		position: relative;
+		font-size: 16px;
+		padding-left: 15px;
+	}
+	.titleP:before{
+		content: '';
+		position: absolute;
+		left: 0;
+		top: 3px;
+		width: 5px;
+		height: 80%;
+		background: #0F79DC;
+	}
+	.comtable{
+		width: 100%;
+		border-left: 1px solid #CCCCCC;
+		border-top: 1px solid #CCCCCC;
+	}
+	.comtable td{
+		border-right: 1px solid #CCCCCC;
+		border-bottom: 1px solid #CCCCCC;
+	}
+	.blodTd{
+		background: #EEEEEE;
+		color: #333333;
+	}
+</style>

+ 418 - 0
imcs-ui/src/views/zuihou/machiningClient/touchScreen/components/View1.vue

@@ -0,0 +1,418 @@
+<template>
+  <el-dialog
+    :title="$t(&quot;common.view&quot;)"
+    width="80%"
+    :append-to-body="true"
+    :visible.sync="isVisible"
+    class="tenant-view"
+  >
+    <div class="boxDiv">
+    	<!-- 任务信息 -->
+        <el-steps :active="active" finish-status="success" simple style="margin:20px 0;">
+  				<el-step title="夹具安装" ></el-step>
+  				<el-step title="物料装夹" ></el-step>  				
+		</el-steps>
+
+    	<el-row v-show="this.active==1">
+    		<p style="margin-top:0;text-align:center;font-size:18px;">{{$t("runCenter.form.viewSched.name")}}
+				<span style="float:right;margin-right:20px;font-size:14px;">{{$t("runCenter.form.viewSched.bomNo")+":"}}{{tenant.no}}</span>
+			</p>
+    		<table class="comtable" border="0" cellspacing="0" cellpadding="6">
+    			<tr>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.procedureNo")+":"}}</td>
+    				<td width="200">{{tenant.taskNo}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.status")+":"}}</td>
+    				<td width="120">
+                         <el-tag v-if="tenant.status == 0" type="info">{{$t("runCenter.common.schedulStatus.noStart")}}</el-tag>
+							<el-tag v-if="tenant.status == 1" type="">{{$t("runCenter.common.schedulStatus.run")}}</el-tag>
+							<el-tag v-if="tenant.status == 2" type="success">{{$t("runCenter.common.schedulStatus.finished")}}</el-tag> 
+					</td>    				
+    			</tr>
+    			<tr>
+					<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.procedureDesc")+":"}}</td>
+    				<td>{{tenant.taskName}}</td>
+					<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.content")+":"}}</td>
+    				<td width="200">{{tenant.content}}</td>    				
+    			</tr>
+				<tr>
+                    <td class="blodTd" align="center">{{$t("runCenter.form.viewSched.prepareWorkHours")+":"}}</td>
+    				<td>{{tenant.time}}分钟</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.procedurePosition")+":"}}</td>
+    				<td>{{tenant.procedurePosition}}</td>
+				</tr>	
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.startTime")+":"}}</td>
+    				<td>{{tenant.bomDesc}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.endTime")+":"}}</td>
+    				<td>{{tenant.endTime}}</td>
+    			</tr>
+    		</table>
+    	</el-row>    	
+    	
+    	<!-- 安装夹具 -->
+    	<el-row v-show="this.active==1">
+    		<p class="titleP" style="margin-top:15px;color:#000;font-size:18px;" >ST1: 请安装夹具 <span style="color:red;margin-left:5px;font-size:14px;">系统检测夹具不足</span></p>
+    		<!-- Table数据 -->
+			<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData.records"
+		      border
+		      fit
+		      style="width: 100%;"
+		    >
+		      <!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.tools.no")' align="center" ></el-table-column>
+		       <!-- 编号 -->
+		      <el-table-column prop="type" :label='$t("prepare.table.tools.type")' align="center" ></el-table-column>
+			  <!-- 名称 -->
+		      <el-table-column prop="name" :label='$t("prepare.table.tools.name")' align="center"></el-table-column>
+		     
+		    </el-table>
+    	</el-row>	
+
+		<!-- 装夹物料 -->
+    	<el-row v-show="this.active>1">
+    		<p class="titleP" style="margin-top:15px;color:#000;font-size:18px;" >ST2: 装夹物料</p>
+    		<!-- Table数据 -->
+			<el-table
+		      ref="table1"
+		      v-loading="loading"
+		      :data="tableData1.records"
+		      border
+		      fit
+		      style="width: 100%;"
+		    >
+		      <!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.tools.no")' align="center" ></el-table-column>
+		       <!-- 编号 -->
+		      <el-table-column prop="type" :label='$t("prepare.table.tools.type")' align="center" ></el-table-column>
+			  <!-- 名称 -->
+		      <el-table-column prop="name" :label='$t("prepare.table.tools.name")' align="center"></el-table-column>
+              <!-- 装夹方式 -->
+		      <el-table-column prop="clampImg" :label='$t("prepare.table.tools.clampImg")' align="center">
+                    <template slot-scope="{ row }">
+                         <div class="block">
+                             <el-image
+      							style="width: 60px; height: 60px"
+      							:src="row.clampImg"
+      							fit="fill"></el-image>
+						 </div>	 
+					</template>
+			  </el-table-column>
+			  <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("prepare.table.tools.name")' align="center"></el-table-column>		     
+ 
+		    </el-table>
+    	</el-row>
+
+		<!-- 输入唯一码 -->
+    	<el-row v-show="this.active>1">
+          <p class="titleP" style="margin-top:15px;color:#000;font-size:18px;" >输入零件编码    <el-button size="small" type="primary" @click.native="generate" round>系统生成</el-button></p>
+          <el-input v-model="uniqueCode" placeholder="输入零件编码"></el-input>
+
+	    </el-row>		
+    	    		
+    	<div slot="footer" class="dialog-footer">
+		  <el-button plain type="info" @click.native="prev" v-show="this.active>1"  >返回上一步</el-button>		     
+	      <el-button type="primary" :disabled="confirmDisabled" @click.native="next" v-show="this.active==1">已完成,下一步</el-button>
+		  <el-button type="primary" :disabled="confirmDisabled" @click.native="submitForm" v-show="this.active>1">上料完成</el-button>
+	    </div>
+    </div>
+  </el-dialog>
+</template>
+<script>
+	// 【分页】组件
+	import Pagination from "@/components/Pagination"
+	// 【自动化程序管理】-API
+	import automatedProcessesApi from "@/api/prepareProductMgr/automatedProcesses"
+	// 【产品工艺版本管理】-API
+	import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
+	// 【机加工人端】-API
+	import machiningClientApi from "@/api/machiningClient/machiningClient"
+	// 列表查询的共通参数
+	import { initQueryParams } from '@/utils/commons'
+export default {
+  name: 'TaskView',
+  components: { Pagination },
+  props: {
+    dialogVisible: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+	  active: 1,
+      screenWidth: 0,
+      confirmDisabled: false,
+      width: this.initWidth(),
+      tenant: {},
+      queryParams: initQueryParams({}),
+      loading: false,
+	  uniqueCode: '',	  
+    	tenantViewVisible: false,
+    	tableKey: 0,
+	  	tableData: {
+	    	total: 0
+	  	},
+	  	tableData1: {
+           total: 0
+		},
+	  	tableData2: [],
+	  	currentRow: null, // 当前选择的行
+	  	
+	  	spanArr: [],  // 【组序】合并单元格
+	    spanArr2: [],  // 【优先级】合并单元格
+    }
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+  	// 加载列表数据
+  	// this.fetch()
+	},
+  computed: {
+    isVisible: {
+      get () {
+        return this.dialogVisible
+      },
+      set () {
+        this.close()
+      }
+    }
+  },
+  mounted () {
+    window.onresize = () => {
+      return (() => {
+        this.width = this.initWidth()
+      })()
+    }
+  },
+  methods: {
+	prev(){
+      if (this.active-- < 0) this.active = 0;
+	},  
+	next(){
+       if (this.active++ > 1) this.active = 0;
+	},  
+  	submitForm(){
+  		let obj = {
+  			taskNode: this.tenant,
+  			meterialList: this.tableData1,
+  			procedureTrayList: this.tableData2
+  		}
+  		console.log("表单数据:", obj)
+  		// return false
+  		machiningClientApi.finishTaskNode(obj).then((response) => {
+	      const res = response.data
+	      if (res.isSuccess) {
+	        this.isVisible = false
+	        this.$message({
+	          message: this.$t('tips.updateSuccess'),
+	          type: 'success'
+	        })
+	        // 通知列表
+	        this.$emit("success");
+	      }
+	    }).finally(() => {
+	      this.confirmDisabled = false
+	      return true
+	    })
+  	},
+  	// table的当前行值变化后
+  	handleCurrentChange(val) {
+			// 设置当前行
+    	this.currentRow = val;
+  	},
+    initWidth () {
+      this.screenWidth = document.body.clientWidth
+      if (this.screenWidth < 550) {
+        return '95%'
+      } else if (this.screenWidth < 990) {
+        return '580px'
+      } else if (this.screenWidth < 1400) {
+        return '600px'
+      } else {
+        return '650px'
+      }
+    },
+    setTenant (val) {
+      this.tenant = { ...val }
+      // 加载上部门2个数据
+  		this.fetch()
+  		// 加载下部分2个数据
+  		//this.getDetail(val)
+    },
+    close () {
+      this.$emit('close')
+    },
+    fetch (params = {}) {
+      this.loading = true
+      //日期区间-参数
+      if (this.queryParams.timeRange) {
+        this.queryParams.map.createTime_st = this.queryParams.timeRange[0]
+        this.queryParams.map.createTime_ed = this.queryParams.timeRange[1]
+      }
+	  // 分页-参数
+      this.queryParams.current = params.current ? params.current : this.queryParams.current
+      this.queryParams.size = params.size ? params.size : this.queryParams.size
+      // 条件-参数
+      console.log("列表的row数据:", this.tenant)
+	  /*
+      automatedProcessesApi.taskAutoNodeList({taskId: this.tenant.taskId, procedureId: this.tenant.procedureId, orderId: this.tenant.orderId}).then(response => {
+        const res = response.data
+        if (res.isSuccess) {
+          this.tableData.records = res.data
+        }
+        // eslint-disable-next-line no-return-assign
+      }).finally(() => this.loading = false) */
+	  this.tableData.records = [{'no':'龙威夹','type':'&230','name':'龙威'}];
+	  this.tableData1.records = [{'no':'龙威夹','type':'&230','name':'龙威','clampImg':require(`@/assets/yunMap/clampImg.png`),'remark':'备注'}];
+	  this.loading = false;
+     
+    },
+    //获得数据相同的行数
+ 	rowspanFiled(data, filed) {
+ 			let spanArr5 = [];
+	    data.forEach((item,index) => {
+        if( index === 0){
+            spanArr5.push(1);
+            this.position = 0;
+        }else{
+            if(data[index].groupSort === data[index-1].groupSort && data[index][filed] === data[index-1][filed]){
+                spanArr5[this.position] += 1;
+                spanArr5.push(0);
+            }else{
+                spanArr5.push(1);
+                this.position = index;
+            }
+        }
+	    })
+	    return spanArr5;
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    // 根据【工艺id】查询详情信息
+    getDetail(obj){
+		/*		
+    	machiningClientApi.getTaskNodeProcessAnalysis(obj).then(res => {
+    		res = res.data 
+    		if(res.isSuccess){
+    			console.log("详情信息:", res.data)
+    			// 给各个组件赋值
+		    	// 把【设备】的数据,给【程序】使用
+		    	// this.setProgram(eqList)
+		    	// 获取【所需原材料】数据
+		    	this.tableData1 = this.setKeyList(res.data.meterialList)
+		    	// 获取【托盘夹具组】数据
+		    	this.tableData2 = this.setKeyList(res.data.procedureTrayList, 'tray')
+		    	// 要合并列的准备数据
+		    	if(this.tableData2.length > 0){
+		    		this.spanArr = this.rowspanFiled(this.tableData2, "groupSort")
+				  	this.spanArr2 = this.rowspanFiled(this.tableData2, "groupPrority")
+		    	}
+    		}
+    	}) */		
+    },
+    // 赋值前处理-添加key数据健
+    setKeyList(list, flag){
+    	if(list.length > 0){
+    		let arr = []
+    		list.forEach(item => {
+    			// 添加唯一键
+	    		item.key = ''+ Math.random()
+	    		// 如果是托盘夹具的时候,组装分类
+	    		if(flag == 'tray'){
+	    			// 把【组序】和【优先级】改成字符串
+	    			//item.groupSort = ''+ item.groupSort
+	    			//item.groupPrority = ''+ item.groupPrority
+	    			// 给图片一个列表数据,jjImgList
+	    			item.jjImgList = []
+	    			if(!!item.armorPic){
+	    				item.jjImgList.push(item.armorPic)
+	    			}
+	    			// 添加类型
+	    			if(item.bizType == '1'){
+	    				item.category = {key: '03',data: '托盘'}
+	    			}else{
+	    				item.category = {key: '02',data: '夹具'}
+	    			}
+	    		}
+	    		arr.push(item)
+	    	})
+    		list = arr
+    	}
+    	return list
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+	.dialog-footer{
+		text-align: center;
+		padding: 30px;
+	}
+	.titleP{
+		position: relative;
+		font-size: 16px;
+		padding-left: 15px;
+	}
+	.titleP:before{
+		content: '';
+		position: absolute;
+		left: 0;
+		top: 3px;
+		width: 5px;
+		height: 80%;
+		background: #0F79DC;
+	}
+	.comtable{
+		width: 100%;
+		border-left: 1px solid #CCCCCC;
+		border-top: 1px solid #CCCCCC;
+	}
+	.comtable td{
+		border-right: 1px solid #CCCCCC;
+		border-bottom: 1px solid #CCCCCC;
+	}
+	.blodTd{
+		background: #EEEEEE;
+		color: #333333;
+	}
+</style>

+ 512 - 0
imcs-ui/src/views/zuihou/machiningClient/touchScreen/components/View2.vue

@@ -0,0 +1,512 @@
+<template>
+  <el-dialog
+    :title="$t(&quot;common.view&quot;)"
+    width="80%"
+    :append-to-body="true"
+    :visible.sync="isVisible"
+    class="tenant-view"
+  >
+    <div class="boxDiv">
+    	<!-- 任务信息 -->
+    	<el-row>
+    		<p class="titleP" style="margin-top: 0;">{{$t("runCenter.form.viewSched.name")+":"}}</p>
+    		<table class="comtable" border="0" cellspacing="0" cellpadding="6">
+    			<tr>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.procedureDesc")+":"}}</td>
+    				<td width="200">{{tenant.procedureDesc}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.content")+":"}}</td>
+    				<td width="300">{{tenant.content}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.status")+":"}}</td>
+    				<td width="200">
+		          <el-tag v-if="tenant.status == '1'" type="info">{{$t("runCenter.common.schedulStatus.noStart")}}</el-tag>
+							<el-tag v-if="tenant.status == '2'" type="">{{$t("runCenter.common.schedulStatus.run")}}</el-tag>
+							<el-tag v-if="tenant.status == '3'" type="success">{{$t("runCenter.common.schedulStatus.finished")}}</el-tag>
+    				</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.procedureNo")+":"}}</td>
+    				<td>{{tenant.procedureNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.prepareWorkHours")+":"}}</td>
+    				<td>{{tenant.prepareWorkHours}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.overtimeStatus")+":"}}</td>
+    				<td>{{tenant.overtimeStatus}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.bomDesc")+":"}}</td>
+    				<td>{{tenant.bomDesc}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.ratedWorkHours")+":"}}</td>
+    				<td>{{tenant.ratedWorkHours}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.resourceDesc")+":"}}</td>
+    				<td>{{tenant.resourceDesc}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.bomNo")+":"}}</td>
+    				<td>{{tenant.bomNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.planTime")+":"}}</td>
+    				<td>{{tenant.planTime}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.executorName")+":"}}</td>
+    				<td>{{tenant.executorName}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.planNo")+":"}}</td>
+    				<td>{{tenant.planNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.actualTime")+":"}}</td>
+    				<td>{{tenant.actualTime}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.taskResour")+":"}}</td>
+    				<td>查看任务资源</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.orderNo")+":"}}</td>
+    				<td>{{tenant.orderNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.jindu")+":"}}</td>
+    				<td><el-progress :text-inside="true" :stroke-width="24" :percentage="tenant.process"></el-progress></td>
+    				<td class="blodTd" align="center"></td>
+    				<td></td>
+    			</tr>
+    		</table>
+    	</el-row>
+    	
+    	<!-- 自动化执行流程 -->
+    	<el-row>
+    		<p class="titleP">{{$t("runCenter.form.viewSched.autoLiuc")}}</p>
+    		<el-table
+	      	:key="tableKey"
+	      	ref="table"
+	      	v-loading="loading"
+	      	:data="tableData.records"
+	      	border
+	      	fit
+	      	row-key="id"
+	      	style="width: 100%;"
+	      	highlight-current-row
+    			@current-change="handleCurrentChange"
+		    >
+		    	<!-- 序号 -->
+		    	<el-table-column :label='$t("common.serialNo")' width="55px" align="center">
+			      <template slot-scope="scope">
+			        <div>
+			          {{scope.$index+(queryParams.current - 1) * queryParams.size + 1}}
+			        </div>
+			      </template>
+		      	</el-table-column>
+		      	<!-- 权重 -->
+		      	<el-table-column prop="prority" :label='$t("runCenter.table.aotoProcess.prority")' :show-overflow-tooltip="true" width="120px"></el-table-column>
+				    <!-- 设备 -->
+				    <el-table-column prop="resourceName" :label='$t("runCenter.table.aotoProcess.resourceName")' :show-overflow-tooltip="true" width="120px"></el-table-column>
+				    <!-- 动作包指令(报文) -->
+				    <el-table-column prop="code" :label='$t("runCenter.table.aotoProcess.code")' :show-overflow-tooltip="true" width="160px"></el-table-column>
+				    <!-- 执行动作 -->
+				    <el-table-column prop="instructionName" :label='$t("runCenter.table.aotoProcess.instructionName")' :show-overflow-tooltip="true"></el-table-column>
+				    <!-- 操作说明 -->
+				    <el-table-column prop="remark" :label='$t("runCenter.table.aotoProcess.remark")' :show-overflow-tooltip="true" width="180px"></el-table-column>
+			     	<!-- 执行状态 -->
+			     	<el-table-column prop="exeStatus" :label='$t("runCenter.table.aotoProcess.exeStatus")' width="150px">
+			     		<template slot-scope="{ row }">
+				      	<el-tag v-if="row.exeStatus == '1'" type="info">{{$t("runCenter.common.exeStatus.noStart")}}</el-tag>
+								<el-tag v-if="row.exeStatus == '2'" type="">{{$t("runCenter.common.exeStatus.run")}}</el-tag>
+								<el-tag v-if="row.exeStatus == '3'" type="success">{{$t("runCenter.common.exeStatus.finished")}}</el-tag>
+							</template>
+			     	</el-table-column>
+			      <!-- 执行结果 -->
+			      <el-table-column prop="exeResult" :label='$t("runCenter.table.aotoProcess.exeResult")' width="150px">
+			      	<template slot-scope="{ row }">
+			      		<el-tag v-if="row.exeResult == '1'" type="success">{{$t("runCenter.common.exeResult.success")}}</el-tag>
+								<el-tag v-if="row.exeResult == '0'">{{$t("runCenter.common.exeResult.fail")}}</el-tag>
+							</template>
+			      </el-table-column>
+			      <!-- 开始时间 -->
+			      <el-table-column prop="startTime" :label='$t("runCenter.table.aotoProcess.startTime")' width="150px"></el-table-column>
+			      <!-- 结束时间 -->
+			      <el-table-column prop="endTime" :label='$t("runCenter.table.aotoProcess.endTime")' width="150px"></el-table-column>
+			      <!-- 反馈信息 -->
+			      <el-table-column prop="feedback" :label='$t("runCenter.table.aotoProcess.feedback")' width="150px"></el-table-column>
+			      <!-- 反馈附件 -->
+			      <el-table-column prop="feedbackFile" :label='$t("runCenter.table.aotoProcess.feedbackFile")' width="150px"></el-table-column>
+		    </el-table>
+		    <!-- 【分页】组件 -->
+		  	<pagination
+		      v-show="tableData.total > 0"
+		      :limit.sync="queryParams.size"
+		      :page.sync="queryParams.current"
+		      :total="Number(tableData.total)"
+		      @pagination="fetch"
+		    />
+    	</el-row>
+    	<!-- 所需原材料 -->
+    	<el-row>
+    		<p class="titleP">{{$t("prepare.common.meterial")}}</p>
+    		<!-- Table数据 -->
+				<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData1"
+		      border
+		      fit
+		      style="width: 100%;"
+		    >
+		    	<!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.tools.no")' align="center" width="120px"></el-table-column>
+		      <!-- 名称 -->
+		      <el-table-column prop="name" :label='$t("prepare.table.tools.name")' align="center" width="150px"></el-table-column>
+		     	<!-- 规格 -->
+		     	<el-table-column prop="specification" :label='$t("prepare.table.tools.specification")' :show-overflow-tooltip="true" width="180px"></el-table-column>
+		      <!-- 品牌 -->
+		      <el-table-column prop="brand.data" :label='$t("prepare.table.tools.brand")' width="120px"></el-table-column>
+		      <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("common.remark")'></el-table-column>
+		      <!-- 入产线编码 -->
+		      <el-table-column prop="uniqueCode" label='入产线编码'>
+		      	<template slot-scope="{ row }">
+		      		<el-input size="small" v-model="row.uniqueCode" :placeholder='$t("common.pleaseEnter")'></el-input>
+		      	</template>
+		      </el-table-column>
+		    </el-table>
+    	</el-row>	
+    	<!-- 托盘夹具组 -->
+    	<el-row>
+    		<p class="titleP">{{$t("prepare.common.tpJgroup")}}</p>
+    		<!-- Table数据 :span-method="objectSpanMethod"  -->
+				<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData2"
+		      border
+		      fit
+		      highlight-current-row
+	    		@current-change="handleCurrentChange"
+		      style="width: 100%;"
+		      :span-method="objectSpanMethod"
+		    >
+		    	<!-- 组序 -->
+		    	<el-table-column prop="groupSort" :label='$t("prepare.table.toolGroup.groupSort")' align="center" width="70px"></el-table-column>
+		    	<!-- 优先级 -->
+		    	<el-table-column prop="groupPrority" :label='$t("prepare.table.toolGroup.groupPrority")' align="center" width="80px"></el-table-column>
+		    	<!-- 类型 -->
+		    	<el-table-column prop="category.data" :label='$t("prepare.table.toolGroup.category")' align="center" width="100px">
+		    		<template slot-scope="{ row }">
+		    			<span>{{row.category.data}}</span>
+		    			<!--<el-button v-if="row.category.key == '02'" type="text" @click="editTools(row)">{{row.category.data}}</el-button>
+		    			<el-button v-else type="text" @click="addRow(row)">{{row.category.data}}</el-button>-->
+		    		</template>
+		    	</el-table-column>
+		    	<!-- 名称 -->
+		    	<el-table-column prop="name" :label='$t("prepare.table.toolGroup.name")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.toolGroup.no")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 规格 -->
+		      <el-table-column prop="specification" :label='$t("prepare.table.toolGroup.specification")' width="180px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 品牌 -->
+		      <el-table-column prop="brand.data" :label='$t("prepare.table.toolGroup.brand")' width="180px"></el-table-column>
+		      <!-- 使用加紧位置 -->
+		      <el-table-column prop="positions" :label='$t("prepare.table.toolGroup.positions")' align="center" width="180px"></el-table-column>
+		      <!-- 装甲方式 -->
+		      <el-table-column prop="armorPic" :label='$t("prepare.table.toolGroup.armorPic")' align="center" width="180px">
+		      	<template slot-scope="{ row }" v-if="row.category.key == '02'">
+		      		<div v-if="row.jjImgList && row.jjImgList.length > 0" class="demo-image__preview">
+							  <el-image 
+							    style="width: 100px; height: 60px"
+							    :src="row.jjImgList[0]" 
+							    :preview-src-list="row.jjImgList">
+							  </el-image>
+							</div>
+		          <!--<el-button v-else type="text" @click="handleClick(row)">{{$t("common.uploadImg")}}</el-button>-->
+						</template>
+		      </el-table-column>
+		      <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("common.remark")' width="180px"></el-table-column>
+		      <!-- 入产线编码 -->
+		      <el-table-column prop="uniqueCode" label='入产线编码' width="150px">
+		      	<template slot-scope="{ row }">
+		      		<el-input size="small" v-model="row.uniqueCode" :placeholder='$t("common.pleaseEnter")'></el-input>
+		      	</template>
+		      </el-table-column>
+		    </el-table>
+    	</el-row>
+    		
+    	<div slot="footer" class="dialog-footer">
+	      <el-button plain type="info" @click="isVisible = false">{{ $t('machining.buttons.noFinished') }}</el-button>
+	      <el-button type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('machining.buttons.finished') }}</el-button>
+	    </div>
+    </div>
+  </el-dialog>
+</template>
+<script>
+	// 【分页】组件
+	import Pagination from "@/components/Pagination"
+	// 【自动化程序管理】-API
+	import automatedProcessesApi from "@/api/prepareProductMgr/automatedProcesses"
+	// 【产品工艺版本管理】-API
+	import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
+	// 【机加工人端】-API
+	import machiningClientApi from "@/api/machiningClient/machiningClient"
+	// 列表查询的共通参数
+	import { initQueryParams } from '@/utils/commons'
+export default {
+  name: 'TaskView',
+  components: { Pagination },
+  props: {
+    dialogVisible: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      screenWidth: 0,
+      confirmDisabled: false,
+      width: this.initWidth(),
+      tenant: {},
+      queryParams: initQueryParams({}),
+      loading: false,
+    	tenantViewVisible: false,
+    	tableKey: 0,
+	  	tableData: {
+	    	total: 0
+	  	},
+	  	tableData1: [],
+	  	tableData2: [],
+	  	currentRow: null, // 当前选择的行
+	  	
+	  	spanArr: [],  // 【组序】合并单元格
+	    spanArr2: [],  // 【优先级】合并单元格
+    }
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+  	// 加载列表数据
+  	// this.fetch()
+	},
+  computed: {
+    isVisible: {
+      get () {
+        return this.dialogVisible
+      },
+      set () {
+        this.close()
+      }
+    }
+  },
+  mounted () {
+    window.onresize = () => {
+      return (() => {
+        this.width = this.initWidth()
+      })()
+    }
+  },
+  methods: {
+  	submitForm(){
+  		let obj ={
+  			taskNode: this.tenant,
+  			meterialList: this.tableData1,
+  			procedureTrayList: this.tableData2
+  		}
+  		console.log("表单数据:", obj)
+  		// return false
+  		machiningClientApi.finishTaskNode(obj).then((response) => {
+	      const res = response.data
+	      if (res.isSuccess) {
+	        this.isVisible = false
+	        this.$message({
+	          message: this.$t('tips.updateSuccess'),
+	          type: 'success'
+	        })
+	        // 通知列表
+	        this.$emit("success");
+	      }
+	    }).finally(() => {
+	      this.confirmDisabled = false
+	      return true
+	    })
+  	},
+  	// table的当前行值变化后
+  	handleCurrentChange(val) {
+			// 设置当前行
+    	this.currentRow = val;
+  	},
+    initWidth () {
+      this.screenWidth = document.body.clientWidth
+      if (this.screenWidth < 550) {
+        return '95%'
+      } else if (this.screenWidth < 990) {
+        return '580px'
+      } else if (this.screenWidth < 1400) {
+        return '600px'
+      } else {
+        return '650px'
+      }
+    },
+    setTenant (val) {
+      this.tenant = { ...val }
+      // 加载上部门2个数据
+  		this.fetch()
+  		// 加载下部分2个数据
+  		this.getDetail(val)
+    },
+    close () {
+      this.$emit('close')
+    },
+    fetch (params = {}) {
+      this.loading = true
+      /*// 日期区间-参数
+      if (this.queryParams.timeRange) {
+        this.queryParams.map.createTime_st = this.queryParams.timeRange[0]
+        this.queryParams.map.createTime_ed = this.queryParams.timeRange[1]
+      }
+			// 分页-参数
+      this.queryParams.current = params.current ? params.current : this.queryParams.current
+      this.queryParams.size = params.size ? params.size : this.queryParams.size
+      // 条件-参数*/
+      console.log("列表的row数据:", this.tenant)
+      automatedProcessesApi.taskAutoNodeList({taskId: this.tenant.taskId, procedureId: this.tenant.procedureId, orderId: this.tenant.orderId}).then(response => {
+        const res = response.data
+        if (res.isSuccess) {
+          this.tableData.records = res.data
+        }
+        // eslint-disable-next-line no-return-assign
+      }).finally(() => this.loading = false)
+     
+    },
+    //获得数据相同的行数
+ 		rowspanFiled(data, filed) {
+ 			let spanArr5 = [];
+	    data.forEach((item,index) => {
+        if( index === 0){
+            spanArr5.push(1);
+            this.position = 0;
+        }else{
+            if(data[index].groupSort === data[index-1].groupSort && data[index][filed] === data[index-1][filed]){
+                spanArr5[this.position] += 1;
+                spanArr5.push(0);
+            }else{
+                spanArr5.push(1);
+                this.position = index;
+            }
+        }
+	    })
+	    return spanArr5;
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    // 根据【工艺id】查询详情信息
+    getDetail(obj){
+    	machiningClientApi.getTaskNodeProcessAnalysis(obj).then(res => {
+    		res = res.data 
+    		if(res.isSuccess){
+    			console.log("详情信息:", res.data)
+    			// 给各个组件赋值
+		    	// 把【设备】的数据,给【程序】使用
+		    	// this.setProgram(eqList)
+		    	// 获取【所需原材料】数据
+		    	this.tableData1 = this.setKeyList(res.data.meterialList)
+		    	// 获取【托盘夹具组】数据
+		    	this.tableData2 = this.setKeyList(res.data.procedureTrayList, 'tray')
+		    	// 要合并列的准备数据
+		    	if(this.tableData2.length > 0){
+		    		this.spanArr = this.rowspanFiled(this.tableData2, "groupSort")
+				  	this.spanArr2 = this.rowspanFiled(this.tableData2, "groupPrority")
+		    	}
+    		}
+    	})
+    },
+    // 赋值前处理-添加key数据健
+    setKeyList(list, flag){
+    	if(list.length > 0){
+    		let arr = []
+    		list.forEach(item => {
+    			// 添加唯一键
+	    		item.key = ''+ Math.random()
+	    		// 如果是托盘夹具的时候,组装分类
+	    		if(flag == 'tray'){
+	    			// 把【组序】和【优先级】改成字符串
+	    			//item.groupSort = ''+ item.groupSort
+	    			//item.groupPrority = ''+ item.groupPrority
+	    			// 给图片一个列表数据,jjImgList
+	    			item.jjImgList = []
+	    			if(!!item.armorPic){
+	    				item.jjImgList.push(item.armorPic)
+	    			}
+	    			// 添加类型
+	    			if(item.bizType == '1'){
+	    				item.category = {key: '03',data: '托盘'}
+	    			}else{
+	    				item.category = {key: '02',data: '夹具'}
+	    			}
+	    		}
+	    		arr.push(item)
+	    	})
+    		list = arr
+    	}
+    	return list
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+	.dialog-footer{
+		text-align: center;
+		padding: 30px;
+	}
+	.titleP{
+		position: relative;
+		font-size: 16px;
+		padding-left: 15px;
+	}
+	.titleP:before{
+		content: '';
+		position: absolute;
+		left: 0;
+		top: 3px;
+		width: 5px;
+		height: 80%;
+		background: #0F79DC;
+	}
+	.comtable{
+		width: 100%;
+		border-left: 1px solid #CCCCCC;
+		border-top: 1px solid #CCCCCC;
+	}
+	.comtable td{
+		border-right: 1px solid #CCCCCC;
+		border-bottom: 1px solid #CCCCCC;
+	}
+	.blodTd{
+		background: #EEEEEE;
+		color: #333333;
+	}
+</style>

+ 512 - 0
imcs-ui/src/views/zuihou/machiningClient/touchScreen/components/View3.vue

@@ -0,0 +1,512 @@
+<template>
+  <el-dialog
+    :title="$t(&quot;common.view&quot;)"
+    width="80%"
+    :append-to-body="true"
+    :visible.sync="isVisible"
+    class="tenant-view"
+  >
+    <div class="boxDiv">
+    	<!-- 任务信息 -->
+    	<el-row>
+    		<p class="titleP" style="margin-top: 0;">{{$t("runCenter.form.viewSched.name")+":"}}</p>
+    		<table class="comtable" border="0" cellspacing="0" cellpadding="6">
+    			<tr>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.procedureDesc")+":"}}</td>
+    				<td width="200">{{tenant.procedureDesc}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.content")+":"}}</td>
+    				<td width="300">{{tenant.content}}</td>
+    				<td class="blodTd" align="center" width="120">{{$t("runCenter.form.viewSched.status")+":"}}</td>
+    				<td width="200">
+		          <el-tag v-if="tenant.status == '1'" type="info">{{$t("runCenter.common.schedulStatus.noStart")}}</el-tag>
+							<el-tag v-if="tenant.status == '2'" type="">{{$t("runCenter.common.schedulStatus.run")}}</el-tag>
+							<el-tag v-if="tenant.status == '3'" type="success">{{$t("runCenter.common.schedulStatus.finished")}}</el-tag>
+    				</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.procedureNo")+":"}}</td>
+    				<td>{{tenant.procedureNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.prepareWorkHours")+":"}}</td>
+    				<td>{{tenant.prepareWorkHours}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.overtimeStatus")+":"}}</td>
+    				<td>{{tenant.overtimeStatus}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.bomDesc")+":"}}</td>
+    				<td>{{tenant.bomDesc}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.ratedWorkHours")+":"}}</td>
+    				<td>{{tenant.ratedWorkHours}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.resourceDesc")+":"}}</td>
+    				<td>{{tenant.resourceDesc}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.bomNo")+":"}}</td>
+    				<td>{{tenant.bomNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.planTime")+":"}}</td>
+    				<td>{{tenant.planTime}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.executorName")+":"}}</td>
+    				<td>{{tenant.executorName}}</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.planNo")+":"}}</td>
+    				<td>{{tenant.planNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.actualTime")+":"}}</td>
+    				<td>{{tenant.actualTime}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.taskResour")+":"}}</td>
+    				<td>查看任务资源</td>
+    			</tr>
+    			<tr>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.orderNo")+":"}}</td>
+    				<td>{{tenant.orderNo}}</td>
+    				<td class="blodTd" align="center">{{$t("runCenter.form.viewSched.jindu")+":"}}</td>
+    				<td><el-progress :text-inside="true" :stroke-width="24" :percentage="tenant.process"></el-progress></td>
+    				<td class="blodTd" align="center"></td>
+    				<td></td>
+    			</tr>
+    		</table>
+    	</el-row>
+    	
+    	<!-- 自动化执行流程 -->
+    	<el-row>
+    		<p class="titleP">{{$t("runCenter.form.viewSched.autoLiuc")}}</p>
+    		<el-table
+	      	:key="tableKey"
+	      	ref="table"
+	      	v-loading="loading"
+	      	:data="tableData.records"
+	      	border
+	      	fit
+	      	row-key="id"
+	      	style="width: 100%;"
+	      	highlight-current-row
+    			@current-change="handleCurrentChange"
+		    >
+		    	<!-- 序号 -->
+		    	<el-table-column :label='$t("common.serialNo")' width="55px" align="center">
+			      <template slot-scope="scope">
+			        <div>
+			          {{scope.$index+(queryParams.current - 1) * queryParams.size + 1}}
+			        </div>
+			      </template>
+		      	</el-table-column>
+		      	<!-- 权重 -->
+		      	<el-table-column prop="prority" :label='$t("runCenter.table.aotoProcess.prority")' :show-overflow-tooltip="true" width="120px"></el-table-column>
+				    <!-- 设备 -->
+				    <el-table-column prop="resourceName" :label='$t("runCenter.table.aotoProcess.resourceName")' :show-overflow-tooltip="true" width="120px"></el-table-column>
+				    <!-- 动作包指令(报文) -->
+				    <el-table-column prop="code" :label='$t("runCenter.table.aotoProcess.code")' :show-overflow-tooltip="true" width="160px"></el-table-column>
+				    <!-- 执行动作 -->
+				    <el-table-column prop="instructionName" :label='$t("runCenter.table.aotoProcess.instructionName")' :show-overflow-tooltip="true"></el-table-column>
+				    <!-- 操作说明 -->
+				    <el-table-column prop="remark" :label='$t("runCenter.table.aotoProcess.remark")' :show-overflow-tooltip="true" width="180px"></el-table-column>
+			     	<!-- 执行状态 -->
+			     	<el-table-column prop="exeStatus" :label='$t("runCenter.table.aotoProcess.exeStatus")' width="150px">
+			     		<template slot-scope="{ row }">
+				      	<el-tag v-if="row.exeStatus == '1'" type="info">{{$t("runCenter.common.exeStatus.noStart")}}</el-tag>
+								<el-tag v-if="row.exeStatus == '2'" type="">{{$t("runCenter.common.exeStatus.run")}}</el-tag>
+								<el-tag v-if="row.exeStatus == '3'" type="success">{{$t("runCenter.common.exeStatus.finished")}}</el-tag>
+							</template>
+			     	</el-table-column>
+			      <!-- 执行结果 -->
+			      <el-table-column prop="exeResult" :label='$t("runCenter.table.aotoProcess.exeResult")' width="150px">
+			      	<template slot-scope="{ row }">
+			      		<el-tag v-if="row.exeResult == '1'" type="success">{{$t("runCenter.common.exeResult.success")}}</el-tag>
+								<el-tag v-if="row.exeResult == '0'">{{$t("runCenter.common.exeResult.fail")}}</el-tag>
+							</template>
+			      </el-table-column>
+			      <!-- 开始时间 -->
+			      <el-table-column prop="startTime" :label='$t("runCenter.table.aotoProcess.startTime")' width="150px"></el-table-column>
+			      <!-- 结束时间 -->
+			      <el-table-column prop="endTime" :label='$t("runCenter.table.aotoProcess.endTime")' width="150px"></el-table-column>
+			      <!-- 反馈信息 -->
+			      <el-table-column prop="feedback" :label='$t("runCenter.table.aotoProcess.feedback")' width="150px"></el-table-column>
+			      <!-- 反馈附件 -->
+			      <el-table-column prop="feedbackFile" :label='$t("runCenter.table.aotoProcess.feedbackFile")' width="150px"></el-table-column>
+		    </el-table>
+		    <!-- 【分页】组件 -->
+		  	<pagination
+		      v-show="tableData.total > 0"
+		      :limit.sync="queryParams.size"
+		      :page.sync="queryParams.current"
+		      :total="Number(tableData.total)"
+		      @pagination="fetch"
+		    />
+    	</el-row>
+    	<!-- 所需原材料 -->
+    	<el-row>
+    		<p class="titleP">{{$t("prepare.common.meterial")}}</p>
+    		<!-- Table数据 -->
+				<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData1"
+		      border
+		      fit
+		      style="width: 100%;"
+		    >
+		    	<!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.tools.no")' align="center" width="120px"></el-table-column>
+		      <!-- 名称 -->
+		      <el-table-column prop="name" :label='$t("prepare.table.tools.name")' align="center" width="150px"></el-table-column>
+		     	<!-- 规格 -->
+		     	<el-table-column prop="specification" :label='$t("prepare.table.tools.specification")' :show-overflow-tooltip="true" width="180px"></el-table-column>
+		      <!-- 品牌 -->
+		      <el-table-column prop="brand.data" :label='$t("prepare.table.tools.brand")' width="120px"></el-table-column>
+		      <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("common.remark")'></el-table-column>
+		      <!-- 入产线编码 -->
+		      <el-table-column prop="uniqueCode" label='入产线编码'>
+		      	<template slot-scope="{ row }">
+		      		<el-input size="small" v-model="row.uniqueCode" :placeholder='$t("common.pleaseEnter")'></el-input>
+		      	</template>
+		      </el-table-column>
+		    </el-table>
+    	</el-row>	
+    	<!-- 托盘夹具组 -->
+    	<el-row>
+    		<p class="titleP">{{$t("prepare.common.tpJgroup")}}</p>
+    		<!-- Table数据 :span-method="objectSpanMethod"  -->
+				<el-table
+		      ref="table"
+		      v-loading="loading"
+		      :data="tableData2"
+		      border
+		      fit
+		      highlight-current-row
+	    		@current-change="handleCurrentChange"
+		      style="width: 100%;"
+		      :span-method="objectSpanMethod"
+		    >
+		    	<!-- 组序 -->
+		    	<el-table-column prop="groupSort" :label='$t("prepare.table.toolGroup.groupSort")' align="center" width="70px"></el-table-column>
+		    	<!-- 优先级 -->
+		    	<el-table-column prop="groupPrority" :label='$t("prepare.table.toolGroup.groupPrority")' align="center" width="80px"></el-table-column>
+		    	<!-- 类型 -->
+		    	<el-table-column prop="category.data" :label='$t("prepare.table.toolGroup.category")' align="center" width="100px">
+		    		<template slot-scope="{ row }">
+		    			<span>{{row.category.data}}</span>
+		    			<!--<el-button v-if="row.category.key == '02'" type="text" @click="editTools(row)">{{row.category.data}}</el-button>
+		    			<el-button v-else type="text" @click="addRow(row)">{{row.category.data}}</el-button>-->
+		    		</template>
+		    	</el-table-column>
+		    	<!-- 名称 -->
+		    	<el-table-column prop="name" :label='$t("prepare.table.toolGroup.name")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 编号 -->
+		      <el-table-column prop="no" :label='$t("prepare.table.toolGroup.no")' align="center" width="120px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 规格 -->
+		      <el-table-column prop="specification" :label='$t("prepare.table.toolGroup.specification")' width="180px" :show-overflow-tooltip="true"></el-table-column>
+		      <!-- 品牌 -->
+		      <el-table-column prop="brand.data" :label='$t("prepare.table.toolGroup.brand")' width="180px"></el-table-column>
+		      <!-- 使用加紧位置 -->
+		      <el-table-column prop="positions" :label='$t("prepare.table.toolGroup.positions")' align="center" width="180px"></el-table-column>
+		      <!-- 装甲方式 -->
+		      <el-table-column prop="armorPic" :label='$t("prepare.table.toolGroup.armorPic")' align="center" width="180px">
+		      	<template slot-scope="{ row }" v-if="row.category.key == '02'">
+		      		<div v-if="row.jjImgList && row.jjImgList.length > 0" class="demo-image__preview">
+							  <el-image 
+							    style="width: 100px; height: 60px"
+							    :src="row.jjImgList[0]" 
+							    :preview-src-list="row.jjImgList">
+							  </el-image>
+							</div>
+		          <!--<el-button v-else type="text" @click="handleClick(row)">{{$t("common.uploadImg")}}</el-button>-->
+						</template>
+		      </el-table-column>
+		      <!-- 备注 -->
+		      <el-table-column prop="remark" :label='$t("common.remark")' width="180px"></el-table-column>
+		      <!-- 入产线编码 -->
+		      <el-table-column prop="uniqueCode" label='入产线编码' width="150px">
+		      	<template slot-scope="{ row }">
+		      		<el-input size="small" v-model="row.uniqueCode" :placeholder='$t("common.pleaseEnter")'></el-input>
+		      	</template>
+		      </el-table-column>
+		    </el-table>
+    	</el-row>
+    		
+    	<div slot="footer" class="dialog-footer">
+	      <el-button plain type="info" @click="isVisible = false">{{ $t('machining.buttons.noFinished') }}</el-button>
+	      <el-button type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('machining.buttons.finished') }}</el-button>
+	    </div>
+    </div>
+  </el-dialog>
+</template>
+<script>
+	// 【分页】组件
+	import Pagination from "@/components/Pagination"
+	// 【自动化程序管理】-API
+	import automatedProcessesApi from "@/api/prepareProductMgr/automatedProcesses"
+	// 【产品工艺版本管理】-API
+	import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
+	// 【机加工人端】-API
+	import machiningClientApi from "@/api/machiningClient/machiningClient"
+	// 列表查询的共通参数
+	import { initQueryParams } from '@/utils/commons'
+export default {
+  name: 'TaskView',
+  components: { Pagination },
+  props: {
+    dialogVisible: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+      screenWidth: 0,
+      confirmDisabled: false,
+      width: this.initWidth(),
+      tenant: {},
+      queryParams: initQueryParams({}),
+      loading: false,
+    	tenantViewVisible: false,
+    	tableKey: 0,
+	  	tableData: {
+	    	total: 0
+	  	},
+	  	tableData1: [],
+	  	tableData2: [],
+	  	currentRow: null, // 当前选择的行
+	  	
+	  	spanArr: [],  // 【组序】合并单元格
+	    spanArr2: [],  // 【优先级】合并单元格
+    }
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+  	// 加载列表数据
+  	// this.fetch()
+	},
+  computed: {
+    isVisible: {
+      get () {
+        return this.dialogVisible
+      },
+      set () {
+        this.close()
+      }
+    }
+  },
+  mounted () {
+    window.onresize = () => {
+      return (() => {
+        this.width = this.initWidth()
+      })()
+    }
+  },
+  methods: {
+  	submitForm(){
+  		let obj ={
+  			taskNode: this.tenant,
+  			meterialList: this.tableData1,
+  			procedureTrayList: this.tableData2
+  		}
+  		console.log("表单数据:", obj)
+  		// return false
+  		machiningClientApi.finishTaskNode(obj).then((response) => {
+	      const res = response.data
+	      if (res.isSuccess) {
+	        this.isVisible = false
+	        this.$message({
+	          message: this.$t('tips.updateSuccess'),
+	          type: 'success'
+	        })
+	        // 通知列表
+	        this.$emit("success");
+	      }
+	    }).finally(() => {
+	      this.confirmDisabled = false
+	      return true
+	    })
+  	},
+  	// table的当前行值变化后
+  	handleCurrentChange(val) {
+			// 设置当前行
+    	this.currentRow = val;
+  	},
+    initWidth () {
+      this.screenWidth = document.body.clientWidth
+      if (this.screenWidth < 550) {
+        return '95%'
+      } else if (this.screenWidth < 990) {
+        return '580px'
+      } else if (this.screenWidth < 1400) {
+        return '600px'
+      } else {
+        return '650px'
+      }
+    },
+    setTenant (val) {
+      this.tenant = { ...val }
+      // 加载上部门2个数据
+  		this.fetch()
+  		// 加载下部分2个数据
+  		this.getDetail(val)
+    },
+    close () {
+      this.$emit('close')
+    },
+    fetch (params = {}) {
+      this.loading = true
+      /*// 日期区间-参数
+      if (this.queryParams.timeRange) {
+        this.queryParams.map.createTime_st = this.queryParams.timeRange[0]
+        this.queryParams.map.createTime_ed = this.queryParams.timeRange[1]
+      }
+			// 分页-参数
+      this.queryParams.current = params.current ? params.current : this.queryParams.current
+      this.queryParams.size = params.size ? params.size : this.queryParams.size
+      // 条件-参数*/
+      console.log("列表的row数据:", this.tenant)
+      automatedProcessesApi.taskAutoNodeList({taskId: this.tenant.taskId, procedureId: this.tenant.procedureId, orderId: this.tenant.orderId}).then(response => {
+        const res = response.data
+        if (res.isSuccess) {
+          this.tableData.records = res.data
+        }
+        // eslint-disable-next-line no-return-assign
+      }).finally(() => this.loading = false)
+     
+    },
+    //获得数据相同的行数
+ 		rowspanFiled(data, filed) {
+ 			let spanArr5 = [];
+	    data.forEach((item,index) => {
+        if( index === 0){
+            spanArr5.push(1);
+            this.position = 0;
+        }else{
+            if(data[index].groupSort === data[index-1].groupSort && data[index][filed] === data[index-1][filed]){
+                spanArr5[this.position] += 1;
+                spanArr5.push(0);
+            }else{
+                spanArr5.push(1);
+                this.position = index;
+            }
+        }
+	    })
+	    return spanArr5;
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    //合并
+ 		objectSpanMethod({ row, column, rowIndex, columnIndex }) {  //表格合并行
+	    if (columnIndex === 0) {
+	        let _row = this.spanArr[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+	    if(columnIndex === 1){
+	        let _row = this.spanArr2[rowIndex];
+	        let _col = _row > 0 ? 1 : 0;
+	        return {
+	            rowspan: _row,
+	            colspan: _col
+	        }
+	    }
+    },
+    // 根据【工艺id】查询详情信息
+    getDetail(obj){
+    	machiningClientApi.getTaskNodeProcessAnalysis(obj).then(res => {
+    		res = res.data 
+    		if(res.isSuccess){
+    			console.log("详情信息:", res.data)
+    			// 给各个组件赋值
+		    	// 把【设备】的数据,给【程序】使用
+		    	// this.setProgram(eqList)
+		    	// 获取【所需原材料】数据
+		    	this.tableData1 = this.setKeyList(res.data.meterialList)
+		    	// 获取【托盘夹具组】数据
+		    	this.tableData2 = this.setKeyList(res.data.procedureTrayList, 'tray')
+		    	// 要合并列的准备数据
+		    	if(this.tableData2.length > 0){
+		    		this.spanArr = this.rowspanFiled(this.tableData2, "groupSort")
+				  	this.spanArr2 = this.rowspanFiled(this.tableData2, "groupPrority")
+		    	}
+    		}
+    	})
+    },
+    // 赋值前处理-添加key数据健
+    setKeyList(list, flag){
+    	if(list.length > 0){
+    		let arr = []
+    		list.forEach(item => {
+    			// 添加唯一键
+	    		item.key = ''+ Math.random()
+	    		// 如果是托盘夹具的时候,组装分类
+	    		if(flag == 'tray'){
+	    			// 把【组序】和【优先级】改成字符串
+	    			//item.groupSort = ''+ item.groupSort
+	    			//item.groupPrority = ''+ item.groupPrority
+	    			// 给图片一个列表数据,jjImgList
+	    			item.jjImgList = []
+	    			if(!!item.armorPic){
+	    				item.jjImgList.push(item.armorPic)
+	    			}
+	    			// 添加类型
+	    			if(item.bizType == '1'){
+	    				item.category = {key: '03',data: '托盘'}
+	    			}else{
+	    				item.category = {key: '02',data: '夹具'}
+	    			}
+	    		}
+	    		arr.push(item)
+	    	})
+    		list = arr
+    	}
+    	return list
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+	.dialog-footer{
+		text-align: center;
+		padding: 30px;
+	}
+	.titleP{
+		position: relative;
+		font-size: 16px;
+		padding-left: 15px;
+	}
+	.titleP:before{
+		content: '';
+		position: absolute;
+		left: 0;
+		top: 3px;
+		width: 5px;
+		height: 80%;
+		background: #0F79DC;
+	}
+	.comtable{
+		width: 100%;
+		border-left: 1px solid #CCCCCC;
+		border-top: 1px solid #CCCCCC;
+	}
+	.comtable td{
+		border-right: 1px solid #CCCCCC;
+		border-bottom: 1px solid #CCCCCC;
+	}
+	.blodTd{
+		background: #EEEEEE;
+		color: #333333;
+	}
+</style>