| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | Component({    /**     * 组件的属性列表     */    properties: {        previewImgList: {            type: Array,            value: [],            observer: function(newVal) {                this.initializeImgIndex();            }        },        previewImg: {            type: String,            value: '',            observer: function(newVal) {                this.initializeImgIndex();            }        },        previewHideStatus: {            type: Boolean,            value: false        }    },    /**     * 组件的初始数据     */    data: {        index: 0,        imgindex: 1,        left: '0%',        scaleObj: {            scale: 1,            x: 0,            y: 0,            yes: true        },        touchS: [],        touchE: [],        preview_box_top: '0%' // 初始化预览框位置    },    lifetimes: {        detached: function () {            // 在组件实例被从页面节点树移除时执行        },        attached: async function () {            // 在组件实例进入页面节点树时执行            this.initializeImgIndex();        },    },    /**     * 组件的方法列表     */    methods: {        initializeImgIndex: function () {            const {                previewImgList,                previewImg            } = this.properties;            console.log(this.properties);            if (previewImgList.length > 0 && previewImg) {                const index = previewImgList.findIndex(img => img === previewImg);                if (index !== -1) {                    this.setData({                        index: index,                        imgindex: index + 1, // imgindex 从 1 开始                        left: '-' + index + '00%;transition: all 0s;'                    });                } else {                    // 如果没有找到,可以选择处理的逻辑,比如重置 index                    this.setData({                        index: 0,                        imgindex: 1,                        left: '0%;transition: all .5s;'                    });                }            }        },        touchStart: function (e) {            this.data.touchStartTime = e.timeStamp; // 时间点            let sx = e.touches[0].pageX;            let sy = e.touches[0].pageY;            this.data.touchS = [sx, sy];        },        touchMove: function (e) {            let start = this.data.touchS;            let sx = e.touches[0].pageX;            let sy = e.touches[0].pageY;            this.data.touchE = [sx, sy];        },        touchEnd: function (e) {            let start = this.data.touchS;            let end = this.data.touchE;            let scaleObj = this.data.scaleObj;            if (scaleObj.yes) {                if (end[0] === 0) {                    console.log('点击');                    this.jingzhi()                } else if ((start[0] < end[0] - 50) && (scaleObj.scale === 1 && scaleObj.x === 0 && scaleObj.y === 0)) {                    if (this.data.index > 0) {                        this.data.index -= 1;                        this.data.imgindex -= 1;                        this.updateView();                    }                } else if ((start[0] > end[0] + 50) && (scaleObj.scale === 1 && scaleObj.x === 0 && scaleObj.y === 0)) {                    if (this.data.index < this.data.previewImgList.length - 1) {                        this.data.index += 1;                        this.data.imgindex += 1;                        this.updateView();                    }                } else {                    console.log('下滑/上滑');                    // this.jingzhi()                }                this.data.touchE = [0, 0];            }            setTimeout(() => {                if (this.data.scaleObj.x === 0 && this.data.scaleObj.y === 0 && this.data.scaleObj.scale === 1) {                    this.data.scaleObj.yes = true;                }            }, 500);        },        updateView: function () {            this.setData({                index: this.data.index,                left: '-' + this.data.index + '00%;transition: all .5s;',                imgindex: this.data.imgindex            });        },        jingzhi: function () {            // 处理点击事件            console.log('点击图片');            this.setData({                preview_box_top: '0%',                previewHideStatus: false ,// 点击后重新显示预览框                previewImgList:[],                previewImg:''            });        }    }});
 |