gift.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. <template>
  2. <view class="gift">
  3. <view class="qxz">请选择{{item}}件礼品,可选{{kexuan}}件</view>
  4. <view class="gift-box">
  5. <view v-for="(item,index) in giftList" :key="index" class="gift-info">
  6. <view :class="{'mengban':item.buxuan}"></view>
  7. <view class="gift-item" @tap="chooseGift" :data-index="index" :data-itemid="item.id">
  8. <view class="xuanz" :class="{'active':item.ischoose}">
  9. <view class="dui" v-if="item.ischoose"></view>
  10. </view>
  11. <view class="gift-img">
  12. <image :src="$PIC(item.image)"></image>
  13. </view>
  14. <view class="title-box">
  15. <view>
  16. <view class="zhengbt">{{item.title}}</view>
  17. <view class="fubt">{{item.subtitle}}</view>
  18. </view>
  19. <view class="jiaqian">
  20. <!-- <view class="jz-box">价值<text class="text1">¥</text><text class="text2">{{item.price}}</text></view> -->
  21. <view>x1</view>
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. </view>
  27. <view class="xiayibu" v-if="xzindex==-1">下一步</view>
  28. <view class="xyb" @click="xiayibu" v-else>下一步</view>
  29. </view>
  30. </template>
  31. <script>
  32. export default {
  33. data() {
  34. return {
  35. xzindex: -1,
  36. item: 1,
  37. kexuan: 1,
  38. itemNum: 1,
  39. gp_id: "",
  40. giftList: [],
  41. items: []
  42. }
  43. },
  44. onLoad(e) {
  45. var _this = this
  46. _this.gp_id = e.gp_id
  47. _this.$GET_FUN('/addons/pickup/pickupapi/getGiftPackage', {
  48. 'id': _this.gp_id
  49. }, res => {
  50. console.log(res)
  51. if (res.data.code == 1) {
  52. this.giftList = res.data.data.goods_list
  53. this.itemNum = res.data.data.gift.max_select
  54. this.kexuan = res.data.data.gift.max_select
  55. this.item = res.data.data.gift.max_select
  56. } else {
  57. uni.showToast({
  58. title: res.data.msg,
  59. icon: 'none'
  60. });
  61. }
  62. });
  63. },
  64. methods: {
  65. chooseGift(e) {
  66. var index = e.currentTarget.dataset.index;
  67. var itemid = e.currentTarget.dataset.itemid;
  68. if (this.giftList[index].ischoose) {
  69. for (let j = 0; j < this.giftList.length; j++) {
  70. for (let i = 0; i < this.items.length; i++) {
  71. if (this.items[i].id == this.giftList[index].id) {
  72. this.items.splice(i, 1)
  73. this.giftList[index].ischoose = false;
  74. }
  75. this.$set(this.giftList, j, this.giftList[j]);
  76. }
  77. this.xzindex = -1;
  78. this.giftList[j].buxuan = false
  79. }
  80. this.kexuan = this.kexuan + 1;
  81. } else {
  82. if (this.items.length < this.itemNum) {
  83. this.giftList[index].ischoose = true;
  84. this.items.push(this.giftList[index])
  85. for (let j = 0; j < this.giftList.length; j++) {
  86. for (let i = 0; i < this.items.length; i++) {
  87. this.items[i].ischoose = true;
  88. this.giftList[index].ischoose = true;
  89. if (this.giftList[j].id == this.items[i].id) {
  90. this.$set(this.giftList, j, this.items[i]);
  91. }
  92. }
  93. };
  94. if (this.items.length == this.itemNum) {
  95. this.xzindex = index;
  96. for (let m = 0; m < this.giftList.length; m++) {
  97. for (let n = 0; n < this.items.length; n++) {
  98. if (this.items[n].id == this.giftList[m].id) {
  99. this.giftList[m].buxuan = true
  100. } else {
  101. // this.giftList[m].buxuan = true
  102. }
  103. }
  104. if (this.giftList[m].buxuan) {
  105. this.giftList[m].buxuan = false
  106. } else {
  107. this.giftList[m].buxuan = true
  108. }
  109. }
  110. }
  111. this.kexuan = this.kexuan - 1;
  112. }
  113. }
  114. },
  115. xiayibu() {
  116. var gg_ids = ''
  117. for (let i = 0; i < this.items.length; i++) {
  118. gg_ids = gg_ids + ',' + this.items[i].id
  119. }
  120. uni.setStorageSync("lqgiftList", this.items)
  121. gg_ids = gg_ids.slice(1)
  122. uni.navigateTo({
  123. url: "/pages/receive/receive?gp_id=" + this.gp_id + '&gg_ids=' + gg_ids
  124. })
  125. }
  126. }
  127. }
  128. </script>
  129. <style>
  130. .gift {
  131. line-height: 1;
  132. /* background: url(../../static/bg.png) no-repeat; */
  133. background-color: #acd6ff;
  134. background-size: 100% 100%;
  135. padding-bottom: 30rpx;
  136. }
  137. .qxz {
  138. font-size: 32rpx;
  139. color: #000000;
  140. font-weight: 500;
  141. text-align: center;
  142. padding: 50rpx 0 45rpx;
  143. }
  144. .gift-box {
  145. margin: 0 20rpx;
  146. }
  147. .gift-info {
  148. position: relative;
  149. }
  150. .gift-item {
  151. width: 710rpx;
  152. height: 280rpx;
  153. padding: 38rpx 42rpx 42rpx 24rpx;
  154. box-sizing: border-box;
  155. background: #fff;
  156. border-radius: 16rpx;
  157. display: flex;
  158. align-items: center;
  159. /* box-shadow: 0 0 20rpx 0 #f2f2f2; */
  160. margin-bottom: 30rpx;
  161. }
  162. .mengban {
  163. position: absolute;
  164. top: 0;
  165. left: 0;
  166. border-radius: 16rpx;
  167. z-index: 1;
  168. width: 710rpx;
  169. height: 280rpx;
  170. background: #565656;
  171. opacity: 0.1;
  172. }
  173. .xuanz {
  174. width: 38rpx;
  175. height: 38rpx;
  176. border-radius: 50%;
  177. border: 3rpx solid #999999;
  178. }
  179. .dui {
  180. width: 10rpx;
  181. height: 18rpx;
  182. border-right: 3rpx solid #EB3026;
  183. border-bottom: 3rpx solid #EB3026;
  184. margin: 6rpx auto 0;
  185. transform: rotate(45deg);
  186. }
  187. .active {
  188. border: 3rpx solid #EB3026;
  189. }
  190. .gift-img {
  191. width: 200rpx;
  192. height: 200rpx;
  193. border-radius: 16rpx;
  194. margin: 0 25rpx;
  195. }
  196. .gift-img image {
  197. width: 100%;
  198. height: 100%;
  199. }
  200. .title-box {
  201. display: flex;
  202. width: 350rpx;
  203. flex-direction: column;
  204. justify-content: space-between;
  205. font-size: 28rpx;
  206. color: #1A1A1A;
  207. font-weight: 500;
  208. height: 200rpx;
  209. padding: 10rpx 0 15rpx;
  210. box-sizing: border-box;
  211. }
  212. .zhengbt {
  213. display: -webkit-box;
  214. -webkit-line-clamp: 2;
  215. -webkit-box-orient: vertical;
  216. overflow: hidden;
  217. }
  218. .fubt {
  219. font-size: 24rpx;
  220. color: #999999;
  221. margin-top: 22rpx;
  222. text-overflow: ellipsis;
  223. display: -webkit-box;
  224. -webkit-line-clamp: 2;
  225. -webkit-box-orient: vertical;
  226. overflow: hidden;
  227. }
  228. .jiaqian {
  229. display: flex;
  230. justify-content: space-between;
  231. align-items: flex-end;
  232. font-size: 24rpx;
  233. color: #999999;
  234. font-weight: 500;
  235. width: 352rpx;
  236. }
  237. .jz-box {
  238. font-size: 26rpx;
  239. color: #EC433A;
  240. }
  241. .text1 {
  242. font-size: 22rpx;
  243. color: #EB3026;
  244. font-weight: bold;
  245. }
  246. .text2 {
  247. font-size: 40rpx;
  248. color: #EB3026;
  249. font-weight: bold;
  250. }
  251. .xiayibu {
  252. width: 690rpx;
  253. height: 94rpx;
  254. border-radius: 6rpx;
  255. line-height: 94rpx;
  256. text-align: center;
  257. margin: 92rpx auto 30rpx;
  258. background: #999999;
  259. font-size: 36rpx;
  260. color: #fff;
  261. font-weight: 500;
  262. }
  263. .xyb {
  264. width: 690rpx;
  265. height: 94rpx;
  266. border-radius: 6rpx;
  267. line-height: 94rpx;
  268. text-align: center;
  269. margin: 92rpx auto 30rpx;
  270. background: linear-gradient(to top, #C82D2D, #E06363);
  271. font-size: 36rpx;
  272. color: #fff;
  273. font-weight: 500;
  274. }
  275. </style>