2 Commits e195c103ac ... 08a4cbf01a

Author SHA1 Message Date
  wang.sq@aliyun.com 08a4cbf01a Merge branch 'master' of http://106.14.142.95:3000/oyq28/imcs_331_web 2 weeks ago
  wang.sq@aliyun.com b88bd94c1d fix:对刀参数校验优化,上下料站呼叫托盘优化 2 weeks ago

+ 20 - 0
imcs-ui/src/api/prepareProductMgr/customizeCuttingTool.js

@@ -32,6 +32,14 @@ const apiList = {
   list: {
     method: 'POST',
     url: `/authority/customizeCuttingTool/query`
+  },
+  findCuttingToolConfigList: {
+    method: 'POST',
+    url: `/authority/cuttingToolConfig/findCuttingTool`
+  },
+  saveCuttingToolConfig: {
+    method: 'POST',
+    url: `/authority/cuttingToolConfig/saveOne`
   }
 }
 
@@ -90,4 +98,16 @@ export default {
       url: `/authority/customizeCuttingTool/check/${code}`
     })
   },
+  findCuttingToolConfigList (data) {
+    return axiosApi({
+      ...apiList.findCuttingToolConfigList,
+      data
+    })
+  },
+  saveCuttingToolConfig (data) {
+    return axiosApi({
+      ...apiList.saveCuttingToolConfig,
+      data
+    })
+  },
 }

+ 1 - 0
imcs-ui/src/lang/de/de.js

@@ -441,6 +441,7 @@ export default {
     cancel: '取消',
     add: '新增',
     edit: '修改',
+    addPar: '对刀参数',
     delete: '删除',
 		search: '搜索',
 		reset: '重置',

+ 8 - 0
imcs-ui/src/lang/zh/cuttingTool.js

@@ -96,6 +96,14 @@ export default {
         remark: '备注',
         status: '启用状态',
         cutterCode: '刀具编码',
+        cutterZl: '刀长',
+        cutterXl: '半径/直径',
+        cutterRs: '刀具R角',
+        cutterTo: '刀尖角',
+        cutterOri: '主轴定向角度',
+        cutterTypSubDnc: '车刀子类型',
+        cutterTime2:'允许最小刀具寿命',
+        cutterPlcBit: '内冷开'
       }
     },
     // 表单验证规则提示信息

+ 133 - 80
imcs-ui/src/views/zuihou/centralToolMagazine/cutterTestData/components/CutterTestCourse.vue

@@ -5,85 +5,126 @@
         :size="drawersize"
         @close="handleClose">
 
-        <el-row>
-          <el-col :span="14" >
-            <!-- 输入框三 -->
-            <el-col :span="22" style="margin-left: 15px;">
-              <span >
-                <span>刀具类型:</span>
-                <el-select v-model="queryParams.model.cutterTyp" clearable >
-                  <el-option
-                    v-for="item in cutterTypList"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                  </el-option>
-                </el-select>
-              </span>
-              <span style="margin-left: 15px">
-                <el-button  type="primary" icon="el-icon-edit" size="medium" v-has-permission="['classSchedule:audit']" @click="openDrawerWin()">更换图片</el-button>
-              </span>
-            </el-col>
-            <!-- 地图展示 -->
-            <el-col :span="22" style="margin-top: 15px;margin-left: 15px;">
-              <img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcbu01.alicdn.com%2Fimg%2Fibank%2F2020%2F241%2F065%2F21227560142_230319548.jpg&refer=http%3A%2F%2Fcbu01.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1738914655&t=b09f2d40da895ec3f421ac1c7944e5eb" 
-              alt="Image" 
-              style="width: 100%;
-              height: 85dvh;
-              background-size: cover;
-              background-position: center;
-              background-repeat: no-repeat;">
-            </el-col>
-          </el-col>
-          <el-col :span="10">
-            <el-col :span="24">
-              <span>刀具参数对比数据</span>
-            </el-col>
-            <el-col :span="24" style="margin-top: 15px;">
-              <span >
-                <span>刀具类型:</span>
+        <el-container style="height: 100%; border: 1px solid #eee">
+          <el-main style="width: 40%; ">
+            <el-image 
+              style="width: 99%;height: 99%;"
+              :src="parameterControl.cuttingSetToolPicture" >
+              <div slot="error" style="width: 99%;height: 99%;">
+                <i class="el-icon-picture-outline"></i>
+              </div>
+            </el-image> 
+          </el-main>
+          <el-main>
+            
+            <el-row  style="padding: auto;">
+              <el-col :span="7" >刀具号:</el-col>
+              <el-col :span="16">
                 <el-input
-                  type="textarea"
-                  :cols="10"
-                  :rows="6" 
-                  :disabled="true"
-                  v-model="parameterControl.toolSetToCheckParameter">
-                </el-input>
-              </span>
-            </el-col>
-            <el-col :span="24" style="margin-top: 15px;">
-              <span >检测数据</span>
-            </el-col>
-            <el-col :span="24" style="margin-top: 15px;">
-              <span >
-                <span>刀具类型:</span>
-                <el-select v-model="queryParams.model.cutterTyp" clearable >
-                  <el-option
-                    v-for="item in cutterTypList"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                  </el-option>
-                </el-select>
-              </span>
-            </el-col>
-            <el-col :span="24" style="margin-top: 15px;">
-              <span >
-                <span>刀具类型:</span>
-                <el-select v-model="queryParams.model.cutterTyp" clearable >
-                  <el-option
-                    v-for="item in cutterTypList"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value">
-                  </el-option>
-                </el-select>
-              </span>
-            </el-col>
-          </el-col>
-        </el-row>
-
+                      v-model="parameterControl.cuttingToolNo"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">刀具名:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cuttingToolName"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">对比参数:</el-col>
+              <el-col :span="16">
+                <el-input
+                      type="textarea"
+                      :cols="8"
+                      :rows="6" 
+                      :disabled="true"
+                      v-model="parameterControl.toolSetToCheckParameter">
+                    </el-input>
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col >检测数据:</el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">刀具长度:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cutterZl"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">半径/直径:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cutterXl"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">刀具R角:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cutterRs"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">刀尖角:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.pangle"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">主轴定向角度:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cutterOri"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">最长刀具寿命:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cutterTime1"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
+            <el-row style="margin-top: 15px;">
+              <el-col :span="7">内冷开:</el-col>
+              <el-col :span="16">
+                <el-input
+                      v-model="parameterControl.cutterPlcBit"
+                      size="medium"
+                      disabled
+                    />
+              </el-col>
+            </el-row>
 
+          </el-main>
+        </el-container>
     </el-drawer>
   </div>
 </template>
@@ -223,7 +264,14 @@ export default {
     },
     // 开启定时
     startTimer() {
-			this.intervalId = setInterval(this.timerFunction, 2000);
+      // 获取需要对比的字段
+
+      // 设置定时器,在4000毫秒后开始执行,并且确保立即执行一次
+      setTimeout(() => {
+        this.timerFunction();
+      }, 500);
+      this.intervalId = setInterval(this.timerFunction, 4000);
+
 		},
     // 关闭定时
 		stopTimer() {
@@ -240,7 +288,7 @@ export default {
 	          this.isReadError = false;
             console.log(response.data.data)
             var datada = response.data.data;
-            this.parameterControl.toolSetToCheckParameter = datada.toolSetToCheckParameter
+            this.parameterControl = datada
 	       
 	        }else {
             if(this.isReadError == false){
@@ -251,10 +299,15 @@ export default {
             }
             this.isReadError = true;
           }
-	      });
+	      }).catch(re =>{
+          this.parameterControl= {}
+        });
 		}
 
   }, 
 }
 </script>
 
+<style>
+</style>
+

+ 1 - 0
imcs-ui/src/views/zuihou/machiningClient/touchScreen/Index.vue

@@ -483,6 +483,7 @@ export default {
         // })
         // item.procedurePosition = current[0].name;
         // 只有开始中的页面可以点击进入详情页面操作
+        console.log("开始")
         item.currentStationName = this.currentStationName
         if(item.exeStatus === '2' && item.interfaceType === '04' && item.step=="1"){
             if(item.taskName == '上料' || item.nodeName == '上料' ){

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

@@ -392,6 +392,7 @@ export default {
       }
     },
     setTenant (val) {
+		console.log("---")
       this.tenant = { ...val }
 	  console.log(this.tenant)
 	  this.currentIndex = this.tenant.currentStationName.substr(-1)

+ 2 - 2
imcs-ui/src/views/zuihou/prepareProductMgr/cuttingToolMgr/components/customizeCuttingTool/components/Edit.vue

@@ -57,7 +57,7 @@
           <div slot="tip" class="el-upload__tip">{{$t("cuttingTool.tips.fileTips")}}</div>
         </el-upload>
         <div class="img-wrapper" v-if="customizeCuttingTool.cuttingToolPicture" style="margin:5px;">
-          <el-image :src="customizeCuttingTool.cuttingToolPicture" fit="cover" />
+          <el-image  style="width: 100px; height: 100px" :src="customizeCuttingTool.cuttingToolPicture" fit="cover" />
         </div>
       </el-form-item>
       <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolInstallPicture")+":"' prop="cuttingToolInstallPicture">
@@ -80,7 +80,7 @@
           <div slot="tip" class="el-upload__tip">{{$t("cuttingTool.tips.fileTips")}}</div>
         </el-upload>
         <div class="img-wrapper" v-if="customizeCuttingTool.cuttingToolInstallPicture" style="margin:5px;">
-          <el-image :src="customizeCuttingTool.cuttingToolInstallPicture" fit="cover" />
+          <el-image   style="width: 100px; height: 100px"  :src="customizeCuttingTool.cuttingToolInstallPicture" fit="cover" />
         </div>
       </el-form-item>
       <!-- 刀具组刀参数-->

+ 486 - 0
imcs-ui/src/views/zuihou/prepareProductMgr/cuttingToolMgr/components/customizeCuttingTool/components/addPar.vue

@@ -0,0 +1,486 @@
+<template>
+  <el-dialog
+  	:close-on-click-modal="false"
+  	:close-on-press-escape="false"
+  	:title="title"
+  	:append-to-body="true"
+  	:visible.sync="addParIsVisible"
+  	width="750px"
+  	top="50px"
+  >
+    <el-form ref="form"  :model="customizeCuttingTool" :rules="rules" label-position="right" label-width="180px">
+      <!-- 刀具编号 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolNo")+":"' prop="cuttingToolNo">
+        <el-input v-model="customizeCuttingTool.cuttingToolNo" :disabled="true" style="width: 93%;" ></el-input>  
+      </el-form-item>      
+      <!-- 刀具名称-->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolName")+":"' prop="cuttingToolName">
+        <el-input v-model.trim="customizeCuttingTool.cuttingToolName" :disabled="true" :label='$t("common.pleaseEnter")' style="width: 93%;"></el-input>
+      </el-form-item>
+      <!-- 车刀-刀长 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterZl")+"ZL(mm):"' v-if="this.isTurningToolShow" prop="cutterZl">
+        <el-input-number v-model="customizeCuttingTool.cutterZlMin"  @change="hangePar($event,'cutterZlMin','cutterZlMax')" :step="0.01"></el-input-number>
+        -
+        <el-input-number v-model="customizeCuttingTool.cutterZlMax"  @change="hangePar($event,'cutterZlMin','cutterZlMax')" :step="0.01"></el-input-number>
+      </el-form-item>
+      <!-- 刀具半径/直径 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterXl")+"XL(mm):"'  v-if="this.isTurningToolShow" prop="cutterXl">
+        <el-input-number v-model="customizeCuttingTool.cutterXlMin"  @change="hangePar($event,'cutterXlMin','cutterXlMax')" :step="0.01"></el-input-number>
+        -
+        <el-input-number v-model="customizeCuttingTool.cutterXlMax" @change="hangePar($event,'cutterXlMin','cutterXlMax')" :step="0.01"></el-input-number>
+      </el-form-item>
+      <!-- 主轴定向角度 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterOri")+"ORI(mm):"' v-if="this.isTurningToolShow" prop="cutterOri">
+        <el-input-number v-model="customizeCuttingTool.cutterOriMin"  @change="hangePar($event,'cutterOriMin','cutterOriMax')" :step="0.01"></el-input-number>
+        -
+        <el-input-number v-model="customizeCuttingTool.cutterOriMax" @change="hangePar($event,'cutterOriMin','cutterOriMax')" :step="0.01"></el-input-number>
+      </el-form-item>
+      <!-- 是否为空 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterTypSubDnc")+"TYPE:"' v-if="this.isTurningToolShow" prop="cutterTypSubDnc">
+        <el-radio v-model="customizeCuttingTool.cutterTypSubDnc" label="1">为空</el-radio>
+        <el-radio v-model="customizeCuttingTool.cutterTypSubDnc" label="2">不为空</el-radio>
+      </el-form-item>
+
+      <!-- 其他刀 -->
+      <!-- 刀长 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterZl")+"L(mm):"' v-if="!this.isTurningToolShow" prop="cutterZl">
+        <el-input-number v-model="customizeCuttingTool.cutterZlMin"  @change="hangePar($event,'cutterZlMin','cutterZlMax')" :step="0.01"></el-input-number>
+        -
+        <el-input-number v-model="customizeCuttingTool.cutterZlMax"  @change="hangePar($event,'cutterZlMin','cutterZlMax')" :step="0.01"></el-input-number>
+      </el-form-item>
+      <!-- 刀具R角 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterRs")+"R(mm):"' v-if="!this.isTurningToolShow" prop="cutterRs">
+        <el-input-number v-model="customizeCuttingTool.cutterRsMin"  @change="hangePar($event,'cutterRsMin','cutterRsMax')" :step="0.01"></el-input-number>
+        -
+        <el-input-number v-model="customizeCuttingTool.cutterRsMax" @change="hangePar($event,'cutterRsMin','cutterRsMax')" :step="0.01"></el-input-number>
+      </el-form-item>
+      <!-- 刀尖角 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterTo")+"To(mm):"' v-if="!this.isTurningToolShow" prop="cutterTo">
+        <el-input-number v-model="customizeCuttingTool.cutterToMin"  @change="hangePar($event,'cutterToMin','cutterToMax')" :step="0.01"></el-input-number>
+        -
+        <el-input-number v-model="customizeCuttingTool.cutterToMax" @change="hangePar($event,'cutterToMin','cutterToMax')" :step="0.01"></el-input-number>
+      </el-form-item>
+      <!-- 内冷开 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterPlcBit")+"PlcBit(mm):"' v-if="!this.isTurningToolShow" prop="cutterPlcBit">
+        <el-radio v-model="customizeCuttingTool.cutterPlcBit" label="1">为空</el-radio>
+        <el-radio v-model="customizeCuttingTool.cutterPlcBit" label="2">不为空</el-radio>
+      </el-form-item>
+
+      
+      <!-- 刀具寿命 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterTime2")+"TIME1:"' prop="cutterTime2">
+        <el-input-number v-model="customizeCuttingTool.cutterTime2"  :step="1" :min="0"></el-input-number>
+      </el-form-item>
+      <!-- 备注-->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.remark")+":"' prop="remark">
+        <el-input v-model.trim="customizeCuttingTool.remark" type="textarea" :rows="3"  style="width: 93%;" :label='$t("common.pleaseEnter")' maxlength="255"></el-input>
+        <el-tooltip
+          class="item"
+          :content="'备注长度不能超过255位'"
+          effect="dark"
+          placement="top-end"
+        >
+          <i class="el-icon-question" />
+        </el-tooltip>
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button plain type="warning" @click="addParIsVisible = false">{{ $t('common.cancel') }}</el-button>
+      <el-button plain type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('common.confirm') }}</el-button>
+    </div>
+
+  </el-dialog>
+</template>
+<script>
+	// 【刀具管理】-API
+  import machineCustomizeCuttingToolMgrApi from "@/api/prepareProductMgr/machineCustomizeCuttingTool"
+	import customizeCuttingToolMgrApi from "@/api/prepareProductMgr/customizeCuttingTool"
+  import db from "@/utils/localstorage";
+  import {Base64} from 'js-base64';
+  import {initQueryParams } from '@/utils/commons'
+export default {
+  name: 'CustomizeCuttingToolEdit',
+  components: {},
+  props: {
+    dialogVisible: {
+      type: Boolean,
+      default: false
+    },
+    title: {
+      type: String,
+      default: ''
+    }
+  },
+  data () {
+    return {
+      type: 'add',
+      // 附件上传
+      action: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`,
+      // 附件其它参数
+      cuttingToolPictureData: {
+          bizId: "",
+          bizType: "cuttingToolPictureData"
+      },
+      cuttingToolInstallPictureData: {
+          bizId: "",
+          bizType: "cuttingToolInstallPictureData"
+      },
+      // 附件的值
+      cuttingToolPictureFileList: [],
+      cuttingToolInstallPictureFileList: [],
+      customizeCuttingTool: this.initCustomizeCuttingTool(),
+      isTurningToolShow: false,
+      queryMachineParams: initQueryParams({}),
+      screenWidth: 0,
+      width: this.initWidth(),
+      confirmDisabled: false,
+      deviceData: [],
+      dialog: {
+        addParIsVisible: false,
+        title: ""
+      },
+      dicts:{
+        CUTTING_TOOL_TYPE: {},
+        CUTTING_TOOL_CATEGORY: {},
+      },
+      roles: [],
+      rules: {
+        cuttingToolNo:[
+          { required: true, message: this.$t("rules.require"), trigger: 'blur' },
+        ],
+        specifications: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'blur' },
+        ],
+        cuttingToolName: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        cutterCode: [
+          { required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        deviceId: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        cuttingToolType: [
+          { required: true, validator: (rule, value, callback) => {
+              console.log("this.customizeCuttingTool.cuttingToolType.key="+this.customizeCuttingTool.cuttingToolType.key)
+            if (this.customizeCuttingTool.cuttingToolType.key === null || this.customizeCuttingTool.cuttingToolType.key === "") {
+                callback(new Error("请选择刀具类型"))
+            } else {
+                callback()
+            }
+          }, trigger: ['blur','change'] }
+        ],
+        cuttingToolCategory: [
+          { required: true, validator: (rule, value, callback) => {
+              console.log("this.customizeCuttingTool.cuttingToolCategory.key="+this.customizeCuttingTool.cuttingToolCategory.key)
+              if (this.customizeCuttingTool.cuttingToolCategory.key === null || this.customizeCuttingTool.cuttingToolCategory.key === "") {
+                callback(new Error("请选择刀具类别"))
+              } else {
+                callback()
+              }
+            }, trigger: ['blur','change'] }
+        ],
+      }
+    }
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+  },
+  computed: {
+    headers() {
+      return {
+        token: 'Bearer ' + db.get("TOKEN", ""),
+        tenant: db.get("TENANT", "") || "",
+        Authorization: `Basic ${Base64.encode(`${process.env.VUE_APP_CLIENT_ID}:${process.env.VUE_APP_CLIENT_SECRET}`)}`
+      };
+    },
+  	formDisabled(){
+      this.confirmDisabled = false
+      return false
+  	},
+    addParIsVisible: {
+      get () {
+        return this.dialogVisible
+      },
+      set () {
+        this.close()
+        this.reset()
+      }
+    }
+  },
+  mounted () {
+    window.onresize = () => {
+      return (() => {
+        this.width = this.initWidth()
+      })()
+    }
+  },
+  methods: {
+  	// 【新增-修改】弹出框,关闭
+  	editClose () {
+      this.dialog.addParIsVisible = false
+    },
+    add () {
+      this.$refs.addPar.type = "add"
+      this.dialog.addParTitle = this.$t("prepare.common.selectEq")
+      this.dialog.addParIsVisible = true
+    },
+    initCustomizeCuttingTool () {
+      return {
+        cutterZlMin: 0,
+        cutterZlMax:0,
+        id: '',
+        specifications: '',
+        cuttingToolNo: 1,  
+        cuttingToolName: '',
+        cuttingToolType: {
+            key: ""
+        },
+        cuttingToolCategory: {
+            key: ""
+        },
+        deviceId: '',
+        resourceIdList: [],
+        cutterNo: 1,
+        cuttingToolPicture: '',
+        cuttingToolInstallPicture: '',
+        remark: '',
+        status: '1',
+        cutterCode: '',
+      }
+    },
+    initWidth () {
+      this.screenWidth = document.body.clientWidth
+      if (this.screenWidth < 991) {
+        return '90%'
+      } else if (this.screenWidth < 1400) {
+        return '45%'
+      } else {
+        return '800px'
+      }
+    },
+    setCustomizeCuttingTool (val, dicts) {
+      console.log(val.cuttingToolType.key+"========dicts:",dicts);
+      if(val.cuttingToolType.key.includes('I')){
+        this.isTurningToolShow = true
+      }else {
+        this.isTurningToolShow = false
+      }
+
+      this.customizeCuttingTool = val
+      
+      customizeCuttingToolMgrApi.findCuttingToolConfigList(val)
+        .then((response) => {
+          const res = response.data
+          if (res.length>0) {
+            this.customizeCuttingTool  = Object.assign({}, this.customizeCuttingTool ,  res[0]);
+          }
+        }).finally(() => {
+          return true
+        })
+
+    },
+    close () {
+      this.$emit('close')
+    },
+    fetch (params = {}) {
+	      this.loading = true
+	      this.queryMachineParams.current = params.current ? params.current : this.queryMachineParams.current
+	      this.queryMachineParams.size = 100
+
+        // 查询必须参数
+        machineCustomizeCuttingToolMgrApi.getPageList(this.queryMachineParams).then(response => {
+	        const res = response.data
+	        if (res.isSuccess) {
+	          this.deviceData = res.data
+	        }
+	        // eslint-disable-next-line no-return-assign
+	      }).finally(() => this.loading = false)
+    },
+    reset () {
+      // 先清除校验,再清除表单,不然有奇怪的bug
+      this.$refs.form.clearValidate()
+      this.$refs.form.resetFields()
+      this.customizeCuttingTool = this.initCustomizeCuttingTool()
+      // 清空上传附件
+      this.cuttingToolPictureFileList = []
+      this.cuttingToolInstallPictureFileList = []
+    },
+    submitForm () {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.confirmDisabled = true
+          // 添加数据
+          this.save()
+
+        } else {
+          return false
+        }
+      })
+    },
+    save () {
+  	    console.log(this.customizeCuttingTool)
+      customizeCuttingToolMgrApi.saveCuttingToolConfig(this.customizeCuttingTool)
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+            this.addParIsVisible = false
+            this.$message({
+              message: this.$t('tips.createSuccess'),
+              type: 'success'
+            })
+            // 通知列表
+	          this.$emit("success");
+	          // 通知列表-并关闭弹出框
+	          this.$emit("close");
+          }
+        }).finally(() => {
+          this.confirmDisabled = false
+          return true
+        })
+    },
+    update () {
+      customizeCuttingToolMgrApi.update(this.customizeCuttingTool)
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+            this.addParIsVisible = false
+            this.$message({
+              message: this.$t('tips.updateSuccess'),
+              type: 'success'
+            })
+            // 通知列表
+	          this.$emit("success");
+	          // 通知列表-并关闭弹出框
+	          this.$emit("close");
+          }
+        }).finally(() => {
+          this.confirmDisabled = false
+          return true
+        })
+    },
+    // 文件列表移除文件时的钩子
+    handleCuttingToolPictureRemove(file, fileList) {
+        console.log("删除事件:", file, fileList);
+        // 还原数据
+        this.resetCuttingToolPictureFile()
+    },
+    // 点击文件列表中已上传的文件时的钩子
+    handleCuttingToolPicturePreview(file) {
+        console.log("上传之前事件:",file);
+    },
+    // 文件超出个数限制时的钩子
+    handleCuttingToolPictureExceed(files, fileList) {
+        this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
+    },
+    // 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。
+    beforeCuttingToolPictureRemove(file, fileList) {
+        return this.$confirm(`确定移除 ${ file.name }?`);
+    },
+    // 文件上传成功时的钩子
+    handleCuttingToolPictureSuccess(response, file, fileList){
+        console.log("文件上传成功!", response)
+        if(response.isSuccess){
+            // [上传程序]字段的值
+            this.customizeCuttingTool.cuttingToolPicture = response.data.url
+        }
+    },
+    // 文件上传失败时的钩子
+    handleCuttingToolPictureError(err, file, fileList){
+        console.log("文件上传失败~", err)
+    },
+    // 文件上传时的钩子
+    handleCuttingToolPicturePropress(event, file, fileList){
+        console.log("文件上传~", event)
+    },
+
+
+    // 文件列表移除文件时的钩子
+    handleCuttingToolInstallPictureRemove(file, fileList) {
+        console.log("删除事件:", file, fileList);
+        // 还原数据
+        this.resetCuttingToolInstallPictureFile()
+    },
+    // 点击文件列表中已上传的文件时的钩子
+    handleCuttingToolInstallPicturePreview(file) {
+        console.log("上传之前事件:",file);
+    },
+    // 文件超出个数限制时的钩子
+    handleCuttingToolInstallPictureExceed(files, fileList) {
+        this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
+    },
+    // 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。
+    beforeCuttingToolInstallPictureRemove(file, fileList) {
+        return this.$confirm(`确定移除 ${ file.name }?`);
+    },
+    // 文件上传成功时的钩子
+    handleCuttingToolInstallPictureSuccess(response, file, fileList){
+        console.log("文件上传成功!", response)
+        if(response.isSuccess){
+            // [上传程序]字段的值
+            this.customizeCuttingTool.cuttingToolInstallPicture = response.data.url
+        }
+    },
+    // 文件上传失败时的钩子
+    handleCuttingToolInstallPictureError(err, file, fileList){
+        console.log("文件上传失败~", err)
+    },
+    // 文件上传时的钩子
+    handleCuttingToolInstallPicturePropress(event, file, fileList){
+        console.log("文件上传~", event)
+    },
+    resetCuttingToolPictureFile(){
+        // [上传程序]字段的值
+        this.customizeCuttingTool.cuttingToolPicture = ''
+    },
+    resetCuttingToolInstallPictureFile(){
+        // [上传程序]字段的值
+        this.customizeCuttingTool.cuttingToolInstallPicture = ''
+    },
+    cutterZlChange(value, type) {
+      console.log(value +"===="+ type );
+      // 根据需要处理变化,例如确保最小值不大于最大值等
+      if(this.customizeCuttingTool.cutterZlMin > this.customizeCuttingTool.cutterZlMax){
+        this.customizeCuttingTool.cutterZlMax = this.customizeCuttingTool.cutterZlMin;
+      }
+    },
+    hangePar(value, par1, par2) {
+      console.log(value +"===="+ par1 +"=="+par2);
+      // 根据需要处理变化,例如确保最小值不大于最大值等
+      if(this.customizeCuttingTool[par1] > this.customizeCuttingTool[par2]){
+        this.customizeCuttingTool[par2] = this.customizeCuttingTool[par1];
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" >
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 100px;
+  height: 100px;
+  line-height: 100px;
+  text-align: center;
+}
+.avatar {
+  width: 100px;
+  height: 100px;
+  display: block;
+}
+.checkUsed{
+	display: inline-block;
+	margin-left: 10px;
+	color: #1890ff;
+}
+</style>

+ 40 - 4
imcs-ui/src/views/zuihou/prepareProductMgr/cuttingToolMgr/components/customizeCuttingTool/index.vue

@@ -127,7 +127,7 @@
 		  fixed="right"
 		  align="center"
 		  column-key="operation"
-		  width="80px"
+		  width="120px"
 		>
 		  <template slot-scope="{ row }">
 			<el-tooltip class="item" :content='$t("common.edit")' effect="dark" placement="top-start">
@@ -138,6 +138,14 @@
 				  @click="edit(row)"
 				/>
 			</el-tooltip>
+			<el-tooltip class="item" content='对刀参数维护' effect="dark" placement="top-start">
+				<i
+				  v-if="row.cutterNo==0"
+				  class="el-icon-setting table-operation"
+				  style="color: #2db7f5;"
+				  @click="addParWin(row)"
+				/>
+			</el-tooltip>
 			<el-tooltip class="item" :content='$t("common.delete")' effect="dark" placement="top-start">
 				<i
 				  v-if="row.cutterNo==0"
@@ -156,6 +164,7 @@
 		:total="Number(tableData.total)"
 		@pagination="fetch"
 	  />
+	  <!-- 新增修改 -->
 	  <edit
 		ref="edit"
 		:dialog-visible="dialog.isVisible"
@@ -163,13 +172,25 @@
 		@close="editClose"
 		@success="editSuccess"
 	  />
+	  <!-- 参数维护自定义组件  -->
+	  <add-par
+		ref="addPar"
+		:dialog-visible="dialog.addParIsVisible"
+		:title="dialog.addParTitle"
+		@close="addParClose"
+		@success="addParSuccess"
+	  />
+
 	</div>
   </template>
   
   <script>
-	  import Pagination from "@/components/Pagination"
-	  import Edit from "./components/Edit"
+	import Pagination from "@/components/Pagination"
+	import Edit from "./components/Edit"
 	import { convertEnum } from '@/utils/utils'
+	// 对刀参数维护
+	import AddPar from "./components/addPar.vue"
+
 	  // 【刀具基础数据】-API
 	// 【刀具管理】-API
 	import machineCustomizeCuttingToolMgrApi from "@/api/prepareProductMgr/machineCustomizeCuttingTool"
@@ -179,13 +200,14 @@
 	  export default {
 		name: "CustomizeCuttingTool",
 		directives: { elDragDialog },
-		components: { Pagination, Edit },
+		components: { Pagination, Edit, AddPar },
 		props: {
 		},
 		data () {
 		  return {
 			dialog: {
 			  isVisible: false,
+			  addParIsVisible: false,
 			  title: ""
 			},
 		  dicts: {
@@ -234,6 +256,12 @@
 		  editSuccess () {
 			this.search()
 		  },
+		  addParClose () {
+			this.dialog.addParIsVisible = false
+		  },
+		  addParSuccess () {
+			this.search()
+		  },
 		  onSelectChange (selection) {
 			this.selection = selection
 		  },
@@ -324,6 +352,14 @@
 			this.dialog.title = this.$t("common.edit")
 			this.dialog.isVisible = true
 		  },
+		  addParWin (row) {
+			// this.$refs.addPar.setCustomizeCuttingTool(row, this.dicts)
+			//this.$refs.addPar.type = "edit"
+			this.$refs.addPar.setCustomizeCuttingTool(row, this.dicts)
+			this.dialog.addParTitle = this.$t("对刀参数维护")
+			this.dialog.addParIsVisible = true
+
+		  },
 		  fetch (params = {}) {
 			this.loading = true
 			if (this.queryParams.timeRange) {

+ 1 - 1
imcs-ui/src/views/zuihou/runManageCenter/orderMgr/components/runningOrder/changeToolTask/components/Edit.vue

@@ -32,7 +32,7 @@
 	      </el-table-column>
 	      <!--<el-table-column align="center" type="selection" width="50" :reserve-selection="true" />-->
 	      <el-table-column prop="cuttingToolName" label='刀具名称' :show-overflow-tooltip="true"></el-table-column>
-	      <el-table-column prop="specifications" label='刀具规格' width="180px"></el-table-column>
+	      <el-table-column prop="specifications" label='' width="180px"></el-table-column>
 	      <el-table-column prop="handleCode" label='刀柄编码' width="180px">
           <template slot-scope="scope" >
             <el-input v-model="tenant.handleCode" type='text' />