| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | <template>  <view v-if="width" :style="'width:'+width+';'+(square?'height:'+width:'')" class="uni-grid-item">    <view        :class="{ 'uni-grid-item--border': showBorder,  'uni-grid-item--border-top': showBorder && index < column, 'uni-highlight': highlight }"        :style="{'border-right-color': borderColor ,'border-bottom-color': borderColor ,'border-top-color': borderColor }"        class="uni-grid-item__box" @click="_onClick">      <slot/>    </view>  </view></template><script>/** * GridItem 宫格 * @description 宫格组件 * @tutorial https://ext.dcloud.net.cn/plugin?id=27 * @property {Number} index 子组件的唯一标识 ,点击gird会返回当前的标识 */export default {  name: 'UniGridItem',  inject: ['grid'],  props: {    index: {      type: Number,      default: 0    }  },  data() {    return {      column: 0,      showBorder: true,      square: true,      highlight: true,      left: 0,      top: 0,      openNum: 2,      width: 0,      borderColor: '#e5e5e5'    }  },  created() {    this.column = this.grid.column    this.showBorder = this.grid.showBorder    this.square = this.grid.square    this.highlight = this.grid.highlight    this.top = this.hor === 0 ? this.grid.hor : this.hor    this.left = this.ver === 0 ? this.grid.ver : this.ver    this.borderColor = this.grid.borderColor    this.grid.children.push(this)    // this.grid.init()    this.width = this.grid.width  },  beforeDestroy() {    this.grid.children.forEach((item, index) => {      if (item === this) {        this.grid.children.splice(index, 1)      }    })  },  methods: {    _onClick() {      this.grid.change({        detail: {          index: this.index        }      })    }  }}</script><style lang="scss">.uni-grid-item {  /* #ifndef APP-NVUE */  height: 100%;  display: flex;  /* #endif */  /* #ifdef H5 */  cursor: pointer;  /* #endif */}.uni-grid-item__box {  /* #ifndef APP-NVUE */  display: flex;  width: 100%;  /* #endif */  position: relative;  flex: 1;  flex-direction: column;  // justify-content: center;  // align-items: center;}.uni-grid-item--border {  position: relative;  /* #ifdef APP-NVUE */  border-bottom-color: #D2D2D2;  border-bottom-style: solid;  border-bottom-width: 0.5px;  border-right-color: #D2D2D2;  border-right-style: solid;  border-right-width: 0.5px;  /* #endif */  /* #ifndef APP-NVUE */  z-index: 0;  border-bottom: 1px #D2D2D2 solid;  border-right: 1px #D2D2D2 solid;  /* #endif */}.uni-grid-item--border-top {  position: relative;  /* #ifdef APP-NVUE */  border-top-color: #D2D2D2;  border-top-style: solid;  border-top-width: 0.5px;  /* #endif */  /* #ifndef APP-NVUE */  border-top: 1px #D2D2D2 solid;  z-index: 0;  /* #endif */}.uni-highlight:active {  background-color: #f1f1f1;}</style>
 |