| <template> | 
|     <view class="uni-popup-dialog"> | 
|         <view class="uni-dialog-title"> | 
|             <text class="uni-dialog-title-text" :class="['uni-popup__'+dialogType]">{{titleText}}</text> | 
|         </view> | 
|         <view v-if="mode === 'base'" class="uni-dialog-content"> | 
|             <slot> | 
|                 <text class="uni-dialog-content-text">{{content}}</text> | 
|             </slot> | 
|         </view> | 
|         <view v-else class="uni-dialog-content"> | 
|             <slot> | 
|                 <input class="uni-dialog-input" v-model="val" :type="inputType" :placeholder="placeholderText" :focus="focus" > | 
|             </slot> | 
|         </view> | 
|         <view class="uni-dialog-button-group"> | 
|             <view class="uni-dialog-button" @click="closeDialog"> | 
|                 <text class="uni-dialog-button-text">{{closeText}}</text> | 
|             </view> | 
|             <view class="uni-dialog-button uni-border-left" @click="onOk"> | 
|                 <text class="uni-dialog-button-text uni-button-color">{{okText}}</text> | 
|             </view> | 
|         </view> | 
|   | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     import popup from '../uni-popup/popup.js' | 
|     import { | 
|     initVueI18n | 
|     } from '@dcloudio/uni-i18n' | 
|     import messages from '../uni-popup/i18n/index.js' | 
|     const {    t } = initVueI18n(messages) | 
|     /** | 
|      * PopUp 弹出层-对话框样式 | 
|      * @description 弹出层-对话框样式 | 
|      * @tutorial https://ext.dcloud.net.cn/plugin?id=329 | 
|      * @property {String} value input 模式下的默认值 | 
|      * @property {String} placeholder input 模式下输入提示 | 
|      * @property {String} type = [success|warning|info|error] 主题样式 | 
|      *  @value success 成功 | 
|      *     @value warning 提示 | 
|      *     @value info 消息 | 
|      *     @value error 错误 | 
|      * @property {String} mode = [base|input] 模式、 | 
|      *     @value base 基础对话框 | 
|      *     @value input 可输入对话框 | 
|      * @property {String} content 对话框内容 | 
|      * @property {Boolean} beforeClose 是否拦截取消事件 | 
|      * @event {Function} confirm 点击确认按钮触发 | 
|      * @event {Function} close 点击取消按钮触发 | 
|      */ | 
|   | 
|     export default { | 
|         name: "uniPopupDialog", | 
|         mixins: [popup], | 
|         emits:['confirm','close'], | 
|         props: { | 
|             inputType:{ | 
|                 type: String, | 
|                 default: 'text' | 
|             }, | 
|             value: { | 
|                 type: [String, Number], | 
|                 default: '' | 
|             }, | 
|             placeholder: { | 
|                 type: [String, Number], | 
|                 default: '' | 
|             }, | 
|             type: { | 
|                 type: String, | 
|                 default: 'error' | 
|             }, | 
|             mode: { | 
|                 type: String, | 
|                 default: 'base' | 
|             }, | 
|             title: { | 
|                 type: String, | 
|                 default: '' | 
|             }, | 
|             content: { | 
|                 type: String, | 
|                 default: '' | 
|             }, | 
|             beforeClose: { | 
|                 type: Boolean, | 
|                 default: false | 
|             }, | 
|             cancelText:{ | 
|                 type: String, | 
|                 default: '' | 
|             }, | 
|             confirmText:{ | 
|                 type: String, | 
|                 default: '' | 
|             } | 
|         }, | 
|         data() { | 
|             return { | 
|                 dialogType: 'error', | 
|                 focus: false, | 
|                 val: "" | 
|             } | 
|         }, | 
|         computed: { | 
|             okText() { | 
|                 return this.confirmText || t("uni-popup.ok") | 
|             }, | 
|             closeText() { | 
|                 return this.cancelText || t("uni-popup.cancel") | 
|             }, | 
|             placeholderText() { | 
|                 return this.placeholder || t("uni-popup.placeholder") | 
|             }, | 
|             titleText() { | 
|                 return this.title || t("uni-popup.title") | 
|             } | 
|         }, | 
|         watch: { | 
|             type(val) { | 
|                 this.dialogType = val | 
|             }, | 
|             mode(val) { | 
|                 if (val === 'input') { | 
|                     this.dialogType = 'info' | 
|                 } | 
|             }, | 
|             value(val) { | 
|                 this.val = val | 
|             } | 
|         }, | 
|         created() { | 
|             // 对话框遮罩不可点击 | 
|             this.popup.disableMask() | 
|             // this.popup.closeMask() | 
|             if (this.mode === 'input') { | 
|                 this.dialogType = 'info' | 
|                 this.val = this.value | 
|             } else { | 
|                 this.dialogType = this.type | 
|             } | 
|         }, | 
|         mounted() { | 
|             this.focus = true | 
|         }, | 
|         methods: { | 
|             /** | 
|              * 点击确认按钮 | 
|              */ | 
|             onOk() { | 
|                 if (this.mode === 'input'){ | 
|                     this.$emit('confirm', this.val) | 
|                 }else{ | 
|                     this.$emit('confirm') | 
|                 } | 
|                 if(this.beforeClose) return | 
|                 this.popup.close() | 
|             }, | 
|             /** | 
|              * 点击取消按钮 | 
|              */ | 
|             closeDialog() { | 
|                 this.$emit('close') | 
|                 if(this.beforeClose) return | 
|                 this.popup.close() | 
|             }, | 
|             close(){ | 
|                 this.popup.close() | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style lang="scss" > | 
|     .uni-popup-dialog { | 
|         width: 300px; | 
|         border-radius: 11px; | 
|         background-color: #fff; | 
|     } | 
|   | 
|     .uni-dialog-title { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: row; | 
|         justify-content: center; | 
|         padding-top: 25px; | 
|     } | 
|   | 
|     .uni-dialog-title-text { | 
|         font-size: 16px; | 
|         font-weight: 500; | 
|     } | 
|   | 
|     .uni-dialog-content { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: row; | 
|         justify-content: center; | 
|         align-items: center; | 
|         padding: 20px; | 
|     } | 
|   | 
|     .uni-dialog-content-text { | 
|         font-size: 14px; | 
|         color: #6C6C6C; | 
|     } | 
|   | 
|     .uni-dialog-button-group { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|         flex-direction: row; | 
|         border-top-color: #f5f5f5; | 
|         border-top-style: solid; | 
|         border-top-width: 1px; | 
|     } | 
|   | 
|     .uni-dialog-button { | 
|         /* #ifndef APP-NVUE */ | 
|         display: flex; | 
|         /* #endif */ | 
|   | 
|         flex: 1; | 
|         flex-direction: row; | 
|         justify-content: center; | 
|         align-items: center; | 
|         height: 45px; | 
|     } | 
|   | 
|     .uni-border-left { | 
|         border-left-color: #f0f0f0; | 
|         border-left-style: solid; | 
|         border-left-width: 1px; | 
|     } | 
|   | 
|     .uni-dialog-button-text { | 
|         font-size: 16px; | 
|         color: #333; | 
|     } | 
|   | 
|     .uni-button-color { | 
|         color: #007aff; | 
|     } | 
|   | 
|     .uni-dialog-input { | 
|         flex: 1; | 
|         font-size: 14px; | 
|         border: 1px #eee solid; | 
|         height: 40px; | 
|         padding: 0 10px; | 
|         border-radius: 5px; | 
|         color: #555; | 
|     } | 
|   | 
|     .uni-popup__success { | 
|         color: #4cd964; | 
|     } | 
|   | 
|     .uni-popup__warn { | 
|         color: #f0ad4e; | 
|     } | 
|   | 
|     .uni-popup__error { | 
|         color: #dd524d; | 
|     } | 
|   | 
|     .uni-popup__info { | 
|         color: #909399; | 
|     } | 
| </style> |