yijing пре 1 година
родитељ
комит
11fac3d834

+ 25 - 24
src/views/inspectionPlan/components/edit.vue

@@ -809,7 +809,7 @@ export default {
         if (this.selectedList.length == 0) {
         if (this.selectedList.length == 0) {
           this.$message.warning('请先选择样品!');
           this.$message.warning('请先选择样品!');
         } else {
         } else {
-          if (this.formData.number == null && this.formData.sampleUnit == '') {
+          if (this.formData.number == null || this.formData.sampleUnit == '') {
             this.$message.warning('请先选择取样的数量和单位!');
             this.$message.warning('请先选择取样的数量和单位!');
           }
           }
         }
         }
@@ -855,30 +855,7 @@ export default {
         }
         }
       }
       }
     },
     },
-    getNewSampleList(measureQ, unit, nums) {
-      this.sampleList = [];
-      let data = [];
-      if (this.selectedList.length == 0) {
-        this.$message.warning('请先选择样品!')
-        return;
-      }
-      this.selectedList.forEach(oldItem => {
-
-        delete oldItem.id;
-
-        for (let i = 0; i < nums; i++) {
-          data.push({
-            ...oldItem,
-            measureQuantity: measureQ,
-            measureUnit: unit
-          });
-        }
-      });
 
 
-      console.log(data, 'datadatadatadatadatadata', nums)
-
-      this.sampleList = data;
-    },
     getCategoryInfo(val) {
     getCategoryInfo(val) {
       this.isConsumable = val.isConsumable;
       this.isConsumable = val.isConsumable;
     },
     },
@@ -910,6 +887,30 @@ export default {
       this.activeName = '2'
       this.activeName = '2'
 
 
     },
     },
+    getNewSampleList(measureQ, unit, nums) {
+      this.sampleList = [];
+      let data = [];
+      if (!this.selectedList || this.selectedList.length == 0) {
+        this.$message.warning('请先选择样品!');
+        return;
+      }
+      this.selectedList.forEach(oldItem => {
+
+        delete oldItem.id;
+
+        for (let i = 0; i < nums; i++) {
+          data.push({
+            ...oldItem,
+            measureQuantity: measureQ,
+            measureUnit: unit
+          });
+        }
+      });
+
+      console.log(data, 'datadatadatadatadatadata', nums)
+
+      this.sampleList = data;
+    },
     handleCancel() {
     handleCancel() {
       this.takeAsampleVisible = false;
       this.takeAsampleVisible = false;
     },
     },

+ 272 - 74
src/views/inspectionWork/components/QualityContentTabs.vue

@@ -8,40 +8,52 @@
     <el-tabs v-model="activeName" @tab-click="handleClick">
     <el-tabs v-model="activeName" @tab-click="handleClick">
       <!--  -->
       <!--  -->
       <el-tab-pane label="来源清单" name="1">
       <el-tab-pane label="来源清单" name="1">
-        <el-table v-if="packingList.length > 0" ref="showPackingListTable" :data="paginatedPackingList"
-          tooltip-effect="dark" :max-height="300" border row-key="id"
-          @selection-change="$emit('selection-change', $event)">
-          <el-table-column type="selection" width="55" align="center" :reserve-selection="true"
-            :selectable="checkSelectable"></el-table-column>
-          <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
-          <template v-for="column in tableColumns">
-            <el-table-column :label="column.label" :prop="column.prop" :show-overflow-tooltip="true"
-              :width="column.width" :align="column.align"></el-table-column>
+        <ele-pro-table ref="sourceTable" :columns="tableColumns1" :datasource="datasource"
+          @selection-change="$emit('selection-change', $event)" :initLoad="false" :pagination="true">
+
+          <template v-slot:toolbar v-if="form.qualityMode == 2">
+            <el-dropdown trigger="click" @command="handleSampleNumber">
+              <el-link type="primary" icon="el-icon-plus">取样</el-link>
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="1">取整样</el-dropdown-item>
+                <el-dropdown-item command="2">取小样</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
           </template>
           </template>
-          <el-table-column label="物料代号" prop="materielDesignation" align="center" width="100" :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <span>{{scope.row.materielDesignation}}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="客户代号" prop="clientCode" align="center" width="100" :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <span>{{scope.row.clientCode}}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="刻码" prop="engrave" align="center" width="100"  :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <span>{{scope.row.engrave}}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="重量" prop="weight" align="center" width="100"  :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <span>{{scope.row.weight}}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
-          :current-page="pagination.currentPage" :page-sizes="[10, 20, 50, 100]" :page-size="pagination.pageSize"
-          layout="total, sizes, prev, pager, next" :total="packingList.length" style="margin-top: 16px" />
+          <template v-slot:toolkit v-if="conditionType == 2">
+            <div>
+              <div style="display: flex;align-items: center;">
+                <el-input v-model="formData.number" style="width: 120px;" placeholder="请输入" size="mini"
+                  @change="handleInputNumber"></el-input>
+                <DictSelection dictName="计量单位" clearable v-model="formData.sampleUnit" size="mini"
+                  style="width: 120px;margin-left: 12px;" @change="changeSamUnit">
+                </DictSelection>
+              </div>
+            </div>
+            <div>
+              <div style="margin-left: 12px;display: flex;align-items: center;">
+                <div>数量:</div>
+                <el-input v-model="formData.portion" style="width: 120px;margin:0 12px;" placeholder="请输入" size="mini"
+                  @change="handleInput" :disabled="conditionType == 1"></el-input>
+                <el-button type="primary" size="mini" @click="handleSampleSubmit"
+                  style="margin-right: 12px;">确认</el-button>
+              </div>
+            </div>
+          </template>
+
+          <template v-slot:materielDesignation="{ row }">
+            <el-input v-model="row.materielDesignation" placeholder="请输入"></el-input>
+          </template>
+          <template v-slot:clientCode="{ row }">
+            <el-input v-model="row.clientCode" placeholder="请输入"></el-input>
+          </template>
+          <template v-slot:engrave="{ row }">
+            <el-input v-model="row.engrave" placeholder="请输入"></el-input>
+          </template>
+          <template v-slot:weight="{ row }">
+            <el-input v-model="row.weight" placeholder="请输入"></el-input>
+          </template>
+        </ele-pro-table>
       </el-tab-pane>
       </el-tab-pane>
       <!--  -->
       <!--  -->
       <el-tab-pane label="样品清单" name="2">
       <el-tab-pane label="样品清单" name="2">
@@ -57,32 +69,26 @@
                     {{ scope.row.categoryCode }}
                     {{ scope.row.categoryCode }}
                   </el-link>
                   </el-link>
                 </template>
                 </template>
+                <template v-else-if="column.prop === 'materielDesignation'">
+                  <el-input :disabled="scope.row.isMaterielDesignationEmpty"
+                    v-model="scope.row.materielDesignation"></el-input>
+                </template>
+                <template v-else-if="column.prop === 'clientCode'">
+                  <el-input :disabled="scope.row.isClientCodeEmpty" v-model="scope.row.clientCode"></el-input>
+                </template>
+                <template v-else-if="column.prop === 'engrave'">
+                  <el-input :disabled="scope.row.isEngraveEmpty" v-model="scope.row.engrave"></el-input>
+                </template>
+                <template v-else-if="column.prop === 'weight'">
+                  <el-input type="number" v-model="scope.row.weight" :min="0"
+                    @input="inputWeight(scope.row, scope.$index)"></el-input>
+                </template>
                 <template v-else>
                 <template v-else>
                   {{ scope.row[column.prop] }}
                   {{ scope.row[column.prop] }}
                 </template>
                 </template>
               </template>
               </template>
             </el-table-column>
             </el-table-column>
           </template>
           </template>
-          <el-table-column label="物料代号" prop="materielDesignation" align="center" width="100" fixed="right"  :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <el-input :disabled="scope.row.isMaterielDesignationEmpty" v-model="scope.row.materielDesignation" ></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column label="客户代号" prop="clientCode" align="center" width="100" fixed="right"  :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <el-input :disabled="scope.row.isClientCodeEmpty" v-model="scope.row.clientCode" ></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column label="刻码" prop="engrave" align="center" width="100" fixed="right"  :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <el-input :disabled="scope.row.isEngraveEmpty" v-model="scope.row.engrave" ></el-input>
-            </template>
-          </el-table-column>
-          <el-table-column label="重量" prop="weight" align="center" width="100" fixed="right"  :show-overflow-tooltip="true">
-            <template slot-scope="scope">
-              <el-input type="number" v-model="scope.row.weight" :min="0" @input="inputWeight(scope.row, scope.$index)"></el-input>
-            </template>
-          </el-table-column>
           <el-table-column label="处置状态" prop="disposalStatus" align="center" width="80" fixed="right"
           <el-table-column label="处置状态" prop="disposalStatus" align="center" width="80" fixed="right"
             :show-overflow-tooltip="true">
             :show-overflow-tooltip="true">
             <template slot-scope="scope">
             <template slot-scope="scope">
@@ -156,6 +162,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import { save, update, getById, exeReportWork, queryQualitySamplContent, queryQualityTempleContent, queryQualityInventory } from '@/api/inspectionWork';
 export default {
 export default {
   props: {
   props: {
     type: String,
     type: String,
@@ -163,12 +170,12 @@ export default {
     sampleList: Array,
     sampleList: Array,
     schemeList: Array,
     schemeList: Array,
     loading: Boolean,
     loading: Boolean,
-    form: Object
+    form: Object,
+    ids: String
   },
   },
   data() {
   data() {
     return {
     return {
       activeName: '2',
       activeName: '2',
-      pagination: { currentPage: 1, pageSize: 10 },
       samplePagination: { currentPage: 1, pageSize: 10 },
       samplePagination: { currentPage: 1, pageSize: 10 },
       schemePagination: { currentPage: 1, pageSize: 10 },
       schemePagination: { currentPage: 1, pageSize: 10 },
 
 
@@ -181,6 +188,14 @@ export default {
         label: '不合格'
         label: '不合格'
       }],
       }],
       tableColumns: [
       tableColumns: [
+        {
+          columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          fixed: 'left'
+        },
         {
         {
           label: '编码',
           label: '编码',
           prop: 'categoryCode',
           prop: 'categoryCode',
@@ -201,12 +216,12 @@ export default {
         { label: '包装单位', prop: 'packingUnit', align: 'center' },
         { label: '包装单位', prop: 'packingUnit', align: 'center' },
         { label: '计量数量', prop: 'measureQuantity', align: 'center' },
         { label: '计量数量', prop: 'measureQuantity', align: 'center' },
         { label: '计量单位', prop: 'measureUnit', align: 'center' },
         { label: '计量单位', prop: 'measureUnit', align: 'center' },
-        { label: '供应商名称', prop: 'supplierName', align: 'center' ,width: '120' },
-        { label: '供应商代号', prop: 'supplierCode', align: 'center' ,width: '120'},
-        // { label: '物料代号', prop: 'materielDesignation', align: 'center' },
-        // { label: '客户代号', prop: 'clientCode', align: 'center' },
-        // { label: '刻码', prop: 'engrave', align: 'center' },
-        // { label: '重量', prop: 'weight', align: 'center', width: "100" },
+        { label: '供应商名称', prop: 'supplierName', align: 'center', width: '120' },
+        { label: '供应商代号', prop: 'supplierCode', align: 'center', width: '120' },
+        { label: '物料代号', prop: 'materielDesignation', align: 'center', slot: 'materielDesignation', width: '120' },
+        { label: '客户代号', prop: 'clientCode', align: 'center', slot: 'clientCode', width: '120' },
+        { label: '刻码', prop: 'engrave', align: 'center', slot: 'engrave', width: '120' },
+        { label: '重量', prop: 'weight', align: 'center', slot: 'weight', width: '120' },
         { label: '重量单位', prop: 'weightUnit', align: 'center', width: "100" },
         { label: '重量单位', prop: 'weightUnit', align: 'center', width: "100" },
         { label: '仓库', prop: 'warehouseName', align: 'center' },
         { label: '仓库', prop: 'warehouseName', align: 'center' },
         { label: '货区', prop: 'areaName', align: 'center' },
         { label: '货区', prop: 'areaName', align: 'center' },
@@ -216,15 +231,94 @@ export default {
         { label: '采购日期', prop: 'purchaseDate', align: 'center' },
         { label: '采购日期', prop: 'purchaseDate', align: 'center' },
       ],
       ],
 
 
+      conditionType: null,
+      formData: {
+        number: 1,
+        sampleUnit: '',
+        portion: null
+      },
     }
     }
   },
   },
 
 
   computed: {
   computed: {
-    paginatedPackingList() {
-      const start =
-        (this.pagination.currentPage - 1) * this.pagination.pageSize;
-      const end = start + this.pagination.pageSize;
-      return this.packingList.slice(start, end);
+    tableColumns1() {
+      let arr = [
+        // (this.btnType !== 'issued' || this.baseForm.qualityMode === 2)
+        //   ? {
+        //     columnKey: 'selection',
+        //     type: 'selection',
+        //     width: 45,
+        //     align: 'center'
+        //   }
+        //   : null,
+        {
+          columnKey: 'selection',
+          type: 'selection',
+          width: 45,
+          align: 'center'
+        },
+        {
+          columnKey: 'index',
+          label: '序号',
+          type: 'index',
+          width: 55,
+          align: 'center',
+          fixed: 'left'
+        },
+        {
+          label: '编码',
+          prop: 'categoryCode',
+          width: 150,
+          align: 'center',
+          showOverflowTooltip: true
+        },
+        {
+          label: '名称',
+          prop: 'categoryName',
+          width: '150',
+          align: 'center',
+          width: 120,
+          showOverflowTooltip: true
+        },
+        { label: '批次号', prop: 'batchNo', align: 'center', width: 120, },
+        { label: '发货条码', prop: 'barcodes', align: 'center' },
+        {
+          label: '包装编码', prop: 'packageNo', align: 'center',
+          width: 120,
+          showOverflowTooltip: true
+        },
+        { label: '包装数量', prop: 'packingQuantity', align: 'center' },
+        { label: '包装单位', prop: 'packingUnit', align: 'center' },
+        { label: '计量数量', prop: 'measureQuantity', align: 'center' },
+        { label: '计量单位', prop: 'measureUnit', align: 'center' },
+        { label: '物料代号', prop: 'materielDesignation', align: 'center' },
+        { label: '客户代号', prop: 'clientCode', align: 'center' },
+        { label: '供应商名称', prop: 'supplierName', align: 'center', width: 120, showOverflowTooltip: true },
+        { label: '供应商代号', prop: 'supplierCode', align: 'center', width: '120' },
+        { label: '刻码', prop: 'engrave', align: 'center' },
+        { label: '重量', prop: 'weight', align: 'center' },
+        { label: '重量单位', prop: 'weightUnit', align: 'center' },
+        {
+          label: '仓库', prop: 'warehouseName', align: 'center',
+          width: 120,
+          showOverflowTooltip: true
+        },
+        { label: '货区', prop: 'areaName', align: 'center' },
+        { label: '货架', prop: 'goodsShelfName', align: 'center' },
+        { label: '货位', prop: 'goodsAllocationName', align: 'center' },
+        {
+          label: '生产日期', prop: 'productionDate', align: 'center',
+          width: 120,
+          showOverflowTooltip: true
+        },
+        {
+          label: '采购日期', prop: 'purchaseDate', align: 'center',
+          width: 120,
+          showOverflowTooltip: true
+        }
+      ]
+      return arr
+
     },
     },
     // 分页后的样品列表
     // 分页后的样品列表
     paginatedSampleList() {
     paginatedSampleList() {
@@ -241,10 +335,122 @@ export default {
       return this.schemeList?.slice(start, end);
       return this.schemeList?.slice(start, end);
     }
     }
   },
   },
+  created() {
+    this.reload({ qualityWorkerId: this.ids });
+  },
   methods: {
   methods: {
+    async datasource({ page, limit, where }) {
+      const res = await queryQualityInventory({ ...where, page, limit });
+      return res;
+    },
+
+    reload(where) {
+      this.$nextTick(() => {
+        if (this.$refs.sourceTable && this.$refs.sourceTable.reload)
+          this.$refs.sourceTable.reload({ page: 1, where: where });
+      })
+    },
+
+    tableSelClear() {
+      console.log('清空勾选')
+      this.$refs.sourceTable.clearSelection();
+    },
+
+    handleSampleNumber(val) {
+      console.log(val, 'val')
+      this.conditionType = val;
+
+      //取整样
+      let data = this.$refs.sourceTable.getData()
+      if (val == 1) {
+        console.log(data, 'data12345678901234567890123456789012345678901234567890123456789')
+        this.formData.portion = data.length
+        this.$refs.sourceTable.toggleAllSelection();
+        this.activeName = '2'
+        this.$emit('handleSample1', val, data)
+      } else if (val == 2) {
+        this.tableSelClear();
+        this.$emit('handleSample1', val, data)
+      }
+    },
+    handleInputNumber(val) {
+      let packingList = this.$refs.sourceTable.getData()
+      if (packingList.length > 1) {
+        if (val > packingList.length) {
+          this.$message.warning('数量不能大于来源清单数量!');
+          return;
+        }
+      } else {
+        if (packingList.length == 1) {
+          if (val > packingList[0].measureQuantity) {
+            this.$message.warning('数量不能大于计量数量!');
+            return;
+          }
+        }
+      }
+    },
+    handleInput() {
+      if (this.formData.portion == null || this.formData.portion == '' || this.formData.portion == 0) {
+        this.$message.warning('生成取样数量不能为空!');
+        this.tableSelClear();
+        return;
+      }
+      let packingList = this.$refs.sourceTable.getData()
+
+      if (packingList.length > 1) {
+        if (this.formData.portion > packingList.length) {
+          this.$message.warning('取样数量不能大于来源清单数量!');
+          return;
+        }
+        const rows = packingList.slice(0, this.formData.portion);
+        rows.forEach((row) => {
+          this.$refs.sourceTable.toggleRowSelection(row);
+        });
+      } else {
+        if (this.formData.portion > packingList[0].measureQuantity) {
+          this.$message.warning('取样数量不能大于计量数量!');
+          return;
+        }
+      }
+    },
+    changeSamUnit(val) {
+      console.log(val, 'dddd')
+      this.$emit('changeSamUnit', val)
+    },
+    handleSampleSubmit() {
+      if (this.formData.portion == null || this.formData.portion == 0) {
+        this.$message.warning('生成取样数量不能为空!');
+        return;
+      }
+      //取小样 赋值右上角单位
+      this.changeSamUnit(this.formData.sampleUnit)
+
+      console.log(this.formData.number, 'this.formData.number')
+      console.log(this.formData.sampleUnit, 'this.formData.sampleUnit')
+
+      if (this.formData.number == null || this.formData.sampleUnit == '') {
+        this.$message.warning('请先选择取样的数量和单位!');
+        return;
+      }
+
+      let params = {
+        conditionType: this.conditionType,
+        measureQ: this.formData.number,
+        sampleUnit: this.formData.sampleUnit,
+        portion: this.formData.portion
+      }
+      this.$emit('handleSampleSubmit', params)
+    },
+
+
+
     handleClick(tab) {
     handleClick(tab) {
+      console.log(tab, 'tab')
       this.activeName = tab.name
       this.activeName = tab.name
     },
     },
+    tabsChange(val) {
+      this.activeName = val
+    },
     checkSelectable(row, index) {
     checkSelectable(row, index) {
       // 只有当质检方式为抽检(qualityMode=2)时   类型不是生产检验  才可选
       // 只有当质检方式为抽检(qualityMode=2)时   类型不是生产检验  才可选
       return this.form.qualityType != 2 && this.form.qualityMode === 2;
       return this.form.qualityType != 2 && this.form.qualityMode === 2;
@@ -258,14 +464,6 @@ export default {
     handleDispose(index, row, type) {
     handleDispose(index, row, type) {
       this.$emit('handleDispose', index, row, type)
       this.$emit('handleDispose', index, row, type)
     },
     },
-    // 分页方法
-    handleSizeChange(val) {
-      this.pagination.pageSize = val;
-      this.pagination.currentPage = 1;
-    },
-    handleCurrentChange(val) {
-      this.pagination.currentPage = val;
-    },
     handleSampleSizeChange(val) {
     handleSampleSizeChange(val) {
       this.samplePagination.pageSize = val;
       this.samplePagination.pageSize = val;
       this.samplePagination.currentPage = 1;
       this.samplePagination.currentPage = 1;

+ 37 - 27
src/views/inspectionWork/components/baseInfo.vue

@@ -79,7 +79,7 @@
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="质检人" prop="qualityId">
           <el-form-item label="质检人" prop="qualityId">
             <el-select :disabled="btnType == 'detail'" v-model="form.qualityId" @change="changeExecutor" size="small"
             <el-select :disabled="btnType == 'detail'" v-model="form.qualityId" @change="changeExecutor" size="small"
-                       style="width: 100%" filterable>
+              style="width: 100%" filterable>
               <el-option v-for="item in executorList" :key="item.id" :value="item.id" :label="item.name"></el-option>
               <el-option v-for="item in executorList" :key="item.id" :value="item.id" :label="item.name"></el-option>
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
@@ -87,7 +87,7 @@
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="质检时间:" prop="qualityTime">
           <el-form-item label="质检时间:" prop="qualityTime">
             <el-date-picker class="w100" v-model="form.qualityTime" type="date" value-format="yyyy-MM-dd"
             <el-date-picker class="w100" v-model="form.qualityTime" type="date" value-format="yyyy-MM-dd"
-                            :disabled="btnType == 'detail'" placeholder="请选择"></el-date-picker>
+              :disabled="btnType == 'detail'" placeholder="请选择"></el-date-picker>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="6">
         <el-col :span="6">
@@ -99,12 +99,12 @@
       <el-row>
       <el-row>
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="合格数:" prop="qualifiedNumber">
           <el-form-item label="合格数:" prop="qualifiedNumber">
-            <el-input v-model="form.qualifiedNumber" disabled placeholder="请输入"></el-input>
+            <el-input v-model="form.qualifiedNumber" placeholder="请输入"></el-input>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="不合格数:" prop="noQualifiedNumber">
           <el-form-item label="不合格数:" prop="noQualifiedNumber">
-            <el-input v-model="form.noQualifiedNumber" disabled placeholder="请输入"></el-input>
+            <el-input v-model="form.noQualifiedNumber" placeholder="请输入"></el-input>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="6">
         <el-col :span="6">
@@ -124,22 +124,22 @@
             <el-input type="number" v-model="form.totalWeight" />
             <el-input type="number" v-model="form.totalWeight" />
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
-          <el-col :span="6">
-            <el-form-item label="检验标准" prop="inspectionStandards">
-              <!-- 计量 计重 -->
-              <el-select style="width: 100%" v-model="form.inspectionStandards" placeholder="请选择"
-                         :disabled="parseInt(qualityType1) == 1">
-                <el-option v-for="item in inspectionStandardsList" :label="item.label" :value="item.value"
-                           :key="item.value">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+        <el-col :span="6">
+          <el-form-item label="检验标准" prop="inspectionStandards">
+            <!-- 计量 计重 -->
+            <el-select style="width: 100%" v-model="form.inspectionStandards" placeholder="请选择"
+              :disabled="parseInt(qualityType1) == 1">
+              <el-option v-for="item in inspectionStandardsList" :label="item.label" :value="item.value"
+                :key="item.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="检验方式:" prop="qualityMode">
           <el-form-item label="检验方式:" prop="qualityMode">
             <!-- <DictSelection dictName="取样类型" v-model="form.qualityMode" :disabled="qualityType == 1"></DictSelection> -->
             <!-- <DictSelection dictName="取样类型" v-model="form.qualityMode" :disabled="qualityType == 1"></DictSelection> -->
             <el-select style="width: 100%" v-model="form.qualityMode" placeholder="请选择"
             <el-select style="width: 100%" v-model="form.qualityMode" placeholder="请选择"
-                       :disabled="parseInt(qualityType1) == 1">
+              :disabled="parseInt(qualityType1) == 1">
               <el-option v-for="item in qualityModeList" :label="item.label" :value="item.value" :key="item.value">
               <el-option v-for="item in qualityModeList" :label="item.label" :value="item.value" :key="item.value">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
@@ -147,13 +147,18 @@
         </el-col>
         </el-col>
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="取样数量:" prop="sampleNumber" :rules="{
           <el-form-item label="取样数量:" prop="sampleNumber" :rules="{
-          required: form.qualityMode == 2 ? true : false,
-          message: '请输入取样数量',
-          trigger: 'blur'
-        }" v-if="form.qualityMode == 2">
-            <el-input type="number"
-                      :disabled="form.qualityMode ==null || form.qualityMode == 1 || (form.qualityMode == 2 && form.sampleNumber) ? true : false"
-                      v-model="form.sampleNumber" @change="handleChangeNumber" />
+            required: form.qualityMode == 2 ? true : false,
+            message: '请输入取样数量',
+            trigger: 'blur'
+          }" v-if="form.qualityMode == 2">
+            <div style="display: flex;align-items: center;justify-content: space-between;">
+              <el-input type="number"
+                :disabled="form.qualityMode == null || form.qualityMode == 1 || (form.qualityMode == 2 && form.sampleNumber) ? true : false"
+                v-model="form.sampleNumber" @change="handleChangeNumber" style="width: calc(100% - 90px)" />
+              <DictSelection dictName="计量单位" clearable v-model="form.sampleMeasureUnit" disabled size="mini"
+                style="width: 90px;margin-left: 12px;">
+              </DictSelection>
+            </div>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
       </el-row>
       </el-row>
@@ -161,22 +166,27 @@
         <el-col :span="6" v-if="parseInt(qualityType1) == 2">
         <el-col :span="6" v-if="parseInt(qualityType1) == 2">
           <el-form-item label="工艺路线:">
           <el-form-item label="工艺路线:">
             <el-input @click.native="openVersion" clearable v-model="form.produceRoutingName"
             <el-input @click.native="openVersion" clearable v-model="form.produceRoutingName"
-                      :disabled="btnType == 'detail'" placeholder="请选择" />
+              :disabled="btnType == 'detail'" placeholder="请选择" />
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
         <el-col :span="6" v-if="parseInt(qualityType1) == 2">
         <el-col :span="6" v-if="parseInt(qualityType1) == 2">
           <el-form-item label="工序:">
           <el-form-item label="工序:">
             <el-select style="width: 100%" v-model="form.produceTaskId" placeholder="请选择" clearable
             <el-select style="width: 100%" v-model="form.produceTaskId" placeholder="请选择" clearable
-                       @change="produceTaskChange" :disabled="btnType == 'detail'">
+              @change="produceTaskChange" :disabled="btnType == 'detail'">
               <el-option v-for="item in produceTaskList" :key="item.id" :label="item.name" :value="item.id">
               <el-option v-for="item in produceTaskList" :key="item.id" :label="item.name" :value="item.id">
               </el-option>
               </el-option>
             </el-select>
             </el-select>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
+        <el-col :span="6">
+          <el-form-item label="合格证号:" prop="certificateNumber">
+            <el-input v-model="form.certificateNumber" :disabled="btnType == 'detail'" placeholder="请输入"></el-input>
+          </el-form-item>
+        </el-col>
         <el-col :span="6">
         <el-col :span="6">
           <el-form-item label="质检结果:" prop="qualityResults">
           <el-form-item label="质检结果:" prop="qualityResults">
-            <el-select v-model="form.qualityResults" placeholder="请选择" style="width: 100%" :disabled="btnType == 'issued'"
-                       clearable>
+            <el-select v-model="form.qualityResults" placeholder="请选择" style="width: 100%"
+              :disabled="btnType == 'issued'" clearable>
               <el-option label="合格" :value=1 />
               <el-option label="合格" :value=1 />
               <el-option label="不合格" :value=2 />
               <el-option label="不合格" :value=2 />
             </el-select>
             </el-select>

+ 113 - 21
src/views/inspectionWork/edit.vue

@@ -9,9 +9,11 @@
       <base-info ref="baseInfoRefs" v-if="form" :form="form" :btnType="type" :qualityType1="qualityType"
       <base-info ref="baseInfoRefs" v-if="form" :form="form" :btnType="type" :qualityType1="qualityType"
         @changeModel="changeModel" @changeNumber="changeNumber"></base-info>
         @changeModel="changeModel" @changeNumber="changeNumber"></base-info>
 
 
-      <quality-content-tabs :type="type" :packing-list="packingList" :sample-list="sampleList" :scheme-list="schemeList"
-        :loading="loading" :form="form" @selection-change="handleSelectionChange1" @batch-quality="batchQuality"
-        @handleDetail="handleDetail" @inputWeight="inputWeight" @handleDispose="handleDispose" />
+      <quality-content-tabs ref="tabsRef" :type="type" :ids="this.$route.query.id" :sample-list="sampleList"
+        :scheme-list="schemeList" :loading="loading" :form="form" @selection-change="handleSelectionChange1"
+        @batch-quality="batchQuality" @handleDetail="handleDetail" @inputWeight="inputWeight"
+        @handleDispose="handleDispose" @changeSamUnit="changeSamUnit" @handleSample1="handleSample1"
+        @handleSampleSubmit="handleSampleSubmit" />
     </el-card>
     </el-card>
 
 
     <sampleListDialog ref="detailRef" @handleConfirm="handleConfirm" @handleDispose="handleDispose"></sampleListDialog>
     <sampleListDialog ref="detailRef" @handleConfirm="handleConfirm" @handleDispose="handleDispose"></sampleListDialog>
@@ -73,6 +75,8 @@ export default {
         imgUrl: [],
         imgUrl: [],
         qualityTimeStart: '',
         qualityTimeStart: '',
         qualityTimeEnd: '',
         qualityTimeEnd: '',
+
+        sampleMeasureUnit: ''
       };
       };
     };
     };
     return {
     return {
@@ -98,7 +102,8 @@ export default {
       isValid: true,
       isValid: true,
       isStatus: true,
       isStatus: true,
       SampleListbyReportList: [],
       SampleListbyReportList: [],
-      qualityTimeStart: ''
+      qualityTimeStart: '',
+      isReportProcessProduce: false,
 
 
     };
     };
   },
   },
@@ -122,21 +127,27 @@ export default {
   },
   },
   methods: {
   methods: {
     //切换检验方式
     //切换检验方式
-    changeModel(val,flag) {
+    changeModel(val, flag) {
+
+      this.$refs.tabsRef.tableSelClear()
+      this.sampleList = [];
+      this.$refs.tabsRef.tabsChange('1')
+
       this.form.qualityMode = val;
       this.form.qualityMode = val;
       //检验方式 全检
       //检验方式 全检
       if (this.form.qualityMode == 1) {
       if (this.form.qualityMode == 1) {
         this.form.sampleNumber = ''
         this.form.sampleNumber = ''
-        if (this.schemeList.length == 0) {
-          for (let i = 0; i < this.packingList.length; i++) {
-            console.log(this.packingList[i], 'selection[i]')
-            this.$set(this.packingList[i], 'qualityStatus', 2)
+        const sData = this.$refs.tabsRef.$refs.sourceTable.getData()
+        if (sData.length == 0) {
+          for (let i = 0; i < sData.length; i++) {
+            this.$set(sData[i], 'qualityStatus', 2)
           }
           }
         }
         }
-        this.getProSamList(this.packingList)
+        console.log(this.$refs.tabsRef.$refs.sourceTable.getData(), 'packingList')
+        this.getProSamList(sData)
 
 
       } else {
       } else {
-        if (!flag){
+        if (!flag) {
           this.sampleList = [];
           this.sampleList = [];
         }
         }
       }
       }
@@ -144,8 +155,8 @@ export default {
     //根据类型判断样品清单现实列表数据
     //根据类型判断样品清单现实列表数据
     getProSamList(list) {
     getProSamList(list) {
       //生产检验
       //生产检验
-      if (this.qualityType == '2' ) {
-        if (this.form.qualityMode != null){
+      if (this.qualityType == 2) {
+        if (this.form.qualityMode != null) {
           const ProductSampleList = [];
           const ProductSampleList = [];
           console.log(list, 'list')
           console.log(list, 'list')
           list.forEach(oldItem => {
           list.forEach(oldItem => {
@@ -200,7 +211,7 @@ export default {
         return;
         return;
       }
       }
 
 
-      if (this.qualityType == '2') {
+      if (this.qualityType == 2) {
         //生产检验的抽检逻辑
         //生产检验的抽检逻辑
         if (val > this.packingList[0].measureQuantity) {
         if (val > this.packingList[0].measureQuantity) {
           this.$message.warning('取样数量不能大于来源清单的计量数量!');
           this.$message.warning('取样数量不能大于来源清单的计量数量!');
@@ -294,6 +305,7 @@ export default {
     async open() {
     async open() {
       this.type = this.$route.query.type;
       this.type = this.$route.query.type;
       this.qualityType = this.$route.query.qualityType;
       this.qualityType = this.$route.query.qualityType;
+
       this.title = this.type == 'add' ? '新增' : this.type == 'edit' ? '报工' : '详情';
       this.title = this.type == 'add' ? '新增' : this.type == 'edit' ? '报工' : '详情';
 
 
       if (this.type == 'add') {
       if (this.type == 'add') {
@@ -318,6 +330,8 @@ export default {
       getById(this.$route.query.id).then((res) => {
       getById(this.$route.query.id).then((res) => {
         this.form = res.data;
         this.form = res.data;
 
 
+        this.isReportProcessProduce = this.form.isReportProcessProduce == 1 ? true : false;
+
         this.tabTaskId =
         this.tabTaskId =
           this.categoryParamList[0] && this.categoryParamList[0].id;
           this.categoryParamList[0] && this.categoryParamList[0].id;
 
 
@@ -335,19 +349,80 @@ export default {
         }
         }
 
 
       });
       });
-      await this.queryQualityInventory()
+      // await this.queryQualityInventory()
       await this.queryQualityTempleContent()
       await this.queryQualityTempleContent()
       await this.queryQualitySamplContent()
       await this.queryQualitySamplContent()
 
 
     },
     },
-    async queryQualityInventory() {
-      let res = await queryQualityInventory({ qualityWorkerId: this.$route.query.id });
-      console.log(res, '清单列表');
-      this.packingList = res;
+    // getNewData(val) {
+    //   console.log(val, '清单列表')
+    //   this.packingList = val
+    // },
+
+    // async queryQualityInventory() {
+    //   let res = await queryQualityInventory({ qualityWorkerId: this.$route.query.id });
+    //   console.log(res, '清单列表');
+    //   this.packingList = res;
+    // },
+
+    changeSamUnit(val) {
+      this.$set(this.form, 'sampleMeasureUnit', val)
+    },
+    handleSample1(val, data) {
+      this.sampleList = []
+      if (val == 1) {
+        this.sampleList = data
+        this.$message.success('取样成功!');
+      } else if (val == 2) {
+        console.log(data, 'datadatadatadataxiaoyang')
+
+      }
+    },
+    handleSampleSubmit(data) {
+      console.log(data, 'data123确认')
+
+      if (data.conditionType == 1) {
+        this.sampleList = this.selectedList
+      } else {
+        let measureQ = data.measureQ;
+        let unit = data.sampleUnit;
+        let nums = Number(data.portion);
+        console.log(measureQ, '计量数量')
+        console.log(unit, '所选单位')
+        console.log(nums, '数量')
+        this.getNewSampleList(measureQ, unit, nums)
+      }
+    },
+    getNewSampleList(measureQ, unit, nums) {
+      this.sampleList = [];
+      let data = [];
+      console.log(this.selectedList, 'this.selectedList')
+      if (!this.selectedList || this.selectedList.length == 0) {
+        this.$message.warning('请先选择来源清单!');
+        return;
+      }
+      this.selectedList.forEach(oldItem => {
+
+        delete oldItem.id;
+
+        for (let i = 0; i < nums; i++) {
+          data.push({
+            ...oldItem,
+            measureQuantity: measureQ,
+            measureUnit: unit
+          });
+        }
+      });
+
+      console.log(data, 'datadatadatadatadatadata', nums)
+
+      this.$refs.tabsRef.tabsChange('2')
+      this.sampleList = data;
     },
     },
+
     async queryQualitySamplContent() {
     async queryQualitySamplContent() {
       const res = await queryQualitySamplContent({ qualityWorkerId: this.$route.query.id })
       const res = await queryQualitySamplContent({ qualityWorkerId: this.$route.query.id })
-      let addStatus = res.map((item) => {
+      let addStatus = res.list.map((item) => {
         item.isValid = true;
         item.isValid = true;
         item.disposeTime = item.disposeTime ? item.disposeTime.split(' ')[0] : null;
         item.disposeTime = item.disposeTime ? item.disposeTime.split(' ')[0] : null;
         item.sampleDate = item.sampleDate ? item.sampleDate.split(' ')[0] : null;
         item.sampleDate = item.sampleDate ? item.sampleDate.split(' ')[0] : null;
@@ -366,7 +441,7 @@ export default {
     async queryQualityTempleContent() {
     async queryQualityTempleContent() {
       const res = await queryQualityTempleContent({ qualityWorkerId: this.$route.query.id })
       const res = await queryQualityTempleContent({ qualityWorkerId: this.$route.query.id })
       console.log(res, '质检方案');
       console.log(res, '质检方案');
-      this.schemeList = res;
+      this.schemeList = res.list;
     },
     },
 
 
 
 
@@ -462,6 +537,23 @@ export default {
         if (!valid) {
         if (!valid) {
           return false;
           return false;
         }
         }
+        this.loading = true;
+
+        if (this.qualityType == 2 && this.isReportProcessProduce) {
+          for (let i = 0; i < this.sampleList.length; i++) {
+
+            const disposalStatus = this.sampleList[i].disposalStatus;
+            console.log(disposalStatus, 'disposalStatus')
+
+            if (disposalStatus == null) {
+              this.$message.error('请完成以下样品处置!')
+              this.loading = false;
+              return
+            }
+
+          }
+        }
+
 
 
         for (let i = 0; i < this.sampleList.length; i++) {
         for (let i = 0; i < this.sampleList.length; i++) {