lxb 1 rok temu
rodzic
commit
dbe62688da

+ 22 - 1
imcs-ui/src/api/Dispatch.js

@@ -90,5 +90,26 @@ export default {
       url: `/authority/plc/resendCommand`,
       data: {id: id}
     })
-  }
+  },
+  unlockStorge(id,moveFlag){
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/dispatchRecord/unlockStorge`,
+      data: {id: id,moveFlag: moveFlag}
+    })
+  },
+  executeNextNode(id){
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/dispatchRecord/executeNextNode`,
+      data: {id: id}
+    })
+  },
+  cancelTaskNodeLog(id){
+    return axiosApi({
+      method: 'GET',
+      url: `/authority/dispatchRecord/cancelTaskNodeLog`,
+      data: {id: id}
+    })
+  },
 }

+ 16 - 6
imcs-ui/src/api/resourceProductMgr/programCenter.js

@@ -38,7 +38,7 @@ const apiList = {
     method: 'POST',
     url: `/authority/program/getProgramContent`
   },
-  // 根据文件名获取文件内容 
+  // 根据文件名获取文件内容
   getUploadFile: {
     method: 'POST',
     url: `/authority/program/getUploadFile`
@@ -63,13 +63,13 @@ const apiList = {
     method: 'POST',
     url: `/authority/program/implementProgram`
   },
-  
+
   // 【刀具下拉】数据
   toolList: {
     method: 'POST',
     url: `/authority/customizeCuttingTool/page`
   },
-  
+
   list: {
     method: 'POST',
     url: `/authority/program/query`
@@ -85,6 +85,10 @@ const apiList = {
   import: {
     method: 'POST',
     url: `/authority/program/import`
+  },
+  downUpload: {
+    method: 'POST',
+    url: `/authority/program/downLoadProgram`
   }
 }
 
@@ -173,7 +177,7 @@ export default {
       data
     })
   },
-  
+
   // 【刀具下拉】数据
   toolList (data) {
     return axiosApi({
@@ -181,7 +185,7 @@ export default {
       data
     })
   },
-  
+
   list (data) {
     return axiosApi({
       ...apiList.list,
@@ -219,5 +223,11 @@ export default {
       ...apiList.import,
       data
     })
-  }
+  },
+  downUpload (data) {
+    return axiosApi({
+      ...apiList.downUpload,
+      data
+    })
+  },
 }

+ 12 - 2
imcs-ui/src/api/systemMgr/toolbar.js

@@ -13,6 +13,10 @@ const apiList = {
     method: 'POST',
     url: `/authority/toolbar/updateStorge`
   },
+  updateStorgeByRobot: {
+    method: 'POST',
+    url: `/authority/toolbar/updateStorgeByRobot`
+  },
   addHikTask: {
     method: 'POST',
     url: `/authority/toolbar/addHikTask`
@@ -44,7 +48,7 @@ const apiList = {
   manualXbk: {
     method: 'POST',
     url: `/authority/toolbar/manualXbk`
-  } 
+  }
 }
 
 export default {
@@ -66,6 +70,12 @@ export default {
       data
     })
   },
+  updateStorgeByRobot (data) {
+    return axiosApi({
+      ...apiList.updateStorgeByRobot,
+      data
+    })
+  },
   addHikTask (data) {
     return axiosApi({
       ...apiList.addHikTask,
@@ -74,7 +84,7 @@ export default {
   },
   updateOnlineStatus (data) {
     return axiosApi({
-      ...apiList.updateOnlineStatus,      
+      ...apiList.updateOnlineStatus,
       data
     })
   },

BIN
imcs-ui/src/assets/device/liaozhan.jpg


BIN
imcs-ui/src/assets/device/machine.png


BIN
imcs-ui/src/assets/device/penmo.jpg


BIN
imcs-ui/src/assets/logo/productLine.png


+ 3 - 1
imcs-ui/src/lang/zh/cuttingTool.js

@@ -41,7 +41,9 @@ export default {
         sysTime: '同步时间',
         cuttingToolNum: '刀库刀具数量',
         cuttingToolName: '刀具名称',
-        specifications: '刀具规格',
+        specifications: '刀具长度',
+        wearLength: '长度补偿',
+        wearRadius: '半径补偿',
         cuttingToolType: '刀具类型',
         cuttingToolPicture: '刀具图片',
         cuttingToolInstallPicture: '装夹方式',

+ 215 - 45
imcs-ui/src/views/zuihou/dispatchMgr/productLineInfo/Index.vue

@@ -50,6 +50,33 @@
               width="120px">
               <template slot-scope="{ row }">
                 <el-button v-if="row.exeStatus === '3' && row.exeResult != '1'" type="danger" @click="resendCommand(row)">指令重发</el-button>
+                <el-button v-if="row.exeStatus === '2'" type="primary"  @click="cancelTaskNodeLog(row)">取消任务</el-button>
+                <el-tooltip
+                  class="item"
+                  content="解锁库位"
+                  effect="dark"
+                  placement="top-start"
+                  v-if="row.exeStatus === '4'"
+                >
+                  <i
+                    class="el-icon-unlock table-operation"
+                    style="color: #2db7f5"
+                    @click="unlock(row)"
+                  />
+                </el-tooltip>
+                <el-tooltip
+                  class="item"
+                  content="执行下一个节点"
+                  effect="dark"
+                  placement="top-start"
+                  v-if="row.exeStatus === '4'"
+                >
+                  <i
+                    class="el-icon-caret-bottom table-operation"
+                    style="color: #2db7f5"
+                    @click="executeNextNode(row)"
+                  />
+                </el-tooltip>
               </template>
             </el-table-column>
           </el-table>
@@ -121,64 +148,35 @@
             <el-form>
               <el-row :gutter="12">
                 <el-col :span="8">
-                  <el-form-item label="装载站:">
-                    <span>{{plcInfo['装载站']}}</span>
+                  <el-form-item label="装载站1:">
+                    <span>{{plcInfo['装载站1']}}</span>
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                  <el-form-item label="机床系统1:">
-                    <span>{{plcInfo['机床系统1']}}</span>
+                  <el-form-item label="装载站2:">
+                    <span>{{plcInfo['装载站2']}}</span>
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                  <el-form-item label="机床系统2:">
-                    <span>{{plcInfo['机床系统2']}}</span>
+                  <el-form-item label="喷墨机:">
+                    <span>{{plcInfo['喷墨机']}}</span>
                   </el-form-item>
                 </el-col>
               </el-row>
               <el-row :gutter="12">
                 <el-col :span="8">
-                  <el-form-item label="机床系统3:">
-                    <span>{{plcInfo['机床系统3']}}</span>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item label="机床系统4:">
-                    <span>{{plcInfo['机床系统4']}}</span>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item label="机床系统5:">
-                    <span>{{plcInfo['机床系统5']}}</span>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row :gutter="12">
-                <el-col :span="8">
-                  <el-form-item label="清洗系统1:">
-                    <span>{{plcInfo['清洗系统1']}}</span>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item label="清洗系统2:">
-                    <span>{{plcInfo['清洗系统2']}}</span>
-                  </el-form-item>
-                </el-col>
-                <el-col :span="8">
-                  <el-form-item label="清洗系统3:">
-                    <span>{{plcInfo['清洗系统3']}}</span>
+                  <el-form-item label="机床系统1:">
+                    <span>{{plcInfo['机床系统1']}}</span>
                   </el-form-item>
                 </el-col>
-              </el-row>
-              <el-row :gutter="12">
                 <el-col :span="8">
-                  <el-form-item label="清洗系统4:">
-                    <span>{{plcInfo['清洗系统4']}}</span>
+                  <el-form-item label="机床系统2:">
+                    <span>{{plcInfo['机床系统2']}}</span>
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                  <el-form-item label="清洗系统5:">
-                    <span>{{plcInfo['清洗系统5']}}</span>
+                  <el-form-item label="机床系统3:">
+                    <span>{{plcInfo['机床系统3']}}</span>
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -242,13 +240,18 @@
               </el-row>
               <el-row :gutter="12">
                 <el-col :span="8">
-                  <el-form-item label="机床系统4:">
-                    <span>{{pcInfo['机床系统4']}}</span>
+                  <el-form-item label="装载站1:">
+                    <span>{{pcInfo['装载站1']}}</span>
                   </el-form-item>
                 </el-col>
                 <el-col :span="8">
-                  <el-form-item label="机床系统5:">
-                    <span>{{pcInfo['机床系统5']}}</span>
+                  <el-form-item label="装载站2:">
+                    <span>{{pcInfo['装载站2']}}</span>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item label="喷墨机:">
+                    <span>{{pcInfo['喷墨机']}}</span>
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -271,6 +274,50 @@
         </el-card>
       </el-col>
     </el-row>
+
+    <el-dialog
+      title="提示"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose">
+      <el-button @click="dialogVisible = false">取 消</el-button>
+      <el-button type="primary" @click="unlockStorge(0)">解除库位锁</el-button>
+      <el-button type="primary" @click="unlockStorge(1)">解除库位锁并移库</el-button>
+    </el-dialog>
+    <el-dialog
+      title="节点信息"
+      :visible.sync="visible"
+      width="60%">
+      <el-table
+        ref="table"
+        :data="taskNodeList"
+        border
+        fit
+        row-key="id"
+        style="width: 100%;"
+      >
+        <el-table-column prop="orderName" label='订单名称'  width="120px"> </el-table-column>
+        <el-table-column prop="bomName" label='零件名称'  width="120px"> </el-table-column>
+        <el-table-column prop="nodeName" label='节点名称'  width="160px"> </el-table-column>
+        <el-table-column prop="exeStatus" label='执行状态' width="100px">
+          <template slot-scope="{ row }">
+            <el-tag v-if="row.exeStatus == '1'" type="info">待执行</el-tag>
+            <el-tag v-else-if="row.exeStatus == '2'" type="success">执行中</el-tag>
+            <el-tag v-else-if="row.exeStatus == '3'" type="success">已完成</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column prop="exeResult" label='执行结果' width="100px">
+          <template slot-scope="{ row }">
+            <el-tag v-if="row.exeResult == '1'" >成功</el-tag>
+            <el-tag v-if="row.exeResult == '0'" >失败</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column prop="startTime" label='开始时间' width="160px"></el-table-column>
+        <el-table-column prop="endTime" label='结束时间' width="160px"></el-table-column>
+        <el-table-column prop="targetResourceName" label='目标设备' width="120px"></el-table-column>
+        <el-table-column prop="resourceName" label='操作设备' width="120px"></el-table-column>
+      </el-table>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -291,6 +338,10 @@ export default {
         total: 0
       },
       queryParams: initQueryParams({}),
+      dialogVisible: false,
+      id: '',
+      visible: false,
+      taskNodeList: []
     }
   },
   created() {
@@ -298,6 +349,125 @@ export default {
 
   },
   methods: {
+    executeNextNode(row){
+      this.loading = true;
+      this.$confirm("是否确认跳过当前节点执行下一个节点【如需移库,必须先完成移库】", this.$t('common.tips'), {
+        confirmButtonText: this.$t('common.confirm'),
+        cancelButtonText: this.$t('common.cancel'),
+        type: 'warning'
+      }).then(() => {
+        //查询PLC点位信息
+        dispatchMgrApi.executeNextNode(row.id).then((response)=>{
+          const res = response.data;
+          this.loading = false;
+          if(res.isSuccess){
+            this.$message({
+              message:'执行成功',
+              type: "success"
+            });
+            this.getLog();
+          }else{
+            this.$message({
+              message:'执行失败:' + res.msg,
+              type: "error"
+            });
+          }
+        }).catch(e=>{
+          this.loading = false;
+          this.$message({
+            message:'执行失败:' + e.message,
+            type: "error"
+          });
+        })
+      }).catch(() => {
+        this.loading = false;
+        this.$message.info("已取消")
+      })
+    },
+    cancelTaskNodeLog(row){
+      this.loading = true;
+      this.$confirm("是否确认取消", this.$t('common.tips'), {
+        confirmButtonText: this.$t('common.confirm'),
+        cancelButtonText: this.$t('common.cancel'),
+        type: 'warning'
+      }).then(() => {
+        //查询PLC点位信息
+        dispatchMgrApi.cancelTaskNodeLog(row.id).then((response)=>{
+          const res = response.data;
+          this.loading = false;
+          if(res.isSuccess){
+            this.$message({
+              message:'取消指令成功',
+              type: "success"
+            });
+            this.getLog();
+          }else{
+            this.$message({
+              message:'取消指令失败:' + res.msg,
+              type: "error"
+            });
+          }
+        }).catch(e=>{
+          this.loading = false;
+          this.$message({
+            message:'取消指令失败:' + e.message,
+            type: "error"
+          });
+        }).finally(() => this.getLog())
+      }).catch(() => {
+        this.loading = false;
+        this.$message.info("已取消")
+      })
+    },
+    unlock(row){
+      this.id = row.id
+      this.dialogVisible = true
+    },
+    unlockStorge(moveFlag){
+      this.loading = true;
+      this.$confirm("是否确认执行此操作", this.$t('common.tips'), {
+        confirmButtonText: this.$t('common.confirm'),
+        cancelButtonText: this.$t('common.cancel'),
+        type: 'warning'
+      }).then(() => {
+        //查询PLC点位信息
+        dispatchMgrApi.unlockStorge(this.id,moveFlag).then((response)=>{
+          const res = response.data;
+          this.loading = false;
+          this.id = ''
+          this.dialogVisible = false
+          if(res.isSuccess){
+            this.$message({
+              message:'取消指令成功',
+              type: "success"
+            });
+            this.getLog();
+          }else{
+            this.$message({
+              message:'取消指令失败:' + res.msg,
+              type: "error"
+            });
+          }
+
+        }).catch(e=>{
+          this.loading = false;
+          this.dialogVisible = false
+          this.id = ''
+          this.$message({
+            message:'取消指令失败:' + e.message,
+            type: "error"
+          });
+        })
+      }).catch(() => {
+        this.loading = false;
+        this.$message.info("已取消")
+      })
+    },
+    handleClose(){
+      this.id = '';
+      this.dialogVisible = false
+
+    },
     fetch(){
       //查询日志
       this.getLog();

+ 158 - 109
imcs-ui/src/views/zuihou/dispatchMgr/tools/Index.vue

@@ -1,30 +1,55 @@
 <template>
   <div class="app-container space">
 
-	<el-card class="box-card">
-        <div slot="header" class="clearfix">手动更新点位(无操作)</div>
-		<el-form ref="form" :model="form" :rules="rules4"  label-width="80px">
-			<el-row :gutter="12">				
-				<el-col :xs="6" :sm="5">
-					<el-form-item label="起始位:" prop="start">
-						<el-tooltip content="例如:BZ_361" placement="top">
-                    		<el-input v-model="form.start" placeholder="起始库位"></el-input>
-					   </el-tooltip>
-					</el-form-item>
-				</el-col>
-				<el-col :xs="6" :sm="5">
-					<el-form-item label="目的位:" prop="goal">
-						<el-tooltip content="例如:KT_130" placement="top">
-                    		<el-input  v-model="form.goal" placeholder="目的库位"></el-input>
-						</el-tooltip>
-					</el-form-item>
-				</el-col>							
-			</el-row>			
-			<el-form-item>				
-    			<el-button type="primary" @click="updateStorge" >更改</el-button>    		
-  			</el-form-item>
-	  </el-form>
-	</el-card>
+    <el-card class="box-card">
+      <div slot="header" class="clearfix">手动移库(机器人)</div>
+      <el-form ref="form" :model="form" :rules="rules4"  label-width="80px">
+        <el-row :gutter="12">
+          <el-col :xs="6" :sm="5">
+            <el-form-item label="起始位:" prop="start">
+              <el-tooltip content="例如:100" placement="top">
+                <el-input v-model="form.start" placeholder="起始库位"></el-input>
+              </el-tooltip>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="6" :sm="5">
+            <el-form-item label="目的位:" prop="goal">
+              <el-tooltip content="例如:101" placement="top">
+                <el-input  v-model="form.goal" placeholder="目的库位"></el-input>
+              </el-tooltip>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item>
+          <el-button type="primary" @click="updateStorgeByRobot" >更改</el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+    <el-card class="box-card">
+      <div slot="header" class="clearfix">手动更新点位(无操作)</div>
+      <el-form ref="form" :model="form" :rules="rules4"  label-width="80px">
+        <el-row :gutter="12">
+          <el-col :xs="6" :sm="5">
+            <el-form-item label="起始位:" prop="start">
+              <el-tooltip content="例如:100" placement="top">
+                <el-input v-model="form.start" placeholder="起始库位"></el-input>
+              </el-tooltip>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="6" :sm="5">
+            <el-form-item label="目的位:" prop="goal">
+              <el-tooltip content="例如:101" placement="top">
+                <el-input  v-model="form.goal" placeholder="目的库位"></el-input>
+              </el-tooltip>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item>
+          <el-button type="primary" @click="updateStorge" >更改</el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
 
 	<el-card class="box-card">
         <div slot="header" class="clearfix">查询指令完成状态</div>
@@ -39,10 +64,10 @@
 					<el-form-item label="任务ID:" prop="taskId">
                     	<el-input  v-model="form1.taskId" placeholder="任务ID"></el-input>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
-			<el-form-item>				
-    			<el-button type="primary" @click="getCallbackList" >查询</el-button>    		
+			<el-form-item>
+    			<el-button type="primary" @click="getCallbackList" >查询</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -65,10 +90,10 @@
 					<el-form-item label="次序号:" prop="positionIndex">
                     	<el-input-number v-model="form.positionIndex" :min="1" :max="6"></el-input-number>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="getRFID" >读取</el-button>    		
+    			<el-button type="primary" @click="getRFID" >读取</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -83,10 +108,10 @@
                     		<el-input v-model="form3.ip" placeholder="设备IP"></el-input>
 						</el-tooltip>
 					</el-form-item>
-				</el-col>											
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="updateOnlineStatus" >设置</el-button>    		
+    			<el-button type="primary" @click="updateOnlineStatus" >设置</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -108,10 +133,10 @@
                     		<el-input  v-model="form4.goal" placeholder="终点"></el-input>
 						</el-tooltip>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="addHikTask">创建</el-button>    		
+    			<el-button type="primary" @click="addHikTask">创建</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -129,10 +154,10 @@
 					<el-form-item label="任务ID:" prop="taskId">
                     	<el-input  v-model="form5.taskId" placeholder="任务ID"></el-input>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="resend">重发</el-button>    		
+    			<el-button type="primary" @click="resend">重发</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -150,10 +175,10 @@
 					<el-form-item label="任务ID:" prop="taskId">
                     	<el-input  v-model="form6.taskId" placeholder="任务ID"></el-input>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="sendCallback" >发送</el-button>    		
+    			<el-button type="primary" @click="sendCallback" >发送</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -164,22 +189,22 @@
 			<el-row :gutter="12" >
 				<el-col :xs="6" :sm="5">
 					<el-select v-model="form7.zoneId" placeholder="选择产线">
-						<el-option v-for="deviceUnit in lineList " :label="deviceUnit.name" :value="deviceUnit.id" :key="deviceUnit.id" ></el-option>		
+						<el-option v-for="deviceUnit in lineList " :label="deviceUnit.name" :value="deviceUnit.id" :key="deviceUnit.id" ></el-option>
 			  		</el-select>
 				</el-col>
-				<el-col :xs="6" :sm="5">					
-					<el-form-item label="起始位:" prop="start">                    	
+				<el-col :xs="6" :sm="5">
+					<el-form-item label="起始位:" prop="start">
 						<el-input-number v-model="form7.startpointId" :min="1" ></el-input-number>
 					</el-form-item>
 				</el-col>
-				<el-col :xs="6" :sm="5">					
-					<el-form-item label="目的位:" prop="goal">                    	
+				<el-col :xs="6" :sm="5">
+					<el-form-item label="目的位:" prop="goal">
 						<el-input-number v-model="form7.endpointId" :min="1" ></el-input-number>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="manualTask">执行</el-button>    		
+    			<el-button type="primary" @click="manualTask">执行</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -188,19 +213,19 @@
         <div slot="header" class="clearfix">零件动态入线边库(产线内)</div>
 		<el-form ref="form8" :model="form8" :rules="rules6" label-width="80px">
 			<el-row :gutter="12" >
-				<el-col :xs="6" :sm="5">					
+				<el-col :xs="6" :sm="5">
 					<el-select v-model="form8.zoneId" placeholder="选择产线">
-						<el-option v-for="deviceUnit in lineList " :label="deviceUnit.name" :value="deviceUnit.id" :key="deviceUnit.id" ></el-option>		
+						<el-option v-for="deviceUnit in lineList " :label="deviceUnit.name" :value="deviceUnit.id" :key="deviceUnit.id" ></el-option>
 			  		</el-select>
 				</el-col>
 				<el-col :xs="6" :sm="5">
 					<el-form-item label="节点ID:" prop="startpointId">
                     	<el-input v-model="form8.startpointId" placeholder="起始点位"></el-input>
 					</el-form-item>
-				</el-col>				
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="manualXbk">执行</el-button>    		
+    			<el-button type="primary" @click="manualXbk">执行</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -218,10 +243,10 @@
 					<el-form-item label="任务ID:" prop="taskId">
                     	<el-input  v-model="form9.taskId" placeholder="任务ID"></el-input>
 					</el-form-item>
-				</el-col>							
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="freeLock" >发送</el-button>    		
+    			<el-button type="primary" @click="freeLock" >发送</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
@@ -233,24 +258,24 @@
 				<el-col :xs="6" :sm="5">
 					<el-form-item label="节点ID:" prop="deviceType">
                     	<el-select v-model="form10.deviceType" placeholder="选择设备类型">
-							 <el-option v-for="deviceType in typeList" :label="deviceType.name" :value="deviceType.value" :key="deviceType.value" ></el-option>		
+							 <el-option v-for="deviceType in typeList" :label="deviceType.name" :value="deviceType.value" :key="deviceType.value" ></el-option>
 			  			</el-select>
 					</el-form-item>
-				</el-col>											
+				</el-col>
 			</el-row>
 			<el-form-item>
-    			<el-button type="primary" @click="refreshXbk" >发送</el-button>    		
+    			<el-button type="primary" @click="refreshXbk" >发送</el-button>
   			</el-form-item>
 	  </el-form>
 	</el-card>
   </div>
 </template>
 
-<script>	
+<script>
 	// 【锁定记录、出入库记录】-API
 	import toolbarApi from "@/api/systemMgr/toolbar"
 	import warnLogApi from "@/api/lineSideLibrary/warnLog"
-	import areaMgrApi from "@/api/resourceProductMgr/areaMgr"	
+	import areaMgrApi from "@/api/resourceProductMgr/areaMgr"
 	import { convertEnum, initDicts, initQueryParams } from '@/utils/commons'
 	export default {
 	  name: "Tools",
@@ -259,10 +284,10 @@
 	  props: {
 	  },
 	  data () {
-	    return {	     		  
-		  form:{			
+	    return {
+		  form:{
 			start: "",
-			goal: ""			
+			goal: ""
 		  },
 		  form1:{
             taskNodeId: '',
@@ -274,7 +299,7 @@
 			positionIndex: 1
 		  },
 		  form3:{
-			ip: ''	
+			ip: ''
 		  },
 		  form4:{
             start: "",
@@ -295,7 +320,7 @@
 		  },
 		  form8:{
 			zoneId: "",
-			startpointId: ""			
+			startpointId: ""
 		  },
 		  form9:{
             taskNodeId: '',
@@ -357,7 +382,7 @@
 		  rules6: {
         	startpointId: [
         		{ required: true, message: this.$t("rules.require"), trigger: 'blur' }
-        	],			
+        	],
 			zoneId: [
         		{ required: true, message: this.$t("rules.require"), trigger: 'blur' }
         	],
@@ -387,9 +412,9 @@
         }
 	  },
 	  mounted () {
-	   
+
 	  },
-	  methods: {        
+	  methods: {
 	    updateStorge () {
 			this.$refs.form.validate((valid) => {
 				if(valid){
@@ -407,13 +432,37 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
+				}
 			});
 	    },
+      updateStorgeByRobot () {
+        this.$refs.form.validate((valid) => {
+          if(valid){
+            toolbarApi.updateStorgeByRobot(this.form).then(response=>{
+              const res = response.data
+              if(res.isSuccess){
+                this.$message({
+                  message: this.$t('tips.updateSuccess'),
+                  type: 'success'
+                })
+              }else{
+                this.$message({
+                  message: res.msg,
+                  type: 'warning'
+                })
+              }
+            }).finally(()=>{
+              return true
+            })
+          }else{
+            return false
+          }
+        });
+      },
 	    getCallbackList () {
 			this.$refs.form1.validate((valid) => {
 				if(valid){
@@ -432,13 +481,13 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
+				}
 			});
-	      
+
 	    },
 	    getRFID () {
 			this.$refs.form2.validate((valid) => {
@@ -458,11 +507,11 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
+				}
 			});
 	    },
 	    updateOnlineStatus () {
@@ -482,11 +531,11 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
+				}
 			});
 	    },
 	    addHikTask () {
@@ -506,12 +555,12 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
-			});	     
+				}
+			});
 	    },
 		resend() {
 			this.$refs.form5.validate((valid) => {
@@ -530,11 +579,11 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
+				}
 			});
 
 		},
@@ -555,12 +604,12 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
-			});  
+				}
+			});
 		},
 		freeLock(){
 			this.$refs.form9.validate((valid) => {
@@ -579,12 +628,12 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
-			}); 
+				}
+			});
 		},
 		refreshXbk(){
 			this.$refs.form10.validate((valid) => {
@@ -603,14 +652,14 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
-			}); 
+				}
+			});
 		},
-		manualTask(){			
+		manualTask(){
 			this.$refs.form7.validate((valid) => {
 				if(valid){
 					this.form7.startpointId = this.form7.startpointId.toString()
@@ -629,12 +678,12 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
-			});		
+				}
+			});
 		},
 		manualXbk(){
             this.$refs.form8.validate((valid) => {
@@ -653,11 +702,11 @@
             				})
 						}
 					}).finally(()=>{
-					   return true		
-					})					
+					   return true
+					})
 				}else{
 					return false
-				}				
+				}
 			});
 		},
 	    reset () {
@@ -685,7 +734,7 @@
 	        })
 	        return
 	      }
-	
+
 	      this.$confirm(this.$t("developer.tips.wareTips"), this.$t("common.tips"), {
 	      	distinguishCancelAndClose: true,
 	        confirmButtonText: this.$t("common.confirm"),
@@ -718,9 +767,9 @@
 		    this.selection.forEach(item => {
 		        ids.push(item.id)
 		    })
-		    this.updateStatus(ids)	      		
+		    this.updateStatus(ids)
 		},
-		updateStatus(ids){		   
+		updateStatus(ids){
 		   warnLogApi.updateStatus({ids: ids}).then(response => {
 			const res = response.data
 			if (res.isSuccess) {
@@ -771,14 +820,14 @@
 	      this.dialog.isVisible = true
 	    },
 	    fetch () {
-	      this.loading = true		  
+	      this.loading = true
 	      areaMgrApi.page(this.queryParams).then(res => {
 	    		res = res.data
-	    		if(res.isSuccess){					
+	    		if(res.isSuccess){
 	    			this.lineList = res.data.records
 	    		}
 	    	})
-	     
+
 	    }
 	  }
 	}

+ 7 - 6
imcs-ui/src/views/zuihou/largeScreen/twoDatasModel/Index.vue

@@ -13,7 +13,7 @@
     			<span @click="boxCardClk('simple')">{{$t("largeScreen.common.data2d")}}</span>-->
     			<!-- 2D数据模式 -->
 <!--    			<span class="tabsActive">{{$t("largeScreen.common.data2shu")}}</span>-->
-          <img :src="require(`@/assets/logo/tubiao.png`)" style="height: 100px;width: 150px"/>
+<!--          <img :src="require(`@/assets/logo/tubiao.png`)" style="height: 100px;width: 150px"/>-->
     		</div>
     		<!-- 全屏 -->
 	    	<div class="battonDiv">
@@ -149,7 +149,7 @@
 
 		  	</div>
         <div class="centerDiv">
-          <img  :src="require(`@/assets/logo/machine.png`)" style="width: 100%;height: 400px;">
+          <img  :src="require(`@/assets/logo/productLine.png`)" style="width: 100%;height: 400px;">
         </div>
 		  	<!-- 生产计划 -->
 <!--		  	<div class="centerDiv">
@@ -222,7 +222,7 @@
   						<td style="word-wrap: break-word;word-break: break-all;width:80px;">{{ item.orderNo }}</td>
   						<td style="min-width:30px;" v-show="false" >{{ item.custDesc }}</td>
   						<td>{{ item.productNum }}</td>
-  						<td v-if="item.completeNum">{{ item.completeNum}}</td>
+  						<td v-if="item.finishNum">{{ item.finishNum}}</td>
 						<td v-else>0</td>
   						<td style="min-width:30px;">{{ item.deliveryTime }}</td>
   						<td class="timeprogress" style="min-width:80px;">
@@ -262,8 +262,9 @@
 	  				<li v-for="(item, index) in mashingTwoList.data" :key="index">
 	  					<!--<span class="mStatus" :style="{background:item.controlStatus.background}">{{ item.controlStatusCN}}</span>-->
 	  					<span class="mAudit" :style="{'background':item.productionStatus.background,'color': item.productionStatus.value=='1'?'#666':'#fff'}" >{{item.productionStatusCN}}</span>
-	  					<img v-if="item.name.includes('VCN-530CL')" class="mashingImg" :src="require(`@/assets/device/mazak.png`)" v-lazy="require(`@/assets/device/mazak.png`)"  />
-              <img v-if="item.name == '装载站'" class="mashingImg" :src="require(`@/assets/device/liaozhan.jpg`)" v-lazy="require(`@/assets/device/liaozhan.jpg`)"  />
+	  					<img v-if="item.name.includes('GMU800AVI')" class="mashingImg" :src="require(`@/assets/device/machine.png`)" v-lazy="require(`@/assets/device/machine.png`)"  />
+              <img v-if="item.name.includes('装载站')" class="mashingImg" :src="require(`@/assets/device/liaozhan.jpg`)" v-lazy="require(`@/assets/device/liaozhan.jpg`)"  />
+              <img v-if="item.name.includes('喷墨')" class="mashingImg" :src="require(`@/assets/device/penmo.jpg`)" v-lazy="require(`@/assets/device/penmo.jpg`)"  />
               <div class="mashingDiv">
 	  						<!--<div class="mashingCode">{{ item.productionStatusCN }}</div>-->
 	  						<div class="mashingName">{{ item.name }}</div>
@@ -1118,7 +1119,7 @@ import 'echarts-liquidfill'
       //设备产能柱状图
       deviceProductInfo(data){
         this.myChartFour = echarts.init(document.getElementById('deviceProduct'));
-        let xData = ['VCN-530CL-01', 'VCN-530CL-02', 'VCN-530CL-03', 'VCN-530CL-04', 'VCN-530CL-05'];
+        let xData = ['GMU800AVI-1', 'GMU800AVI-2', 'GMU800AVI-3'];
         var yData = [];
 
         xData.forEach(item=>{

+ 1 - 1
imcs-ui/src/views/zuihou/lineSideLibrary/lineSideEmulate/Index.vue

@@ -63,7 +63,7 @@
 	  			<table class="contentDiv" border="0" cellspacing="0" cellpadding="6">
 	  				<tr v-for="(objTr, objIndex) in item.layList" :key="objIndex">
 	  					<td v-for="objTd in objTr.stockList" :key="objTd.id" :class="objTd.storgeStockCount>0 ? 'blueBg' : ''" @click="editOne(objTd)">
-	  						{{objTd.no}}
+	  						{{objTd.name}}
 	  						<el-image v-if="objTd.lockStatus == '0'" class="locked" :src="resolveLogo(lockImg)" fit="contain"></el-image>
 	  					</td>
 	  				</tr>

+ 4 - 3
imcs-ui/src/views/zuihou/machiningClient/personConf/Index.vue

@@ -133,11 +133,12 @@ export default {
             let ids = [];
             let userIds = [];
             let stationIds = [];
-            for (let prop in this.tenant.ids) {
+            console.log("提交数据:" + JSON.stringify(this.tenant.userIds))
+            for (let prop in this.tenant.userIds) {
               for (let i = 0; i < this.tenant.userIds[prop].length; i++) {
                 stationIds.push(prop);
                 ids.push(
-                  this.tenant.ids[prop][i] ? this.tenant.ids[prop][i] : "0"
+                  this.tenant.ids[prop] ? this.tenant.ids[prop][i] ? this.tenant.ids[prop][i] : "0" : "0"
                 );
                 userIds.push(this.tenant.userIds[prop][i]);
               }
@@ -202,6 +203,7 @@ export default {
               res.data.map((data) => {
                 this.tenant.ids[data.stationId] = data.ids.split(",");
                 this.tenant.userIds[data.stationId] = data.userIds.split(",");
+                console.log("用户信息:"+JSON.stringify(this.tenant))
               });
               this.dataList = res.data;
             }
@@ -214,7 +216,6 @@ export default {
     },
     selChange(data, stationId) {
       this.tenant.userIds[stationId] = data;
-      console.log(this.tenant.userIds[stationId]);
       this.$forceUpdate();
     },
   },

+ 6 - 3
imcs-ui/src/views/zuihou/machiningClient/touchScreen/Index.vue

@@ -423,7 +423,8 @@ export default {
       });
     },
     selectChange(value) {
-      console.log(value);
+      this.currentStationId = value
+      console.log("选择的值:" + value);
     },
     getStation() {
       stationMgrApi.getStation({ userId: this.$store.state.account.user.id })
@@ -432,8 +433,10 @@ export default {
           if (res.isSuccess) {
             if (res.data.length > 0) {
               this.options = res.data;
-              this.currentStationId = this.options[0].id
-              this.currentStationName = this.options[0].name
+              if(!this.currentStationId){
+                this.currentStationId = this.options[0].id
+                this.currentStationName = this.options[0].name
+              }
               taskMgrApi.getStationTasks({ resourceId : this.currentStationId,type : "0" }).then((res) => {
                 res = res.data;
                 if (res.isSuccess) {

+ 9 - 4
imcs-ui/src/views/zuihou/prepareProductMgr/cuttingToolMgr/components/machineCuttingTool/index.vue

@@ -124,8 +124,13 @@
       <el-table-column align="center" prop="cuttingToolName" :label='$t("cuttingTool.table.machineCuttingtool.cuttingToolName")' :show-overflow-tooltip="true"></el-table-column>
       <!-- 刀具规格 -->
       <el-table-column align="center" prop="specifications" :label='$t("cuttingTool.table.machineCuttingtool.specifications")' :show-overflow-tooltip="true"></el-table-column>
+      <!-- 长度补偿 -->
+      <el-table-column align="center" prop="wearLength" :label='$t("cuttingTool.table.machineCuttingtool.wearLength")' :show-overflow-tooltip="true"></el-table-column>
+      <!-- 半径补偿 -->
+      <el-table-column align="center" prop="wearRadius" :label='$t("cuttingTool.table.machineCuttingtool.wearRadius")' :show-overflow-tooltip="true"></el-table-column>
+
       <!-- 刀具图片 -->
-      <el-table-column align="center" :label='$t("cuttingTool.table.machineCuttingtool.cuttingToolPicture")' :show-overflow-tooltip="true">
+<!--      <el-table-column align="center" :label='$t("cuttingTool.table.machineCuttingtool.cuttingToolPicture")' :show-overflow-tooltip="true">
         <template slot-scope="{ row }">
           <el-image
             style="width: 100px; height: 100px"
@@ -133,9 +138,9 @@
             :preview-src-list="[row.cuttingToolPicture]">
           </el-image>
         </template>
-      </el-table-column>
+      </el-table-column>-->
       <!-- 装夹方式 -->
-      <el-table-column align="center" :label='$t("cuttingTool.table.machineCuttingtool.cuttingToolInstallPicture")' :show-overflow-tooltip="true">
+<!--      <el-table-column align="center" :label='$t("cuttingTool.table.machineCuttingtool.cuttingToolInstallPicture")' :show-overflow-tooltip="true">
         <template slot-scope="{ row }">
           <el-image
             style="width: 100px; height: 100px"
@@ -143,7 +148,7 @@
             :preview-src-list="[row.cuttingToolInstallPicture]">
           </el-image>
         </template>
-      </el-table-column>
+      </el-table-column>-->
 
       <!-- 监控方式 -->
       <el-table-column prop="cuttingToolMonitorType" :label='$t("cuttingTool.table.machineCuttingtool.cuttingToolMonitorType")' align="center"></el-table-column>

+ 33 - 12
imcs-ui/src/views/zuihou/prepareProductMgr/technologyVersion/components/TechnologyEdit.vue

@@ -52,17 +52,17 @@
 		  			<!-- 可执行设备(位置) -->
 		  			<equipment-form ref="equipment" :condition="processModeling" :dataObj="tableData2[0]" @setProgram="setProgram"></equipment-form>
 
-		  			<!-- 所需原材料 -->
-		  			<!-- <material-form ref="material" :technology="currentRow"></material-form> -->
-
 		  			<!-- 夹具 -->
 		  			<tray-form ref="tray" :technology="currentRow" :condition="processModeling" @clearProgram="clearProgram" @setProgram="setProgramByTray"></tray-form>
 
 		  			<!-- NC程序 -->
 		  			<program-form ref="program"></program-form>
 
+            <!-- 喷墨 -->
+            <printing-content-form v-if="tableData2[0]&&tableData2[0].name === '喷墨'" ref="printing"></printing-content-form>
+
 		  			<!-- 人工质检 -->
-		  			<!-- <quality-form ref="quality"></quality-form> -->
+<!--		  			 <quality-form ref="quality"></quality-form> -->
 
 		  			<!-- 机械手臂 -->
 					<!-- <robotarm-form ref="robotarm"></robotarm-form> -->
@@ -107,13 +107,13 @@
 								<el-input v-model="tenant.threeDimensionalDeviationPrograme" :placeholder='$t("common.pleaseEnter")' style="width: 500px;"></el-input>
 							</span>
 						</div>
-					</div>
+					</div>-->
 
-					&lt;!&ndash; 工序抽检配置 &ndash;&gt;
+					<!-- 工序抽检配置 -->
 					<div class="szbpzd">
-						&lt;!&ndash; 按钮功能 &ndash;&gt;
+						<!-- 按钮功能 -->
 				    	<div class="itemDiv">
-				    		&lt;!&ndash; 工序抽检配置  &ndash;&gt;
+				    		<!-- 工序抽检配置  -->
 							<span class="titleSmall">{{$t("prepare.common.randomCheckConf")}}</span>
 							<el-radio-group :disabled="type == 'view' ? true : false" v-model="tenant.randomCheckConf" style="margin-right: 15px;">
 							    <el-radio label="0">{{$t("prepare.common.idNeed.unneed")}}</el-radio>
@@ -121,14 +121,14 @@
 							</el-radio-group>
 						</div>
 
-						&lt;!&ndash; 输入框(需要) &ndash;&gt;
+						<!-- 输入框(需要) -->
 						<div v-if="tenant.randomCheckConf == '1'" class="szbInput">
 							<span>
 								<span>{{ $t("prepare.form.threeDimensionalPrograme") }}:</span>
 								<el-input v-model="tenant.randomCheckPrograme" :placeholder='$t("common.pleaseEnter")' style="width: 500px;"></el-input>
 							</span>
 						</div>
-					</div>-->
+					</div>
 
 		  		</div>
 		  	</div>
@@ -162,7 +162,7 @@ import ProgramForm from "./programForm/"
 import RobotarmForm from "./robotarmForm/"
 // 【产品工艺版本管理】-API
 import technologyVersionApi from "@/api/prepareProductMgr/technologyVersion"
-
+import PrintingContentForm from "./printingContent/"
 export default {
   name: 'TenantEdit',
   components: {
@@ -170,7 +170,8 @@ export default {
   	//MaterialForm,
   	TrayForm,
   	ProgramForm,
-  	RobotarmForm
+  	RobotarmForm,
+    PrintingContentForm
   	// QualityForm
   },
   props: {
@@ -323,6 +324,7 @@ export default {
 	    // 工序抽检配置
 	    randomCheckConf: '0',
 		randomCheckPrograme: '',
+        formulaNum: ''
       }
     },
     initWidth () {
@@ -367,6 +369,12 @@ export default {
       // 清除【程序】
       this.$refs.program.radio = null
       this.$refs.program.tableData = []
+
+      // 清除配方编号
+      if(this.$refs.printing && this.$refs.printing.formulaNum){
+        this.$refs.printing.formulaNum = 0; //默认为1
+      }
+
     },
     submitForm (isFlag) {
     	// 工艺版本id
@@ -390,6 +398,13 @@ export default {
     	// 获取【程序】数据
     	this.tenant.programConf = this.$refs.program.radio
     	this.tenant.programList = this.$refs.program.tableData
+
+      //获取配方编号
+      if(this.tableData2[0] && this.tableData2[0].name === '喷墨'){
+        this.tenant.formulaNum = this.$refs.printing.formulaNum
+        console.log("配方编号:"+this.tenant.formulaNum);
+      }
+
     	// 获取【人工质检】数据
     	//this.tenant.programTest = this.$refs.quality.radio
     	//this.tenant.procedureTestList = this.$refs.quality.tableData
@@ -464,6 +479,7 @@ export default {
       	})
     },
     save (isFlag) {
+      console.log("表单的数据:", this.tenant)
       technologyVersionApi.saveProcessAnalysis(this.tenant)
         .then((response) => {
           const res = response.data
@@ -564,6 +580,11 @@ export default {
 		    	if(!!res.data.trayConf){
 		    		this.$refs.tray.radio = res.data.trayConf
 		    	}
+
+          //获取配方编号
+          if(this.$refs.printing && this.$refs.printing.formulaNum){
+            this.$refs.printing.formulaNum = res.data.formulaNum
+          }
 		    	this.$refs.tray.armTrayConf = res.data.armTrayConf == '1' ? true : false
 	    		this.$refs.tray.armFixtureConf = res.data.armFixtureConf == '1' ? true : false
 		    	this.$refs.tray.setDataMustSpan(this.setKeyList(res.data.procedureTrayList, 'tray'))

+ 51 - 0
imcs-ui/src/views/zuihou/prepareProductMgr/technologyVersion/components/printingContent/index.vue

@@ -0,0 +1,51 @@
+<template>
+  <div class="">
+    <!-- 按钮功能 -->
+    <div class="itemDiv">
+      <span class="titleSmall">喷墨配方编号</span>
+      <el-input-number v-model="formulaNum" :min="1" label="配方编号"></el-input-number>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "PrintingContentForm",
+  data () {
+    return {
+      formulaNum: 1,
+    }
+  },
+  computed: {
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+  },
+
+
+  mounted () {
+
+  },
+  methods: {
+  }
+}
+</script>
+<style lang="scss" scoped>
+.titleSmall{
+  position: relative;
+  padding-left: 10px;
+  margin-right: 15px;
+}
+.titleSmall:before{
+  content: '';
+  position: absolute;
+  background: #1890ff;
+  width: 5px;
+  height: 90%;
+  left: 0;
+  top: 1px;
+}
+.itemDiv{
+  margin: 10px 0;
+}
+</style>

+ 18 - 1
imcs-ui/src/views/zuihou/resourceProductMgr/equipmentProgramMgr/Index.vue

@@ -170,7 +170,7 @@
 	            @click="equipmentDelete(row)"
 	          />
           </el-tooltip>
-          <a class="el-icon-download table-operation" style="color: #1890ff;" target="_blank" :href="row.filePath" :download="row.submittedFileName"></a>
+          <a class="el-icon-download table-operation" style="color: #1890ff;" target="_blank" @click="downUpload(row)" :download="row.submittedFileName"></a>
         </template>
       </el-table-column>
     </el-table>
@@ -341,6 +341,23 @@
         this.dialogUpload.title = this.$t("resource.buttons.upload")
         this.dialogUpload.isVisible = true
 
+      },
+      downUpload(row){
+        programCenterApi.downUpload(row).then(res => {
+          // console.log("【从设备删除】: ", res)
+          res = res.data
+          if (res.isSuccess) {
+            this.$message({
+              message: "下载成功",
+              type: "success"
+            })
+            // 加载【刀具列表】数据
+            this.fetch2()
+            // 清理已经删除的数据
+            this.$refs.table2.clearSelection()
+          }
+        })
+
       },
 	  	// 【从设备删除】按钮-事件
 	  	equipmentDelete(row){