From c9500005b7b8ef9499852faf9765e8a13445daa8 Mon Sep 17 00:00:00 2001 From: DCloud_LXH <283700113@qq.com> Date: Mon, 11 Oct 2021 18:39:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20showModal=20=E6=94=AF=E6=8C=81=20editab?= =?UTF-8?q?le=20=E9=85=8D=E7=BD=AE=E8=BE=93=E5=85=A5=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app-plus/service/api/ui/popup.js | 27 +++++++++---- .../h5/components/app/popup/mixins/modal.js | 6 +-- .../h5/components/app/popup/modal.vue | 40 ++++++++++++++++++- src/platforms/h5/service/api/ui/popup.js | 8 ++-- 4 files changed, 63 insertions(+), 18 deletions(-) diff --git a/src/platforms/app-plus/service/api/ui/popup.js b/src/platforms/app-plus/service/api/ui/popup.js index ac8f73014..676f047fb 100644 --- a/src/platforms/app-plus/service/api/ui/popup.js +++ b/src/platforms/app-plus/service/api/ui/popup.js @@ -121,24 +121,35 @@ export function showModal ({ cancelText, cancelColor, confirmText, - confirmColor + confirmColor, + editable = false, + placeholderText = '' } = {}, callbackId) { + // TODO 在 editable 为 true 时,content 应该是输入框中可修改内容。后续找客户端商量。 + const buttons = showCancel ? [cancelText, confirmText] : [confirmText] + const tip = editable ? placeholderText : buttons + content = content || ' ' - plus.nativeUI.confirm(content, (e) => { + plus.nativeUI[editable ? 'prompt' : 'confirm'](content, (e) => { if (showCancel) { - invoke(callbackId, { + const isConfirm = e.index === 1 + const res = { errMsg: 'showModal:ok', - confirm: e.index === 1, + confirm: isConfirm, cancel: e.index === 0 || e.index === -1 - }) + } + isConfirm && editable && (res.content = e.value) + invoke(callbackId, res) } else { - invoke(callbackId, { + const res = { errMsg: 'showModal:ok', confirm: e.index === 0, cancel: false - }) + } + editable && (res.content = e.value) + invoke(callbackId, res) } - }, title, showCancel ? [cancelText, confirmText] : [confirmText]) + }, title, tip, buttons) } export function showActionSheet ({ itemList = [], diff --git a/src/platforms/h5/components/app/popup/mixins/modal.js b/src/platforms/h5/components/app/popup/mixins/modal.js index 0aca27af0..18fa3dbbd 100644 --- a/src/platforms/h5/components/app/popup/mixins/modal.js +++ b/src/platforms/h5/components/app/popup/mixins/modal.js @@ -21,9 +21,9 @@ export default { }, methods: { // 处理 modal close 回调 - _onModalClose (type) { + _onModalClose (res) { this.showModal.visible = false - isFn(this.onModalCloseCallback) && this.onModalCloseCallback(type) + isFn(this.onModalCloseCallback) && this.onModalCloseCallback(res) } } -} +} diff --git a/src/platforms/h5/components/app/popup/modal.vue b/src/platforms/h5/components/app/popup/modal.vue index 44e111dd9..7d645a74f 100644 --- a/src/platforms/h5/components/app/popup/modal.vue +++ b/src/platforms/h5/components/app/popup/modal.vue @@ -15,7 +15,16 @@ v-text="title" /> +