diff --git a/src/platforms/app-plus/service/api/ui/popup.js b/src/platforms/app-plus/service/api/ui/popup.js index ac8f73014e1e9c11e01a3427dfe959b63f033c72..676f047fbcde8e57c17021419b837591edecd566 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 0aca27af0ffd00ae568adec06189c579cd94f422..18fa3dbbdd0a8f4911847895386a6eae56d5fa0c 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 44e111dd9dbc09957e996012ca385748548cb19e..7d645a74fbc93b7a847e21cc99baa601c25be200 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" /> +
@@ -86,11 +95,25 @@ export default { visible: { type: Boolean, default: false + }, + editable: { + type: Boolean, + default: false + }, + placeholderText: { + type: String, + default: '' } }, methods: { _close (type) { - this.$emit('close', type) + const res = { + [type]: true + } + if (this.editable && type === 'confirm') { + res.content = this.$refs.editContent.value + } + this.$emit('close', res) } } } @@ -156,6 +179,19 @@ export default { overflow-y: auto; } + uni-modal .uni-modal__textarea { + resize: none; + border: 0; + margin: 0; + width: 90%; + padding: 10px; + font-size: 20px; + outline: none; + border: none; + background-color: #eee; + text-decoration: inherit; +} + uni-modal .uni-modal__ft { position: relative; line-height: 48px; diff --git a/src/platforms/h5/service/api/ui/popup.js b/src/platforms/h5/service/api/ui/popup.js index 320c68fe55097393d346c29404af9dfd14a1b9c7..779a6c93b3ca9ebf1cf964e8881665a55736c9be 100644 --- a/src/platforms/h5/service/api/ui/popup.js +++ b/src/platforms/h5/service/api/ui/popup.js @@ -4,10 +4,8 @@ const { } = UniServiceJSBridge export function showModal (args, callbackId) { - emit('onShowModal', args, function (type) { - invoke(callbackId, { - [type]: true - }) + emit('onShowModal', args, function (res) { + invoke(callbackId, res) }) } @@ -43,4 +41,4 @@ export function showActionSheet (args, callbackId) { }) } }) -} +}