| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- import { VantComponent } from '../common/component';
 
- import { button } from '../mixins/button';
 
- import { GRAY, RED } from '../common/color';
 
- import { toPromise } from '../common/utils';
 
- VantComponent({
 
-     mixins: [button],
 
-     props: {
 
-         show: {
 
-             type: Boolean,
 
-             observer(show) {
 
-                 !show && this.stopLoading();
 
-             },
 
-         },
 
-         title: String,
 
-         message: String,
 
-         theme: {
 
-             type: String,
 
-             value: 'default',
 
-         },
 
-         useSlot: Boolean,
 
-         className: String,
 
-         customStyle: String,
 
-         asyncClose: Boolean,
 
-         messageAlign: String,
 
-         beforeClose: null,
 
-         overlayStyle: String,
 
-         useTitleSlot: Boolean,
 
-         showCancelButton: Boolean,
 
-         closeOnClickOverlay: Boolean,
 
-         confirmButtonOpenType: String,
 
-         width: null,
 
-         zIndex: {
 
-             type: Number,
 
-             value: 2000,
 
-         },
 
-         confirmButtonText: {
 
-             type: String,
 
-             value: '确认',
 
-         },
 
-         cancelButtonText: {
 
-             type: String,
 
-             value: '取消',
 
-         },
 
-         confirmButtonColor: {
 
-             type: String,
 
-             value: RED,
 
-         },
 
-         cancelButtonColor: {
 
-             type: String,
 
-             value: GRAY,
 
-         },
 
-         showConfirmButton: {
 
-             type: Boolean,
 
-             value: true,
 
-         },
 
-         overlay: {
 
-             type: Boolean,
 
-             value: true,
 
-         },
 
-         transition: {
 
-             type: String,
 
-             value: 'scale',
 
-         },
 
-     },
 
-     data: {
 
-         loading: {
 
-             confirm: false,
 
-             cancel: false,
 
-         },
 
-         callback: (() => { }),
 
-     },
 
-     methods: {
 
-         onConfirm() {
 
-             this.handleAction('confirm');
 
-         },
 
-         onCancel() {
 
-             this.handleAction('cancel');
 
-         },
 
-         onClickOverlay() {
 
-             this.close('overlay');
 
-         },
 
-         close(action) {
 
-             this.setData({ show: false });
 
-             wx.nextTick(() => {
 
-                 this.$emit('close', action);
 
-                 const { callback } = this.data;
 
-                 if (callback) {
 
-                     callback(action, this);
 
-                 }
 
-             });
 
-         },
 
-         stopLoading() {
 
-             this.setData({
 
-                 loading: {
 
-                     confirm: false,
 
-                     cancel: false,
 
-                 },
 
-             });
 
-         },
 
-         handleAction(action) {
 
-             this.$emit(action, { dialog: this });
 
-             const { asyncClose, beforeClose } = this.data;
 
-             if (!asyncClose && !beforeClose) {
 
-                 this.close(action);
 
-                 return;
 
-             }
 
-             this.setData({
 
-                 [`loading.${action}`]: true,
 
-             });
 
-             if (beforeClose) {
 
-                 toPromise(beforeClose(action)).then((value) => {
 
-                     if (value) {
 
-                         this.close(action);
 
-                     }
 
-                     else {
 
-                         this.stopLoading();
 
-                     }
 
-                 });
 
-             }
 
-         },
 
-     },
 
- });
 
 
  |