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

---
 src/views/admin/productType/index.vue                    |    9 
 src/views/quality/packageinspect/packageInspect-form.vue |  602 +++++++++++++++++++++++++
 src/views/quality/processconfiguration/index.vue         |    2 
 vue.config.js                                            |    5 
 src/router/views/index.js                                |   17 
 src/views/plan/manufacturingorder/productorder-form.vue  |  113 ++--
 src/views/plan/customerorder/customerorder-form.vue      |   41 +
 src/views/technology/operation/operation-form.vue        |    4 
 src/views/quality/Packaging_ledger/index.vue             |   12 
 src/api/quality/packageInspect.js                        |   39 +
 src/views/plan/manufacturingorder/teststandardtable.vue  |   16 
 src/views/product/workbench/productInDialog.vue          |    8 
 src/views/plan/productionschedul/index.vue               |  134 +++++
 src/views/quality/packageinspect/index.vue               |  231 +++++++++
 src/views/quality/Packaging_ledger/pack-from.vue         |    2 
 src/views/product/workbench/feed-pane.vue                |   78 ++
 src/views/basic/workstation/workstation-form.vue         |    8 
 src/api/plan/productionschedul.js                        |   10 
 src/views/quality/teststandard/index.vue                 |    4 
 src/views/product/workbench/feed-form.vue                |   49 +
 20 files changed, 1,245 insertions(+), 139 deletions(-)

diff --git a/src/api/plan/productionschedul.js b/src/api/plan/productionschedul.js
index c0df5f0..5c56f9a 100644
--- a/src/api/plan/productionschedul.js
+++ b/src/api/plan/productionschedul.js
@@ -10,7 +10,15 @@
 
 export function fetchScheduleById(id) {
   return request({
-    url: '/mes//productionSchedul/'+id,
+    url: '/mes/productionSchedul/'+id,
     method: 'get',
   })
+}
+
+export function fillTime(data) {
+  return request({
+    url: '/mes/productionSchedul/fillTime',
+    method: 'put',
+    data: data
+  })
 }
\ No newline at end of file
diff --git a/src/api/quality/packageInspect.js b/src/api/quality/packageInspect.js
new file mode 100644
index 0000000..f9881e6
--- /dev/null
+++ b/src/api/quality/packageInspect.js
@@ -0,0 +1,39 @@
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/mes/packageInspect/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchListById(id) {
+  return request({
+    url: '/mes/packageInspect/'+id,
+    method: 'get',
+  })
+}
+
+export function deleteById(id) {
+  return request({
+    url: '/mes/packageInspect/'+id,
+    method: 'delete',
+  })
+}
+
+export function updatePackageInsProduct(data) {
+  return request({
+    url: '/mes/packageInsProduct/updatePackageInsProduct',
+    method: 'post',
+    data: data
+  })
+}
+export function updatePackageInspectById(data) {
+  return request({
+    url: '/mes/packageInspect/updatePackageInspectById',
+    method: 'post',
+    params: data
+  })
+}
+
diff --git a/src/router/views/index.js b/src/router/views/index.js
index 7269a62..20e8be7 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -145,6 +145,23 @@
     ]
   },
   {
+    path: '/quality/packageinspect',
+    component: Layout,
+    children: [
+      {
+        path: 'packageInspect-form',
+        name: 'packageInspectForm',
+        component: () =>
+          import(/* webpackChunkName: "views" */ '@/views/quality/packageinspect/packageInspect-form'),
+        meta: {
+          keepAlive: false,
+          isTab: false,
+          isAuth: false
+        }
+      }
+    ]
+  },
+  {
     path: '/quality/rawMaterial',
     component: Layout,
     children: [
diff --git a/src/views/admin/productType/index.vue b/src/views/admin/productType/index.vue
index b23cc54..12120e7 100644
--- a/src/views/admin/productType/index.vue
+++ b/src/views/admin/productType/index.vue
@@ -54,7 +54,7 @@
       <el-dialog :visible.sync="dialogAddVisible" :close-on-click-modal="false" title="鏂板閰嶇疆">
       <el-form :model="prodForm" :rules="rules" ref="addDialog">
         <el-form-item prop="staffName" label="鐢ㄦ埛鍚嶇О:" label-width="90px">
-            <el-select style="width:100%" v-model="prodForm.staffName">
+            <el-select style="width:100%" v-model="prodForm.staffName" filterable placeholder="璇烽�夋嫨">
               <el-option v-for="(item,index) in staffNamesOptions" :key="index" :value="item.id" :label="item.staffName"/>
             </el-select>
         </el-form-item>
@@ -70,12 +70,12 @@
     </el-dialog>
     </div>
   </template>
-  
+
   <script>
   import { tableOption } from '@/const/crud/admin/productType'
   import { getList,addObj,delObj,chooseStaff } from '@/api/admin/productType'
   import { mapGetters } from 'vuex'
-  
+
   export default {
     name: 'TableProduct',
     data() {
@@ -184,7 +184,7 @@
     }
   }
   </script>
-  
+
   <style lang="scss" scoped>
     .el-dialog__wrapper {
     .el-dialog {
@@ -203,4 +203,3 @@
     }
     }
   </style>
-  
\ No newline at end of file
diff --git a/src/views/basic/workstation/workstation-form.vue b/src/views/basic/workstation/workstation-form.vue
index 9947e12..2449eea 100644
--- a/src/views/basic/workstation/workstation-form.vue
+++ b/src/views/basic/workstation/workstation-form.vue
@@ -127,7 +127,7 @@
           >
           </el-transfer>
         </el-tab-pane>
-        <el-tab-pane label="浜у嚭寰呮搴撲綅" name="inspection">
+       <!--  <el-tab-pane label="浜у嚭寰呮搴撲綅" name="inspection">
           <el-transfer
             filterable
             v-model="inspectionLocationIds"
@@ -137,7 +137,7 @@
             @change="handleChangeInspectionLocation"
           >
           </el-transfer>
-        </el-tab-pane>
+        </el-tab-pane> -->
         <!-- <el-tab-pane label="浜у嚭涓嶅悎鏍煎簱浣�" name="disqualified">
           <el-transfer
             filterable
@@ -160,7 +160,7 @@
           >
           </el-transfer>
         </el-tab-pane> -->
-        <el-tab-pane label="妫�楠屽緟澶勭悊搴撲綅" name="pending">
+        <!-- <el-tab-pane label="妫�楠屽緟澶勭悊搴撲綅" name="pending">
           <el-transfer
             filterable
             v-model="pendingLocationIds"
@@ -170,7 +170,7 @@
             @change="handleChangePendingLocation"
           >
           </el-transfer>
-        </el-tab-pane>
+        </el-tab-pane> -->
         <el-tab-pane label="鎴愬搧寰呮搴撲綅" name="product">
           <el-transfer
             filterable
diff --git a/src/views/plan/customerorder/customerorder-form.vue b/src/views/plan/customerorder/customerorder-form.vue
index ec8dfc5..f131c55 100644
--- a/src/views/plan/customerorder/customerorder-form.vue
+++ b/src/views/plan/customerorder/customerorder-form.vue
@@ -209,13 +209,12 @@
                 <el-input
                   v-model="dataForm.partNo"
                   placeholder=""
-                  disabled
                 >
                   <el-button
                     slot="append"
                     icon="el-icon-search"
-                    @click="openSalesPartDialog()"
-                    v-show="dataForm.id==null"
+                    @click="openPartDialog()"
+
                   ></el-button>
                 </el-input>
               </el-form-item>
@@ -1052,7 +1051,7 @@
             // } else {
             //   console.log('2')
             this.dataForm = response.data.data
-            
+
             // }
             // this.fileList = response.data.data.customerOrderAttachmentList
             const sourceId = response.data.data.sourceId
@@ -1194,25 +1193,35 @@
         }
       })
     },
-    // 闆朵欢閫夋嫨
+        // 闆朵欢閫夋嫨
     openPartDialog() {
-      if (
-        this.dataForm.coState === '01partUnCheck' ||
-        this.dataForm.coState === '02technologyUnCheck'
-      ) {
-        this.showPart = true
-      } else {
-        this.$message.warning(
-          '璁㈠崟鍙湁鍦ㄣ�愰浂浠跺緟閫夈�戙�併�愬伐鑹烘枃浠跺緟閫夈�戠姸鎬佷笅锛屾墠鑳借繘琛岄浂浠朵慨鏀�'
-        )
-      }
+      this.showPart = true
     },
     selectPart(part) {
+      console.log(part);
       if (part) {
         this.dataForm.partNo = part.partNo
-        this.$refs.dataForm.validateField('partNo', (valid) => {})
       }
     },
+    // 闆朵欢閫夋嫨
+    // openPartDialog() {
+    //   if (
+    //     this.dataForm.coState === '01partUnCheck' ||
+    //     this.dataForm.coState === '02technologyUnCheck'
+    //   ) {
+    //     this.showPart = true
+    //   } else {
+    //     this.$message.warning(
+    //       '璁㈠崟鍙湁鍦ㄣ�愰浂浠跺緟閫夈�戙�併�愬伐鑹烘枃浠跺緟閫夈�戠姸鎬佷笅锛屾墠鑳借繘琛岄浂浠朵慨鏀�'
+    //     )
+    //   }
+    // },
+    // selectPart(part) {
+    //   if (part) {
+    //     this.dataForm.partNo = part.partNo
+    //     this.$refs.dataForm.validateField('partNo', (valid) => {})
+    //   }
+    // },
     // 鍏ㄥ睆
     fullscreen() {
       this.isFullScreen = !this.isFullScreen
diff --git a/src/views/plan/manufacturingorder/productorder-form.vue b/src/views/plan/manufacturingorder/productorder-form.vue
index ba11120..d4fcf52 100644
--- a/src/views/plan/manufacturingorder/productorder-form.vue
+++ b/src/views/plan/manufacturingorder/productorder-form.vue
@@ -8,7 +8,7 @@
       </div>
       <div class="btn-group header-right" v-if="editable">
         <el-button :disabled="isSubmit" v-thinclick="`dataFormSubmit`"
-          >淇濆瓨</el-button
+          type="primary">淇濆瓨</el-button
         >
       </div>
     </div>
@@ -126,7 +126,6 @@
               </el-form-item>
             </el-col>
           </el-row>
-
           <el-row :gutter="10">
             <el-col :span="6">
               <el-form-item label="澶囨敞" prop="remark">
@@ -151,39 +150,37 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="8">
-              <el-col
-                :span="8"
-                v-if="permissions.plan_manufacturingorder_bom_sure"
-              >
-                <el-form-item label="BOM纭">
-                  <el-switch v-model="dataForm.bomConfirmStatus"> </el-switch>
-                </el-form-item>
-              </el-col>
-              <el-col
-                :span="8"
-                v-if="permissions.plan_manufacturingorder_process_sure"
-              >
-                <el-form-item label="宸ヨ壓纭">
-                  <el-switch v-model="dataForm.processConfirmStatus">
-                  </el-switch>
-                </el-form-item>
-              </el-col>
-              <el-col
-                :span="8"
-                v-if="permissions.plan_manufacturingorder_test_sure"
-              >
-                <el-form-item label="妫�娴嬫爣鍑嗙‘璁�">
-                  <el-switch v-model="dataForm.standardConfirmStatus">
-                  </el-switch>
-                </el-form-item>
-              </el-col>
+            <el-col
+              :span="2"
+              v-if="permissions.plan_manufacturingorder_bom_sure"
+            >
+              <el-form-item label="BOM纭" label-width="110px">
+                <el-switch v-model="dataForm.bomConfirmStatus"> </el-switch>
+              </el-form-item>
             </el-col>
-            <el-col :span="4">
+            <el-col
+              :span="2"
+              v-if="permissions.plan_manufacturingorder_process_sure"
+            >
+              <el-form-item label="宸ヨ壓纭" label-width="110px">
+                <el-switch v-model="dataForm.processConfirmStatus">
+                </el-switch>
+              </el-form-item>
+            </el-col>
+            <el-col
+              :span="2"
+              v-if="permissions.plan_manufacturingorder_test_sure"
+            >
+              <el-form-item label="妫�娴嬫爣鍑嗙‘璁�" label-width="140px">
+                <el-switch v-model="dataForm.standardConfirmStatus">
+                </el-switch>
+              </el-form-item>
+            </el-col>
+            <el-col :span="2">
               <el-form-item
                 label="IFS杞﹂棿璁㈠崟鎺ユ敹鏃舵姤鍛婂伐搴�"
                 prop="isReportOperation"
-                label-width="200px"
+                label-width="250px"
               >
                 <el-switch v-model="dataForm.isReportOperation" disabled>
                 </el-switch>
@@ -595,8 +592,19 @@
 
               <el-tab-pane label="浜у搧缁撴瀯" id="ta1" key="ta1" name="ta1">
                 <el-row>
-                  <el-col :span="11">
-                    <el-form-item label="瀹屾暣BOM">
+                  <el-col :span="2" style="text-align: center">
+                    <el-button
+                      type="text"
+                      size="small"
+                      icon="el-icon-circle-plus-outline"
+                      style="color:#f56c6c;"
+                      :disabled="!dataForm.id"
+                      @click="addStruct()"
+                      >娣诲姞鍏冪礌
+                    </el-button>
+                  </el-col>
+                  <el-col :offset="11" :span="11">
+                    <!-- <el-form-item label="瀹屾暣BOM">
                       <el-select
                         @change="bomSelectChanged"
                         disabled
@@ -622,18 +630,7 @@
                         >
                         </el-option>
                       </el-select>
-                    </el-form-item>
-                  </el-col>
-                  <el-col :offset="11" :span="2" style="text-align: center">
-                    <el-button
-                      type="text"
-                      size="small"
-                      icon="el-icon-circle-plus-outline"
-                      style="color:#f56c6c;"
-                      :disabled="!dataForm.id"
-                      @click="addStruct()"
-                      >娣诲姞鍏冪礌
-                    </el-button>
+                    </el-form-item> -->
                   </el-col>
                 </el-row>
                 <el-row>
@@ -644,7 +641,7 @@
                     style="width: 100%"
                     height="400px"
                   >
-                    <el-table-column type="selection" width="40" fixed="left" />
+                    <!-- <el-table-column type="selection" width="40" fixed="left" /> -->
                     <el-table-column
                       type="index"
                       width="50"
@@ -662,7 +659,7 @@
                     />
                     <el-table-column
                       prop="partName"
-                      width=""
+                      width="200"
                       header-align="center"
                       align="left"
                       label="闆朵欢"
@@ -2107,17 +2104,17 @@
     },
     // 鎵撳紑bom鑺傜偣
     addStruct() {
-      if (this.structSelection.length <= 0) {
-        this.$message.error('璇烽�夋嫨闇�瑕佹坊鍔犲厓绱犵殑鑺傜偣')
-      } else {
-        if (this.structSelection.length === 1) {
-          this.selectedStruct = this.structSelection[0]
-          this.moId = this.dataForm.id
-          this.showStructForm = true
-        } else {
-          this.$message.error('鍙兘涓哄崟涓妭鐐规坊鍔犲厓绱�')
-        }
-      }
+      this.selectedStruct = this.structSelection[0]
+      this.moId = this.dataForm.id
+      this.showStructForm = true
+      // if (this.structSelection.length <= 0) {
+      //   this.$message.error('璇烽�夋嫨闇�瑕佹坊鍔犲厓绱犵殑鑺傜偣')
+      // } else {
+      //   if (this.structSelection.length === 1) {
+      //   } else {
+      //     this.$message.error('鍙兘涓哄崟涓妭鐐规坊鍔犲厓绱�')
+      //   }
+      // }
     },
     refreshBom(node) {
       if (this.selectedStruct.children != null) {
diff --git a/src/views/plan/manufacturingorder/teststandardtable.vue b/src/views/plan/manufacturingorder/teststandardtable.vue
index 0c30093..6e4ad6b 100644
--- a/src/views/plan/manufacturingorder/teststandardtable.vue
+++ b/src/views/plan/manufacturingorder/teststandardtable.vue
@@ -111,14 +111,14 @@
         height="100%"
         style="width: 100%"
       >
-        <el-table-column prop="index" label="搴忓彿" align="center" width="50" />
+        <!-- <el-table-column prop="index" label="搴忓彿" align="center" width="50" />
         <el-table-column label="绾胯姱" prop="wireCore" align="center" />
         <el-table-column
           prop="isCheck"
           label="鎶芥"
           align="center"
           :formatter="isCheckFormatter"
-        />
+        /> -->
         <el-table-column label="鍙傛暟缂栧彿" prop="code" align="center" />
         <el-table-column label="鍙傛暟椤�" prop="parameterItem" align="center" />
         <el-table-column label="妫�娴嬭寖鍥�" prop="referenceValue" align="center">
@@ -162,10 +162,10 @@
             ></el-input>
           </template>
         </el-table-column>
-        <el-table-column label="閫氶亾" prop="aisle" align="center" />
-        <el-table-column label="閮ㄤ綅" prop="position" align="center" />
+        <!-- <el-table-column label="閫氶亾" prop="aisle" align="center" />
+        <el-table-column label="閮ㄤ綅" prop="position" align="center" /> -->
         <el-table-column label="鍗曚綅" prop="unit" align="center" />
-        <el-table-column
+        <!-- <el-table-column
           prop="extendsRoutingNo"
           label="缁ф壙宸ヨ壓璺嚎"
           align="center"
@@ -184,7 +184,7 @@
           prop="extendsTestStandardParamNo"
           label="缁ф壙鏍囧噯鍙傛暟"
           align="center"
-        />
+        /> -->
         <el-table-column label="鎿嶄綔" align="center" width="118">
           <template slot-scope="scope">
             <el-button
@@ -193,12 +193,12 @@
               @click.stop="insertOperationParam(scope.row)"
               >鎻掑叆
             </el-button>
-            <el-button
+            <!-- <el-button
               type="text"
               size="mini"
               @click.stop="editTestStandardParam(scope.row)"
               >鍏紡
-            </el-button>
+            </el-button> -->
             <el-button
               type="text"
               size="mini"
diff --git a/src/views/plan/productionschedul/index.vue b/src/views/plan/productionschedul/index.vue
index fa6061d..3a03c19 100644
--- a/src/views/plan/productionschedul/index.vue
+++ b/src/views/plan/productionschedul/index.vue
@@ -3,7 +3,7 @@
     <basic-container>
       <el-row>
         <el-col :span="12">
-          <div style="height:80vh">
+          <div style="height:80vh;padding: 0px 10px;">
             <avue-crud :data="tableData" ref="crud" :option="option" :span-method="spanMethod" 
             @refresh-change="getData"
             :page="page" 
@@ -20,18 +20,23 @@
             <el-card>
               <div slot="header" class="clearfix">
                 <span>璋冨害鏃堕棿绾�</span>
-                <el-button style="float: right; padding: 3px 0" type="text">鎿嶄綔鎸夐挳</el-button>
+                <el-button v-if="scheduleList.length>0" @click="openEditDialog" style="float: right; padding: 3px 0" type="text">缂栬緫</el-button>
               </div>
               <div style="height:70vh;overflow-y: scroll;">
-                <el-timeline reverse>
+                <el-timeline>
                     <el-timeline-item
                       placement="top"
                       v-for="(item, index) in scheduleList"
                       :key="index"
-                      :timestamp="item.planTime">
-                        <el-card style="width:95%;margin: 0;padding: 0px 10px;">
-                          <p style="font-weight: bold;">{{item.title}}</p>
-                          <p>瀹為檯鏃堕棿: {{ item.actualTime }}</p>
+                      :timestamp="item.title">
+                        <el-card shadow="hover" :body-style="{margin: '0',padding:'0px 20px 0px 20px'}" style="width:90%;">
+                          <p>
+                            <span style="font-weight: bold;">璁″垝鏃堕棿: </span>
+                            {{item.planTime}}
+                          </p>
+                          <p>
+                            <span style="font-weight: bold;">瀹為檯鏃堕棿: </span>
+                            {{ item.actualTime }}</p>
                         </el-card>
                     </el-timeline-item>
                 </el-timeline>
@@ -41,6 +46,57 @@
         </el-col>
       </el-row>
     </basic-container>
+    <el-dialog
+    title="缂栬緫鏃堕棿绾�"
+    :visible.sync="dialogVisible"
+    top="5vh"
+    width="50%"
+    :before-close="handleClose">
+      <div style="height:60vh;overflow-y: scroll;">
+        <el-timeline>
+          <el-timeline-item
+            placement="top"
+            v-for="(item, index) in scheduleEditList"
+            :key="index"
+            :timestamp="item.title">
+              <el-card shadow="hover" style="width:90%" :body-style="{padding:'20px 20px 5px 20px'}">
+                <el-row>
+                  <el-col :span="3">
+                    <p style="font-weight: bold;line-height: 50%;">璁″垝鏃堕棿: </p>
+                  </el-col>
+                  <el-col :span="21">
+                    <el-date-picker
+                      style="width:100%"
+                      v-model="item.planTime"
+                      value-format="yyyy-MM-dd HH:mm:ss"
+                      type="datetime" 
+                      placeholder="閫夋嫨鏃ユ湡鏃堕棿">
+                    </el-date-picker>
+                  </el-col>
+                </el-row>
+                <el-row>
+                  <el-col :span="3">
+                    <p style="font-weight: bold;line-height: 50%;">瀹為檯鏃堕棿: </p>
+                  </el-col>
+                  <el-col :span="21">
+                    <el-date-picker
+                      style="width:100%"
+                      v-model="item.actualTime"
+                      value-format="yyyy-MM-dd HH:mm:ss"
+                      type="datetime" 
+                      placeholder="閫夋嫨鏃ユ湡鏃堕棿">
+                    </el-date-picker>
+                  </el-col>
+                </el-row>
+              </el-card>
+          </el-timeline-item>
+        </el-timeline>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmEditSchedul">纭� 瀹�</el-button>
+      </span>
+  </el-dialog>
   </div>
 </template>
 
@@ -48,6 +104,7 @@
 import {
   fetchScheduleList,
   fetchScheduleById,
+  fillTime
 } from '@/api//plan/productionschedul'
 import TableForm from './template-form'
 import ttable from '@/views/common/ztt-table.vue'
@@ -55,7 +112,9 @@
 export default {
     data() {
     return {
+      dialogVisible: false,
       scheduleList: [],
+      scheduleEditList: [],
       typeOptions: [],
       multipleSelection: [],
       loading: true,
@@ -221,6 +280,53 @@
   beforeDestroy() {
   },
   methods: {
+    openEditDialog(){
+      this.scheduleEditList = JSON.parse(JSON.stringify(this.scheduleList))
+      this.dialogVisible = true
+    },
+    confirmEditSchedul(){
+      let data = this.scheduleEditList
+      let orderObj = this.multipleSelection[0]
+      console.log("data---",data)
+      console.log("orderObj-----",orderObj)
+      let obj = {
+        "documentActualTime": data[0].actualTime,
+        "documentPlanTime": data[0].planTime,
+        "bomActualTime": data[1].actualTime,
+        "bomPlanTime": data[1].planTime,
+        "contractActualTime": data[2].actualTime,
+        "contractPlanTime": data[2].planTime,
+        "arrivalActualTime": data[3].actualTime,
+        "arrivalPlanTime": data[3].planTime,
+        "checkActualTime": data[4].actualTime,
+        "checkPlanTime": data[4].planTime,
+        "productActualTime": data[5].actualTime,
+        "productPlanTime": data[5].planTime,
+        "id": orderObj.id,
+        "contractNo": orderObj.contractNo,
+        "customerName": orderObj.customerName,
+        "deliveryDate": orderObj.deliveryDate,
+        "orderTime": orderObj.orderTime,
+        "productType": orderObj.productType,
+        "projectName": orderObj.projectName
+      }
+      console.log("obj----->>>",obj);
+      fillTime(obj).then(res=>{
+        if(res.status===200){
+          this.$message.success("鏇存柊鎴愬姛")
+        }else{
+          this.$message.error("鏇存柊澶辫触")
+        }
+        this.getScheduleById(orderObj.id)
+        this.dialogVisible = false
+      }).catch(error=>{
+        console.log(error);
+      })
+
+    },
+    handleClose(done){
+      done()
+    },
     initTimeLine(data){
       this.scheduleList = []
       if(data){
@@ -270,10 +376,14 @@
     },
     selectionRow(val){
       if (val.length > 1) {
-         const preVal = val.shift();
-         this.$refs.crud.toggleRowSelection(preVal, false);
-       }
-       this.getScheduleById(val[0].id)
+        const preVal = val.shift();
+        this.$refs.crud.toggleRowSelection(preVal, false);
+      }
+      else{
+        this.scheduleList=[]
+      }
+      this.multipleSelection = val
+      this.getScheduleById(val[0].id)
     },
     formatDate(row, cellValue){
       if (cellValue) {
@@ -295,9 +405,9 @@
         this.tableData = res.data.data.records
         this.page.total = res.data.data.total
         this.page.currentPage = res.data.data.records.pages
+        this.scheduleList = []
       })
       this.loading = false
-
     },
     handleCurrentChange(val) {
       this.multipleSelection = val
diff --git a/src/views/product/workbench/feed-form.vue b/src/views/product/workbench/feed-form.vue
index ccfa65d..e2c0374 100644
--- a/src/views/product/workbench/feed-form.vue
+++ b/src/views/product/workbench/feed-form.vue
@@ -1,6 +1,7 @@
 <template>
   <el-dialog
-    width="40%"
+    width="60%"
+    top="5vh"
     title="鎶曟枡"
     :visible.sync="innerVisible"
     append-to-body
@@ -15,17 +16,20 @@
           :key="tableKey"
           :data="dataList"
           border
-          style="width: 100%;"
+          height="400"
+          style="width: 100%;overflow-y: scroll;"
           @cell-dblclick="dblhandleCurrentChange"
           show-summary
           :span-method="objectSpanMethod"
           :summary-method="getSummaries"
         >
+          <el-table-column header-align="center" align="center" type="index" label="搴忓彿"></el-table-column>
           <el-table-column
             prop="partNo"
             header-align="center"
             align="center"
             label="闆朵欢缂栧彿"
+            show-overflow-tooltip
           >
           </el-table-column>
           <el-table-column
@@ -33,6 +37,7 @@
             header-align="center"
             align="center"
             label="闆朵欢"
+            show-overflow-tooltip
           >
           </el-table-column>
           <el-table-column
@@ -40,6 +45,7 @@
             header-align="center"
             align="center"
             label="鎵瑰彿"
+            show-overflow-tooltip
           >
           </el-table-column>
           <!-- <el-table-column
@@ -72,7 +78,13 @@
             header-align="center"
             align="center"
             label="鍗曚綅"
+            show-overflow-tooltip
           >
+          </el-table-column>
+          <el-table-column prop="menu" label="鎿嶄綔"  header-align="center" align="center">
+            <template scope="scope">
+              <el-button type="text" icon="el-icon-circle-close" @click="cancelFeed(scope.$index,scope.row)">鍙栨秷</el-button>
+            </template>
           </el-table-column>
         </el-table>
       </div>
@@ -142,6 +154,12 @@
       password: null
     }
   },
+  beforeUpdate(){
+    this.$nextTick(()=>{
+      this.objectSpanMethod()
+      this.$refs.table.doLayout()
+    })
+  },
   directives: {
     focus: {
       inserted: function(el, option) {
@@ -162,6 +180,10 @@
     }
   },
   methods: {
+    //鎶曞叆鍙栨秷鎸夐挳
+    cancelFeed(index,row){
+      this.dataList.splice(index,1)
+    },
     confirmData() {
       if (this.password != null) {
         checkSubmitPassword({ password: this.password }).then((response) => {
@@ -286,16 +308,16 @@
       return reg.test(value)
     },
     objectSpanMethod() {
-      setTimeout(() => {
+      this.$nextTick(()=>{
         if (this.$refs.table.$el) {
           const current = this.$refs.table.$el
             .querySelector('.el-table__footer-wrapper')
             .querySelector('.el-table__footer')
           const cell = current.rows[0].cells
           // cell[1].style.display = 'none'
-          cell[0].colSpan = '4'
+          cell[0].colSpan = '6'
         }
-      }, 50)
+      })
     },
     getSummaries(param) {
       const { columns, data } = param
@@ -325,12 +347,19 @@
   },
   watch: {
     currshowlist() {
-      this.innerVisible = this.currshowlist
-      this.password = null
-      if (this.currshowlist) {
-        this.$nextTick(() => {})
+      const _than = this
+      _than.innerVisible = _than.currshowlist
+      _than.password = null
+      if (!_than.currshowlist) {
+        _than.$nextTick(() => {
+        })
       }
-    }
+    },
+  },
+  created(){
+    this.$nextTick(()=>{
+      this.objectSpanMethod()
+    })
   },
   mounted() {}
 }
diff --git a/src/views/product/workbench/feed-pane.vue b/src/views/product/workbench/feed-pane.vue
index 743e9a2..0b41376 100644
--- a/src/views/product/workbench/feed-pane.vue
+++ b/src/views/product/workbench/feed-pane.vue
@@ -137,7 +137,7 @@
       </el-table-column>
     </el-table>
     <el-tabs v-model="activeName">
-      <el-tab-pane name="first" label="绾胯竟浠撳悎鏍肩墿鏂�">
+      <!-- <el-tab-pane name="first" label="绾胯竟浠撳悎鏍肩墿鏂�"> -->
         <div class="line-side-warehouse-header">
           <div>
             <el-divider class="pane-divider" direction="vertical"></el-divider
@@ -375,7 +375,7 @@
           >
             <template slot="header">
               <div style="line-height: 14px;">鍙敤鏁伴噺</div>
-              <!-- <div class="th" @click.stop>
+              <div class="th" @click.stop>
                 <el-input
                   type="text"
                   v-model="queryParamTwo.availableStockQuantity"
@@ -384,7 +384,7 @@
                   @clear="handleStockList"
                   size="mini"
                 ></el-input>
-              </div> -->
+              </div>
             </template>
             <template slot-scope="scope">
               <span>{{ scope.row.availableStockQuantity }}</span>
@@ -393,7 +393,7 @@
           <el-table-column label="搴撳瓨鏁伴噺" prop="stockQuantity" align="center">
             <template slot="header">
               <div style="line-height: 14px;">搴撳瓨鏁伴噺</div>
-              <!-- <div class="th" @click.stop>
+              <div class="th" @click.stop>
                 <el-input
                   type="text"
                   v-model="queryParamTwo.stockQuantity"
@@ -402,19 +402,19 @@
                   @clear="handleStockList"
                   size="mini"
                 ></el-input>
-              </div> -->
+              </div>
             </template>
             <template slot-scope="scope">
               <span>{{ scope.row.stockQuantity }}</span>
             </template>
           </el-table-column>
-          <el-table-column
+          <!-- <el-table-column
             label="棰勭暀鏁伴噺"
             prop="reserveQuantity"
             align="center"
           >
             <template slot="header">
-              <div style="line-height: 14px;">棰勭暀鏁伴噺</div>
+              <div style="line-height: 14px;">棰勭暀鏁伴噺</div> -->
               <!-- <div class="th" @click.stop>
                 <el-input
                   type="text"
@@ -425,9 +425,33 @@
                   size="mini"
                 ></el-input>
               </div> -->
-            </template>
+            <!-- </template>
             <template slot-scope="scope">
               <span>{{ scope.row.reserveQuantity }}</span>
+            </template>
+          </el-table-column> -->
+          <el-table-column label="鏄惁宸ュ簭搴撳瓨" prop="operationStockStatus" align="center">
+            <template slot-scope="scope">
+              <span v-if="scope.row.operationStockStatus">鏄�</span>
+              <span v-else>鍚�</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="鎵�灞炲伐搴�" prop="name" align="center">
+            <template slot="header">
+              <div style="line-height: 14px;">鎵�灞炲伐搴�</div>
+              <div class="th" @click.stop>
+                <el-input
+                  type="text"
+                  v-model="queryParamTwo.name"
+                  @keyup.enter.native="handleStockList"
+                  clearable
+                  @clear="handleStockList"
+                  size="mini"
+                ></el-input>
+              </div>
+            </template>
+            <template slot-scope="scope">
+              <span>{{ scope.row.name }}</span>
             </template>
           </el-table-column>
           <el-table-column label="搴撲綅鍙�" prop="locationNo" align="center">
@@ -461,7 +485,7 @@
           >
           </el-pagination>
         </div> -->
-      </el-tab-pane>
+      <!-- </el-tab-pane> -->
       <!-- <el-tab-pane name="second" label="绾胯竟浠撳緟澶勭悊鐗╂枡">
         <div class="line-side-warehouse-header">
           <div>
@@ -480,7 +504,7 @@
               >鎵爜鎶曟枡</el-button
             >
             <el-button
-              class="feeding-btn"
+              class="feeding-btn"locationNo
               type="primary"
               icon="feed-btn-feeding"
               @click="addFeed()"
@@ -1358,6 +1382,30 @@
           <span>{{ scope.row.stockQuantity }}</span>
         </template>
       </el-table-column>
+      <el-table-column label="鏄惁宸ュ簭搴撳瓨" prop="operationStockStatus" align="center">
+        <template slot-scope="scope">
+          <span v-if="scope.row.operationStockStatus">鏄�</span>
+          <span v-else>鍚�</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎵�灞炲伐搴�" prop="name" align="center">
+        <template slot="header">
+          <div style="line-height: 14px;">鎵�灞炲伐搴�</div>
+          <div class="th" @click.stop>
+            <el-input
+                  type="text"
+                  v-model="queryParamTwo.name"
+                  @keyup.enter.native="handleStockList"
+                  clearable
+                  @clear="handleStockList"
+                  size="mini"
+            ></el-input>
+          </div>
+        </template>
+        <template slot-scope="scope">
+          <span>{{ scope.row.name }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="搴撲綅鍙�" prop="ifsLocation" align="center">
         <template slot="header" slot-scope="scope">
           <div style="line-height: 14px;">搴撲綅鍙�</div>
@@ -1373,7 +1421,7 @@
           </div>
         </template>
         <template slot-scope="scope">
-          <span>{{ scope.row.ifsLocation }}</span>
+          <span>{{ scope.row.locNo }}</span>
         </template>
       </el-table-column>
       <el-table-column label="鍗曚綅" prop="unit" align="center">
@@ -2176,6 +2224,14 @@
     }
   },
   watch: {
+    showFeedForm:{
+      handler(newVal,oldVal){
+        if(!newVal){
+          this.$refs.stockTable.toggleAllSelection(false)
+        }
+      },
+      deep: true
+    },
     workstationId() {
       this.$nextTick(() => {
         if (this.currItem != null && this.currItem === 'feed') {
diff --git a/src/views/product/workbench/productInDialog.vue b/src/views/product/workbench/productInDialog.vue
index 6c6bf7c..ab22650 100644
--- a/src/views/product/workbench/productInDialog.vue
+++ b/src/views/product/workbench/productInDialog.vue
@@ -31,8 +31,8 @@
         :show-overflow-tooltip="true"
       >
       </el-table-column>
-      <el-table-column label="闆朵欢鎵瑰彿" prop="partBatchNo" align="center">
-      </el-table-column>
+      <!-- <el-table-column label="闆朵欢鎵瑰彿" prop="partBatchNo" align="center">
+      </el-table-column> -->
       <el-table-column label="瑙勬牸鍨嬪彿" prop="specs" align="center">
       </el-table-column>
       <el-table-column
@@ -45,6 +45,10 @@
       </el-table-column>
       <el-table-column label="鍗曚綅" prop="unit" align="center">
       </el-table-column>
+      <el-table-column label="鏄惁宸ュ簭搴撳瓨" prop="operationStockStatus" align="center">
+      </el-table-column>
+      <el-table-column label="鎵�灞炲伐搴�" prop="name" align="center">
+      </el-table-column>
     </el-table>
 
     <div slot="footer" class="dialog-footer">
diff --git a/src/views/quality/Packaging_ledger/index.vue b/src/views/quality/Packaging_ledger/index.vue
index 0e98986..45b5115 100644
--- a/src/views/quality/Packaging_ledger/index.vue
+++ b/src/views/quality/Packaging_ledger/index.vue
@@ -41,6 +41,7 @@
                     </el-col>
                     <el-col :span="2">
                     <el-button
+                        v-if="!isCheck"
                         style="float: right; padding: 3px 0"
                         type="text"
                         @click="relateOperationParam()"
@@ -118,8 +119,7 @@
         <!-- 鏂板 -->
         <packfrom
         :currshowlist.sync="addOrUpdateVisible"
-        @way = "wayRenovate"
-        >
+        @refreshDataList="getData">
         </packfrom>
         <packfromadd
         :currshowlist.sync="increase"
@@ -139,6 +139,7 @@
 export default {
     data(){
         return {
+          isCheck: false,
           dataway:{},
           goid:'',
           testStandardParams: [],
@@ -240,7 +241,7 @@
                 operator: [
                     {
                       text: '妫�楠�',
-                      icon: 'el-icon-delete',
+                      icon: 'el-icon-position',
                       type: 'text',
                       size: 'small',
                       fun: this.check
@@ -289,6 +290,9 @@
         })
       },
       handleCurrentChange(row){
+        if(row.state=='宸叉姤妫�'){
+          this.isCheck = true
+        }
         this.dataway = row
         this.packageBoxId = {
           packageBoxId:row.id
@@ -306,7 +310,7 @@
         if (this.dataway.state == "鏈姤妫�") {
             this.increase = true
         }else{
-          this.$message.error('鏀归」鐩凡瀹屾垚妫�楠�')
+          this.$message.error('璇峰厛閫夋嫨鍖呰椤圭洰')
         }
       },
       preserve(datalist){
diff --git a/src/views/quality/Packaging_ledger/pack-from.vue b/src/views/quality/Packaging_ledger/pack-from.vue
index 7d25944..7398799 100644
--- a/src/views/quality/Packaging_ledger/pack-from.vue
+++ b/src/views/quality/Packaging_ledger/pack-from.vue
@@ -158,9 +158,9 @@
             contractNo:this.datalistid.contractNo
         }   
         pagedataadd (packageBox).then((res =>{
-            this.$emit('way',res )
             if (res.status === 200) {
                 this.$message.success('鏂板鎴愬姛')
+                this.$emit('refreshDataList')
             }else{
                 this.$message.error('鍒涘缓澶辫触')
             }
diff --git a/src/views/quality/packageinspect/index.vue b/src/views/quality/packageinspect/index.vue
new file mode 100644
index 0000000..a575e60
--- /dev/null
+++ b/src/views/quality/packageinspect/index.vue
@@ -0,0 +1,231 @@
+<!--
+  -    Copyright (c) 2018-2025, ztt All rights reserved.
+  -
+  - Redistribution and use in source and binary forms, with or without
+  - modification, are permitted provided that the following conditions are met:
+  -
+  - Redistributions of source code must retain the above copyright notice,
+  - this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright
+  - notice, this list of conditions and the following disclaimer in the
+  - documentation and/or other materials provided with the distribution.
+  - Neither the name of the pig4cloud.com developer nor the names of its
+  - contributors may be used to endorse or promote products derived from
+  - this software without specific prior written permission.
+  - Author: ztt
+  -->
+  <template>
+    <div class="mod-config">
+        <basic-container>
+            <ttable 
+            :table="table"
+            :resultData="resultData"
+            @handleSelectionChange="handleSelectionChange"
+            :prelang="prelang"
+            :options="options"
+            :ajaxFun="ajaxFun"
+            ref="packageInspectTable">
+            <template #toolbar>
+            </template>
+            </ttable>
+        </basic-container>
+        <!-- 寮圭獥, 鏂板 / 淇敼 -->
+        <!-- <RawMaterialForm
+            v-if="addOrUpdateVisible"
+            ref="addOrUpdate"
+            @refreshDataList="getData"
+        ></RawMaterialForm> -->
+    </div>
+</template>
+<script>
+import ttable from '@/views/common/ztt-table.vue'
+import { fetchList,deleteById } from '@/api/quality/packageInspect'
+// import RawMaterialForm from './rawMaterial-form'
+import * as fecha from 'element-ui/lib/utils/date'
+import { mapGetters } from 'vuex'
+  export default {
+    data() {
+        return {
+            resultData:[],
+            addOrUpdateVisible: false,
+            type: [1],
+            multipleSelection: [],
+            prelang: 'packageInspect',
+            ajaxFun: fetchList,
+            options: {
+                height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
+                stripe: true, // 鏄惁涓烘枒椹汗 table
+                highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
+                border: true, // 鏄惁鏈夌旱鍚戣竟妗�
+                lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
+                fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
+                multiSelect: true, //
+                seqNo: true,
+                isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
+                isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
+                isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
+                defaultOrderBy: { column: 'createTime', direction: 'desc' },
+            },
+            table: {
+                total: 0,
+                currentPage: 1,
+                pageSize: 20,
+                data: [],
+                // 鏍囬
+                column: [
+                    {
+                        minWidth: '180',
+                        prop: 'packInsNo',
+                        label: '鍖呰妫�楠岀紪鍙�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                        render: { fun: this.addOrUpdateHandle }
+                    },
+                    {
+                        minWidth: '180',
+                        prop: 'packageNo',
+                        label: '鍖呰缂栫爜',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '180',
+                        prop: 'contractNo',
+                        label: '鍚堝悓鍙�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '180',
+                        prop: 'projectName',
+                        label: '椤圭洰鍚嶇О',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '180',
+                        prop: 'customerName',
+                        label: '瀹㈡埛鍚嶇О',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '180',
+                        prop: 'createTime',
+                        label: '鎶ユ鏃ユ湡',
+                        isTrue: true,
+                        sort: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                        formatter: this.formatDateTime,
+                    },
+                    {
+                        minWidth: '180',
+                        prop: 'createUser',
+                        label: '鎶ユ浜�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '200',
+                        prop: 'result',
+                        label: '缁撹',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                ],
+                toolbar: [
+                    // {
+                    //     text: '鏂板',
+                    //     type: 'primary',
+                    //     fun: this.addOrUpdateHandle
+                    // },
+                ],
+                operator: [
+                {
+                    text: '浣滃簾',
+                    type: 'text',
+                    size: 'small',
+                    fun: this.deleteHandle
+                }],
+                operatorConfig: {
+                fixed: 'right',
+                label: '鎿嶄綔',
+                width: 100,
+                minWidth: 100
+                },
+            },
+        }
+    },
+    components: {
+        ttable,
+    },
+    created() { },
+    computed: {
+        ...mapGetters(['permissions'])
+    },
+    watch:{
+
+    },
+    methods:{
+        // 鍒犻櫎
+        deleteHandle(row) {
+            const _than = this
+            this.$confirm('鏄惁纭鍒犻櫎鍖呰缂栧彿銆�' + row.packInsNo+'銆戠殑鏁版嵁锛�' , '鎻愮ず', {
+                confirmButtonText: '纭畾',
+                cancelButtonText: '鍙栨秷',
+                closeOnClickModal: false,
+                type: 'warning'
+            }).then(function() {
+                deleteById(row.id).then((response)=>{
+                    var data = response.data
+                    if (data.code == 0) {
+                        _than.$message.success('鍒犻櫎鎴愬姛')
+                    } else {
+                        _than.$message.error('鍒犻櫎澶辫触')
+                    }
+                    _than.getData()
+                })
+            }).catch((error) => {
+                console.log(error);
+            })
+        },
+        // 鏂板 / 淇敼
+        addOrUpdateHandle(row) {
+            this.$router.push({
+                name: 'packageInspectForm',
+                query: { 
+                    id: row == null ? null : row.id
+                 },
+                 params:{resultVal : row.result=='' ? null : row.result}
+            })
+        },
+        formatResult(row, column, cellValue){
+            if(cellValue != undefined || cellValue != null){
+                if(cellValue == '涓嶅悎鏍�'){
+                    return "<span style='color:#E84738;'>涓嶅悎鏍�</span>"
+                }
+                return "<span style='color:#34BD66;'>鍚堟牸</span>"
+            }
+        },
+        formatDateTime(row, column, cellValue) {
+            return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : ''
+        },
+        getData() {
+            this.$refs.packageInspectTable.getDataList()
+        },
+        // table鑷甫浜嬩欢
+        handleSelectionChange(val) {
+            this.multipleSelection = val
+        },
+    }
+  }
+  </script>
+  
\ No newline at end of file
diff --git a/src/views/quality/packageinspect/packageInspect-form.vue b/src/views/quality/packageinspect/packageInspect-form.vue
new file mode 100644
index 0000000..891b0dd
--- /dev/null
+++ b/src/views/quality/packageinspect/packageInspect-form.vue
@@ -0,0 +1,602 @@
+<template>
+    <div style="height: 100%">
+    <div class="page-header">
+      <div class="header-left">
+        <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a>
+        <h2 v-if="resultVal=='' || resultVal==null">缂栬緫-鍖呰妫�楠�</h2>
+        <h2 v-else>鏌ョ湅-鍖呰妫�楠�</h2>
+      </div>
+      <div class="btn-group header-right">
+      </div>
+    </div>
+    <div class="page-main">
+      <div class="packageInspect-basic">
+        <el-form
+        :model="dataForm"
+        :rules="dataRule"
+        ref="dataForm"
+        style="width: 100%"
+        class="l-mes"
+        label-width="110px">
+            <el-row>
+              <el-col :span="6">
+                <el-form-item label="鍖呰妫�楠岀紪鍙�" prop="packInsNo">
+                <el-input v-model="dataForm.packInsNo" disabled>
+                </el-input>
+                </el-form-item>
+            </el-col>
+              <el-col :span="6">
+                <el-form-item label="鍖呰缂栧彿" prop="packageNo">
+                <el-input v-model="dataForm.packageNo" disabled></el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="6">
+                <el-form-item  prop="projectName" label="椤圭洰鍚嶇О" >
+                  <el-tooltip :disabled="dataForm.projectName==null" :content="dataForm.projectName">
+                    <el-input v-model="dataForm.projectName" disabled ></el-input>
+                  </el-tooltip>
+                </el-form-item>
+            </el-col>
+            <el-col :span="6">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
+                    <el-input v-model="dataForm.customerName" disabled />
+                </el-form-item>
+            </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="6">
+                <el-form-item label="鍚堝悓鍙�" prop="contractNo">
+                <el-input v-model="dataForm.contractNo" disabled></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                  <el-form-item label="鎶ユ鏃ユ湡" prop="createTime">
+                      <el-input v-model="dataForm.createTime" disabled />
+                  </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="鎶ユ浜�" prop="createUser">
+                      <el-input v-model="dataForm.createUser" disabled />
+                </el-form-item>
+              </el-col>
+            </el-row>
+        </el-form>
+      </div>
+      <div class="packageInspect-detail">
+        <el-row :gutter="10" style="width:100%;z-index: 10;height:50px;">
+            <el-col :span="20">妫�楠岄」鐩�</el-col>
+            <el-col :span="2">
+              <el-button v-if="resultVal=='' || resultVal==null" style="width:100%" size="small" @click="clickAddLine()">娣诲姞妫�楠岄」鐩�</el-button>
+            </el-col>
+            <el-col :span="2">
+              <el-button v-if="resultVal=='' || resultVal==null" style="width:100%" type="primary"  size="small"
+              @click="savePackIns()">淇濆瓨</el-button>
+            </el-col>
+        </el-row>
+        <el-row style="width:100%;">
+            <el-col :span="24">
+                <el-table
+                :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
+                :cell-style="{textAlign:'center'}"
+                ref="table"
+                :data="list"
+                border
+                style="width: 100%;"
+                height="400"
+                row-key="randomId" class="l-mes"
+                default-expand-all
+                :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+                  <el-table-column type="index" label="搴忓彿" width="60">
+                  </el-table-column>
+                  <el-table-column prop="name" label="椤圭洰" width="260">
+                    <template slot-scope="scope">
+                        <el-input :readonly="resultVal!=null" v-if="scope.row.children" class="inline-input" style="width:90%;" v-model="scope.row.name"
+                          placeholder="璇疯緭鍏ラ」鐩悕绉�"></el-input>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="required" label="瑕佹眰" width="260">
+                    <template slot-scope="scope">
+                      <div v-if="!scope.row.children">
+                      <el-input :readonly="resultVal!=null" v-model="scope.row.required"
+                        placeholder="璇疯緭鍏ヨ姹�"></el-input>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="note" label="妫�楠屾弿杩�" width="260" >
+                    <template slot-scope="scope">
+                      <div v-if="!scope.row.children">
+                        <el-input :readonly="resultVal!=null" v-model="scope.row.note" placeholder="妫�楠屾弿杩�"></el-input>
+                      </div>
+                    </template>
+                  </el-table-column>
+                  <el-table-column prop="testState" label="缁撹" min-width="150">
+                    <template slot-scope="scope">
+                        <el-select style="width:100%" :disabled="resultVal!=null" @change="changeResult" v-model="scope.row.result" v-if="!scope.row.children">
+                            <el-option label="鍚堟牸" value="鍚堟牸"></el-option>
+                            <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�"></el-option>
+                        </el-select>
+                    </template>
+                  </el-table-column>
+                  <el-table-column v-if="resultVal=='' || resultVal==null" fixed="right" style="background-color: white;" label="鎿嶄綔" width="200">
+                    <template slot-scope="scope">
+                      <el-button v-if="scope.row.children" icon="el-icon-circle-plus-outline" type="text" @click="clickAddChildren(scope.row,scope.$index)">娣诲姞琛�</el-button>
+                      <el-button v-if="!scope.row.children" icon="el-icon-circle-close" type="text" 
+                      @click="clickDelLine(scope.row,scope.$index,scope.row.children!=null)">鍙栨秷</el-button>
+                      <el-button v-if="scope.row.children" icon="el-icon-circle-close" type="text"
+                      @click="clickDelLine(scope.row,scope.$index,scope.row.children!=null)">鍒犻櫎椤圭洰</el-button>
+
+                    </template>
+                  </el-table-column>
+                </el-table>
+            </el-col>
+        </el-row>
+      </div>
+      <div class="packageInspect-result">
+        <el-row>
+          <el-col :span="24">妫�楠岀粨璁�</el-col>
+        </el-row>
+        <el-row style="width:100%">
+          <el-col :span="24">
+            <el-table class="l-mes" border height="90" :data="conclusionTable" ref="conclusion" v-model="conclusion"
+            :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
+            :cell-style="{textAlign:'center'}">
+                <el-table-column prop="packageNo" label="鍖呰缂栧彿"></el-table-column>
+                <el-table-column prop="userName" label="妫�楠屽憳"></el-table-column>
+                <el-table-column prop="result" label="妫�楠岀粨璁�">
+                  <template slot-scope="scope">
+                    <el-select :disabled="resultVal!=null" style="width:100%" v-model="scope.row.result">
+                        <el-option label="鍚堟牸" value="鍚堟牸"></el-option>
+                        <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�"></el-option>
+                    </el-select>
+                  </template>
+                </el-table-column>
+                <el-table-column  label="鎿嶄綔">
+                    <template>
+                        <el-button type="text" :disabled="resultVal!=null" @click="submitSave()" size="small">涓婃姤</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  fetchListById,
+  updatePackageInsProduct,
+  updatePackageInspectById,
+} from '@/api/quality/packageInspect'
+export default {
+    computed:{},
+    components:{
+    },
+    data(){
+        return{
+            loading: false,
+            resultVal: null,
+            dataForm:{
+                id: null,
+                packInsNo: null,
+                packageNo: '',
+                contractNo: '',
+                projectName: '',
+                customerName: '',
+                packageInsProductS: [{
+                  deviceId: 0,
+                  father:'',
+                  name: '',
+                  required: '',
+                  testValue: '',
+                  unit: '',
+                  testValueList: []
+                }]
+            },
+            form: null,
+            list:[],
+            conclusion: null,
+            conclusionTable: [{
+              packageNo: '',
+              userName: '',
+              result: ''
+            }],
+            dataRule: {},
+        }
+    },
+    beforeUpdate(){
+      this.$nextTick(()=>{
+        this.$refs.table.doLayout();
+      })
+    },
+    created(){
+      this.dataForm.id = this.$route.query.id
+      this.resultVal = this.$route.params.resultVal
+      if(!this.resultVal){
+        let val = sessionStorage.getItem("packIns-resultVal-"+this.dataForm.id)
+        if(val){
+          this.resultVal=val
+        }
+      }
+      this.init()
+    },
+    watch:{
+    },
+    methods:{
+      changeResult(){
+        let result = ''
+        let data = this.list
+        if(data){
+          result='鍚堟牸'
+          data.forEach(item=>{
+            if(item.children){
+              item.children.forEach(ele=>{
+                if(ele.result=='涓嶅悎鏍�'){
+                  result='涓嶅悎鏍�'
+                }
+              })
+            }
+          })
+        }
+        this.conclusionTable[0].result = result
+      },
+      //涓婃姤
+      submitSave(){
+        const _than = this
+        this.$confirm('涓婃姤鍓嶏紝璇风‘璁ゆ楠岄」鐩槸鍚﹀凡淇濆瓨!', '鎻愮ず', {
+          confirmButtonText: '纭涓婃姤',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          let data = {
+          id: _than.dataForm.id,
+          result: _than.conclusionTable[0].result,
+        }
+        updatePackageInspectById(data).then(res => {
+          if(res.data.code === 0){
+            _than.resultVal = res.data.data
+            sessionStorage.setItem("packIns-resultVal-"+_than.dataForm.id,res.data.data)
+            _than.$message.success("涓婃姤鎴愬姛");
+          }else{
+            _than.$message.error("涓婃姤澶辫触",res.data.data);
+          }
+        })
+        }).catch(() => {})
+      },
+      // 娣诲姞琛�
+      clickAddLine() {
+          this.list.push({
+            name: '',
+            randomId: Math.random(),
+            children: [{
+              name: '',
+              note: '',
+              required: '',
+              result: '',
+              randomId: Math.random(),
+            }]
+          })
+      },
+      //娣诲姞瀛愮骇
+      clickAddChildren(row,index){
+        row.children.push({
+            name: row.name,
+            note: '',
+            required: '',
+            result: '',
+            randomId: Math.random(),
+        })
+      },
+      // 鍒犻櫎琛�
+      clickDelLine(row,index,isParent) {
+        if(isParent){
+          let parentIndex = this.list.findIndex(el =>{
+            return el.randomId == row.randomId
+          })
+          this.list.splice(parentIndex,1)
+        }else{
+          let i = this.list.findIndex(el =>{
+            return el.children.find(ele => ele.randomId == row.randomId)
+          })
+          let childrenIndex = this.list[i].children.findIndex(el =>{
+            return el.randomId == row.randomId
+          })
+          this.list[i].children.splice(childrenIndex,1)
+        }
+      },
+      //淇濆瓨妫�鏌ラ」
+      savePackIns(){
+        if(this.list.length==0){
+          this.$message.error("妫�楠岄」鐩负绌�!")
+          return
+        }else{
+          let dataList = []
+          this.list.forEach(item=>{
+            if(item.children){
+              item.children.forEach(ele=>{
+                let obj = {
+                  id: ele.pid || null,
+                  name: item.name,
+                  note: ele.note,
+                  packageInspectId: this.dataForm.id,
+                  required: ele.required,
+                  result: ele.result,
+                }
+                dataList.push(obj)
+              })
+            }
+          })
+          updatePackageInsProduct(dataList).then(res=>{
+            if(res.status===200){
+              this.$message.success("淇濆瓨鎴愬姛")
+            }
+          }).catch(error=>{
+            console.log(error);
+            this.$message.error("淇濆瓨澶辫触")
+          })
+        }
+      },
+      init(){
+        if(this.dataForm.id){
+          fetchListById(this.dataForm.id).then(res=>{
+            let data = res.data.data
+            this.dataForm.packInsNo = data.packInsNo
+            this.dataForm.packageNo = data.packageNo
+            this.dataForm.contractNo = data.contractNo
+            this.dataForm.customerName = data.customerName
+            this.dataForm.projectName = data.projectName
+            this.dataForm.createTime = data.createTime
+            this.dataForm.createUser = data.createUser
+            this.list = []
+            let userNameList = []
+            data.packageInsProductS.forEach(item => {
+              if (item.children) {
+                    let ele = {
+                      randomId: Math.random(),
+                      name: null,
+                      children: []
+                    }
+                    ele.name = item.name
+                    item.children.forEach(obj => {
+                      if(obj.userName){
+                        userNameList.push(obj.userName)
+                      }
+                      let o = {
+                        name: item.name,
+                        randomId: Math.random(),
+                        required: obj.required,
+                        pid: obj.pid,
+                        note: obj.note?obj.note:'',
+                        result: obj.presult
+                      }
+                      ele.children.push(o)
+                    })
+                    this.list.push(ele)
+                }
+              })
+              this.conclusionTable = [{
+                packageNo: data.packageNo,
+                userName: Array.from(new Set(userNameList)).join(','),
+                result: null
+              }]
+              this.$nextTick(()=>{
+                if(this.list.length>0){
+                  this.changeResult()
+                }
+              })
+          }).catch(error=>{
+            this.$message.error("鑾峰彇澶辫触",error)
+          })
+        }else{
+          this.conclusionTable = []
+        }
+      },
+    },
+}
+</script>
+
+<style>
+.packageInspect-detail {
+  width: 100%;
+  height: 490px;
+  padding: 10px 20px;
+  display: flex;
+  border: 1px solid #ddd;
+  background-color: #fff;
+  margin-top: 10px;
+  box-sizing: border-box;
+  flex-wrap: wrap;
+}
+
+.packageInspect-result {
+  width: 100%;
+  height: 150px;
+  padding: 10px 20px;
+  display: flex;
+  border: 1px solid #ddd;
+  background-color: #fff;
+  margin-top: 10px;
+  box-sizing: border-box;
+  flex-wrap: wrap;
+}
+
+.packageInspect-basic {
+  background-color: #fff;
+  height: 120px;
+  display: flex;
+  flex-wrap: wrap;
+  padding: 10px 20px;
+  border: 1px solid #ddd;
+  box-sizing: border-box;
+}
+
+.packageInspect-related-stock-part {
+  background-color: #fff;
+  width: 100%;
+  height: 220px;
+  border: 1px solid #ddd;
+  padding: 10px 20px 0px 20px;
+  box-sizing: border-box;
+}
+
+.packageInspect-bom {
+  background-color: #fff;
+  width: 100%;
+  height: 499px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  box-sizing: border-box;
+}
+
+.packageInspect-bom .el-card__header {
+  padding: 1px 20px;
+  border-bottom: 0px solid #ebeef5;
+}
+
+.packageInspect-bom .el-card__body {
+  height: calc(100% - 22px);
+}
+
+.packageInspect-bom .el-card__body .el-collapse {
+  height: 100%;
+  overflow: auto;
+}
+
+.packageInspect-technology-params {
+  background-color: #fff;
+  width: calc(52% - 20px);
+  float: left;
+  height: 719px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  margin-left: 20px;
+}
+
+.packageInspect-structure {
+  background-color: #fff;
+  width: 35%;
+  float: left;
+  height: 719px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  box-sizing: border-box;
+}
+
+.packageInspect-flow {
+  background-color: #fff;
+  width: calc(65% - 20px);
+  float: left;
+  height: 719px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  margin-left: 20px;
+  box-sizing: border-box;
+}
+
+/*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled.is-checked
+  .el-checkbox__inner {
+  background-color: #006eff;
+  border-color: #006eff;
+}
+
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled.is-checked
+  + span.el-checkbox__label {
+  color: #006eff;
+  border-color: #006eff;
+}
+
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled
+  .el-checkbox__inner {
+  background-color: #ffffff;
+  cursor: pointer;
+}
+
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled
+  + span.el-checkbox__label {
+  color: #606266;
+  cursor: pointer;
+}
+
+.completeproductstructure-checkout .el-checkbox__inner::after {
+  border: 1px solid #fff !important;
+  border-left: 0 !important;
+  border-top: 0 !important;
+  cursor: pointer !important;
+}
+
+.packageInspect-bom-div {
+  width: 100%;
+  margin-bottom: 5px;
+}
+
+.packageInspect-technology-div {
+  width: 100%;
+  margin-bottom: 5px;
+  margin-right: 10px;
+}
+
+.packageInspect-technology-div .el-collapse {
+  border-top: 0px;
+  border-bottom: 0px;
+}
+
+.structure-detail-table th.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.structure-detail-table colgroup.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.final-product-checkout .el-card__header {
+  padding: 0px 20px;
+  border-bottom: 0px;
+}
+
+.final-product-checkout .el-card__body {
+  padding: 0px 20px 20px;
+}
+
+.orimaterial-quantity .el-card__header {
+  padding: 0px 20px;
+  border-bottom: 0px;
+}
+
+.orimaterial-quantity .el-card__body {
+  padding: 0px 20px 20px;
+}
+
+.packageInspect-materialcost-table th.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.packageInspect-materialcost-table colgroup.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.GooFlow .ico .ico_start:before {
+  color: red;
+}
+.highlight-tab-class {
+  color: #006eff;
+  background: #e4e7ed;
+  border-top: 1px solid #006eff;
+}
+.unhighlight-tab-class {
+  border: 1px solid #e4e7ed;
+  border-bottom: none;
+}
+.avue-crud__menu{
+  min-height: 0px;
+}
+</style>
diff --git a/src/views/quality/processconfiguration/index.vue b/src/views/quality/processconfiguration/index.vue
index e608a41..41372ea 100644
--- a/src/views/quality/processconfiguration/index.vue
+++ b/src/views/quality/processconfiguration/index.vue
@@ -299,7 +299,7 @@
           minWidth: 100
         }
       },
-      materialType: [{label:'鍘熸潗鏂欐楠�',value:'鍘熸潗鏂欐楠�'},{label:'杩囩▼妫�楠�',value:'杩囩▼妫�楠�'},{label:'浜у搧妫�楠�',value:'浜у搧妫�楠�'}],
+      materialType: [{label:'鍘熸潗鏂欐楠�',value:'鍘熸潗鏂欐楠�'},{label:'杩囩▼妫�楠�',value:'杩囩▼妫�楠�'},{label:'浜у搧妫�楠�',value:'浜у搧妫�楠�'},{label:'鍖呰妫�楠�',value:'鍖呰妫�楠�'}],
       StateList: [{label:'鍏ㄩ儴',value:''},{label:'宸叉彁浜ゅ鏍�',value:'1'},{label:'寰呭鐞�',value:'0'},{label:'宸插鐞�',value:'2'}],
       insStateList: [{label:'鍏朵粬',value:''},{label:'鐟曠柕',value:'1'}],
     }
diff --git a/src/views/quality/teststandard/index.vue b/src/views/quality/teststandard/index.vue
index 56a20be..a8481fb 100644
--- a/src/views/quality/teststandard/index.vue
+++ b/src/views/quality/teststandard/index.vue
@@ -240,13 +240,13 @@
                     v-if="editable"
                     >鎻掑叆
                   </el-button>
-                  <el-button
+                  <!-- <el-button
                     type="text"
                     size="mini"
                     @click.stop="editTestStandardParam(scope.row)"
                     v-if="editable && scope.row.id != null"
                     >鍏紡
-                  </el-button>
+                  </el-button> -->
                   <el-button
                     type="text"
                     size="mini"
diff --git a/src/views/technology/operation/operation-form.vue b/src/views/technology/operation/operation-form.vue
index 282dcc6..169365b 100644
--- a/src/views/technology/operation/operation-form.vue
+++ b/src/views/technology/operation/operation-form.vue
@@ -120,12 +120,12 @@
                   />
                 </el-select>
               </el-form-item> -->
-              <!-- <el-form-item label="鐝粍浜哄憳" prop="crewSize">
+              <el-form-item label="鐝粍浜哄憳" prop="crewSize">
                 <el-input
                   v-model="dataForm.crewSize"
                   placeholder="鐝粍浜哄憳"
                 ></el-input>
-              </el-form-item> -->
+              </el-form-item>
               <!-- <el-form-item label="澶栭儴宸ュ簭椤圭洰" prop="outsideOpItem">
                 <el-select
                   v-model="dataForm.outsideOpItem"
diff --git a/vue.config.js b/vue.config.js
index 605ac39..f313e55 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -3,10 +3,11 @@
  * https://cli.vuejs.org/zh/config/
  */
 // 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.0.23:9999'
 
-//  const url = 'http://localhost:9999'
+ const url = 'http://localhost:9999'
 
 // const url = 'http://ztt-gateway:9999'
 const localUrl = 'http://localhost:8089'

--
Gitblit v1.9.3