uniapp实现左滑显示编辑删除按钮

 【使用时可删除不必要的内容,我就是记录一下】

方法一:详细借鉴(app):http://www.aliyue.net/10130.html

方法二:详细借鉴(微信小程序):https://blog.csdn.net/weixin_41579185/article/details/117747252?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-117747252-blog-123702049.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-117747252-blog-123702049.pc_relevant_aa&utm_relevant_index=3

 

<template>
    <view class="padding-sm">
        <view class=" flex justify-between margin-bottom-sm">
            <uni-easyinput style="flex:0.55" class="uni-mt-5" trim="all" placeholder="请输入内容"></uni-easyinput>
            <uni-data-select style="flex:0.4" v-model="value" :localdata="range" placeholder="请选择类型"></uni-data-select>
        </view>
        <view class="main">
            <view v-for="(item, index) in csListArrl" :key="index" :data-index="index" class="order-item"
                @touchstart="drawStart" @touchmove="drawMove" @touchend="drawEnd" :style="'right:'+item.right+'px'">
                <view class="content">
                    <view class="alarm_box1 flex flex-direction">
                        <view class="flex">
                            <image src="../../static/logo.png" mode="" class="alarm_iamge"></image>
                            <view class="flex flex-direction justify-between" style="flex: 1;">
                                <view class="flex justify-between align-end">
                                    <span class="alarm_name">体检</span>
                                    <span class="alarm_time">2024-05-07 16:00</span>
                                </view>
                                <view class="flex  align-end">
                                    <span class="alarm_phone margin-right-sm">类型:医疗</span>
                                    <span class="alarm_phone">状态:即将来到</span>
                                </view>
                                <view class="flex  align-end" style="width: 68vw;">
                                    <view class="alarm_phone Personnel_description">描述:Lorem, ipsum dolor sit amet
                                        consectetur adipisicing elit. Molestias, beatae quasi quidem doloribus ducimus
                                        possimus. Saepe consequatur, neque a molestias commodi deserunt sequi labore
                                        tenetur omnis ipsam ipsum molestiae voluptates.</view>
                                </view>
                            </view>
                        </view>
                    </view>
                </view>
                <view class="remove" @click="delData(item)">删除</view>
                <view class="edit" @click="editData(item)">编辑</view>
            </view>
        </view>

    </view>
</template>

<script>
    export default {
        data() {
            return { //列表数据,可根据自己的业务获取
                //列表数据,可根据自己的业务获取
                csListArrl: [{
                    name: '小A',
                    age: '18',
                    right: 0
                }],
                //左滑默认宽度
                delBtnWidth: 80,

                value: 0,
                range: [{
                        value: 0,
                        text: "篮球"
                    },
                    {
                        value: 1,
                        text: "足球"
                    },
                    {
                        value: 2,
                        text: "游泳"
                    },
                ],

            }
        },
        methods: {
            /* input(e) {
                console.log('输入内容:', e);
            },
            change(e) {
                console.log("e:", e);
            }, */ //开始触摸滑动
            //开始触摸滑动
            drawStart(e) {
                console.log("开始触发");
                var touch = e.touches[0];
                this.startX = touch.clientX;
            },
            //触摸滑动
            drawMove(e) {
                console.log("滑动");
                for (var index in this.csListArrl) {
                    this.$set(this.csListArrl[index], 'right', 0);
                }
                var touch = e.touches[0];
                var item = this.csListArrl[e.currentTarget.dataset.index];
                var disX = this.startX - touch.clientX;
                if (disX >= 20) {
                    if (disX > this.delBtnWidth) {
                        disX = this.delBtnWidth;
                    }
                    this.$set(this.csListArrl[e.currentTarget.dataset.index], 'right', disX);
                } else {
                    this.$set(this.csListArrl[e.currentTarget.dataset.index], 'right', 0);
                }
            },
            //触摸滑动结束
            drawEnd(e) {
                console.log("滑动结束");
                var item = this.csListArrl[e.currentTarget.dataset.index];
                if (item.right >= this.delBtnWidth / 2) {
                    this.$set(this.csListArrl[e.currentTarget.dataset.index], 'right', this.delBtnWidth*2);
                } else {
                    this.$set(this.csListArrl[e.currentTarget.dataset.index], 'right', 0);
                }
            },
            //删除方法
            delData(item) {
                console.log("删除")
                uni.showModal({
                    title: '提示',
                    content: "确认删除该日程?",
                    success: function(res) {
                        if (res.confirm) {
                            console.log('用户点击确定');
                        } else if (res.cancel) {
                            console.log('用户点击取消');
                        }
                    }
                });
            },
            editData(item) {
                uni.showModal({
                    title: '提示',
                    content: "确认编辑该日程?",
                    success: function(res) {
                        if (res.confirm) {
                            console.log('用户点击确定');
                        } else if (res.cancel) {
                            console.log('用户点击取消');
                        }
                    }
                });
            }
        }
    }
</script>

<style lang="scss" scoped>
    .main {
        width: 100%;
        height: auto;
        margin: 10px auto;
        overflow: hidden
    }

    .order-item {
        width: 100%;
        display: flex;
        position: relative;
        margin: 10px auto;
        align-items: right;
        flex-direction: row;
    }

    .content {
        width: 100%;
        // height: 100px;
        margin: 0 auto;
        border: 1px solid #C0C0C0;
    }

    .remove {
        width: 60px;
        right: -150px;
        margin-left: -5%;    
        height: 100%;
        background-color: red;
        color: #FFFFFF;
        position: absolute;
        top: 0;
        
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 16px;
        border-radius: 12rpx;
    }

    .edit {
        height: 100%;
        background-color: green;
        color: white;
        position: absolute;
        top: 0;
        width:60px;
        right: -80px;

        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 16px;
        border-radius: 12rpx;
    }
</style>

 

posted @ 2024-05-23 15:12  有只小菜猫  阅读(1385)  评论(0编辑  收藏  举报