2 次代码提交 2a3e3c8037 ... 362392d773

作者 SHA1 备注 提交日期
  wang.sq@aliyun.com 362392d773 “fix:12” 2 周之前
  wang.sq@aliyun.com faa53d22fc “fix:12” 2 周之前

+ 10 - 0
imcs-ui/src/api/machiningClient/stationMgr.js

@@ -50,6 +50,10 @@ const apiList = {
         method: 'POST',
 	    url: `/authority/stationUser/addCutToolTask`
 	},
+	setWriteTakeCutter:{
+        method: 'POST',
+	    url: `/authority/stationUser/setWriteTakeCutter`
+	},
   	remove: {
     	method: 'DELETE',
     	url: `/authority/stationUser`
@@ -136,6 +140,12 @@ export default {
 	      	data
 	    })
   	},
+	setWriteTakeCutter (data) {
+	    return axiosApi({
+	      	...apiList.setWriteTakeCutter,
+	      	data
+	    })
+  	},
   	remove (data) {
 	    return axiosApi({
 	      	...apiList.remove,

+ 31 - 2
imcs-ui/src/api/modelingCenter/cutterCategoriesGroup.js

@@ -62,6 +62,19 @@ const apiList = {
     method: 'POST',
     url: `/authority/toolTask/page`
   },
+  getAllbomList: {
+    method: 'POST',
+    url: `/authority/bBom/bomList`
+  },
+  getAllCutterList: {
+    method: 'POST',
+    url: `/authority/customizeCuttingTool/pageList`
+  },
+  saveNeedCutter: {
+    method: 'POST',
+    url: `/authority/cutterCategory/save`
+  }
+  
   
 }
 
@@ -184,6 +197,22 @@ export default {
       data
     })
   },
-
-
+  getAllbomList(data) {
+    return axiosApi({
+      ...apiList.getAllbomList,
+      data
+    })
+  },
+  getAllCutterList(data) {
+    return axiosApi({
+      ...apiList.getAllCutterList,
+      data
+    })
+  },
+  saveNeedCutter(data) {
+    return axiosApi({
+      ...apiList.saveNeedCutter,
+      data
+    })
+  },
 }

+ 9 - 2
imcs-ui/src/lang/zh/cuttingTool.js

@@ -78,6 +78,9 @@ export default {
         remark: '备注',
         status: '启用状态',
         cutterCode: '刀具编码',
+        factoryCode: '厂内编号',
+        factoryMaterialCode: '厂内物料号',
+        factoryMaterialDesc: '物料描述'
       }
     },
     // 表单数据名称
@@ -106,8 +109,12 @@ export default {
         cutterTypSubDnc: '车刀子类型',
         cutterTime2:'允许最小刀具寿命',
         cutterPlcBit: '内冷开',
-        nowPosition:'现在位置',
-        targetPosition: '目标设备'
+        thisDeviceName: '所在设备',
+        thisPositionName:'所在位置',
+        targetPosition: '目标设备',
+        factoryCode: '厂内编号',
+        factoryMaterialCode: '厂内物料号',
+        factoryMaterialDesc: '物料描述'
       }
     },
     // 表单验证规则提示信息

+ 2 - 1
imcs-ui/src/lang/zh/lineSide.js

@@ -183,7 +183,8 @@ export default {
 				specification: '规格',
 				storgeNum: '总数量',
 				lockNum: '锁定数量',
-				availableNum: '可用数量'
+				availableNum: '可用数量',
+				storgeName: '库位名称'
 			},
 			// 【库位管理】列表table字段名称
 			locationWare: {

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

@@ -258,6 +258,7 @@ export default {
 			tray: {
 				no: '托盘编码',
 				name: '托盘名称',
+				code: '子盘号',
         materialType: '托盘类型',
         factory: '生产分厂/制造商',
         productionType: '产品分类',

+ 550 - 0
imcs-ui/src/views/zuihou/centralToolMagazine/cutterCategoriesGroup/tab/partNeedGroupCutter/components/CutterGroup.vue

@@ -0,0 +1,550 @@
+<template>
+  <el-dialog
+  	:close-on-click-modal="false"
+  	:close-on-press-escape="false"
+  	:title="title"
+  	:append-to-body="true"
+  	:visible.sync="isVisible"
+  	width="750px"
+  	top="50px"
+  >
+    <el-form ref="form"  :model="customizeCuttingTool" :rules="rules" label-position="right" label-width="180px">
+      <!-- 零件编号 -->
+      <el-form-item label="零件信息:" prop="partsNo">
+      	<el-select v-model="customizeCuttingTool.partsNo" :placeholder='$t("common.pleaseSelect")' style="width: 93%;">
+          <!-- <el-option 
+          :key="index" 
+          :label="item"
+          :value="key"
+           v-for="(item, key, index) in dicts.CUTTING_TOOL_TYPE"
+           /> -->
+           <el-option
+              v-for="item in bomList"
+              :key="item.parts_no"
+              :label="item.name"
+              :value="item.parts_no"
+              :disabled="item.disabled">
+              <span style="float:left; width: 50%;font-size: 16px">{{ item.name }}</span>
+              <span style="float:left; width: 50%;font-size: 16px">{{ item.parts_no }}</span>
+            </el-option>
+      	</el-select>
+      </el-form-item>      
+      <!-- 刀具号-->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolName")+":"' prop="cutterT">
+      	<el-select v-model="customizeCuttingTool.cutterT" :placeholder='$t("common.pleaseSelect")' style="width: 93%;">
+           <el-option
+              v-for="item in cutterList"
+              :key="item.cuttingToolNo"
+              :label="item.cuttingToolName"
+              :value="item.cuttingToolNo"
+              :disabled="item.disabled">
+              <span style="float:left; width: 30%;font-size: 16px">{{ item.cuttingToolNo }}</span>
+              <span style="float:left; width: 70%;font-size: 16px">{{ item.cuttingToolName }}</span>
+            </el-option>
+      	</el-select>
+      </el-form-item>
+      <el-form-item  label="使用顺序:" prop="cutterSort">
+        <el-input-number v-model="customizeCuttingTool.cutterSort" :step="1"></el-input-number>
+      </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button plain type="warning" @click="isVisible = 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>
+	import classScheduleMgrApi from "@/api/modelingCenter/cutterCategoriesGroup"
+	import equipmentMgrApi from "@/api/resourceProductMgr/equipmentMgr"	
+	import toolbarApi from "@/api/systemMgr/toolbar"
+  import stationMgrApi from "@/api/machiningClient/stationMgr"
+  import db from "@/utils/localstorage";
+  import {Base64} from 'js-base64';
+	import qs from 'qs'
+  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(),
+      queryMachineParams: initQueryParams({}),
+      screenWidth: 0,
+      width: this.initWidth(),
+      confirmDisabled: false,
+      deviceData: [],
+      cutToolDeviceList:[],
+      cutToolStorgeList: [{"name":"请选择","pointId":""}],
+		  CutToolShelfList: [],
+      operation: true,
+      cutGoalNoIsShow: false,
+      dialog: {
+        isVisible: false,
+        title: ""
+      },
+      dicts:{
+        CUTTING_TOOL_TYPE: {},
+        CUTTING_TOOL_CATEGORY: {},
+      },
+      dssd:{
+        CUTTING_TOOL_TYPE: {},
+        CUTTING_TOOL_CATEGORY: {},
+      },
+      roles: [],
+      rules: {
+        partsNo: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        cutterT: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ]
+      },
+      docDataList: [{
+        doc: 'HD',
+        label: '出库'
+      }, {
+        doc: 'FDJ',
+        label: '放刀库'
+      }],
+      bomList : [],
+      cutterList: []
+    }
+  },
+  // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
+  created() {
+    console.log("edit")
+    this.initBom();
+    this.initCutter();
+  },
+  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
+  	},
+    isVisible: {
+      get () {
+        return this.dialogVisible
+      },
+      set () {
+        this.close()
+        this.reset()
+      }
+    }
+  },
+  mounted () {
+    window.onresize = () => {
+      return (() => {
+        this.width = this.initWidth()
+      })()
+    }
+  },
+  methods: {
+    initBom(){
+      classScheduleMgrApi.getAllbomList({})
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+            this.bomList = res.data.data
+            // 添加表头
+            const newItem = { name: '零件名', parts_no: '图号' , disabled: true}
+            this.bomList.unshift(newItem);
+          }
+        }).finally(() => {
+            return true
+        })
+    },
+    initCutter(){
+      classScheduleMgrApi.getAllCutterList({})
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+            this.cutterList = res.data
+            // 添加表头
+            const newItem = { cuttingToolNo: '刀具号', cuttingToolName: '刀具名' ,disabled: true}
+            this.cutterList.unshift(newItem);
+          }
+        }).finally(() => {
+            return true
+        })
+
+    },
+	  findDeviceList () {
+      equipmentMgrApi.getList({})
+        .then((response) => {
+          const res = response.data;
+          if (res.isSuccess) {
+            // 赋值            
+            this.cutToolDeviceList = res.data.filter(item=> {				
+              return item.modeSpecification!=null || item.name.indexOf("刀具") > -1
+            });	
+            }         
+          })
+          .finally();	     
+	    },
+  	// 【新增-修改】弹出框,关闭
+  	editClose () {
+      this.dialog.isVisible = false
+    },
+    add () {
+      this.$refs.edit.type = "add"
+      this.dialog.title = this.$t("prepare.common.selectEq")
+      this.dialog.isVisible = true
+    },
+    initCustomizeCuttingTool () {
+      return {
+        cutterSort : 0,
+        id: '',
+        cuttingToolName: '',
+        cuttingToolType: {
+            key: ""
+        },
+        cuttingToolCategory: {
+            key: ""
+        },
+        deviceId: '',
+        resourceIdList: [],
+        cutterT: null,
+        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'
+      }
+    },
+    setTenant (val, dicts) {
+      console.log("弹框写入val"+ val +"dicts:"+ dicts);
+      this.operation = true
+    	if(val){
+        this.operation = false
+    		this.customizeCuttingTool = { ...val }
+    	}
+      // 字典表
+      this.dicts = dicts
+    },
+    close () {
+      this.$emit('close')
+    },
+    reset () {
+      // 先清除校验,再清除表单,不然有奇怪的bug
+      this.$refs.form.clearValidate()
+      this.$refs.form.resetFields()
+      this.customizeCuttingTool = this.initCustomizeCuttingTool()
+      // 清空上传附件
+      this.cuttingToolPictureFileList = []
+      this.cuttingToolInstallPictureFileList = []
+    },
+    submitForm () {
+      console.log("提交")
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.confirmDisabled = true
+          if(this.operation){
+            this.save()
+          }else {
+            this.update()
+          }
+        } else {
+          return false
+        }
+      })
+    },
+    save () {
+  	  console.log(this.customizeCuttingTool)
+      classScheduleMgrApi.saveNeedCutter(this.customizeCuttingTool)
+        .then((response) => {
+          const res = response.data
+          if (res.isSuccess) {
+            this.isVisible = false
+            this.$message({
+              message: this.$t('tips.createSuccess'),
+              type: 'success'
+            })
+            // 通知列表
+	          this.$emit("success");
+	          // 通知列表-并关闭弹出框
+	          this.$emit("close");
+          }
+        }).finally(() => {
+          this.confirmDisabled = false
+          return true
+        })
+    },
+    update () {
+      // 判断是否为线外,线外通过上下料站就可以了
+      if(this.customizeCuttingTool.cutterT>0 || this.customizeCuttingTool.storgeName !==null){
+        let params = {"brandName":this.customizeCuttingTool.cutterName,
+              "brandNo":this.customizeCuttingTool.cutterT,
+              "goodsId":this.customizeCuttingTool.goodsId,
+              "start": "CT_"+ this.customizeCuttingTool.start, 
+              "cutStartNo":this.customizeCuttingTool.cutterT, 
+              "goalType":this.customizeCuttingTool.targetPosition, 
+              "goal":this.customizeCuttingTool.targetPointId, 
+              "cutGoalNo":this.customizeCuttingTool.cutGoalNo}
+
+          stationMgrApi.addCutToolTask(params).then((res) => {
+                res = res.data;
+                if (res.isSuccess) {
+                    this.loading = false
+                    this.$message({
+                      message: "成功",
+                      type: 'success'
+                    })		  
+                    this.$emit("success");
+                    //通知列表-并关闭弹出框
+                    this.$emit("close");
+                }
+              }).catch((e)=>{
+              console.log("错误"+ e)
+            }).finally(()=>{
+              this.confirmDisabled = false
+              this.loading = false	
+          });
+      }else {
+        this.confirmDisabled = false
+        this.$message({
+            message: "起点为线外,请通过上下料站执行",
+            type: 'warning'
+          })
+      }
+
+    },
+    // 文件列表移除文件时的钩子
+    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 = ''
+    },
+    choose(val){
+			if(this.customizeCuttingTool.start!=null || this.customizeCuttingTool.start!=""){
+				//判断起始设备和目的设备是否一致 scope.row.cutterT>0 ? scope.row.cutterT: scope.row.storgeName
+				let params = {"pointId": this.customizeCuttingTool.start.replace("CT_","")}
+        toolbarApi.getCutToolDevice(qs.stringify(params)).then(response=>{
+          this.cutToolStorgeList = [{"name":"请选择","pointId":""}]
+					this.CutToolShelfList = []
+          this.$set(this.customizeCuttingTool, 'targetPointId', null);
+          this.$set(this.customizeCuttingTool, 'cutGoalNo', null);
+
+          const res = response.data
+          if(res.data == null){
+            this.$message({
+                          message: "没有查询到设备",
+                          type: 'warning'
+                    })
+            return false
+				  }
+
+          if(res.isSuccess){
+            let item = this.cutToolDeviceList.filter(item=>item.code==val); 
+            let resourceId = res.data.resourceId					
+            if(resourceId == item[0].id){
+              
+					    this.cutToolStorgeList = [];
+              this.$message({
+                          message: "起始设备和目的设备不能一样",
+                          type: 'warning'
+                    })
+              return false
+            } 
+                      
+            console.log("获取目的地所有可用的站点信息")
+            let params2 = {"code":val,"cutterT":this.customizeCuttingTool.cutterT}
+            toolbarApi.cutToolPositionList(params2).then(response2=>{
+              const res2 = response2.data
+              if(res2.isSuccess){
+                let tempList = res2.data
+                if(tempList.length==0){
+                    this.$message({
+                          message: "目的点位不满足,确认目的点位是否为空",
+                          type: 'warning'
+                    })
+                }else {
+                  this.cutToolStorgeList = tempList.map(item=>{
+                    item.pointId = "CT_"+item.pointId
+                    return item;
+                  })
+                }
+                //console.log(this.cutToolStorgeList)
+              }
+            }).finally(()=>{
+              return true		
+            })
+                      
+            console.log("查询刀架号")
+            toolbarApi.getCutToolShelfDevice(params2).then(response2=>{
+              const res3 = response2.data
+              if(res3.isSuccess){
+                if(res3.msg == "1000"){
+                  this.cutGoalNoIsShow = false
+                }else {
+                  this.cutGoalNoIsShow = true
+                  this.CutToolShelfList = res3.data
+                }
+              }
+
+            }).finally(()=>{
+              return true		
+            })
+
+
+          }
+			  }).finally(()=>{
+				  return true		
+			  })
+			}			   
+		},
+  }
+}
+</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;
+}
+.custom-dropdown .el-select-dropdown__list {
+  display: flex; /* 或者使用 grid, table 等布局方式 */
+  flex-direction: column; /* 对于表格布局,可能需要调整 */
+}
+.custom-dropdown .el-select-dropdown__item {
+  display: flex; /* 或者使用 grid, table 等布局方式 */
+  justify-content: space-between; /* 确保内容均匀分布 */
+}
+</style>

+ 0 - 225
imcs-ui/src/views/zuihou/centralToolMagazine/cutterCategoriesGroup/tab/partNeedGroupCutter/components/CutterTestCourse.vue

@@ -1,225 +0,0 @@
-<template>
-  <div class="filter-container">
-    <el-drawer
-        :visible.sync="localVisible"
-        :size="drawersize"
-        @close="handleClose">
-
-        <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
-                      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>
-
-<script>
-import { initDicts, initQueryParams } from '@/utils/commons'
-
-// 读取机外对刀仪数据获取对刀仪参数
-import classScheduleMgrApi from "@/api/modelingCenter/cutterTestData"
-
-export default {
-  name: "DrawerComponent",
-  props: {
-    visible: {
-      type: Boolean,
-      default: false
-    },
-  },
-  data() {
-    return {
-      drawersize: "50%",
-      direction: "rtl",
-      localVisible: this.visible,
-      form: {
-        name: '',
-        // 其他表单数据
-      },
-      queryParams: initQueryParams({}),
-      isReadError: false, 
-      parameterControl:{
-        toolSetToCheckParameter : ''
-      }
-    };
-  },
-  watch: {
-    visible(newVal) {
-      this.localVisible = newVal;
-    },
-    localVisible(newVal) {
-      this.$emit('update:visible', newVal);
-    }
-  },
-  methods: {
-    handleClose() {
-      this.localVisible = false;
-      this.$emit('closed');
-    },
-    modifyPicture(){
-    },
-    // 开启定时
-    startTimer() {
-      this.parameterControl = {}
-
-      // 设置定时器,在4000毫秒后开始执行,并且确保立即执行一次
-      setTimeout(() => {
-        this.timerFunction();
-      }, 500);
-      this.intervalId = setInterval(this.timerFunction, 5000);
-
-		},
-    // 关闭定时
-		stopTimer() {
-			if (this.intervalId) {
-				clearInterval(this.intervalId);
-				this.intervalId = null;
-        this.parameterControl = {}
-			}
-		},
-    // 定时的方法体
-		timerFunction() {
-			console.log('根据刀具类型,查询需要比对的参数');
-      classScheduleMgrApi.getCutterByRfid({ }).then(response => {
-	        if (response.status == 200) {
-	          this.isReadError = false;
-            console.log(response.data.data)
-            var datada = response.data.data;
-            this.parameterControl = datada
-            this.$emit('custom-event');
-	        }else {
-            if(this.isReadError == false){
-              this.$message({
-                message: response.msg,
-                type: "error"
-              })
-            }
-            this.isReadError = true;
-          }
-	      }).catch(re =>{
-        });
-		}
-
-  }, 
-}
-</script>
-
-<style>
-</style>
-

+ 178 - 48
imcs-ui/src/views/zuihou/centralToolMagazine/cutterCategoriesGroup/tab/partNeedGroupCutter/components/Edit.vue

@@ -17,11 +17,23 @@
       <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolName")+":"' prop="cutterName">
         <el-input v-model.trim="customizeCuttingTool.cutterName"  :label='$t("common.pleaseEnter")' maxlength="128" style="width: 93%;" :disabled="true"></el-input>
       </el-form-item>
-      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.nowPosition")+":"' prop="newPosition">
-        <el-input v-model.trim="customizeCuttingTool.newPosition"  :label='$t("common.pleaseEnter")' maxlength="128" style="width: 93%;" :disabled="true"></el-input>
+      <!-- 当前设备 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.thisDeviceName")+":"' prop="thisDeviceName">
+        <el-input v-model.trim="customizeCuttingTool.thisDeviceName"  :label='$t("common.pleaseEnter")' maxlength="128" style="width: 93%;" :disabled="true"></el-input>
       </el-form-item>
-      <!-- 刀具操作-->
-      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.targetPosition")+":"' prop="targetPosition">
+      <!-- 当前位置 -->
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.thisPositionName")+":"' prop="thisPositionName">
+        <el-input v-model.trim="customizeCuttingTool.thisPositionName"  :label='$t("common.pleaseEnter")' maxlength="128" style="width: 93%;" :disabled="true"></el-input>
+      </el-form-item>
+      <!-- 起始位置在机床 -->
+      <el-form-item v-if ="this.isjc"  label="目的位置:" prop="doc">
+          <el-select v-model="customizeCuttingTool.doc" style="width: 93%;">								
+            <el-option v-for="dosData in docDataList"  :key="dosData.doc" :label="dosData.label" :value="dosData.doc"
+            ></el-option>		
+          </el-select>
+      </el-form-item>
+      <!-- 起始位置不在机床 -->
+      <el-form-item v-if ="!this.isjc" :label='$t("cuttingTool.form.customizeCuttingtool.targetPosition")+":"' prop="targetPosition">
       	<el-select v-model="customizeCuttingTool.targetPosition" :placeholder='$t("common.pleaseSelect")' @change="choose" style="width: 93%;">
 					<el-option 
            v-for="item in cutToolDeviceList"
@@ -31,13 +43,17 @@
             </el-option>		
       	</el-select>
       </el-form-item>
-      <el-form-item label="目的位:" prop="goal">
-        <el-tooltip placement="top">
-                    <el-select v-model="customizeCuttingTool.goal" placeholder="选择目标位">								
+      <el-form-item v-if ="!this.isjc" label="目的位:" prop="targetPointId">
+          <el-select v-model="customizeCuttingTool.targetPointId" style="width: 93%;">								
             <el-option v-for="position in cutToolStorgeList" :label="position.name" :value="position.pointId" :key="position.pointId"></el-option>		
-            </el-select>
-          </el-tooltip>
+          </el-select>
+      </el-form-item>
+      <el-form-item v-if ="this.cutGoalNoIsShow && !this.isjc"  label="目的刀位号:" prop="cutGoalNo">
+          <el-select v-model="customizeCuttingTool.cutGoalNo" style="width: 93%;">								
+            <el-option v-for="cuttoolshelf in CutToolShelfList" :label="cuttoolshelf" :value="cuttoolshelf" :key="cuttoolshelf"></el-option>		
+          </el-select>
       </el-form-item>
+
     </el-form>
     <div slot="footer" class="dialog-footer">
       <el-button plain type="warning" @click="isVisible = false">{{ $t('common.cancel') }}</el-button>
@@ -51,6 +67,7 @@
 	import classScheduleMgrApi from "@/api/modelingCenter/cutterCategoriesGroup"
 	import equipmentMgrApi from "@/api/resourceProductMgr/equipmentMgr"	
 	import toolbarApi from "@/api/systemMgr/toolbar"
+  import stationMgrApi from "@/api/machiningClient/stationMgr"
   import db from "@/utils/localstorage";
   import {Base64} from 'js-base64';
 	import qs from 'qs'
@@ -70,7 +87,6 @@ export default {
   },
   data () {
     return {
-
       type: 'add',
       // 附件上传
       action: `${process.env.VUE_APP_BASE_API}/file/attachment/upload`,
@@ -94,6 +110,9 @@ export default {
       deviceData: [],
       cutToolDeviceList:[],
       cutToolStorgeList: [{"name":"请选择","pointId":""}],
+		  CutToolShelfList: [],
+      isjc: true,
+      cutGoalNoIsShow: false,
       dialog: {
         isVisible: false,
         title: ""
@@ -110,8 +129,24 @@ export default {
       rules: {
         targetPosition: [
         	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        targetPointId: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        cutGoalNo: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
+        ],
+        doc: [
+        	{ required: true, message: this.$t("rules.require"), trigger: 'change' },
         ]
-      }
+      },
+      docDataList: [{
+        doc: 'HD',
+        label: '出库'
+      }, {
+        doc: 'FDJ',
+        label: '放刀库'
+      }]
     }
   },
   // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
@@ -204,10 +239,28 @@ export default {
       }
     },
     setTenant (val, dicts) {
-      console.log("弹框写入dicts:",dicts);
+      console.log("弹框写入val"+ val +"dicts:"+ dicts);
     	if(val){
     		this.customizeCuttingTool = { ...val }
-        this.customizeCuttingTool.newPosition = val.deviceName!=null ? val: val.storgeName!=null? '刀库' : '线外'
+        this.$set(this.customizeCuttingTool, 'cutGoalNo', null);
+        this.$set(this.customizeCuttingTool, 'doc', null);
+        if(val.dkPointId!=null  ){
+          this.isjc = false
+          this.$set(this.customizeCuttingTool, 'start', val.dkPointId);
+          this.$set(this.customizeCuttingTool, 'thisDeviceCode', val.dkDeviceCode);
+          this.$set(this.customizeCuttingTool, 'thisDeviceName', val.dkDeviceName);
+          this.$set(this.customizeCuttingTool, 'thisPositionName', val.dkStorgeName);
+        }else if (val.jcPointId) {
+          this.isjc = true
+          this.customizeCuttingTool.start = val.jcPointId;
+          this.$set(this.customizeCuttingTool, 'thisDeviceCode', val.jcDeviceCode);
+          this.$set(this.customizeCuttingTool, 'thisDeviceName', val.jcDeviceName);
+          this.$set(this.customizeCuttingTool, 'thisPositionName', val.jcPointName);
+        }else {
+          this.isjc = false
+          this.customizeCuttingTool.start = ''
+          this.$set(this.customizeCuttingTool, 'thisPositionName', '线外');
+        }
     	}
       // 字典表
       this.dicts = dicts
@@ -229,13 +282,12 @@ export default {
       this.$refs.form.validate((valid) => {
         if (valid) {
           this.confirmDisabled = true
-          this.update()
-          // 添加数据
-          // if (this.type === 'add') {
-          //   this.save()
-          // } else {
-          //   this.update()
-          // }
+          if(this.isjc){
+            this.updateJc()
+          }else {
+            this.update()
+          }
+
         } else {
           return false
         }
@@ -262,28 +314,75 @@ export default {
           return true
         })
     },
-    update () {
-      // 判断是否为线外,线外通过上下料站就可以了
+    updateJc () {
+
       if(this.customizeCuttingTool.cutterNo>0 || this.customizeCuttingTool.storgeName !==null){
-        // 调用接口
-        classScheduleMgrApi.partNeedCutterUpdate(this.customizeCuttingTool)
-          .then((response) => {
-            const res = response.data
-            if (res.isSuccess) {
-              this.isVisible = false
-              this.$message({
-                message: this.$t('tips.updateSuccess'),
-                type: 'success'
-              })
-              // 通知列表
-              this.$emit("success");
-              // 通知列表-并关闭弹出框
-              this.$emit("close");
+        let params = {"brandName":this.customizeCuttingTool.cutterName,
+              "brandNo":this.customizeCuttingTool.cutterT,
+              "goodsId":this.customizeCuttingTool.goodsId,
+              "start": "CT_"+ this.customizeCuttingTool.start, 
+              "cutStartNo":this.customizeCuttingTool.cutterNo, 
+              "startCode": this.customizeCuttingTool.thisDeviceCode,
+              "goalType":this.customizeCuttingTool.targetPosition, 
+              "goal":this.customizeCuttingTool.targetPointId, 
+              "cutGoalNo":this.customizeCuttingTool.cutGoalNo, 
+              "doc":this.customizeCuttingTool.doc
             }
-          }).finally(() => {
-            this.confirmDisabled = false
-            return true
+          stationMgrApi.setWriteTakeCutter(params).then((res) => {
+                res = res.data;
+                if (res.isSuccess) {
+                    this.loading = false		  
+                    this.$emit("success");
+                    //通知列表-并关闭弹出框
+                    this.$emit("close");
+                }
+              }).catch((e)=>{
+                console.log("错误"+ e)
+            }).finally(()=>{
+              this.confirmDisabled = false
+              this.loading = false	
+          });
+            
+      }else {
+        this.confirmDisabled = false
+        this.loading = false	
+        this.$message({
+            message: "起点为线外,请通过上下料站执行",
+            type: 'warning'
           })
+      }
+    },
+    update () {
+      // 判断是否为线外,线外通过上下料站就可以了
+      if(this.customizeCuttingTool.cutterNo>0 || this.customizeCuttingTool.storgeName !==null){
+         let aa = this.customizeCuttingTool.cutGoalNo == null? 0 : this.customizeCuttingTool.cutGoalNo
+        let params = {"brandName":this.customizeCuttingTool.cutterName,
+              "brandNo":this.customizeCuttingTool.cutterT,
+              "goodsId":this.customizeCuttingTool.goodsId,
+              "start": "CT_"+ this.customizeCuttingTool.start, 
+              "cutStartNo":this.customizeCuttingTool.cutterNo, 
+              "goalType":this.customizeCuttingTool.targetPosition, 
+              "goal":this.customizeCuttingTool.targetPointId, 
+              "cutGoalNo": aa}
+
+          stationMgrApi.addCutToolTask(params).then((res) => {
+                res = res.data;
+                if (res.isSuccess) {
+                    this.loading = false
+                    this.$message({
+                      message: "成功",
+                      type: 'success'
+                    })		  
+                    this.$emit("success");
+                    //通知列表-并关闭弹出框
+                    this.$emit("close");
+                }
+              }).catch((e)=>{
+              console.log("错误"+ e)
+            }).finally(()=>{
+              this.confirmDisabled = false
+              this.loading = false	
+          });
       }else {
         this.confirmDisabled = false
         this.$message({
@@ -376,6 +475,11 @@ export default {
 				//判断起始设备和目的设备是否一致 scope.row.cutterNo>0 ? scope.row.cutterNo: scope.row.storgeName
 				let params = {"pointId": this.customizeCuttingTool.start.replace("CT_","")}
         toolbarApi.getCutToolDevice(qs.stringify(params)).then(response=>{
+          this.cutToolStorgeList = [{"name":"请选择","pointId":""}]
+					this.CutToolShelfList = []
+          this.$set(this.customizeCuttingTool, 'targetPointId', null);
+          this.$set(this.customizeCuttingTool, 'cutGoalNo', null);
+
           const res = response.data
           if(res.data == null){
             this.$message({
@@ -389,6 +493,8 @@ export default {
             let item = this.cutToolDeviceList.filter(item=>item.code==val); 
             let resourceId = res.data.resourceId					
             if(resourceId == item[0].id){
+              
+					    this.cutToolStorgeList = [];
               this.$message({
                           message: "起始设备和目的设备不能一样",
                           type: 'warning'
@@ -396,22 +502,46 @@ export default {
               return false
             } 
                       
-            //
+            console.log("获取目的地所有可用的站点信息")
             let params2 = {"code":val,"cutterNo":this.customizeCuttingTool.cutterT}
             toolbarApi.cutToolPositionList(params2).then(response2=>{
               const res2 = response2.data
-              this.cutToolStorgeList = [{"name":"请选择","pointId":""}]
               if(res2.isSuccess){
                 let tempList = res2.data
-                this.cutToolStorgeList = tempList.map(item=>{
-                  item.pointId = "CT_"+item.pointId
-                  return item;
-                })
+                if(tempList.length==0){
+                    this.$message({
+                          message: "目的点位不满足,确认目的点位是否为空",
+                          type: 'warning'
+                    })
+                }else {
+                  this.cutToolStorgeList = tempList.map(item=>{
+                    item.pointId = "CT_"+item.pointId
+                    return item;
+                  })
+                }
                 //console.log(this.cutToolStorgeList)
               }
-              }).finally(()=>{
-                return true		
-              })
+            }).finally(()=>{
+              return true		
+            })
+                      
+            console.log("查询刀架号")
+            toolbarApi.getCutToolShelfDevice(params2).then(response2=>{
+              const res3 = response2.data
+              if(res3.isSuccess){
+                if(res3.msg == "1000"){
+                  this.cutGoalNoIsShow = false
+                }else {
+                  this.cutGoalNoIsShow = true
+                  this.CutToolShelfList = res3.data
+                }
+              }
+
+            }).finally(()=>{
+              return true		
+            })
+
+
           }
 			  }).finally(()=>{
 				  return true		

+ 0 - 486
imcs-ui/src/views/zuihou/centralToolMagazine/cutterCategoriesGroup/tab/partNeedGroupCutter/components/addPar.vue

@@ -1,486 +0,0 @@
-<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>

+ 43 - 19
imcs-ui/src/views/zuihou/centralToolMagazine/cutterCategoriesGroup/tab/partNeedGroupCutter/index.vue

@@ -2,24 +2,24 @@
   <div class="app-container">
     <!-- 搜索模块 -->
     <div class="filter-container">
-      <!-- <span>
-        <span>刀具名:</span>
+      <span>
+        <span>零件编号:</span>
         <el-input
-          v-model="queryParams.model.cutterName"
+          v-model="queryParams.model.partsNo"
           :placeholder="$t('common.pleaseEnter')"
           style="width: 150px"
           size="medium"
         />
       </span>
       <span>
-        <span>刀:</span>
+        <span>刀具名:</span>
         <el-input
-          v-model="queryParams.model.cutterT"
+          v-model="queryParams.model.cutterName"
           :placeholder="$t('common.pleaseEnter')"
           style="width: 150px"
           size="medium"
         />
-      </span> -->
+      </span>
       <!-- <span style="margin-left: 15px">
         <span>刀具类型:</span>
         <el-select v-model="queryParams.model.cutterTyp" clearable :placeholder="$t('common.pleaseEnter')">
@@ -65,6 +65,7 @@
 	      	</el-button>
 	      	<el-button type="primary" icon="el-icon-thumb" size="medium" v-has-permission="['classSchedule:submitAudit']" @click="updateStatus('1')">{{$t("common.audio.addAudio")}}</el-button>
 	      	<el-button type="primary" icon="el-icon-suitcase" size="medium" v-has-permission="['classSchedule:audit']" @click="audioBtn()">{{$t("common.audio.audio")}}</el-button> -->
+			<el-button type="primary" icon="el-icon-plus" size="medium" v-has-permission="['classSchedule:add']" @click="add">{{ $t("common.add") }}</el-button>
 			<el-button  type="primary" icon="el-icon-c-scale-to-original" size="medium" v-has-permission="['classSchedule:audit']" @click="openDrawerWin()">导入零件刀具需求</el-button>
 		</el-col>
     </el-row>
@@ -90,21 +91,22 @@
 		<el-table-column prop="bomName" label='零件名称' width="200px"></el-table-column>
 		<el-table-column prop="partsNo" label='零件编号' width="160px"></el-table-column>
 		<el-table-column prop="drawingNo" label='图号' width="160px"></el-table-column>
+		<el-table-column prop="cutterT" label='刀号' width="80px"></el-table-column>
+		<el-table-column prop="cutterName" label='刀具名' width="260px"></el-table-column>
+		<el-table-column prop="needCutterLife" label='所需刀具寿命' width="110px"></el-table-column>
 		<el-table-column prop="priority" label='优先级' width="80px"></el-table-column>
-		<el-table-column prop="cutterT" label='刀号' width="100px"></el-table-column>
-		<el-table-column prop="cutterName" label='刀具名' width="220px"></el-table-column>
 		<el-table-column prop="cuttingToolType" label='刀具类型' width="100px">
 			<template slot-scope="scope">
 				{{ translateCode(scope.row.cuttingToolType) }}
 			</template>
 		</el-table-column>
-      <el-table-column prop="cutterSort" label='使用顺序' width="80px"></el-table-column>
-      <el-table-column prop="deviceName" label='设备' width="260px">
+      <el-table-column prop="deviceName" label='所在设备' width="260px">
 			<template slot-scope="scope">{{scope.row.dkPointId!=null ? scope.row.dkDeviceName: scope.row.jcPointId!=null? scope.row.jcDeviceName : '线外' }}</template>
 	  </el-table-column>
-      <el-table-column prop="status" label='位置'>
+      <el-table-column prop="status" label='位置' width="160px">
 		<template slot-scope="scope">{{scope.row.dkPointId!=null ? scope.row.dkStorgeName: scope.row.jcPointId!=null? scope.row.jcPointName : '线外' }}</template>
 	  </el-table-column>
+      <el-table-column prop="cutterSort" label='使用顺序' width="80px"></el-table-column>
       <!-- 操作 -->
       <el-table-column
         :label="$t('table.operation')"
@@ -114,7 +116,7 @@
         width="80px"
       >
         <template slot-scope="{ row }">
-          <el-tooltip  class="item" content='修改' effect="dark" placement="top-start">
+          <el-tooltip  class="item" content='修改' effect="dark" placement="top-start" v-if=" row.dkPointId!=null || row.jcPointId!=null" >
             <i
               class="el-icon-edit table-operation"
               style="color: #2db7f5;"
@@ -133,6 +135,16 @@
     />
 
 	<!--新增修改 -->
+	<div>
+	  <CutterGroup
+		ref="needCutters"
+		:dialog-visible="needCutters.isVisible"
+		:title="needCutters.title"
+		@close="editCloseCutters"
+		@success="editSuccessCutters"
+	  />
+	</div>
+	<!-- 变更目的位置 -->
 	<div>
 	  <edit
 		ref="edit"
@@ -143,6 +155,8 @@
 	  />
 	</div>
 
+	
+
   </div>
 
 </template>
@@ -156,12 +170,12 @@
 	//分页
 	import Pagination from "@/components/Pagination"
 	import Edit from "./components/Edit"
+	import  CutterGroup from './components/CutterGroup'
 
 	import { convertEnum } from '@/utils/utils'
-
 	export default {
 	  name: "WarehouseTypeMgr",
-	  components: { Pagination , Edit},
+	  components: { Pagination , Edit, CutterGroup},
 	  props: {
 	  },
 	  data () {
@@ -280,6 +294,10 @@
 	      dialog: {
 	        isVisible: false,
 	        title: ""
+	      },
+	      needCutters: {
+	        isVisible: false,
+	        title: ""
 	      },
 		  cutterTtest:{
 	        isVisible: true,
@@ -507,6 +525,12 @@
 	    editSuccess () {
 	      this.search()
 	    },
+	    editCloseCutters () {
+	      this.needCutters.isVisible = false
+	    },
+	    editSuccessCutters () {
+	      this.search()
+	    },
 	    onSelectChange (selection) {
 	      this.selection = selection
 	    },
@@ -522,10 +546,10 @@
 	      this.search()
 	    },
 	    add () {
-	      this.$refs.edit.type = "add"
-	      this.$refs.edit.setTenant(false, this.dicts)
-	      this.dialog.title = this.$t("common.add")
-	      this.dialog.isVisible = true
+	      this.$refs.needCutters.type = "add"
+	      this.$refs.needCutters.setTenant(false, this.dicts)
+	      this.needCutters.title = this.$t("common.add")
+	      this.needCutters.isVisible = true
 	    },
 	    singleDelete (row) {
 	      this.$refs.table.clearSelection()
@@ -606,7 +630,7 @@
 	    	this.edit(this.selection[0]);
 	    },
 	    edit (row) {
-	      if (row.readonly) {
+	      if (row.dkPointId ==null && row.jcPointId == null) {
 	        this.$message({
 	          message: this.$t("tips.systemData"),
 	          type: "warning"

+ 9 - 8
imcs-ui/src/views/zuihou/lineSideLibrary/lineSideProduct/Index.vue

@@ -56,18 +56,19 @@
 	      </template>
       </el-table-column>
       <el-table-column align="center" type="selection" width="50" :reserve-selection="true" />
-      <!-- 产品名称 -->
-      <el-table-column prop="brandName" :label='$t("lineSide.table.sideProduct.brandName")' :show-overflow-tooltip="true"></el-table-column>
-      <!-- 产品编号 -->
+ 		<!-- 产品编号 -->
       <el-table-column prop="brandNo" :label='$t("lineSide.table.sideProduct.brandNo")' align="center" width="120px"></el-table-column>
-      <!-- 规格 -->
-      <el-table-column prop="specification" :label='$t("lineSide.table.sideProduct.specification")' width="180px"></el-table-column>
+      <!-- 产品名称 -->
+      <el-table-column prop="brandName" :label='$t("lineSide.table.sideProduct.brandName")' :show-overflow-tooltip="true"  width="300px"></el-table-column>
+      <el-table-column prop="storgeName" :label='$t("lineSide.table.sideProduct.storgeName")' align="center" width="200px"></el-table-column>
+	  <!-- 规格 -->
+      <el-table-column prop="specification" :label='$t("lineSide.table.sideProduct.specification")'  width="300px"></el-table-column>
       <!-- 总数量 -->
-      <el-table-column prop="stockNum" :label='$t("lineSide.table.sideProduct.storgeNum")' width="180px"></el-table-column>
+      <el-table-column prop="stockNum" :label='$t("lineSide.table.sideProduct.storgeNum")'></el-table-column>
       <!-- 锁定数量 -->
-      <el-table-column prop="lockNum" :label='$t("lineSide.table.sideProduct.lockNum")' width="180px"></el-table-column>
+      <el-table-column prop="lockNum" :label='$t("lineSide.table.sideProduct.lockNum")' ></el-table-column>
       <!-- 可用数量 -->
-      <el-table-column prop="availableNum" :label='$t("lineSide.table.sideProduct.availableNum")' width="180px"></el-table-column>
+      <el-table-column prop="availableNum" :label='$t("lineSide.table.sideProduct.availableNum")' ></el-table-column>
     </el-table>
     <pagination
       v-show="tableData.total > 0"

+ 2 - 2
imcs-ui/src/views/zuihou/machiningClient/cutToolTasks/Index.vue

@@ -271,7 +271,7 @@ export default {
     },
   },
   mounted() {
-    setInterval(this.getStation, 2000);
+    // setInterval(this.getStation, 2000);
     this.timerTask()   
   },
   methods: {
@@ -331,7 +331,7 @@ export default {
       this.getStation()
     },
     getStation() {     
-      console.log("---"+ this.options)       
+      console.log("--查询-"+ this.options)       
       stationMgrApi.getCutToolStation({ zoneCode:this.currentStationCode })
         .then((res) => {          
           res = res.data;

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

@@ -8,7 +8,7 @@
   	width="750px"
   	top="50px"
   >
-    <el-form ref="form" :disabled="formDisabled" :model="customizeCuttingTool" :rules="rules" label-position="right" label-width="100px">
+    <el-form ref="form" :disabled="formDisabled" :model="customizeCuttingTool" :rules="rules" label-position="right" label-width="110px">
       <!-- 刀具编号 -->
       <el-form-item  :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolNo")+":"' prop="cuttingToolNo">
         <el-input-number :disabled = "this.cutterTDisabled" v-model="customizeCuttingTool.cuttingToolNo" :min="1" :max="1200"></el-input-number>
@@ -17,10 +17,6 @@
       <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolName")+":"' prop="cuttingToolName">
         <el-input v-model.trim="customizeCuttingTool.cuttingToolName"  :label='$t("common.pleaseEnter")' maxlength="128" style="width: 93%;"></el-input>
       </el-form-item>
-      <!-- 刀具规格 -->
-      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.specifications")+":"' prop="specifications">
-        <el-input v-model.trim="customizeCuttingTool.specifications"  :label='$t("common.pleaseEnter")' maxlength="255" style="width: 93%;"></el-input>
-      </el-form-item>
       <!-- 刀具类型-->
       <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolType")+":"' prop="cuttingToolType">
       	<el-select v-model="customizeCuttingTool.cuttingToolType.key" :placeholder='$t("common.pleaseSelect")' style="width: 93%;">
@@ -42,15 +38,21 @@
             </el-option>
       	</el-select>
       </el-form-item>
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.factoryMaterialCode")+":"' prop="factoryMaterialCode">
+        <el-input placeholder = "多个用分号’;‘隔开" v-model.trim="customizeCuttingTool.factoryMaterialCode"  :label='$t("common.pleaseEnter")' maxlength="255" style="width: 93%;"></el-input>
+      </el-form-item>
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.factoryCode")+":"' prop="factoryCode">
+        <el-input placeholder = "多个用分号’;‘隔开" v-model.trim="customizeCuttingTool.factoryCode"  :label='$t("common.pleaseEnter")' maxlength="255" style="width: 93%;"></el-input>
+      </el-form-item>
       <!-- 刀位号 -->
-      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterNo")+":"' prop="cutterNo">
+      <!-- <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cutterNo")+":"' prop="cutterNo">
       	<el-input-number v-model="customizeCuttingTool.cutterNo" :min="0"></el-input-number>
       </el-form-item>      
       <el-form-item  :label='$t("cuttingTool.form.customizeCuttingtool.deviceId")+":"' prop="deviceId" >        
       	<el-select v-model="customizeCuttingTool.deviceId" :placeholder='$t("common.pleaseSelect")' style="width: 50%;" >
           <el-option :key="item.name" :label="item.name" :value="item.id" v-for="(item, index) in deviceData.records" />
       	</el-select>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.cuttingToolPicture")+":"' prop="cuttingToolPicture">
         <el-upload
           class="upload-demo"
@@ -98,8 +100,8 @@
         </div>
       </el-form-item>
       <!-- 刀具组刀参数-->
-      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.toolSetToCheckParameter")+":"' prop="toolSetToCheckParameter">
-        <el-input v-model.trim="customizeCuttingTool.toolSetToCheckParameter" type="textarea" :rows="3"  style="width: 93%;" :label='$t("common.pleaseEnter")' maxlength="255"></el-input>
+      <el-form-item :label='$t("cuttingTool.form.customizeCuttingtool.factoryMaterialDesc")+":"' prop="factoryMaterialDesc">
+        <el-input placeholder = "多个用分号’;‘隔开"  v-model.trim="customizeCuttingTool.factoryMaterialDesc" type="textarea" :rows="3"  style="width: 93%;" :label='$t("common.pleaseEnter")' maxlength="255"></el-input>
         <el-tooltip
           class="item"
           :content="'长度不能超过3000位'"
@@ -198,15 +200,15 @@ export default {
         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' },
         ],
+        factoryMaterialCode: [
+          { 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)

+ 16 - 20
imcs-ui/src/views/zuihou/prepareProductMgr/cuttingToolMgr/components/customizeCuttingTool/index.vue

@@ -60,33 +60,23 @@
 		</el-table-column>
 		<el-table-column align="center" type="selection" width="50" :reserve-selection="true" />
 		<!-- 刀具号 -->
-		<el-table-column align="center" prop="cuttingToolNo" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolNo")' :show-overflow-tooltip="true"></el-table-column>
+		<el-table-column align="center" prop="cuttingToolNo"  width="70px" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolNo")'></el-table-column>
 		<!-- 刀具名称 -->
-		<el-table-column align="center" prop="cuttingToolName" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolName")' :show-overflow-tooltip="true"></el-table-column>
-		<!-- 刀具规格 -->
-		<el-table-column align="center" prop="specifications" :label='$t("cuttingTool.table.customizeCuttingtool.specifications")' :show-overflow-tooltip="true"></el-table-column>
-		<!-- 设备名称 -->
-		<el-table-column align="center" prop="deviceName" :label='$t("cuttingTool.table.customizeCuttingtool.storgeName")' :show-overflow-tooltip="true">
-	    	<template slot-scope="{ row }">
-				{{row['deviceName']? row['deviceName']+"_"+row['cutterNo']+"号刀位" : row['storgeName']}}
-	    	</template>		
-	 	</el-table-column>
+		<el-table-column align="center" prop="cuttingToolName" width="200px"  :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolName")' ></el-table-column>
 		<!-- 刀具类型 -->
-	   <el-table-column align="center"
-		  :filter-multiple="false"
-		  :filters="cuttingToolTypeList"
-		  column-key="cuttingToolType.key"
+	   <el-table-column align="center" width="100px" 
 		  :label="$t('cuttingTool.table.customizeCuttingtool.cuttingToolType')"
-		  :show-overflow-tooltip="true"
 		>
 		  <template slot-scope="scope">
-			<span>{{ scope.row}}</span>
+			<span>{{ scope.row.cuttingToolType.data}}</span>
 			<!-- <span>{{ scope.row.cuttingToolType['data'] ? scope.row.cuttingToolType['data'] : scope.row.cuttingToolType['key'] }}</span> -->
 		  </template>
 		</el-table-column>
-   
+   		<el-table-column align="center" prop="factoryCode" :label='$t("cuttingTool.table.customizeCuttingtool.factoryCode")' ></el-table-column>
+		<el-table-column align="center" prop="factoryMaterialCode" :label='$t("cuttingTool.table.customizeCuttingtool.factoryMaterialCode")' ></el-table-column>
+		<el-table-column align="center" prop="factoryMaterialDesc" :label='$t("cuttingTool.table.customizeCuttingtool.factoryMaterialDesc")' ></el-table-column>
 		<!-- 刀具图片 -->
-	   <el-table-column align="center" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolPicture")' :show-overflow-tooltip="true">
+	   <el-table-column align="center" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolPicture")' >
 		  <template slot-scope="{ row }">
 			<el-image
 			  style="width: 100px; height: 100px"
@@ -96,7 +86,7 @@
 		  </template>
 		</el-table-column>
 		&lt;!&ndash; 装夹方式 &ndash;&gt;
-		<el-table-column align="center" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolInstallPicture")' :show-overflow-tooltip="true">
+		<el-table-column align="center" :label='$t("cuttingTool.table.customizeCuttingtool.cuttingToolInstallPicture")' >
 		  <template slot-scope="{ row }">
 			<el-image
 			  style="width: 100px; height: 100px"
@@ -105,7 +95,12 @@
 			</el-image>
 		  </template>
 		</el-table-column>
-		<el-table-column prop="toolSetToCheckParameter" :label='$t("cuttingTool.table.customizeCuttingtool.toolSetToCheckParameter")' :show-overflow-tooltip="true"></el-table-column>
+		<!-- 位置名字 -->
+		<el-table-column align="center" prop="deviceName" :label='$t("cuttingTool.table.customizeCuttingtool.storgeName")' >
+	    	<template slot-scope="{ row }">
+				{{row['deviceName']? row['deviceName']+"_"+row['cutterNo']+"号刀位" : row['storgeName']}}
+	    	</template>		
+	 	</el-table-column>
 		<!-- 启用状态 -->
 		<el-table-column prop="status" :label='$t("runCenter.table.oder.status")' align="center">
 			<template slot-scope="{ row }">
@@ -239,6 +234,7 @@
 		},
 		computed: {
 		cuttingToolTypeList() {
+			console.log("===");
 			return convertEnum(this.dicts.CUTTING_TOOL_TYPE)
 		},
 		cuttingToolCategoryList() {

+ 5 - 4
imcs-ui/src/views/zuihou/prepareProductMgr/trayMgr/Index.vue

@@ -75,6 +75,7 @@
       </el-table-column>
       <el-table-column align="center" type="selection" width="50" :reserve-selection="true" />
       <el-table-column prop="no" :label='$t("prepare.table.tray.no")' :show-overflow-tooltip="true" width="160px"></el-table-column>
+      <el-table-column prop="code" :label='$t("prepare.table.tray.code")' :show-overflow-tooltip="true" width="70px"></el-table-column>
       <el-table-column prop="name" :label='$t("prepare.table.tray.name")' :show-overflow-tooltip="true" width="200px"></el-table-column>
 	  <el-table-column prop="productionType.data" :label='$t("prepare.table.tray.productionType")' :show-overflow-tooltip="true" width="120px"></el-table-column>
       <el-table-column prop="materialType" :label='$t("prepare.table.tray.materialType")' :show-overflow-tooltip="true" width="120px"></el-table-column>
@@ -86,10 +87,6 @@
           </el-tag>
         </template>
 	  </el-table-column> 
-	  <el-table-column prop="factory" :label='$t("prepare.table.tray.factory")' :show-overflow-tooltip="true" width="200px"></el-table-column>
-      <el-table-column prop="joinDate" :label='$t("prepare.table.tray.joinDate")' :show-overflow-tooltip="true" width="150px"></el-table-column>
-      <el-table-column prop="expiryDate" :label="$t('prepare.table.tray.expiryDate')+' (月)'" align="center" :show-overflow-tooltip="true" width="100px"></el-table-column>
-      <el-table-column prop="num" :label='$t("prepare.table.tray.num")' e:show-overflow-tooltip="tru" width="140px"></el-table-column>
       <el-table-column prop="status" :label='$t("prepare.table.tray.status")' align="center" >
       	<template slot-scope="{ row }">
           <el-tag :type="row.status=='1' ? 'success' : 'danger'">
@@ -97,6 +94,10 @@
           </el-tag>
         </template>
       </el-table-column>
+	  <el-table-column prop="factory" :label='$t("prepare.table.tray.factory")' :show-overflow-tooltip="true" width="200px"></el-table-column>
+      <el-table-column prop="joinDate" :label='$t("prepare.table.tray.joinDate")' :show-overflow-tooltip="true" width="150px"></el-table-column>
+      <el-table-column prop="expiryDate" :label="$t('prepare.table.tray.expiryDate')+' (月)'" align="center" :show-overflow-tooltip="true" width="100px"></el-table-column>
+      <el-table-column prop="num" :label='$t("prepare.table.tray.num")' e:show-overflow-tooltip="tru" width="140px"></el-table-column>
       <el-table-column
         :label="$t('table.operation')" 
         fixed="right"

+ 4 - 0
imcs-ui/src/views/zuihou/prepareProductMgr/trayMgr/components/Edit.vue

@@ -11,6 +11,10 @@
       <el-form-item :label='$t("prepare.table.tray.no")+":"' prop="no">
         <el-input v-model="tenant.no" :placeholder='$t("common.pleaseEnter")' />
       </el-form-item>
+      <!--子盘号-->
+      <el-form-item :label='$t("prepare.table.tray.code")+":"' prop="code">
+        <el-input v-model="tenant.code" :placeholder='$t("common.pleaseEnter")' />
+      </el-form-item>
       <!--名称-->
       <el-form-item :label='$t("prepare.table.tray.name")+":"' prop="name">
         <el-input v-model="tenant.name" :placeholder='$t("common.pleaseEnter")' />