| 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
 | | <template> |  |     <view class="uni-group" :class="['uni-group--'+mode ,margin?'group-margin':'']" :style="{marginTop: `${top}px` }"> |  |         <slot name="title"> |  |             <view v-if="title" class="uni-group__title" :style="{'padding-left':border?'30px':'15px'}"> |  |                 <text class="uni-group__title-text">{{ title }}</text> |  |             </view> |  |         </slot> |  |         <view class="uni-group__content" :class="{'group-conent-padding':border}"> |  |             <slot /> |  |         </view> |  |     </view> |  | </template> |  |   |  | <script> |  |     /** |  |      * Group 分组 |  |      * @description 表单字段分组 |  |      * @tutorial https://ext.dcloud.net.cn/plugin?id=3281 |  |      * @property {String} title 主标题 |  |      * @property {Number} top 分组间隔 |  |      * @property {Number} mode 模式 |  |      */ |  |     export default { |  |         name: 'uniGroup', |  |         emits:['click'], |  |         props: { |  |             title: { |  |                 type: String, |  |                 default: '' |  |             }, |  |             top: { |  |                 type: [Number, String], |  |                 default: 10 |  |             }, |  |             mode: { |  |                 type: String, |  |                 default: 'default' |  |             }, |  |             stat:{ |  |                 type: Boolean, |  |                 default: false |  |             } |  |         }, |  |         data() { |  |             return { |  |                 margin: false, |  |                 border: false |  |             } |  |         }, |  |         watch: { |  |             title(newVal) { |  |                 if (uni.report && this.stat && newVal !== '') { |  |                     uni.report('title', newVal) |  |                 } |  |             } |  |         }, |  |         created() { |  |             this.form = this.getForm() |  |             if (this.form) { |  |                 this.margin = true |  |                 this.border = this.form.border |  |             } |  |         }, |  |         methods: { |  |             /** |  |              * 获取父元素实例 |  |              */ |  |             getForm() { |  |                 let parent = this.$parent; |  |                 let parentName = parent.$options.name; |  |                 while (parentName !== 'uniForms') { |  |                     parent = parent.$parent; |  |                     if (!parent) return false |  |                     parentName = parent.$options.name; |  |                 } |  |                 return parent; |  |             }, |  |             onClick() { |  |                 this.$emit('click') |  |             } |  |         } |  |     } |  | </script> |  | <style lang="scss" > |  |     .uni-group { |  |         background: #fff; |  |         margin-top: 10px; |  |         // border: 1px red solid; |  |     } |  |   |  |     .group-margin { |  |         // margin: 0 -15px; |  |     } |  |   |  |     .uni-group__title { |  |         /* #ifndef APP-NVUE */ |  |         display: flex; |  |         /* #endif */ |  |         flex-direction: row; |  |         align-items: center; |  |         padding-left: 15px; |  |         height: 40px; |  |         background-color: #eee; |  |         font-weight: normal; |  |         color: #666; |  |     } |  |   |  |     .uni-group__content { |  |         padding: 15px; |  |         // padding-bottom: 5px; |  |         // background-color: #FFF; |  |     } |  |   |  |     .group-conent-padding { |  |         padding: 0 15px; |  |     } |  |   |  |     .uni-group__title-text { |  |         font-size: 14px; |  |         color: #666; |  |     } |  |   |  |     .distraction { |  |         flex-direction: row; |  |         align-items: center; |  |     } |  |   |  |     .uni-group--card { |  |         margin: 10px; |  |         border-radius: 5px; |  |         overflow: hidden; |  |         box-shadow: 0 0 5px 1px rgba($color: #000000, $alpha: 0.08); |  |     } |  | </style> | 
 |