chencc 1 år sedan
förälder
incheckning
c2fceb784f

+ 241 - 272
src/views/productionPlan/components/unpackDialog.vue

@@ -1,19 +1,11 @@
 <template>
-  <ele-modal
-    width="60vw"
-    :visible.sync="visible"
-    :close-on-click-modal="false"
-    row-key="code"
-    custom-class="ele-dialog-form"
-    :title="'拆分计划'"
-    :maxable="true"
-  >
+  <ele-modal width="60vw" :visible.sync="visible" :close-on-click-modal="false" row-key="code"
+    custom-class="ele-dialog-form" :title="'拆分计划'" :maxable="true">
     <div class="form-wrapper">
       <el-form :model="requestData" label-width="0" :show-message="false">
         <el-descriptions title="" :column="2" border>
           <el-descriptions-item label="计划编号">
-            {{ formData.code }}</el-descriptions-item
-          >
+            {{ formData.code }}</el-descriptions-item>
 
           <el-descriptions-item label="产品编码">{{
             formData.productCode
@@ -24,8 +16,7 @@
           }}</el-descriptions-item>
 
           <el-descriptions-item label="牌号|型号">
-            {{ formData.brandNo }}|{{ formData.model }}</el-descriptions-item
-          >
+            {{ formData.brandNo }}|{{ formData.model }}</el-descriptions-item>
 
           <el-descriptions-item label="批次号">{{
             formData.batchNo
@@ -46,29 +37,16 @@
 
       <headerTitle title="剩余拆批" class="mt20"> </headerTitle>
       <el-form ref="form" :model="form" :rules="rules">
-        <ele-pro-table
-          ref="table"
-          :needPage="false"
-          :columns="columns"
-          :datasource="form.surplusUnpack"
-        >
+        <ele-pro-table ref="table" :needPage="false" :columns="columns" :datasource="form.surplusUnpack">
           <template v-slot:toolbar>
-            <el-button
-              size="small"
-              type="primary"
-              icon="el-icon-plus"
-              class="ele-btn-icon"
-              :disabled="requiredFormingNum == 0 ? true : false"
-              @click="openUnpack"
-            >
+            <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon"
+              :disabled="requiredFormingNum == 0 ? true : false" @click="openUnpack">
               拆批
             </el-button>
           </template>
 
           <template v-slot:requiredFormingNum="scope">
-            <el-form-item
-              v-if="requiredFormingNum != 0"
-              :prop="'surplusUnpack.' + scope.$index + '.requiredFormingNum'"
+            <el-form-item v-if="requiredFormingNum != 0" :prop="'surplusUnpack.' + scope.$index + '.requiredFormingNum'"
               :rules="[
                 {
                   required: true,
@@ -80,13 +58,8 @@
                   message: '拆批数超过生产数量',
                   trigger: ['blur', 'change']
                 }
-              ]"
-            >
-              <el-input
-                disabled
-                v-model="requiredFormingNum"
-                placeholder="请输入"
-              ></el-input>
+              ]">
+              <el-input disabled v-model="requiredFormingNum" placeholder="请输入"></el-input>
             </el-form-item>
 
             <el-form-item v-else> 工单已全部拆完 </el-form-item>
@@ -100,55 +73,36 @@
 
         <headerTitle title="拆批" class="mt20"> </headerTitle>
 
-        <ele-pro-table
-          ref="table"
-          :needPage="false"
-          :columns="columns2"
-          :datasource="form.unpackList"
-        >
+        <ele-pro-table ref="table" :needPage="false" :columns="columns2" :datasource="form.unpackList">
           <template v-slot:requiredFormingNum="scope">
-            <el-form-item
-              :prop="'unpackList.' + scope.$index + '.requiredFormingNum'"
-              :rules="{
-                required: true,
-                message: '请输入要求生产数量',
-                trigger: 'change'
-              }"
-            >
-              <el-input-number
-                type="number"
-                @change="changeNum(scope.$index)"
-                :min="0"
-                v-model="scope.row.requiredFormingNum"
-                placeholder="请输入"
-              ></el-input-number>
+            <el-form-item :prop="'unpackList.' + scope.$index + '.requiredFormingNum'" :rules="{
+              required: true,
+              message: '请输入要求生产数量',
+              trigger: 'change'
+            }">
+            <!-- @change="changeNum(scope.$index)" @input="(scope.$index)"-->
+              <!-- <el-input-number type="number" @input="inputNum"  :min="0" :max="maxNum"
+                v-model="scope.row.requiredFormingNum" placeholder="请输入"></el-input-number> -->
+                <el-input v-model="scope.row.requiredFormingNum" type="number" @input="changeNum(scope.$index)"  :min="0"  placeholder="请输入内容"></el-input>
+
+
             </el-form-item>
           </template>
 
           <template v-slot:reqMoldTime="scope">
-            <el-form-item
-              :prop="'unpackList.' + scope.$index + '.reqMoldTime'"
-              :rules="{
-                required: true,
-                message: '请选择开始计划时间',
-                trigger: 'change'
-              }"
-            >
-              <el-date-picker
-                class="w100"
-                v-model="scope.row.reqMoldTime"
-                type="date"
-                value-format="yyyy-MM-dd"
-              ></el-date-picker>
+            <el-form-item :prop="'unpackList.' + scope.$index + '.reqMoldTime'" :rules="{
+              required: true,
+              message: '请选择开始计划时间',
+              trigger: 'change'
+            }">
+              <!-- formData.reqMoldTime -->
+              <el-date-picker class="w100" v-model="scope.row.reqMoldTime" type="date" :picker-options="pickerOptions"
+                value-format="yyyy-MM-dd"></el-date-picker>
             </el-form-item>
           </template>
 
           <template v-slot:action="{ $index }">
-            <el-popconfirm
-              class="ele-action"
-              title="确定要删除此子单吗?"
-              @confirm="remove($index)"
-            >
+            <el-popconfirm class="ele-action" title="确定要删除此子单吗?" @confirm="remove($index)">
               <template v-slot:reference>
                 <el-link type="danger" :underline="false" icon="el-icon-delete">
                   删除
@@ -167,225 +121,240 @@
 </template>
 
 <script>
-  import { deepClone } from '@/utils';
-  import { splitWork } from '@/api/productionPlan/index.js';
-  export default {
-    components: {},
-    data() {
-      return {
-        visible: false,
-
-        formData: {},
-        requestData: {
-          deviceCode: '',
-          deviceName: '',
-          deviceId: ''
+import { deepClone } from '@/utils';
+import { splitWork } from '@/api/productionPlan/index.js';
+export default {
+  components: {},
+  data() {
+    return {
+      visible: false,
+
+      formData: {},
+      requestData: {
+        deviceCode: '',
+        deviceName: '',
+        deviceId: ''
+      },
+      requiredFormingNum: 0,
+
+      pickerOptions: {
+        disabledDate: (time) => {
+          // 根据某个条件动态设置最大日期
+          if(this.formData.reqMoldTime){
+            const maxDate = new Date(this.formData.reqMoldTime); // 您的逻辑方法
+            return time.getTime() > maxDate.getTime();
+          }else{
+            return false;
+          }
+          
+        }
+      },
+
+      form: {
+        surplusUnpack: [],
+        unpackList: []
+      },
+
+      rules: {},
+
+      columns: [
+        {
+          prop: 'batchNo',
+          label: '批次号',
+          align: 'center',
+          minWidth: 100,
+          showOverflowTooltip: true
         },
-        requiredFormingNum: 0,
 
-        form: {
-          surplusUnpack: [],
-          unpackList: []
+        {
+          prop: 'joinPlanCode',
+          label: '计划编号',
+          align: 'center',
+          minWidth: 200
         },
 
-        rules: {},
-
-        columns: [
-          {
-            prop: 'batchNo',
-            label: '批次号',
-            align: 'center',
-            minWidth: 100,
-            showOverflowTooltip: true
-          },
-
-          {
-            prop: 'joinPlanCode',
-            label: '计划编号',
-            align: 'center',
-            minWidth: 200
-          },
-
-          {
-            prop: 'requiredFormingNum',
-            label: '要求生产数量',
-            align: 'center',
-            slot: 'requiredFormingNum',
-            minWidth: 200
-          },
- 
-        ],
-
-        columns2: [
-          {
-            prop: 'batchNo',
-            label: '批次号',
-            align: 'center',
-            minWidth: 100,
-            showOverflowTooltip: true
-          },
-          {
-            prop: 'joinPlanCode',
-            label: '计划编号',
-            align: 'center',
-            minWidth: 200
-          },
-          {
-            prop: 'requiredFormingNum',
-            label: '要求生产数量',
-            align: 'center',
-            slot: 'requiredFormingNum',
-            minWidth: 200
-          },
-          {
-            prop: 'reqMoldTime',
-            label: '要求完成日期',
-            align: 'center',
-            slot: 'reqMoldTime',
-            minWidth: 200
-          },
-
-          {
-            columnKey: 'action',
-            label: '操作',
-            width: 160,
-            align: 'center',
-            resizable: false,
-            fixed: 'right',
-            slot: 'action',
-            showOverflowTooltip: true
-          }
-        ],
+        {
+          prop: 'requiredFormingNum',
+          label: '要求生产数量',
+          align: 'center',
+          slot: 'requiredFormingNum',
+          minWidth: 200
+        },
 
+      ],
 
-      };
-    },
-    methods: {
-      open(row) {
-        this.visible = true;
-        this.formData = deepClone(row);
+      columns2: [
+        {
+          prop: 'batchNo',
+          label: '批次号',
+          align: 'center',
+          minWidth: 100,
+          showOverflowTooltip: true
+        },
+        {
+          prop: 'joinPlanCode',
+          label: '计划编号',
+          align: 'center',
+          minWidth: 200
+        },
+        {
+          prop: 'requiredFormingNum',
+          label: '要求生产数量',
+          align: 'center',
+          slot: 'requiredFormingNum',
+          minWidth: 200
+        },
+        {
+          prop: 'reqMoldTime',
+          label: '要求完成日期',
+          align: 'center',
+          slot: 'reqMoldTime',
+          minWidth: 200
+        },
 
-        console.log(this.formData);
+        {
+          columnKey: 'action',
+          label: '操作',
+          width: 160,
+          align: 'center',
+          resizable: false,
+          fixed: 'right',
+          slot: 'action',
+          showOverflowTooltip: true
+        }
+      ],
 
-        if (this.formData.splitBatch == 1) {
-          this.columns[2].label = '剩余数量'
-          this.requiredFormingNum = this.formData.splitResidue;
-        } else {
-          this.requiredFormingNum = this.formData.requiredFormingNum;
-        } 
 
+    };
+  },
+  methods: {
+    open(row) {
+      this.visible = true;
+      this.formData = deepClone(row);
 
-    
+      console.log(this.formData);
 
-        this.form.surplusUnpack = [];
-        this.form.unpackList = [];
-        this.setSurplus();
-      },
+      if (this.formData.splitBatch == 1) {
+        this.columns[2].label = '剩余数量'
+        this.requiredFormingNum = this.formData.splitResidue;
+      } else {
+        this.requiredFormingNum = this.formData.requiredFormingNum;
+      }
 
-      setSurplus() {
-        this.form.surplusUnpack.push({
-          joinPlanCode: this.formData.code ,
-          requiredFormingNum:  this.formData.splitBatch == 1 ? this.formData.splitResidue : this.formData.requiredFormingNum,
-          batchNo: this.formData.batchNo,
-          isCopy: 1
-        });
-      },
 
-      openUnpack() {
-        this.form.unpackList.push({
-          joinPlanCode: this.formData.code,
-          batchNo: this.formData.batchNo,
-          requiredFormingNum: '',
-          reqMoldTime: ''
-        });
-      },
 
-      changeNum(index) {
-        let num = this.formData.splitBatch == 1 ? this.formData.splitResidue : this.formData.requiredFormingNum
-        this.form.unpackList.forEach((e) => {
+
+      this.form.surplusUnpack = [];
+      this.form.unpackList = [];
+      this.setSurplus();
+    },
+
+    setSurplus() {
+      this.form.surplusUnpack.push({
+        joinPlanCode: this.formData.code,
+        requiredFormingNum: this.formData.splitBatch == 1 ? this.formData.splitResidue : this.formData.requiredFormingNum,
+        batchNo: this.formData.batchNo,
+        isCopy: 1
+      });
+    },
+
+    openUnpack() {
+      this.form.unpackList.push({
+        joinPlanCode: this.formData.code,
+        batchNo: this.formData.batchNo,
+        requiredFormingNum: '',
+        reqMoldTime: ''
+      });
+    },
+
+    changeNum(index) {
+      console.log(index,'111111111111');
+
+      let num = this.formData.splitBatch == 1 ? this.formData.splitResidue : this.formData.requiredFormingNum
+      this.form.unpackList.forEach((e) => {
+        if (
+          e.requiredFormingNum != null &&
+          e.requiredFormingNum != undefined
+        ) {
+          num = num - Number(e.requiredFormingNum);
+          if (num >= 0) {
+            this.requiredFormingNum = num;
+          } else {
+            this.$nextTick(() => {
+              this.$set(this.form.unpackList[index], 'requiredFormingNum', 0);
+            });
+            this.$message.error('拆批数超过生产数量');
+
+            return;
+          }
+        }
+      });
+    },
+
+    remove(index) {
+      this.form.unpackList.splice(index, 1);
+      if (this.form.unpackList.length == 0) {
+        this.requiredFormingNum = this.formData.splitBatch == 1 ? this.formData.splitResidue : this.formData.requiredFormingNum
+      } else {
+        this.changeNum(index);
+      }
+    },
+
+    cancel() {
+      this.formData = {};
+      this.visible = false;
+      this.$refs.form.resetFields();
+    },
+
+    confirm() {
+      this.$refs.form.validate(async (value) => {
+        if (value) {
           if (
-            e.requiredFormingNum != null &&
-            e.requiredFormingNum != undefined
+            this.form.unpackList.length == 1 &&
+            this.form.unpackList[0].requiredFormingNum ==
+            this.formData.requiredFormingNum
           ) {
-            num = num - Number(e.requiredFormingNum);
-            if (num >= 0) {
-              this.requiredFormingNum = num;
-            } else {
-              this.$nextTick(() => {
-                this.$set(this.form.unpackList[index], 'requiredFormingNum', 0);
-              });
-              this.$message.error('拆批数超过生产数量');
-
-              return;
-            }
+            this.$message.info('拆批数要大于1');
+            return false;
           }
-        });
-      },
 
-      remove(index) {
-        this.form.unpackList.splice(index, 1);
-        if (this.form.unpackList.length == 0) {
-          this.requiredFormingNum =  this.formData.splitBatch == 1 ? this.formData.splitResidue : this.formData.requiredFormingNum
-        } else {
-          this.changeNum(index);
-        }
-      },
+          if (
+            this.form.surplusUnpack.length == 1 &&
+            this.form.unpackList.length == 0
+          ) {
+            this.$message.info('拆批数要大于1');
+            return false;
+          }
 
-      cancel() {
-        this.formData = {};
-        this.visible = false;
-        this.$refs.form.resetFields();
-      },
+          let params = [];
+          if (this.requiredFormingNum != 0) {
+            this.form.surplusUnpack[0].requiredFormingNum =
+              this.requiredFormingNum;
+            params = [...this.form.unpackList, ...this.form.surplusUnpack];
+          } else {
+            params = this.form.unpackList;
+          }
 
-      confirm() {
-        this.$refs.form.validate(async (value) => {
-          if (value) {
-            if (
-              this.form.unpackList.length == 1 &&
-              this.form.unpackList[0].requiredFormingNum ==
-                this.formData.requiredFormingNum
-            ) {
-              this.$message.info('拆批数要大于1');
-              return false;
-            }
-
-            if (
-              this.form.surplusUnpack.length == 1 &&
-              this.form.unpackList.length == 0
-            ) {
-              this.$message.info('拆批数要大于1');
-              return false;
-            }
-
-            let params = [];
-            if (this.requiredFormingNum != 0) {
-              this.form.surplusUnpack[0].requiredFormingNum =
-                this.requiredFormingNum;
-              params = [...this.form.unpackList, ...this.form.surplusUnpack];
-            } else {
-              params = this.form.unpackList;
-            }
-
-            const res = await splitWork(params);
-
-            if (res) {
-              this.$message.success('拆分成功!');
-              this.$emit('success');
-              this.cancel();
-            }
+          const res = await splitWork(params);
+
+          if (res) {
+            this.$message.success('拆分成功!');
+            this.$emit('success');
+            this.cancel();
           }
-        });
-      }
+        }
+      });
     }
-  };
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-  .mt20 {
-    margin-top: 20px;
-  }
+.mt20 {
+  margin-top: 20px;
+}
 
-  .el-form-item {
-    margin-bottom: 0 !important;
-  }
+.el-form-item {
+  margin-bottom: 0 !important;
+}
 </style>

+ 79 - 13
src/views/workOrder/components/unpackDialog.vue

@@ -1,6 +1,6 @@
 <template>
-  <ele-modal width="60vw" :visible.sync="visible" :close-on-click-modal="false" custom-class="ele-dialog-form"     :maxable="true"
-    :title="'拆分工单'">
+  <ele-modal width="60vw" :visible.sync="visible" :close-on-click-modal="false" custom-class="ele-dialog-form"
+    :maxable="true" :title="'拆分工单'">
     <div class="form-wrapper">
       <el-form :model="requestData" label-width="0" :show-message="false">
         <el-descriptions title="" :column="2" border>
@@ -24,6 +24,10 @@
           <el-descriptions-item label="计划开始时间">{{
             formData.planStartTime
           }}</el-descriptions-item>
+
+          <el-descriptions-item label="要求完成日期">{{
+            formData.planCompleteTime
+          }}</el-descriptions-item>
         </el-descriptions>
       </el-form>
 
@@ -65,9 +69,11 @@
               required: true,
               message: '请选择开始计划时间',
               trigger: 'change'
-            }">
+            }"
+            
+            >
               <el-date-picker class="w100" v-model="scope.row.planStartTime" type="date"
-                value-format="yyyy-MM-dd"></el-date-picker>
+                value-format="yyyy-MM-dd" :picker-options="pickerOptions"></el-date-picker>
 
             </el-form-item>
           </template>
@@ -80,7 +86,7 @@
               trigger: 'change'
             }">
               <el-date-picker class="w100" v-model="scope.row.planCompleteTime" type="date"
-                value-format="yyyy-MM-dd"></el-date-picker>
+                value-format="yyyy-MM-dd":picker-options="pickerOptionsEnd" ></el-date-picker>
 
             </el-form-item>
           </template>
@@ -103,12 +109,16 @@
               message: '请输入要求生产数量',
               trigger: 'change'
             }">
-              <el-input-number type="number" @change="changeNum(scope.$index)" :min="0" v-model="scope.row.formingNum"
-                placeholder="请输入"></el-input-number>
+              <!-- <el-input-number type="number" @change="changeNum(scope.$index)" :min="0" v-model="scope.row.formingNum"
+                placeholder="请输入"></el-input-number> -->
+
+                <el-input v-model="scope.row.formingNum" type="number" @input="changeNum(scope.$index)"  :min="0"  placeholder="请输入内容"></el-input>
+
+
             </el-form-item>
           </template>
 
-
+          
           <template v-slot:planStartTime="scope">
             <el-form-item :prop="'unpackList.' + scope.$index + '.planStartTime'" :rules="{
               required: true,
@@ -116,7 +126,7 @@
               trigger: 'change'
             }">
               <el-date-picker class="w100" v-model="scope.row.planStartTime" type="date"
-                value-format="yyyy-MM-dd"></el-date-picker>
+                value-format="yyyy-MM-dd" @input="surplusUnpackFn(scope.$index)"></el-date-picker>
 
             </el-form-item>
           </template>
@@ -169,7 +179,7 @@
 
 import {
   splitBatch
-  } from '@/api/workOrder/index.js';
+} from '@/api/workOrder/index.js';
 
 import { deepClone } from '@/utils';
 export default {
@@ -192,8 +202,59 @@ export default {
         surplusUnpack: [],
         unpackList: []
       },
+      pickerOptions:{
+        disabledDate: (time) => {
+          // 根据某个条件动态设置最大日期
+          if(this.formData.planStartTime){
+            const maxDate = new Date(this.formData.planStartTime); // 您的逻辑方法
+            return time.getTime() < maxDate.getTime();
+          }else{
+            return false;
+          }
+          
+        }
+      },
 
+      pickerOptionsEnd:{
+        disabledDate: (time) => {
+          // 根据某个条件动态设置最大日期
+          if(this.formData.planCompleteTime){
+            const maxDate = new Date(this.formData.planCompleteTime); // 您的逻辑方法
+            return time.getTime() > maxDate.getTime();
+          }else{
+            return false;
+          }
+          
+        }
+      },
 
+      newPickerOptions:{
+        disabledDate: (time) => {
+          // 根据某个条件动态设置最大日期
+          let num = this.surplusUnpackFn();
+
+          if(this.formData.planStartTime){
+            const maxDate = new Date(this.formData.planStartTime); // 您的逻辑方法
+            return time.getTime() < maxDate.getTime();
+          }else{
+            return false;
+          }
+          
+        }
+      },
+
+      newPickerOptionsEnd:{
+        disabledDate: (time) => {
+          // 根据某个条件动态设置最大日期
+          if(this.formData.planCompleteTime){
+            const maxDate = new Date(this.formData.planCompleteTime); // 您的逻辑方法
+            return time.getTime() > maxDate.getTime();
+          }else{
+            return false;
+          }
+          
+        }
+      },
 
       rules: {
 
@@ -291,13 +352,19 @@ export default {
     },
 
     setSurplus() {
-      this.form.surplusUnpack.push({ originalCode: this.formData.code, formingNum: this.formData.formingNum, planStartTime: '', planCompleteTime: '', isCopy:1  })
+      this.form.surplusUnpack.push({ originalCode: this.formData.code, formingNum: this.formData.formingNum, planStartTime: '', planCompleteTime: '', isCopy: 1 })
     },
 
     openUnpack() {
       this.form.unpackList.push({ originalCode: this.formData.code, formingNum: '', planStartTime: '', planCompleteTime: '' })
     },
 
+    surplusUnpackFn(index){
+      console.log(this.form.unpackList);
+      console.log(index,'------------------');
+    },
+
+
     changeNum(index) {
       let num = this.formData.formingNum
       this.form.unpackList.forEach((e) => {
@@ -364,7 +431,7 @@ export default {
             params = this.form.unpackList
           }
 
-          
+
           const res = await splitBatch(params);
           if (res) {
             this.$message.success('拆分成功!');
@@ -388,4 +455,3 @@ export default {
   margin-bottom: 0 !important;
 }
 </style>
-