Commit 64b527f38a86af6d7668880a0227950a6affc693

Authored by 王强
1 parent 39674e76

工会商品列表首页,页面开发完成~

src/components/columnListBox/columnListBox.vue
@@ -10,8 +10,10 @@ @@ -10,8 +10,10 @@
10 <div class="item-box" v-if="!(index % 2)" v-for="(item, index) in lists.list || lists" :key="index"> 10 <div class="item-box" v-if="!(index % 2)" v-for="(item, index) in lists.list || lists" :key="index">
11 11
12 <!-- 商品组件 --> 12 <!-- 商品组件 -->
13 - <goods-item-7 v-if="com == '7'" :goodType="goodType" @jump="jump" @primary="primary"  
14 - :item="item"> 13 + <goods-item-7 v-if="com == '7'" @jump="jump" @primary="primary"
  14 + :item="item"
  15 + :goodType="goodType"
  16 + >
15 </goods-item-7> 17 </goods-item-7>
16 </div> 18 </div>
17 </div> 19 </div>
@@ -23,8 +25,10 @@ @@ -23,8 +25,10 @@
23 <div class="item-box" v-if="index % 2" v-for="(item, index) in lists.list || lists" :key="index"> 25 <div class="item-box" v-if="index % 2" v-for="(item, index) in lists.list || lists" :key="index">
24 26
25 <!-- 商品组件 --> 27 <!-- 商品组件 -->
26 - <goods-item-7 v-if="com == '7'" :goodType="goodType" @jump="jump" @primary="primary"  
27 - :item="item"> 28 + <goods-item-7 v-if="com == '7'" @jump="jump" @primary="primary"
  29 + :item="item"
  30 + :goodType="goodType"
  31 + >
28 </goods-item-7> 32 </goods-item-7>
29 </div> 33 </div>
30 </div> 34 </div>
src/components/goodsItem_7/goodsItem_7.less
@@ -134,5 +134,35 @@ @@ -134,5 +134,35 @@
134 } 134 }
135 } 135 }
136 } 136 }
  137 + &.g-2 {
  138 + .content-box {
  139 + .title {
  140 + display: block;
  141 + font-weight: 500;
  142 + min-height: unset;
  143 + white-space: nowrap;
  144 + text-overflow: ellipsis;
  145 + overflow: hidden;
  146 + }
  147 + .price-box {
  148 + margin-top: 15px;
  149 + margin-bottom: 15px;
  150 + .left {
  151 + .y {
  152 + font-size: 36px;
  153 + }
  154 + .integer {
  155 + font-size: 36px;
  156 + }
  157 + .decimal {
  158 + font-size: 36px;
  159 + }
  160 + }
  161 + .right {
  162 + display: none;
  163 + }
  164 + }
  165 + }
  166 + }
137 } 167 }
138 } 168 }
src/components/goodsItem_7/goodsItem_7.vue
1 <template> 1 <template>
2 <div class="goods-item-7-box" v-if="item" @click="jump(item)"> 2 <div class="goods-item-7-box" v-if="item" @click="jump(item)">
3 - <div class="item"> 3 + <div class="item" :class="'g-' + goodType">
4 <div class="img-box"> 4 <div class="img-box">
5 <img v-lazy="item.simg + SIGN.MIDDLE" class="img" /> 5 <img v-lazy="item.simg + SIGN.MIDDLE" class="img" />
6 - <!-- 补货中按钮 -->  
7 - <div v-if="item.stock && item.stock == 0" class="goods_active">  
8 - 已售罄  
9 - </div>  
10 - <!-- goodType=1为积分商城定义实物商品展示tip积分+现金形式 -->  
11 - <div v-if="goodType == 1" class="goods_tip">  
12 - 积分+现金  
13 - </div> 6 +
  7 + <!-- 补货中按钮 -->
  8 + <div v-if="item.stock && item.stock == 0" class="goods_active">
  9 + 已售罄
  10 + </div>
  11 +
  12 + <!-- goodType=1为积分商城定义实物商品展示tip积分+现金形式 -->
  13 + <div v-if="goodType == 1" class="goods_tip">
  14 + 积分+现金
  15 + </div>
14 </div> 16 </div>
15 <div class="content-box"> 17 <div class="content-box">
16 <div class="title">{{item.title}}</div> 18 <div class="title">{{item.title}}</div>
src/components/tabsCom/tabsCom.less
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 .tab { 10 .tab {
11 margin-right: 50px; 11 margin-right: 50px;
12 padding: 23px 0 12px 0; 12 padding: 23px 0 12px 0;
13 - color: #B4B4B4; 13 + color: #999999;
14 &:last-child { 14 &:last-child {
15 margin-right: 0; 15 margin-right: 0;
16 } 16 }
@@ -25,6 +25,12 @@ @@ -25,6 +25,12 @@
25 height: 4px; 25 height: 4px;
26 border-radius: 3px; 26 border-radius: 3px;
27 } 27 }
  28 + &.active {
  29 + color: #000000;
  30 + .line {
  31 + background-color: #FC1540;
  32 + }
  33 + }
28 } 34 }
29 } 35 }
30 } 36 }
31 \ No newline at end of file 37 \ No newline at end of file
src/components/tabsCom/tabsCom.vue
1 <template> 1 <template>
2 <div class="tabs-com"> 2 <div class="tabs-com">
3 <div class="box"> 3 <div class="box">
4 - <div class="tab" :style="{'color': (index == active) ? item.titleColor : ''}" @click="change(item, index)"> 4 + <div class="tab" :class="{'active': (index == active)}" :style="{'color': (index == active) ? item.titleColor : ''}" @click="change(item, index)">
5 <div class="title">{{item.title}}</div> 5 <div class="title">{{item.title}}</div>
6 <div class="line" :style="{'backgroundColor': (index == active) ? item.titleColor : ''}"></div> 6 <div class="line" :style="{'backgroundColor': (index == active) ? item.titleColor : ''}"></div>
7 </div> 7 </div>
src/pages/labourUnion/labourUnion.less
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
16 .back-box { 16 .back-box {
17 background-color: #ffffff; 17 background-color: #ffffff;
18 width: 100%; 18 width: 100%;
  19 + border-bottom: 1px solid #E5E5E5;
19 } 20 }
20 } 21 }
21 .pl { 22 .pl {
@@ -44,25 +45,102 @@ @@ -44,25 +45,102 @@
44 } 45 }
45 .main-box { 46 .main-box {
46 .header-box { 47 .header-box {
47 - width: 100%; 48 + margin: 30px auto 30px auto;
  49 + width: 690px;
48 height: auto; 50 height: auto;
  51 + border-radius: 16px;
  52 + overflow: hidden;
49 .header-img { 53 .header-img {
50 display: block; 54 display: block;
51 width: 100%; 55 width: 100%;
52 height: auto; 56 height: auto;
53 } 57 }
54 } 58 }
  59 + .balance-box {
  60 + background-repeat: no-repeat;
  61 + background-size: 100% 100%;
  62 + margin: 30px auto;
  63 + width: 690px;
  64 + height: 210px;
  65 + .b-box {
  66 + display: flex;
  67 + flex-direction: column;
  68 + justify-content: space-between;
  69 + margin: 0 auto;
  70 + padding: 40px 0 20px 0;
  71 + width: 630px;
  72 + height: auto;
  73 + .balance-top {
  74 + display: flex;
  75 + justify-content: space-between;
  76 + align-items: flex-start;
  77 + .title {
  78 + color: rgba(255, 255, 255, 0.69);
  79 + font-size: 28px;
  80 + font-weight: 500;
  81 + }
  82 + .sub-title {
  83 + color: #FFE450;
  84 + font-size: 22px;
  85 + font-weight: 400;
  86 + }
  87 + }
  88 + .balance-bottom {
  89 + display: flex;
  90 + justify-content: space-between;
  91 + align-items: center;
  92 + margin-top: 20px;
  93 + .price-box {
  94 + display: flex;
  95 + justify-content: flex-start;
  96 + align-items: baseline;
  97 + color: #FFFFFF;
  98 + font-weight: bold;
  99 + .sy {
  100 + font-size: 60px;
  101 + }
  102 + .integer {
  103 + display: flex;
  104 + font-size: 84px;
  105 + }
  106 + .decimal {
  107 + font-size: 60px;
  108 + }
  109 + }
  110 + .btn {
  111 + &.btn-default {
  112 + display: flex;
  113 + justify-content: center;
  114 + align-items: center;
  115 + background: linear-gradient(180deg, #FFE653 0%, #FFC829 100%);
  116 + padding: 10px 24px;
  117 + border-radius: 30px;
  118 + .text {
  119 + color: #3A3A3B;
  120 + font-size: 28px;
  121 + font-weight: 500;
  122 + }
  123 + .icon-back-arrow-right {
  124 + display: block;
  125 + width: 30px;
  126 + height: 30px;
  127 + }
  128 + }
  129 + }
  130 + }
  131 + }
  132 + }
55 .tabs-box { 133 .tabs-box {
56 background-color: #ffffff; 134 background-color: #ffffff;
57 width: 100%; 135 width: 100%;
58 height: 90px; 136 height: 90px;
59 - border-top: 1px solid transparent; 137 + // border-top: 1px solid transparent;
60 border-bottom: 1px solid transparent; 138 border-bottom: 1px solid transparent;
61 &.tabsFixed { 139 &.tabsFixed {
62 position: fixed; 140 position: fixed;
63 top: 0; 141 top: 0;
64 z-index: 100; 142 z-index: 100;
65 - border-top: 1px solid #E5E5E5; 143 + // border-top: 1px solid #E5E5E5;
66 border-bottom: 1px solid #E5E5E5; 144 border-bottom: 1px solid #E5E5E5;
67 &.is-open-app { 145 &.is-open-app {
68 top: 122px; 146 top: 122px;
@@ -78,7 +156,7 @@ @@ -78,7 +156,7 @@
78 .column-list-container { 156 .column-list-container {
79 margin-top: 30px; 157 margin-top: 30px;
80 .section { 158 .section {
81 - background-color: #ffffff; 159 + // background-color: #ffffff;
82 margin: 0 auto 40px auto; 160 margin: 0 auto 40px auto;
83 width: 690px; 161 width: 690px;
84 height: auto; 162 height: auto;
@@ -88,14 +166,10 @@ @@ -88,14 +166,10 @@
88 margin-bottom: 0; 166 margin-bottom: 0;
89 } 167 }
90 &.goods-list { 168 &.goods-list {
91 - /deep/ .goods-item-8-box {  
92 - .main-box {  
93 - border-bottom: 1px solid #EAEAEA;  
94 - }  
95 - }  
96 - /deep/ .goods-item-8-box:last-child {  
97 - .main-box {  
98 - border-bottom: none; 169 + .column-list-box {
  170 + /deep/ .item-box {
  171 + border: 1px solid #F1F0F0;
  172 + border-radius: 16px;
99 } 173 }
100 } 174 }
101 .discount-flag { 175 .discount-flag {
src/pages/labourUnion/labourUnion.vue
1 <template> 1 <template>
2 - <div class="labour-union-page" :style="{'backgroundColor': tabs.list[tabs.active].color ? tabs.list[tabs.active].color : ''}" v-if="tabs.list[tabs.active]"> 2 + <div class="labour-union-page" v-if="tabs.list[tabs.active]">
3 3
4 <!-- 导航区域 --> 4 <!-- 导航区域 -->
5 <div class="nav-box" :style="'padding-top: ' + $parent.top.value + 'px'" ref='navBox'> 5 <div class="nav-box" :style="'padding-top: ' + $parent.top.value + 'px'" ref='navBox'>
@@ -26,6 +26,33 @@ @@ -26,6 +26,33 @@
26 <img :src="tabs.list[tabs.active].img + SIGN.BIG" class="header-img" /> 26 <img :src="tabs.list[tabs.active].img + SIGN.BIG" class="header-img" />
27 </div> 27 </div>
28 28
  29 + <!-- 余额展示区块 -->
  30 + <div class="balance-box" :style="{'backgroundImage': 'url(' + balanceBg + ')'}">
  31 + <div class="b-box">
  32 + <div class="balance-top">
  33 + <div class="title">
  34 + 我的余额
  35 + </div>
  36 + <div class="sub-title">
  37 + 工会福利商品仅限网家家支付
  38 + </div>
  39 + </div>
  40 + <div class="balance-bottom">
  41 + <div class="price-box">
  42 + <div class="sy">¥</div>
  43 + <div class="integer">{{getInteger(1950.00)}}.</div>
  44 + <div class="decimal">{{getDecimal(1950.00)}}</div>
  45 + </div>
  46 + <div class="btn btn-default" @click="toOrderList">
  47 + <div class="text">
  48 + 购买记录
  49 + </div>
  50 + <img src="static/img/icon_back_arrow_right.png" class="icon-back-arrow-right" />
  51 + </div>
  52 + </div>
  53 + </div>
  54 + </div>
  55 +
29 <!-- tab导航 --> 56 <!-- tab导航 -->
30 <div class="tabs-box" :class="{'is-cnlive': isCNLive.value, 'is-open-app': $parent.isOpenApp.value, 'is-hide': $route.query.hideBack == true, 'tabsFixed': tabs.fixed}" ref='tabsBox'> 57 <div class="tabs-box" :class="{'is-cnlive': isCNLive.value, 'is-open-app': $parent.isOpenApp.value, 'is-hide': $route.query.hideBack == true, 'tabsFixed': tabs.fixed}" ref='tabsBox'>
31 58
@@ -46,7 +73,8 @@ @@ -46,7 +73,8 @@
46 <!-- 商品样式 7 列表 --> 73 <!-- 商品样式 7 列表 -->
47 <column-list-box class="column-list-box" @jump="toDetail" @primary="primary" 74 <column-list-box class="column-list-box" @jump="toDetail" @primary="primary"
48 :lists="lists[tabs.active]" 75 :lists="lists[tabs.active]"
49 - com="7"> 76 + com='7'
  77 + goodType='2'>
50 </column-list-box> 78 </column-list-box>
51 </div> 79 </div>
52 </van-list> 80 </van-list>
@@ -79,19 +107,20 @@ @@ -79,19 +107,20 @@
79 name: 'labourUnionPage', 107 name: 'labourUnionPage',
80 data () { 108 data () {
81 return { 109 return {
82 - title: "", // 标题  
83 - backs: null, // 后退按钮组 110 + title: "", // 标题
  111 + backs: null, // 后退按钮组
  112 + balanceBg: 'static/img/balance_bg.png', // 余额区块背景图片
84 CALL_STATUS: { 113 CALL_STATUS: {
85 - INIT: "init", // 初始化页面  
86 - LOAD_MORE: "loadMore" // 加载更多 114 + INIT: "init", // 初始化页面
  115 + LOAD_MORE: "loadMore" // 加载更多
87 }, 116 },
88 - tabs: { // tabs设置  
89 - fixed: false, // 是否吸顶  
90 - offsetTop: 0, // 距离顶部距离  
91 - active: 0, // 活动项  
92 - list: [] // tabs数组 117 + tabs: { // tabs设置
  118 + fixed: false, // 是否吸顶
  119 + offsetTop: 0, // 距离顶部距离
  120 + active: 0, // 活动项
  121 + list: [] // tabs数组
93 }, 122 },
94 - lists: [] // 列表数据 123 + lists: [] // 列表数据
95 } 124 }
96 }, 125 },
97 components: { 126 components: {
@@ -101,6 +130,35 @@ @@ -101,6 +130,35 @@
101 columnListBox, 130 columnListBox,
102 gotoTop 131 gotoTop
103 }, 132 },
  133 + computed: {
  134 +
  135 + /**
  136 + * 获取输入数字的整数部分
  137 + */
  138 + getInteger () {
  139 + return (number) => {
  140 + return parseInt(number);
  141 + }
  142 + },
  143 +
  144 + /**
  145 + * 获取输入数字的小数部分
  146 + */
  147 + getDecimal () {
  148 + return (number) => {
  149 +
  150 + // 拆分数字
  151 + let numberArr = number.toString().split(".");
  152 +
  153 + // 判断是否有效数部分
  154 + if (numberArr.length === 2) {
  155 + return numberArr[1];
  156 + } else {
  157 + return "00";
  158 + }
  159 + }
  160 + }
  161 + },
104 created() { 162 created() {
105 163
106 // 设置标题 164 // 设置标题
@@ -116,12 +174,12 @@ @@ -116,12 +174,12 @@
116 back: { 174 back: {
117 icon: "static/img/icon_back.png" 175 icon: "static/img/icon_back.png"
118 }, 176 },
119 - funcArray: [  
120 - {  
121 - icon: "static/img/icon_share.png",  
122 - func: this.toShare  
123 - }  
124 - ] 177 + // funcArray: [
  178 + // {
  179 + // icon: "static/img/icon_share.png",
  180 + // func: this.toShare
  181 + // }
  182 + // ]
125 } 183 }
126 }); 184 });
127 } 185 }
@@ -253,7 +311,7 @@ @@ -253,7 +311,7 @@
253 311
254 /** 312 /**
255 * 获取店铺首页推荐商品列表 313 * 获取店铺首页推荐商品列表
256 - * @param {object} CALL_STATUS [何处触发请求] 314 + * @param {Object} CALL_STATUS [何处触发请求]
257 */ 315 */
258 getShopRecommendGoods(CALL_STATUS = this.CALL_STATUS.LOAD_MORE) { 316 getShopRecommendGoods(CALL_STATUS = this.CALL_STATUS.LOAD_MORE) {
259 317
@@ -279,8 +337,8 @@ @@ -279,8 +337,8 @@
279 337
280 /** 338 /**
281 * 获取店铺首页推荐商品列表回调 339 * 获取店铺首页推荐商品列表回调
282 - * param {res} [服务器返回数据]  
283 - * param {ext} [扩展参数] 340 + * @param {Object} res [服务器返回数据]
  341 + * @param {Object} ext [扩展参数]
284 */ 342 */
285 getShopRecommendGoodsCallback(res, ext) { 343 getShopRecommendGoodsCallback(res, ext) {
286 344
@@ -339,6 +397,27 @@ @@ -339,6 +397,27 @@
339 }, 397 },
340 398
341 /** 399 /**
  400 + * 跳转购买记录页面(全部订单页面)
  401 + */
  402 + toOrderList() {
  403 +
  404 + console.log('toOrderList');
  405 +
  406 + // 判断App内
  407 + if (this.isCNLive.value) {
  408 +
  409 +
  410 +
  411 +
  412 +
  413 + } else {
  414 +
  415 + // App外,唤起App
  416 + this.openApp();
  417 + }
  418 + },
  419 +
  420 + /**
342 * 跳转商品详情 421 * 跳转商品详情
343 * @param {Object} item [数据对象] 422 * @param {Object} item [数据对象]
344 */ 423 */
static/img/balance_bg.png 0 → 100644

58.5 KB

static/img/icon_back_arrow_right.png 0 → 100644

243 Bytes