Browse Source

法定节假日调整,回复交期调整

qymljy 2 months ago
parent
commit
a077b56260

+ 100 - 125
src/HDrpManagement/orderManage/details/tabs/confirmList.vue

@@ -298,7 +298,11 @@ export default {
       siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
       jsDay:'',
       jsYcDay:'',
-      days:""
+      days:"",
+      holidays:[],//节假日
+      workdays:'',
+      resultDate:'',
+      startDate: new Date(),
     }
   },
   methods:{
@@ -534,119 +538,9 @@ export default {
         this.$emit('onSuccess')
       })
     },
-    /*获取节假日数据*/
-    async holiday(now,date,days,type,sa_orderitemsid){
-      let dateNow = new Date(now)
-      let dateNow1 = new Date(date)
-      let monthB = (dateNow.getMonth() + 1) > 10 ? dateNow.getMonth() + 1 : '0' + (dateNow.getMonth() + 1)
-      let dateB = dateNow.getDate() > 10 ? dateNow.getDate() : '0' +  dateNow.getDate()
-      let monthE = (dateNow1.getMonth() + 1) > 10 ? dateNow1.getMonth() + 1 : '0' + (dateNow1.getMonth() + 1)
-      let dateE = dateNow1.getDate() > 10 ? dateNow1.getDate() : '0' +  dateNow1.getDate()
-      const res = await this.$api.requested({
-        id:20221215165504,
-        content:{
-          isExport: 0,
-          isnext: "0",
-          pageNumber: 1,
-          pageSize: 100,
-          where:{
-            begindate: monthB + '-' + dateB,
-            condition: "",
-            enddate: monthE + '-' + dateE
-          }
-        }
-      })
-      this.jsDay = res.total
-      if (this.jsDay >0){
-        const dateAdd = this.addDaysToDate(date, this.jsDay)
-        this.holidayE(now,dateAdd.toISOString().split('T')[0],Number(this.jsDay),type,sa_orderitemsid)
-      }else {
-        if (type == '单'){
-          this.dayChange(date,days,sa_orderitemsid)
-        }else {
-          this.daysChange(date,days)
-        }
-
-      }
-    },
-    async holidayE(now,date,days,type,sa_orderitemsid){
-      let dateNow = new Date(now)
-      let dateNow1 = new Date(date)
-      let monthB = (dateNow.getMonth() + 1) > 10 ? dateNow.getMonth() + 1 : '0' + (dateNow.getMonth() + 1)
-      let dateB = dateNow.getDate() > 10 ? dateNow.getDate() : '0' +  dateNow.getDate()
-      let monthE = (dateNow1.getMonth() + 1) > 10 ? dateNow1.getMonth() + 1 : '0' + (dateNow1.getMonth() + 1)
-      let dateE = dateNow1.getDate() > 10 ? dateNow1.getDate() : '0' +  dateNow1.getDate()
-      const res = await this.$api.requested({
-        id:20221215165504,
-        content:{
-          isExport: 0,
-          isnext: "0",
-          pageNumber: 1,
-          pageSize: 100,
-          where:{
-            begindate: monthB + '-' + dateB,
-            condition: "",
-            enddate: monthE + '-' + dateE
-          }
-        }
-      })
-      this.days = res.total - this.jsDay
-      if (this.days >0){
-        this.jsYcDay = this.jsYcDay + this.days + this.jsDay
-        const dateAdd = this.addDaysToDate(date, this.days)
-        this.holidayS(now,dateAdd.toISOString().split('T')[0],Number(this.days),type,sa_orderitemsid)
-
-      }else {
-        if (type == '单'){
-          this.dayChange(date,days,sa_orderitemsid)
-        }else {
-          this.daysChange(date,this.value3)
-        }
-      }
-    },
-    async holidayS(now,date,days,type,sa_orderitemsid){
-      let dateNow = new Date(now)
-      let dateNow1 = new Date(date)
-      let monthB = (dateNow.getMonth() + 1) > 10 ? dateNow.getMonth() + 1 : '0' + (dateNow.getMonth() + 1)
-      let dateB = dateNow.getDate() > 10 ? dateNow.getDate() : '0' +  dateNow.getDate()
-      let monthE = (dateNow1.getMonth() + 1) > 10 ? dateNow1.getMonth() + 1 : '0' + (dateNow1.getMonth() + 1)
-      let dateE = dateNow1.getDate() > 10 ? dateNow1.getDate() : '0' +  dateNow1.getDate()
-      const res = await this.$api.requested({
-        id:20221215165504,
-        content:{
-          isExport: 0,
-          isnext: "0",
-          pageNumber: 1,
-          pageSize: 100,
-          where:{
-            begindate: monthB + '-' + dateB,
-            condition: "",
-            enddate: monthE + '-' + dateE
-          }
-        }
-      })
-      this.days = res.total - this.jsYcDay
-      if (this.days >0){
-        this.jsYcDay = this.jsYcDay + this.days
-        const dateAdd = this.addDaysToDate(date, this.days)
-        this.holidayS(now,dateAdd.toISOString().split('T')[0],Number(this.days),type,sa_orderitemsid)
-        // if (type == '单'){
-        //   this.dayChange(dateAdd.toISOString().split('T')[0],days,sa_orderitemsid)
-        // }else {
-        //   this.daysChange(dateAdd.toISOString().split('T')[0],this.value3)
-        // }
-
-      }else {
-        if (type == '单'){
-          this.dayChange(date,days,sa_orderitemsid)
-        }else {
-          this.daysChange(date,this.value3)
-        }
-      }
-    },
     async daysChange(date,days){
       this.tableData = this.tableData.filter(e=>{
-        e.deliverydays = this.value3
+        e.deliverydays = days
         return e
       })
       const res = await this.$api.requested({
@@ -654,7 +548,7 @@ export default {
         "content": {
           "sa_orderid": this.$route.query.id,
           "deliverydate": date,
-          "deliverydays":this.value3
+          "deliverydays":days
         },
       })
       this.listData(this.param.content.pageNumber = 1)
@@ -677,29 +571,110 @@ export default {
       })
       this.listData(this.param.content.pageNumber = 1)
     },
-    setDeliveryDay(val,type,sa_orderitemsid){
-      let newDays = Number(val) + 1
-      this.jsYcDay = 0
-      this.jsDay = 0
-      let nowDate = new Date()
-      let year = nowDate.getFullYear()
-      let month = (nowDate.getMonth() + 1) > 10 ? nowDate.getMonth() + 1 : '0' + (nowDate.getMonth() + 1)
-      let date = nowDate.getDate() > 10 ? nowDate.getDate() : '0' +  nowDate.getDate()
-      let dateNew = year + '-' + month + '-' + date
-      const originalDate = new Date(dateNew);
-      const newDate = this.addDaysToDate(originalDate, Number(newDays));
-      this.holiday(dateNew,newDate.toISOString().split('T')[0],Number(newDays),type,sa_orderitemsid)
+    setDeliveryDay(days,type,sa_orderitemsid){
+      if (type == '单'){
+        this.calculateWorkdays(days,false,sa_orderitemsid)
+      }else {
+        this.calculateWorkdays(days,true)
+      }
+    },
+    /*获取法定节假日*/
+    async holidaysList(){
+      let param = {
+        id:20221215165504,
+        content:{
+          isExport:0,
+          isnext:0,
+          pageNumber:1,
+          pageSize:300,
+          where:{
+            condition:''
+          }
+        }
+      }
+      const res = await this.$api.requested(param)
+      let param1 = {
+        id:20221215165504,
+        content:{
+          isExport:0,
+          isnext:1,
+          pageNumber:1,
+          pageSize:300,
+          where:{
+            condition:''
+          }
+        }
+      }
+      const res1 = await this.$api.requested(param1)
+      this.holidays = [...res.data,...res1.data]
+      console.log(this.holidays)
     },
+
     addDaysToDate(date, days) {
       const result = new Date(date); // 创建原始日期的副本
       result.setDate(result.getDate() + days); // 添加 N 天
       return result; // 返回新的日期对象
+    },
+
+    // 检查是否为工作日
+    isWorkday(date) {
+      // 检查是否为法定节假日
+      const dateString = date.toISOString().split('T')[0];
+      const isHoliday = this.holidays.some(holiday =>
+          holiday.date === dateString
+      );
+      return !isHoliday;
+      // 检查是否为周末 (0 = 周日, 6 = 周六)
+      const dayOfWeek = date.getDay();
+      if (dayOfWeek === 0 || dayOfWeek === 6) {
+        return false;
+      }
+
+    },
+
+    // 计算工作日
+    calculateWorkdays(days,isDays,sa_orderitemsid) {
+      // 更新数据
+      this.startDate = new Date();
+      this.workdays = days;
+
+      let currentDate = new Date(this.startDate);
+      let workdaysCounted = 0;
+
+      while (workdaysCounted < this.workdays) {
+        // 移动到下一天
+        currentDate.setDate(currentDate.getDate() + 1);
+
+        // 如果是工作日,计数增加
+        if (this.isWorkday(currentDate)) {
+          console.log(currentDate,'2222')
+          workdaysCounted++;
+        }
+      }
+
+      this.resultDate = new Date(currentDate).toISOString().split('T')[0];
+      if (isDays){
+        this.daysChange(this.resultDate,days)
+      }else {
+        this.dayChange(this.resultDate,days,sa_orderitemsid)
+      }
+      console.log(this.resultDate,'得到的最后的结果')
+    },
+
+    // 格式化日期显示
+    formatDate(date) {
+      if (!date) return '计算中...';
+      const year = date.getFullYear();
+      const month = date.getMonth() + 1;
+      const day = date.getDate();
+      return `${year}年${month}月${day}日`;
     }
   },
   mounted () {
     this.flag = 0
     this.siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
     this.listData(this.param.content.pageNumber = 1)
+    this.holidaysList()
     // this.queryStock()
     // this.columnTitle  = []
     setTimeout(() => {

+ 740 - 0
src/HDrpManagement/orderManage/details/tabs/confirmListCopy.vue

@@ -0,0 +1,740 @@
+<template>
+  <div>
+    <Table
+        height="calc(100vh - 200px)"
+        ref="multipleTable"
+        :layout="tablecols"
+        :data="tableData"
+        :custom="true" :checkbox="false" fixedName="rowno itemname itemno erpitemno model" redirect="left" :headerOptions="['needdate','deliverydate','deliverydays']">
+      <template v-slot:header="scope">
+        <div v-if="scope.column.columnname == 'needdate'">
+          <el-date-picker
+              style="width:150px"
+              v-if="data.status === '新建'"
+              v-model="value1"
+              value-format="yyyy-MM-dd"
+              slot="reference"
+              align="right"
+              type="date"
+              size="mini"
+              :placeholder="$t(`一键填写需求日期`)"
+              :picker-options="pickerOptions1"
+              @change="dateChangeNeed">
+          </el-date-picker>
+          <span v-else>{{$t(`需求日期`)}}</span>
+        </div>
+        <div v-if="scope.column.columnname == 'deliverydays'">
+          <el-input v-model="value3" type="number" size="mini" :placeholder="$t(`一键填写回复交期天数`)" @change="setDeliveryDay(value3)"></el-input>
+        </div>
+        <div v-if="scope.column.columnname == 'deliverydate'">
+          <div v-if="data.status === '审核' || data.status === '关闭' || siteid == 'HY' || siteid == 'YOSTEST1'">
+            <span>{{$t(`回复交期`)}}</span>
+          </div>
+          <div v-else>
+            <div v-if="siteid === 'NB'">
+              <el-date-picker
+                  style="width:180px"
+                  v-model="value2"
+                  value-format="yyyy-MM-dd"
+                  slot="reference"
+                  align="right"
+                  type="date"
+                  size="mini"
+                  :placeholder="$t(`一键回复交期`)"
+                  :picker-options="pickerOptions"
+                  @change="dateChange">
+              </el-date-picker>
+            </div>
+            <div v-else>
+              <el-date-picker
+                  style="width:180px"
+                  v-if="type === 'confirmdate'"
+                  v-model="value2"
+                  value-format="yyyy-MM-dd"
+                  slot="reference"
+                  align="right"
+                  type="date"
+                  size="mini"
+                  :placeholder="$t(`一键回复交期`)"
+                  :picker-options="pickerOptions"
+                  @change="dateChange">
+              </el-date-picker>
+              <span v-else>{{$t(`回复交期`)}}</span>
+            </div>
+          </div>
+
+        </div>
+      </template>
+      <template v-slot:customcol="scope">
+        <div v-if="scope.column.columnname === 'qty'">
+          <el-input-number :controls="true" controls-position='right'  v-if="data.status === '新建' && data.type !=='特殊订单'" size="mini" v-model="scope.column.data.qty" :min="scope.column.data.orderminqty" :step="scope.column.data.orderaddqty" :label="$t(`输入数量`)" @change="rowChange(scope.column.data,scope.$index)"></el-input-number>
+          <el-input-number  controls-position='right'  v-else-if="data.status === '新建' && data.type ==='特殊订单'" size="mini" :min="1" v-model="scope.column.data.qty" :label="$t(`输入数量`)" @change="rowChange(scope.column.data,scope.$index)"></el-input-number>
+          <span v-else>{{scope.column.data.qty}}</span>
+        </div>
+        <div v-else-if="scope.column.columnname === 'needdate'">
+          <el-date-picker
+              v-if="scope.column.data.delivery > 0 && data.status === '新建'"
+              v-model="scope.column.data.needdate"
+              type="date"
+              :placeholder="$t('选择日期')"
+              value-format="yyyy-MM-dd"
+              size="mini"
+              style="width:150px"
+              :picker-options="pickerOptions1"
+              @change="rowChange(scope.column.data)"
+              @focus="setPickerOptions1(scope.column.data)">
+          </el-date-picker>
+          <div v-else>
+            <p v-if="scope.column.data.delivery === 0 ">{{$t(`不管控交期`)}}</p>
+            <p v-else>{{scope.column.data.needdate}}</p>
+          </div>
+        </div>
+        <div v-else-if="scope.column.columnname === 'deliverydays'">
+          <el-input v-model="scope.column.data.deliverydays" type="number" size="mini" :placeholder="$t(`填写回复交期天数`)" @change="setDeliveryDay(scope.column.data.deliverydays,'单',scope.column.data.sa_orderitemsid)"></el-input>
+        </div>
+        <div v-else-if="scope.column.columnname === 'deliverydate'">
+          <div v-if="siteid == 'HY' || siteid == 'YOSTEST1'">
+            <p>{{scope.column.data.deliverydate}}</p>
+          </div>
+          <div v-else>
+            <div v-if="data.status === '审核' || data.status === '关闭'">
+              <div v-if="siteid === 'NB'">
+                <p >{{scope.column.data.deliverydate}}</p>
+              </div>
+              <div v-else>
+                <p v-if="scope.column.data.delivery == 0 ">{{$t(`不管控交期`)}}</p>
+                <p v-else>{{scope.column.data.deliverydate}}</p>
+              </div>
+            </div>
+            <div v-else>
+              <div v-if="siteid === 'NB'">
+                <el-date-picker
+                    v-if="scope.column.data.delivery > 0 && type === 'confirmdate'"
+                    v-model="scope.column.data.deliverydate"
+                    type="date"
+                    :placeholder="$t('选择日期')"
+                    value-format="yyyy-MM-dd"
+                    size="mini"
+                    style="width:150px"
+                    :picker-options="pickerOptions"
+                    @change="onDateChange(scope.column.data)"
+                    @focus="setPickerOptions(scope.column.data)">
+                </el-date-picker>
+                <div v-else>
+                  <el-date-picker
+                      v-if="scope.column.data.delivery == 0"
+                      v-model="scope.column.data.deliverydate"
+                      type="date"
+                      :placeholder="$t('选择日期')"
+                      value-format="yyyy-MM-dd"
+                      size="mini"
+                      style="width:150px"
+                      :picker-options="pickerOptions"
+                      @change="onDateChange(scope.column.data)"
+                      @focus="setPickerOptions(scope.column.data)">
+                  </el-date-picker>
+                  <p v-else>{{scope.column.data.deliverydate}}</p>
+                </div>
+              </div>
+              <div v-else>
+                <el-date-picker
+                    v-if="scope.column.data.delivery > 0 && type === 'confirmdate'"
+                    v-model="scope.column.data.deliverydate"
+                    type="date"
+                    :placeholder="$t('选择日期')"
+                    value-format="yyyy-MM-dd"
+                    size="mini"
+                    style="width:150px"
+                    :picker-options="pickerOptions"
+                    @change="onDateChange(scope.column.data)"
+                    @focus="setPickerOptions(scope.column.data)">
+                </el-date-picker>
+                <div v-else>
+                  <p v-if="scope.column.data.delivery == 0 ">{{$t(`不管控交期`)}}</p>
+                  <p v-else>{{scope.column.data.deliverydate}}</p>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div v-else-if="scope.column.columnname === 'unit'">
+          <el-tag size="mini" type="info" effect="plain">{{scope.column.data.unit}}</el-tag>
+        </div>
+        <div v-else-if="scope.column.columnname === 'marketprice'">
+          <p>¥&nbsp;{{tool.formatAmount(scope.column.data.marketprice,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'defaultprice'">
+          <el-input v-if="data.status === '新建' && data.type === '特殊订单'" v-model="scope.column.data.defaultprice"  :placeholder="$t(`输入订单备注`)" size="mini" @change="rowChange(scope.column.data,scope.$index)"></el-input>
+          <p v-else>¥&nbsp;{{tool.formatAmount(scope.column.data.defaultprice,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'defaultamount'">
+          <p>¥&nbsp;{{tool.formatAmount(scope.column.data.defaultprice * scope.column.data.qty,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'price'">
+          <p>¥&nbsp;{{tool.formatAmount(scope.column.data.price,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'invoiceamount'">
+          <p>¥&nbsp;{{tool.formatAmount(scope.column.data.invoiceamount,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'writeoffamount'">
+          <p>¥&nbsp;{{tool.formatAmount(scope.column.data.writeoffamount,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'aftersalesmagamount'">
+          <p>¥&nbsp;{{tool.formatAmount(scope.column.data.aftersalesmagamount,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'amount'">
+          <p style="color:red;font-weight:500">¥&nbsp;{{tool.formatAmount(scope.column.data.amount,2)}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'afterrebateprice'">
+          <p>¥&nbsp;{{scope.column.data.afterrebateprice?tool.formatAmount(scope.column.data.afterrebateprice,2):'0.00'}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'afterrebateamount'">
+          <p>¥&nbsp;{{scope.column.data.afterrebateamount?tool.formatAmount(scope.column.data.afterrebateamount,2):'0.00'}}</p>
+        </div>
+        <div v-else-if="scope.column.columnname === 'stockname'">
+          <el-select v-model="scope.column.data.stockno" size="mini" @visible-change="queryStock(scope.column.data)" :placeholder="$t('请选择')">
+            <el-option
+                v-for="item in stockOptions"
+                :key="item.WAREHOUSE"
+                :label="item.WAREHOUSE"
+                :value="item.WAREHOUSE"
+                @click.native="stockChange(item,scope.column.data,scope.$index)">
+              <span>{{ item.WAREHOUSE }}</span>
+              <div style="float: right; color: #8492a6; font-size: 13px">{{$t(`数量`)}}:{{item.QTY}}{{$t(`仓位`)}}:{{ item.LOCATION }}/{{$t(`批号`)}}:{{ item.LOT }}</div>
+            </el-option>
+          </el-select>
+        </div>
+        <div v-else-if="scope.column.columnname === 'position'">
+          <el-input size="mini" readonly :value="$t(scope.column.data.position)" @input="rowChange(scope.column.data,scope.$index)" :placeholder="$t(`输入仓位`)"></el-input>
+        </div>
+        <div v-else-if="scope.column.columnname === 'batchno'">
+          <el-input size="mini" readonly :value="scope.column.data.batchno" @input="rowChange(scope.column.data,scope.$index)" :placeholder="$t(`输入批号`)"></el-input>
+        </div>
+        <div v-else-if="scope.column.columnname === 'remarks'">
+          <el-input v-model="scope.column.data.remarks" :placeholder="$t(`输入订单备注`)" size="mini" @change="rowChange(scope.column.data,scope.$index)"></el-input>
+        </div>
+        <div v-else-if="scope.column.columnname === 'nominalpressure'">
+          {{tool.nominalPressureSet(scope.column.data.nominalpressure)}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'bookedqty'">
+          {{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:scope.column.data[scope.column.columnname] == 0?'0':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'logisticsqty'">
+          {{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:scope.column.data[scope.column.columnname] == 0?'0':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'undeliqty'">
+          {{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:scope.column.data[scope.column.columnname] == 0?'0':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'aftersalesmagqty'">
+          {{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:scope.column.data[scope.column.columnname] == 0?'0':'--'}}
+        </div>
+        <div v-else-if="scope.column.columnname === 'unlogisticsqty'">
+          {{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:scope.column.data[scope.column.columnname] == 0?'0':'--'}}
+        </div>
+        <div v-else>{{scope.column.columnname === 'operation' || scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname] : '--'}}</div>
+      </template>
+      <template v-slot:opreation="scope">
+<!--        <el-button v-if="data.status == '新建'" type="text" size="mini" @click="deleteOrderProduct(scope.data)">{{$t('删 除')}}</el-button>-->
+      </template>
+    </Table>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-size="param.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import Table from './table'
+export default {
+  name: "confirmList",
+  props:['data','type'],
+  components:{
+    Table
+  },
+  data () {
+    return {
+      tableData:[],
+      tablecols:[],
+      param:{
+        "id": 20221109093902,
+        "content": {
+          "sa_orderid": this.$route.query.id, //订单ID
+          "pageNumber": 1,
+          "pageSize": 10000,
+          "where": {
+            "condition": ""
+          }
+        },
+      },
+      pickerOptions1: {
+        disabledDate(time) {
+          return time.getTime() < new Date().getTime();
+        },
+      },
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < (new Date().getTime() - 24 * 60 * 60 * 1000);
+        },
+      },
+      total:0,
+      currentPage:0,
+      time: null,
+      value1:'',
+      value2:'',
+      value3:'',
+      stockOptions:[],
+      totalPage:0,
+      progress:0,
+      progressVisible:false,
+      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
+      jsDay:'',
+      jsYcDay:'',
+      days:""
+    }
+  },
+  methods:{
+    async listData () {
+      this.value3 = ''
+      this.jsYcDay = ''
+      this.jsDay = ''
+      this.param.content.sa_orderid = this.$route.query.id
+      const res = await this.$api.requested(this.param)
+      this.tableData = res.data.map(e=>{
+        e.newvalue = this.siteid === 'HY'?'':0
+        return e
+      })
+      // this.tableData = res.data.map(item=>{
+      //   item.deliveryday = this.tool.confirmSet(item.deliverydate)
+      //   return item
+      // })
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+    stockChange (item,row,index) {
+      row.stockno = item.WAREHOUSE
+      row.position = item.LOCATION
+      row.batchno = item.LOT
+      this.$set(this.tableData,index,row)
+      this.updateOrder({
+        "sa_orderid": this.data.sa_orderid, //订单ID
+        "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
+        "sa_contractid": this.data.contacts.contactsid, //合同ID
+        "type": this.data.type, //订单类型
+        "items": this.tableData
+      })
+    },
+    rowChange (val,index) {
+      if (this.data.type != '特殊订单') {
+        if (val.qty > val.orderminqty){
+          if ((val.qty-val.orderminqty)/val.orderaddqty > 0){
+            let k = ((val.qty-val.orderminqty)/val.orderaddqty).toFixed(0)
+            val.qty = k * val.orderaddqty + val.orderminqty
+          }
+        }
+      }
+      let that = this
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.newData = val
+      this.time = setTimeout(() => {
+        val.amount = val.qty * val.price
+        this.$set(this.tableData,index,val)
+        that.updateOrder({
+          "sa_orderid": this.data.sa_orderid, //订单ID
+          "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
+          "sa_contractid": this.data.contacts.contactsid, //合同ID
+          "type": this.data.type, //订单类型
+          "items": this.tableData
+        })
+      },1000)
+    },
+    onDateChange (val){
+      let that = this
+      that.updateOrder({
+        "sa_orderid": this.data.sa_orderid, //订单ID
+        "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
+        "sa_contractid": this.data.contacts.contactsid, //合同ID
+        "type": this.data.type, //订单类型
+        "items": this.tableData
+      })
+    },
+    async updateOrder (val,fn) {
+      const res  = await this.$api.requested({
+        "id": 20221109093602,
+        "content": val
+      })
+      this.time = null
+      if (res.code == 1) {
+        this.$emit('onSuccess')
+        // this.listData()
+      } else {
+        this.$message({
+          message:res.data + ':' + res.msg,
+          type:'error'
+        })
+      }
+
+    },
+    async dateChangeNeed(val){
+      const res = await this.$api.requested({
+        "id": 20230104143802,
+        "content": {
+          "sa_orderid": this.data.sa_orderid,
+          "needdate": this.value1
+        },
+      })
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    setPickerOptions (val) {
+      this.pickerOptions = {
+        disabledDate(time) {
+          return time.getTime() < new Date().getTime();
+        },
+      }
+    },
+    async setPickerOptions1 (val) {
+      let newData = new Date()
+      newData = newData.setDate(newData.getDate() + (val.delivery) + this.flag )
+      let year = new Date(newData).getFullYear()
+      let month = new Date(newData).getMonth() + 1
+      let day = new Date(newData).getDate()
+      let param = {
+        "id":20231008134404,
+        "content":{
+          "isExport":0,
+          "isnext":'0',
+          "pageNumber":1,
+          "pageSize":100,
+          "where":{
+            "begindate":year + '-' + month + '-' + day,
+            "enddate":year + '-' + month + '-' + day
+          }
+        },
+      }
+      const res = await this.$api.requested(param)
+      if (res.data.length === 0){
+        this.flag = 0
+        newData = new Date(newData)
+        newData = newData.setDate(newData.getDate() - 1)
+        this.pickerOptions1 = {
+          disabledDate(time) {
+            return time.getTime() < newData;
+          },
+        }
+      }else {
+        this.flag = this.flag + 1
+        this.setPickerOptions1(val)
+      }
+
+    },
+    async dateChange (row) {
+      this.tableData = this.tableData.filter(e=>{
+        if (e.delivery > 0) {
+          e.deliverydate = this.value2
+        }
+        return e
+      })
+      const res = await this.$api.requested({
+        "id": 20230104143102,
+        "content": {
+          "sa_orderid": this.$route.query.id,
+          "deliverydate": this.value2
+        },
+      })
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    selectionChange (selection) {
+      this.$emit('select',selection)
+    },
+    // 订单添加商品
+    async onConfirm (data,isupload) {
+      if (isupload) {
+        const res = await this.$api.requested({
+          "id": 20221109093602,
+          "content": {
+            "sa_orderid": this.$route.query.id, //订单ID
+            "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
+            "type": this.data.type, //订单类型
+            "items": data.map(e=>{
+              return {
+                sa_orderitemsid:0,
+                itemid:e.itemid,
+                qty:e.orderminqty,
+                needdate:e.deliverydate
+              }
+            })
+          },
+        })
+      }
+      this.listData(this.param.content.pageNumber = 1)
+      this.$emit('onSuccess')
+    },
+    async queryStock (val) {
+      const res = await this.$api.requested({
+        "id": 20230228193201,
+        "content": {
+          "itemid": val.itemid,
+          "qty": val.qty
+        }
+
+      })
+      this.stockOptions = res.data
+    },
+    async queryBasicInfo () {
+      const res = await this.$api.requested({
+        "id":20220920084001,
+        "content":{
+          sys_enterpriseid:this.data.sys_enterpriseid
+        },
+      })
+      this.freefreightamount = res.data.freefreightamount?res.data.freefreightamount:0
+    },
+    /*批量添加商品*/
+    async addProducts(data){
+      let items = data.map(item => {
+        return {
+          sa_orderitemsid:0,
+          itemid:item.itemid,
+          qty:item.orderminqty,
+          needdate:item.deliverydate
+        }
+      })
+      const res = await this.$api.requested({
+        "id": 20221109093602,
+        "content": {
+          "sa_orderid": this.$route.query.id, //订单ID
+          "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
+          "type": this.data.type, //订单类型
+          "items": items
+        },
+      })
+      this.tool.showMessage(res,()=>{
+        this.listData(this.param.content.pageNumber = 1)
+        this.$refs.addProduct.listData()
+        this.$emit('onSuccess')
+      })
+    },
+    /*获取节假日数据*/
+    async holiday(now,date,days,type,sa_orderitemsid){
+      let dateNow = new Date(now)
+      let dateNow1 = new Date(date)
+      let monthB = (dateNow.getMonth() + 1) > 10 ? dateNow.getMonth() + 1 : '0' + (dateNow.getMonth() + 1)
+      let dateB = dateNow.getDate() > 10 ? dateNow.getDate() : '0' +  dateNow.getDate()
+      let monthE = (dateNow1.getMonth() + 1) > 10 ? dateNow1.getMonth() + 1 : '0' + (dateNow1.getMonth() + 1)
+      let dateE = dateNow1.getDate() > 10 ? dateNow1.getDate() : '0' +  dateNow1.getDate()
+      const res = await this.$api.requested({
+        id:20221215165504,
+        content:{
+          isExport: 0,
+          isnext: "0",
+          pageNumber: 1,
+          pageSize: 100,
+          where:{
+            begindate: monthB + '-' + dateB,
+            condition: "",
+            enddate: monthE + '-' + dateE
+          }
+        }
+      })
+      this.jsDay = res.total
+      if (this.jsDay >0){
+        const dateAdd = this.addDaysToDate(date, this.jsDay)
+        this.holidayE(now,dateAdd.toISOString().split('T')[0],Number(this.jsDay),type,sa_orderitemsid)
+      }else {
+        if (type == '单'){
+          this.dayChange(date,days,sa_orderitemsid)
+        }else {
+          this.daysChange(date,days)
+        }
+
+      }
+    },
+    async holidayE(now,date,days,type,sa_orderitemsid){
+      let dateNow = new Date(now)
+      let dateNow1 = new Date(date)
+      let monthB = (dateNow.getMonth() + 1) > 10 ? dateNow.getMonth() + 1 : '0' + (dateNow.getMonth() + 1)
+      let dateB = dateNow.getDate() > 10 ? dateNow.getDate() : '0' +  dateNow.getDate()
+      let monthE = (dateNow1.getMonth() + 1) > 10 ? dateNow1.getMonth() + 1 : '0' + (dateNow1.getMonth() + 1)
+      let dateE = dateNow1.getDate() > 10 ? dateNow1.getDate() : '0' +  dateNow1.getDate()
+      const res = await this.$api.requested({
+        id:20221215165504,
+        content:{
+          isExport: 0,
+          isnext: "0",
+          pageNumber: 1,
+          pageSize: 100,
+          where:{
+            begindate: monthB + '-' + dateB,
+            condition: "",
+            enddate: monthE + '-' + dateE
+          }
+        }
+      })
+      this.days = res.total - this.jsDay
+      if (this.days >0){
+        this.jsYcDay = this.jsYcDay + this.days + this.jsDay
+        const dateAdd = this.addDaysToDate(date, this.days)
+        this.holidayS(now,dateAdd.toISOString().split('T')[0],Number(this.days),type,sa_orderitemsid)
+
+      }else {
+        if (type == '单'){
+          this.dayChange(date,days,sa_orderitemsid)
+        }else {
+          this.daysChange(date,this.value3)
+        }
+      }
+    },
+    async holidayS(now,date,days,type,sa_orderitemsid){
+      let dateNow = new Date(now)
+      let dateNow1 = new Date(date)
+      let monthB = (dateNow.getMonth() + 1) > 10 ? dateNow.getMonth() + 1 : '0' + (dateNow.getMonth() + 1)
+      let dateB = dateNow.getDate() > 10 ? dateNow.getDate() : '0' +  dateNow.getDate()
+      let monthE = (dateNow1.getMonth() + 1) > 10 ? dateNow1.getMonth() + 1 : '0' + (dateNow1.getMonth() + 1)
+      let dateE = dateNow1.getDate() > 10 ? dateNow1.getDate() : '0' +  dateNow1.getDate()
+      const res = await this.$api.requested({
+        id:20221215165504,
+        content:{
+          isExport: 0,
+          isnext: "0",
+          pageNumber: 1,
+          pageSize: 100,
+          where:{
+            begindate: monthB + '-' + dateB,
+            condition: "",
+            enddate: monthE + '-' + dateE
+          }
+        }
+      })
+      this.days = res.total - this.jsYcDay
+      if (this.days >0){
+        this.jsYcDay = this.jsYcDay + this.days
+        const dateAdd = this.addDaysToDate(date, this.days)
+        this.holidayS(now,dateAdd.toISOString().split('T')[0],Number(this.days),type,sa_orderitemsid)
+        // if (type == '单'){
+        //   this.dayChange(dateAdd.toISOString().split('T')[0],days,sa_orderitemsid)
+        // }else {
+        //   this.daysChange(dateAdd.toISOString().split('T')[0],this.value3)
+        // }
+
+      }else {
+        if (type == '单'){
+          this.dayChange(date,days,sa_orderitemsid)
+        }else {
+          this.daysChange(date,this.value3)
+        }
+      }
+    },
+    async daysChange(date,days){
+      this.tableData = this.tableData.filter(e=>{
+        e.deliverydays = this.value3
+        return e
+      })
+      const res = await this.$api.requested({
+        "id": 20230104143102,
+        "content": {
+          "sa_orderid": this.$route.query.id,
+          "deliverydate": date,
+          "deliverydays":this.value3
+        },
+      })
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    async dayChange(date,days,sa_orderitemsid){
+      this.tableData.forEach(item=>{
+        if (item.sa_orderitemsid == sa_orderitemsid){
+          item.deliverydate = date
+        }
+      })
+      const res = await this.$api.requested({
+        "id": 20221109093602,
+        "content": {
+          "sa_orderid": this.data.sa_orderid, //订单ID
+          "sys_enterpriseid": this.data.sys_enterpriseid, //企业ID
+          "sa_contractid": this.data.contacts.contactsid, //合同ID
+          "type": this.data.type, //订单类型
+          "items": this.tableData
+        }
+      })
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    setDeliveryDay(val,type,sa_orderitemsid){
+      let newDays = Number(val) + 1
+      this.jsYcDay = 0
+      this.jsDay = 0
+      let nowDate = new Date()
+      let year = nowDate.getFullYear()
+      let month = (nowDate.getMonth() + 1) > 10 ? nowDate.getMonth() + 1 : '0' + (nowDate.getMonth() + 1)
+      let date = nowDate.getDate() > 10 ? nowDate.getDate() : '0' +  nowDate.getDate()
+      let dateNew = year + '-' + month + '-' + date
+      const originalDate = new Date(dateNew);
+      const newDate = this.addDaysToDate(originalDate, Number(newDays));
+      this.holiday(dateNew,newDate.toISOString().split('T')[0],Number(newDays),type,sa_orderitemsid)
+    },
+    addDaysToDate(date, days) {
+      const result = new Date(date); // 创建原始日期的副本
+      result.setDate(result.getDate() + days); // 添加 N 天
+      return result; // 返回新的日期对象
+    }
+  },
+  mounted () {
+    this.flag = 0
+    this.siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
+    this.listData(this.param.content.pageNumber = 1)
+    // this.queryStock()
+    // this.columnTitle  = []
+    setTimeout(() => {
+      /* 处理宁波站点 */
+      let siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
+      if ((siteid === 'NB' || siteid === 'HY') && this.data.type === '特殊订单' && this.data.typemx === '样品') {
+        this.tablecols = this.tool.tabelCol(this.$route.name).productTable.tablecols
+      } else {
+        this.tablecols = this.tool.tabelCol(this.$route.name).productTable.tablecols.filter(item => {
+          if (item.columnname != 'stockname' && item.columnname != 'position' && item.columnname != 'batchno') return item
+        })
+
+      }
+
+      // this.$refs.multipleTable.$refs.table.$children.forEach(obj => {
+      //   let columnChild = {'columnname':obj.prop,'filter':0,'rowindex':'','sequence':'','title':obj.label,'width':obj.width}
+      //   // 存到columnTitle数组中
+      //   this.columnTitle.push(columnChild)
+      // })
+    },1000)
+  },
+  created() {
+    // this.tablecolsAdd = this.tool.tabelCol(this.$route.name).productTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+body .el-table th.gutter{
+  display: table-cell!important;
+}
+/deep/ .el-input.is-disabled .el-input__inner{
+  color: #666666;
+}
+/deep/.el-textarea.is-disabled .el-textarea__inner {
+  color: #666666;
+}
+</style>

+ 1 - 1
src/HManagement/siteManage/vacation/index.vue

@@ -111,7 +111,7 @@ export default {
     },
     async areaChange () {
       console.log(this.dateValue)
-      if (this.dateValue === '' || this.dateValue === null){
+      if (this.dateValue.length == 0 || this.dateValue === '' || this.dateValue === null){
         this.$refs.basicLayout.param.content.where.begindate = ''
         this.$refs.basicLayout.param.content.where.enddate = ''
       }else {