小小儁爺
2024-08-01 bb2ed2e56da26a6b79575f5be9f60ca2d90774d0
src/views/workOrder/produceOrderList.vue
@@ -81,148 +81,13 @@
              <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <div v-show="isExpandForm" style="display:flex;justify-content: center;align-items: center;position: relative">
              <el-popover
                v-model="cycleTimePopoverIsShow"
                placement="bottom"
                width="500"
                trigger="hover"
                @show="cycleTimePopoverIsShow=true"
              >
                <div class="popoverList">
                  <div class="popoverListItem">
                    <div style="width: 40px">周</div>
                    <el-button
                      :class="cycleTime===1?'selectButton':''"
                      @click="cycleTimeClick(1)"
                    >本 周</el-button>
                    <el-button
                      :class="cycleTime===2?'selectButton':''"
                      @click="cycleTimeClick(2)"
                    >上 周</el-button>
                  </div>
                  <div class="popoverListItem">
                    <div style="width: 40px">月</div>
                    <el-button
                      :class="cycleTime===3?'selectButton':''"
                      @click="cycleTimeClick(3)"
                    >本 月</el-button>
                    <el-button
                      :class="cycleTime===4?'selectButton':''"
                      @click="cycleTimeClick(4)"
                    >上 月</el-button>
                  </div>
                  <div class="popoverListItem">
                    <div style="width: 40px">季</div>
                    <el-button
                      :class="cycleTime===5?'selectButton':''"
                      @click="cycleTimeClick(5)"
                    >本 季</el-button>
                    <el-button
                      :class="cycleTime===6?'selectButton':''"
                      @click="cycleTimeClick(6)"
                    >上 季</el-button>
                  </div>
                  <div class="popoverListItem">
                    <div style="width: 40px">年</div>
                    <el-button
                      :class="cycleTime===7?'selectButton':''"
                      @click="cycleTimeClick(7)"
                    >本 年</el-button>
                    <el-button
                      :class="cycleTime===8?'selectButton':''"
                      @click="cycleTimeClick(8)"
                    >上 年</el-button>
                  </div>
                  <div class="popoverListItem">
                    <div style="width: 40px">其他</div>
                    <el-button
                      :class="cycleTime===9?'selectButton':''"
                      @click="cycleTimeClick(9)"
                    >近3天</el-button>
                    <el-button
                      :class="cycleTime===10?'selectButton':''"
                      @click="cycleTimeClick(10)"
                    >近7天</el-button>
                    <el-button
                      :class="cycleTime===11?'selectButton':''"
                      @click="cycleTimeClick(11)"
                    >近14天</el-button>
                    <el-button
                      :class="cycleTime===12?'selectButton':''"
                      @click="cycleTimeClick(12)"
                    >今 天</el-button>
                    <el-button
                      :class="cycleTime===13?'selectButton':''"
                      @click="cycleTimeClick(13)"
                    >昨 天</el-button>
                  </div>
                </div>
                <div
                  slot="reference"
                  style="width:15px;height:15px;background:transparent;
                  cursor: pointer;position:absolute;z-index: 100;left: 110px;top:13px"
                />
              </el-popover>
              <el-popover
                placement="bottom"
                width="100"
                trigger="hover"
                :value="datatypePopoverIsShow"
                @show="datatypePopoverIsShow=true"
              >
                <div class="popoverList">
                  <div class="popoverListItem2">
                    <el-button
                      :class="form.datatype==='PS'?'selectButton':''"
                      @click="form.datatype='PS';datatypePopoverIsShow=false"
                    >预计开工日期</el-button>
                  </div>
                  <div class="popoverListItem2">
                    <el-button
                      :class="form.datatype==='PE'?'selectButton':''"
                      @click="form.datatype='PE';datatypePopoverIsShow=false"
                    >预计完工日期</el-button>
                  </div>
                  <div class="popoverListItem2">
                    <el-button
                      :class="form.datatype==='ED'?'selectButton':''"
                      @click="form.datatype='ED';datatypePopoverIsShow=false"
                    >预计交付日期</el-button>
                  </div>
                </div>
                <div
                  slot="reference"
                  style="color: #a7a7a7;
                  font-weight: 600;
                font-family:'Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif';
                font-size:14px;width: 100px;text-align: center"
                > {{ form.datatype==='PS'? '预计开工日期':form.datatype==='PE'?'预计完工日期':'预计交付日期' }}
                </div>
              </el-popover>
              <el-date-picker
                v-model="form.timeValue"
                type="daterange"
                range-separator="~"
                class="timeMini"
                size="mini"
                style="width: 200px;display: flex;line-height: 34px;height: 34px;margin-right: 10px"
                :clearable="false"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                value-format="yyyy-MM-dd"
                @change="pickerChange"
              />
              <!--              :picker-options="pickerOptions"-->
            </div>
            <DateType
              ref="DateTypeRef"
              :is-expand-form="isExpandForm"
              style="display:flex;justify-content: center;align-items: center;position: relative"
              @DateTypeChange="DateTypeChange"
              @cycleTimeChange="cycleTimeChange"
            />
            <!--            <el-form-item-->
            <!--              v-show="isExpandForm"-->
@@ -307,6 +172,8 @@
          highlight-current-row
          :header-cell-style="this.$headerCellStyle"
          :cell-style="this.$cellStyle"
          :summary-method="getSummaries"
          show-summary
          @sort-change="sortChange"
          @selection-change="handleSelectionChange"
        >
@@ -573,8 +440,8 @@
      v-el-drag-dialog
      :title="operation==='add'?'新增':'下达'"
      :visible.sync="dialogVisible"
      width="860px"
      top="15vh"
      width="900px"
      top="12vh"
      :close-on-click-modal="false"
      @closed="handleClose"
      @close="handleClose"
@@ -632,6 +499,8 @@
            style="width: 200px"
          />
        </el-form-item>
        <!--        :picker-options="pickerOptions"-->
        <el-form-item label="预计交付日期" prop="saleOrderDeliveryDate">
          <el-date-picker
            v-model="dialogForm.saleOrderDeliveryDate"
@@ -639,12 +508,44 @@
            size="mini"
            :clearable="false"
            class="dateMini"
            :picker-options="pickerOptions"
            format="yyyy-MM-dd"
            style="width: 200px"
            placeholder="选择日期"
            :disabled="dialogForm.saleOrderDeliveryDateIsDisabled"
          />
        </el-form-item>
        <div style="display: flex">
          <el-form-item label="预计开工日期" prop="" style="display: flex">
            <el-date-picker
              v-model="dialogForm.paystartdate"
              type="date"
              size="mini"
              style="width: 200px"
              :clearable="false"
              class="dateMini"
              format="yyyy-MM-dd"
              value-format="yyyy-MM-dd"
              placeholder="选择日期"
            />
          </el-form-item>
          <el-form-item label="预计完工日期" prop="" style="display: flex">
            <el-date-picker
              v-model="dialogForm.payenddate"
              type="date"
              size="mini"
              style="width: 200px"
              :clearable="false"
              class="dateMini"
              format="yyyy-MM-dd"
              value-format="yyyy-MM-dd"
              placeholder="选择日期"
            />
          </el-form-item>
        </div>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
@@ -676,13 +577,13 @@
} from '@/api/WorkOrder'
import { SeaveSearchErpOrder } from '@/api/ErpSyncMes'
import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
import moment from 'moment'
import DateType from '@/components/DateType'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
  name: 'SCDD',
  components: {
    Pagination
    Pagination, DateType
  },
  directives: { elDragDialog, waves },
  data() {
@@ -724,9 +625,7 @@
        page: 1, // 第几页
        rows: 20 // 每页多少条
      },
      datatypePopoverIsShow: false,
      cycleTime: null, // 时间周期
      cycleTimePopoverIsShow: false,
      erporderstusArr: [
        { code: 'NEW', name: '新订单' },
        { code: 'CREATING', name: '部分下达' },
@@ -761,7 +660,10 @@
        clerkuser: '', // 销售业务员
        saleOrderDeliveryDate: '' // 预计交付日期
        saleOrderDeliveryDate: '', // 预计交付日期
        paystartdate: '', //   预计开工日期
        payenddate: ''//  预计完工日期
      },
      operation: '',
      dialogFormRules: {
@@ -783,49 +685,9 @@
      },
      pickerOptions: {
        shortcuts: [
          {
            text: '当天',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime())
              picker.$emit('pick', [start, end])
            }
          }, {
            text: '近三天',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 3)
              console.log([start, end], '[start, end]')
              picker.$emit('pick', [start, end])
            }
          }, {
            text: '近一周',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
              picker.$emit('pick', [start, end])
            }
          }, {
            text: '近一个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
              picker.$emit('pick', [start, end])
            }
          }, {
            text: '近三个月',
            onClick(picker) {
              const end = new Date()
              const start = new Date()
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
              picker.$emit('pick', [start, end])
            }
          }]
        disabledDate(time) {
          return time.getTime() < Date.now() - 8.64e7
        }
      },
      multipleSelection: []
@@ -849,102 +711,11 @@
  },
  methods: {
    cycleTimeClick(value) {
      this.cycleTimePopoverIsShow = false
      const date = new Date()
      const cWeek = moment(date).format('E')
      let newDate = []
      switch (value) {
        case 1:// 本周
          newDate = [
            moment(date).subtract(Number(cWeek) - 1, 'days').format('YYYY-MM-DD'),
            moment(moment().week(moment().week()).endOf('week').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 2:// 上周
          newDate = [
            moment(moment().add(-13, 'days').startOf('day').valueOf()).format('YYYY-MM-DD'),
            moment(moment().add(-6, 'days').startOf('day').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 3:// 本月
          newDate = [
            moment(moment().month(moment().month()).startOf('month').valueOf()).format('YYYY-MM-DD'),
            moment(moment().month(moment().month()).endOf('month').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 4:// 上月
          newDate = [
            moment(moment().month(moment().month() - 1).startOf('month').valueOf()).format('YYYY-MM-DD'),
            moment(moment().month(moment().month()).startOf('month').valueOf()).add(-1, 'days').format('YYYY-MM-DD')
          ]
          break
        case 5:// 本季度
          newDate = [
            moment(moment().quarter(moment().quarter()).startOf('quarter').valueOf()).format('YYYY-MM-DD'),
            moment(moment().quarter(moment().quarter()).endOf('quarter').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 6:// 上季度
          newDate = [
            moment(moment().quarter(moment().quarter() - 1).startOf('quarter').valueOf()).format('YYYY-MM-DD'),
            moment(moment().quarter(moment().quarter() - 1).endOf('quarter').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 7:// 本年
          newDate = [
            moment(moment().year(moment().year()).startOf('year').valueOf()).format('YYYY-MM-DD'),
            moment(moment().year(moment().year()).endOf('year').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 8:// 去年
          newDate = [
            moment(moment().year(moment().year() - 1).startOf('year').valueOf()).format('YYYY-MM-DD'),
            moment(moment().year(moment().year() - 1).endOf('year').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 9:// 近3天
          newDate = [
            moment(moment().add(-2, 'days').startOf('day').valueOf()).format('YYYY-MM-DD'),
            moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 10:// 近7天
          newDate = [
            moment(moment().add(-6, 'days').startOf('day').valueOf()).format('YYYY-MM-DD'),
            moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 11:// 近14天
          newDate = [
            moment(moment().add(-13, 'days').startOf('day').valueOf()).format('YYYY-MM-DD'),
            moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 12:// 今天
          newDate = [
            moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD'),
            moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD')
          ]
          break
        case 13:// 昨天
          newDate = [
            moment(moment().add(-1, 'days').startOf('day').valueOf()).format('YYYY-MM-DD'),
            moment(moment().startOf('day').valueOf()).format('YYYY-MM-DD')
          ]
          break
      }
      this.form.timeValue = newDate
      this.cycleTime = value
    DateTypeChange(value) {
      this.form.datatype = value
    },
    cycleTimeChange(val) {
      this.form.timeValue = val
    },
    pickerChange(value) {
@@ -1054,11 +825,14 @@
      this.form.paystartdate = ''
      this.form.payenddate = ''
      this.form.creatuser = ''
      this.form.erpordercode = ''
      this.form.saleordercode = ''
      this.form.createdate = ''
      this.form.timeValue = []
      this.cycleTime = null
      this.$refs.DateTypeRef.clearValue()
      this.getErpOrderSearch()
    },
    // 单选框选中获取当前行信息
@@ -1145,7 +919,10 @@
            'relse_qty': i.qty,
            'saleordercode': i.saleOrderCode,
            // 'saleOrderDeliveryDate': i.saleOrderDeliveryDate
            'saleOrderDeliveryDate': handleDatetime(new Date()) + ' 00:00:00'
            'saleOrderDeliveryDate': handleDatetime(new Date()) + ' 00:00:00',
            'paystartdate': i.planstartdate,
            'payenddate': i.planenddate
          })
        })
        // console.log(JSON.parse(JSON.stringify(data)))
@@ -1205,6 +982,9 @@
        this.dialogForm.ordernum = 1
        this.dialogForm.relse_qty = row.relse_qty
        this.dialogForm.clerkuser = row.clerkuser
        this.dialogForm.paystartdate = row.planstartdate
        this.dialogForm.payenddate = row.planenddate
      })
    },
    // 对话框关闭事件
@@ -1229,6 +1009,9 @@
        markqty: '', // 下单数量
        ordernum: '', // 下单单数
        relse_qty: '', // 已下单数量
        payenddate: '', // 预计完工日期
        paystartdate: '', // 预计开工日期
        saleOrderDeliveryDate: '' // 预计交付日期
      }
@@ -1267,6 +1050,8 @@
            'erpqty': this.dialogForm.erpqty,
            'markqty': this.dialogForm.markqty,
            'ordernum': this.dialogForm.ordernum,
            'payenddate': this.dialogForm.payenddate,
            'paystartdate': this.dialogForm.paystartdate,
            'relse_qty': this.dialogForm.relse_qty,
            'saleOrderDeliveryDate': handleDatetime(this.dialogForm.saleOrderDeliveryDate) + ' 00:00:00'
          }
@@ -1295,6 +1080,45 @@
    },
    tableRowClassName({ row, rowIndex }) {
      return 'custom-row'
    },
    getSummaries(param) {
      const { columns, data } = param
      const sums = []
      const i = 7
      columns.forEach((column, index) => {
        if (index === i) {
          sums[index] = '总数'
          return
        }
        const values = data.map(item => Number(item[column.property]))
        if (column.property === 'qty') {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr)
            if (!isNaN(value)) {
              return prev + curr
              // return Math.round(prev * 100) / 100 + Math.round(curr * 100) / 100
            }
          }, 0)
          sums[index] += ' 单'
        }
        if (column.property === 'relse_qty') {
          sums[index] = values.reduce((prev, curr) => {
            const value = Number(curr)
            if (!isNaN(value)) {
              return prev + curr
              // return Math.round(prev * 100) / 100 + Math.round(curr * 100) / 100
            }
          }, 0)
          sums[index] += ' 单'
        }
      })
      this.$nextTick(() => {
        this.$refs.tableDataRef.doLayout()
      })
      return sums
    }
  }
}
@@ -1303,29 +1127,6 @@
<!--公共页面样式-->
<style lang="scss" scoped>
$main_color: #42b983;
.popoverList {
  display: flex;
  flex-direction: column;
}
.popoverListItem {
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}
.popoverListItem2 {
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
}
.selectButton {
  color: #42B983;
}
::v-deep .el-range__icon {
  line-height: 28px !important;