From 26c4f7ae79ad5ad2300876b94f96f19e4f93d53a Mon Sep 17 00:00:00 2001
From: 王震 <10952869+daywangzhen@user.noreply.gitee.com>
Date: 星期一, 18 十二月 2023 16:02:12 +0800
Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before

---
 src/views/equipment/equipment/index.vue                              |   12 
 src/views/basic/location/index.vue                                   |    4 
 vue.config.js                                                        |    2 
 src/views/technology/routing/routing-form.vue                        |    4 
 src/views/common/rawMaterial-part.vue                                |    2 
 src/views/admin/user/index.vue                                       |  141 +++++++++++++++
 src/views/equipment/metering/index.vue                               |    2 
 src/views/quality/finishedProductInspection/finishedProduct-form.vue |   54 +++++
 src/views/common/qrCodeApp.vue                                       |   17 -
 src/views/common/ztt-table.vue                                       |   16 +
 src/views/quality/processInspect/processInspect-form.vue             |   54 +++++
 src/views/quality/rawMaterial/rawMaterial-form.vue                   |  161 +++++++++--------
 src/views/basic/staff/index.vue                                      |    6 
 src/views/basic/location/location-form.vue                           |   23 ++
 14 files changed, 377 insertions(+), 121 deletions(-)

diff --git a/src/views/admin/user/index.vue b/src/views/admin/user/index.vue
index 68ef1e1..80f0b7f 100644
--- a/src/views/admin/user/index.vue
+++ b/src/views/admin/user/index.vue
@@ -66,6 +66,15 @@
                 @click="$refs.crud.rowAdd()"
                 >娣诲姞
               </el-button>
+              <!-- <el-button
+                v-if="sys_user_add"
+                class="filter-item"
+                type="primary"
+                size="small"
+                icon="el-icon-upload"
+                @click="importDialogVisible=true"
+                >瀵煎叆
+              </el-button> -->
             </template>
             <template slot="username" slot-scope="scope">
               <span>{{ scope.row.username }}</span>
@@ -147,6 +156,45 @@
       :currshowlist.sync="showStaff"
       @listenToStaffEvent="selectStaff"
     />
+    <el-dialog title="瀵煎叆" :visible.sync="importDialogVisible" width="30%">
+      <span>
+        <div>
+          <div>
+            <el-upload
+              style="margin-left:8px;display: inline;"
+              class="upload-demo"
+              drag
+              :headers="headers"
+              :action="uploadInfo.url"
+              :beforeUpload="beforeAvatarUpload"
+              :limit="1"
+              :show-file-list="false"
+              :file-list="fileList"
+              :on-success="fileSuccessUploadScan"
+              :on-error="handleError"
+              accept=".xlsx,.xls,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
+              :auto-upload="true"
+              ref="uploadScan"
+              multiple
+            >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text"><em>鐐瑰嚮瀵煎叆鏁版嵁</em></div>
+              <div class="el-upload__tip" slot="tip" >
+                鍙兘涓婁紶xlsx/xls鏂囦欢锛屼笖涓嶈秴杩�10M<el-button
+                  type="text"
+                  style="font-size:12px;"
+                  @click="downDataTemplate(uploadInfo.fileName)"   
+                  v-if="uploadInfo.Download"
+                  >涓嬭浇妯℃澘</el-button
+                >
+              </div>
+            </el-upload>
+          </div>
+          <div></div>
+        </div>
+      </span>
+      <span slot="footer" class="dialog-footer"> </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -158,12 +206,26 @@
 import { mapGetters } from 'vuex'
 import Template from '../../quality/parts/template'
 import { getObj } from '@/api/basic/staff'
-
+import { getStore } from '@/util/store.js'
+import { uploadTemplate } from '@/api/basic/template'
 export default {
   name: 'SysUser',
   components: { Template, staffDialog },
   data() {
     return {
+      fileList: [], // 涓婁紶鏂囦欢鍒楄〃
+      // 涓婁紶澶翠俊鎭�
+      headers: {
+        Authorization: 'Bearer ' + getStore({ name: 'access_token' })
+      },
+      uploadInfo: {
+        // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl
+        isShow: true,
+        url: '/mes/user/upload',
+        Download: true,
+        fileName: '鐢ㄦ埛妯℃澘'
+      },
+      importDialogVisible: false,
       showStaff: false,
       searchForm: {},
       treeOption: {
@@ -216,6 +278,77 @@
     this.init()
   },
   methods: {
+    // 闄愬埗鏂囦欢涓婁紶澶у皬锛岀洰鍓嶉檺鍒朵负10M锛堝彟鍙互鍔犵被鍨嬮檺鍒讹級
+    beforeAvatarUpload(file) {
+      const fileName = file.name
+      const fileType = fileName.substring(fileName.lastIndexOf('.') + 1)
+      const isLt10M = file.size / 1024 / 1024 < 10
+      if (fileType !== 'xlsx' && fileType !== 'xls') {
+        this.$message.error('鏂囦欢鏍煎紡鍙兘涓簒lsx鎴杧ls,璇峰垹闄ゅ悗閲嶆柊涓婁紶')
+      }
+      if (!isLt10M) {
+        this.$message({
+          message: '鏂囦欢澶у皬',
+          type: 'warning'
+        })
+      }
+      return isLt10M
+    },
+    // 鏂囦欢涓婁紶鎴愬姛鍥炶皟浜嬩欢
+    fileSuccessUploadScan(response, file, fileList) {
+      if (response.code != '0') {
+        this.$message.warning(response.msg)
+      } else {
+      if(response.data!=""&&response.data!=[]&&response.data!=null){
+        this.$message({
+          message: response.data,
+          type: 'success',
+          dangerouslyUseHTMLString: true,
+        })
+      }else{
+        this.$message({
+          message: '涓婁紶鎴愬姛',
+          type: 'success'
+        })
+      }
+        this.importDialogVisible=false
+        this.fileList=[]
+        this.init()
+        // this.getDataList()
+      }
+      this.$refs.uploadScan.clearFiles()
+    },
+    // 涓婁紶澶辫触
+    handleError(err, file, fileList) {
+      const error = JSON.parse(err.message)
+      if (error.msg) {
+        this.$message.error(error.msg)
+      } else {
+        this.$message.error('涓婁紶澶辫触')
+      }
+    },
+    // 涓嬭浇鏁版嵁妯℃澘
+    downDataTemplate() {
+      uploadTemplate("user").then((response) => {
+        const blob = new Blob([response.data], {
+          type: 'application/force-download'
+        })
+        let fileName="妯℃澘鏂囦欢";
+        if(this.uploadInfo.fileName!=undefined&&this.uploadInfo.fileName!=''&&this.uploadInfo.fileName!=null){
+            fileName=this.uploadInfo.fileName
+        }
+        const filename = decodeURI(fileName+'.xlsx')
+        // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
+        const elink = document.createElement('a')
+        elink.download = filename
+        elink.style.display = 'none'
+        elink.href = URL.createObjectURL(blob)
+        document.body.appendChild(elink)
+        elink.click()
+        URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+        document.body.removeChild(elink)
+      })
+    },
     selectStaff(staff) {
       this.form.staffInfo = staff.staffName + '-' + staff.staffNo
       this.form.phone = staff.phone
@@ -343,7 +476,11 @@
       })
     },
     unlock(row, index) {
-      unlock({ id: row.userId }).then((repsonse) => {})
+      unlock({ id: row.userId }).then((repsonse) => {
+        if(repsonse.data.data){
+          this.$message.success("璇ョ敤鎴峰凡瑙i攣")
+        }
+      })
     }
   }
 }
diff --git a/src/views/basic/location/index.vue b/src/views/basic/location/index.vue
index dfb4f75..e102c95 100644
--- a/src/views/basic/location/index.vue
+++ b/src/views/basic/location/index.vue
@@ -194,7 +194,7 @@
             optList: () => {
               return this.getWarehouseLocGroupList()
             }
-          },
+          }/* ,
           // ERP搴撲綅
           {
             minWidth: '200',
@@ -204,7 +204,7 @@
             isTrue: false,
             isSearch: true,
             searchInfoType: 'text'
-          }
+          } */
         ],
         toolbar: [
           {
diff --git a/src/views/basic/location/location-form.vue b/src/views/basic/location/location-form.vue
index 11c4657..26c0b1c 100644
--- a/src/views/basic/location/location-form.vue
+++ b/src/views/basic/location/location-form.vue
@@ -134,10 +134,23 @@
 
       <el-row>
         <el-col :span="12">
+          <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
+            <el-date-picker
+              readonly
+              style="width: 100%"
+              v-model="moment"
+              type="datetime"
+              placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+              value-format="yyyy-MM-dd HH:mm:ss"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+       <!--  <el-col :span="12">
           <el-form-item
             label="IFS搴撲綅"
             prop="ifsLocationDesc"
-          >
+          > -->
             <!-- <el-select
               v-model="dataForm.ifsLocation"
               filterable
@@ -152,13 +165,13 @@
               >
               </el-option>
             </el-select> -->
-            <el-cascader
+           <!--  <el-cascader
               v-model="dataForm.ifsLocationDesc"
               :props="locationProps"
               style="width:100%" filterable
             ></el-cascader>
           </el-form-item>
-        </el-col>
+        </el-col> -->
         <el-col :span="12">
           <el-form-item label="搴撲綅鐘舵��" prop="locStatus">
             <el-switch
@@ -169,7 +182,7 @@
           </el-form-item>
         </el-col>
       </el-row>
-      <el-row>
+      <!-- <el-row>
         <el-col :span="12">
           <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
             <el-date-picker
@@ -184,7 +197,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="12"> </el-col>
-      </el-row>
+      </el-row> -->
     </el-form>
     <span slot="footer" class="dialog-footer">
       <el-button @click="visible = false">鍙栨秷</el-button>
diff --git a/src/views/basic/staff/index.vue b/src/views/basic/staff/index.vue
index b9a98fd..d9ad232 100644
--- a/src/views/basic/staff/index.vue
+++ b/src/views/basic/staff/index.vue
@@ -38,8 +38,10 @@
       multipleSelection: [],
       uploadInfo: {
         // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl
-        isShow: false,
-        url: ''
+        isShow: true,
+        url: '/mes/staff/upload',
+        Download: true,
+        fileName: '鍛樺伐妯℃澘'
       },
       prelang: 'operation',
       options: {
diff --git a/src/views/common/qrCodeApp.vue b/src/views/common/qrCodeApp.vue
index f0bada3..8c297ac 100644
--- a/src/views/common/qrCodeApp.vue
+++ b/src/views/common/qrCodeApp.vue
@@ -39,11 +39,10 @@
         },
         //鍥炶皟鎵弿缁撴灉
         onDecode(result) {
-            console.log(result);
             if (result !== "") {
                 this.result=result
-                this.$emit("ok",result)
-                alert(result)            
+                this.$emit("ok",this.result)
+                this.cancelCode()
             }
         },
         // 鐩告満鍙嶈浆
@@ -74,12 +73,7 @@
         async onInit(promise) {
             try {
                 const { capabilities } = await promise;
-                console.log(
-                    "馃殌 ~ file: cameracomponent.vue:47 ~ onInit ~ capabilities",
-                    capabilities
-                );
             } catch (error) {
-                // console.log()
                 this.$toast(error.name);
                 if (error.name === "NotAllowedError") {
                     this.error = "ERROR: 鎮ㄩ渶瑕佹巿浜堢浉鏈鸿闂潈闄�";
@@ -105,12 +99,7 @@
         }
     },
     watch: {
-        "result": {
-            handler(newVal) {
-                console.log('鎵弿鍊�' + newVal);
-            },
-            deep: true
-        }
+
     }
 };
 </script>
diff --git a/src/views/common/rawMaterial-part.vue b/src/views/common/rawMaterial-part.vue
index b543cc1..c8b36ab 100644
--- a/src/views/common/rawMaterial-part.vue
+++ b/src/views/common/rawMaterial-part.vue
@@ -65,7 +65,6 @@
       return {
         ajaxFun: chooseIFS,
         innerVisible: false,
-        listLoading: true,
         currentRow: null,
         multipleSelection: [],
         uploadInfo: {
@@ -220,6 +219,7 @@
         this.innerVisible = this.currshowlist
         if (this.currshowlist) {
           this.$nextTick(() => {
+            // this.table.data=[]
             this.getData()
           })
         }
diff --git a/src/views/common/ztt-table.vue b/src/views/common/ztt-table.vue
index fb445e3..70b8191 100644
--- a/src/views/common/ztt-table.vue
+++ b/src/views/common/ztt-table.vue
@@ -509,7 +509,8 @@
                 鍙兘涓婁紶xlsx/xls鏂囦欢锛屼笖涓嶈秴杩�10M<el-button
                   type="text"
                   style="font-size:12px;"
-                  @click="downDataTemplate"   v-if="uploadInfo.Download"
+                  @click="downDataTemplate(uploadInfo.fileName)"   
+                  v-if="uploadInfo.Download"
                   >涓嬭浇妯℃澘</el-button
                 >
               </div>
@@ -942,8 +943,7 @@
       }
     },
     getDataList(selectedId) {
-      // this.dataListLoading = true
-      this.dataListLoading = false
+      this.dataListLoading = true
       var criteria = {}
       criteria.dateTimeFilters = this.dateTimeFilters
       criteria.multiSearchFilter = this.multiSearchFilter
@@ -969,6 +969,7 @@
       return this.doCallback(this.ajaxFun, arr, selectedId)
     },
     doCallback(fn, args, selectedId) {
+      this.tableData=[]
       return fn
         .apply(this, args)
         .then((response) => {
@@ -1582,7 +1583,8 @@
       if(response.data!=""&&response.data!=[]&&response.data!=null){
         this.$message({
           message: response.data,
-          type: 'success'
+          type: 'success',
+          dangerouslyUseHTMLString: true,
         })
       }else{
         this.$message({
@@ -1614,7 +1616,11 @@
         const blob = new Blob([response.data], {
           type: 'application/force-download'
         })
-        const filename = decodeURI('妯℃澘鏂囦欢.xlsx')
+        let fileName="妯℃澘鏂囦欢";
+        if(this.uploadInfo.fileName!=undefined&&this.uploadInfo.fileName!=''&&this.uploadInfo.fileName!=null){
+            fileName=this.uploadInfo.fileName
+        }
+        const filename = decodeURI(fileName+'.xlsx')
         // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
         const elink = document.createElement('a')
         elink.download = filename
diff --git a/src/views/equipment/equipment/index.vue b/src/views/equipment/equipment/index.vue
index f19e542..083640d 100644
--- a/src/views/equipment/equipment/index.vue
+++ b/src/views/equipment/equipment/index.vue
@@ -236,12 +236,12 @@
               type: 'primary',
               fun: this.labelPrint
             },
-          // {
-          //   text: '鍚屾',
-          //   type: 'primary',
-          //   loading: false,
-          //   fun: this.pullEquipFun
-          // }
+          {
+            text: '鍚屾',
+            type: 'primary',
+            loading: false,
+            fun: this.pullEquipFun
+          }
         ],
         operator: [
           {
diff --git a/src/views/equipment/metering/index.vue b/src/views/equipment/metering/index.vue
index 3f858da..1fdc251 100644
--- a/src/views/equipment/metering/index.vue
+++ b/src/views/equipment/metering/index.vue
@@ -38,7 +38,7 @@
               <el-row>
                 <el-col :span="10" :offset="3">璁惧浜岀淮鐮侊細</el-col>
                 <el-col :span="10">
-                  <vueQr :text="tem.code" :size="80" :margin="2"></vueQr>
+                  <vueQr :text="tem.code+'id@'+tem.id" :size="80" :margin="2"></vueQr>
                 </el-col>
               </el-row>
             </el-card>
diff --git a/src/views/quality/finishedProductInspection/finishedProduct-form.vue b/src/views/quality/finishedProductInspection/finishedProduct-form.vue
index fd45c92..a0a9cbd 100644
--- a/src/views/quality/finishedProductInspection/finishedProduct-form.vue
+++ b/src/views/quality/finishedProductInspection/finishedProduct-form.vue
@@ -148,11 +148,17 @@
                             <template slot-scope="scope">
                                 <span v-if="resultVal!=null && processInspectVo.id!=null" v-text="scope.row.ename"></span>
                                 <div v-else>
-                                    <el-select style="width:100%" v-model="scope.row.eId"
+                                    <el-select style="width:80%" v-model="scope.row.eId"
                                     v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row)">
                                         <el-option v-for="(item,index) in deviceList"
                                         :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option>
                                     </el-select>
+                                    <el-button
+                                    size="small"
+                                    slot="append"
+                                    icon="el-icon-full-screen"
+                                    v-if="scope.row.iname != null"
+                                    @click="codeDevice(scope.row,scope.$index)"></el-button>
                                 </div>
                             </template>
                         </el-table-column>
@@ -224,6 +230,18 @@
             </el-row>
         </div>
     </div>
+    <el-dialog
+  title="璁惧鎵弿"
+  :visible.sync="deviceCode"
+  width="60%">
+  <div style="height: 100vh;width: 100%;">
+    <qr-code-app ref="codeDeviceCompont" @ok="getDeviceResultInfo" @cancelCodeDialog="cancelDeviceCodeDialog"></qr-code-app>
+  </div>
+  <span slot="footer" class="dialog-footer">
+    <el-button @click="deviceCode = false">鍙� 娑�</el-button>
+    <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button>
+  </span>
+</el-dialog>
 </div>
 </template>
 
@@ -240,9 +258,16 @@
  } from '@/api/quality/finishedProduct'
  import { getIfsLocationByGroupCopyAll } from '@/api/warehouse/location'
  import { remote } from '@/api/admin/dict'
+ import qrCodeApp from '@/views/common/qrCodeApp'
 export default {
+    components:{
+        qrCodeApp
+    },
     data() {
         return {
+            row: null,
+            proIndex: 0,
+            deviceCode: false,
             locationList: [],
             dataVal: [{
                 label: '鏄�',
@@ -304,6 +329,33 @@
         this.init()
     },
     methods: {
+        cancelDeviceCodeDialog(){
+        this.deviceCode = false
+      },
+      getDeviceResultInfo(val){
+        console.log("鎵弿鍚庢暟鎹�",val);
+        let id=val.split("id@")[1]
+        if(id!=undefined&&id!=''&&id!=null){
+            let filterData=this.deviceList.filter(item=>{
+          return item.id==id
+        })[0]
+        console.log(filterData);
+        this.row.eId=Number(id)
+        this.updateDevice(this.row)
+        }else{
+        this.$message({
+          message: '鏈瘑鍒嚭浜屼綅鐮佽閲忓櫒鍏蜂俊鎭紒',
+          type: 'warning'
+        });
+        }
+      },
+      codeDevice(row,index){
+        this.row=row 
+        console.log("row",row);
+        this.deviceCode =true
+        this.$refs.codeDeviceCompont.openCamera()
+        this.proIndex=index
+      },
         changeLocation(val){
             if(val){
                 let obj = {
diff --git a/src/views/quality/processInspect/processInspect-form.vue b/src/views/quality/processInspect/processInspect-form.vue
index 239b2bc..505338e 100644
--- a/src/views/quality/processInspect/processInspect-form.vue
+++ b/src/views/quality/processInspect/processInspect-form.vue
@@ -137,11 +137,17 @@
                                     <span v-if="resultVal != null && scope.row.iname != null"
                                         v-text="scope.row.ename"></span>
                                     <div v-else>
-                                        <el-select style="width:100%" v-model="scope.row.eId" v-if="scope.row.iname != null"
+                                        <el-select style="width:80%" v-model="scope.row.eId" v-if="scope.row.iname != null"
                                             filterable @change="updateDevice(scope.row, scope.$index)">
                                             <el-option v-for="(item, index) in deviceList" :key="index" :value="item.id"
                                                 :label="item.code + '-' + item.name"></el-option>
                                         </el-select>
+                                        <el-button
+                                    size="small"
+                                    slot="append"
+                                    icon="el-icon-full-screen"
+                                    v-if="scope.row.iname != null"
+                                    @click="codeDevice(scope.row,scope.$index)"></el-button>
                                     </div>
                                 </template>
                             </el-table-column>
@@ -202,6 +208,18 @@
                 </el-row>
             </div>
         </div>
+        <el-dialog
+  title="璁惧鎵弿"
+  :visible.sync="deviceCode"
+  width="60%">
+  <div style="height: 100vh;width: 100%;">
+    <qr-code-app ref="codeDeviceCompont" @ok="getDeviceResultInfo" @cancelCodeDialog="cancelDeviceCodeDialog"></qr-code-app>
+  </div>
+  <span slot="footer" class="dialog-footer">
+    <el-button @click="deviceCode = false">鍙� 娑�</el-button>
+    <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button>
+  </span>
+</el-dialog>
     </div>
 </template>
     
@@ -215,9 +233,16 @@
     updateProcessInspectsById,
 } from '@/api/quality/processInspect'
 import { selectDevice } from '@/api/quality/processInspect'
+import qrCodeApp from '@/views/common/qrCodeApp'
 export default {
+    components:{
+        qrCodeApp
+    },
     data() {
         return {
+            row: null,
+            proIndex: 0,
+            deviceCode: false,
             rules: {
                 orderNumber: [{required:true,message:'璁㈠崟鍙蜂笉鑳戒负绌�',trigger:'blur'}]
             },
@@ -273,6 +298,33 @@
         this.init()
     },
     methods: {
+        cancelDeviceCodeDialog(){
+        this.deviceCode = false
+      },
+      getDeviceResultInfo(val){
+        console.log("鎵弿鍚庢暟鎹�",val);
+        let id=val.split("id@")[1]
+        if(id!=undefined&&id!=''&&id!=null){
+            let filterData=this.deviceList.filter(item=>{
+          return item.id==id
+        })[0]
+        console.log(filterData);
+        this.row.eId=Number(id)
+        this.updateDevice(this.row)
+        }else{
+            this.$message({
+          message: '鏈瘑鍒嚭浜屼綅鐮佽閲忓櫒鍏蜂俊鎭紒',
+          type: 'warning'
+        });
+        }
+      },
+      codeDevice(row,index){
+        this.row=row 
+        console.log("row",row);
+        this.deviceCode =true
+        this.$refs.codeDeviceCompont.openCamera()
+        this.proIndex=index
+      },
         submitSave() {
             let pro = 0
             this.inspectionItems.forEach(item => {
diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue
index b56aae4..7a663b7 100644
--- a/src/views/quality/rawMaterial/rawMaterial-form.vue
+++ b/src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -28,12 +28,7 @@
             </el-col>
               <el-col :span="6">
                 <el-form-item label="闆朵欢鍙�" prop="code">
-                <el-input v-model="dataForm.code" :disabled="resultVal!=null && dataForm.id!=null">
-                  <!-- <el-button
-                    slot="append"
-                    icon="el-icon-search"
-                    :disabled="resultVal!=null && dataForm.id!=null"
-                    @click="queryCode()"></el-button> -->
+                <el-input v-model="dataForm.code" disabled>
                     <el-button
                     slot="append"
                     icon="el-icon-full-screen"
@@ -44,8 +39,9 @@
             </el-col>
             <el-col :span="6">
                 <el-form-item prop="name" label="鍘熸潗鏂欏悕绉�">
-                <el-input v-model="dataForm.name" disabled >
-                </el-input>
+                  <el-tooltip class="item" effect="dark" :content="dataForm.name">
+                  <el-input v-model="dataForm.name" disabled ></el-input>
+                </el-tooltip>
                 </el-form-item>
             </el-col>
             <el-col :span="6">
@@ -63,7 +59,9 @@
             <el-row>
               <el-col :span="6">
                 <el-form-item label="瑙勬牸鍨嬪彿" prop="specs">
-                <el-input v-model="dataForm.specs" disabled></el-input>
+                  <el-tooltip class="item" effect="dark" :content="dataForm.specs">
+                    <el-input v-model="dataForm.specs" disabled></el-input>
+                  </el-tooltip>
                 </el-form-item>
               </el-col>
                 <el-col :span="6">
@@ -76,7 +74,9 @@
                 </el-col>
                 <el-col :span="6">
                     <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplier">
+                      <el-tooltip class="item" effect="dark" :content="dataForm.supplier" >
                         <el-input v-model="dataForm.supplier" disabled />
+                      </el-tooltip>
                     </el-form-item>
                 </el-col>
                 <el-col :span="6">
@@ -185,11 +185,17 @@
                   <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="260">
                     <template slot-scope="scope">
                       <div v-if="!scope.row.children">
-                        <el-select :disabled="dataForm!=null && resultVal!=null" style="width:100%"
+                        <el-select ref="" :disabled="dataForm!=null && resultVal!=null" style="width:80%"
                         v-model="scope.row.deviceId" filterable @change="updateDevice(scope.row,scope.$index)">
                             <el-option v-for="(item,index) in deviceList"
                             :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option>
                         </el-select>
+                        <el-button
+                        size="small"
+                        slot="append"
+                        icon="el-icon-full-screen"
+                        :disabled="dataForm!=null && resultVal!=null"
+                        @click="codeDevice(scope.row,scope.$index)"></el-button>
                       </div>
                     </template>
                   </el-table-column>
@@ -278,6 +284,18 @@
     <el-button type="primary" @click="qrcode = false">纭� 瀹�</el-button>
   </span>
 </el-dialog>
+<el-dialog
+  title="璁惧鎵弿"
+  :visible.sync="deviceCode"
+  width="60%">
+  <div style="height: 100vh;width: 100%;">
+    <qr-code-app ref="codeDeviceCompont" @ok="getDeviceResultInfo" @cancelCodeDialog="cancelDeviceCodeDialog"></qr-code-app>
+  </div>
+  <span slot="footer" class="dialog-footer">
+    <el-button @click="deviceCode = false">鍙� 娑�</el-button>
+    <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button>
+  </span>
+</el-dialog>
   </div>
 </template>
 
@@ -288,7 +306,7 @@
   getObj,
   updateRawInsProduct,
   updateRawInspectsById,
-  updateDeviceById, } from '@/api/quality/rawMaterial'
+  updateDeviceById, chooseIFS} from '@/api/quality/rawMaterial'
   import rawMaterialPartDialog from '@/views/common/rawMaterial-part'
   import qrCodeApp from '@/views/common/qrCodeApp'
   export default {
@@ -299,6 +317,9 @@
     computed:{},
     data(){
         return{
+            row: null,
+            proIndex: 0,
+            deviceCode: false,
             qrcode: false,
             userdata:[],
             currentRow:[],
@@ -321,7 +342,7 @@
                 formTime: '',
                 message: '',
                 name: '',
-                code: '88.118.1/A0498220',
+                code: '',
                 specs: '',
                 unit: '',
                 number: '',
@@ -345,7 +366,9 @@
               userName: '',
               testState: ''
             }],
-            dataRule: {},
+            dataRule: {
+              code:[{ required: true, message: '璇锋壂鎻忛�夋嫨闆朵欢', trigger: 'blur' }]
+            },
             deviceList: [],
         }
     },
@@ -372,81 +395,62 @@
       },
     },
     methods:{
+      cancelDeviceCodeDialog(){
+        this.deviceCode = false
+      },
+      getDeviceResultInfo(val){
+        console.log("鎵弿鍚庢暟鎹�",val);
+        let id=val.split("id@")[1]
+        if(id!=undefined&&id!=''&&id!=null){
+          let filterData=this.deviceList.filter(item=>{
+          return item.id==id
+        })[0]
+        console.log(filterData);
+        this.row.deviceId=Number(id)
+        this.updateDevice(this.row,this.proIndex)
+        }else{
+          this.$message({
+          message: '鏈瘑鍒嚭浜屼綅鐮佽閲忓櫒鍏蜂俊鎭紒',
+          type: 'warning'
+        });
+        }
+      },
+      codeDevice(row,index){
+        this.row=row 
+        console.log("row",row);
+        this.deviceCode =true
+        this.$refs.codeDeviceCompont.openCamera()
+        this.proIndex=index
+      },
       getResultInfo(data){
-        // console.log("杩斿洖");
-        console.log("鎵弿鍑虹殑浜岀淮鐮佸��",data);
+        console.log("鎵弿鍚庢墽琛�",data);
+        if(!data.includes("part_no")){
+          this.$message({
+          message: '鏈瘑鍒嚭浜屼綅鐮侀浂浠朵俊鎭紒',
+          type: 'warning'
+        });
+        }
+        let obj=JSON.parse(data)
+        let info={"code":obj["part_no"]}
+        console.log("鍊�",info);
+        if(info.code!=undefined&&info.code!=''){
+          this.paramObj = info
+          this.showPart = true
+        }else{
+          this.$message({
+          message: '鏈瘑鍒嚭浜屼綅鐮侀浂浠朵俊鎭紒',
+          type: 'warning'
+        });
+        }
       },
       cancelCodeDialog(){
         this.qrcode = false
       },
        // 鎵撳紑鐩告満
       Turnonthecamera() {
-        console.log("鎵ц");
         this.qrcode = true
         this.$refs.codeCompont.openCamera()
-      // this.camera = 'rear'
     },
-    // 鎵爜缁撴灉鍥炶皟
-    // onDecode(result) {
-    //   console.log(result)
-    //   this.turnCameraOff()
-    // },
-    // 鐩告満鍙嶈浆
-    // switchCamera() {
-    //   switch (this.camera) {
-    //     case 'front':
-    //       this.camera = 'rear'
-    //       break
-    //     case 'rear':
-    //       this.camera = 'front'
-    //       break
-    //     default:
-    //       this.$toast('閿欒')
-    //   }
-    // },
-    // 鍏抽棴鐩告満
-    // turnCameraOff() {
-    //   this.camera = 'off'
-    //   this.qrcode = false
-    // },
-    // 鎵撳紑鎵嬬數绛�
-    // ClickFlash() {
-    //   switch (this.torchActive) {
-    //     case true:
-    //       this.torchActive = false
-    //       break
-    //     case false:
-    //       this.torchActive = true
-    //       break
-    //     default:
-    //       this.$toast('閿欒')
-    //   }
-    // },
-
-    // 妫�鏌ユ槸鍚﹁皟鐢ㄦ憚鍍忓ご
-    // async onInit(promise) {
-    //   try {
-    //     await promise
-    //   } catch (error) {
-    //     if (error.name === 'StreamApiNotSupportedError') {
-    //     } else if (error.name === 'NotAllowedError') {
-    //       this.errorMessage = 'Hey! I need access to your camera'
-    //     } else if (error.name === 'NotFoundError') {
-    //       this.errorMessage = 'Do you even have a camera on your device?'
-    //     } else if (error.name === 'NotSupportedError') {
-    //       this.errorMessage =
-    //         'Seems like this page is served in non-secure context (HTTPS, localhost or file://)'
-    //     } else if (error.name === 'NotReadableError') {
-    //       this.errorMessage =
-    //         "Couldn't access your camera. Is it already in use?"
-    //     } else if (error.name === 'OverconstrainedError') {
-    //       this.errorMessage =
-    //         "Constraints don't match any installed camera. Did you asked for the front camera although there is none?"
-    //     } else {
-    //       this.errorMessage = 'UNKNOWN ERROR: ' + error.message
-    //     }
-    //   }
-    // },
       // 纭鍥炶皟
       selectPart(param, nodePart, index) {
         if (typeof param !== 'undefined') {
@@ -712,7 +716,6 @@
             for(var i=0;i<row.testValueList.length;i++){
               let val = row.testValueList[i]
               let reg = /^[0-9]*[1-9][0-9]*$/
-              console.log(['鏄�','鍚�'].includes(val));
               if(!reg.test(val) && !['鏄�','鍚�'].includes(val)){
                 this.$message.error("璇疯緭鍏ユ暟瀛楁垨閫夋嫨鏄惁")
                 row.testValueList[i] = null
diff --git a/src/views/technology/routing/routing-form.vue b/src/views/technology/routing/routing-form.vue
index 9a1e3d4..2fda547 100644
--- a/src/views/technology/routing/routing-form.vue
+++ b/src/views/technology/routing/routing-form.vue
@@ -699,14 +699,14 @@
       },
       dataRule: {
         partNo: [
-          { required: true, message: '闆朵欢涓嶈兘涓虹┖', trigger: 'change' }
+          { required: true, message: '闆朵欢涓嶈兘涓虹┖', trigger: 'blur' }
         ],
         bomTypeDb: [
           { required: true, message: '宸ヨ壓绫诲瀷涓嶈兘涓虹┖', trigger: 'change' }
         ],
         bomId: [{ required: true, message: 'BOM涓嶈兘涓虹┖', trigger: 'change' }],
         phaseInDate: [
-          { required: true, message: '閫愭閲囩敤鏃ユ湡涓嶈兘涓虹┖', trigger: 'blur' }
+          { required: true, message: '閫愭閲囩敤鏃ユ湡涓嶈兘涓虹┖', trigger: 'change' }
         ],
         alternativeNo: [
           { required: true, message: '鏇夸唬涓嶈兘涓虹┖', trigger: 'blur' }
diff --git a/vue.config.js b/vue.config.js
index 2618a6e..8e0599f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -4,6 +4,8 @@
  */
 
 
+// const url = 'http://192.168.2.7:9999'
+// const url = 'http://192.168.32.45:9999'
 const url = 'http://192.168.2.7:9999'
 // const url = 'http://192.168.32.45:9999'
 //const url = 'http://192.168.2.7:9999'

--
Gitblit v1.9.3