Commit cd73661c9827acfbbf3d06d1c01fba0fceac508c

Authored by taiyuan
2 parents 69cb3adc 86b834a1

Merge branch 'dev' of http://git.vipzhuang.cn/wxd/MShopWeApp into dev

packageA/pages/goodsInfo/buy_integral.wxml deleted
1 -<view bindtap="closeSpecModal_inte" class="cover-layer"></view>  
2 - <view class="spec-model">  
3 - <view class="pding">  
4 - <icon bindtap="closeSpecModal_inte" class="modal-close" color="black" size="22" type="cancel"></icon>  
5 - <view class="spec-goods">  
6 - <image class="wh100 spec-img xc-distance-bottom" src="{{data.original_img}}" binderror="pop_err_img" data-errorimg="data.original_img"></image>  
7 - <view class="spec-goods-info">  
8 - <view class="spec-goods-name ellipsis-2">{{data.goods_name}}</view>  
9 - <view class="flex ai_end xc-val-money">  
10 - <view class="spec-goods-price">  
11 - <text wx:if="{{prom_integral}}">{{prom_integral}}积分</text>  
12 - <text wx:if="{{prom_integral && prom_price}}">+</text>  
13 - <text wx:if="{{prom_price}}">{{prom_price}}元</text>  
14 - <text wx:if="{{!prom_integral && !prom_price}}">0积分</text>  
15 - </view>  
16 - </view>  
17 -  
18 -  
19 - <view class="flex">  
20 - <view class="spec-goods-stock">已售:{{prom_act.buy_num}}</view>  
21 - <view class="spec-goods-stock">可售:{{prom_act.limitqty-prom_act.buy_num}}</view>  
22 - </view>  
23 -  
24 - </view>  
25 -  
26 - <!-- 选择门店模块 -->  
27 - <view class="flex-space-between address ai_end xc-width ">  
28 -  
29 - <view class="flex ai_end" wx:if="{{def_pick_store && def_pick_store.pickup_name}}">  
30 - <text class="fs30 xc-black3 shop_name">{{def_pick_store.pickup_name}}</text>  
31 - <view class="distance fs24 xc-ash"wx:if="{{def_pick_store.distance!=null}}">  
32 - 距离:{{def_pick_store.distance>1000?filters.toFix(def_pick_store.distance/1000,2)+"km":filters.toFix(def_pick_store.distance,0)+"m"}}  
33 -  
34 - </view>  
35 - </view>  
36 -  
37 - <!-- 没有门店的时候 -->  
38 - <view class="flex" bindtap="choice_store" wx:else>  
39 - <image class="stores-img" src="{{iurl}}/miniapp/images/stores.png"></image>  
40 - <view class="fs30" style="color:black;">选择门店</view>  
41 - </view>  
42 -  
43 - <view class="red-co fs28" bindtap="choice_store" >  
44 - 更多门店  
45 - <text class="right-arrow"></text>  
46 - </view>  
47 - </view>  
48 - <view wx:if="{{only_pk && !only_pk.length}}">(库存不足)</view>  
49 - <block wx:else>  
50 - <view wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">(库存不足)</view>  
51 - <block wx:else>  
52 - <view class="no_store" wx:if="{{def_pick_store.is_no_dis}}">(配送不匹配)</view>  
53 - <view wx:elif="{{def_pick_store && !def_pick_store.CanOutQty && sales_rules==2 && prom_type==0}}">(库存不足)</view>  
54 - </block>  
55 - </block>  
56 -  
57 - <view class="fs24 xc-ash-9f xc-distance-top "wx:if="{{def_pick_store && def_pick_store.fulladdress}}">地址:{{def_pick_store.fulladdress}}</view>  
58 -  
59 -  
60 - <!--商品的属性项目-->  
61 - <view class="xc-goods-attribute">  
62 - <view hidden="{{ismend==1}}" class="spec-name">商品属性</view>  
63 - <view hidden="{{ismend==1}}" style="max-height: 120rpx;overflow-y: auto;">  
64 - <view class="spec_bt {{gid==item.goods_id?'act':''}}" bindtap="sele_spec" data-gid='{{item.goods_id}}' wx:for="{{sku_g}}" wx:key="sku_g">  
65 - {{item.gg}}  
66 - </view>  
67 - </view>  
68 - </view>  
69 -  
70 - <view class="b_num">  
71 - <view>购买数量</view>  
72 - <view class="count">  
73 - <view bindtap="subCartNum_inte" class="sub">-</view>  
74 - <input bindblur="inputCartNum_inte" type="number" value="{{goodsInputNum}}"></input>  
75 - <view bindtap="addCartNum_inte" class="add">+</view>  
76 - </view>  
77 - </view>  
78 - </view>  
79 -  
80 - <!-- 按钮部分 -->  
81 - <view class="spec-cart-btns">  
82 - <!-- 根本就找不到门店 -->  
83 - <block wx:if="{{def_pick_store && def_pick_store.is_no_dis}}">  
84 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">配送不匹配</view>  
85 - </block>  
86 -  
87 - <block wx:else>  
88 -  
89 - <!-- 根本就找不到门店 -->  
90 - <block wx:if="{{!only_pk && !def_pickpu_list}}">  
91 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>  
92 - </block>  
93 - <block wx:else>  
94 -  
95 -  
96 - <block wx:if="{{only_pk.length && !only_pk.length}}">  
97 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>  
98 - </block>  
99 - <block wx:else>  
100 - <block wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">  
101 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>  
102 - </block>  
103 - <block wx:else>  
104 - <block wx:if="{{!def_pick_store}}">  
105 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">请先选择门店</view>  
106 - </block>  
107 - <block wx:else>  
108 - <block wx:if="{{data.store_count<=0}}">  
109 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>  
110 - </block>  
111 - <block wx:else>  
112 - <view bindtap="addCart_inte" class="spec-cart-btn spec-buy" data-action="buy">立即兑换</view>  
113 - </block>  
114 -  
115 - </block>  
116 - </block>  
117 - </block>  
118 - </block>  
119 - </block>  
120 - </view>  
121 -  
122 -  
123 - </view>  
124 - </view>  
125 - <view class="clear"></view>  
126 \ No newline at end of file 0 \ No newline at end of file
packageA/pages/goodsInfo/buy_integral_normal.wxml deleted
1 -<view bindtap="closeSpecModal_inte_normal" class="cover-layer"></view>  
2 - <view class="spec-model">  
3 - <view class="pding">  
4 - <icon bindtap="closeSpecModal_inte_normal" class="modal-close" color="black" size="22" type="cancel"></icon>  
5 - <view class="spec-goods">  
6 - <image class="wh100 spec-img xc-distance-bottom" src="{{sele_g.original_img}}" binderror="pop_err_img" data-errorimg="data.original_img"></image>  
7 - <view class="spec-goods-info">  
8 - <view class="spec-goods-name ellipsis-2">{{sele_g.goods_name}}</view>  
9 - <view class="flex ai_end xc-val-money">  
10 - <text class="fs20">¥</text>  
11 - <!-- 如果是等级会员,且有等级价 -->  
12 - <block wx:if="{{card_field && sele_g[card_field]>0}}">{{sele_g[card_field]}} </block>  
13 - <block wx:else>{{sele_g.shop_price}}</block>  
14 - </view>  
15 -  
16 - <view class="flex">  
17 - <view class="spec-goods-stock">已售:{{sele_g.sales_sum}}</view>  
18 - <block wx:if="{{sales_rules==2}}">  
19 - <view class="spec-goods-stock" wx:if="{{def_pick_store && def_pick_store.CanOutQty}}">可售:{{def_pick_store.CanOutQty}}</view>  
20 - <view class="spec-goods-stock" wx:else>可售:0</view>  
21 - </block>  
22 - <block wx:else><view class="spec-goods-stock">可售:{{sele_g.store_count}}</view></block>  
23 - </view>  
24 -  
25 -  
26 - </view>  
27 -  
28 - <!-- 选择门店模块 -->  
29 - <view class="flex-space-between address ai_end xc-width ">  
30 -  
31 - <view class="flex ai_end" wx:if="{{def_pick_store && def_pick_store.pickup_name}}">  
32 - <text class="fs30 xc-black3 shop_name">{{def_pick_store.pickup_name}}</text>  
33 - <view class="distance fs24 xc-ash"wx:if="{{def_pick_store.distance!=null}}">  
34 - 距离:{{def_pick_store.distance>1000?filters.toFix(def_pick_store.distance/1000,2)+"km":filters.toFix(def_pick_store.distance,0)+"m"}}  
35 -  
36 - </view>  
37 - </view>  
38 -  
39 - <!-- 没有门店的时候 -->  
40 - <view class="flex" bindtap="choice_store" wx:else>  
41 - <image class="stores-img" src="{{iurl}}/miniapp/images/stores.png"></image>  
42 - <view class="fs30" style="color:black;">选择门店</view>  
43 - </view>  
44 -  
45 - <view class="red-co fs28" bindtap="choice_store" >  
46 - 更多门店  
47 - <text class="right-arrow"></text>  
48 - </view>  
49 - </view>  
50 - <view wx:if="{{only_pk && !only_pk.length}}">(库存不足)</view>  
51 - <block wx:else>  
52 - <view wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">(库存不足)</view>  
53 - <block wx:else>  
54 - <view class="no_store" wx:if="{{def_pick_store.is_no_dis}}">(配送不匹配)</view>  
55 - <view wx:elif="{{def_pick_store && !def_pick_store.CanOutQty && sales_rules==2 && prom_type==0}}">(库存不足)</view>  
56 - </block>  
57 - </block>  
58 - <view class="fs24 xc-ash-9f xc-distance-top "wx:if="{{def_pick_store && def_pick_store.fulladdress}}">地址:{{def_pick_store.fulladdress}}</view>  
59 -  
60 -  
61 - <!--商品的属性项目-->  
62 - <view class="xc-goods-attribute">  
63 - <view hidden="{{ismend==1}}" class="spec-name">商品属性</view>  
64 - <view hidden="{{ismend==1}}" style="max-height: 120rpx;overflow-y: auto;">  
65 - <view class="spec_bt {{gid==item.goods_id?'act':''}}" bindtap="sele_spec" data-gid='{{item.goods_id}}' wx:for="{{sku_g}}" wx:key="sku_g">  
66 - {{item.gg}}  
67 - </view>  
68 - </view>  
69 - </view>  
70 -  
71 - <view class="b_num">  
72 - <view>购买数量</view>  
73 - <view class="count">  
74 - <view bindtap="subCartNum" class="sub">-</view>  
75 - <input bindblur="inputCartNum" type="number" value="{{goodsInputNum}}"></input>  
76 - <view bindtap="addCartNum" class="add">+</view>  
77 - </view>  
78 - </view>  
79 - </view>  
80 -  
81 - <!-- 按钮部分 -->  
82 - <view class="spec-cart-btns">  
83 -  
84 -  
85 - <!-- 根本就找不到门店 -->  
86 - <block wx:if="{{def_pick_store && def_pick_store.is_no_dis}}">  
87 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">配送不匹配</view>  
88 - </block>  
89 - <block wx:else>  
90 - <!-- 根本就找不到门店 -->  
91 - <block wx:if="{{!only_pk && !def_pickpu_list}}">  
92 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>  
93 - </block>  
94 - <block wx:else>  
95 -  
96 -  
97 - <block wx:if="{{only_pk.length && !only_pk.length}}">  
98 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>  
99 - </block>  
100 - <block wx:else>  
101 - <block wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">  
102 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>  
103 - </block>  
104 - <block wx:else>  
105 - <block wx:if="{{!def_pick_store}}">  
106 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">请先选择门店</view>  
107 - </block>  
108 - <block wx:else>  
109 - <block wx:if="{{data.store_count<=0}}">  
110 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>  
111 - </block>  
112 - <block wx:else>  
113 - <view class="flex jc_sb">  
114 - <view class="spec-cart-btn spec-buy w40" bindtap="addCart"  
115 - data-action="add" style="background-color: #ffb03f;">加入购物车</view>  
116 - <view class="spec-cart-btn spec-buy w40" bindtap="addCart"  
117 - data-action="buy">立即购买</view>  
118 - </view>  
119 - </block>  
120 -  
121 - </block>  
122 - </block>  
123 - </block>  
124 - </block>  
125 - </block>  
126 - </view>  
127 -  
128 -  
129 - </view>  
130 - </view>  
131 - <view class="clear"></view>  
132 \ No newline at end of file 0 \ No newline at end of file
packageA/pages/goodsInfo/buy_pt.wxml deleted
1 -<view bindtap="closeSpecModal" class="cover-layer"></view>  
2 - <view class="spec-model">  
3 - <view class="pding">  
4 - <icon bindtap="closeSpecModal" class="modal-close" color="gray" size="22" type="cancel"></icon>  
5 -  
6 - <!-- 商品名称 -->  
7 - <view class="spec-goods">  
8 - <image class="wh100 spec-img xc-distance-bottom" src="{{data.original_img}}" binderror="pop_err_img" data-errorimg="data.original_img"></image>  
9 - <view class="spec-goods-info">  
10 - <view class="spec-goods-name ellipsis-1">{{sele_g.goods_name}}</view>  
11 - <view class="flex ai_end xc-val-money {{sele_g[card_field]}}" >  
12 - <view class="spec-goods-price" wx:if="{{is_normal==1}}" >  
13 - <!-- 如果是等级会员,且有等级价 -->  
14 - <block wx:if="{{card_field && sele_g[card_field]>0}}">  
15 - ¥ {{sele_g[card_field]}}  
16 - </block>  
17 - <block wx:else>  
18 - ¥ {{sele_g.shop_price}}  
19 - </block>  
20 - </view>  
21 - <view class="spec-goods-price" wx:else>¥ {{prom_price}}</view>  
22 - </view>  
23 -  
24 - <block wx:if="{{is_normal==1}}">  
25 - <view class="flex">  
26 - <view class="spec-goods-stock">已售:{{sele_g.sales_sum}}</view>  
27 - <block wx:if="{{sales_rules==2}}">  
28 - <view class="spec-goods-stock" wx:if="{{def_pick_store && def_pick_store.CanOutQty}}">可售:{{def_pick_store.CanOutQty}}</view>  
29 - <view class="spec-goods-stock" wx:else>可售:0</view>  
30 - </block>  
31 - <block wx:else><view class="spec-goods-stock">可售:{{sele_g.store_count}}</view></block>  
32 - </view>  
33 - </block>  
34 - <block wx:if="{{is_normal==0}}">  
35 - <view class="flex">  
36 - <view class="spec-goods-stock" wx:if="{{prom_st>0}}">已售:{{prom_act.buy_num}}</view>  
37 - <view class="spec-goods-stock" wx:else >已售:{{prom_act.buy_num}}</view>  
38 - <view class="spec-goods-stock">可售:{{prom_act.goods_num-prom_act.buy_num}}</view>  
39 - </view>  
40 - </block>  
41 - </view>  
42 -  
43 - </view>  
44 -  
45 -  
46 - <view style="clear: both"></view>  
47 - <view style="margin-top: 20rpx">  
48 - <view class="flex-space-between address ai_end xc-width ">  
49 -  
50 - <view class="flex ai_end" wx:if="{{def_pick_store && def_pick_store.pickup_name}}">  
51 - <text class="fs30 xc-black3 shop_name">{{def_pick_store.pickup_name}}</text>  
52 -  
53 -  
54 - <view class="distance fs24 xc-ash"wx:if="{{def_pick_store.distance!=null}}">  
55 - 距离:{{def_pick_store.distance>1000?filters.toFix(def_pick_store.distance/1000,2)+"km":filters.toFix(def_pick_store.distance,0)+"m"}}  
56 -  
57 - </view>  
58 - </view>  
59 -  
60 - <!-- 没有门店的时候 -->  
61 - <view class="flex" bindtap="choice_store" wx:else>  
62 - <image class="stores-img" src="{{iurl}}/miniapp/images/stores.png"></image>  
63 - <view class="fs28 xc-ash-9f">选择门店</view>  
64 - </view>  
65 -  
66 - <view class="red-co fs28" bindtap="choice_store" >  
67 - 更多门店  
68 - <text class="right-arrow"></text>  
69 - </view>  
70 - </view>  
71 - <view class="no_store" wx:if="{{def_pick_store.is_no_dis}}">(配送不匹配)</view>  
72 - <view class="no_store" wx:elif="{{is_normal && def_pick_store && def_pick_store.CanOutQty<=0}}">(库存不足)</view>  
73 - <view class="fs24 xc-ash-9f xc-distance-top "wx:if="{{def_pick_store && def_pick_store.pickup_name}}">地址:{{def_pick_store.fulladdress}}</view>  
74 - </view>  
75 - <!----商品的属性项目---->  
76 - <view>  
77 - <view hidden="{{ismend==1}}" class="spec-name">商品属性</view>  
78 - <block wx:if="{{is_normal==0}}">  
79 - <view hidden="{{ismend==1}}" class="flex">  
80 - <view class="spec_bt {{gid==item.goods_id?'act':''}}" bindtap="sele_spec" data-gid='{{item.goods_id}}' wx:for="{{sku_g}}" wx:key="sku_g">{{item.gg}}  
81 - </view>  
82 - </view>  
83 - </block>  
84 -  
85 - <block wx:else>  
86 - <view hidden="{{ismend==1}}" class="flex">  
87 - <view class="spec_bt {{gid==item.goods_id?'act':''}}" bindtap="sele_spec" data-gid='{{item.goods_id}}' wx:for="{{sku_g}}" wx:key="sku_g">{{item.gg}}  
88 - </view>  
89 - </view>  
90 - </block>  
91 - <view class="clear"></view>  
92 - </view>  
93 -  
94 -  
95 - <view>  
96 - <!--<view bindtap="getmendian" class="quhuo logistics-item" hidden="{{ismend==1}}">-->  
97 - <!--<view wx:if="{{sto_sele_name==''}}">取货门店-->  
98 - <!--<text class='small'>(选择门店)</text>-->  
99 - <!--</view>-->  
100 - <!--<view wx:else>{{sto_sele_name}}</view>-->  
101 - <!--<view class="item-img">-->  
102 - <!--<image class="wh100" src="{{iurl}}/miniapp/images/icon-arrowdown.png"></image>-->  
103 - <!--</view>-->  
104 - <!--</view>-->  
105 -  
106 -  
107 - <view class="b_num" hidden="{{ismend==1}}" style="margin-top: 20rpx">  
108 - <view>购买数量</view>  
109 - <view class="count">  
110 - <view bindtap="subCartNum" class="sub">-</view>  
111 - <input bindblur="inputCartNum" class="xc-val-fream" type="number" value="{{goodsInputNum}}"></input>  
112 - <view bindtap="addCartNum" class="add">+</view>  
113 - </view>  
114 - </view>  
115 -  
116 - <view class="clear"></view>  
117 - <!---当选取门店的时候会显示门店的选项---->  
118 - <view hidden="{{ismend==0}}" class="sto_v">  
119 - <view class="title" hidden="{{is_sec_mend==1}}" bindtap="hidemend">  
120 - <image class="tubiao" src="{{iurl}}/miniapp/images/icon-left.png"></image>选择门店  
121 - </view>  
122 - <!-----第一级显示------>  
123 - <view class="itemlists" hidden="{{is_sec_mend==1}}">  
124 - <block wx:if="{{is_show_sto_cat>0}}">  
125 - <view wx:for="{{all_sto}}" wx:key="all_sto" class="item" bindtap="show_sec" data-index="{{index}}">{{item.name}}</view>  
126 - </block>  
127 - <block wx:else>  
128 - <view wx:for="{{only_pk}}" wx:key="only_pk" class="item" bindtap="hidemend" data-p_id="{{item.pickup_id}}" data-p_name="{{item.pickup_name}}" data-p_dis="{{item.distr_type}}">{{item.pickup_name}}  
129 - </view>  
130 - </block>  
131 - </view>  
132 - <!-----第二级显示------>  
133 - <view class="stitle" hidden="{{is_sec_mend==0}}" bindtap="hide_sec_mend">  
134 - <image class="tubiao" src="{{iurl}}/miniapp/images/icon-left.png"></image>{{sec_sto.name}}</view>  
135 - <view class="itemlists" hidden="{{is_sec_mend==0}}">  
136 - <view wx:for="{{sec_sto.s_arr}}" wx:key="{{index}}" class="item" bindtap="hidemend" data-p_id="{{item.pickup_id}}" data-p_name="{{item.pickup_name}}" data-p_dis="{{item.distr_type}}">{{item.pickup_name}}  
137 - </view>  
138 - </view>  
139 - </view>  
140 - </view>  
141 - </view>  
142 - <view class="pt_qd">  
143 - <block wx:if="{{is_normal==1}}">  
144 - <!-- 按钮部分 -->  
145 - <view class="spec-cart-btns">  
146 - <!-- 根本就找不到门店 -->  
147 - <block wx:if="{{def_pick_store && def_pick_store.is_no_dis}}">  
148 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">配送不匹配</view>  
149 - </block>  
150 - <block wx:else>  
151 -  
152 - <!-- 根本就找不到门店 -->  
153 - <block wx:if="{{!only_pk && !def_pickpu_list}}">  
154 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>  
155 - </block>  
156 - <block wx:else>  
157 -  
158 -  
159 - <block wx:if="{{only_pk.length && !only_pk.length}}">  
160 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999;">库存不足</view>  
161 - </block>  
162 - <block wx:else>  
163 - <block wx:if="{{def_pickpu_list && !def_pickpu_list.length}}">  
164 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>  
165 - </block>  
166 - <block wx:else>  
167 - <block wx:if="{{!def_pick_store}}">  
168 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">请先选择门店</view>  
169 - </block>  
170 - <block wx:else>  
171 - <block wx:if="{{data.store_count<=0}}">  
172 - <view class="spec-cart-btn fs32" data-action="add" style="background-color: #dcdcdc;color: #999">库存不足</view>  
173 - </block>  
174 - <block wx:else>  
175 - <view bindtap="addCart_pt" class="spec-cart-btn spec-buy" data-action="buy">立即购买</view>  
176 - </block>  
177 -  
178 - </block>  
179 - </block>  
180 - </block>  
181 - </block>  
182 - </block>  
183 - </view>  
184 -  
185 - </block>  
186 - <block wx:else>  
187 - <!-- 根本就找不到门店 -->  
188 - <block wx:if="{{def_pick_store && def_pick_store.is_no_dis}}">  
189 - <view class="spec-cart-btn spec-buy w100" style="background-color: #dcdcdc;color: #999;">配送不匹配</view>  
190 - </block>  
191 - <block wx:else>  
192 - <view bindtap="addCart_pt" class="spec-cart-btn spec-buy w100" data-action="buy">确定</view>  
193 - </block>  
194 - </block>  
195 -  
196 -  
197 - </view>  
198 - </view>  
199 -  
200 \ No newline at end of file 0 \ No newline at end of file