首页 > 编程 > JavaScript > 正文

vue 下列表侧滑操作实例代码详解

2019-11-19 13:25:24
字体:
来源:转载
供稿:网友

由于是上线的项目且已经按照数据逻辑去渲染了能看懂的看逻辑吧。有点多

效果如图

<template> <div class="lottery-management-wrapper">  <ul>   <li class="lottery-management-list-wrapper">    <div class="lottery-management-list" v-for="(item , index) in activityListData">     <div class="lottery-management-list-left" @click="detailOfTheActivity(item)">      <dl>       <dd>        <h3>{{item.activityName}}</h3>        <p>活动时间:{{item.beginTime}}至{{item.endTime}}</p>       </dd>       <dt :class="item.status == 3 ? 'txt-red': item.status == 0 ? 'txt-blue' : ''">{{item.status == 3 ? '进行中': item.status == 1 ? '已结束': item.status == 0 ? '待启用' : ''}}</dt>      </dl>     </div>     <div class="lottery-management-list-right">      <a @click="startActivityAlert = true;currentItem = item;currentIndex = index" v-if="item.status == 0">启用活动</a>      <span @click="delActivityAlert = true;currentItem = item;currentIndex = index" v-if="item.status == 1">删除活动</span>      <span @click="stopActivityAlert = true;currentItem = item;currentIndex = index" v-if="item.status == 3 || item.status == 0">结束活动</span>     </div>    </div>   </li>  </ul>  <div class="add-wrapper" @click="addAwardActivity">   <span class="iconfont icon-tianjia1"></span>   <span class="text">新增活动</span>  </div>  <h4>商户员工账号只有活动查看权限,没有活动操作权限</h4>  <transition name="fade">   <div class="mask-wrapper"      v-show="delActivityAlert"      @touchmove.prevent>    <tipsBox title="操作提示"         text1="是否删除当前活动"         button1="取消"         button2="确定"         @confirm="delActivity"         @cancel="delActivityAlert = false">    </tipsBox>   </div>  </transition>  <transition name="fade2">   <div class="mask-wrapper"      v-show="stopActivityAlert"      @touchmove.prevent>    <tipsBox title="操作提示"         text1="是否停止当前活动"         button1="取消"         button2="确定"         @confirm="stopActivity"         @cancel="stopActivityAlert = false">    </tipsBox>   </div>  </transition>  <transition name="fade3">   <div class="mask-wrapper"      v-show="startActivityAlert"      @touchmove.prevent>    <tipsBox title="操作提示"         text1="是否启用当前活动"         button1="取消"         button2="确定"         @confirm="startActivity"         @cancel="startActivityAlert = false">    </tipsBox>   </div>  </transition> </div></template><script> import TipsBox from 'components/tipsBox/TipsBox'; import {configs} from 'common/js/config.js'; import {baseAjaxParam, baseAjaxErr} from 'common/js/publicFn.js'; const activityListApi = configs.baseApi + '/marketing/rouletter/activityList'; const overActivityApi = configs.baseApi + '/marketing/rouletter/overActivity'; const delActivityApi = configs.baseApi + '/marketing/rouletter/delActivity'; const startActivityApi = configs.baseApi + '/marketing/rouletter/startActivity'; export default {  data () {   return {    delActivityAlert: false,    stopActivityAlert: false,    startActivityAlert: false,    activityListData: [],    currentItem: null,    currentIndex: null   };  },  methods: {   getActivityList () {    let data = baseAjaxParam(this);    this.$http.jsonp(activityListApi, {params: data}).then((res) => {     if (res.body.code === 0) {      this.activityListData = res.body.data;      this.setSlide();     } else {      baseAjaxErr(this, res);     }    }).catch(function (err) {     alert('服务器错误:' + err.status);     console.log(err);    });   },   setSlide () {    this.$nextTick(() => {     let list = document.getElementsByClassName('lottery-management-list');     if (list) {      if (this.currentIndex !== null) {       list[this.currentIndex].firstElementChild.style.marginLeft = '0';      }      for (let i = 0; i < list.length; i++) {       (() => {        let start = 0;        list[i].ontouchstart = function (e) {         start = e.touches[0].pageX;        };        list[i].ontouchmove = function () {         list[i].ontouchend = function (e) {          let end = e.changedTouches[0].pageX;          let rightWidth = list[i].lastElementChild.offsetWidth;          if (end < start) {           list[i].firstElementChild.style.marginLeft = -rightWidth + 'px';          }          if (end > start) {           list[i].firstElementChild.style.marginLeft = '0';          }         };        };       })(i);      }     }    });   },   // 查看详情   detailOfTheActivity (item) {    this.$router.push('/detailOfTheActivity?activityId=' + item.activityId);   },   // 删除活动   delActivity () {    if (this.$store.state.roleId !== '0' && this.$store.state.roleId !== 'ROL197001010800007e4b5ce2fe28308' && this.$store.state.roleId !== 'ROL197001010800004ca4238a0b92382') {     if (!this.$store.state.authList['AUT20180705181442eQbFSPyr7HTOKji']) {      this.$store.commit('popSet', {tips: '无权限操作', status: 1, time: 1500});      return;     }    }    this.delActivityAlert = false;    let data = baseAjaxParam(this);    data.activityId = this.currentItem.activityId;    this.$http.jsonp(delActivityApi, {params: data}).then((res) => {     if (res.body.code === 0) {      this.$store.commit('popSet', {tips: '删除动成功', status: 0, time: 1500});      this.getActivityList();     } else {      baseAjaxErr(this, res);     }    }).catch(function (err) {     alert('服务器错误:' + err.status);     console.log(err);    });   },   // 停止活动   stopActivity () {    if (this.$store.state.roleId !== '0' && this.$store.state.roleId !== 'ROL197001010800007e4b5ce2fe28308' && this.$store.state.roleId !== 'ROL197001010800004ca4238a0b92382') {     if (!this.$store.state.authList['AUT20180705181442eQbFSPyr7HTOKji']) {      this.$store.commit('popSet', {tips: '无权限操作', status: 1, time: 1500});      return;     }    }    this.stopActivityAlert = false;    let data = baseAjaxParam(this);    data.activityId = this.currentItem.activityId;    this.$http.jsonp(overActivityApi, {params: data}).then((res) => {     if (res.body.code === 0) {      this.$store.commit('popSet', {tips: '结束活动成功', status: 0, time: 1500});      this.getActivityList();     } else {      baseAjaxErr(this, res);     }    }).catch(function (err) {     alert('服务器错误:' + err.status);     console.log(err);    });   },   // 启用活动   startActivity () {    if (this.$store.state.roleId !== '0' && this.$store.state.roleId !== 'ROL197001010800007e4b5ce2fe28308' && this.$store.state.roleId !== 'ROL197001010800004ca4238a0b92382') {     if (!this.$store.state.authList['AUT20180705181442eQbFSPyr7HTOKji']) {      this.$store.commit('popSet', {tips: '无权限操作', status: 1, time: 1500});      return;     }    }    this.startActivityAlert = false;    let data = baseAjaxParam(this);    data.activityId = this.currentItem.activityId;    this.$http.jsonp(startActivityApi, {params: data}).then((res) => {     if (res.body.code === 0) {      this.$store.commit('popSet', {tips: '启用活动成功', status: 0, time: 1500});      this.getActivityList();     } else {      baseAjaxErr(this, res);     }    }).catch(function (err) {     alert('服务器错误:' + err.status);     console.log(err);    });   },   addAwardActivity () {    if (this.$store.state.roleId !== '0' && this.$store.state.roleId !== 'ROL197001010800007e4b5ce2fe28308' && this.$store.state.roleId !== 'ROL197001010800004ca4238a0b92382') {     if (!this.$store.state.authList['AUT20180705181442eQbFSPyr7HTOKji']) {      this.$store.commit('popSet', {tips: '无权限操作', status: 1, time: 1500});      return;     }    }    this.$router.push('addAwardActivity');   }  },  created () {   this.getActivityList();  },  components: {   TipsBox  } };</script><style lang="stylus" rel="stylesheet/stylus"> @import '../../../common/stylus/mixin' .lottery-management-wrapper {  width :100%;  position :absolute;  background-color :#ECF0F3;  min-height :100%;  .lottery-management-list-wrapper {   width :100%;   overflow hidden;   .lottery-management-list {    background-color :#fff;    margin-bottom cal(10);    overflow :hidden;    width :200%;    .lottery-management-list-left {     width :cal(750);     float :left;     transition: margin-left .4s;     dl {      overflow :hidden;      height :cal(128);      dd {       float left;       width :80%;       h3 {        font-size :cal(28);        color: #4A4A4A;        margin:cal(32) 0 0 cal(50);       }       p {        font-size : cal(18)        color:#4A4A4A;        margin:cal(16) 0 0 cal(50);       }      }      dt {       float :left;       width :20%;       color: #9B9B9B;       font-size :cal(26);       line-height :cal(128);      }      .txt-red {       color:#D0021B;      }      .txt-blue {       color:#4A90E2;      }     }    }    .lottery-management-list-right {     float :left;     overflow: hidden;     font-size :cal(24);     line-height :cal(128);     color :#ffffff;     text-align :center;     a {      float: left;      background-color :#70AEF6;      width :cal(190);      color :#ffffff;     }     span {      float: left;      width :cal(128);      background-color :#FE3A32;     }    }   }  }  .add-wrapper {   height: cal(100)   box-sizing: border-box   padding-top: cal(24)   margin-bottom: cal(72)   background: #fff   text-align: center   font-size: 0   margin-top :cal(20)   .icon-tianjia1 {    color: #fe6f3f    font-size: cal(54)    vertical-align: top    margin-right: cal(12)   }   .text {    line-height: cal(60)    vertical-align: top    color: #fe6f3f    font-size: cal(30)   }  }  h4 {   color: #D0021B;   font-size :cal(24);   text-align: center;   margin-bottom :cal(100);  }  .mask-wrapper {   position: fixed   left: 0   right: 0   bottom: 0   top: 0   background: rgba(0,0,0,.5)   &.fade-enter-active, &.fade-leave-active {    transition: all 0.2s linear   }   &.fade-enter,&.fade-leave-active{    opacity: 0   }   &.fade2-enter-active, &.fade2-leave-active {    transition: all 0.2s linear   }   &.fade2-enter,&.fade2-leave-active{    opacity: 0   }   &.fade3-enter-active, &.fade3-leave-active {    transition: all 0.2s linear   }   &.fade3-enter,&.fade3-leave-active{    opacity: 0   }  } }</style>

总结

以上所述是小编给大家介绍的vue 下列表侧滑操作实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表