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.

374 lines
13 KiB

3 months ago
  1. <template>
  2. <view :data-theme="theme">
  3. <view class='my-account'>
  4. <view class='wrapper'>
  5. <view class='header'>
  6. <view class='headerCon'>
  7. <view class='account acea-row row-top row-between'>
  8. <view class='assets'>
  9. <view>总资产()</view>
  10. <view class='money'>{{statistics.nowMoney || 0}}</view>
  11. </view>
  12. <view v-if="userInfo.rechargeSwitch" @click="openSubscribe('/pages/users/user_payment/index')" class='recharge font_color'>充值</view>
  13. </view>
  14. <view class='cumulative acea-row row-top'>
  15. <view class='item' v-if="userInfo.rechargeSwitch">
  16. <view>累计充值()</view>
  17. <view class='money'>{{statistics.recharge || 0}}</view>
  18. </view>
  19. <view class='item'>
  20. <view>累计消费()</view>
  21. <view class='money'>{{statistics.orderStatusSum || 0}}</view>
  22. </view>
  23. </view>
  24. </view>
  25. </view>
  26. <view class='nav acea-row row-middle'>
  27. <navigator class='item' hover-class='none' url='/pages/users/user_bill/index?type=all'>
  28. <view class='pictrue'>
  29. <text class="iconfont icon-s-zhangdanjilu icon_txt"></text>
  30. </view>
  31. <view>账单记录</view>
  32. </navigator>
  33. <navigator class='item' hover-class='none' url='/pages/users/user_bill/index?type=expenditure'>
  34. <view class='pictrue'>
  35. <text class="iconfont icon-s-xiaofeijilu icon_txt"></text>
  36. </view>
  37. <view>消费记录</view>
  38. </navigator>
  39. <navigator class='item' hover-class='none' url='/pages/users/user_bill/index?type=income' v-if="userInfo.rechargeSwitch">
  40. <view class='pictrue'>
  41. <text class="iconfont icon-s-chongzhijilu icon_txt"></text>
  42. </view>
  43. <view>充值记录</view>
  44. </navigator>
  45. <navigator class='item' hover-class='none' url='/pages/users/user_integral/index'>
  46. <view class='pictrue'>
  47. <text class="iconfont icon-jifenzhongxin icon_txt"></text>
  48. </view>
  49. <view>积分中心</view>
  50. </navigator>
  51. </view>
  52. <view class='advert acea-row row-between-wrapper'>
  53. <navigator class='item acea-row row-between-wrapper' hover-class='none' url='/pages/users/user_sgin/index'>
  54. <view class='text'>
  55. <view class='name'>签到领积分</view>
  56. <view>赚积分抵现金</view>
  57. </view>
  58. <view class='pictrue'>
  59. <image :src="urlDomain+'crmebimage/perset/staticImg/gift.png'"></image>
  60. </view>
  61. </navigator>
  62. <navigator class='item on acea-row row-between-wrapper' hover-class='none' url='/pages/users/user_get_coupon/index'>
  63. <view class='text'>
  64. <view class='name'>领取优惠券</view>
  65. <view>满减享优惠</view>
  66. </view>
  67. <view class='pictrue'>
  68. <image :src="urlDomain+'crmebimage/perset/staticImg/money.png'"></image>
  69. </view>
  70. </navigator>
  71. </view>
  72. </view>
  73. <recommend ref="recommendIndex" @getRecommendLength="getRecommendLength"></recommend>
  74. <view class='noCommodity' v-if="isNoCommodity">
  75. <view class='pictrue'>
  76. <image :src="urlDomain+'crmebimage/perset/staticImg/noSearch.png'"></image>
  77. </view>
  78. </view>
  79. </view>
  80. </view>
  81. </template>
  82. <script>
  83. import {userActivity,getuserDalance} from '@/api/user.js';
  84. import {toLogin} from '@/libs/login.js';
  85. import {mapGetters} from "vuex";
  86. import recommend from '@/components/recommend/index';
  87. let app = getApp();
  88. export default {
  89. components: {
  90. recommend
  91. },
  92. data() {
  93. return {
  94. urlDomain: this.$Cache.get("imgHost"),
  95. hostProduct: [],
  96. isClose: false,
  97. activity: {},
  98. statistics:{},
  99. theme:app.globalData.theme,
  100. isNoCommodity: false // 是否显示缺省图
  101. };
  102. },
  103. computed: mapGetters(['isLogin', 'userInfo']),
  104. watch:{
  105. isLogin:{
  106. handler:function(newV,oldV){
  107. if(newV){
  108. this.get_activity();
  109. this.userDalance();
  110. }
  111. },
  112. deep:true
  113. }
  114. },
  115. onLoad() {
  116. if (this.isLogin) {
  117. // #ifdef H5
  118. var url = window.location.search;
  119. if(url){
  120. var theRequest = new Object();
  121. if (url.indexOf("?") != -1) {
  122. var str = url.substr(1);
  123. var strs = str.split("&");
  124. for (var i = 0; i < strs.length; i++) {
  125. theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
  126. }
  127. }
  128. this.orderId = theRequest.out_trade_no; //返回的订单号
  129. // this.alipayQueryPay();
  130. }
  131. // #endif
  132. this.get_activity();
  133. this.userDalance();
  134. } else {
  135. toLogin();
  136. }
  137. },
  138. methods: {
  139. getRecommendLength(e) {
  140. this.isNoCommodity = e == 0 ? true : false;
  141. },
  142. onLoadFun: function() {
  143. this.get_activity();
  144. this.userDalance();
  145. },
  146. userDalance(){
  147. getuserDalance().then(res=>{
  148. this.statistics = res.data;
  149. })
  150. },
  151. // 授权关闭
  152. authColse: function(e) {
  153. this.isShowAuth = e
  154. },
  155. openSubscribe: function(page) {
  156. uni.navigateTo({
  157. url: page,
  158. });
  159. },
  160. /**
  161. * 获取活动可参与否
  162. */
  163. get_activity: function() {
  164. // let that = this;
  165. // userActivity().then(res => {
  166. // that.$set(that, "activity", res.data);
  167. // })
  168. }
  169. },
  170. onReachBottom() {
  171. this.$refs.recommendIndex.get_host_product();
  172. }
  173. }
  174. </script>
  175. <style scoped lang="scss">
  176. .my-account .wrapper {
  177. background-color: #fff;
  178. padding: 32rpx 0 15rpx 0;
  179. margin-bottom: 14rpx;
  180. }
  181. .my-account .wrapper .header {
  182. width: 690rpx;
  183. height: 330rpx;
  184. @include main_bg_color(theme);
  185. border-radius: 16rpx;
  186. margin: 0 auto;
  187. box-sizing: border-box;
  188. color: rgba(255, 255, 255, 0.6);
  189. font-size: 24rpx;
  190. }
  191. .my-account .wrapper .header .headerCon {
  192. background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArIAAAFKCAYAAADhULxpAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzMUM4RDlEM0YxNTExRTk4OUJFQ0Q4Qjg0RDBCMzQ1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzMUM4RDlFM0YxNTExRTk4OUJFQ0Q4Qjg0RDBCMzQ1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTMxQzhEOUIzRjE1MTFFOTg5QkVDRDhCODREMEIzNDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTMxQzhEOUMzRjE1MTFFOTg5QkVDRDhCODREMEIzNDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ymvxvAAAIhklEQVR42uzd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
  193. background-repeat: no-repeat;
  194. background-size: 100%;
  195. height: 100%;
  196. width: 100%;
  197. padding: 36rpx 0 29rpx 0;
  198. box-sizing: border-box;
  199. }
  200. .my-account .wrapper .header .headerCon .account {
  201. padding: 0 35rpx;
  202. }
  203. .my-account .wrapper .header .headerCon .account .assets .money {
  204. font-size: 72rpx;
  205. color: #fff;
  206. font-family: 'Guildford Pro';
  207. }
  208. .my-account .wrapper .header .headerCon .account .recharge {
  209. font-size: 28rpx;
  210. width: 150rpx;
  211. height: 54rpx;
  212. border-radius: 27rpx;
  213. background-color: #fff9f8;
  214. text-align: center;
  215. line-height: 54rpx;
  216. }
  217. .font_color{
  218. @include main_color(theme);
  219. }
  220. .icon_txt{
  221. font-size: 43rpx;
  222. @include main_color(theme);
  223. }
  224. .my-account .wrapper .header .headerCon .cumulative {
  225. margin-top: 46rpx;
  226. }
  227. .my-account .wrapper .header .headerCon .cumulative .item {
  228. flex: 1;
  229. padding-left: 35rpx;
  230. }
  231. .my-account .wrapper .header .headerCon .cumulative .item .money {
  232. font-size: 48rpx;
  233. font-family: 'Guildford Pro';
  234. color: #fff;
  235. margin-top: 6rpx;
  236. }
  237. .my-account .wrapper .nav {
  238. height: 155rpx;
  239. border-bottom: 1rpx solid #f5f5f5;
  240. }
  241. .my-account .wrapper .nav .item {
  242. flex: 1;
  243. text-align: center;
  244. font-size: 26rpx;
  245. color: #999;
  246. }
  247. .my-account .wrapper .nav .item .pictrue {
  248. width: 44rpx;
  249. height: 44rpx;
  250. margin: 0 auto;
  251. margin-bottom: 20rpx;
  252. }
  253. .my-account .wrapper .nav .item .pictrue image {
  254. width: 100%;
  255. height: 100%;
  256. }
  257. .my-account .wrapper .advert {
  258. padding: 0 30rpx;
  259. margin-top: 30rpx;
  260. }
  261. .my-account .wrapper .advert .item {
  262. background-color: #fff6d1;
  263. width: 332rpx;
  264. height: 118rpx;
  265. border-radius: 10rpx;
  266. padding: 0 27rpx 0 25rpx;
  267. box-sizing: border-box;
  268. font-size: 24rpx;
  269. color: #e44609;
  270. }
  271. .my-account .wrapper .advert .item.on {
  272. background-color: #fff3f3;
  273. color: #e96868;
  274. }
  275. .my-account .wrapper .advert .item .pictrue {
  276. width: 78rpx;
  277. height: 78rpx;
  278. }
  279. .my-account .wrapper .advert .item .pictrue image {
  280. width: 100%;
  281. height: 100%;
  282. }
  283. .my-account .wrapper .advert .item .text .name {
  284. font-size: 30rpx;
  285. font-weight: bold;
  286. color: #f33c2b;
  287. margin-bottom: 7rpx;
  288. }
  289. .my-account .wrapper .advert .item.on .text .name {
  290. color: #f64051;
  291. }
  292. .my-account .wrapper .list {
  293. padding: 0 30rpx;
  294. }
  295. .my-account .wrapper .list .item {
  296. margin-top: 44rpx;
  297. }
  298. .my-account .wrapper .list .item .picTxt .iconfont {
  299. width: 82rpx;
  300. height: 82rpx;
  301. border-radius: 50%;
  302. background-image: linear-gradient(to right, #ff9389 0%, #f9776b 100%);
  303. text-align: center;
  304. line-height: 82rpx;
  305. color: #fff;
  306. font-size: 40rpx;
  307. }
  308. .my-account .wrapper .list .item .picTxt .iconfont.yellow {
  309. background-image: linear-gradient(to right, #ffccaa 0%, #fea060 100%);
  310. }
  311. .my-account .wrapper .list .item .picTxt .iconfont.green {
  312. background-image: linear-gradient(to right, #a1d67c 0%, #9dd074 100%);
  313. }
  314. .my-account .wrapper .list .item .picTxt {
  315. width: 428rpx;
  316. font-size: 30rpx;
  317. color: #282828;
  318. }
  319. .my-account .wrapper .list .item .picTxt .text {
  320. width: 317rpx;
  321. }
  322. .my-account .wrapper .list .item .picTxt .text .infor {
  323. font-size: 24rpx;
  324. color: #999;
  325. margin-top: 5rpx;
  326. }
  327. .my-account .wrapper .list .item .bnt {
  328. font-size: 26rpx;
  329. color: #282828;
  330. width: 156rpx;
  331. height: 52rpx;
  332. border: 1rpx solid #ddd;
  333. border-radius: 26rpx;
  334. text-align: center;
  335. line-height: 52rpx;
  336. }
  337. .my-account .wrapper .list .item .bnt.end {
  338. font-size: 26rpx;
  339. color: #aaa;
  340. background-color: #f2f2f2;
  341. border-color: #f2f2f2;
  342. }
  343. </style>