index.js
1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import { VantComponent } from '../common/component';
import { openType } from '../mixins/open-type';
VantComponent({
mixins: [openType],
props: {
show: Boolean,
title: String,
message: String,
useSlot: Boolean,
asyncClose: Boolean,
showCancelButton: Boolean,
closeOnClickOverlay: Boolean,
confirmButtonOpenType: String,
zIndex: {
type: Number,
value: 100
},
confirmButtonText: {
type: String,
value: '确认'
},
cancelButtonText: {
type: String,
value: '取消'
},
showConfirmButton: {
type: Boolean,
value: true
},
overlay: {
type: Boolean,
value: true
}
},
data: {
loading: {
confirm: false,
cancel: false
}
},
watch: {
show: function show(_show) {
!_show && this.stopLoading();
}
},
methods: {
onConfirm: function onConfirm() {
this.handleAction('confirm');
},
onCancel: function onCancel() {
this.handleAction('cancel');
},
onClickOverlay: function onClickOverlay() {
this.onClose('overlay');
},
handleAction: function handleAction(action) {
if (this.data.asyncClose) {
this.setData({
["loading." + action]: true
});
}
this.onClose(action);
},
close: function close() {
this.setData({
show: false
});
},
stopLoading: function stopLoading() {
this.setData({
loading: {
confirm: false,
cancel: false
}
});
},
onClose: function onClose(action) {
if (!this.data.asyncClose) {
this.close();
}
this.$emit('close', action);
this.$emit(action);
var callback = this.data[action === 'confirm' ? 'onConfirm' : 'onCancel'];
if (callback) {
callback(this);
}
}
}
});