| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <template>
- <u-popup v-model="show" mode="bottom" closeable border-radius="14" safe-area-inset-bottom :duration="100">
- <!-- 内容列表 -->
- <view class="content-wrapper">
- <tabs :current="active" @change="changeTabs" height="100" :is-scroll="false" width="400rpx" :showBar="false" :async="isAsync">
- <tab name="宝贝">
- <goods @change="handleGoods" v-model="goodsData" :i="0" :index="active"></goods>
- </tab>
- <tab name="店铺">
- <shop @change="handleShop" v-model="shopData" :i="1" :index="active"></shop>
- </tab>
- </tabs>
- </view>
- <!-- 底部 -->
- <view class="recommend-footer flex">
- <button class="white br60 bg-primary btn" @click="confirm">确认</button>
- </view>
- </u-popup>
- </template>
- <script>
- import Goods from "./goods.vue"
- import Shop from "./shop.vue"
- export default {
- name: "recommend",
- components: {
- Goods,
- Shop
- },
- props: {
- value: {
- type: Boolean
- },
- goods: {
- type: [Object, Array]
- },
- shop: {
- type: [Object, Array]
- }
- },
- data() {
- return {
- list: [{
- name: '宝贝'
- }, {
- name: '店铺'
- }],
- active: 0,
- goodsData: [],
- shopData: [],
- isAsync: true // 是否异步
- }
- },
- computed: {
- // 弹窗Popup显示状态
- show: {
- get: function() {
- return this.value
- },
- set: function(value) {
- this.$emit('input', value)
- }
- }
- },
- watch: {
- goods(val) {
- this.active = 0;
- this.goodsData = val;
- console.log(this.goodsData)
- },
- shop(val) {
- this.active = 1;
- this.shopData = val
- }
- },
- methods: {
- changeTabs(event) {
- if(this.goodsData.length!=0 || this.shopData.length!=0) return this.$toast({title: '不能同时选择宝贝/店铺'})
- this.isAsync = false
- this.active = event
- this.isAsync = true
- },
- handleGoods(event) {
- this.goodsData = event;
- },
- handleShop(event) {
- this.shopData = event;
- },
- confirm() {
- if( this.active == 0 ) {
- this.$emit('change', {
- type: 0,
- data: this.goodsData
- })
- } else {
- this.$emit('change', {
- type: 1,
- data: this.shopData
- })
- }
- this.$emit('input', false)
- }
- }
- }
- </script>
- <style lang="scss">
- .bb {
- border-bottom: 1px solid $-color-body;
- }
- .content-wrapper {
- height: 900rpx;
- }
- .recommend-footer {
- width: 100%;
- height: 100rpx;
- padding: 0 30rpx;
- box-shadow: 0 -4rpx 10rpx rgba(#000000, .1);
- .btn {
- width: 100%;
- height: 82rpx;
- font-size: 32rpx;
- line-height: 82rpx;
- }
- }
- </style>
|