| | |
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | isshow: false,
|
| | | viewWidth: 0,
|
| | | buttonWidth: 0,
|
| | | disabledView: false,
|
| | | x: 0,
|
| | | transition: false
|
| | | }
|
| | | },
|
| | | watch: {
|
| | | show(newVal) {
|
| | | if (this.autoClose) return
|
| | | if (newVal) {
|
| | | this.open()
|
| | | } else {
|
| | | this.close()
|
| | | }
|
| | | },
|
| | | },
|
| | | created() {
|
| | | if (this.swipeaction.children !== undefined) {
|
| | | this.swipeaction.children.push(this)
|
| | | }
|
| | | },
|
| | | beforeDestroy() {
|
| | | this.swipeaction.children.forEach((item, index) => {
|
| | | if (item === this) {
|
| | | this.swipeaction.children.splice(index, 1)
|
| | | }
|
| | | })
|
| | | },
|
| | | mounted() {
|
| | | this.isopen = false
|
| | | this.transition = true
|
| | | setTimeout(() => {
|
| | | this.getQuerySelect()
|
| | | }, 50)
|
| | |
|
| | | },
|
| | | methods: {
|
| | | onClick(index, item) {
|
| | | this.$emit('click', {
|
| | | content: item,
|
| | | index
|
| | | })
|
| | | },
|
| | | touchstart(e) {
|
| | | let {
|
| | | pageX,
|
| | | pageY
|
| | | } = e.changedTouches[0]
|
| | | this.transition = false
|
| | | this.startX = pageX
|
| | | if (this.autoClose) {
|
| | | this.swipeaction.closeOther(this)
|
| | | }
|
| | | },
|
| | | touchmove(e) {
|
| | | let {
|
| | | pageX,
|
| | | } = e.changedTouches[0]
|
| | | this.slide = this.getSlide(pageX)
|
| | | if (this.slide === 0) {
|
| | | this.disabledView = false
|
| | | }
|
| | |
|
| | | },
|
| | | touchend(e) {
|
| | | this.stop = false
|
| | | this.transition = true
|
| | | if (this.isopen) {
|
| | | if (this.moveX === -this.buttonWidth) {
|
| | | this.close()
|
| | | return
|
| | | }
|
| | | this.move()
|
| | | } else {
|
| | | if (this.moveX === 0) {
|
| | | this.close()
|
| | | return
|
| | | }
|
| | | this.move()
|
| | | }
|
| | | },
|
| | | open() {
|
| | | this.x = this.moveX
|
| | | this.$nextTick(() => {
|
| | | this.x = -this.buttonWidth
|
| | | this.moveX = this.x
|
| | | export default { |
| | | data() { |
| | | return { |
| | | isshow: false, |
| | | viewWidth: 0, |
| | | buttonWidth: 0, |
| | | disabledView: false, |
| | | x: 0, |
| | | transition: false |
| | | } |
| | | }, |
| | | watch: { |
| | | show(newVal) { |
| | | if (this.autoClose) return |
| | | if (newVal) { |
| | | this.open() |
| | | } else { |
| | | this.close() |
| | | } |
| | | }, |
| | | }, |
| | | created() { |
| | | if (this.swipeaction.children !== undefined) { |
| | | this.swipeaction.children.push(this) |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | this.swipeaction.children.forEach((item, index) => { |
| | | if (item === this) { |
| | | this.swipeaction.children.splice(index, 1) |
| | | } |
| | | }) |
| | | }, |
| | | mounted() { |
| | | this.isopen = false |
| | | this.transition = true |
| | | setTimeout(() => { |
| | | this.getQuerySelect() |
| | | }, 50) |
| | | |
| | | }, |
| | | methods: { |
| | | onClick(index, item) { |
| | | this.$emit('click', { |
| | | content: item, |
| | | index |
| | | }) |
| | | }, |
| | | touchstart(e) { |
| | | let { |
| | | pageX, |
| | | pageY |
| | | } = e.changedTouches[0] |
| | | this.transition = false |
| | | this.startX = pageX |
| | | if (this.autoClose) { |
| | | this.swipeaction.closeOther(this) |
| | | } |
| | | }, |
| | | touchmove(e) { |
| | | let { |
| | | pageX, |
| | | } = e.changedTouches[0] |
| | | this.slide = this.getSlide(pageX) |
| | | if (this.slide === 0) { |
| | | this.disabledView = false |
| | | } |
| | | |
| | | }, |
| | | touchend(e) { |
| | | this.stop = false |
| | | this.transition = true |
| | | if (this.isopen) { |
| | | if (this.moveX === -this.buttonWidth) { |
| | | this.close() |
| | | return |
| | | } |
| | | this.move() |
| | | } else { |
| | | if (this.moveX === 0) { |
| | | this.close() |
| | | return |
| | | } |
| | | this.move() |
| | | } |
| | | }, |
| | | open() { |
| | | this.x = this.moveX |
| | | this.$nextTick(() => { |
| | | this.x = -this.buttonWidth |
| | | this.moveX = this.x |
| | | |
| | | if(!this.isopen){ |
| | | this.isopen = true |
| | | this.$emit('change', true) |
| | | }
|
| | | })
|
| | | },
|
| | | close() {
|
| | | this.x = this.moveX
|
| | | this.$nextTick(() => {
|
| | | this.x = 0
|
| | | } |
| | | }) |
| | | }, |
| | | close() { |
| | | this.x = this.moveX |
| | | this.$nextTick(() => { |
| | | this.x = 0 |
| | | this.moveX = this.x |
| | | if(this.isopen){ |
| | | this.isopen = false |
| | | this.$emit('change', false) |
| | | }
|
| | | })
|
| | | },
|
| | | move() {
|
| | | if (this.slide === 0) {
|
| | | this.open()
|
| | | } else {
|
| | | this.close()
|
| | | }
|
| | | },
|
| | | onChange(e) {
|
| | | let x = e.detail.x
|
| | | this.moveX = x
|
| | | if (x >= this.buttonWidth) {
|
| | | this.disabledView = true
|
| | | this.$nextTick(() => {
|
| | | this.x = this.buttonWidth
|
| | | })
|
| | | }
|
| | | },
|
| | | getSlide(x) {
|
| | | if (x >= this.startX) {
|
| | | this.startX = x
|
| | | return 1
|
| | | } else {
|
| | | this.startX = x
|
| | | return 0
|
| | | }
|
| | |
|
| | | },
|
| | | getQuerySelect() {
|
| | | const query = uni.createSelectorQuery().in(this);
|
| | | query.selectAll('.viewWidth-hook').boundingClientRect(data => {
|
| | |
|
| | | this.viewWidth = data[0].width
|
| | | this.buttonWidth = data[1].width
|
| | | this.transition = false
|
| | | this.$nextTick(() => {
|
| | | this.transition = true
|
| | | })
|
| | |
|
| | | if (!this.buttonWidth) {
|
| | | this.disabledView = true
|
| | | }
|
| | |
|
| | | if (this.autoClose) return
|
| | | if (this.show) {
|
| | | this.open()
|
| | | }
|
| | | }).exec();
|
| | |
|
| | | }
|
| | | }
|
| | | } |
| | | }) |
| | | }, |
| | | move() { |
| | | if (this.slide === 0) { |
| | | this.open() |
| | | } else { |
| | | this.close() |
| | | } |
| | | }, |
| | | onChange(e) { |
| | | let x = e.detail.x |
| | | this.moveX = x |
| | | if (x >= this.buttonWidth) { |
| | | this.disabledView = true |
| | | this.$nextTick(() => { |
| | | this.x = this.buttonWidth |
| | | }) |
| | | } |
| | | }, |
| | | getSlide(x) { |
| | | if (x >= this.startX) { |
| | | this.startX = x |
| | | return 1 |
| | | } else { |
| | | this.startX = x |
| | | return 0 |
| | | } |
| | | |
| | | }, |
| | | getQuerySelect() { |
| | | const query = uni.createSelectorQuery().in(this); |
| | | query.selectAll('.viewWidth-hook').boundingClientRect(data => { |
| | | |
| | | this.viewWidth = data[0].width |
| | | this.buttonWidth = data[1].width |
| | | this.transition = false |
| | | this.$nextTick(() => { |
| | | this.transition = true |
| | | }) |
| | | |
| | | if (!this.buttonWidth) { |
| | | this.disabledView = true |
| | | } |
| | | |
| | | if (this.autoClose) return |
| | | if (this.show) { |
| | | this.open() |
| | | } |
| | | }).exec(); |
| | | |
| | | } |
| | | } |
| | | } |