browseItem.vue 8.77 KB
Newer Older
Zheng Shang Jun's avatar
Zheng Shang Jun committed
1
<template>
2
  <!-- 浏览记录组件和收藏 -->
Zheng Shang Jun's avatar
Zheng Shang Jun committed
3
  <view class="browse">
4 5 6 7 8
    <u-card
      :head-border-bottom="false"
      v-for="(item, index) in list"
      :key="index"
    >
Zheng Shang Jun's avatar
Zheng Shang Jun committed
9 10 11
      <!-- 头部 -->
      <view slot="head">
        <view>
12
          <!-- 全选框 -->
13 14 15 16 17 18 19 20 21
          <u-icon
            :name="
              checkSelect(item) ? 'checkmark-circle-fill' : 'checkmark-circle'
            "
            v-if="edit"
            class="checkstyle"
            @click="allcheckFn(item)"
          ></u-icon>
          <slot v-bind:title="item"></slot>
Zheng Shang Jun's avatar
Zheng Shang Jun committed
22 23 24 25 26
        </view>
      </view>
      <!-- 主体 -->
      <view slot="body">
        <u-swipe-action
27 28 29 30 31
          :show="elData.show"
          v-for="(elData, indexs) in item.browseChild"
          :index="indexs"
          :key="indexs"
          @click="() => sliderClick(indexs, item.browseChild)"
Zheng Shang Jun's avatar
Zheng Shang Jun committed
32 33 34 35 36
          @open="open"
          :options="options"
        >
          <view class="item u-border-bottom">
            <!-- 多选框 -->
37 38 39 40 41 42 43 44 45 46
            <u-icon
              :name="
                selectedIds.indexOf(elData.id) > -1
                  ? 'checkmark-circle-fill'
                  : 'checkmark-circle'
              "
              v-if="edit"
              class="checkstyle"
              @click="selectItem(elData)"
            ></u-icon>
Zheng Shang Jun's avatar
Zheng Shang Jun committed
47
            <!-- 照片 -->
48 49
            <image
              class="imges"
50
              :src="`${imgUrl}${elData.originalImageCode}`"
51
            />
Zheng Shang Jun's avatar
Zheng Shang Jun committed
52 53
            <!-- 此层wrap在此为必写的,否则可能会出现标题定位错误 -->
            <view class="title-wrap">
54
              <view class="title">{{ elData.styleTag }}</view>
Zheng Shang Jun's avatar
Zheng Shang Jun committed
55 56 57
              <!-- 款号 -->
              <view class="modelno">
                <text class="textStyle1">款号</text>
58
                <text class="textStyle2">{{ elData.styleCode }}</text>
Zheng Shang Jun's avatar
Zheng Shang Jun committed
59 60 61
                <!-- 是否需要爱心 -->
                <view v-if="isbrowse">
                  <image
62 63 64
                    @click="browerClick(elData)"
                    src="@/static/images/brank/blackxin.png"
                    v-if="!elData.isFavorite"
Zheng Shang Jun's avatar
Zheng Shang Jun committed
65 66
                  ></image>
                  <image
67
                    @click="browerClick(elData)"
Zheng Shang Jun's avatar
Zheng Shang Jun committed
68 69 70 71 72 73 74 75
                    src="@/static/images/brank/lightxin.png"
                    v-else
                  ></image>
                </view>
              </view>
              <!-- 面料 -->
              <view class="fabric">
                <text class="textStyle1">面料</text>
76
                <text class="textStyle2">{{ elData.materialName }}</text>
Zheng Shang Jun's avatar
Zheng Shang Jun committed
77 78 79 80 81 82
              </view>
            </view>
          </view>
        </u-swipe-action>
      </view>
    </u-card>
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

    <!-- 弹出框 -->
    <view class="posi" v-show="edit">
      <view class="pop-up">
        <!-- <u-checkbox-group class="checkStyle">
          <u-checkbox v-model="playCheckout" name="全选" shape="circle"
            >全选</u-checkbox
          >
        </u-checkbox-group> -->
        <u-icon
          :name="playCheckout ? 'checkmark-circle-fill' : 'checkmark-circle'"
          class="checkstyles"
          size="42"
          @click="outsideChecked"
        ></u-icon>

        <u-button size="mini" class="bttn" @click="cancelCollection"
          >取消收藏</u-button
        >
      </view>
    </view>
Zheng Shang Jun's avatar
Zheng Shang Jun committed
104 105 106 107 108 109
  </view>
</template>

<script>
export default {
  props: {
110
    //是否显示爱心
Zheng Shang Jun's avatar
Zheng Shang Jun committed
111 112 113 114
    isbrowse: {
      type: Boolean,
      default: false,
    },
115
    // 点击编辑的时候的显隐
Zheng Shang Jun's avatar
Zheng Shang Jun committed
116 117 118 119
    edit: {
      type: Boolean,
      default: false,
    },
120
    // 数据
Zheng Shang Jun's avatar
Zheng Shang Jun committed
121 122 123 124 125
    list: { type: Array },
    options: { type: Array },
  },
  data() {
    return {
126 127 128 129
      islove: false, // 爱心的黑暗显影
      imgUrl: this.$IMG_URL, // 图片前面的url
      selected: [], // 判断全选单选这些东西的
      // playCheckout: false, // 弹出全选
Zheng Shang Jun's avatar
Zheng Shang Jun committed
130 131
    };
  },
132 133 134 135 136 137 138 139 140 141 142 143 144 145
  computed: {
    selectedIds() {
      return this.selected.map((item) => item.id);
    },
    //监听外部全选值
    playCheckout() {
      let len = this.list.map((el) => {
        return el.browseChild;
      });
      if (this.selected.length == len.flat().length) {
        return true;
      }
    },
  },
Zheng Shang Jun's avatar
Zheng Shang Jun committed
146
  methods: {
147 148 149 150 151 152 153
    //判断全选按钮是否选中
    checkSelect(tree) {
      let childrenIds = tree.browseChild.map((item) => item.id);
      return (
        new Set(this.selectedIds.concat(childrenIds)).size ===
        this.selected.length
      );
Zheng Shang Jun's avatar
Zheng Shang Jun committed
154
    },
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187
    // 多选
    allcheckFn(item) {
      //判断全选是否被选中
      if (!this.checkSelect(item)) {
        this.selected = this.selected.concat(
          item.browseChild.filter(
            ($item) => this.selectedIds.indexOf($item.id) === -1
          )
        );
      } else {
        let removeData = item.browseChild.map((item) => item.id);
        // this.selected = this.selected.concat(
        //     item.children.filter(($item) => this.selectedIds.indexOf($item.id) === -1)
        // );
        this.selected = this.selected.filter(
          (item) => removeData.indexOf(item.id) === -1
        );
      }
    },
    // 单选
    selectItem(item) {
      let index = this.selectedIds.indexOf(item.id);
      if (index > -1) {
        this.selected.splice(index, 1);
      } else {
        this.selected.push(item);
      }
    },
    // 取消收藏按钮
    cancelCollection() {
      let idItem = this.selected.map((el) => {
        return el.id;
      });
Zheng Shang Jun's avatar
Zheng Shang Jun committed
188
      this.unCollectionFn(idItem);
189 190 191 192 193
    },
    // 外部全选按钮
    outsideChecked() {
      if (this.playCheckout == true) {
        this.selected = [];
Zheng Shang Jun's avatar
Zheng Shang Jun committed
194
      } else {
195 196 197 198
        let len = this.list.map((el) => {
          return el.browseChild;
        });
        this.selected = len.flat();
Zheng Shang Jun's avatar
Zheng Shang Jun committed
199 200
      }
    },
201 202 203 204 205 206 207 208 209
    //收藏款式接口
    collectionFn(item) {
      this.$http("mobileBrand.styleCollect", { id: item }).then((res) => {
        if (res.code == 200) {
          this.$emit("update");
        }
      });
    },
    //取消款式接口
Zheng Shang Jun's avatar
Zheng Shang Jun committed
210 211
    unCollectionFn(param) {
      // let param = [item];
212 213 214 215 216 217 218 219 220 221
      this.$http("mobileBrand.cancelCollect", param).then((res) => {
        if (res.code == 200) {
          this.$emit("update");
        }
      });
    },
    // 爱心点击
    browerClick(item) {
      if (item.isFavorite == true) {
        this.$u.toast(`已取消收藏`);
Zheng Shang Jun's avatar
Zheng Shang Jun committed
222
        this.unCollectionFn([item.id]);
223 224 225 226 227 228 229 230
      } else {
        this.$u.toast(`已收藏款式`);
        this.collectionFn(item.id);
      }
    },
    //滑动删除的东西
    sliderClick(indexs, item) {
      let itemId = item[indexs].id;
Zheng Shang Jun's avatar
Zheng Shang Jun committed
231
      this.unCollectionFn([itemId]);
232
    },
Zheng Shang Jun's avatar
Zheng Shang Jun committed
233
    // 如果打开一个的时候,不需要关闭其他,则无需实现本方法
234
    // 没做目前没用
Zheng Shang Jun's avatar
Zheng Shang Jun committed
235 236 237 238 239 240 241 242 243 244 245 246 247 248
    open(index) {
      // 先将正在被操作的swipeAction标记为打开状态,否则由于props的特性限制,
      // 原本为'false',再次设置为'false'会无效
      this.list[index].show = true;
      this.list.map((val, idx) => {
        if (index != idx) this.list[idx].show = false;
      });
    },
  },
  components: {},
};
</script>

<style lang="scss" scoped>
249 250 251 252 253 254
// 选项
.checkstyle {
  font-size: 42rpx;
  margin-right: 10rpx;
}

Zheng Shang Jun's avatar
Zheng Shang Jun committed
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319
.browse {
  ::v-deep .u-card__body {
    padding-top: 29rpx !important;
  }
  ::v-deep .u-card__head {
    padding-bottom: 0rpx !important;
  }
}
.item {
  display: flex;
  padding: 20rpx;
}

.imges {
  width: 162rpx;
  height: 162rpx;
  margin-right: 20rpx;
  border-radius: 12rpx;
}

.title {
  width: 440rpx;
  font-size: 28rpx;
  height: 40rpx;
  line-height: 40rpx;
  font-family: PingFangSC, PingFangSC-Medium;
  font-weight: 700;
  text-align: left;
  color: #333333;

  overflow: hidden; /*超出部分隐藏*/
  white-space: nowrap; /*禁止换行*/
  text-overflow: ellipsis;
}
//头部时间图标
.browseicon {
  width: 32rpx;
}
//头部时间
.browseTime {
  width: 252rpx;
  height: 32rpx;
  font-size: 32rpx;
  font-family: PingFangSC, PingFangSC-Regular;
  font-weight: 400;
  color: rgba(0, 0, 0, 1);
  margin-left: 10rpx;
}
// 款号
.modelno {
  height: 40rpx;
  margin-top: 16rpx;
  display: flex;
  position: relative;
  image {
    height: 40rpx;
    width: 45rpx;
    position: absolute;
    right: 29rpx;
  }
}
//面料
.fabric {
  margin-top: 6rpx;
}
320
//款号面料
Zheng Shang Jun's avatar
Zheng Shang Jun committed
321 322 323 324 325 326 327 328 329 330
.textStyle1 {
  color: rgba(0, 0, 0, 0.4);
}
.textStyle2 {
  margin-left: 40rpx;
  font-size: 14px;
  font-family: PingFangSC, PingFangSC-Regular;
  font-weight: 500;
  color: #333333;
}
331 332
::v-deep .u-border-bottom {
  padding-left: 0rpx;
Zheng Shang Jun's avatar
Zheng Shang Jun committed
333
}
334 335 336

.posi {
  position: fixed;
337
  bottom: 120rpx;
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
  height: 100rpx;
  width: 100%;
  background-color: white;
  .pop-up {
    position: relative;
    height: 100%;
    .checkstyles {
      position: absolute;
      left: 59rpx;
      top: 50%;
      transform: translateY(-50%);
    }
    .bttn {
      width: 160rpx;
      height: 64rpx;
      position: absolute;
      right: 30rpx;
      top: 50%;
      transform: translateY(-50%);
    }
  }
}
Zheng Shang Jun's avatar
Zheng Shang Jun committed
360
</style>