vue 下列表侧滑操作实例代码详解
网络编程 2021-07-04 16:46www.168986.cn编程入门
本文通过实例代码给大家介绍了vue 下列表侧滑操作,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
由于是上线的项目且已经按照数据逻辑去渲染了能看懂的看逻辑吧。有点多
效果如图
<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="sActivityAlert = 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="sActivityAlert" @touchmove.prevent> <tipsBox title="操作提示" text1="是否停止当前活动" button1="取消" button2="确定" @confirm="sActivity" @cancel="sActivityAlert = 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 'ponents/tipsBox/TipsBox'; import {configs} from 'mon/js/config.js'; import {baseAjaxParam, baseAjaxErr} from 'mon/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, sActivityAlert: 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.mit('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.mit('popSet', {tips: '删除动成功', status: 0, time: 1500}); this.getActivityList(); } else { baseAjaxErr(this, res); } }).catch(function (err) { alert('服务器错误:' + err.status); console.log(err); }); }, // 停止活动 sActivity () { if (this.$store.state.roleId !== '0' && this.$store.state.roleId !== 'ROL197001010800007e4b5ce2fe28308' && this.$store.state.roleId !== 'ROL197001010800004ca4238a0b92382') { if (!this.$store.state.authList['AUT20180705181442eQbFSPyr7HTOKji']) { this.$store.mit('popSet', {tips: '无权限操作', status: 1, time: 1500}); return; } } this.sActivityAlert = 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.mit('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.mit('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.mit('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.mit('popSet', {tips: '无权限操作', status: 1, time: 1500}); return; } } this.$router.push('addAwardActivity'); } }, created () { this.getActivityList(); }, ponents: { TipsBox } }; </script> <style lang="stylus" rel="stylesheet/stylus"> @import '../../../mon/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-: cal(24) margin-bottom: cal(72) background: #fff text-align: center font-size: 0 margin- :cal(20) .icon-tianjia1 { color: #fe6f3f font-size: cal(54) vertical-align: margin-right: cal(12) } .text { line-height: cal(60) vertical-align: 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 : 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 下列表侧滑操作实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指