Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

姜永辉 2 лет назад
Родитель
Сommit
bfd7ee92d6

+ 83 - 18
src/components/base/edit-table/edit-table.vue

@@ -159,8 +159,10 @@
           <!--                  @click="handleFreeze(colItem.field)"/>-->
           <!--          </template>-->
           <template #default="{ row,rowIndex }">
-            <i-switch size="small" :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
-                      :disabled="true"/>
+            <div class="switch-class">
+              <i-switch size="small" :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
+                        :disabled="true"/>
+            </div>
           </template>
         </vxe-column>
 
@@ -369,6 +371,35 @@
           </template>
         </vxe-column>
 
+        <!--  选择框  -->
+        <vxe-column v-if="colItem.type === 'checkbox'" :field="colItem.field"
+                    :width="colItem.width?colItem.width:vm.$config.columnWidth"
+                    :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
+                    :tree-node="colItem.treeNode">
+          <template #header="{ row }">
+            <div class="checkbox-class">
+              <vxe-checkbox :ref="colItem.field+'_header'" v-model="colItem.chooseAllFlag"
+                            @change="clickAllCheckbox(colItem)"/>
+            </div>
+          </template>
+          <template #default="{ row,rowIndex }">
+            <div class="checkbox-class">
+              <vxe-checkbox v-if="colItem.controlField?row[colItem.controlField]:true" size="small"
+                            :ref="colItem.field+'_default_'+rowIndex"
+                            :disabled="setCellDisabled(row,colItem)"
+                            v-model="row[colItem.field]" @change="changeValue(colItem,rowIndex,row)"/>
+            </div>
+          </template>
+          <template #edit="{ row,rowIndex }">
+            <div class="checkbox-class">
+              <vxe-checkbox v-if="colItem.controlField?row[colItem.controlField]:true" size="small"
+                            :ref="colItem.field+'_default_'+rowIndex"
+                            :disabled="setCellDisabled(row,colItem)"
+                            v-model="row[colItem.field]" @change="changeValue(colItem,rowIndex,row)"/>
+            </div>
+          </template>
+        </vxe-column>
+
         <!-- 开关 -->
         <vxe-column v-if="colItem.type === 'switch'" :params="{type:'switch'}"
                     :title="colItem.title?colItem.title:$t(colItem.field)"
@@ -398,16 +429,20 @@
           <!--          </template>-->
           <template #default="{ row,rowIndex }">
             <!--          <span>{{ row[colItem.field] ? '是' : '否' }}</span>-->
-            <vxe-switch :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
-                        v-show="setCellCanInput( row ,colItem)"
-                        @change="changeValue(colItem,rowIndex,row)"
-                        :disabled="setCellDisabled(row,colItem)"/>
+            <div class="switch-class">
+              <vxe-switch :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
+                          v-show="setCellCanInput( row ,colItem)"
+                          @change="changeValue(colItem,rowIndex,row)"
+                          :disabled="setCellDisabled(row,colItem)"/>
+            </div>
           </template>
           <template #edit="{ row,rowIndex }">
-            <vxe-switch :ref="colItem.field+rowIndex" v-model="row[colItem.field]"
-                        v-show="setCellCanInput( row ,colItem)"
-                        @change="changeValue(colItem,rowIndex,row)"
-                        :disabled="setCellDisabled(row,colItem)"/>
+            <div class="switch-class">
+              <vxe-switch :ref="colItem.field+rowIndex" v-model="row[colItem.field]"
+                          v-show="setCellCanInput( row ,colItem)"
+                          @change="changeValue(colItem,rowIndex,row)"
+                          :disabled="setCellDisabled(row,colItem)"/>
+            </div>
           </template>
         </vxe-column>
 
@@ -716,8 +751,8 @@ export default {
       if (row && row[field]) {
         let value = row[field];
         // 如果是下拉,需要读取_Name字段的值
-        if(colItem.type === 'select'){
-          if(row[field + '_Name'] != undefined){
+        if (colItem.type === 'select') {
+          if (row[field + '_Name'] != undefined) {
             value = row[field + '_Name']
           }
         }
@@ -1463,6 +1498,18 @@ export default {
       return false;
     },
     /**
+     * @desc   : 点击表头的checkbox全选/全不选
+     * @author : 周兴
+     * @date   : 2023/5/9 13:30
+     */
+    clickAllCheckbox(colItem) {
+      if (this.tableData && this.tableData.length > 0) {
+        this.tableData.forEach(it => {
+          it[colItem.field] = colItem.chooseAllFlag
+        })
+      }
+    },
+    /**
      * @desc   : 点击按钮
      * @author : 周兴
      * @date   : 2023/3/26 16:11
@@ -2745,15 +2792,15 @@ export default {
 }
 
 /deep/ .vxe-input :hover {
-  border: 1px solid #57a3f3 !important;
-  border-radius: 2px;
+  /*border: 1px solid #57a3f3 !important;*/
+  /*border-radius: 2px;*/
 }
 
 /deep/ .vxe-input > input:focus {
-  border-color: #57a3f3 !important;
-  border-radius: 2px;
-  -webkit-box-shadow: 0 0 0 1px rgba(45, 140, 240, .2) !important;
-  box-shadow: 0 0 0 1px rgba(45, 140, 240, .2) !important;
+  /*border-color: #57a3f3 !important;*/
+  /*border-radius: 2px;*/
+  /*-webkit-box-shadow: 0 0 0 1px rgba(45, 140, 240, .2) !important;*/
+  box-shadow: 0 0 0 2px rgba(45, 140, 240, 0.2);
 }
 
 /deep/ .col--valid-error .vxe-input > input {
@@ -2825,4 +2872,22 @@ export default {
 }
 
 
+.switch-class {
+  height: calc(100% - 3px) !important;
+  display: flex !important;
+  align-items: center !important;
+  justify-content: center !important;
+}
+
+.checkbox-class {
+  height: 100% !important;
+  display: flex !important;
+  align-items: center !important;
+  justify-content: center !important;
+}
+
+.checkbox-class label {
+  margin-bottom: 0 !important;
+}
+
 </style>

Разница между файлами не показана из-за своего большого размера
+ 1914 - 1827
src/components/base/edit-tree-table/edit-tree-table.vue


+ 1 - 0
src/config/index.js

@@ -1777,6 +1777,7 @@ export default {
     code: '分体粘接',
     zuNei: '分体粘接-组',
     fenZu: '分体粘接-位',
+    wu:'分体粘接-无',
   },
 
   /**

+ 3 - 1
src/locale/lang/zh-CN.js

@@ -780,6 +780,7 @@ export const columns = {
 
   //绑定条码
   bondingNo:'粘接序号',
+  revokeFlag:'撤销标识',
 
   //生产
   prodUserCode: '生产工号',
@@ -1107,12 +1108,13 @@ export const messages = {
   W_142: '请选择父级进行添加',
   W_143: '当前可添加数据已达上限,请重新选择',
   W_144: '当前保存数据中有未添加的明细,请添加后重新操作',
-  W_145: '当前存在可变更产品名称为空数据,请添加后重新操作',
+  W_145: '当前存在粘贴后型号为空数据,请添加后重新操作',
   W_146: '当前模具数量与分组序号1下模具数量不一致,请修改后重新操作',
   W_147: '请输入长度为4位单据代码',
   W_148: '请同时选择开始与结束时间',
   W_149: '分组至少需要2条数据',
   W_150: '至少选择1条数据进行撤销',
+  W_151: '该条数据不可以进行撤销条码操作',
   E_001: '系统出现异常,请联系管理员。',
   Q_001: '当前页面的数据有过更改,请确认需要保存吗?',
   Q_002: '确定要进行{param}操作吗?',

+ 39 - 43
src/view/mst/model-product/form.vue

@@ -548,52 +548,48 @@ export default {
      * @date   : 2023/2/6 13:08
      */
     validData() {
-      // 判断是否有工种信息
-      if (!this.formData.erpList || this.formData.erpList === 0) {
-        this.$message.error(this.$t('W_091'))
-        return false;
-      }
-
-      for (let i = 0; i < this.formData.erpList.length; i++) {
+      if(this.formData.erpList && this.formData.erpList.length > 0){
+        for (let i = 0; i < this.formData.erpList.length; i++) {
 
-        //logo 商标
-        if (!this.formData.erpList[i].logoId) {
-          this.$Message.error('产品erp型号:' + this.$t('W_089', {'param1': (i + 1), 'param2': "商标"}) + ';')
-          return false;
-        }
-        //colour 釉色
-        if (!this.formData.erpList[i].colourId) {
-          this.$Message.error('产品erp型号:' + this.$t('W_089', {'param1': (i + 1), 'param2': "釉色"}) + ';')
-          return false;
-        }
+          //logo 商标
+          if (!this.formData.erpList[i].logoId) {
+            this.$Message.error('产品erp型号:' + this.$t('W_089', {'param1': (i + 1), 'param2': "商标"}) + ';')
+            return false;
+          }
+          //colour 釉色
+          if (!this.formData.erpList[i].colourId) {
+            this.$Message.error('产品erp型号:' + this.$t('W_089', {'param1': (i + 1), 'param2': "釉色"}) + ';')
+            return false;
+          }
 
-        //todo 暂时注释 以后可能会有改动 2023年4月21日15:40:18
-        //erpModelCode erp物料编码   商标釉色都有时物料编码为必输(2023年4月21日15:39:12)
-        // if (this.formData.erpList[i].colourId && this.formData.erpList[i].logoId && this.formData.erpList[i].erpModelCode) {
-        //   this.$Message.error('产品erp型号:' + this.$t('W_089', {'param1': (i + 1), 'param2': "erp物料编码"}) + ';')
-        //   return false;
-        // }
+          //todo 暂时注释 以后可能会有改动 2023年4月21日15:40:18
+          //erpModelCode erp物料编码   商标釉色都有时物料编码为必输(2023年4月21日15:39:12)
+          // if (this.formData.erpList[i].colourId && this.formData.erpList[i].logoId && this.formData.erpList[i].erpModelCode) {
+          //   this.$Message.error('产品erp型号:' + this.$t('W_089', {'param1': (i + 1), 'param2': "erp物料编码"}) + ';')
+          //   return false;
+          // }
 
-        //todo 产品型号bom
-        // if (!this.formData.erpList[i].bomList || this.formData.erpList[i].bomList.length === 0) {
-        //   let msg = '未选择员工信息'
-        //   this.$message.error('第' + (i + 1) + '条工种数据未选择员工信息')
-        //   this.setErrToRow(this.formData.erpList[i], msg);// 给行增加错误提示信息
-        //   return false;
-        // }
-        // let bomArray=this.formData.erpList[i].bomList
-        // for ( let a=0 ;a<bomArray.length;a++){
-        //   //bomModelKind 子件类型
-        //   if(!bomArray[a].bomModelKind){
-        //     this.$Message.error('产品型号bom:' + this.$t('W_089', {'param1': (a + 1), 'param2': "子件类型"}) + ';')
-        //     return false;
-        //   }
-        //   //bomModelQty  子件数量
-        //   if(!bomArray[a].bomModelQty||bomArray[a].bomModelQty<=0){
-        //     this.$Message.error('产品型号bom:' + this.$t('W_089', {'param1': (a + 1), 'param2': "子件数量"}) + ';')
-        //     return false;
-        //   }
-        // }
+          //todo 产品型号bom
+          // if (!this.formData.erpList[i].bomList || this.formData.erpList[i].bomList.length === 0) {
+          //   let msg = '未选择员工信息'
+          //   this.$message.error('第' + (i + 1) + '条工种数据未选择员工信息')
+          //   this.setErrToRow(this.formData.erpList[i], msg);// 给行增加错误提示信息
+          //   return false;
+          // }
+          // let bomArray=this.formData.erpList[i].bomList
+          // for ( let a=0 ;a<bomArray.length;a++){
+          //   //bomModelKind 子件类型
+          //   if(!bomArray[a].bomModelKind){
+          //     this.$Message.error('产品型号bom:' + this.$t('W_089', {'param1': (a + 1), 'param2': "子件类型"}) + ';')
+          //     return false;
+          //   }
+          //   //bomModelQty  子件数量
+          //   if(!bomArray[a].bomModelQty||bomArray[a].bomModelQty<=0){
+          //     this.$Message.error('产品型号bom:' + this.$t('W_089', {'param1': (a + 1), 'param2': "子件数量"}) + ';')
+          //     return false;
+          //   }
+          // }
+        }
       }
       return true;
 

+ 1 - 1
src/view/mst/molding/form.vue

@@ -182,7 +182,7 @@ export default {
         flowNodeId:null,
         stationId: null,
         flgCanBatches: true,
-        pdtGlueKind: null,
+        pdtGlueKind: self.$config.pdtGlueKind.wu,
         stdBatcheNum: 1,
         remarks: '',
       },

+ 41 - 2
src/view/mst/product-view/config/ProductView.js

@@ -1,4 +1,4 @@
-import { Graph, Shape, FunctionExt } from '@antv/x6'
+import { Graph, Shape, FunctionExt, Markup } from '@antv/x6'
 import { Stencil } from '@antv/x6-plugin-stencil'
 import { Transform } from '@antv/x6-plugin-transform'
 import { Selection } from '@antv/x6-plugin-selection'
@@ -183,7 +183,7 @@ export default class Product {
         {
           title: '区域图形',
           name: 'group',
-          graphHeight: 400,
+          graphHeight: 500,
           layoutOptions: {
             columns: 1,
             marginX: 35,
@@ -822,6 +822,7 @@ export default class Product {
       shape: 'custom-circle',
       label: '',
     })
+    //梯形
     const r7 = this.graph.createNode({
       shape: 'custom-polygon',
       attrs: {
@@ -831,6 +832,44 @@ export default class Product {
       },
       label: '',
     })
+    //环形
+    // const r8 = this.graph.createNode({
+    //   shape: 'circle',
+    //   x: 40,
+    //   y: 40,
+    //   width: 60,
+    //   height: 60,
+    //   label: '',
+    //   attrs: {
+    //     body: {
+    //       stroke: '#0c1010',
+    //       fill: 'rgba(0,0,0,0.0)',
+    //     },
+    //   },
+    //   portMarkup: [Markup.getForeignObjectMarkup()],
+    //   ports: {
+    //     items: [
+    //       { group: 'in', id: 'in1' },
+    //     ],
+    //     groups: {
+    //       in: {
+    //         position: { name: 'top' },
+    //         attrs: {
+    //           fo: {
+    //             width: 40,
+    //             height: 20,
+    //             x: 20,
+    //             y: 20,
+    //             fill: 'rgba(0,0,0,0.0)',
+    //             magnet: 'true',
+    //           },
+    //         },
+    //         zIndex: 1,
+    //       },
+    //
+    //     },
+    //   },
+    // })
     stencil.load([r1, r2, r3, r4, r5, r6,r7], 'group')
 
     // endregion

+ 1 - 1
src/view/mst/product-view/form.vue

@@ -56,7 +56,7 @@
 
       <!--画布-->
       <DkPanel id="name3" prop="productGraph">
-        <DkRow slot="content" style=" height: 500px;overflow: auto">
+        <DkRow slot="content" style=" height: 550px;overflow: auto">
           <Layout>
             <!--   左侧工具栏   -->
             <Sider :width="180">

+ 5 - 1
src/view/pdm/data-collection/finishCheck-add.vue

@@ -978,6 +978,10 @@
        *   @author : 寇珊珊
        */
       setParams() {
+        //明细长度为0产品条码有点击保存按钮直接将产品条码数据存入明细
+        if (this.editDetailList.length == 0 && this.formData.barCode) {
+          this.addRow()
+        }
         //校验名称是否重复
         if (!this.validData()) {
           return
@@ -1022,7 +1026,7 @@
           return false
         }
         //校验选择缺陷是否有数据
-        if (this.detailList && this.detailList.length == 1 && this.detailList[0].defectCode) {
+        if (this.editDetailList.length>0 && this.detailList && this.detailList.length == 1 && this.detailList[0].defectCode) {
           this.$Message.error(this.$t('W_123'))
           return false
         }

+ 8 - 5
src/view/pdm/data-collection/halfCheck-add.vue

@@ -978,6 +978,10 @@
        *   @author : 寇珊珊
        */
       setParams() {
+        //明细长度为0产品条码有点击保存按钮直接将产品条码数据存入明细
+        if (this.editDetailList.length == 0 && this.formData.barCode) {
+          this.addRow()
+        }
         //校验名称是否重复
         if (!this.validData()) {
           return
@@ -1014,15 +1018,14 @@
           return false
         }
         //判断是否存在明细 并且 产品等级为瑕、劣
-        if (this.editDetailList.length == 0 &&
-          (this.formData.opnGradeKind == this.$config.gradeKindType.flaw
-            || this.formData.opnGradeKind == this.$config.gradeKindType.inferior)
-        ) {
+        if(this.editDetailList.length == 0 &&
+          (this.formData.opnGradeKind == this.$config.gradeKindType.flaw ||
+          this.formData.opnGradeKind == this.$config.gradeKindType.inferior)) {
           this.$Message.error(this.$t('W_115'))
           return false
         }
         //校验选择缺陷是否有数据
-        if (this.detailList && this.detailList.length == 1 && this.detailList[0].defectCode) {
+        if (this.editDetailList.length>0 && this.detailList && this.detailList.length ==1 && this.detailList[0].defectCode) {
           this.$Message.error(this.$t('W_123'))
           return false
         }

+ 54 - 29
src/view/pdm/molding-record/bind-barcode-group.vue

@@ -84,7 +84,10 @@
         productUniqueCodeCount: 0,//绑定条码个数(如果长度和查询数据长度一致则不能进行绑定条码)
         //成型记录明细列表
         moldingRecordTreeColumns: [
-          { type: 'checkbox', },
+          {
+            field: 'revokeFlag', type: 'switch', width: 'auto', childCanInput: false,
+            equal: true, treeNode: true,
+          },
           // 可变更产品名称
           {
             field: 'repPdtModelName',
@@ -284,7 +287,15 @@
        *   @author : 寇珊珊
        */
       revokeBindBarcode() {
-        let pdtUniqueIdList = this.$refs['moldingRecord'].$refs.xTable.getCheckboxRecords().map(map => map.pdtUniqueId)
+        let list = this.moldingRecordList.filter(it => it.revokeFlag)
+        let pdtUniqueIdList = []
+        for (let item of  list) {
+          for (let it of item.bomItems) {
+            if (it.pdtUniqueId) {
+              pdtUniqueIdList.push(it.pdtUniqueId)
+            }
+          }
+        }
         if (pdtUniqueIdList.length == 0) {
           this.$Message.error(this.$t('W_150'))
           return
@@ -304,34 +315,48 @@
        *   @author : 寇珊珊
        */
       changeValue(value) {
-        let field = value.field
-        let row = value.row
-        let rowIndex = value.rowIndex
-        this.$set(this.moldingRecordList[rowIndex], field, row[field])
-        this.$set(this.moldingRecordList[rowIndex], 'productUniqueFlag', true)
-        row.productUniqueFlag = true
-        //改变每条总单下明细的绑定条码
-        for (let item = 0; item < row.bomItems.length; item++) {
-          //从后台数据查出来绑定条码已经存在的不需要赋值
-          if (!row.bomItems[item].readOnlyUniqueCode) {
-            this.$set(row.bomItems[item], 'productUniqueFlag', true)
-            this.$set(row.bomItems[item], 'productUniqueCode', row[field])
-          }
-          //修改备注也要修改productUniqueFlag标识 用于后续保存数据过滤
-          if (field == 'productRemarks') {
-            this.$set(row.bomItems[item], 'productUniqueFlag', true)
+        if (value && value.field) {
+          let field = value.field
+          let row = value.row
+          let rowIndex = value.rowIndex
+          if (value.field == 'productUniqueCode') {
+            this.$set(this.moldingRecordList[rowIndex], field, row[field])
+            this.$set(this.moldingRecordList[rowIndex], 'productUniqueFlag', true)
+            row.productUniqueFlag = true
+            //改变每条总单下明细的绑定条码
+            for (let item = 0; item < row.bomItems.length; item++) {
+              //从后台数据查出来绑定条码已经存在的不需要赋值
+              if (!row.bomItems[item].readOnlyUniqueCode) {
+                this.$set(row.bomItems[item], 'productUniqueFlag', true)
+                this.$set(row.bomItems[item], 'productUniqueCode', row[field])
+              }
+              //修改备注也要修改productUniqueFlag标识 用于后续保存数据过滤
+              if (field == 'productRemarks') {
+                this.$set(row.bomItems[item], 'productUniqueFlag', true)
+              }
+            }
+            for (let i = 0; i < this.moldingRecordList.length; i++) {
+              if (this.moldingRecordList[i].id == row.id) {
+                this.moldingRecordList[i] = row
+              }
+            }
+            this.$refs.moldingRecord.tableData = this.moldingRecordList
+            // 处理子级数据
+            this.$refs.moldingRecord.loadChildrenInit(this.moldingRecordList, ['productUniqueCode'])
+            // 重新刷新
+            this.$refs.moldingRecord.reloadTreeTable(this.moldingRecordList)
           }
-        }
-        for (let i = 0; i < this.moldingRecordList.length; i++) {
-          if (this.moldingRecordList[i].id == row.id) {
-            this.moldingRecordList[i] = row
+          //撤销标识
+          else if (value.field == 'revokeFlag') {
+            //可以进行条码绑定-就不可以撤销
+            if (row.canProductUniqueCode) {
+              this.$Message.error(this.$t('W_151'))
+              row.revokeFlag = false
+            } else {
+              this.$set(this.moldingRecordList[rowIndex], 'revokeFlag', true)
+            }
           }
         }
-        this.$refs.moldingRecord.tableData = this.moldingRecordList
-        // 处理子级数据
-        this.$refs.moldingRecord.loadChildrenInit(this.moldingRecordList, ['productUniqueCode'])
-        // 重新刷新
-        this.$refs.moldingRecord.reloadTreeTable(this.moldingRecordList)
       },
       /**
        *   @desc   : 替换子集
@@ -448,7 +473,7 @@
               uniqueCode: bomItems[0].productId ? null : it.productUniqueCode,
               remarks: it.productRemarks,
               flgPdtGlue: true,
-              modelId:bomItems[0].repPdtModelId,
+              modelId: bomItems[0].repPdtModelId,
             })
           }
         }
@@ -494,7 +519,7 @@
       },
     },
     created() {
-      this.resizeTableFlag = true;  // 计算表格高度
+      this.resizeTableFlag = true  // 计算表格高度
     },
     activated() {
       this.detail(this.$route.params.id)

+ 87 - 34
src/view/pdm/molding-record/bind-barcode-grouping.vue

@@ -25,9 +25,14 @@
                     @click="bindBarcodeButton" style="margin-right: 10px">{{ $v('bindBarcode') }}
           </DkButton>
           <!--    清空条码    -->
-          <DkButton :disabled="productUniqueCodeCount==moldingRecordList.length" @click="clearBindBarcode">{{
+          <DkButton :disabled="productUniqueCodeCount==moldingRecordList.length"
+                    style="margin-right: 10px" @click="clearBindBarcode">{{
             $v('clearBindBarcode') }}
           </DkButton>
+          <!--    撤销条码    -->
+          <DkButton :disabled="productUniqueCodeCount==0" @click="revokeBindBarcode">{{
+            $v('revokeBindBarcode') }}
+          </DkButton>
         </DkForm>
       </DkPanel>
 
@@ -84,8 +89,10 @@
         productUniqueCodeCount: 0,//绑定条码个数(如果长度和查询数据长度一致则不能进行绑定条码)
         //成型记录明细列表
         moldingRecordTreeColumns: [
-          { field: 'ttttt', type: 'switch', width: 'auto' ,childCanInput: false,
-            equal: true,},
+          {
+            field: 'revokeFlag', type: 'switch', width: 'auto', childCanInput: false,
+            equal: true, treeNode: true,
+          },
           // 分组序号
           {
             field: 'moldlineItemNo', title: self.$t('bondingNo'),
@@ -282,39 +289,82 @@
         this.$refs.moldingRecord.reloadData(this.moldingRecordList)
       },
       /**
+       *   @desc   : 撤销条码
+       *   @date   : 2023/5/8 9:53
+       *   @author : 寇珊珊
+       */
+      revokeBindBarcode() {
+        let list = this.moldingRecordList.filter(it=>it.revokeFlag)
+        let pdtUniqueIdList=[]
+        for(let item of  list ){
+           for(let it of item.bomItems){
+             if(it.pdtUniqueId){
+               pdtUniqueIdList.push(it.pdtUniqueId)
+             }
+           }
+        }
+        if (pdtUniqueIdList.length == 0) {
+          this.$Message.error(this.$t('W_150'))
+          return
+        }
+        this.excute(this.$service.productService, this.$service.productService.undo, pdtUniqueIdList).then(res => {
+          if (res.code === this.$config.SUCCESS_CODE) {
+            this.$Message.success(res.message)
+            this.detail(this.$route.params.id)
+          } else {
+            this.$Message.error(res.message)
+          }
+        })
+      },
+      /**
        *   @desc   : 值改变
        *   @date   : 2023/2/28 11:23
        *   @author : 寇珊珊
        */
       changeValue(value) {
-        let field = value.field
-        let row = value.row
-        let rowIndex = value.rowIndex
-        this.$set(this.moldingRecordList[rowIndex], field, row[field])
-        this.$set(this.moldingRecordList[rowIndex], 'productUniqueFlag', true)
-        row.productUniqueFlag = true
-        //改变每条总单下明细的绑定条码
-        for (let item = 0; item < row.bomItems.length; item++) {
-          //从后台数据查出来绑定条码已经存在的不需要赋值;
-          if (!row.bomItems[item].readOnlyUniqueCode) {
-            this.$set(row.bomItems[item], 'productUniqueFlag', true)
-            this.$set(row.bomItems[item], 'productUniqueCode', row[field])
-          }
-          //修改备注也要修改productUniqueFlag标识 用于后续保存数据过滤
-          if (field == 'productRemarks') {
-            this.$set(row.bomItems[item], 'productUniqueFlag', true)
+        if (value && value.field) {
+          let field = value.field
+          let row = value.row
+          let rowIndex = value.rowIndex
+          if (value.field == 'productUniqueCode') {
+            this.$set(this.moldingRecordList[rowIndex], field, row[field])
+            this.$set(this.moldingRecordList[rowIndex], 'productUniqueFlag', true)
+            row.productUniqueFlag = true
+            //改变每条总单下明细的绑定条码
+            for (let item = 0; item < row.bomItems.length; item++) {
+              //从后台数据查出来绑定条码已经存在的不需要赋值;
+              if (!row.bomItems[item].readOnlyUniqueCode) {
+                this.$set(row.bomItems[item], 'productUniqueFlag', true)
+                this.$set(row.bomItems[item], 'productUniqueCode', row[field])
+              }
+              //修改备注也要修改productUniqueFlag标识 用于后续保存数据过滤
+              if (field == 'productRemarks') {
+                this.$set(row.bomItems[item], 'productUniqueFlag', true)
+              }
+            }
+            for (let i = 0; i < this.moldingRecordList.length; i++) {
+              if (this.moldingRecordList[i].id == row.id) {
+                this.moldingRecordList[i] = row
+              }
+            }
+            this.$refs.moldingRecord.tableData = this.moldingRecordList
+            // 处理子级数据
+            this.$refs.moldingRecord.loadChildrenInit(this.moldingRecordList, ['productUniqueCode'])
+            // 重新刷新
+            this.$refs.moldingRecord.reloadTreeTable(this.moldingRecordList)
           }
-        }
-        for (let i = 0; i < this.moldingRecordList.length; i++) {
-          if (this.moldingRecordList[i].id == row.id) {
-            this.moldingRecordList[i] = row
+          //撤销标识
+          else if(value.field == 'revokeFlag'){
+            //可以进行条码绑定-就不可以撤销
+            if(row.canProductUniqueCode){
+              this.$Message.error(this.$t('W_151'))
+              row.revokeFlag=false
+            }else {
+              this.$set(this.moldingRecordList[rowIndex], 'revokeFlag', true)
+            }
           }
         }
-        this.$refs.moldingRecord.tableData = this.moldingRecordList
-        // 处理子级数据
-        this.$refs.moldingRecord.loadChildrenInit(this.moldingRecordList, ['productUniqueCode'])
-        // 重新刷新
-        this.$refs.moldingRecord.reloadTreeTable(this.moldingRecordList)
+
       },
       /**
        *   @desc   : 替换子集
@@ -341,6 +391,11 @@
        *   @author : 寇珊珊
        */
       getDetailAdd(e) {
+        if(e && e.column){
+          if(e.column.field =='revokeFlag'){
+            return
+          }
+        }
         //只存父级
         if (e && e.row && e.row.hasChild == 1) {
           this.row = e.row
@@ -359,9 +414,6 @@
         if (this.row) {
           if (!this.row.modelCount || (this.row.modelCount && this.row.modelCount != this.row.bomItems.length)) {
             //赋值查询类型
-            this.moldingRecordTreeColumns[0].dataType = this.$config.tableSelectType.addProduct
-            //设置组件弹窗字段
-            this.$refs.moldingRecord.setLoadChildInit()
             this.$refs.moldingRecord.focusedRow = this.row
             //加载数据
             this.$refs.moldingRecord.getDataTable(this.row)
@@ -415,6 +467,7 @@
             let index = 0
             for (let i of  this.moldingRecordList) {
               i.pdtModelId = this.$config.bindBarCodePdtModelId.parentId
+              i.modelCount= i.bomItems[0].modelCount
               //明细已有绑定条码个数
               let productUniqueCodeLength = 0
               //明细已有成型标识个数
@@ -529,10 +582,10 @@
         }
         //todo  判断每组数据是否达到可保存数量
         //如果本次都不需要绑定条码
-        if(this.productUniqueCodeCount != this.moldingRecordList.length){
+        if (this.productUniqueCodeCount != this.moldingRecordList.length) {
           //过滤掉总单中本次不需要进行绑定条码的数据
-          for(let i of  this.moldingRecordList.filter(it=>!it.readOnlyUniqueCode)){
-            if(!i.modelCount ||i.modelCount && i.modelCount!= i.bomItems.length){
+          for (let i of  this.moldingRecordList.filter(it => !it.readOnlyUniqueCode)) {
+            if (!i.modelCount || i.modelCount && i.modelCount != i.bomItems.length) {
               this.$Message.error(this.$t('W_144'))
               return false
             }

+ 7 - 10
src/view/pdm/molding-record/form.vue

@@ -471,23 +471,20 @@ export default {
         if (res.code === this.$config.SUCCESS_CODE) {
           let table = res.data
           if (table && table.length > 0) {
-            table.forEach(item => {
+            table.forEach(it => {
               // 批次默认是1
-              item.moldingCount = 1
+              it.moldingCount = 1
               // if (!item.flgCanBatches) {
               //   param.moldingBatch = 1
               // }
+              if (it.moldingUsersList && it.moldingUsersList.length === 1){
+                  it.moldingUserId = it.moldingUsersList[0].userId;
+                  it['moldingUserId_Name'] = it.moldingUsersList[0].userCode
+              }
             })
           }
           this.moldlineList = table
-          for(let it of this.moldlineList){
-            if (it.moldingUsersList && it.moldingUsersList.length === 1){
-              this.$nextTick(()=>{
-                it.moldingUserId = it.moldingUsersList[0].userId;
-                it['moldingUserId_Name'] = it.moldingUsersList[0].userCode
-              })
-            }
-          }
+
         } else {
           this.$Message.error(res.message)
           this.moldlineList = []

+ 5 - 5
src/view/pdm/process-node-reverse/add.vue

@@ -237,6 +237,10 @@
        *   @author : 寇珊珊
        */
       setParams() {
+        //明细长度为0产品条码有点击保存按钮直接将产品条码数据存入明细
+        if (this.detailList.length == 0 && this.formData.barCode) {
+          this.addRow()
+        }
         if (!this.validData()) {
           return
         }
@@ -251,14 +255,10 @@
        *   @author : 寇珊珊
        */
       validData(){
-        if(this.formData.barCode){
+        if(this.detailList.length > 0 &&this.formData.barCode){
           this.$Message.error(this.$t('W_132'))
           return false
         }
-        if (this.detailList.length == 0) {
-          this.$Message.error(this.$t('W_137'))
-          return false
-        }
         return true
       },
       /**

+ 15 - 15
src/view/pdm/prod-defect/add.vue

@@ -19,7 +19,7 @@
         <DkForm slot="content" ref="formInline" v-model="formData" style="width: 95%">
           <!--产品条码-->
           <DkFormItem :required="true" prop="barCode">
-            <InputPop ref="barCode" name ="barCode" v-model="formData.barCode" @on-enter="onEnterBlur"
+            <InputPop ref="barCode" name="barCode" v-model="formData.barCode" @on-enter="onEnterBlur"
                       @on-blur="onBarCode" @on-clear="clearFromData"/>
           </DkFormItem>
           <!--产品型号-->
@@ -159,7 +159,7 @@
           moldlineName: null,//成型线
         },
         //记录产品条码
-        oldBarCode:null,
+        oldBarCode: null,
         //报损表单
         LossReportingFormData: {
           blameUserId: null,//责任工号
@@ -196,7 +196,7 @@
           { field: 'productName', type: 'disabled', width: 'auto' },
         ],
         staffList: [],//责任员工
-        addRowFlag:true,//保存至明细可用标识
+        addRowFlag: true,//保存至明细可用标识
       }
     },
     methods: {
@@ -225,7 +225,7 @@
        *   @date   : 2023/4/21 16:00
        *   @author : 寇珊珊
        */
-      onEnterBlur(){
+      onEnterBlur() {
         this.$refs.barCode.$refs.input.blur()
       },
       /**
@@ -235,9 +235,9 @@
        */
       onBarCode() {
         if (this.formData.barCode) {
-          this.addRowFlag =false
-          let param ={
-            barCode:this.formData.barCode
+          this.addRowFlag = false
+          let param = {
+            barCode: this.formData.barCode
           }
           this.excute(this.$service.collectService, this.$service.collectService.checkBarCodeScrap, param).then(res => {
             if (res.code === this.$config.SUCCESS_CODE) {
@@ -268,8 +268,8 @@
           this.LossReportingFormData.blameUserId = row[0].userId
           this.LossReportingFormData.userName = row[0].userName
           this.getStaff(this.LossReportingFormData.blameUserId)
-        }else{
-          this.staffList=[]
+        } else {
+          this.staffList = []
         }
       },
       /**
@@ -337,7 +337,7 @@
        */
       addRow() {
         if (this.formData.barCode) {
-          this.addRowFlag=true
+          this.addRowFlag = true
           //校验名称是否重复
           if (!this.validDataRow()) {
             return
@@ -381,6 +381,10 @@
        *   @author : 寇珊珊
        */
       setParams() {
+        //明细长度为0产品条码有点击保存按钮直接将产品条码数据存入明细
+        if (this.detailList.length == 0 && this.formData.barCode) {
+          this.addRow()
+        }
         if (!this.validData()) {
           return
         }
@@ -402,7 +406,7 @@
        *   @author : 寇珊珊
        */
       validData() {
-        if (this.formData.barCode) {
+        if (this.detailList.length > 0 && this.formData.barCode) {
           this.$Message.error(this.$t('W_132'))
           return false
         }
@@ -410,10 +414,6 @@
           this.$Message.error(this.$t('W_133'))
           return false
         }
-        if (this.detailList.length == 0) {
-          this.$Message.error(this.$t('W_137'))
-          return false
-        }
         return true
       },
       /**

Некоторые файлы не были показаны из-за большого количества измененных файлов