From 5e18bf58d03f4b6830afddb92af9079dcc5587e2 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期一, 11 三月 2024 09:25:26 +0800
Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before into master

---
 src/views/quality/rawMaterial/rawMaterial-form.vue      |  105 +++++++++++---------
 src/views/plan/customerorder/index.vue                  |   36 ++++---
 src/views/quality/rawMaterial/testValue-select.vue      |   64 ++++++++++++
 src/api/technology/completeproductstructure.js          |    9 +
 src/api/plan/customerorder.js                           |    2 
 src/views/technology/completeproductstructure/index.vue |   25 ++++
 6 files changed, 172 insertions(+), 69 deletions(-)

diff --git a/src/api/plan/customerorder.js b/src/api/plan/customerorder.js
index b6db926..2dc7524 100644
--- a/src/api/plan/customerorder.js
+++ b/src/api/plan/customerorder.js
@@ -266,7 +266,7 @@
 
 export function downloadProduct(data){
     return request({
-        url: '/mes/plan/customerOrder/downloadProduct',
+        url: '/mes/plan/customerOrder/getProduct',
         method: 'post',
         responseType: 'blob',
         data: data
diff --git a/src/api/technology/completeproductstructure.js b/src/api/technology/completeproductstructure.js
index 2f31570..383537a 100644
--- a/src/api/technology/completeproductstructure.js
+++ b/src/api/technology/completeproductstructure.js
@@ -90,3 +90,12 @@
     data: obj
   })
 }
+
+export function exportBom(obj) {
+  return request({
+    url: '/mes/bom/exportBom',
+    method: 'post',
+    data: obj,
+    responseType: 'blob'
+  })
+}
diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue
index 3b0251a..4ba8c0f 100644
--- a/src/views/plan/customerorder/index.vue
+++ b/src/views/plan/customerorder/index.vue
@@ -586,7 +586,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text',
+            searchInfoType: 'date',
             formatter: this.formatDutyDate,
           },
           {
@@ -1036,20 +1036,24 @@
         permitArr: [],
       })
     }
-    this.table.toolbar.push({
-        text: '涓嬭浇宸ヨ壓鏂囦欢',
-        disabled: false,
-        type: 'primary',
-        fun: this.downloadWord,
-        permitArr: ['03plan','04planed'],
-    })
-    this.table.toolbar.push({
-        text: '涓嬭浇鎺掍骇鍗�',
-        disabled: false,
-        type: 'primary',
-        permitArr: [],
-        fun: this.downloadProductionScheduling,
-    })
+    if(this.permissions.plan_download_process_file){
+        this.table.toolbar.push({
+            text: '涓嬭浇宸ヨ壓鏂囦欢',
+            disabled: false,
+            type: 'primary',
+            fun: this.downloadWord,
+            permitArr: ['03plan','04planed'],
+        })
+    }
+    if(this.permissions.plan_download_product_file){
+        this.table.toolbar.push({
+            text: '涓嬭浇鎺掍骇鍗�',
+            disabled: false,
+            type: 'primary',
+            permitArr: [],
+            fun: this.downloadProductionScheduling,
+        })
+    }
     this.table.toolbar.push({
       text: '鍏宠仈璁㈠崟',
       disabled: false,
@@ -1130,7 +1134,7 @@
             this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�")
             return
         }
-        downloadProduct({ids: ids}).then(res=>{
+        downloadProduct(ids).then(res=>{
             if(res.status===200){
                 transform(res)
             }
diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue
index c4c60ab..31e5075 100644
--- a/src/views/quality/rawMaterial/rawMaterial-form.vue
+++ b/src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -177,30 +177,22 @@
                       <el-table-column prop="testValue" label="妫�娴嬪��" min-width="160" v-for="(item,index) in empiricalValueAdd" :key="index">
                         <template slot-scope="scope">
                           <div v-if="!scope.row.children">
-                          <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start">
-                            <el-dropdown>
-                            <el-input placeholder="妫�娴嬪��"/>
-                            <i style="line-height: normal;padding: 10px 7px;" class="el-icon-arrow-down el-icon--right"></i>
-                            <el-dropdown-menu slot="dropdown">
-                                <el-dropdown-item>榛勯噾绯�</el-dropdown-item>
-                                <el-dropdown-item>鐙瓙澶�</el-dropdown-item>
-                                <el-dropdown-item>铻鸿洺绮�</el-dropdown-item>
-                                <el-dropdown-item>鍙岀毊濂�</el-dropdown-item>
-                                <el-dropdown-item>铓典粩鐓�</el-dropdown-item>
-                            </el-dropdown-menu>
-                            </el-dropdown>
-                            <!-- <el-autocomplete clearable
-                            :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))"
-                            @blur.stop="changeState(scope.row,scope.$index)"
-                            @select="changeState(scope.row,scope.$index)"
-                            v-model="scope.row.testValueList[index]"
-                            :fetch-suggestions="querySearch"
-                            placeholder="璇疯緭鍏ユ垨閫夋嫨妫�娴嬪��" >
-                            <i style="line-height: normal;padding: 10px 7px;" class="el-icon-arrow-down" slot="suffix"></i>
-                            <template slot-scope="{ item }">
-                                <div>{{ item.value }}</div>
-                            </template>
-                            </el-autocomplete> -->
+                            <!-- :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" -->
+                                <!-- @input="$nextTick(()=>{checkTestValues(scope.row)})" -->
+                                <!-- @blur.capture.native="changeState(scope.row)" -->
+                            <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start">
+                                <el-autocomplete clearable
+                                cache="false"
+                                ref="testValueInput"
+                                @blur="checkTestValues(scope.row,'blur',$event)"
+                                @select="checkTestValues(scope.row,'select',$event)"
+                                v-model="scope.row.testValueList[index]"
+                                :fetch-suggestions="querySearch"
+                                placeholder="璇疯緭鍏ユ垨閫夋嫨妫�娴嬪��" >
+                                <template slot-scope="{ item }">
+                                    <div>{{ item.value }}</div>
+                                </template>
+                                </el-autocomplete>
                             </el-tooltip>
                           </div>
                         </template>
@@ -225,7 +217,7 @@
                       <el-table-column prop="note" label="妫�楠屾弿杩�" width="160" >
                         <template slot-scope="scope">
                           <div v-if="!scope.row.children">
-                            <el-input @blur="changeState(scope.row, scope.$index)" :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="妫�楠屾弿杩�"></el-input>
+                            <el-input @blur="checkTestValues(scope.row,'blur',$event)" :disabled="scope.row.deviceId == null ||  (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="妫�楠屾弿杩�"></el-input>
                           </div>
                         </template>
                       </el-table-column>
@@ -415,11 +407,10 @@
   import rawMaterialPartDialog from '@/views/common/rawMaterial-part'
   import { getStore } from '@/util/store'
   import qrCodeApp from '@/views/common/qrCodeApp'
-  import transformImage from '@/util/fileTransform'
   export default {
   components:{
     rawMaterialPartDialog,
-    qrCodeApp
+    qrCodeApp,
   },
     computed:{},
     data(){
@@ -485,7 +476,7 @@
             }],
             dataRule: {
               code:[{ required: true, message: '璇锋壂鎻忛�夋嫨闆朵欢', trigger: 'blur' }],
-              createTime: [{ required: true, message: '璇烽�夋嫨鎶ユ鏃ユ湡', trigger: 'change' }]
+              createTime: [{ required: true, message: '璇烽�夋嫨鎶ユ鏃ユ湡', trigger: 'blur' }]
             },
             deviceList: [],
         }
@@ -748,7 +739,7 @@
               required: null,
               rpId: null,
               name: null,
-              unit: 'mm',
+              unit: '',
               userName: null,
               testValue: '',
               testValueList: [],
@@ -891,27 +882,38 @@
         console.log(e,e.target.tabIndex);
         console.log(e.target.value);
       },
-      changeState(row, index) {
-        this.$nextTick(()=>{
-            if(row){
-                let isTrue = true
-                for(var i=0;i<row.testValueList.length;i++){
-                    let val = row.testValueList[i]
-                    if(!['鏄�','鍚�'].includes(val)){
-                        let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/
-                        if(!reg.test(val)){
-                          row.testValueList = ''
-                          this.$message.error("璇疯緭鍏�6浣嶆暟瀛楁垨閫夋嫨鏄惁")
-                          isTrue = false
+      checkTestValues(row,currentOption,event){
+          if(row){
+              let isTrue = true
+              if(currentOption==='blur'){
+                  let targetVal = event.target.value
+                  if( (targetVal && ['鏄�','鍚�'].includes(targetVal)) || !targetVal){
+                    isTrue = false
+                  }else{
+                      for(var i=0;i<row.testValueList.length;i++){
+                          let val = row.testValueList[i]
+                          if(val != '' && val != null){
+                              if(!['鏄�','鍚�'].includes(val)){
+                                  let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/
+                                  if(!reg.test(val)){
+                                    row.testValueList[i] = ''
+                                    event.target.value = ''
+                                    this.$message.error("璇疯緭鍏�6浣嶆暟瀛楁垨閫夋嫨鏄惁")
+                                    isTrue = false
+                                }
+                            }
+                          }
                       }
                   }
-                }
-                if(!isTrue){
-                    return
-                }
-            }
-            console.log(row.testValueList.join(","));
-            return
+              }
+              if(!isTrue){
+                  return
+              }
+              this.changeState(row)
+          }
+      },
+      changeState(row) {
+          this.$nextTick(()=>{
             if (row.rpId != null && row.rpId != '') {
                 let val = row.testValueList.join(",")
                 if (val === undefined || val === '' || val === null) {
@@ -1205,6 +1207,13 @@
   border: 1px solid #e4e7ed;
   border-bottom: none;
 }
+.dropdown{
+    position: relative;
+    right: 30px;
+    top: 5px;
+    color: #C0C4CC;
+    font-size: 14px;
+}
 @media (max-width: 767px) {
   .pad-addcol-btn{
     font-size:12px;
diff --git a/src/views/quality/rawMaterial/testValue-select.vue b/src/views/quality/rawMaterial/testValue-select.vue
index 0e814c9..3435f79 100644
--- a/src/views/quality/rawMaterial/testValue-select.vue
+++ b/src/views/quality/rawMaterial/testValue-select.vue
@@ -1,13 +1,71 @@
 <!-- 鍘熸潗鏂欐楠�-妫�娴嬪�艰緭鍏ユ缁勪欢 -->
 <template>
+    <el-select v-model="selectedValue" @change="handleChange" clearable>
+        <el-option
+        v-for="item in options"
+        :key="item.value"
+        :label="item.label"
+        :value="item.value"
+        ></el-option>
+        <el-input
+        v-model="inputValue"
+        slot="prefix"
+        placeholder="鑷畾涔夎緭鍏�"
+        @input="handleInput"
+        ></el-input>
+  </el-select>
 </template>
 
 <script>
 export default {
-
+    props:{
+        value: {
+            type: [String, Number],
+            default: ''
+        },
+        options: {
+            type: Array,
+            default: () => []
+        }
+    },
+    data(){
+        return {
+            selectedValue: '',
+            inputValue: '',
+            // options: [{
+            //     label:'鏄�',
+            //     value: '鏄�'
+            // },{
+            //     label:'鍚�',
+            //     value: '鍚�'
+            // }]
+        }
+    },
+    created() {
+    this.selectedValue = this.value;
+  },
+  watch: {
+    value(newValue) {
+      this.selectedValue = newValue;
+    }
+  },
+  methods: {
+    handleChange(value) {
+      this.$emit('input1', value);
+    },
+    handleInput(value) {
+      this.$emit('input1', value);
+    }
+  }
 }
 </script>
 
-<style>
-
+<style scope>
+    .dropdown{
+        position: relative;
+        right: 30px;
+        top: 5px;
+        color: #C0C4CC;
+        font-size: 14px;
+    }
 </style>
diff --git a/src/views/technology/completeproductstructure/index.vue b/src/views/technology/completeproductstructure/index.vue
index 8af0091..3a79e2b 100644
--- a/src/views/technology/completeproductstructure/index.vue
+++ b/src/views/technology/completeproductstructure/index.vue
@@ -21,11 +21,13 @@
   fetchList,
   delObj,
   addByStructure,
+  exportBom
 } from '@/api/technology/completeproductstructure'
 import ttable from '@/views/common/ztt-table.vue'
 import { mapGetters } from 'vuex'
 import { changeState } from '../../../api/technology/completeproductstructure'
 import { remote } from '@/api/admin/dict'
+import { transform } from '@/util/fileTransform'
 
 export default {
   data() {
@@ -292,7 +294,14 @@
         permitArr: [],
         fun: ()=>{this.deleteAll()},
       })
-    }      
+    }
+    this.table.toolbar.push({
+        text: 'BOM瀵煎嚭',
+        type:'primary',
+        disabled: false,
+        permitArr: [],
+        fun: ()=>{this.exportBomFun()},
+      })
     if(this.permissions.technology_completeproductstructure_del){
         this.table.operator = [
           {
@@ -317,6 +326,20 @@
     }
   },
   methods: {
+    exportBomFun(){
+        let ids = this.multipleSelection.map(ele=>ele.id)
+        if(ids.length<1){
+            this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�")
+            return
+        }
+        exportBom(ids).then(res=>{
+            if(res.status===200){
+                transform(res)
+            }
+        }).catch(error=>{
+            console.error(error)
+        })
+    },
     getBomTypeDbOptions() {
       remote('bom_type_db').then((response) => {
         if (response.data.code === 0) {

--
Gitblit v1.9.3