| | |
| | | <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' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | margin: false, |
| | | border: false |
| | | } |
| | | }, |
| | | watch: { |
| | | title(newVal) { |
| | | if (uni.report && 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" scoped> |
| | | .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> |
| | | <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'
|
| | | }
|
| | | },
|
| | | data() {
|
| | | return {
|
| | | margin: false,
|
| | | border: false
|
| | | }
|
| | | },
|
| | | watch: {
|
| | | title(newVal) {
|
| | | if (uni.report && 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" scoped>
|
| | | .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>
|