zoukankan      html  css  js  c++  java
  • vue 自己写的一个日历

    样式:

    //quanbu全部代码

    <template>
      <div class="priceListContent clearfix">
        <!-- 顶部 批量设置 -->
        <div v-if="wylFlag"></div>
        <div class="btnContent" >
          <span class="btn" @click="setMorePrice" >批量设置</span>
          <!-- <span class="btn">重置</span> -->
        </div>
        <div class="dataContent" >
          <div class="dataMonthContent clearfix">
            <div> <span class="prev" @click="clickLeft"> {{ left }} </span> </div>
            <div class="monthList clearfix">
              <ul>
                <li v-for="(item,index) in newDate" :key="index" :class="{'active':item.type}" @click="changeMonth(newDate,index)">{{ item.month }}月</li>
              </ul>
            </div>
            <div> <span class="next" @click="clickRight">></span>  </div>
          </div>
          <div class="dataTypeContent clearfix">
            <ul>
              <li v-for="(item,index) in newDateType" :key="index">{{ item }}</li>
            </ul>
          </div>
          <div class="dataListContent clearfix">
            <ul class="clearfix">
              <li v-for="(item,indexq) in todayNum" :key="indexq" class="dataListContent_list_item">
                <div class="list_item_msg">
                  <div></div>
                  <div></div>
                  <div></div>
                </div>
                <div class="list_item_date"></div>
              </li>
              <li  v-for="(item,keys,indexs) in dateMsgNew" :key="indexs+ '-label'"  class="dataListContent_list_item" @click="setSinglePrice(item)">
                <!-- <div  v-if="item.msg.setPrice" @click="setSinglePrice(item)" > -->
                  <div class="list_item_msg" >
                    <div v-if="item.msg.price">¥ {{ item.msg.price }}</div>
                    <div style="height:25px;"></div>
                    <div v-if="item.msg.num">库存{{ item.msg.num }}</div>
                  </div>
                  <div class="list_item_date">{{ Number(keys)+1 }}</div>
                <!-- </div> -->
                <!-- <div v-else >
                  <div   class="list_item_msg">
                    <div v-if="item.msg.price">¥ {{ item.msg.price }}</div>
                    <div style="height:25px;"></div>
                    <div v-if="item.msg.num">余{{ item.msg.num }}</div>
                  </div>
                </div> -->
                 <div class="list_item_date">{{ Number(keys)+1 }}</div>
              </li>
            </ul>
          </div>
        </div>
        <!-- 设置当天价格信息 -->
        <div v-if="closedFlag" class="alertCont">
          <div class="alertBody">
            <div class="alertTitle">
              <span>设置价格</span>
              <span class="closed" @click="closed">x</span>
            </div>
            <div class="nowDate">
              <span style="100px;margin-right:10px;">设置日期</span>
              <span>{{singleDateMsg.msg.year}}</span> -
              <span>{{singleDateMsg.msg.month}}</span> -
              <span>{{singleDateMsg.msg.data}}</span>
            </div>
            <div class="alertWarper" style="padding: 20px 30px;">
              <el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="80px"  class="demo-ruleForm">
                <el-form-item label="市场价" prop="market_price">
                  <el-input type="text" v-model="ruleForm.market_price" autocomplete="off"></el-input>
                </el-form-item>
                <el-form-item label="建议价" prop="sell_price">
                  <el-input type="text" v-model="ruleForm.sell_price" autocomplete="off"></el-input>
                  <!-- <span class="fz12 color999">密码由8-20位字母、数字组合,区分大小写</span> -->
                </el-form-item>
                <el-form-item label="结算价" prop="price">
                  <el-input type="text" v-model="ruleForm.price" autocomplete="off"></el-input>
                </el-form-item>
                <el-form-item label="库存" prop="stock">
                  <el-input type="text" v-model="ruleForm.stock" autocomplete="off"></el-input>
                </el-form-item>
                <!-- <el-form-item> -->
                  <div style="height: 40px;line-height: 40px;text-align: center;">
                    <el-button style="padding:6px 15px;background-color: #3067e3;border: 1px solid #3067e3;" type="primary" @click="submitForm('ruleForm')">保存</el-button>
                    <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
                  </div>
                <!-- </el-form-item> -->
              </el-form>
            </div>
          </div>
        </div>
            <!-- piliang批量设置价格信息 -->
        <div v-if="closedAllFlag" class="alertContAll">
          <div class="alertBodyAll">
            <div class="alertTitleAll">
              <span>批量设置</span>
              <span class="closed" @click="closedAll">x</span>
            </div>
            <!-- <div class="nowDate">
              <span style="100px;margin-right:10px;">设置日期</span>
              <span>{{singleDateMsg.msg.year}}</span> -
              <span>{{singleDateMsg.msg.month}}</span> -
              <span>{{singleDateMsg.msg.data}}</span>
            </div> -->
            <div class="alertWarperAll" style="padding: 20px 30px;">
              <el-form :model="ruleFormAll" status-icon :rules="rulesAll" ref="ruleFormAll" label-width="80px"  class="demo-ruleForm">
                 <el-form-item label="日期范围" required>
                  <el-col :span="11">
                    <el-form-item prop="sdate">
                      <el-date-picker  type="date" placeholder="开始时间" v-model="ruleFormAll.sdate" :picker-options="pickerOptionsStart" style=" 100%;"></el-date-picker>
                    </el-form-item>
                  </el-col>
                  <el-col class="line" :span="2" style="text-aline:center;"></el-col>
                  <el-col :span="11">
                    <el-form-item prop="edate">
                      <el-date-picker  type="date" placeholder="结束时间" v-model="ruleFormAll.edate"  :picker-options="pickerOptionsEnd" style=" 100%;"></el-date-picker>
                      <!-- <el-time-picker placeholder="选择时间" v-model="ruleForm.date2" style=" 100%;"></el-time-picker> -->
                    </el-form-item>
                  </el-col>
                </el-form-item>
                <el-form-item label="设置星期" prop="selectWeeks" >
                  <el-checkbox   :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox>
                  <el-checkbox-group    v-model="ruleFormAll.selectWeeks" @change="handleCheckedCitiesChange">
                    <el-checkbox style="    padding-left: 20px;"  v-for="city in allWeeks" :label="city" :key="city">{{city}}</el-checkbox>
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="市场价" prop="market_price">
                  <el-input type="text" v-model="ruleFormAll.market_price" autocomplete="off"></el-input>
                </el-form-item>
                <el-form-item label="建议价" prop="sell_price">
                  <el-input type="text" v-model="ruleFormAll.sell_price" autocomplete="off"></el-input>
                  <!-- <span class="fz12 color999">密码由8-20位字母、数字组合,区分大小写</span> -->
                </el-form-item>
                <el-form-item label="结算价" prop="price">
                  <el-input type="text" v-model="ruleFormAll.price" autocomplete="off"></el-input>
                </el-form-item>
                <el-form-item label="库存" prop="stock">
                  <el-input type="text" v-model="ruleFormAll.stock" autocomplete="off"></el-input>
                </el-form-item>
                <!-- <el-form-item> -->
                  <div style="height: 40px;line-height: 40px;text-align: center;">
                    <el-button style="padding:6px 15px;background-color: #3067e3;border: 1px solid #3067e3;" type="primary" @click="submitFormAll('ruleFormAll')">保存</el-button>
                    <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
                  </div>
                <!-- </el-form-item> -->
              </el-form>
            </div>
          </div>
        </div>
        <alert-msg v-if="alertMsgFlag" :msg="alertMsg" />
      </div>
    </template>
    <script>
    import alertMsg from '@/components/alertMsg/alertMsg'
    import { getToken } from '@/utils/auth'
    import { getTimeNow, pricelist, setsku, batch } from '@/api/management/scenicManagementList/underwriter'
    //  const cityOptions = ['上海', '北京', '广州', '深圳'];
    export default {
      components:{
        alertMsg
      },
      data() {
        return {
          checkAll: false,
          // checkedCities: ['上海', '北京'],
          allWeeks: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
          isIndeterminate: false,
          wylFlag:false,
          newMsg: {},
          alertMsgFlag: false,
          alertMsg: '',
          singleDateMsg:{},
          closedFlag:false,
          closedAllFlag:false,
          left: '<',
          nowTime: '',
          newDate: [],
          todayNum: 0,
          Numl:0,
          Numr:0,
          dataNum: 0,
          newDateType: ['', '', '', '', '', '', ''],
          dateMsg: [
            [
              {
                date: '',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '1',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              }
            ],
            [
              {
                date: '2',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '3',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '4',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '5',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '6',
                msg: {
                  price: '',
                  num: '',
                  hasRoom: false
                }
              },
              {
                date: '7',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              },
              {
                date: '8',
                msg: {
                  price: '100',
                  num: '10',
                  hasRoom: true
                }
              }
            ]
          ],
          dateMsgNew:{
          },
          ruleForm: {
              token: '',
              id: '',
              stock: '',
              price: '',
              sell_price: '',
              market_price: '',
              date: '',
            },
          rules: {
            stock: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],
            price: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],
            sell_price: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],
            market_price: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ]
          },
          pickerOptionsStart: {
              disabledDate: (time) => {
                // console.log('time')
                // console.log(time)
                // console.log(this.ruleFormAll.edate)
              // if (this.ruleFormAll && this.ruleFormAll.edate !== '') {
                  // return time.getTime() < Date.now() - 8.64e7 || time.getTime() > this.endTime
                  // return  time.getTime() > this.endTime
              // } else {
                  //  console.log(this.nowTime)
                  // return time.getTime() < Date.now() - 1111118.64e7
                  return time.getTime() < Date.now() - 8.64e7
              // }
              }
          },
          pickerOptionsEnd: {
              disabledDate: (time) => {
              // if (this.ruleFormAll && this.ruleFormAll.sdate && this.ruleFormAll.sdate !== '') {
              //     return time.getTime() < this.param.sdate
              // } else {
                  // return time.getTime() < Date.now()
                  return time.getTime() < Date.now() - 8.64e7
              // }
              }
          },
          selectYear:'',
          selectMounth:'',
          ruleFormAll: {
              token: '',
              id: this.$route.query.id,
              stock: '',
              price: '',
              sell_price: '',
              market_price: '',
              edate: '',
              sdate:'',
              weeks:'',
              selectWeeks:[]
            },
          rulesAll: {
            stock: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],
            price: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],
            sell_price: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],
            market_price: [
              { required: true, message: '必填项不能为空', trigger: 'blur' }
            ],        
            sdate: [
                { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
              ],
            edate: [
                { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
              ],
            selectWeeks: [
              { type: 'array', required: true, message: '请至少选择一个星期', trigger: 'change' }
            ]
          }
        }
      },
      mounted() {
        this.init()
      },
      // watch: {
      //   dateMsgNew (val) {
      //     console.log(val)
      //     this.$nextTick(() => {
      //     this.dateMsgNew = val
      //   })
      //   }
      // },
      methods: {
        init() {
          getTimeNow().then((res) => {
            // console.log(res.data)
            this.nowTime = res.data.now.replace(/-/g, '/');
            this.initDate(this.nowTime,0,0)
          })
        },
        initDate(dateNow,num,index) {
          // this.nowTime = dateNow
          this.newDate = [];
            var nowdate = new Date(this.nowTime)
            const dataTimeNow = nowdate.setMonth(nowdate.getMonth()+num)
            const nowMonth = new Date(dataTimeNow).getMonth() +1
            const nowYear = new Date(dataTimeNow).getFullYear()
            // console.log(nowMonth)
            // console.log(nowYear)
            const leng = 12 - nowMonth < 7 ? 12 - nowMonth : 5
            // console.log(leng)
            // console.log(nowMonth)
            for (let i = 0; i <= leng; i++) {
              const params = {}
              params.month = nowMonth + i < 10 ? '0' + Number(nowMonth + i) : nowMonth + i
              params.year = nowYear
              if (i === 0) {
                params.type = true
              } else {
                params.type = false
              }
              this.newDate.push(params)
            }
            for (let i = 1; i < 6 - leng; i++) {
              const params = {}
              params.month = i < 10 ? '0' + i : i
              params.type = false
              params.year = nowYear+1
              this.newDate.push(params)
            }
            this.selectYear = this.newDate[0].year
            this.selectMounth = this.newDate[0].month
            this.getNowMounthDates(this.newDate[0].year,this.newDate[0].month)
          // console.log(this.newDate)
        },
        // 获取到当前月份有多少天
        getNowMounthDates(year,month){
          const dates = new Date(year,month,0)
          let nowdate = dates.getDate();
          const startTime = year + '-' + month + '-' + '01'
          const endTime = year + '-' + month + '-' + nowdate
          //获取到当前月份第一天是星期几
          var myDate=new Date();
          myDate.setFullYear(year,month-1,1);
          var week = myDate.getDay()
          this.todayNum = week
          const obj = {
            token: getToken(),
            page: 1,
            size: 100,
            id: this.$route.query.id,
            sdate: startTime,
            edate: endTime,
          }
          pricelist(obj).then((res) => {
            // console.log(res.data.data.list)
            this.dateMsgNew = {};
              for(let i = 0 ; i < nowdate ; i++ ){
                let flag = false;
                console.log(year)
                console.log(month)
                console.log(Number(i)+1)
                let days = i+1
                days = days < 10? '0'+days:days
                const nowNewSetData = year + '-' + month + '-' + days
                if(new Date(nowNewSetData).getTime() < new Date(this.nowTime).getTime()){
                  flag = false;
                }else{
                  flag = true;
                }
                this.dateMsgNew[i] = {
                  msg: {
                      price: '',
                      num: '',
                      year: year,
                      month: month,
                      data: i+1,
                      hasRoom: false,
                      setPrice: flag,
                    }
                }
              }
            this.$nextTick(() => {
              console.log(this.nowTime)
              res.data.data.list.forEach(element => {
              let key = element.date.split('-');
              let flag = false;
              if(new Date(element.date).getTime() < new Date(this.nowTime).getTime()){
                flag = false;
              }else{
                flag = true;
              }
              // console.log('---------')
              // console.log(this.selectYear === Number(key[0]))
              // console.log(this.selectMounth === key[1])
              // console.log(key)
              // console.log(this.selectYear)
              // console.log(this.selectMounth)
              if(Number(this.selectYear) === Number(key[0]) && Number(this.selectMounth) === Number(key[1])){
                // const obj ={
                //   msg: {
                //       sell_price: element.sell_price,
                //       market_price: element.market_price,
                //       price: element.price,
                //       num: element.stock,
                //       year: key[0],
                //       month: key[1],
                //       data: key[2],
                //       hasRoom: false,
                //       setPrice: flag,
                //     }
                // }
                // this.$set(this.dateMsgNew,key[2]-1,obj)
                this.dateMsgNew[key[2]-1] = {
                  msg: {
                      sell_price: element.sell_price,
                      market_price: element.market_price,
                      price: element.price,
                      num: element.stock,
                      year: key[0],
                      month: key[1],
                      data: key[2],
                      hasRoom: false,
                      setPrice: flag,
                    }
                }
              }
    
            })
            })
          })
          this.wylFlag = false;
          let _this = this
          window.setTimeout(function() {
          _this.wylFlag = true;
          },100)
          console.log(this.dateMsgNew)
        },
        changeMonth(val,index){
          // console.log(val)
          val.forEach(element => {
            element.type = false;
          });
          val[index].type = true;
          this.selectYear = val[index].year
          this.selectMounth = val[index].month
          this.getNowMounthDates(val[index].year,val[index].month)
        },
        clickLeft() {
          this.dataNum = this.dataNum - 6
          this.initDate(this.nowTime,this.dataNum)
        },
        clickRight() {
          this.dataNum = this.dataNum + 6
          this.initDate(this.nowTime,this.dataNum)
        },
        // setSinglePrice(val) {
        //   this.$emit('setSinglePrice', val)
        // },
        setMorePrice() {
          // console.log('asdsdfa')
          this.isIndeterminate = false,
            this.ruleFormAll= {
              token: '',
              id: this.$route.query.id,
              stock: '',
              price: '',
              sell_price: '',
              market_price: '',
              edate: '',
              sdate:'',
              weeks:'',
              selectWeeks:[]
            }
          this.closedAllFlag = true
        },
        setSinglePrice(val) {
          if(!val.msg.setPrice){
            this.$message({
              message: this.nowTime+'日期之前不能设置价格',
              type: 'warning'
            })
            return false;
          }
          this.singleDateMsg = { ...val }
          console.log(this.singleDateMsg)
    
          let dateT = this.singleDateMsg.msg.year + '-' + this.singleDateMsg.msg.month + '-' + this.singleDateMsg.msg.data
            this.ruleForm = {
              token: '',
              id: this.$route.query.id,
              stock: this.singleDateMsg.msg.num,
              price: this.singleDateMsg.msg.price,
              sell_price: this.singleDateMsg.msg.sell_price,
              market_price: this.singleDateMsg.msg.market_price,
              date: dateT,
            }
          this.closedFlag = true
        },
        closed() {
          this.closedFlag = false
        },
        closedAll() {
          this.closedAllFlag = false
        },
        submitForm(formName) {
          this.$refs[formName].validate((valid) => {
            if (valid) {
              
             setsku(this.ruleForm).then((res) => {
                // console.log(res.data)
                if(res.data.code === 0) {
                  this.alertMsg = res.data.msg
                  this.alertMsgFlag = true;
                  this.closedFlag = false
                  // this.wylFlag = false;
                  let _this = this
                  this.getNowMounthDates(this.singleDateMsg.msg.year,this.singleDateMsg.msg.month)
                  window.setTimeout(function() {
                    //  _this.wylFlag = true;
                    _this.alertMsgFlag = false;
                  },2000)
                }else{
                  this.alertMsg = res.data.msg
                  this.alertMsgFlag = true;
                  let _this = this
                  window.setTimeout(function() {
                    _this.alertMsgFlag = false;
                  },2000)
                }
              })
            } else {
              // console.log('error submit!!');
              return false;
            }
          });
        },
        submitFormAll(formName){
          this.$refs[formName].validate((valid) => {
            if (valid) {
              let weeksNew = []
              this.ruleFormAll.selectWeeks.forEach(element =>{
                switch(element){
                  case '周日':
                   weeksNew.push(0)
                  break;
                  case '周一':
                   weeksNew.push(1)
                  break;
                  case '周二':
                   weeksNew.push(2)
                  break;
                  case '周三':
                   weeksNew.push(3)
                  break;
                  case '周四':
                   weeksNew.push(4)
                  break;
                  case '周五':
                   weeksNew.push(5)
                  break;              
                  case '周六':
                   weeksNew.push(6)
                  break;
                }
              })
              this.ruleFormAll.weeks = weeksNew.join(',')
              let sdate = new Date(this.ruleFormAll.sdate)
              let edate = new Date(this.ruleFormAll.edate)
              // 
              let sDays = sdate.getFullYear() + '-' + Number(sdate.getMonth()+1)  + '-' + sdate.getDate()
              // 
              let edates = edate.getFullYear() + '-' +Number( edate.getMonth()+1)   + '-' + edate.getDate()
              // console.log(sdate.getFullYear())
              // console.log(sDays)
              // console.log(edates)
              const obj = {
                token: '',
                id: this.$route.query.id,
                stock: this.ruleFormAll.stock,
                price: this.ruleFormAll.price,
                sell_price: this.ruleFormAll.sell_price,
                market_price: this.ruleFormAll.market_price,
                edate: edates,
                sdate:sDays,
                weeks:this.ruleFormAll.weeks,
              }
             batch(obj).then((res) => {
                console.log(res.data)
                if(res.data.code === 0) {
                  this.alertMsg = res.data.msg
                  this.alertMsgFlag = true;
                  this.closedAllFlag = false
                  // this.wylFlag = false;
                  let _this = this
                  console.log(this.ruleFormAll.sdate)
                  const dates = new Date(this.ruleFormAll.sdate);
                  const year = dates.getFullYear()
                  const mounth = dates.getMonth()+1
                  console.log(this.newDate)
                  let indexNum = 0;
                  this.newDate.forEach((element,index) => {
                    if(Number(element.month) === Number(mounth)){
                      indexNum = index;
                    }
                  })
                  this.changeMonth(this.newDate,indexNum)
                  // this.getNowMounthDates(year,mounth)
                  window.setTimeout(function() {
                    //  _this.wylFlag = true;
                    _this.alertMsgFlag = false;
                  },2000)
                }else{
                  this.alertMsg = res.data.msg
                  this.alertMsgFlag = true;
                  let _this = this
                  window.setTimeout(function() {
                    _this.alertMsgFlag = false;
                  },2000)
                }
              })
            } else {
              // console.log('error submit!!');
              return false;
            }
          });
        },
        resetForm(formName) {
          this.$refs[formName].resetFields();
        },
        changePasswordClick(param) {
          changePassword(param).then((res) => {
            // console.log('changePassword')
            //  console.log(res)
             if(res.data.code === 0){
               this.alertMsg = res.data.msg
               this.alertMsgFlag = true;
               this.closedFlag = false;
               this.wylFlag = false;
               let _this = this
               window.setTimeout(function() {
                _this.alertMsgFlag = false;
                _this.wylFlag = true;
               },2000)
             }else{
               this.alertMsg = res.data.msg
               this.alertMsgFlag = true;
              //  this.closedFlag = false;
               let _this = this
               window.setTimeout(function() {
                _this.alertMsgFlag = false;
               },2000)
             }
    
          })
        },
        handleCheckAllChange(val) {
          console.log(val)
          console.log(this.ruleFormAll.selectWeeks)
          this.ruleFormAll.selectWeeks = val ? this.allWeeks : [];
          this.isIndeterminate = false;
        },
        handleCheckedCitiesChange(value) {
          console.log(value)
          let checkedCount = value.length;
          this.checkAll = checkedCount === this.allWeeks.length;
          this.isIndeterminate = checkedCount > 0 && checkedCount < this.allWeeks.length;
        }
      }
    }
    </script>
    <style scoped>
    
    .priceListContent{
        padding: 24px 0px 50px 34px;
        background-color: #ffffff;
        width: 100%;
        /* min- 1200px; */
    }
    .btnContent{
        text-align: right;
        width: 91%;
    }
    .btn{
        display: inline-block;
        border-radius: 4px;
        border: solid 1px #3067e3;
        height: 34px;
        line-height: 34px;
        color: #3067e3;
        padding: 0px 12px;
        cursor: pointer;
    }
    .dataContent{
        background-color: #ffffff;
       padding-top: 20px;
    }
    .dataTypeContent ul li:first-child{
        border-left: solid 1px #e5e5e5;
    }
    .dataTypeContent ul li:last-child{
        border-right: solid 1px #e5e5e5;
    }
    .dataMonthContent{
        width: 91%;
        height: 60px;
        line-height: 60px;
        background-color: #3067e3;
        text-align: center;
    }
    .dataMonthContent>div{
        display: inline-block;
        /* margin-right: 10px; */
        cursor: pointer;
        height: 60px;
        line-height: 60px;
        vertical-align: text-bottom;
    }
    .monthList ul li{
        float: left;
        color: #cacaca;
        font-size: 16px;
        width: 80px;
        text-align: center;
        cursor: pointer;
    }
    .monthList ul li.active{
        color: #ffffff;
    }
    .prev , .next{
        display: inline-block;
        width: 18px;
        height: 18px;
        line-height: 16px;
        text-align: center;
        border-radius: 9px;
        background-color: #ffffff;
        color: #3067e3;
    }
    .dataTypeContent{
        width: 100%;
    }
    .dataTypeContent ul li{
        float: left;
        width: 13%;
        color: #666666;
        text-align: center;
        font-size: 14px;
        height: 40px;
        line-height: 40px;
        background-color: #ffffff;
    }
    
    /* .dataListContent_list */
    .dataListContent {
        float: left;
        width: 100%;
    }
    /* .dataListContent_list */
    .dataListContent  .dataListContent_list_item {
        float: left;
        position: relative;
        width: 13%;
        color: #666666;
        text-align: center;
        font-size: 14px;
        height: 110px;
        line-height: 110px;
        background-color: #ffffff;
        border: solid 1px #e5e5e5;
        border-right: 0px;
        border-bottom: 0px;
    }
    /* .dataListContent_list */
    .dataListContent  .dataListContent_list_item:last-child {
        border-right: solid 1px #e5e5e5;
        /* border-bottom: solid 1px #e5e5e5; */
    }
    .dataListContent ul li:nth-child(7n){
      border-right: solid 1px #e5e5e5;
    }
    /* .dataListContent_list */
    .dataListContent:last-child .dataListContent_list_item{
        border-bottom: solid 1px #e5e5e5;
    }
    .list_item_msg{
        width: 100%;
        position: absolute;
        left: 0px;
        top: 10px;
    }
    .list_item_msg{
        width: 100%;
        height: 30px;
        line-height: 30px;
        text-align: left;
        padding-left:6px;
        color: #3067e3;
        font-size: 14px;
    }
    .list_item_date{
        position: absolute;
        right: 50px;
    }
    .alertCont{position: fixed;top: 0px;left: 0px;width:100%;height: 100%;background-color: rgba(0, 0, 0,0.4);z-index: 1111;}
    .alertBody{width: 380px;position: absolute;top: 50%;left: 50%;transform: translateX(-50%) translateY(-50%);border-radius: 10px;overflow: hidden;}
    .alertTitle{text-align: center;height: 50px;line-height: 80px;background-color: #ffffff;    color: #333333;font-size: 16px;position: relative;padding-left: 10px;}
    .closed{width: 40px;height: 40px;line-height: 40px;position: absolute;top: 0px;right: 0px;text-align: center;cursor: pointer;}
    .alertWarper{background-color: #ffffff;}
    .nowDate{
      background-color: #ffffff;
      height: 30px;
      line-height: 30px;
      font-size: 15px;
      font-weight: 600;
      color: #666666;
      padding: 0px 40px;
      padding-bottom: 40px;
      padding-top: 10px;
      margin-bottom: -20px;
    }
    .alertContAll{position: fixed;top: 0px;left: 0px;width:100%;height: 100%;background-color: rgba(0, 0, 0,0.4);z-index: 1111;}
    .alertBodyAll{width: 480px;position: absolute;top: 50%;left: 50%;transform: translateX(-50%) translateY(-50%);border-radius: 10px;overflow: hidden;}
    .alertTitleAll{text-align: center;height: 50px;line-height: 80px;background-color: #ffffff;    color: #333333;font-size: 16px;position: relative;padding-left: 10px;}
    .closedAll{width: 40px;height: 40px;line-height: 40px;position: absolute;top: 0px;right: 0px;text-align: center;cursor: pointer;}
    .alertWarperAll{background-color: #ffffff;}
    </style>
    <style>
      .el-form-item--medium .el-form-item__content {
        line-height: 36px;
        display: flex;
    }
    .el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
        background-color: #3067e3;
        border-color: #3067e3;
    }
    .el-checkbox__input.is-checked + .el-checkbox__label {
        color: #333333;
    }
    </style>
    View Code

    //分部

    1:获取服务器时间

        init() {
          getTimeNow().then((res) => {
            // console.log(res.data)
            this.nowTime = res.data.now.replace(/-/g, '/');
            this.initDate(this.nowTime,0,0)
          })
        }

    2:初始化当前导航月份

        initDate(dateNow,num,index) {
          // this.nowTime = dateNow
          this.newDate = [];
            var nowdate = new Date(this.nowTime)
            const dataTimeNow = nowdate.setMonth(nowdate.getMonth()+num)
            const nowMonth = new Date(dataTimeNow).getMonth() +1
            const nowYear = new Date(dataTimeNow).getFullYear()
            // console.log(nowMonth)
            // console.log(nowYear)
            const leng = 12 - nowMonth < 6 ? 12 - nowMonth : 5
            // console.log(leng)
            // console.log(nowMonth)
            for (let i = 0; i <= leng; i++) {
              const params = {}
              params.month = nowMonth + i < 10 ? '0' + Number(nowMonth + i) : nowMonth + i
              params.year = nowYear
              if (i === 0) {
                params.type = true
              } else {
                params.type = false
              }
              this.newDate.push(params)
            }
            for (let i = 1; i < 6 - leng; i++) {
              const params = {}
              params.month = i < 10 ? '0' + i : i
              params.type = false
              params.year = nowYear+1
              this.newDate.push(params)
            }
            this.selectYear = this.newDate[0].year
            this.selectMounth = this.newDate[0].month
            this.getNowMounthDates(this.newDate[0].year,this.newDate[0].month)
          // console.log(this.newDate)
        },

    3:获取到当前月有多少天

       getNowMounthDates(year,month){
          const dates = new Date(year,month,0)
          let nowdate = dates.getDate();
          const startTime = year + '-' + month + '-' + '01'
          const endTime = year + '-' + month + '-' + nowdate
          //获取到当前月份第一天是星期几
          var myDate=new Date();
          myDate.setFullYear(year,month-1,1);
          var week = myDate.getDay()
          this.todayNum = week
          const obj = {
            token: getToken(),
            page: 1,
            size: 100,
            id: this.$route.query.id,
            sdate: startTime,
            edate: endTime,
          }
          pricelist(obj).then((res) => {
            // console.log(res.data.data.list)
            this.dateMsgNew = {};
              for(let i = 0 ; i < nowdate ; i++ ){
                let flag = false;
                console.log(year)
                console.log(month)
                console.log(Number(i)+1)
                let days = i+1
                days = days < 10? '0'+days:days
                const nowNewSetData = year + '-' + month + '-' + days
                if(new Date(nowNewSetData).getTime() < new Date(this.nowTime).getTime()){
                  flag = false;
                }else{
                  flag = true;
                }
                this.dateMsgNew[i] = {
                  msg: {
                      price: '',
                      num: '',
                      year: year,
                      month: month,
                      data: i+1,
                      hasRoom: false,
                      setPrice: flag,
                    }
                }
              }
            this.$nextTick(() => {
              console.log(this.nowTime)
              res.data.data.list.forEach(element => {
              let key = element.date.split('-');
              let flag = false;
              if(new Date(element.date).getTime() < new Date(this.nowTime).getTime()){
                flag = false;
              }else{
                flag = true;
              }
              // console.log('---------')
              // console.log(this.selectYear === Number(key[0]))
              // console.log(this.selectMounth === key[1])
              // console.log(key)
              // console.log(this.selectYear)
              // console.log(this.selectMounth)
              if(Number(this.selectYear) === Number(key[0]) && Number(this.selectMounth) === Number(key[1])){
                // const obj ={
                //   msg: {
                //       sell_price: element.sell_price,
                //       market_price: element.market_price,
                //       price: element.price,
                //       num: element.stock,
                //       year: key[0],
                //       month: key[1],
                //       data: key[2],
                //       hasRoom: false,
                //       setPrice: flag,
                //     }
                // }
                // this.$set(this.dateMsgNew,key[2]-1,obj)
                this.dateMsgNew[key[2]-1] = {
                  msg: {
                      sell_price: element.sell_price,
                      market_price: element.market_price,
                      price: element.price,
                      num: element.stock,
                      year: key[0],
                      month: key[1],
                      data: key[2],
                      hasRoom: false,
                      setPrice: flag,
                    }
                }
              }
    
            })
            })
          })
          this.wylFlag = false;
          let _this = this
          window.setTimeout(function() {
          _this.wylFlag = true;
          },100)
          console.log(this.dateMsgNew)
        },

    4:点击导航切换月份

        changeMonth(val,index){
          // console.log(val)
          val.forEach(element => {
            element.type = false;
          });
          val[index].type = true;
          this.selectYear = val[index].year
          this.selectMounth = val[index].month
          this.getNowMounthDates(val[index].year,val[index].month)
        },
        clickLeft() {
          this.dataNum = this.dataNum - 6
          this.initDate(this.nowTime,this.dataNum)
        },
        clickRight() {
          this.dataNum = this.dataNum + 6
          this.initDate(this.nowTime,this.dataNum)
        },
  • 相关阅读:
    【GMT43智能液晶模块】例程十四:MODBUS TCP实验——电源监控
    【GM4008】GM4008升级固件发布(版本V4.2.1.1)
    【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验
    我将要离开,广州!
    带你Python入门,踏进人工智能领域
    您还差宝贝一张语文教学光盘!教你如何制作ISO文件
    数据采集之登录那些事
    潮汕七样羹之情
    劣湿为始《清明之冬》
    福利预告,跳一跳助手即将发布,您不知道还有这些...
  • 原文地址:https://www.cnblogs.com/lst619247/p/10944303.html
Copyright © 2011-2022 走看看