Przeglądaj źródła

计划和工单

yijing 1 rok temu
rodzic
commit
8a9366153a

+ 1 - 0
src/views/inspectionPlan/components/baseInfo.vue

@@ -398,6 +398,7 @@ export default {
       if (!val) return;
       this.form.planSourceId = val.id;
       this.form.planSourceCode = val.receiveNo;
+      console.log(this.form.planSourceCode,'this.form.planSourceCode')
 
       this.form.productName = val.productName;
       this.form.productCode = val.productCode;

+ 2 - 2
src/views/inspectionPlan/components/edit.vue

@@ -515,7 +515,7 @@ export default {
           this.$message.warning('取样数量不能大于包装数量!');
           return;
         }
-        
+
       }
       this.sampleLis = [];
       let num = Number(val);
@@ -565,7 +565,7 @@ export default {
         }
 
         this.loading = true;
-
+        this.baseForm.isUnpack = this.isCheck ? 1 : 2;
         let params = {
           ...this.baseForm,
           qualityInventoryList: this.packingList,

+ 2 - 1
src/views/inspectionPlan/components/warehousing.vue

@@ -180,7 +180,8 @@
           ...where,
           pageNum: page,
           reviewStatus: '2',
-          size: limit
+          size: limit,
+          isQmsQuery:1
         });
       },
       open(ids) {

+ 1 - 1
src/views/inspectionPlan/index.vue

@@ -2,7 +2,7 @@
   <div class="ele-body">
     <el-card shadow="never">
       <search ref="search" @search="reload"></search>
-      <ele-pro-table ref="tableRef" :columns="columns" :datasource="datasource">
+      <ele-pro-table ref="tableRef" :columns="columns" :datasource="datasource" :pageSize="20"  :pageSizes="[20, 30, 40, 50, 100]">
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
           <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon" @click="openEdit('add')">

+ 8 - 6
src/views/inspectionWork/components/baseInfo.vue

@@ -148,7 +148,7 @@
         <el-form-item label="检验标准" prop="inspectionStandards">
           <!-- 计量 计重 -->
           <el-select style="width: 100%" v-model="form.inspectionStandards" placeholder="请选择"
-            :disabled="qualityType == 1">
+            :disabled="parseInt(qualityType1) == 1">
             <el-option v-for="item in inspectionStandardsList" :label="item.label" :value="item.value"
               :key="item.value">
             </el-option>
@@ -158,7 +158,8 @@
       <el-col :span="6">
         <el-form-item label="检验方式:" prop="qualityMode">
           <!-- <DictSelection dictName="取样类型" v-model="form.qualityMode" :disabled="qualityType == 1"></DictSelection> -->
-          <el-select style="width: 100%" v-model="form.qualityMode" placeholder="请选择" :disabled="qualityType == 1">
+          <el-select style="width: 100%" v-model="form.qualityMode" placeholder="请选择"
+            :disabled="parseInt(qualityType1) == 1">
             <el-option v-for="item in qualityModeList" :label="item.label" :value="item.value" :key="item.value">
             </el-option>
           </el-select>
@@ -220,9 +221,9 @@ export default {
       type: String,
       default: ''
     },
-    qualityType: {
-      type: Number,
-      default: 1
+    qualityType1: {
+      type: String,
+      default: ''
     }
   },
   watch: {
@@ -256,7 +257,8 @@ export default {
       },
       produceTaskList: [],
       inspectionStandardsList: [],
-      qualityModeList: []
+      qualityModeList: [],
+
     };
   },
   created() {

+ 37 - 32
src/views/inspectionWork/components/sampleDisposeDialog.vue

@@ -1,32 +1,25 @@
-<!-- 用户编辑弹窗 -->
 <template>
     <ele-modal :title="title" :visible.sync="visible" :before-close="handleClose" :close-on-click-modal="false"
         :close-on-press-escape="false" append-to-body width="80%" :maxable="true">
-      <el-form ref="form1" :model="tableData" :rules="rules" label-width="120px">
+      <el-form ref="form1" :model="formData" :rules="rules" label-width="120px">
         <el-row>
           <el-col :span="6">
-            <el-form-item label="处置方式" prop="disposalStatus" align="center" v-if="qualityType == 1">
-              <el-select v-model="tableData.disposalStatus" placeholder="请选择" style="width: 100%;" >
+            <el-form-item label="处置方式" prop="disposalStatus" align="center" >
+              <el-select v-model="formData.disposalStatus" placeholder="请选择" style="width: 100%;" v-if="qualityType == 1">
                 <el-option v-for="item in disposalStatusListType" :key="item.value"
                            :label="item.label" :value="item.value">
                 </el-option>
               </el-select>
-            </el-form-item>
-            <el-form-item label="处置方式" prop="disposalStatus" align="center"  v-else>
-              <el-select v-model="tableData.disposalStatus" placeholder="请选择" style="width: 100%;" >
+              <el-select v-model="formData.disposalStatus" placeholder="请选择" style="width: 100%;" v-else>
                 <el-option v-for="item in disposalStatusList" :key="item.value"
                            :label="item.label" :value="item.value">
                 </el-option>
               </el-select>
             </el-form-item>
           </el-col>
-
           <el-col :span="6">
-<!--            <el-form-item label="处置仓库Id" prop="disposeWarehouseId" align="center"  v-if="qualityType == 1">-->
-<!--              <el-input v-model="tableData.disposeWarehouseId" placeholder="请输入" style="width: 100%;"></el-input>-->
-<!--            </el-form-item>-->
             <el-form-item label="处置仓库" prop="disposeWarehouseId" align="center">
-              <el-select v-model="tableData.disposeWarehouseId" placeholder="请选择" style="width: 100%;" clearable @change="handleWarehouseChange">
+              <el-select v-model="formData.disposeWarehouseId" placeholder="请选择" style="width: 100%;" clearable @change="handleWarehouseChange">
                 <el-option v-for="item in warehouseList" :key="item.disposeWarehouseId"
                            :label="item.disposeWarehouseName" :value="item.disposeWarehouseId">
                 </el-option>
@@ -35,42 +28,41 @@
           </el-col>
           <el-col :span="6">
             <el-form-item label="留样日期" prop="sampleDate" align="center" >
-              <el-date-picker class="w100" v-model="tableData.sampleDate" type="date" value-format="yyyy-MM-dd" placeholder="请输入"></el-date-picker>
+              <el-date-picker class="w100" v-model="formData.sampleDate" type="date" value-format="yyyy-MM-dd" placeholder="请输入"></el-date-picker>
             </el-form-item>
           </el-col>
           <el-col :span="6">
             <el-form-item label="处置时间:" prop="disposeTime">
-              <el-date-picker class="w100" v-model="tableData.disposeTime" type="date"
+              <el-date-picker class="w100" v-model="formData.disposeTime" type="date"
                               value-format="yyyy-MM-dd" placeholder="请输入"></el-date-picker>
             </el-form-item>
           </el-col>
-
         </el-row>
-        <el-row>
+        <el-row style="margin-top:12px">
           <el-col :span="24">
-            <el-form-item label="留样条件" prop="sampleCondition" align="center"  >
-              <el-input v-model="tableData.sampleCondition" placeholder="请输入" style="width: 100%;"></el-input>
+            <el-form-item label="留样条件" prop="sampleCondition" align="center" >
+              <el-input v-model="formData.sampleCondition" placeholder="请输入" style="width: 100%;"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
+        <el-row style="margin-top:12px">
           <el-col :span="24">
             <el-form-item label="生产商/受托生产" prop="producerManufacturer" align="center"  >
-              <el-input v-model="tableData.producerManufacturer" placeholder="请输入" style="width: 100%;"></el-input>
+              <el-input v-model="formData.producerManufacturer" placeholder="请输入" style="width: 100%;"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
+        <el-row style="margin-top:12px">
           <el-col :span="24">
             <el-form-item label="留样地点" prop="samplePlace" align="center"  >
-              <el-input type="textarea" v-model="tableData.samplePlace" placeholder="请输入" style="width: 100%;"></el-input>
+              <el-input type="textarea" v-model="formData.samplePlace" placeholder="请输入" style="width: 100%;"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
+        <el-row style="margin-top:12px">
           <el-col :span="24">
             <el-form-item label="留样备注" prop="sampleRemark" align="center" >
-              <el-input type="textarea" v-model="tableData.sampleRemark" placeholder="请输入" style="width: 100%;"></el-input>
+              <el-input type="textarea" v-model="formData.sampleRemark" placeholder="请输入" style="width: 100%;"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
@@ -99,7 +91,7 @@ export default {
             visible: false,
             rowIndex: 0,
             type: '',
-          tableData: {},
+          formData: {},
           qualityType: '',
           warehouseList:[],
           // 表单验证规则
@@ -111,6 +103,13 @@ export default {
                 trigger: 'blur'
               }
             ],
+            disposalStatus: [
+              {
+                required: true,
+                message: '请选择处置方式',
+                trigger: 'blur'
+              }
+            ],
           },
           disposalStatusList: [
             {
@@ -176,7 +175,7 @@ export default {
       handleWarehouseChange(val){
         this.warehouseList.findIndex((item) => {
           if(item.disposeWarehouseId == val){
-            this.tableData.disposeWarehouseName = item.disposeWarehouseName;
+            this.formData.disposeWarehouseName = item.disposeWarehouseName;
           }
         })
       },
@@ -190,23 +189,29 @@ export default {
           }
         })
       },
-        async openDispose(index, row, type, list,isStatus,qualityType) {
+        async openDispose(index, row, type,qualityType) {
 
           this.qualityType = qualityType;
           this.rowIndex = index
           this.type = type;
-          this.tableData = row;
+          this.formData = row;
 
 
-            this.visible = true;
+          this.visible = true;
         },
         handleClose() {
             this.visible = false;
         },
         handleConfirm() {
-            this.visible = false;
-            console.log(this.tableData,"sdfd");
-            this.$emit('handleDisposeConfirm', this.tableData, this.rowIndex);
+          this.$refs.form1.validate((valid) => {
+            if(valid) {
+            console.log(this.formData,"sdfd");
+            this.$emit('handleDisposeConfirm', this.formData, this.rowIndex);
+            
+          this.visible = false;
+            }
+          })
+          
         },
     }
 };

+ 12 - 24
src/views/inspectionWork/components/sampleListDialog.vue

@@ -41,12 +41,12 @@
             </el-table-column>
             <template v-for="column in tableColumns">
                 <el-table-column :label="column.label" :prop="column.prop" :fixed="column.fixed"
-                    :show-overflow-tooltip="true" :width="column.width" :align="column.align">
+                    :show-overflow-tooltip="true" :width="column.width" :align="column.align" :formatter="column.formatter">
                 </el-table-column>
             </template>
             <el-table-column label="操作" align="center" width="80">
                 <template slot-scope="scope">
-                    <el-link :underline="false" type="primary">
+                    <el-link :underline="false" type="primary" @click="handleDispose(scope.$index, scope.row, 'dispose')">
                         处置
                     </el-link>
                 </template>
@@ -101,7 +101,12 @@ export default {
                 { label: '重量', prop: 'weight', align: 'center' },
                 { label: '重量单位', prop: 'weightUnit', align: 'center' },
                 { label: '仓库', prop: 'warehouseName', align: 'center', },
-                { label: '质检结果', prop: '', align: 'center', },
+                { label: '质检结果', prop: 'qualityResults', align: 'center',formatter: (row, column) => {
+                    if(row.qualityResults){
+                        return row.qualityResults==1?'合格':row.qualityResults==2?'不合格':row.qualityResults==3?'让步接收':'';
+                    }
+                } 
+            },
                 // { label: '货区', prop: 'areaName', align: 'center', },
                 // { label: '货架', prop: 'goodsShelfName', align: 'center', },
                 // { label: '货位', prop: 'goodsAllocationName', align: 'center', },
@@ -133,38 +138,21 @@ export default {
           this.tableData = [];
             this.rowIndex = index
             this.type = type;
-            // if (row != null && row.isStatus) {
-            //   this.tableDataUpdate(list);
-            // }else{
-            //   if (isStatus){
-            //     this.tableDataUpdate(list);
-            //   }
-            // }
+            debugger;
             this.tableData = list;
 
             this.visible = true;
         },
         handleClose() {
-            // this.tableData.forEach((item) => {
-            //     item.children.forEach((child) => {
-            //         child.qualityResultContent = '';
-            //         child.qualityResults = ''
-            //     })
-            // })
             this.visible = false;
         },
         handleConfirm() {
             this.visible = false;
             this.$emit('handleConfirm', this.tableData, this.rowIndex);
         },
-      tableDataUpdate(list) {
-        for (let i = 0; i < list.length; i++) {
-          const arr = list[i].children
-          for (let j = 0; j < arr.length; j++) {
-            arr[j].qualityResults = 1
-          }
-        }
-      }
+      handleDispose(index, row, type) {
+      this.$emit('handleDispose', index, row, type);
+    },
     }
 };
 </script>

+ 58 - 28
src/views/inspectionWork/edit.vue

@@ -6,7 +6,7 @@
         <el-button type="primary" @click="save" :loading="loading" v-if="type != 'detail'">保存</el-button>
         <el-button type="primary" @click="handleReporting" :loading="loading" v-if="type != 'detail'">报工完成</el-button>
       </header-title>
-      <base-info ref="baseInfoRefs" v-if="form" :form="form" :btnType="type" :qualityType="qualityType"></base-info>
+      <base-info ref="baseInfoRefs" v-if="form" :form="form" :btnType="type" :qualityType1="qualityType"></base-info>
       <el-row>
         <header-title title="质检内容">
           <el-button type="primary" :loading="loading" v-if="type != 'detail'"
@@ -132,7 +132,7 @@
       </el-row>
     </el-card>
 
-    <sampleListDialog ref="detailRef" @handleConfirm="handleConfirm"></sampleListDialog>
+    <sampleListDialog ref="detailRef" @handleConfirm="handleConfirm" @handleDispose="handleDispose"></sampleListDialog>
     <sampleDisposeDialog ref="disposeRef" @handleDisposeConfirm="handleDisposeConfirm"></sampleDisposeDialog>
   </div>
 </template>
@@ -163,7 +163,7 @@ export default {
     const defaultForm = function () {
       return {
         code: '',
-        qualityType: '',
+        qualityType: null,
         qualityModeproduceRoutingId: '',
         produceRoutingName: '',
         produceTaskId: '',
@@ -188,6 +188,8 @@ export default {
         totalWeight: '',
         sampleNumber: '',
         imgUrl: [],
+        qualityTimeStart: '',
+        qualityTimeEnd: ''
       };
     };
     return {
@@ -199,7 +201,6 @@ export default {
       // 表单验证规则
       categoryParamList: [],
       type: '',
-      qualityType: null,
       title: '',
       loading: false,
 
@@ -234,7 +235,7 @@ export default {
         { label: '批次号', prop: 'batchNo', align: 'center' },
         { label: '发货条码', prop: 'barcodes', align: 'center' },
         { label: '包装编码', prop: 'packageNo', align: 'center' },
-        { label: '包装数量', prop: 'packingQuantity', align: 'center' },
+        // { label: '包装数量', prop: 'packingQuantity', align: 'center' },
         { label: '包装单位', prop: 'packingUnit', align: 'center' },
         { label: '计量数量', prop: 'measureQuantity', align: 'center' },
         { label: '计量单位', prop: 'measureUnit', align: 'center' },
@@ -273,6 +274,7 @@ export default {
       isValid: true,
       isStatus: true,
       SampleListbyReportList: [],
+      qualityTimeStart: ''
 
     };
   },
@@ -317,20 +319,47 @@ export default {
     }
   },
   methods: {
-
+    getNowDate() {
+      let date = new Date(),
+        obj = {
+          year: date.getFullYear(), //获取当前月份(0-11,0代表1月)
+          month: date.getMonth() + 1, //获取当前月份(0-11,0代表1月)
+          strDate: date.getDate(), // 获取当前日(1-31)
+          hour: date.getHours(), //获取当前小时(0 ~ 23)
+          minute: date.getMinutes(), //获取当前分钟(0 ~ 59)
+          second: date.getSeconds() //获取当前秒数(0 ~ 59)
+        };
+      Object.keys(obj).forEach((key) => {
+        if (obj[key] < 10) obj[key] = `0${obj[key]}`;
+      });
+      return obj;
+    },
     handleSelectionChange(val) {
       console.log(val, '选中数据')
     },
-    async open(type) {
+    async open() {
       this.type = this.$route.query.type;
       this.qualityType = this.$route.query.qualityType;
-      this.title = this.type == 'add' ? '新增' : type == 'edit' ? '报工' : '详情';
+      this.title = this.type == 'add' ? '新增' : this.type == 'edit' ? '报工' : '详情';
 
       if (this.type == 'add') {
         const code = await getCode('quality_work_order_code');
         this.form.code = code;
+      } else {
+        if (this.$route.query.qualityTimeStart != '' || this.$route.query.qualityTimeStart != null || this.$route.query.qualityTimeStart != undefined) {
+          this.qualityTimeStart = this.getNowTime();
+          console.log(this.qualityTimeStart, '开始报工时间')
+        }
       }
     },
+    getNowTime() {
+      const nowDate = this.getNowDate()
+      return nowDate.year + '-' + nowDate.month + '-' + nowDate.strDate + ' ' + nowDate.hour + ':' + nowDate.minute + ':' + nowDate.second
+    },
+    getNowTimes() {
+      const nowDate = this.getNowDate()
+      return nowDate.year + '-' + nowDate.month + '-' + nowDate.strDate
+    },
     async getDetail() {
 
       getById(this.$route.query.id).then((res) => {
@@ -365,6 +394,8 @@ export default {
       const res = await queryQualitySamplContent({ qualityWorkerId: this.$route.query.id })
       let addStatus = res.map((item) => {
         item.isValid = true;
+        item.disposeTime = item.disposeTime ? item.disposeTime.split(' ')[0] : null;
+        item.sampleDate = item.sampleDate ? item.sampleDate.split(' ')[0] : null;
         return {
           ...item
         }
@@ -458,26 +489,21 @@ export default {
       }
       const selectedData = [];
       selectedData.push(this.sampleList[index])
-      console.log(index, row, type, selectedData, 'index, row, type, mergedData')
+
       this.$refs.detailRef.openDia(index, row, type, selectedData, null);
     },
     handleDispose(index, row, type) {
       if (!this.sampleList[index]) {
         return;
       }
-      // const selectedData = [];
-      // selectedData.push(this.sampleList[index])
-      // console.log(index, row, type, selectedData, 'index, row, type, mergedData')
-      this.sampleList[index].sampleDate = this.formatCurrentDate();
-      this.sampleList[index].disposeTime = this.formatCurrentDate();
-      this.$refs.disposeRef.openDispose(index, row, type, null, null, this.form.qualityType);
-    },
-    formatCurrentDate() {
-      const date = new Date();
-      const year = date.getFullYear();
-      const month = String(date.getMonth() + 1).padStart(2, '0');
-      const day = String(date.getDate()).padStart(2, '0');
-      return `${year}-${month}-${day}`;
+
+      this.sampleList[index].sampleDate = this.getNowTimes();
+
+      this.sampleList[index].disposeTime = this.getNowTimes();
+
+      console.log(index, row, type, this.qualityType)
+
+      this.$refs.disposeRef.openDispose(index, row, type, this.qualityType);
     },
     // 报工
     handleReporting(index, row) {
@@ -485,6 +511,13 @@ export default {
         if (!valid) {
           return false;
         }
+        // let form = {
+        //   qualityTimeEnd: this.getNowTime(),
+        //   qualityTimeStart: this.qualityTimeStart,
+        //   ...this.form,
+        // }
+        this.form.qualityTimeEnd = new Date(this.getNowTime())
+        this.form.qualityTimeStart = new Date(this.qualityTimeStart)
         let params = {
           ...this.form,
           sampleList: this.sampleList,
@@ -492,7 +525,6 @@ export default {
           qualityInventoryList: this.packingList
         }
         console.log(params, 'params')
-        // return;
         exeReportWork(params)
           .then((msg) => {
             this.loading = false;
@@ -506,11 +538,9 @@ export default {
       })
     },
     // 处理确认事件
-    handleDisposeConfirm(list, index) {
-      if (index != null) {
-        this.$set(this.sampleList, index, list[0]);
-      } else {
-        this.$set(this.sampleList, null, list);
+    handleDisposeConfirm(row, index) {
+      if (index > -1) {
+        this.$set(this.sampleList, index, row)
       }
     },
     //确认报工

+ 9 - 6
src/views/inspectionWork/index.vue

@@ -2,7 +2,8 @@
   <div class="ele-body">
     <el-card shadow="never">
       <search ref="search" @search="search"></search>
-      <ele-pro-table ref="table" :columns="columns" :datasource="datasource">
+      <ele-pro-table ref="table" :columns="columns" :datasource="datasource" :pageSize="20"
+        :pageSizes="[20, 30, 40, 50, 100]">
         <!-- 表头工具栏 -->
         <!--        <template v-slot:toolbar>-->
         <!--          <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon" @click="openEdit('add')">-->
@@ -45,13 +46,13 @@
           <el-link type="primary" :underline="false" v-if="row.status == 0" @click="openEdit('edit', row)">
             报工
           </el-link>
-          <el-popconfirm class="ele-action" title="确定要删除吗?" @confirm="remove(row)" v-if="row.status == 0">
+          <!-- <el-popconfirm class="ele-action" title="确定要删除吗?" @confirm="remove(row)" v-if="row.status == 0">
             <template v-slot:reference>
               <el-link type="danger" :underline="false" icon="el-icon-delete">
                 删除
               </el-link>
             </template>
-          </el-popconfirm>
+</el-popconfirm> -->
         </template>
       </ele-pro-table>
     </el-card>
@@ -268,11 +269,11 @@ export default {
     },
     openEdit(type, row) {
       let id = '';
-      let qualityType = '';
+      let qualityType = null;
+      let qualityTimeStart = row.qualityTimeStart;
       if (type != 'add') {
         id = row.id;
         qualityType = row.qualityType;
-
       }
       // this.$refs.edit.open(type, row);
       this.$router.push({
@@ -280,7 +281,9 @@ export default {
         query: {
           type: type,
           id: id || '',
-          qualityType: qualityType
+          qualityType: qualityType,
+          qualityTimeStart: qualityTimeStart || ''
+
         }
       });
     },