123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <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>
|