diff --git a/src/uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue b/src/uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue index d7610037f..df2032256 100644 --- a/src/uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue +++ b/src/uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue @@ -127,8 +127,13 @@ // #ifndef APP-NVUE wxsInit(newValue, oldValue) { this.queryRect() - } + }, // #endif + status(newValue) { + if (newValue === 'open') { + this.parent && this.parent.setOpendItem(this) + } + } }, computed: { wxsInit() { diff --git a/src/uni_modules/uview-plus/components/u-swipe-action/props.js b/src/uni_modules/uview-plus/components/u-swipe-action/props.js index 6804294f7..29b14ef8a 100644 --- a/src/uni_modules/uview-plus/components/u-swipe-action/props.js +++ b/src/uni_modules/uview-plus/components/u-swipe-action/props.js @@ -6,6 +6,11 @@ export const props = defineMixin({ autoClose: { type: Boolean, default: () => defProps.swipeAction.autoClose + }, + // 是否存在打开的按钮组 + opendItem: { + type: Boolean, + default: false } } }) diff --git a/src/uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue b/src/uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue index 09e96fd02..1cc1ff6bc 100644 --- a/src/uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue +++ b/src/uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue @@ -35,6 +35,7 @@ return [this.autoClose] } }, + emits: ['opendItem:update'], watch: { // 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件 parentData() { @@ -45,6 +46,11 @@ }) } }, + opendItem(val) { + if (val == false) { + this.closeAll() + } + } }, created() { this.children = [] @@ -59,6 +65,15 @@ } }) } + }, + closeAll() { + // 关闭所有单元格 + this.children.map((item, index) => { + item.closeHandler() + }) + }, + setOpendItem(ins) { + this.$emit('opendItem:update', true) } } }