金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

282 lines
11 KiB

  1. <template>
  2. <view id="vip-introduce">
  3. <view class="content-top">
  4. <image mode="widthFix" src="https://cdn.ibrand.cc/%E4%BC%9A%E5%91%98%E8%AF%A6%E6%83%85-rtrete_02.png"></image>
  5. <image mode="widthFix" src="https://cdn.ibrand.cc/%E4%BC%9A%E5%91%98%E8%AF%A6%E6%83%85-443_03.png"></image>
  6. </view>
  7. <view class="content-center">
  8. <image mode="widthFix" class="imgs" src="https://cdn.ibrand.cc/%E6%96%B0%E4%BA%BA%E9%A6%96%E5%8D%9555.png"></image>
  9. <view class="goods-list">
  10. <view class="item" v-for="(item, index) in goodsList" :key="index" @tap="jumpDetail" :data-id="item.id">
  11. <view class="left-box">
  12. <image :src="item.img"></image>
  13. </view>
  14. <view class="right-box">
  15. <view class="name">{{item.name}}</view>
  16. <view style="height:20px;">
  17. <view class="sale-box" v-if="item.is_first_order_free">
  18. <view class="left">首单全返</view>
  19. <view class="right">收货立返</view>
  20. </view>
  21. </view>
  22. <view class="money-buy">
  23. <view class="money"> {{item.sell_price}}</view>
  24. <view class="buy">点击购买</view>
  25. </view>
  26. </view>
  27. <view class="small-txt" v-if="item.is_first_order_free">
  28. 收货全额返
  29. </view>
  30. </view>
  31. </view>
  32. <image mode="widthFix" src="https://cdn.ibrand.cc/%E8%AF%B4%E6%98%8E.png"></image>
  33. </view>
  34. <!--固定的分享盒子-->
  35. <view class="share-fixed" @tap="changeShare">
  36. <view class="iconfont icon--fenxiang"></view>
  37. <view class="txt">分享</view>
  38. </view>
  39. <!--弹出分享部分-->
  40. <view class="maks share" :class="show_share ? 'cur' : ''" @tap="changeShare">
  41. </view>
  42. <view class="share-box" :class="show_share ? 'cur' : ''">
  43. <button class="shaer-item" open-type="share">
  44. 分享给好友
  45. </button>
  46. <view class="shaer-item mx-1px-top" @tap="getShearImg">
  47. 生成海报
  48. </view>
  49. <view class="shaer-item clear" @tap="changeShare">
  50. 取消
  51. </view>
  52. </view>
  53. </view>
  54. </template>
  55. <script>
  56. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  57. export default {
  58. data() {
  59. return {
  60. goodsList: [],
  61. show_share: false
  62. };
  63. },
  64. onShareAppMessage(res) {
  65. this.changeShare();
  66. let agent_code = this.data.userInfo ? this.data.userInfo.agent_code || '' : '';
  67. return {
  68. title: '新人专享,不玩套路,不限金额,全额免单!',
  69. // path: '/' + this.router + '?id=' + this.data.id,
  70. path: `/pages/other/vip/vip?agent_code=${agent_code}`
  71. };
  72. },
  73. onLoad(e) {
  74. this.getSchemesList();
  75. this.init(e);
  76. },
  77. components: {},
  78. props: {},
  79. methods: {
  80. // 弹出分享
  81. changeShare() {
  82. this.setData({
  83. show_share: !this.data.show_share
  84. });
  85. },
  86. //获取商品列表
  87. getSchemesList() {
  88. wx.showLoading({
  89. title: "加载中",
  90. mask: true
  91. });
  92. sandBox.get({
  93. api: 'api/free/goods/list'
  94. }).then(res => {
  95. if (res.statusCode == 200) {
  96. res = res.data;
  97. if (res.status) {
  98. this.setData({
  99. goodsList: res.data
  100. });
  101. } else {
  102. wx.showModal({
  103. content: res.message || '请求失败',
  104. showCancel: false
  105. });
  106. }
  107. wx.hideLoading();
  108. } else {
  109. wx.hideLoading();
  110. wx.showModal({
  111. content: '请求失败',
  112. showCancel: false
  113. });
  114. }
  115. }).catch(rej => {
  116. wx.hideLoading();
  117. wx.showModal({
  118. content: '请求失败',
  119. showCancel: false
  120. });
  121. });
  122. },
  123. //跳到详情页
  124. jumpDetail(e) {
  125. let id = e.currentTarget.dataset.id;
  126. wx.navigateTo({
  127. url: '/pages/store/detail/detail?id=' + id
  128. });
  129. },
  130. getShearImg() {
  131. wx.navigateTo({
  132. url: '/pages/other/shareImg/shareImg'
  133. });
  134. },
  135. // 获取初始化数据
  136. init(e) {
  137. var token = cookieStorage.get('user_token');
  138. var agent_code = '';
  139. if (e.agent_code) {
  140. agent_code = e.agent_code;
  141. }
  142. if (e.scene) {
  143. var scene = decodeURIComponent(e.scene);
  144. var sceneArr = scene.split(',');
  145. if (sceneArr.length > 0) {
  146. agent_code = sceneArr[0];
  147. }
  148. }
  149. sandBox.get({
  150. api: 'api/system/init'
  151. }).then(res => {
  152. if (res.statusCode == 200) {
  153. res = res.data;
  154. if (res.status) {
  155. cookieStorage.set('init_info', res.data.h5_share);
  156. cookieStorage.set('service_info', res.data.online_service_data);
  157. cookieStorage.set('distribution_valid_time', res.data.distribution_valid_time);
  158. cookieStorage.set('init', res.data);
  159. var service_info = cookieStorage.get('service_info');
  160. this.setData({
  161. service_info: service_info
  162. });
  163. this.setCode(e);
  164. } else {
  165. this.setCode(e);
  166. }
  167. } else {
  168. this.setCode(e);
  169. }
  170. });
  171. },
  172. setCode(e) {
  173. const timeMap = {
  174. y: 31536000000,
  175. m: 2592000000,
  176. d: 86400000,
  177. h: 3600000,
  178. n: 60000,
  179. s: 1000
  180. }; // 默认有效期为7天
  181. var valid_time = "";
  182. var clerk_id = e.clerk_id || "";
  183. var shop_id = e.shop_id || "";
  184. var agent_code = e.agent_code || '';
  185. if (e.scene) {
  186. var scene = decodeURIComponent(e.scene);
  187. var sceneArr = scene.split(',');
  188. if (sceneArr.length > 0) {
  189. agent_code = sceneArr[0];
  190. }
  191. }
  192. var cook_shop_id = cookieStorage.get('shop_id');
  193. if (!cookieStorage.get('distribution_valid_time')) {
  194. valid_time = 10080;
  195. } else {
  196. valid_time = cookieStorage.get('distribution_valid_time');
  197. }
  198. console.log('这个是时间', valid_time);
  199. let timeStamp = new Date().getTime();
  200. timeStamp += timeMap.n * valid_time; // 当url上shop_id与缓存中shop_id不一致时,需要清除clerk_id。以此保证shop_id与clerk_id对应
  201. var cook_clerk_id = cookieStorage.get('clerk_id');
  202. if (cook_shop_id != shop_id && cook_clerk_id) {
  203. cookieStorage.clear('clerk_id');
  204. }
  205. if (agent_code) {
  206. cookieStorage.set('agent_code', agent_code, valid_time + 'n'); // 如果有agent_code就将这次进入的时间缓存
  207. cookieStorage.set('agent_code_time', timeStamp, valid_time + 'n'); // 如果有agent_code并且有coupon_agent_code就将coupon_agent_code清除,保证agent_code为第一位
  208. if (cookieStorage.get('coupon_agent_code')) {
  209. cookieStorage.clear('coupon_agent_code');
  210. }
  211. }
  212. if (clerk_id) {
  213. cookieStorage.set('clerk_id', clerk_id, valid_time + 'n');
  214. }
  215. if (shop_id) {
  216. cookieStorage.set('shop_id', shop_id, valid_time + 'n'); // 如果有shop_id就将这次进入的时间缓存
  217. cookieStorage.set('shop_id_time', timeStamp, valid_time + 'n');
  218. }
  219. },
  220. setData: function (obj) {
  221. let that = this;
  222. let keys = [];
  223. let val, data;
  224. Object.keys(obj).forEach(function (key) {
  225. keys = key.split('.');
  226. val = obj[key];
  227. data = that.$data;
  228. keys.forEach(function (key2, index) {
  229. if (index + 1 == keys.length) {
  230. that.$set(data, key2, val);
  231. } else {
  232. if (!data[key2]) {
  233. that.$set(data, key2, {});
  234. }
  235. }
  236. data = data[key2];
  237. });
  238. });
  239. }
  240. },
  241. computed: {},
  242. watch: {}
  243. };
  244. </script>
  245. <style>
  246. #vip-introduce .content-center image,#vip-introduce .content-top image{width:100%;vertical-align:middle}#vip-introduce .content-center{background-color:#DC9D72}#vip-introduce .content-center .imgs{padding:0 13px;box-sizing:border-box}#vip-introduce .content-center .goods-list{padding:5px 15px 15px}#vip-introduce .content-center .goods-list .item{display:flex;align-items:center;padding:15px;background-color:#FFF;position:relative}#vip-introduce .content-center .goods-list .item .small-txt{position:absolute;background-color:#CDA76E;color:#FFF;font-size:12px;top:0;left:0;padding:3px 15px}#vip-introduce .content-center .goods-list .item .left-box{width:90px;height:90px}#vip-introduce .content-center .goods-list .item .left-box image{width:100%;height:100%;vertical-align:middle}#vip-introduce .content-center .goods-list .item .right-box{flex:1;overflow:hidden;padding-left:15px}#vip-introduce .content-center .goods-list .item .right-box .name{color:#111;font-size:15px;line-height:22px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-bottom:15px}#vip-introduce .content-center .goods-list .item .right-box .sale-box{display:flex;align-items:center;justify-content:center;border:1px solid #CDA76E;border-radius:14px;overflow:hidden;font-size:10px;width:50%;line-height:18px}#vip-introduce .content-center .goods-list .item .right-box .sale-box .left{color:#FFF;background-color:#CDA76E;flex:1;text-align:center}#vip-introduce .content-center .goods-list .item .right-box .sale-box .right{color:#CDA76E;background-color:#FFF;flex:1;text-align:center}#vip-introduce .content-center .goods-list .item .right-box .money-buy{margin-top:10px;display:flex;align-items:center;justify-content:space-between;font-size:16px;color:#FB5054}#vip-introduce .content-center .goods-list .item .right-box .buy{border-radius:12px;background-color:#E7031C;color:#FFF;font-size:13px;line-height:18px;padding:3px 16px}#vip-introduce .share-fixed{position:fixed;right:0;bottom:130px;width:50px;padding:6px 0 4px;background:linear-gradient(304deg,#ffcca4 0,#ecd0b8 100%);box-shadow:0 -4px 26px 0 rgba(0,0,0,.11);border-radius:4px;text-align:center;font-size:12px}#vip-introduce .share-fixed .iconfont{padding-bottom:3px}#vip-introduce .maks{position:fixed;bottom:0;width:100%;height:100%;z-index:40;background:rgba(0,0,0,.6);opacity:1;transition:opacity .3s ease;display:none}#vip-introduce .maks.share{background:0 0}#vip-introduce .maks.cur{display:block}#vip-introduce .share-box{background:#CDCDD1;position:fixed;bottom:0;width:100%;height:0;z-index:50;transition:all .3s linear}#vip-introduce .share-box .shaer-item{height:50px;line-height:50px;text-align:center;font-size:18px;color:#2E2D2D;background:#fff;border-radius:0}#vip-introduce .share-box .shaer-item:after{border:none}#vip-introduce .share-box .shaer-item.clear{margin-top:5px;color:#9B9B9B}#vip-introduce .share-box.cur{height:155px}
  247. </style>