loulijun2021
2024-05-11 29d9bdd91b75a4dfbecfc368aefd8ed0155481d5
1.生产排单日期类型多选实现
已添加1个文件
已修改2个文件
404 ■■■■■ 文件已修改
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/icons/svg/clock.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/workOrder/produceOrderList.vue 402 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -27,6 +27,7 @@
    "jsonwebtoken": "^9.0.1",
    "lib-flexible": "^0.3.2",
    "lib-flexible-computer": "^1.0.2",
    "moment": "^2.30.1",
    "nanoid": "^4.0.2",
    "normalize.css": "7.0.0",
    "nprogress": "0.2.0",
src/icons/svg/clock.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1715385909852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4382" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M511.913993 63.989249c-247.012263 0-447.924744 200.912481-447.924744 447.924744s200.912481 447.924744 447.924744 447.924744 447.924744-200.912481 447.924744-447.924744S758.926256 63.989249 511.913993 63.989249zM511.913993 895.677474c-211.577356 0-383.763481-172.186125-383.763481-383.763481 0-211.577356 172.014111-383.763481 383.763481-383.763481s383.763481 172.014111 383.763481 383.763481S723.491349 895.677474 511.913993 895.677474z" fill="#a7a7a7" p-id="4383"></path><path d="M672.05913 511.913993l-159.973123 0L512.086007 288.123635c0-17.717453-14.277171-32.166639-31.994625-32.166639-17.717453 0-31.994625 14.449185-31.994625 32.166639l0 255.956996c0 17.717453 14.277171 31.994625 31.994625 31.994625l191.967747 0c17.717453 0 32.166639-14.277171 32.166639-31.994625C704.053754 526.191164 689.604569 511.913993 672.05913 511.913993z" fill="#a7a7a7" p-id="4384"></path></svg>
src/views/workOrder/produceOrderList.vue
@@ -81,6 +81,149 @@
              <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>
            <!--            <el-form-item-->
            <!--              v-show="isExpandForm"-->
            <!--              label="预计开工时间"-->
@@ -89,7 +232,7 @@
            <!--            >-->
            <!--              <el-date-picker-->
            <!--                v-model="form.paystartdate"-->
            <!--                type="daterange"-->
            <!--                type="datetimerange"-->
            <!--                range-separator="~"-->
            <!--                class="timeMini"-->
            <!--                size="mini"-->
@@ -97,8 +240,12 @@
            <!--                :clearable="false"-->
            <!--                start-placeholder="开始日期"-->
            <!--                end-placeholder="结束日期"-->
            <!--                :picker-options="pickerOptions"-->
            <!--                value-format="yyyy-MM-dd"-->
            <!--                @change="pickerChange"-->
            <!--              />-->
            <!--            </el-form-item>-->
            <!--            <el-form-item-->
            <!--              v-show="isExpandForm"-->
            <!--              label="预计完工时间"-->
@@ -310,6 +457,32 @@
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column
            prop="planenddate"
            label="预计开工日期"
            sortable="custom"
            show-tooltip-when-overflow
            width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.planenddate">{{ row.planenddate.substring(0, 11) }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="planstartdate"
            label="预计完工日期"
            sortable="custom"
            show-tooltip-when-overflow
            width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.planstartdate">{{ row.planstartdate.substring(0, 11) }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="saleOrderDeliveryDate"
            label="预计交付日期"
            sortable="custom"
@@ -321,6 +494,7 @@
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            show-tooltip-when-overflow
            prop="createuser"
@@ -502,6 +676,7 @@
} from '@/api/WorkOrder'
import { SeaveSearchErpOrder } from '@/api/ErpSyncMes'
import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
import moment from 'moment'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
export default {
@@ -540,11 +715,18 @@
        paystartdate: '', // é¢„计开工时间
        payenddate: '', // é¢„计完工时间
        createdate: '', // åˆ›å»ºæ—¶é—´
        datatype: 'ED', // æ—¶é—´ç±»åž‹
        timeValue: [], // æ—¶é—´å€¼
        prop: 'wo', // æŽ’序字段
        order: 'desc', // æŽ’序字段
        page: 1, // ç¬¬å‡ é¡µ
        rows: 20 // æ¯é¡µå¤šå°‘条
      },
      datatypePopoverIsShow: false,
      cycleTime: null, // æ—¶é—´å‘¨æœŸ
      cycleTimePopoverIsShow: false,
      erporderstusArr: [
        { code: 'NEW', name: '新订单' },
        { code: 'CREATING', name: '部分下达' },
@@ -601,9 +783,49 @@
      },
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() < Date.now() - 8.64e7
        }
        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])
            }
          }]
      },
      multipleSelection: []
@@ -626,34 +848,143 @@
    this.getHeight()
  },
  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
    },
    pickerChange(value) {
      console.log(value, 123)
      this.cycleTime = null
    },
    async getPrentOrganizationNoCompany() {
      const { data: res } = await PrentOrganizationNoCompany()
      this.wkshopcodeArr = res
    },
    async getErpOrderSearch() {
      console.log(this.form, 1)
      let tempDate2 = this.form.paystartdate
      if (tempDate2.length > 0) {
        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
      }
      let tempDate = this.form.payenddate
      if (tempDate.length > 0) {
        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      }
      // let tempDate2 = this.form.paystartdate
      // if (tempDate2.length > 0) {
      //   tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
      // }
      //
      // let tempDate = this.form.payenddate
      // if (tempDate.length > 0) {
      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      // }
      const data = {
        wkshopcode: this.form.wkshopcode,
        erporderstus: this.form.erporderstus, // è®¢å•状态码
        wkshopcode: this.form.wkshopcode, // è½¦é—´ç¼–码
        erpordercode: this.form.erpordercode, // è®¢å•编号
        saleordercode: this.form.saleordercode, // é”€å”®å•号
        partcode: this.form.partcode, // äº§å“ç¼–码
        partname: this.form.partname, // äº§å“åç§°
        partspec: this.form.partspec, // äº§å“è§„æ ¼
        paystartdate: tempDate2, // äº¤ä»˜æ—¶é—´
        payenddate: tempDate, // äº¤ä»˜æ—¶é—´
        saleordercode: this.form.saleordercode,
        datatype: this.form.datatype, // æ—¥æœŸç±»åž‹(计划开工(PS)、计划完工(PE)、预计交付(ED))
        searchdate: this.form.timeValue.join('~'), // æ—¶é—´æ®µ
        // paystartdate: tempDate2, // äº¤ä»˜æ—¶é—´
        // payenddate: tempDate, // äº¤ä»˜æ—¶é—´
        creatuser: this.form.creatuser, // åˆ›å»ºäººå‘˜
        // createdate: this.form.createdate.toString().length > 0 ? handleDatetime(this.form.createdate) : '', // åˆ›å»ºæ—¶é—´
        prop: this.form.prop, // æŽ’序字段
        order: this.form.order, // æŽ’序字段
@@ -725,6 +1056,9 @@
      this.form.creatuser = ''
      this.form.erpordercode = ''
      this.form.createdate = ''
      this.form.timeValue = []
      this.cycleTime = null
      this.getErpOrderSearch()
    },
    // å•选框选中获取当前行信息
@@ -970,6 +1304,29 @@
<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;
}
@@ -1106,7 +1463,8 @@
    margin-top: -3px;
  }
}
::v-deep .el-icon-delete  {
::v-deep .el-icon-delete {
  cursor: pointer;
  margin-right: 0px !important;
}
@@ -1123,5 +1481,11 @@
.el-loading-text {
  font-size: 26px !important;
}
.el-picker-panel__footer {
  display: flex !important;
  justify-content: flex-end !important;
}
</style>