创建微服务:microservice-provider-shop-8003;小程序商品列表筛选、商品详情完成
This commit is contained in:
		@@ -15,23 +15,29 @@ Component({
 | 
			
		||||
   * 组件的初始数据
 | 
			
		||||
   */
 | 
			
		||||
  data: {
 | 
			
		||||
    displayGoodsInfo: "",
 | 
			
		||||
    displayInfo: "",
 | 
			
		||||
    // displayGoodsInfo: "",
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  observers: {
 | 
			
		||||
    'goodinfo': function (goodinfo) {
 | 
			
		||||
      console.log("observers -> goodinfo", goodinfo)
 | 
			
		||||
      this.setData({
 | 
			
		||||
        displayGoodsInfo: JSON.stringify(this.properties.goodinfo)
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  // observers: {
 | 
			
		||||
  //   'goodinfo': function (goodinfo) {
 | 
			
		||||
  //     console.log("observers -> goodinfo", goodinfo)
 | 
			
		||||
  //     this.setData({
 | 
			
		||||
  //       displayGoodsInfo: JSON.stringify(this.properties.goodinfo)
 | 
			
		||||
  //     })
 | 
			
		||||
  //   }
 | 
			
		||||
  // },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 组件的方法列表
 | 
			
		||||
   */
 | 
			
		||||
  methods: {
 | 
			
		||||
 | 
			
		||||
    cardOntap(event) {
 | 
			
		||||
      let dataset = event.currentTarget.dataset
 | 
			
		||||
      console.log("cardOntap dataset", dataset)
 | 
			
		||||
      let goodInfo = dataset.goodinfo
 | 
			
		||||
      wx.navigateTo({
 | 
			
		||||
        url: '/pages/shop/goodDetail?id=' + goodInfo.id,
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<!--pages/shop/components/good-list-card.wxml-->
 | 
			
		||||
<view class="good-card-container">
 | 
			
		||||
<view class="good-card-container" bindtap="cardOntap" data-goodinfo="{{goodinfo}}">
 | 
			
		||||
  <!-- <view class="good-card-image" style="background-image: url('../../../image/home.jpg');">
 | 
			
		||||
  </view> -->
 | 
			
		||||
  <view class="good-card-image" style="background-image: {{ 'url(' + goodinfo.picUrl + ');'}};">
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								weixin-miniprogram/pages/shop/goodDetail.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								weixin-miniprogram/pages/shop/goodDetail.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
// pages/shop/goodDetail.js
 | 
			
		||||
 | 
			
		||||
const goodService = require("../../services/good")
 | 
			
		||||
 | 
			
		||||
Page({
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 页面的初始数据
 | 
			
		||||
   */
 | 
			
		||||
  data: {
 | 
			
		||||
    goodId: -1,
 | 
			
		||||
    goodinfo: {}
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 生命周期函数--监听页面加载
 | 
			
		||||
   */
 | 
			
		||||
  onLoad(options) {
 | 
			
		||||
    console.log("goodDetail ->options", options)
 | 
			
		||||
    let goodId = options.id
 | 
			
		||||
    this.setData({
 | 
			
		||||
      goodId: goodId
 | 
			
		||||
    })
 | 
			
		||||
    this.loadPageData()
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 生命周期函数--监听页面初次渲染完成
 | 
			
		||||
   */
 | 
			
		||||
  onReady() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 生命周期函数--监听页面显示
 | 
			
		||||
   */
 | 
			
		||||
  onShow() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 生命周期函数--监听页面隐藏
 | 
			
		||||
   */
 | 
			
		||||
  onHide() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 生命周期函数--监听页面卸载
 | 
			
		||||
   */
 | 
			
		||||
  onUnload() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 页面相关事件处理函数--监听用户下拉动作
 | 
			
		||||
   */
 | 
			
		||||
  onPullDownRefresh() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 页面上拉触底事件的处理函数
 | 
			
		||||
   */
 | 
			
		||||
  onReachBottom() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 用户点击右上角分享
 | 
			
		||||
   */
 | 
			
		||||
  onShareAppMessage() {
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  loadPageData() {
 | 
			
		||||
    (async () => {
 | 
			
		||||
      let goodDetail = await goodService.getGoodDetail(this.data.goodId)
 | 
			
		||||
      console.log("goodDetail", goodDetail)
 | 
			
		||||
      this.setData({
 | 
			
		||||
        goodinfo: goodDetail
 | 
			
		||||
      })
 | 
			
		||||
    })();
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										4
									
								
								weixin-miniprogram/pages/shop/goodDetail.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								weixin-miniprogram/pages/shop/goodDetail.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
{
 | 
			
		||||
  "usingComponents": {},
 | 
			
		||||
  "navigationBarTitleText": "商品详情"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								weixin-miniprogram/pages/shop/goodDetail.wxml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								weixin-miniprogram/pages/shop/goodDetail.wxml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
<!--pages/shop/goodDetail.wxml-->
 | 
			
		||||
<view>
 | 
			
		||||
  <image class="good-image" src="{{goodinfo.picUrl}}" />
 | 
			
		||||
  <view class="good-detail">
 | 
			
		||||
    <view class="good-price good-price-counter">
 | 
			
		||||
      <!-- 原价 -->
 | 
			
		||||
      <view class="good-price-symbol">¥</view>
 | 
			
		||||
      <view class="good-price-number">{{ goodinfo.counterPrice }}</view>
 | 
			
		||||
    </view>
 | 
			
		||||
    <view class="good-price good-price-retail">
 | 
			
		||||
      <!-- 售价 -->
 | 
			
		||||
      <view style="height:0.12em;" class="good-price-line"></view>
 | 
			
		||||
      <view class="good-price-symbol">¥</view>
 | 
			
		||||
      <view class="good-price-number">{{ goodinfo.retailPrice }}</view>
 | 
			
		||||
    </view>
 | 
			
		||||
    <view>
 | 
			
		||||
      <text class="good-title line-wrap">{{ goodinfo.goodsName }}</text>
 | 
			
		||||
    </view>
 | 
			
		||||
  </view>
 | 
			
		||||
</view>
 | 
			
		||||
							
								
								
									
										68
									
								
								weixin-miniprogram/pages/shop/goodDetail.wxss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								weixin-miniprogram/pages/shop/goodDetail.wxss
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
/* pages/shop/goodDetail.wxss */
 | 
			
		||||
.good-image {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100vw;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-detail {
 | 
			
		||||
  padding: 5px 18px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 商品价格 */
 | 
			
		||||
.good-price {
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  font-weight: 700;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  display: inline;
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-price-counter {
 | 
			
		||||
  color: #fa4126;
 | 
			
		||||
  font-size: 72rpx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-price-retail {
 | 
			
		||||
  color: #bbbbbb;
 | 
			
		||||
  font-size: 32rpx;
 | 
			
		||||
  margin: 0 0 0 18rpx;
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-price-counter .good-price-symbol {
 | 
			
		||||
  font-size: 36rpx;
 | 
			
		||||
  display: inline;
 | 
			
		||||
  margin-right: 6rpx;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-price-retail .good-price-symbol {
 | 
			
		||||
  font-size: 24rpx;
 | 
			
		||||
  display: inline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-price .good-price-number {
 | 
			
		||||
  display: inline;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.good-price .good-price-line {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 50%;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  transform: translateY(-50%);
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  background-color: currentColor;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* 商品标题 */
 | 
			
		||||
.good-title {
 | 
			
		||||
  width: 600rpx;
 | 
			
		||||
  font-weight: 500;
 | 
			
		||||
  display: -webkit-box;
 | 
			
		||||
  -webkit-box-orient: vertical;
 | 
			
		||||
  -webkit-line-clamp: 2;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  font-size: 32rpx;
 | 
			
		||||
  word-break: break-all;
 | 
			
		||||
  color: #333333;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,7 @@
 | 
			
		||||
// pages/shop/shop.js
 | 
			
		||||
 | 
			
		||||
const goodService = require("../../services/good")
 | 
			
		||||
 | 
			
		||||
Page({
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
@@ -6,48 +9,49 @@ Page({
 | 
			
		||||
   */
 | 
			
		||||
  data: {
 | 
			
		||||
    sidebarActiveId: -1,
 | 
			
		||||
    searchText: '',
 | 
			
		||||
    sidebarList: [
 | 
			
		||||
      {
 | 
			
		||||
        id: -1,
 | 
			
		||||
        title: "全部分类",
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 1,
 | 
			
		||||
        title: "1",
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 2,
 | 
			
		||||
        title: "防疫物资",
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 3,
 | 
			
		||||
        title: "111",
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 4,
 | 
			
		||||
        title: "111",
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 5,
 | 
			
		||||
        title: "111",
 | 
			
		||||
        categoryName: "全部分类",
 | 
			
		||||
      },
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 1,
 | 
			
		||||
      //   title: "1",
 | 
			
		||||
      // },
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 2,
 | 
			
		||||
      //   title: "防疫物资",
 | 
			
		||||
      // },
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 3,
 | 
			
		||||
      //   title: "111",
 | 
			
		||||
      // },
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 4,
 | 
			
		||||
      //   title: "111",
 | 
			
		||||
      // },
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 5,
 | 
			
		||||
      //   title: "111",
 | 
			
		||||
      // },
 | 
			
		||||
    ],
 | 
			
		||||
 | 
			
		||||
    tabbarList: [
 | 
			
		||||
      {
 | 
			
		||||
        id: 1,
 | 
			
		||||
        goodsName: "温度计",
 | 
			
		||||
        counterPrice: "10.00",
 | 
			
		||||
        retailPrice: "12.00",
 | 
			
		||||
        picUrl: "https://cdn-we-retail.ym.tencent.com/tsr/goods/gh-2b.png?imageMogr2/thumbnail/320x320/quality/70/strip/format/webp",
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: 2,
 | 
			
		||||
        goodsName: "医用口罩",
 | 
			
		||||
        counterPrice: "100.00",
 | 
			
		||||
        retailPrice: "12.50",
 | 
			
		||||
        picUrl: "https://cdn-we-retail.ym.tencent.com/tsr/goods/muy-3a.png?imageMogr2/thumbnail/320x320/quality/70/strip/format/webp",
 | 
			
		||||
      }
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 1,
 | 
			
		||||
      //   goodsName: "温度计",
 | 
			
		||||
      //   counterPrice: "10.00",
 | 
			
		||||
      //   retailPrice: "12.00",
 | 
			
		||||
      //   picUrl: "https://cdn-we-retail.ym.tencent.com/tsr/goods/gh-2b.png?imageMogr2/thumbnail/320x320/quality/70/strip/format/webp",
 | 
			
		||||
      // },
 | 
			
		||||
      // {
 | 
			
		||||
      //   id: 2,
 | 
			
		||||
      //   goodsName: "医用口罩",
 | 
			
		||||
      //   counterPrice: "100.00",
 | 
			
		||||
      //   retailPrice: "12.50",
 | 
			
		||||
      //   picUrl: "https://cdn-we-retail.ym.tencent.com/tsr/goods/muy-3a.png?imageMogr2/thumbnail/320x320/quality/70/strip/format/webp",
 | 
			
		||||
      // }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
@@ -55,7 +59,7 @@ Page({
 | 
			
		||||
   * 生命周期函数--监听页面加载
 | 
			
		||||
   */
 | 
			
		||||
  onLoad(options) {
 | 
			
		||||
 | 
			
		||||
    this.loadPageData();
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
@@ -90,7 +94,8 @@ Page({
 | 
			
		||||
   * 页面相关事件处理函数--监听用户下拉动作
 | 
			
		||||
   */
 | 
			
		||||
  onPullDownRefresh() {
 | 
			
		||||
 | 
			
		||||
    console.log('sidebarActiveId', this.data.sidebarActiveId)
 | 
			
		||||
    this.updatePageData()
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
@@ -108,6 +113,20 @@ Page({
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  bindSearchInput(e) {
 | 
			
		||||
    this.setData({
 | 
			
		||||
      searchText: e.detail.value,
 | 
			
		||||
    })
 | 
			
		||||
    this.updatePageData()
 | 
			
		||||
  },
 | 
			
		||||
  clearSearchInput() {
 | 
			
		||||
    this.setData({
 | 
			
		||||
      searchText: '',
 | 
			
		||||
      sidebarActiveId: -1,
 | 
			
		||||
    })
 | 
			
		||||
    this.updatePageData()
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  sidebarItemTap(event) {
 | 
			
		||||
    // 清除原来的选中项,并设置新的选中项
 | 
			
		||||
    // console.log("event.target", event.target)
 | 
			
		||||
@@ -117,6 +136,51 @@ Page({
 | 
			
		||||
    this.setData({
 | 
			
		||||
      sidebarActiveId: dataset.item.id,
 | 
			
		||||
    })
 | 
			
		||||
    this.loadPageData()
 | 
			
		||||
    return
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  loadPageData() {
 | 
			
		||||
    (async () => {
 | 
			
		||||
      let goodCategoryListPromise = goodService.getGoodCategoryList()
 | 
			
		||||
      let goodListPromise = goodService.getGoodList(this.data.sidebarActiveId, this.data.searchText)
 | 
			
		||||
      Promise.all([
 | 
			
		||||
        goodCategoryListPromise,
 | 
			
		||||
        goodListPromise,
 | 
			
		||||
      ]).then(data => {
 | 
			
		||||
        let goodCategoryList = data[0]
 | 
			
		||||
        let goodList = data[1]
 | 
			
		||||
        console.log("goodCategoryList", goodCategoryList)
 | 
			
		||||
        console.log("goodList", goodList)
 | 
			
		||||
        goodCategoryList.unshift({
 | 
			
		||||
          id: -1,
 | 
			
		||||
          categoryName: "全部分类",
 | 
			
		||||
          order: 0
 | 
			
		||||
        })
 | 
			
		||||
        console.log("goodCategoryList", goodCategoryList)
 | 
			
		||||
        this.setData({
 | 
			
		||||
          sidebarList: goodCategoryList,
 | 
			
		||||
          tabbarList: goodList,
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    })();
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  updatePageData() {
 | 
			
		||||
    (async () => {
 | 
			
		||||
      this.setData({
 | 
			
		||||
        tabbarList: [],
 | 
			
		||||
      })
 | 
			
		||||
      let goodListPromise = goodService.getGoodList(this.data.sidebarActiveId, this.data.searchText)
 | 
			
		||||
      Promise.all([
 | 
			
		||||
        goodListPromise,
 | 
			
		||||
      ]).then(data => {
 | 
			
		||||
        let goodList = data[0]
 | 
			
		||||
        console.log("goodList", goodList)
 | 
			
		||||
        this.setData({
 | 
			
		||||
          tabbarList: goodList,
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    })();
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "usingComponents": {
 | 
			
		||||
    "listcard":"./components/good-list-card"
 | 
			
		||||
    "listcard": "./components/good-list-card"
 | 
			
		||||
  },
 | 
			
		||||
  "navigationBarTitleText": "生活物资"
 | 
			
		||||
  "navigationBarTitleText": "生活物资",
 | 
			
		||||
  "enablePullDownRefresh": true
 | 
			
		||||
}
 | 
			
		||||
@@ -1,14 +1,20 @@
 | 
			
		||||
<!--pages/shop/shop.wxml-->
 | 
			
		||||
<view class="search">
 | 
			
		||||
  <input id="search-input" class="search-input" maxlength="15" confirm-type="搜索" placeholder="搜索商品" value="{{searchText}}" bindblur="bindSearchInput" bindconfirm="bindSearchInput" />
 | 
			
		||||
</view>
 | 
			
		||||
<view class="container">
 | 
			
		||||
  <!-- sidebar -->
 | 
			
		||||
  <view class="sidebar">
 | 
			
		||||
    <view class="sidebar-item {{ cate.id == sidebarActiveId ? 'active' : 'deactive' }}" wx:for="{{sidebarList}}" wx:for-item="cate" wx:key="id" bindtap="sidebarItemTap" data-item="{{cate}}" data-item2="aaa">
 | 
			
		||||
      <text class="sidebar-item-text">{{ cate.title }}</text>
 | 
			
		||||
    <view class="sidebar-item {{ cate.id == sidebarActiveId ? 'active' : 'deactive' }}" wx:for="{{sidebarList}}" wx:for-item="cate" wx:key="id" bindtap="sidebarItemTap" data-item="{{cate}}">
 | 
			
		||||
      <text class="sidebar-item-text">{{ cate.categoryName }}</text>
 | 
			
		||||
    </view>
 | 
			
		||||
  </view>
 | 
			
		||||
 | 
			
		||||
  <!-- tabbar -->
 | 
			
		||||
  <view class="tabbar">
 | 
			
		||||
    <view wx:if="{{ searchText || sidebarActiveId > 0 }}" style="text-align: center;">
 | 
			
		||||
      <button type="default" size="mini" bindtap="clearSearchInput">清空筛选条件</button>
 | 
			
		||||
    </view>
 | 
			
		||||
    <view class="tabbar-group">
 | 
			
		||||
      <listcard class="tabbar-item" wx:for="{{tabbarList}}" wx:for-item="item" wx:key="id" goodinfo="{{item}}" />
 | 
			
		||||
    </view>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,23 @@
 | 
			
		||||
/* pages/shop/shop.wxss */
 | 
			
		||||
.search {
 | 
			
		||||
  height: 36px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.search-input {
 | 
			
		||||
  margin: 4px 10px;
 | 
			
		||||
  padding: 2px 18px;
 | 
			
		||||
  height: 32px;
 | 
			
		||||
  line-height: 28px;
 | 
			
		||||
  background-color: rgb(226, 226, 226);
 | 
			
		||||
  border-radius: 50px;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.container {
 | 
			
		||||
  /* background-color: aqua; */
 | 
			
		||||
  height: 100vh;
 | 
			
		||||
  height: calc(100vh - 50px);
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
 | 
			
		||||
@@ -66,6 +82,6 @@
 | 
			
		||||
 | 
			
		||||
.no-more {
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  color:grey;
 | 
			
		||||
  color: grey;
 | 
			
		||||
  margin: 20px;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user