huangzhe 3 年 前
コミット
805b1afcd8

+ 2 - 0
src/App.vue

xqd
@@ -148,4 +148,6 @@
     /* #ifdef H5 */
     //uni-page-head { display: none}
     /* #endif */
+	
+
 </style>

+ 2 - 2
src/components/page-component/goods/app-goods-banner.vue

xqd
@@ -229,11 +229,11 @@
     }
 
     .swiper {
-        height: #{750rpx};
+        height: #{1000rpx};
 
         .swiper-img {
             width: 100%;
-            height: #{750rpx};
+            height: #{1000rpx};
             background-size: cover;
             background-repeat: no-repeat;
             background-position: center;

+ 15 - 1
src/components/page-component/goods/bd-coupon.vue

xqd xqd xqd
@@ -1,6 +1,6 @@
 <template>
     <view class="coupon" v-if="newCoupons.length > 0">
-        <view class="marketing">
+        <view class="marketing" v-if="!isCustomEntry">
             <view class="block dir-left-nowrap cross-center" @click="setShow">
                 <text class="box-grow-0 bd-name">领券</text>
                 <view class="big-box dir-left-nowrap cross-center" v-for="(item, index) in newCoupons" :key="index">
@@ -86,6 +86,14 @@ export default {
         guarantee_title: {
             type: String
         },
+		isCustomEntry:{
+			type:Boolean,
+			default:false
+		},
+		myShow:{
+			type:Boolean,
+			default:false
+		}
     },
     data() {
         return {
@@ -142,6 +150,12 @@ export default {
         appExclusiveCoupon
     },
     watch: {
+		myShow(val){
+			this.show=val
+		},
+		show(val){
+			this.$emit("on-show-change",val);
+		},
         coupons: {
             handler(data) {
                 this.newCoupons = data.slice(0, 3);

+ 28 - 8
src/components/page-component/index/app-nav-bar.vue

xqd xqd xqd
@@ -12,13 +12,20 @@
                         :class="{'main-center app-navbar__right-center': position === 'center' && xStyle== 1, 'right__back': pagesLength > 1}"
                         class="box-grow-1 dir-left-nowrap app-navbar__right">
                         <view v-if="showLeftIcon">
-                            <app-jump-button form :open_type="link.openType"
-                                             :url="link.url"
-                                             :params="link.params"> 
-                                <view class="cross-center box-grow-0 left-icon">
-                                    <image :style="[hw_style]" :src="leftIcon"></image>
-                                </view>
-                            </app-jump-button>
+							<template v-if="xStyle==5">
+								<view class="main-left cross-center hxj-area" @click="leftClick">
+									九林语<image src="../../../static/image/index/arrow-down.png" mode=""></image>
+								</view>
+							</template>
+							<template v-else>
+								<app-jump-button form :open_type="link.openType"
+								                 :url="link.url"
+								                 :params="link.params"> 
+								    <view class="cross-center box-grow-0 left-icon">
+								        <image :style="[hw_style]" :src="leftIcon"></image>
+								    </view>
+								</app-jump-button>
+							</template>
                         </view> 
                         <view v-if="showTitle" class="cross-center box-grow-0 title">
                             <app-jump-button v-if="hasJump" form :open_type="link.openType"
@@ -198,7 +205,7 @@ export default {
             return [2, 4].indexOf(parseInt(this.xStyle)) !== -1
         },
         showLeftIcon() {
-            return [2, 3].indexOf(parseInt(this.xStyle)) !== -1 && this.leftIcon
+            return [2, 3,5].indexOf(parseInt(this.xStyle)) !== -1 && this.leftIcon
         },
         showTitle() {
             return [1, 2, 4].indexOf(parseInt(this.xStyle)) !== -1 && this.title
@@ -262,11 +269,24 @@ export default {
                 delta: 1
             })
         },
+		leftClick(){
+			this.$emit('leftClick')
+		}
     },
 }
 </script>
 
 <style lang="scss" scoped>
+	.hxj-area{
+		font-size: 28rpx;
+		font-weight: 500;
+		color: #FFFFFF;
+		image{
+			width: 24rpx;
+			height: 20rpx;
+			margin-left: 6rpx;
+		}
+	}
 /* #ifdef H5 */
 $bar-height: 0;
 /* #endif */

+ 39 - 3
src/pages.json

xqd xqd xqd xqd
@@ -110,6 +110,14 @@
 				"navigationStyle": "custom"
 			}
 
+		}, {
+			"path": "pages/index/projectInfo",
+			"style": {
+				"navigationBarTitleText": "方案详情",
+				"enablePullDownRefresh": false,
+				"navigationStyle": "custom"
+			}
+
 		}, {
 			"path": "pages/index/selectedCases",
 			"style": {
@@ -142,7 +150,25 @@
 			}
 
 		}
-	],
+	    ,{
+            "path" : "pages/index/themeArea",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "主题专区",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/sale/properties/bindBuild/bindBuild",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "",
@@ -394,7 +420,8 @@
 				{
 					"path": "goods",
 					"style": {
-						"navigationBarTitleText": "商品详情"
+						"navigationBarTitleText": "商品详情",
+						"navigationStyle": "custom"
 					}
 				}
 				// #ifdef MP
@@ -583,7 +610,16 @@
 						"navigationBarTitleText": "结算"
 					}
 				}
-			]
+			    ,{
+                    "path" : "invoice/invoice",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "填写发票",
+                    "enablePullDownRefresh": false
+                }
+                
+                }
+            ]
 		},
 		{
 			"root": "pages/poster",

+ 56 - 39
src/pages/index/components/scroll-list.vue

xqd xqd xqd xqd xqd
@@ -2,8 +2,8 @@
 	<view>
 		<scroll-view class="scroll_list" :style="{'background': background}" scroll-x="true">
 			<view class="main-left" style="padding-left: 40rpx;">
-				<view v-for="(item,index) in list" :key="index">
-					<view class="box">
+				<view v-for="(item,index) in list" :key="index" @click="goPage(item.link)">
+					<view class="box" :style="{'width':itemWidth,'height':itemHeight}">
 						<image class="image-bg" :src="item.image"></image>
 						<view class="text t-omit">{{item.title}}</view>
 					</view>
@@ -17,49 +17,63 @@
 </template>
 
 <script>
-	let defaultList=[
-					{
-						image:'../../../static/image/index/2.png',
-						title:'定制产品',
-						tag:'定制'
-					},
-					{
-						image:'../../../static/image/index/2.png',
-						title:'热销方案',
-						tag:'热销'
-					},
-					{
-						image:'../../../static/image/index/2.png',
-						title:'主题专区',
-						tag:'主题'
-					},
-					{
-						image:'../../../static/image/index/2.png',
-						title:'定制产品',
-						tag:'定制'
-					}
-				];
-	export default{
-		name:"app-scroll-list",
-		props:{
-			list:{
-				type:Array,
-				default:()=>{
+	let defaultList = [{
+			image: '../../../static/image/index/2.png',
+			title: '定制产品',
+			tag: '定制',
+			link:''
+		},
+		{
+			image: '../../../static/image/index/2.png',
+			title: '热销方案',
+			tag: '热销',
+			link:'/pages/index/hot_sale_project'
+		},
+		{
+			image: '../../../static/image/index/2.png',
+			title: '主题专区',
+			tag: '主题',
+			link:'/pages/index/themeArea'
+		},
+		{
+			image: '../../../static/image/index/2.png',
+			title: '定制产品',
+			tag: '定制'
+		}
+	];
+	export default {
+		name: "app-scroll-list",
+		props: {
+			list: {
+				type: Array,
+				default: () => {
 					return defaultList
 				}
 			},
-			background:{
-				type:String,
-				default:''
+			background: {
+				type: String,
+				default: ''
+			},
+			itemWidth:{
+				type:[String,Number],
+				default:'207rpx'
+			},
+			itemHeight:{
+				type:[String,Number],
+				default:'250rpx'
 			}
 		},
-		data(){
+		data() {
 			return {
-				
+
 			}
 		},
-		methods:{
-			
+		methods: {
+			goPage(link){
+				uni.navigateTo({
+					url:link
+				})
+			}
 		}
 	}
 </script>
@@ -67,14 +81,14 @@
 <style lang="scss" scoped>
 	.scroll_list {
 		padding: 15rpx 0 28rpx;
+
 		.box {
-			height: 250rpx;
-			width: 207rpx;
 			border-radius: 20rpx;
 			overflow: hidden;
 			position: relative;
 			z-index: 2;
 			margin-right: 20rpx;
+
 			.image-bg {
 				position: absolute;
 				z-index: -1;
@@ -85,6 +99,7 @@
 				width: 100%;
 				height: 100%;
 			}
+
 			.text {
 				width: 115rpx;
 				font-size: 28rpx;
@@ -98,8 +113,10 @@
 				z-index: 1;
 			}
 		}
+
 		.tag_list {
 			margin-top: 20rpx;
+
 			.tag {
 				background-color: rgba(238, 235, 222, 1);
 				color: rgb(167, 133, 79);

+ 6 - 1
src/pages/index/hot_sale_project.vue

xqd xqd
@@ -26,7 +26,7 @@
 						<image style="width: 206rpx;height: 136rpx;" src="../../static/image/index/2.png" mode=""></image>
 					</view>
 				</view>
-				<view class="main-between pl">
+				<view class="main-between pl" @click="goPage">
 					<view class="main-between-y">
 						<view class="title t-omit">兴城人居ins软陶简洁大气套餐软陶简洁大气套餐软陶简洁大气套餐软陶简洁大气套餐软陶简洁大气套餐软陶简洁大气套餐</view>
 						<view class="desc">已售:110套 | 266人收藏</view>
@@ -59,6 +59,11 @@
 			},
 			headHeight(e){
 				this.navbarHeight=e+'px'
+			},
+			goPage(){
+				uni.navigateTo({
+					url:'/pages/index/projectInfo?id=10'
+				})
 			}
 		}
 	}

+ 4 - 6
src/pages/index/hxj_index_component.vue

xqd xqd xqd xqd
@@ -3,7 +3,7 @@
 		<view class="swiper_cent">
 			<swiper style="height: 900rpx;" :indicator-dots="false" :autoplay="false" :interval="3000" :duration="1000"
 				@change="swiperChange" >
-				<swiper-item v-for="(item,index) in 3" :key="index" @click="gopage">
+				<swiper-item v-for="(item,index) in 3" :key="index" >
 					<image src="../../static/image/index/1.png" style="width: 100%;height: 900rpx;" mode=""></image>
 				</swiper-item>
 			</swiper>
@@ -14,8 +14,6 @@
 		</view>
 		<view class="link">
 			<view>
-				<!-- <view class="hxj">HUIXIANGJIA</view> -->
-
 				<view class="title">兴城 · 荟享家<image class="hxjImg" src="../../static/image/index/HUIXIANGJIA.png"
 						mode=""></image>
 				</view>
@@ -82,7 +80,7 @@
 					<image src="../../static/image/index/4.png" mode=""></image>
 				</view>
 				<view class="main-between-y">
-					<view class="r1">
+					<view class="r1" @click="goPage('/pages/index/selectedCases')">
 						<view class="title_2">优选</view>
 						<view class="desc_2">优选家居</view>
 						<image src="../../static/image/index/5.png" mode=""></image>
@@ -203,9 +201,9 @@
 				console.log(e.detail.current)
 				this.swiperKey = e.detail.current
 			},
-			gopage(){
+			goPage(url){
 				uni.navigateTo({
-					url:'/pages/index/hot_sale_project'
+					url:url
 				})
 			}
 		}

+ 7 - 2
src/pages/index/index.vue

xqd xqd
@@ -17,14 +17,14 @@
                          :background-color="'rgb(239 239 239 / 0)'"
                          :left-icon="diy__app_nav_bar.leftIcon"
                          :link="diy__app_nav_bar.link"
-                         :title="homePages.title"
-                         :xStyle="diy__app_nav_bar.style"
+                         :xStyle="5"
                          :hasMallSetting="diy__app_nav_bar.hasMallSetting"
                          :color="diy__app_nav_bar.color"
                          :position="diy__app_nav_bar.position"
                          :placeholder="diy__app_nav_bar.placeholder"
                          :placeholderColor="diy__app_nav_bar.placeholderColor"
 						 :hasHeight="false"
+						 @leftClick="navProperties"
             ></app-nav-bar>
 			<!-- <app-diy-page @buyProduct="buyProduct" v-if="destroy" :page-hide="pageHide" :home-pages="homePages"
                           :is_storage="is_storage" :theme="getTheme" :page_id="page_id" :is_required="is_required"
@@ -145,6 +145,11 @@
 		/* #endif */
 
 		methods: {
+			navProperties(){
+				uni.navigateTo({
+					url:'/pages/sale/properties/addProperties'
+				})
+			},
 			async loadMall() {
 				const e = await this.$request({
 					url: this.$api.index.tplIndex,

+ 1092 - 0
src/pages/index/projectInfo.vue

xqd
@@ -0,0 +1,1092 @@
+<template>
+    <app-layout>
+		<app-nav-bar v-if="true"
+		             :fixed="true"
+		             :background-color="''"
+		             :xStyle="1"
+		             :hasMallSetting="2"
+					 :hasHeight="false"
+					 @headHeight="headHeight"
+		></app-nav-bar>
+        <view v-if="!goods" class="u-goods-detail"></view>
+        <template v-if="goods">
+            <!--商品轮播图-->
+            <app-goods-banner
+                v-bind:pic-list="goods.pic_url"
+                v-bind:share="goods.share"
+                v-bind:video-url="goods.video_url"
+                v-bind:goods_id="goodsId"
+				:isCart="false"
+            ></app-goods-banner>
+			<!-- 套装内商品 -->
+            <view>
+				<view class="link ">
+					<view class="title1 main-left cross-center">套装内商品<image class="coupon_1"
+							src="../../static/image/index/coupon_1.png" mode=""></image><text
+							class="coupon_sub">IN SET GOODS</text></view>
+				
+				</view>
+				<hxj-scroll-list :itemWidth="'168rpx'" :itemHeight="'168rpx'" :list="list"></hxj-scroll-list>
+				<view class="main-between hxj-goods-name">
+					<view class="main-between-y">
+						<view class="main-left cross-center">
+							<view class="hxj-name">兴城人居ins风套装</view>
+							<view class="hxj-tags">套装</view>
+							<view class="hxj-ynum">已售3000+</view>
+						</view>
+						<view class="main-left cross-center hjx-tc-999 hjx-ts-22">
+							<view style="margin-right: 31rpx;">A1 200m²</view>
+							<view class="hjx-text-decoration-line-through">2600.00元</view>
+						</view>
+						<view class="hjx-tc-AE8445 hjx-ts-22 hjx-tw-500">券后价</view>
+						<view class="hxj-price"><text class="rmb">¥</text>2000.00<text class="dw">元</text></view>
+					</view>
+					<view class="main-between-y">
+						<view class="lq" @click="isCouponShow=!isCouponShow">领券</view>
+						<view class="se">
+							<image src="../../static/image/index/share.png" mode=""></image>分享
+						</view>
+					</view>
+				</view>
+				<view class="hxj-goods-list">
+					<view class="main-between" style="width: 560rpx;">
+						<view class="title">套装内商品</view>
+						<view class="title">数量</view>
+					</view>
+					<view class="main-between item" >
+						<view class="main-between" style="width: 560rpx;">
+							<view class="name t-omit">ins风高档皮质沙发</view>
+							<view class="num">x1</view>
+						</view>
+						<view class="zk cropss-center">展开<image src="../../static/image/user-center/arrow-bottom.png" mode=""></image></view>
+					</view>
+				</view>
+			</view>
+            <!--商品优惠券-->
+            <bd-coupon @change="setCoupon" @on-show-change="(val)=>{isCouponShow=val}" :isCustomEntry="true" :myShow="isCouponShow" :theme="getTheme" :coupons="goods_coupon_center"></bd-coupon>
+            <!--商品规格-->
+            <!-- <bd-xbc
+                :coAttr="is_open == 1 && exchangeStatus ==null ? 1 : 0"
+                :attr-list="checked && checked.attr_list"
+                :type="goodsType"
+                :guarantee-title="guarantee_title"
+                :guarantee-pic="guarantee_pic"
+                :param_content="param_content"
+                :param_name="param_name"
+                :services="services"
+                :attr-groups="attr_groups"
+                :goods-stock="goods_num"
+                @openAttr="clickAttr"
+            ></bd-xbc> -->
+            <!--商品信息-->
+           <!-- <bd-hc
+                :integral="goods_marketing_award.integral"
+                :coupon="goods_marketing_award.coupon"
+                :card="goods_marketing_award.card"
+                :balance="goods_marketing_award.balance"
+                :theme="getTheme"
+            ></bd-hc>
+            <bd-kb
+                :limit="goods_marketing.limit"
+                :express="express"
+                :shipping="goods_marketing.shipping"
+                :pickup="goods_marketing.pickup"
+            ></bd-kb> -->
+            <!--套餐组合-->
+            <!-- <view @click="toComposition" class="goods-composition" v-if="composition && composition.list.length > 0">
+                <view class="goods-composition-title">套餐组合</view>
+                <uni-swiper-dot :current="current" :theme="getTheme" :info="composition.list" mode="customize">
+                    <swiper @change="change" class="goods-composition-swiper" :current="current" :autoplay="true">
+                        <swiper-item v-for="item in composition.list" :key="item.id">
+                            <app-composition :theme="getTheme"  @click="toComposition(item)" @look="toComposition(item)" :item="item"></app-composition>
+                        </swiper-item>
+                    </swiper>
+                </uni-swiper-dot>
+                <view class="goods-composition-more main-between cross-center">
+                    <view>更多套餐组合</view>
+                    <image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png"></image>
+                </view>
+            </view> -->
+            <!-- <bd-comments :goods-id="goodsId"></bd-comments> -->
+            <!--商品详情-->
+            <bd-detail :detail="detail"></bd-detail>
+            <!--相关推荐-->
+            <!-- <app-goods-recommend :sureCart="true" :theme="getTheme" :goods-list="recommend_list"></app-goods-recommend> -->
+            <!--空格区域-->
+            <view class="safe-area-inset-bottom u-bottom">
+                <view class="u-bottom-height" :class="uBottomHeight"></view>
+            </view>
+            <!--底部按钮-->
+            <view v-if="is_open == 1" class="safe-area-inset-bottom u-bottom-fixed">
+                <view v-if="full_reduce && exchangeStatus == null">
+                    <app-goods-full-reduce
+                        :theme="getTheme"
+                        :full_reduce="full_reduce"
+                        :sign="goodsType === 'goods' ? '' : 1"
+                    >
+                    </app-goods-full-reduce>
+                </view>
+				<view v-if="exchangeStatus == null && sell_time > 0">
+					<app-sell-tip :time="sell_time" @changeTime="changeTime"></app-sell-tip>
+				</view>
+                <view class="bd-bottom u-bottom-height-0 cross-center dir-left-nowrap" >
+                    <template v-if="exchangeStatus == null">
+                        <view class="bd-back dir-top-nowrap main-center cross-center box-grow-0" @click="back">
+                            <image class="bd-icon" src="https://shop.9026.com/web/statics/image/mall/static/icon/index.png"></image>
+                            <text class="bd-text">首页</text>
+                        </view>
+                        <template v-if="is_negotiable !== 1">
+                            <bd-service :name="name" :url="sendPath"></bd-service>
+                        </template>
+                        <view class="bd-back dir-top-nowrap main-center cross-center box-grow-0" @click="setFavorite">
+                            <image class="bd-icon" :src="favorite ? 'https://shop.9026.com/web/statics/image/mall/static/icon/icon-favorite-active.png' : 'https://shop.9026.com/web/statics/image/mall/static/icon/icon-favorite.png'"></image>
+                            <text class="bd-text">收藏</text>
+                        </view>
+                        <template v-if="is_negotiable !== 1">
+                            <view class="box-grow-1 bd-btn bd-btn-color " :class="[disableBtn]" v-if="goods_num === 0 || is_finish_sell">
+                                {{is_finish_sell ? '商品已下架' : '已售罄'}}
+                            </view>
+                            <view class="box-grow-1 dir-left-nowrap" v-else>
+                                <view v-if="goods.type === 'goods'"
+                                      @click="clickAttr(0)"
+                                      :style="{'background': !goods || goods.buy_goods_auth ? getTheme.background_s_gradient_btn : '#999999','color': !goods || goods.buy_goods_auth ? getTheme.secondary_text : '#ffffff'}"
+                                      :class="['bd-btn', leftTip
+                                  ]"
+                                >
+                                    加入购物车
+                                </view>
+								<view :class="[goods.type === 'goods' ? 'bd-btn-right bd-btn-half' : 'box-grow-1']" v-if="!(isTip == 0 && sell_time > 0)">		
+								<app-jump-button form>
+                                <view
+                                    @click="clickAttr(1)"
+                                    :style="{'background': goods.buy_goods_auth ? getTheme.background_gradient_btn : '#999999','color': goods.buy_goods_auth ? getTheme.main_text : ''}"
+                                    :class="['bd-btn', 'bd-btn-color', 'box-grow-1', goods.type === 'goods' ? 'bd-btn-right' : '']"
+                                >{{rightRemindText}}
+                                </view>
+								</app-jump-button>
+								</view>
+                            </view>
+                        </template>
+                        <view class="box-grow-1 dir-left-nowrap bd-btn-tel" v-else>
+                            <block v-for="(item, index) in good_negotiable" :key="index">
+                                <view class="tel"
+                                      v-if="item === 'contact_tel'"
+                                      @click="makePhoneCall(mall.setting.contact_tel)"
+                                      :style="{'background': good_negotiable.length === 1 ? getTheme.background_gradient_btn : getTheme.background_s_gradient_btn,'color': good_negotiable.length === 2 ? getTheme.color : ''}"
+                                      :class="[good_negotiable.length === 1 ? 'all-radius all-width text ' : '', good_negotiable.length === 3 ? 'bd-three-one text ' : '', good_negotiable.length === 2 ? 'bd-btn-half' : '']"
+                                >
+                                    联系电话
+                                </view>
+                                <!-- #ifndef MP-TOUTIAO || MP-ALIPAY || H5 -->
+                                <button v-else-if="item === 'contact'"
+                                        open-type="contact"
+                                        show-message-card
+                                        :send-message-title="name"
+                                        :send-message-path="sendPath"
+                                        :style="contactBtnStyle"
+                                        class="contact" :class="contactBtn">
+                                    客服
+                                </button>
+                                <!-- #endif -->
+                                <view class="service"
+                                      v-else-if="item === 'contact_web'"
+                                      @click="router('/pages/web/web?url=' + encodeURIComponent(mall.setting.web_service_url))"
+                                      :style="{'background': good_negotiable.length !== 3 ? getTheme.background_gradient_btn : '','color': good_negotiable.length === 1 ? getTheme.secondary_text : ''}"
+                                      :class="good_negotiable.length === 3 ? 'default-bakground bd-three-one ' : good_negotiable.length === 2 ? 'bd-btn-half text ' : ' all-radius all-width '" >
+                                    客服
+                                </view>
+                            </block>
+                        </view>
+                    </template>
+                    <template v-else>
+                        <view v-if="exchangeStatus == 0" @click="toExchange" class="box-grow-1 bd-exchange" :style="{'background': getTheme.background_gradient_o}">
+                            立即领取
+                        </view>
+                        <view class="box-grow-1 bd-exchange bd-over" v-else-if="exchangeStatus == 1">
+                            已领取
+                        </view>
+                    </template>
+                </view>
+            </view>
+            <!--快捷导航-->
+            <!-- <app-quick-navigation></app-quick-navigation> -->
+            <u-attr
+                v-if="is_negotiable === 0 && exchangeStatus ==null && goods && goods.type"
+                v-model="attrShow"
+                :goods="goods"
+                :theme="getTheme"
+                :checked="checked"
+                @check="check"
+                @update="updateCartNumber"
+            ></u-attr>
+        </template>
+        <app-close v-if="showClose" :modal="false" @update="getMall"></app-close>
+    </app-layout>
+</template>
+
+<script>
+	import {mapGetters, mapState} from "vuex";
+    import appGoodsBanner from "../../components/page-component/goods/app-goods-banner.vue";
+    import appGoodsRecommend from "../../components/page-component/app-goods-recommend/app-goods-recommend.vue";
+    import appQuickNavigation from "../../components/page-component/app-quick-navigation/app-quick-navigation.vue";
+    import appComposition from'../../components/basic-component/app-composition/app-composition.vue';
+    import uniSwiperDot from '../../components/basic-component/uni-swiper-dot/uni-swiper-dot';
+    import uAttr from '../../components/page-component/goods/u-attr.vue';
+	import appGoodsFullReduce from '../../components/page-component/goods/app-goods-full-reduce.vue';
+	import bdInfo from '@/components/page-component/goods/bd-info';
+    import bdCoupon from '@/components/page-component/goods/bd-coupon.vue';
+    import bdXbc from '@/components/page-component/goods/bd-xbc.vue';
+    import bdKb from '@/components/page-component/goods/bd-kb.vue';
+    import bdHc from '@/components/page-component/goods/bd-hc.vue';
+    import bdDetail from '@/components/page-component/goods/bd-detail.vue';
+    import bdComments from '@/components/page-component/goods/bd-comments.vue';
+    import appClose from '@/components/basic-component/app-close/app-close.vue';
+    import bdService from '@/components/page-component/goods/bd-service.vue';
+    import bdFlashSale from '@/components/page-component/goods/bd-flash-sale.vue';
+    import appSellTip from '@/components/page-component/goods/app-sell-tip.vue';
+	import goodsMixin from '@/core/goods-mixin.js';
+	import appNavBar from '@/components/page-component/index/app-nav-bar.vue';
+	
+	import hxjScrollList from'./components/scroll-list.vue'
+    export default {
+        name: "goods",
+		mixins: [goodsMixin],
+        components: {
+            appGoodsBanner,
+            'app-goods-recommend': appGoodsRecommend,
+            'app-quick-navigation': appQuickNavigation,
+            'app-composition': appComposition,
+            appClose,
+            uniSwiperDot,
+			appGoodsFullReduce,
+            uAttr,
+            bdInfo,
+            bdCoupon,
+            bdXbc,
+            bdKb,
+            bdHc,
+            bdDetail,
+            bdComments,
+            bdService,
+            bdFlashSale,
+			appSellTip,
+			appNavBar,
+			hxjScrollList
+        },
+        data() {
+            return {
+				isCouponShow:false,
+				list:[{
+						image: '../../../static/image/index/2.png',
+						title: '',
+						tag: ''
+					},
+					{
+						image: '../../../static/image/index/2.png',
+						title: '',
+						tag: ''
+					},
+					{
+						image: '../../../static/image/index/2.png',
+						title: '',
+						tag: ''
+					},
+					{
+						image: '../../../static/image/index/2.png',
+						title: '',
+						tag: ''
+					}
+				],
+				
+				
+				
+                showClose: false,
+                is_open: 0,
+                goods: null,
+                selectAttr: null,
+                recommend_list: null,
+                is_vip: false,
+                is_vip_card_user: 0,
+                current: 0,
+                discount: null,
+                attrShow: false,
+                shareData: null,
+				contact_tel:'',
+				contact: '',
+				contact_web:'',
+                sendPath: '',
+                poster_config: this.$api.goods.poster,
+                poster_generate: this.$api.poster.goods_new,
+                // 限时抢购
+				flash_sale: null,
+                checked: null,
+                // 商品服务
+                services: null,
+                // 商品详情
+                detail: null,
+                // 商品ID
+                goodsId: null,
+                // 套餐组合
+                composition: null,
+                autoplay: true,
+                full_reduce: null,
+                goods_marketing_award: null,
+                express: null,
+                goods_marketing: null,
+                exchangeStatus: null,
+                exchange: null,
+
+                price: null,
+                level_show: null,
+                sales: null,
+                unit: null,
+                is_sales: null,
+                extra_quick_share: null,
+                price_max: null,
+                price_min: null,
+                price_member_max: null,
+                price_member_min: null,
+                original_price: null,
+                subtitle: null,
+                is_negotiable: null,
+                name: null,
+                app_share_pic: null,
+                app_share_title: null,
+                goodsType: null,
+                favorite: null,
+                goods_coupon_center: null,
+                guarantee_title: null,
+                guarantee_pic: null,
+                param_content: null,
+                param_name: null,
+                attr_groups: null,
+                goods_num: null,
+                good_stock: null,
+                min_number: null,
+                limit_buy: null,
+				disable: 'disable',
+				sell_time: 0,
+				template_message_list: [],
+				is_finish_sell: false
+            };
+        },
+        computed: {
+            ...mapState({
+                mall: state => state.mallConfig.mall,
+                gConfig: state => state.gConfig,
+				isTip: state => state.mallConfig.mall.setting.is_remind_sell_time
+            }),
+			...mapGetters('mallConfig', {
+				getTheme: 'getTheme',
+			}),
+			good_negotiable: function() {
+            	let good_negotiable = this.mall.setting.good_negotiable;
+            	this.contact_tel = '';
+				this.contact = '';
+				this.contact_web = '';
+            	let arr = [];
+            	for (let i = 0; i < good_negotiable.length; i++) {
+            		if (good_negotiable[i] === 'contact_tel') {
+						this.contact_tel = 'contact_tel';
+					}
+                    // #ifndef MP-TOUTIAO || MP-ALIPAY || H5
+                    if (good_negotiable[i] === 'contact') {
+						this.contact = 'contact';
+					}
+                    // #endif
+					if (good_negotiable[i] === 'contact_web') {
+						this.contact_web = 'contact_web';
+					}
+				}
+            	if (this.contact_tel) {
+					arr.push(this.contact_tel);
+				}
+				if (this.contact) {
+					arr.push(this.contact);
+				}
+				if (this.contact_web) {
+					arr.push(this.contact_web);
+				}
+				return arr;
+			},
+            contactBtnStyle: function() {
+                const len = this.good_negotiable.length;
+                const theme = this.getTheme.key;
+                if (len === 3 && (theme === 'a' || theme === 'b' || theme === 'f')) {
+                    return `background:${this.getTheme.background_gradient_btn}`;
+                } else if (len === 3 && !(theme === 'a' ||  theme === 'b' || theme === 'f')) {
+                    return `background:${this.getTheme.background_gradient_btn};color:${this.getTheme.background_s}`;
+                } if (len === 2 && (theme === 'a' || theme === 'b' || theme === 'f') && !this.contact_tel) {
+                    return `background:${this.getTheme.background_s_gradient_btn};`;
+                } else if (len === 2 && (theme === 'a' || theme === 'b' || theme === 'f') && this.contact_tel) {
+                    return `background:${this.getTheme.background}`;
+                } else if (len === 2 && !(theme === 'a' || theme === 'b' || theme === 'f') && !this.contact_tel) {
+                    return `background:${this.getTheme.background_s_gradient_btn};color:${this.getTheme.background_s}`;
+                } else if (len === 2 && !(theme === 'a' || theme === 'b' || theme === 'f') && this.contact_tel) {
+                    return `background:${this.getTheme.background_gradient_btn};color:${this.getTheme.background_s}`;
+                } else {
+                    return `background:${this.getTheme.background_gradient_btn}`;
+                }
+            },
+			uBottomHeight() {
+				if (this.full_reduce && this.sell_time > 0) {
+					return 'u-bottom-height-2';
+				} else if (this.full_reduce || this.sell_time > 0) {
+					return 'u-bottom-height-1';
+				} else {
+					return 'u-bottom-height-0';
+				}
+			},
+			leftTip() {
+				let leftTip = '';
+				if (!(this.isTip == 0 && this.sell_time > 0)) {
+					leftTip = 'bd-btn-left bd-btn-half';
+				} else {
+					leftTip = 'box-grow-1';
+				}
+				return this.goods && this.goods.type === 'goods' ? leftTip : '';
+			},
+			disableBtn() {
+				return this.is_finish_sell ? 'btn-finish-sell' : 'bd-oversell-btn';
+			},
+            contactBtn: function() {
+                const len = this.good_negotiable.length;
+                const theme = this.getTheme.key;
+                if (len === 3 && (theme === 'a' || theme === 'b' || theme === 'f')) {
+                    return `text bd-three-one bd-no-radius `;
+                } else if (len === 3 && !(theme === 'a' ||  theme === 'b' || theme === 'f')) {
+                    return `bd-three-one bd-no-radius `;
+                } if (len === 2 && (theme === 'a' || theme === 'b' || theme === 'f') && !this.contact_tel) {
+                    return `text bd-btn-half bd-content-radius-0`;
+                } else if (len === 2 && (theme === 'a' || theme === 'b' || theme === 'f') && this.contact_tel) {
+                    return `bd-btn-half bd-content-radius-1`;
+                } else if (len === 2 && !(theme === 'a' || theme === 'b' || theme === 'f') && !this.contact_tel) {
+                    return `bd-btn-half bd-content-radius-0`;
+                } else if (len === 2 && !(theme === 'a' || theme === 'b' || theme === 'f') && this.contact_tel) {
+                    return `bd-btn-half bd-content-radius-1`;
+                } else {
+                    return `text all-width all-radius `;
+                }
+            }
+        },
+        onLoad(options) { this.$commonLoad.onload(options);
+            // #ifdef MP-WEIXIN
+            wx.showShareMenu({
+                menus: ['shareAppMessage', 'shareTimeline']
+            })
+            // #endif
+            if (this.isLogin) {
+                this.$store.dispatch('user/info');
+            }
+            this.goodsId = options.id;
+            // #ifndef MP-ALIPAY
+            this.loadData(this.goodsId, options);
+            // #endif
+            this.sendPath = '/pages/goods/goods?id=' + options.id;
+            console.log(this.sendPath)
+            if(options && options.exchange) {
+                this.exchangeStatus = options.exchange;
+                this.exchange = options;
+            }
+        },
+        onShow() {
+            this.autoplay = true;
+            this.showClose = false;
+            setTimeout(()=>{
+                this.showClose = true;
+                // #ifdef MP-ALIPAY
+                this.loadData(this.goodsId, this.exchange);
+                // #endif
+            });
+        },
+        onHidden() {
+            this.autoplay = false;
+        },
+        // #ifdef MP-WEIXIN
+        onShareTimeline() {
+            // 分享朋友圈beta
+            return this.$shareTimeline({
+                title: this.app_share_title ? this.app_share_title : this.name,
+                imageUrl: this.goods.pic_url[0].pic_url,
+                query: {
+                    id: this.goodsId
+                }
+            });
+        },
+        // #endif
+        methods: {
+			onCouponShow(val){
+				console.log(val)
+			},
+            hShareAppMessage(s = false) {
+                return this.$shareAppMessage({
+                    title: this.app_share_title ? this.app_share_title : this.name,
+                    imageUrl: this.app_share_pic ? this.app_share_pic : this.goods.pic_url[0].pic_url,
+                    path: '/pages/goods/goods',
+                    desc: this.subtitle,
+                    params: {
+                        id: this.goodsId
+                    }
+                }, s);
+            },
+            getMall(e) {
+                this.is_open = e.is_open;
+            },
+            toExchange() {
+                let mch_list = [{
+                    mch_id: 0,
+                    goods_list: [{
+                        id: this.exchange.id,
+                        attr: this.exchange.attr,
+                        num: this.exchange.goods_num,
+                        cat_id: 0,
+                        goods_attr_id: this.exchange.attr_id
+                    }],
+                    code: this.exchange.code,
+                    token: this.exchange.token,
+                }];
+                let url = `/pages/order-submit/order-submit?mch_list=${JSON.stringify(mch_list)}`;
+                url += `&preview_url=${encodeURIComponent(this.$api.exchange.exchange_preview)}&submit_url=${encodeURIComponent(this.$api.exchange.exchange_submit)}&plugin=exchange`;
+                uni.navigateTo({
+                    url: url
+                })
+            },
+            // 规格选择
+            check({item}) {
+                this.checked = item;
+            },
+            change(e) {
+                if(e.detail.source === 'touch') {
+                    this.current = e.detail.current;
+                }
+                if(e.detail.source === 'autoplay') {
+                    this.current = e.detail.current;
+                }
+            },
+            quickShare(info) {
+                this.shareData = info;
+                //#ifdef H5
+                this.$shareAppMessage(this.shareData, true);
+                // #endif
+            },
+            toComposition(item) {
+                let id = item.id > 0 ? item.id : this.composition.list[0].id
+                uni.navigateTo({
+                    url: this.composition.url + '?goods_id=' + this.goodsId + '&composition_id=' + id
+                })
+            },
+            loadData(id, options) {
+                return new Promise((resolve, reject) => {
+                    this.$showLoading();
+                    this.$request({
+                        url: this.$api.goods.detail,
+                        data: {
+                            id: id,
+							plugin: options && options.exchange ? 'exchange' : 'mall'
+                        }
+                    }).then(response => {
+                        this.$hideLoading();
+                        if (response.code === 0) {
+                            let { services,
+                                detail, name,
+                                vip_card_appoint, plugin_extra, id,
+                                goods_activity, goods_marketing_award,
+                                goods_marketing, express,
+                                price, sales,
+                                level_show, is_sales, unit, extra_quick_share,
+                                price_max, price_min, price_member_max,
+                                price_member_min, original_price, subtitle,
+                                is_negotiable, app_share_title,
+                                app_share_pic, type, favorite, goods_coupon_center,
+                                guarantee_title, guarantee_pic, param_content,
+                                param_name, attr_groups, goods_num, good_stock,
+								min_number, limit_buy, sell_time, template_message_list,
+								is_finish_sell
+                            } = response.data.goods;
+                            uni.setNavigationBarTitle({
+                                title: name
+                            });
+
+                            this.name = name;
+                            this.app_share_pic = app_share_pic;
+                            this.app_share_title = app_share_title;
+                            this.goods = response.data.goods;
+                            this.services = services;
+                            this.detail = detail;
+                            this.goodsId = id;
+                            this.flash_sale = plugin_extra.flash_sale;
+                            this.composition = plugin_extra.composition;
+                            this.goods_marketing_award = goods_marketing_award;
+                            this.goods_marketing = goods_marketing;
+                            this.express = express;
+                            this.price = price;
+                            this.level_show = level_show;
+                            this.sales = sales;
+                            this.unit = unit;
+                            this.is_sales = is_sales;
+                            this.price_max = price_max;
+                            this.price_min = price_min;
+                            this.price_member_max = price_member_max;
+                            this.price_member_min = price_member_min;
+                            this.original_price = original_price;
+                            this.subtitle = subtitle;
+                            this.is_negotiable = is_negotiable;
+                            this.extra_quick_share = extra_quick_share;
+                            this.goodsType = type;
+                            this.favorite = favorite;
+                            this.goods_coupon_center = goods_coupon_center;
+                            this.guarantee_title = guarantee_title;
+                            this.param_content = param_content;
+                            this.guarantee_pic = guarantee_pic;
+                            this.attr_groups = attr_groups;
+                            this.param_name = param_name;
+                            this.goods_num = goods_num;
+                            this.good_stock = good_stock;
+                            this.min_number = min_number;
+                            this.limit_buy = limit_buy;
+							this.sell_time = sell_time;
+							this.template_message_list = template_message_list;
+							this.is_finish_sell = is_finish_sell;
+                            if (goods_activity) {
+                                this.full_reduce = goods_activity.full_reduce;
+                            }
+                            if(vip_card_appoint.discount || vip_card_appoint.discount === '0.00') {
+                                this.is_vip = true;
+                                this.discount = vip_card_appoint.discount
+                            }
+                            this.is_vip_card_user = vip_card_appoint.is_vip_card_user;
+                            this.loadRecommend();
+                            // #ifdef H5
+                            this.hShareAppMessage();
+                            // #endif
+                            resolve();
+                        } else {
+                            uni.showToast({
+                                title: response.msg,
+                                icon: 'none'
+                            });
+                            reject();
+                        }
+                    }).catch(() => {
+                        reject();
+                        this.$hideLoading();
+                    });
+                });
+            },
+            onAttr(data) {
+                this.selectAttr = data;
+            },
+            loadRecommend() {
+                this.$request({
+                    url: this.$api.goods.new_recommend,
+                    data: {
+                        goods_id: this.goodsId,
+                        type: 'goods'
+                    }
+                }).then(response => {
+                    if (response.code === 0) {
+                        this.recommend_list = response.data.list;
+                    }
+                });
+            },
+            back() {
+                uni.reLaunch({
+                    url: '/pages/index/index'
+                });
+            },
+            setFavorite() {
+                let url = this.$api.user.favorite_add;
+                let favorite = true;
+                if (this.favorite) {
+                    url = this.$api.user.favorite_remove;
+                    favorite = false;
+                }
+                this.favorite = favorite;
+                this.$request({
+                    url: url,
+                    data: {
+                        goods_id: this.goodsId
+                    }
+                }).then(response => {
+                    if (response.code === 0) {
+                    } else {
+                        uni.showModal({
+                            title: '提示',
+                            content: response.msg,
+                            showCancel: false
+                        });
+                    }
+                });
+            },
+            clickAttr(data) {
+				console.log('开始')
+				if (data === 1 && this.sell_time > 0) {
+					this.rightTip();
+					return ;
+				}
+				if (!this.goods.buy_goods_auth) {
+                    this.$tips.showToast({
+                        title: '您暂无权限购买该商品',
+                        icon: 'none'
+                    });
+                    return;
+				}
+                if (this.goods.type === 'ecard' && data === 0) {
+                    this.$tips.showToast({
+                        title: '虚拟商品不允许加入购物车',
+                        icon: 'none'
+                    });
+                    return;
+                }
+                this.attrShow = true;
+				console.log('结束')
+            },
+            setCoupon(index) {
+                this.$set(this.goods_coupon_center[index], 'is_receive', 1);
+            },
+            router(url) {
+                uni.navigateTo({
+                    url: url
+                })
+            },
+            makePhoneCall(number) {
+                uni.makePhoneCall({
+                    phoneNumber: number
+                });
+            },
+			changeTime(time) {
+				this.sell_time = time;
+				this.goods.sell_time = time;
+			}
+        },
+        // #ifdef MP
+        onShareAppMessage(object) {
+            if (object.from === 'button' && this.shareData) {
+                return this.$shareAppMessage(this.shareData);
+            }
+            return this.hShareAppMessage();
+        },
+        // #endif
+    }
+</script>
+
+<style scoped lang="scss">
+	@import './index.scss';
+	.hxj-goods-name{
+		width: 750rpx;
+		height: 261rpx;
+		background: #F6F6F6;
+		padding: 63rpx 30rpx 28rpx 46rpx;
+		.hxj-name{
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #121212;
+			line-height: 56rpx;
+			margin-right: 14rpx;
+		}
+		.hxj-tags{
+			width: 56rpx;
+			height: 30rpx;
+			background: #040404;
+			font-size: 20rpx;
+			font-weight: 400;
+			color: #FFFFFF;
+			margin-right: 13rpx;
+			text-align: center;
+		}
+		.hxj-ynum{
+			width: 126rpx;
+			height: 30rpx;
+			border: 1rpx solid #AE8445;
+			border-radius: 4rpx;
+			font-size: 22rpx;
+			font-weight: 500;
+			color: #AE8445;
+			opacity: 0.6;
+			text-align: center;
+		}
+		.hxj-price{
+			font-size: 46rpx;
+			font-weight: bold;
+			color: #A6814F;
+			.rmb{
+				font-size: 18rpx;
+				font-weight: 500;
+				color: #A6814F;
+				margin-right: 9rpx;
+			}
+			.dw{
+				font-size: 20rpx;
+				font-weight: 500;
+				color: #A6814F;
+				margin-left: 13rpx;
+			}
+		}
+		.lq{
+			width: 92rpx;
+			height: 38rpx;
+			background: #FF0000;
+			border-radius: 19rpx;
+			font-size: 20rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			text-align: center;
+			line-height: 38rpx;
+		}
+		.se{
+			image{
+				width: 25rpx;
+				height: 25rpx;
+				margin-right: 6rpx;
+			}
+			font-size: 24rpx;
+			font-weight: 500;
+			color: #AE8445;
+		}
+	}
+    .hxj-goods-list{
+		width: 100%;
+		height: 270rpx;
+		padding: 50rpx 43rpx 50rpx 51rpx;
+		.title{
+			font-size: 24rpx;
+			font-weight: 500;
+			color: #121212;
+			line-height: 56px;
+		}
+		.item{
+			.name{
+				width: 300rpx;
+				font-size: 24rpx;
+				font-weight: 300;
+				color: #121212;
+				line-height: 56rpx;
+			}
+			.num{
+				width: 80rpx;
+				font-size: 24rpx;
+				font-weight: 300;
+				color: #121212;
+				line-height: 56rpx;
+				text-align: right;
+			}
+			.zk{
+				font-size: 24rpx;
+				font-weight: bold;
+				color: #A18353;
+				line-height: 56rpx;
+				image{
+					width: 19rpx;
+					height: 12rpx;
+					margin-left: 8rpx;
+				}
+			}
+		}
+	}
+	.goods-composition {
+        width: 702upx;
+        margin: 20upx 20upx 0 20upx;
+        padding: 20rpx;
+        background-color: #fff;
+        border-radius: 15upx;
+        .goods-composition-title {
+            font-size: 28rpx;
+            color: #353535;
+            margin-bottom: 20rpx;
+        }
+        .goods-composition-swiper {
+            height: 194rpx;
+        }
+        .goods-composition-more {
+            margin: 20rpx  auto 4rpx auto;
+            width: 226rpx;
+            padding: 0 24rpx;
+            height: 56rpx;
+            line-height: 54rpx;
+            border-radius: 28rpx;
+            border: 2rpx solid #bbbbbb;
+            font-size: 24rpx;
+            color: #999999;
+            image {
+                width: #{12rpx};
+                height: #{22rpx};
+            }
+        }
+    }
+    .goods-name {
+        padding: 24upx 24upx 0 24upx;
+        background-color: #ffffff;
+        color: #353535;
+        font-size: 32upx;
+        line-height: 42upx;
+    }
+
+    .goods-subtitle {
+        padding: #{24rpx 24rpx 0 24rpx};
+        font-size: 24rpx;
+        background-color: #ffffff;
+        color: #999999;
+    }
+    
+	.price {
+		padding-top: #{24rpx};
+		background-color: #ffffff;
+	}
+    .vip-card {
+        padding-bottom: #{20rpx};
+        background-color: #fff;
+    }
+    .attr {
+        background-color: #f7f7f7;
+    }
+    .bottom {
+        width: 100%;
+        height: #{110rpx};
+    }
+
+    .bd-bottom {
+        width: 750upx;
+        height: 110upx;
+        padding: 20upx 24upx;
+    }
+
+    .bd-back {
+        width: 66upx;
+        height: 100%;
+        margin-right: 20upx;
+    }
+    .bd-icon {
+        width: 30upx;
+        height: 30upx;
+        margin-bottom: 8upx;
+    }
+    .bd-text {
+        font-size: 20upx;
+        color: #888888;
+        line-height: 1;
+    }
+    .bd-btn {
+        text-align: center;
+        line-height: 70upx;
+        font-size: 28upx;
+        border-radius: 35upx;
+    }
+    .bd-btn-left {
+        border-top-right-radius: 0;
+        border-bottom-right-radius: 0;
+    }
+    .bd-btn-right {
+        border-top-left-radius: 0;
+        border-bottom-left-radius: 0;
+    }
+    .bd-btn-half {
+        width: 50%;
+    }
+    .bd-btn-color {
+        color: #ffffff;
+    }
+    .bd-oversell-btn {
+        background-color: #CDCDCD;
+    }
+
+    .bd-content-radius-0 {
+        border-radius: 35upx 0 0 35upx;
+    }
+    .bd-content-radius-1 {
+        border-radius:0 35upx 35upx 0;
+    }
+    .bd-btn-tel {
+        font-size: 26upx;
+        >view {
+            line-height: 70upx;
+            text-align: center;
+        }
+        .tel {
+            border-top-left-radius: 35upx;
+            border-bottom-left-radius: 35upx;
+        }
+        .contact {
+            padding: 0;
+            font-size: 26upx;
+            height: 70upx;
+            line-height: 70upx;
+            margin: 0;
+            border: none;
+        }
+        .service {
+            border-top-right-radius: 35upx;
+            border-bottom-right-radius: 35upx;
+        }
+        .all-radius {
+            border-radius: 35upx;
+        }
+        .all-width {
+            width: 100%;
+        }
+        .bd-three-one {
+            width: calc(100%/3);
+        }
+        .bd-no-radius {
+            border-radius: 0;
+        }
+
+    }
+    .bd-exchange {
+        line-height: 70upx;
+        font-size: #{28rpx};
+        text-align: center;
+        color: #fff;
+        border-radius: 35upx;
+        &.bd-over {
+            background: #e9e9e9;
+            color: #999999;
+        }
+    }
+	.text {
+		color: #ffffff;
+	}
+	.default-bakground {
+		background-color: #446dfd;
+        color: #ffffff;
+	}
+    .u-bottom-fixed {
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        z-index: 1500;
+        background-color: #ffffff;
+        box-shadow: 0 -1rpx 20rpx -15rpx #353535;
+    }
+    .u-bottom-height-0 {
+        height: 110upx;
+    }
+    .u-bottom-height-1 {
+        height: 190upx;
+    }
+    .u-bottom-height-2 {
+        height: 270upx;
+    }
+    .goods-margin {
+        margin-top: 20upx;
+    }
+    .bd-goods {
+        margin: 24 upx 24 upx 24 upx 24 upx;
+    }
+    .ecard-text {
+        color: #999999;
+    }
+
+    .bd-content {
+        padding: 0;
+        display: block;
+        background-color: #ffffff;
+    }
+    .bd-content-view {
+        width:100%;
+        height: 100%;
+    }
+	.btn-finish-sell {
+		background: linear-gradient(to right, rgba(153, 153, 153, 1), rgba(153, 153, 153, 0.7)) ;
+	}
+</style>

+ 84 - 0
src/pages/index/themeArea.vue

xqd
@@ -0,0 +1,84 @@
+<template>
+	<view class="page">
+		<view class="item" v-for="(item,index) in 2" :key="index">
+			<image class="d" src="../../static/image/index/16.png" mode=""></image>
+			<view class="main-around">
+				<view v-for="(item1,index1) in 3" :key="index1" class="f" @click="getTheme(index1)">
+					<image class="f" src="../../static/image/index/16.png" mode=""></image>
+					<image v-show="activeIndex===index1" class="l" src="../../static/image/index/k.png" mode=""></image>
+				</view>
+				<view class="main-center cross-center g">
+					更多方案<image class="h" src="../../static/image/index/arrow-right-yellow.png" mode=""></image>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				activeIndex:0
+			};
+		},
+		methods:{
+			getTheme(index){
+				this.activeIndex=index1
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.page {
+		padding-top: 20rpx;
+		min-height: 100vh;
+		background-color: #fff;
+	}
+
+	.item {
+		width: 678rpx;
+		height: 490rpx;
+		background: #FFFFFF;
+		box-shadow: 1rpx 7rpx 23rpx 1rpx rgba(85, 82, 82, 0.19);
+		border-radius: 10rpx;
+		overflow: hidden;
+		margin: 0 auto 24rpx;
+
+		.d {
+			width: 678.2rpx;
+			height: 360.4rpx;
+		}
+		
+		.f {
+			width: 154rpx;
+			height: 98rpx;
+			border-radius: 6px;
+			position: relative;
+			.l{
+				position: absolute;
+				top: -7rpx;
+				left: -1px;
+				width: 157rpx;
+				height: 109rpx;
+			}
+		}
+
+		.g {
+			width: 154rpx;
+			height: 98rpx;
+			border-radius: 6px;
+			background: #F1EAE4;
+			font-size: 24rpx;
+			font-weight: bold;
+			color: #F98F28;
+			
+			.h {
+				width: 10rpx;
+				height: 15rpx;
+				margin-left: 9rpx;
+			}
+		}
+	}
+</style>

+ 19 - 0
src/pages/order-submit/invoice/invoice.vue

xqd
@@ -0,0 +1,19 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 1525 - 0
src/pages/order-submit/order-submit - 副本.vue

xqd
@@ -0,0 +1,1525 @@
+<template>
+	<app-layout>
+		<view class="safe-area-inset-bottom">
+			<!-- 地址、商户、配送、商品、优惠、费用信息 -->
+			<view class="page" v-if="previewData">
+				<view v-if="!previewData.hasCity && previewData.show_address !== false && previewData.hasRecipient"
+					class="group">
+					<app-address-bar :address="previewData.address" :has-ziti="previewData.has_ziti"
+						:all-ziti="previewData.allZiti" @address-input="handleAddressInput"></app-address-bar>
+				</view>
+				<template v-for="(mch, mchIndex) in previewData.mch_list">
+					<view v-if="previewData.hasCity && mchIndex === 0" class="group xz">
+						<app-address-bar :address="mch.city.error ? null : mch.address" :has-city="true"
+							:city="mch.city"></app-address-bar>
+					</view>
+					<view v-if="previewData.hasCity && mchIndex === 1" class="group cv">
+						<app-address-bar :address="previewData.address" :has-ziti="previewData.has_ziti"
+							:all-ziti="previewData.allZiti" :city="mch.city"></app-address-bar>
+					</view>
+					<view :key="mchIndex" class="group">
+						<!-- 循环商户列表start -->
+						<view style="padding: 26rpx 32rpx;">
+							<view class="dir-left-nowrap cross-center" style="padding: 10rpx 0;line-height: 1.2;">
+								<!-- 商户名start -->
+								<view class="box-grow-0">
+									<image src="https://shop.9026.com/web/statics/image/mall/static/icon/store-black.png" class="title-icon mr-12"></image>
+								</view>
+								<view class="box-grow-1 font-bold ellipsis-1">{{mch.mch.name}}</view>
+								<view
+									v-if="mch.mch.id > 0 &&  mch.delivery && mch.delivery.send_type === 'offline' && mch.store && mch.store.distance != '-m'"
+									class="box-grow-0 dir-left-nowrap cross-center">
+									<image src="https://shop.9026.com/web/statics/image/mall/static/icon/location.png" class="mr-12"
+										style="display: block; width: 22rpx;height: 26rpx;"></image>
+									<view>距您{{mch.store.distance}}</view>
+								</view>
+							</view><!-- 商户名end -->
+							<template v-if="mch.delivery && mch.delivery.send_type === 'offline'">
+								<!-- 自提门店信息start -->
+								<view v-if="mch.no_store && mch.no_store === true" :class="[themeTextClass]"
+									:style="{'color': !is_gift ? theme.color : '', 'paddding': '10rpx 0'}">
+									暂无门店,请选择其他配送方式
+								</view>
+								<template v-else>
+									<template v-if="mch.store">
+										<view v-if="mch.mch.id == 0" class="dir-left-nowrap"
+											style="padding: 10rpx 0;line-height: 1.2;">
+											<view @click="navigateStore(mchIndex)"
+												class="box-grow-1 dir-left-nowrap cross-center">
+												<view>
+													<image src="https://shop.9026.com/web/statics/image/mall/static/icon/navigation-black.png"
+														class="title-icon mr-12"></image>
+												</view>
+												<view class="font-bold ellipsis-1 mr-12">
+													{{mch.store.name}}
+												</view>
+												<view class="mr-12">
+													<image src="https://shop.9026.com/web/statics/image/mall/static/icon/right.png" class="mr-12"
+														style="width: 12rpx; height: 22rpx;"></image>
+												</view>
+											</view>
+											<view v-if="mch.store.distance != '-m' || getLocationFail"
+												class="box-grow-0 dir-left-nowrap cross-center">
+												<view>
+													<image src="https://shop.9026.com/web/statics/image/mall/static/icon/location.png" class="mr-12"
+														style="display: block; width: 22rpx;height: 26rpx;"></image>
+												</view>
+												<view v-if="getLocationFail" @click.stop="openLocationSetting"
+													:class="[`${theme}-color`, `${theme}-border`]"
+													:style="{'color': !is_gift ? theme.color : '', 'border-color': !is_gift ? theme.border : ''}">
+													获取位置
+												</view>
+												<view v-else-if="mch.store.distance != '-m'">距您{{mch.store.distance}}
+												</view>
+											</view>
+										</view>
+										<view style="padding: 10rpx 0;line-height: 1.2;">
+											<view class="font-gray ellipsis-2"
+												style="line-height: 30rpx; max-height: 60rpx;">
+												{{mch.store.address}}
+											</view>
+										</view>
+									</template>
+									<view v-else class="dir-left-nowrap cross-center" @click="navigateStore(mchIndex)"
+										style="padding: 10rpx 0;">
+										<view class="box-grow-1 dir-left-nowrap">
+											<image src="https://shop.9026.com/web/statics/image/mall/static/icon/navigation-black.png"
+												class="title-icon mr-12"></image>
+											<view class="mr-12 font-bold">选择门店</view>
+										</view>
+										<view class="box-grow-0 dir-left-nowrap cross-center">
+											<view class="mr-12 font-gray">请选择门店</view>
+											<image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png" class="mr-12"
+												style="width: 12rpx; height: 22rpx;"></image>
+										</view>
+									</view>
+								</template>
+							</template><!-- 自提门店信息end -->
+						</view>
+						<view class="line"></view>
+						<view v-if="mch.show_delivery !== false" style="padding: 18rpx 32rpx;">
+							<!-- 选择配送方式start -->
+							<view class="dir-left-nowrap cross-center" style="padding: 18rpx 0;">
+								<view class="box-grow-0">
+									<image src="https://shop.9026.com/web/statics/image/mall/static/icon/delivery.png" class="title-icon mr-12"></image>
+								</view>
+								<view class="box-grow-1 font-bold">配送方式</view>
+							</view>
+							<view class="dir-left-nowrap" style="padding: 18rpx 0;">
+								<view v-for="(sendType, sendTypeIndex) in mch.delivery.send_type_list"
+									:key="sendTypeIndex" class="send-type"
+									:style="{'background-color': sendType.value == mch.delivery.send_type && !userTheme ? theme.background : ''}"
+									:class="sendType.value == mch.delivery.send_type && userTheme ? `${theme}-background theme-color`: sendType.value == mch.delivery.send_type && !userTheme ? 'theme-color' : 'app-light-gray-back' "
+									@click="changeSendType(mchIndex,sendType.value)">
+									{{sendType.name}}
+								</view>
+							</view>
+						</view><!-- 选择配送方式end -->
+						<template v-if="mch.delivery && mch.delivery.send_type === 'city' && mch.city">
+							<!-- 同城配送信息start -->
+							<view class="line"></view>
+							<view v-if="mch.city.error" class="dir-left-nowrap cross-center"
+								style="padding: 36rpx 32rpx;">
+								<view class="box-grow-1">{{mch.city.error}}</view>
+								<view class="box-grow-0 dir-left-nowrap delivery-coverage-btn" @click="jump(mchIndex)"
+									style="margin: -12rpx 0;">查看配送范围
+								</view>
+							</view>
+							<view v-else style="padding: 36rpx 32rpx;">
+								<view style="padding: 10rpx 0;">发货地址:{{mch.city.address}}</view>
+								<view class="dir-left-nowrap cross-center" style="padding: 10rpx 0;">
+									<view class="box-grow-1">
+										<view v-if="mch.city.explain">{{mch.city.explain}}</view>
+									</view>
+									<view class="box-grow-0 dir-left-nowrap delivery-coverage-btn"
+										@click="jump(mchIndex)">查看配送范围
+									</view>
+								</view>
+							</view>
+						</template><!-- 同城配送信息end -->
+						<view class="line"></view>
+						<view v-if="!mch.pick_up_enable"
+							style="height: 80rpx;line-height: 80rpx; background: #fff4f3;padding: 0 24rpx;">
+							<view>以下商品满{{mch.pick_up_price}}元起送</view>
+						</view>
+						<app-submit-goods :theme="theme" v-on:updateList="updateList" :index="mchIndex" :plugin="plugin"
+							:list="mch"></app-submit-goods>
+						<view class="line"></view>
+						<template v-if="(mch.coupon && mch.coupon.enabled) ||
+                                (mch.member_discount > 0 || mch.member_discount < 0) ||
+                                (mch.integral && mch.integral.can_use) ||
+                                mch.temp_vip_discount ||
+                                (mch.insert_rows && mch.insert_rows.length) ||
+                                (mch.full_reduce_discount > 0 || mch.full_reduce_discount < 0)">
+							<view style="padding: 20rpx 32rpx;">
+								<template v-if="mch.coupon && mch.coupon.enabled">
+									<view @click="showCouponPicker(mchIndex)" style="padding: 16rpx 0;">
+										<view class="dir-left-nowrap cross-center">
+											<view class="box-grow-1">优惠券</view>
+											<view class="box-grow-0 mr-12" v-if="mch.coupon.use"
+												:class="[themeTextClass]"
+												:style="{'color': !is_gift ? theme.color : ''}">
+												-¥{{mch.coupon.coupon_discount}}
+											</view>
+											<view class="box-grow-0 mr-12 font-gray"
+												v-else-if="noCouponStatus(mchIndex)">
+												暂无优惠券可用
+											</view>
+											<view class="box-grow-0 mr-12 font-gray" v-else>选择优惠券</view>
+											<view class="box-grow-0">
+												<image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png"
+													style="width: 12rpx; height: 22rpx; margin-bottom: -2rpx;"></image>
+											</view>
+										</view>
+									</view>
+									<app-bottom-modal :visible.sync="mch.showCouponPicker" title="优惠券">
+										<app-coupon-pick :plugin="plugin" :mch-index="mchIndex"
+											@change="loadPreviewData" :no-coupons.sync="mch.noCoupons" :theme="theme">
+										</app-coupon-pick>
+									</app-bottom-modal>
+								</template>
+								<view v-if="mch.member_discount > 0 || mch.member_discount < 0" class="dir-left-nowrap"
+									style="padding: 16rpx 0;">
+									<view class="box-grow-1">会员价总优惠</view>
+									<view class="box-grow-0" :class="[themeTextClass]"
+										:style="{'color': !is_gift ? theme.color : ''}">
+										<template v-if="mch.member_discount>0">-¥{{mch.member_discount}}</template>
+										<template
+											v-else-if="mch.member_discount<0">+¥{{0-mch.member_discount}}</template>
+										<template v-else>¥0.00</template>
+									</view>
+								</view>
+								<view v-if="mch.full_reduce_discount > 0 || mch.full_reduce_discount < 0"
+									class="dir-left-nowrap" style="padding: 16rpx 0;">
+									<view class="box-grow-1">满减总优惠</view>
+									<view class="box-grow-0" :class="[themeTextClass]"
+										:style="{'color': !is_gift ? theme.color : ''}">
+										<template
+											v-if="mch.full_reduce_discount>0">-¥{{mch.full_reduce_discount}}</template>
+										<template
+											v-else-if="mch.full_reduce_discount<0">+¥{{0-mch.full_reduce_discount}}</template>
+									</view>
+								</view>
+								<view v-if="mch.integral && mch.integral.can_use" class="dir-left-nowrap"
+									style="padding: 16rpx 0;">
+									<view class="box-grow-1 dir-left-nowrap cross-center">
+										积分抵扣(使用 {{mch.integral.use_num}}积分)
+										<image @click="showIntegralTip"
+											style="width: 36rpx;height: 36rpx; margin: -12rpx 0;"
+											src="https://shop.9026.com/web/statics/image/mall/static/icon/warning.png"></image>
+									</view>
+									<view class="box-grow-0 dir-left-nowrap cross-center">
+										<view class="mr-12" :class="[themeTextClass]"
+											:style="{'color': !is_gift ? theme.color : ''}">
+											-¥{{mch.integral.deduction_price}}
+										</view>
+										<view style="margin: -6rpx 0">
+											<app-submit-checkbox :round="true" :theme="theme" :value="mch.integral.use"
+												border-color="#999999" @input="changeIntegral(mchIndex)">
+											</app-submit-checkbox>
+										</view>
+									</view>
+								</view>
+								<view v-if="mch.temp_vip_discount" style="padding: 16rpx 0;">
+									<view :style="{
+                            backgroundImage: `url(${appImg.order_submit.svip_bg})`,
+                            }" class="svip dir-left-nowrap cross-center">
+										<view class="box-grow-1">
+											<view v-if="mch.vip_card_detail">SVIP用户,本单优惠
+												<text style="color: #ff4544;">{{mch.temp_vip_discount}}</text>
+												元
+											</view>
+											<template v-else>
+												<view style="margin-bottom: 10rpx;">现在开卡,本单立减
+													<text style="color: #ff4544;">{{mch.temp_vip_discount}}
+													</text>
+													元
+												</view>
+												<view @click="navigateVipCardPrivilege"
+													class="dir-left-nowrap cross-center">
+													<view style="margin-right: 10rpx; font-size: 22rpx;">查看权益</view>
+													<image src="https://shop.9026.com/web/statics/image/mall/static/icon/order-submit/arrow-right-b.png"
+														style="width: 12rpx;height: 22rpx; display: block;"></image>
+												</view>
+											</template>
+										</view>
+										<view class="box-grow-0 dir-left-nowrap cross-center"
+											style="padding: 12rpx 22rpx 12rpx 0;" @click="navigateSvip(mchIndex)">
+											<view class="vip-card-name" style="margin-right: 10rpx; line-height: 1.05;">
+												<template
+													v-if="mch.vip_card_detail">{{mch.vip_card_detail.name}}</template>
+												<template v-else>请选择</template>
+											</view>
+											<image src="https://shop.9026.com/web/statics/image/mall/static/icon/order-submit/arrow-right-a.png"
+												style="width: 12rpx;height: 22rpx; display: block;"></image>
+										</view>
+									</view>
+								</view>
+								<view v-if="mch.insert_rows && mch.insert_rows.length"
+									:class="[mch.showInsertRows?'show':'',]">
+									<view class="dir-left-nowrap cross-center" @click="reversalShowInsertRows(mchIndex)"
+										style="padding: 16rpx 0;">
+										<view class="box-grow-1 dir-left-nowrap cross-center">
+											<view class="mr-12">活动优惠</view>
+											<image style="width: 22rpx; height: 12rpx;" class="bottom-icon"
+												src="https://shop.9026.com/web/statics/image/mall/static/icon/bottom.png"></image>
+										</view>
+										<view class="box-grow-0" :class="[themeTextClass]"
+											:style="{'color': !is_gift ? theme.color : ''}">
+											{{mch.insert_total_discount}}
+										</view>
+									</view>
+									<view class="insert-rows">
+										<view class="font-small more-discount-info">
+											<view v-for="(insertRow, insertRowIndex) in mch.insert_rows"
+												:key="insertRowIndex" class="row dir-left-nowrap no-px">
+												<view class="box-grow-1" style="color: #999;">{{insertRow.title}}</view>
+												<view class="box-grow-0" :class="[themeTextClass]"
+													:style="{'color': !is_gift ? theme.color : ''}">
+													{{insertRow.value}}
+												</view>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="line"></view>
+						</template>
+						<template v-if="mch.show_express_price !== false">
+							<!-- 运费信息start -->
+							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+								<view class="box-grow-1">运费</view>
+								<view class="box-grow-0" :class="[themeTextClass]"
+									:style="{'color': !is_gift ? theme.color : '','text-align':'right'}">
+									<template v-if="mch.express_price_origin && mch.express_price_desc">
+										<view :style="{'color': theme.color}">¥{{mch.express_price_origin}}</view>
+										<view class="express-price-desc" :style="{'color': theme.color}">
+											{{mch.express_price_desc}}
+										</view>
+									</template>
+									<template v-else>¥{{mch.express_price}}</template>
+								</view>
+							</view>
+						</template><!-- 运费信息end -->
+
+						<template v-if="balance < 0">
+							<!-- 欠款金额start -->
+							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+								<view class="box-grow-1">欠款金额</view>
+								<view class="box-grow-0" :class="[themeTextClass]"
+									:style="{'color': !is_gift ? theme.color : '','text-align':'right'}">
+									<template>¥{{Math.abs(balance)}}</template>
+								</view>
+							</view>
+						</template>
+						<!-- 欠款金额end -->
+
+						<template v-if="
+                    !(mch.order_form && mch.order_form.status == '1')
+                    && mch.show_remark !== false
+                    && mch.has_goods_form !== true">
+							<view class="line"></view>
+							<view class="row" style="padding-top: 0;padding-bottom: 0;">
+								<app-input @input="inputRemark(mchIndex)" v-model="mch.remark" placeholder="买家留言"
+									padding-left="0" height="100"></app-input>
+							</view>
+						</template>
+						<view class="line"></view>
+						<view class="dir-right-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+							<view class="box-grow-0 dir-left-nowrap">
+								<view>小计:</view>
+								<view :class="[themeTextClass]" :style="{'color': !is_gift ? theme.color : ''}">
+									¥{{balance < 0 ? setPrice(mch.total_price, balance) : FlorPrice(mch.total_price)}}
+								</view>
+							</view>
+							<view class="box-grow-0 font-gray mr-12">共{{mch.goods_count}}件</view>
+						</view>
+					</view><!-- 循环商户列表end -->
+				</template>
+				<view v-for="(mch, mchIndex) in previewData.mch_list" :key="mchIndex">
+					<view v-if="mch.order_form && mch.order_form.status == '1'" class="group">
+						<view style="padding: 0 12rpx">
+							<app-diy-form :title="mch.order_form.name" :list="mch.order_form.value"
+								@input="handleOrderFormInput" @validate="handleOrderFormValidate" :sign="mchIndex"
+								label-position="top" :show-scroll-btn="mch.order_form.show_scroll"></app-diy-form>
+						</view>
+					</view>
+					<template v-if="mch.has_goods_form">
+						<view v-for="(goodsItem, goodsIndex) in mch.goods_list" :key="goodsIndex"
+							v-if="goodsItem.form && !goodsItem.form.same_form" class="group goods-form">
+							<view style="padding: 36rpx 32rpx;" class="font-bold">{{goodsItem.form.name}}</view>
+							<view class="line"></view>
+							<view class="row goods-list"
+								v-if="mch.diff_goods_form_count !== 1 || previewData.mch_list.length > 1">
+								<view v-for="(subGoodsItem, subGoodsIndex) in mch.goods_list" :key="subGoodsIndex"
+									v-if="subGoodsItem.form && subGoodsItem.form.id == goodsItem.form.id"
+									class="dir-left-nowrap goods-item">
+									<view class="box-grow-0">
+										<image class="goods-image"
+											:src="subGoodsItem.goods_attr.pic_url ? subGoodsItem.goods_attr.pic_url : subGoodsItem.cover_pic">
+										</image>
+									</view>
+									<view class="box-grow-1">
+										<view class="goods-name ellipsis-2">
+											{{subGoodsItem.name}}
+										</view>
+										<view class="dir-left-wrap">
+											<view v-for="(attrItem,attrIndex) in subGoodsItem.attr_list"
+												:key="attrIndex" class="mr-12 font-gray font-small">
+												{{attrItem.attr_group_name}}:{{attrItem.attr_name}}
+											</view>
+										</view>
+										<view class="dir-left-nowrap">
+											<view class="box-grow-1 font-gray font-small">×{{subGoodsItem.num}}</view>
+											<view class="box-grow-0">
+												<view class="font-small" style="text-align: right"
+													:style="{'color': theme.color}">
+													<text
+														v-for="(customCurrency,customCurrencyIndex) in subGoodsItem.custom_currency"
+														:key="customCurrencyIndex">
+														{{customCurrency}}+
+													</text>
+													¥{{subGoodsItem.total_original_price}}
+												</view>
+												<view v-for="(discount,discountIndex) in subGoodsItem.discounts"
+													:key="discountIndex" style="text-align: right"
+													:style="{'color': theme.color}">
+													{{discount.name}}: {{discount.value}}
+												</view>
+											</view>
+										</view>
+									</view>
+								</view>
+							</view>
+							<view style="padding: 0 12rpx">
+								<app-diy-form :showRequiredIcon="true" :list="goodsItem.form.value"
+									@input="handleGoodsFormInput" @validate="handleGoodsFormValidate"
+									label-position="top" :label-fs28="true"
+									:sign="`${mchIndex},${goodsIndex},${goodsItem.form.id}`"></app-diy-form>
+							</view>
+						</view>
+					</template>
+				</view>
+			</view>
+			<view class="full-tip" v-if="previewData.next_full_reduce"></view>
+		</view>
+		<!-- 结算底栏 -->
+		<view class="submit-bar u-bottom-fixed dir-top-nowrap safe-area-inset-bottom" v-if="previewData">
+			<view class="full-tip full-tip-show" v-if="previewData.next_full_reduce">
+				还差<span class="full-tip-text">{{previewData.next_full_reduce.diff}}</span>元<span
+					class="full-tip-text">{{previewData.next_full_reduce.text}}</span>
+			</view>
+			<view class="bd-bottom dir-left-nowrap">
+				<view class="box-grow-1 cross-center u-submit-bar-height">
+					<view class="price-info">
+						<view :class="[themeTextClass]"
+							:style="{'color': !is_gift ? theme.color : '','font-size': '26rpx'}">
+							{{totalTitle}}:
+							<text v-for="(custom_currency, ccIndex) in previewData.custom_currency_all" :key="ccIndex">
+								{{custom_currency}}+
+							</text>
+							<template v-if="previewData.vip_card_discount_total_price">
+								¥{{balance <0 ? setPrice(previewData.vip_card_discount_total_price, balance) : FlorPrice(previewData.vip_card_discount_total_price)}}
+							</template>
+							<template
+								v-else>¥{{balance <0 ? setPrice(previewData.total_price, balance) : FlorPrice(previewData.total_price)}}</template>
+						</view>
+						<view v-if="previewData.vip_card_price > 0" :class="[themeTextClass]"
+							:style="{'color': !is_gift ? theme.color : '','font-size': '20rpx'}">包含SVIP费用:
+							¥{{previewData.vip_card_price}}
+						</view>
+					</view>
+				</view>
+				<template v-if="previewData.address_enable && previewData.price_enable">
+					<view @click="subscribe" class="submit-btn u-submit-bar-height box-grow-0 main-center cross-center"
+						:class="[ submitLock? ' lock' : '', themeBgClass]"
+						:style="{'background-color': !is_gift ? theme.background : ''}">
+						<view style="background-color: transparent;color:#ffffff; text-align: center;">提交订单</view>
+					</view>
+				</template>
+				<template v-else>
+					<view class="submit-btn u-submit-bar-height box-grow-0 main-center cross-center disabled"
+						:class="[themeTextClass]" :style="{'color': !is_gift ? theme.color : ''}">
+						<view style="background-color: transparent;color: #ffffff; text-align: center;">提交订单</view>
+					</view>
+				</template>
+			</view>
+		</view>
+		<app-close v-if="showClose && mchList.length > 0" :toBack="true" :mch_list="mchList" @update="getMall">
+		</app-close>
+	</app-layout>
+</template>
+<script>
+	import {
+		mapGetters,
+		mapState
+	} from 'vuex';
+	import AppDiyForm from "../../components/page-component/app-diy-form/app-diy-form.vue";
+	import appSubmitGoods from './app-submit-goods.vue';
+	import AppCouponPick from "./app-coupon-pick";
+	import AppBottomModal from "./app-bottom-modal";
+	import AppAddressBar from "./app-address-bar";
+	import AppSubmitCheckbox from "./app-submit-checkbox";
+	import AppClose from '../../components/basic-component/app-close/app-close.vue';
+
+	export default {
+		name: 'order-submit',
+		components: {
+			AppSubmitCheckbox,
+			AppAddressBar,
+			AppBottomModal,
+			AppCouponPick,
+			AppDiyForm,
+			appSubmitGoods,
+			AppClose
+		},
+		data() {
+			return {
+				balance: 0, // 余额
+				totalTitle: '合计',
+				check: false,
+				previewData: {
+					mch_list: [],
+					total_price: 0,
+					vip_card_discount_total_price: null,
+					custom_currency_all: []
+				},
+				getLocationFail: false,
+				previewUrl: null,
+				submitUrl: null,
+				plugin: null,
+				orderPageUrl: null,
+				submitLock: false,
+				getPayDataTimer: null,
+				userTheme: null,
+				is_gift: false,
+				payDataUrl: null,
+				showPayResult: true,
+				payCancelUrl: null,
+				loadingPreviewData: true,
+				showClose: false,
+				is_open: false,
+				mchList: '',
+				p_pay_id: '', //重新提交处理
+			};
+		},
+		computed: {
+			...mapState({
+				appImg: state => state.mallConfig.__wxapp_img,
+			}),
+			theme() {
+				return this.userTheme ? this.userTheme : this.getTheme;
+			},
+			...mapGetters('mallConfig', {
+				getTheme: 'getTheme',
+			}),
+			themeBgClass() {
+				if (this.userTheme && this.userTheme.indexOf('gift') >= 0) {
+					return `${this.theme} ${this.theme}-background`;
+				}
+			},
+			themeTextClass() {
+				if (this.userTheme && this.userTheme.indexOf('gift') >= 0) {
+					return `${this.theme} ${this.theme}-color`;
+				}
+			},
+		},
+		onLoad(options) {
+			this.$commonLoad.onload(options);
+			let mchList = JSON.parse(options.mch_list);
+			let list = [];
+			for (let item of mchList) {
+				if (item.mch_id > 0) {
+					list.push(item.mch_id)
+				}
+			}
+			this.is_gift = this.userTheme && this.userTheme.indexOf('gift') >= 0 ? true : false;
+			this.mchList = list.length > 0 ? JSON.stringify(list) : '0';
+			if (this.submitLock) return;
+			this.setFormData(options);
+			this.$event.on(this.$const.EVENT_USER_LOGIN).then(() => {
+				this.loadPreviewData();
+			});
+			// #ifdef H5
+			let {
+				hash
+			} = window.location;
+			if (hash.indexOf('pay_id_weChart') > 0 && hash.indexOf('isWechat=true') > 0) {
+				let _this = this;
+				uni.showModal({
+					content: '确定已完成支付?',
+					confirmText: '确定',
+					cancelText: '返回支付',
+					success(res) {
+						if (res.confirm) {
+							let search = hash.split('?')[1];
+							if (search) {
+								let str = search.substr(0).match(new RegExp('(^|&)' + 'pay_id_weChart' +
+									'=([^&]*)(&|$)'))
+								if (unescape(str[2])) {
+									_this.weChartPay(unescape(str[2]));
+								}
+							}
+						} else if (res.cancel) {
+							uni.redirectTo({
+								url: `/pages/order/index/index`
+							});
+						}
+					},
+					fail() {}
+				});
+
+			}
+			// #endif
+		},
+		onShow() {
+			this.getSetting()
+			this.showClose = false;
+			setTimeout(() => {
+				this.showClose = true;
+				// #ifdef H5
+				document.getElementsByClassName('uni-page-head__title')[0].innerHTML = '确认订单';
+				// #endif
+			});
+		},
+		onUnload() {
+			if (this.getPayDataTimer) {
+				clearTimeout(this.getPayDataTimer);
+			}
+		},
+		watch: {
+			'previewData.address.name': {
+				handler() {
+					this.changeZitiAddress();
+				},
+			},
+			'previewData.address.mobile': {
+				handler() {
+					this.changeZitiAddress();
+				},
+			},
+		},
+		methods: {
+			getMall(e) {
+				console.log(e)
+				if (e != undefined) {
+					this.is_open = e && e.is_open == 1 ? true : false;
+					if (this.is_open) {
+
+						if (this.submitLock) return;
+						// #ifdef MP-BAIDU
+						setTimeout(() => {
+							this.loadPreviewData();
+						}, 50);
+						// #endif
+						// #ifndef MP-BAIDU
+						this.loadPreviewData();
+						// #endif
+					}
+				}
+			},
+			// 获取余额接口
+			getSetting: function() {
+				const self = this;
+				self.$request({
+					url: self.$api.balance.index,
+				}).then(info => {
+					if (info.code === 0) {
+						this.balance = Number(info.data.balance);
+					}
+				});
+			},
+			setPrice(price, balance) {
+				price = Number(price)
+				balance = Math.abs(balance)
+				return (price + balance).toFixed(2)
+			},
+			FlorPrice(florPrice) {
+				return Number(florPrice).toFixed(2)
+			},
+			noCouponStatus(mchIndex) {
+				const mchNoCouponStatusList = this.$store.getters['orderSubmit/getMchNoCouponStatusList'];
+				if (mchNoCouponStatusList[mchIndex])
+					return true;
+				else
+					return false;
+			},
+			navigateVipCardPrivilege() {
+				uni.navigateTo({
+					url: '/plugins/vip_card/rights/rights?id=1',
+				});
+			},
+			showCouponPicker(index) {
+				this.previewData.mch_list[index].showCouponPicker = true;
+			},
+			reversalShowInsertRows(index) {
+				this.previewData.mch_list[index].showInsertRows = !this.previewData.mch_list[index].showInsertRows;
+			},
+			updateList(e, index) {
+				this.previewData.mch_list[index] = e;
+				this.$forceUpdate();
+			},
+			setParams(options) {
+				if (options.total_title) {
+					this.totalTitle = options.total_title;
+				}
+			},
+			handleOrderFormInput({
+				data,
+				sign
+			}) {
+				const result = [];
+				for (let i in data) {
+					result[i] = {
+						key: data[i].key,
+						label: data[i].name,
+						value: data[i].value,
+						required: data[i].is_required,
+					};
+				}
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.list[sign].order_form = result;
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+			},
+			handleOrderFormValidate({
+				result,
+				sign
+			}) {
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.list[sign].order_form_validate_result = result;
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+			},
+			setFormData(options) {
+				this.previewUrl = decodeURIComponent(options.preview_url || this.$api.order.preview);
+				this.submitUrl = decodeURIComponent(options.submit_url || this.$api.order.submit);
+				this.plugin = options.plugin || null;
+				this.orderPageUrl = decodeURIComponent(options.order_page_url || '/pages/order/index/index?status=0');
+				this.userTheme = options.theme || null;
+				this.payDataUrl = decodeURIComponent(options.pay_data_url || this.$api.order.pay_data);
+				this.payCancelUrl = options.pay_cancel_url ? decodeURIComponent(options.pay_cancel_url) : null;
+				this.showPayResult = options.show_pay_result || true;
+				if (this.showPayResult === 'true') this.showPayResult = true;
+				if (this.showPayResult === 'false') this.showPayResult = false;
+				const list = JSON.parse(options.mch_list);
+
+				// 商户列表先做下排序,主商城必须在最前
+				for (let i in list) {
+					if (parseInt(list[i].mch_id) === 0) {
+						const _mchItem = list[i];
+						list.splice(i, 1);
+						list.unshift(_mchItem);
+						break;
+					}
+				}
+
+				for (let i in list) {
+					list[i].distance = 0;
+					list[i].remark = '';
+					list[i].order_form = [];
+					list[i].use_integral = 0;
+					list[i].user_coupon_id = 0;
+					for (let j in list[i].goods_list) {
+						list[i].goods_list[j].cart_id = list[i].goods_list[j].cart_id || 0;
+					}
+					if (this.plugin === 'booking') {
+						let store_id = this.bookStorage('get');
+						list[i]['store_id'] = store_id ? store_id : '';
+					}
+				}
+				this.$store.commit('orderSubmit/mutSetFormData', {
+					list: list,
+					address_id: 0,
+					send_type: options.send_type || ''
+				});
+			},
+			bookStorage(type, store_id = '') {
+				let key = '_book_storage_order_preview';
+				if (type === 'get') {
+					return this.$storage.getStorageSync(key);
+				}
+				if (type === 'save') {
+					this.$storage.setStorageSync(key, store_id ? store_id : 0);
+				}
+			},
+			loadPreviewData() {
+				this.loadingPreviewData = true;
+				uni.showLoading({
+					mask: true,
+					title: '加载中',
+				});
+				this.$request({
+					url: this.previewUrl,
+					method: 'post',
+					data: {
+						form_data: JSON.stringify(this.$store.state.orderSubmit.formData),
+					},
+				}).then(response => {
+					this.loadingPreviewData = false;
+					uni.hideLoading();
+					if (response.code === 0) {
+						if (response.data.allZiti && !response.data.address) {
+							response.data.address = {
+								name: '',
+								mobile: '',
+							};
+						}
+						for (let i in response.data.mch_list) {
+							response.data.mch_list[i].showCouponPicker = false;
+							response.data.mch_list[i].noCoupons = false;
+							response.data.mch_list[i].showInsertRows = false;
+						}
+						this.previewData = response.data;
+						this.setDiyFormScrollStatus();
+						this.checkCouponError();
+						this.updateStoreDistance();
+						this.updateGoodsCount();
+					} else {
+						uni.showModal({
+							title: '提示',
+							content: response.msg,
+							showCancel: false,
+							success: () => {
+								uni.navigateBack();
+							},
+						});
+					}
+				}).catch(() => {
+					this.loadingPreviewData = false;
+					uni.hideLoading();
+				});
+			},
+			navigateStore(mchIndex) {
+				if (this.previewData.mch_list[mchIndex].mch.id != 0) {
+					return;
+				}
+				let firstGoodsId = '';
+				if (this.plugin === 'booking') {
+					firstGoodsId = this.previewData.mch_list[0].goods_list[0].id;
+				}
+				let plugin = this.plugin || '';
+				uni.navigateTo({
+					url: `/pages/order-submit/store-pick?mchIndex=${mchIndex}&plugin=${plugin}&firstGoodsId=${firstGoodsId}`,
+				});
+			},
+			navigateCoupon(mchIndex) {
+				uni.navigateTo({
+					url: `/pages/order-submit/coupon-pick?mchIndex=${mchIndex}`,
+				});
+			},
+			navigateSvip(mchIndex) {
+				uni.navigateTo({
+					url: `/pages/order-submit/vip-card?mchIndex=${mchIndex}`,
+				});
+			},
+			changeZitiAddress() {
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.address = {
+					name: this.previewData.address ? this.previewData.address.name : '',
+					mobile: this.previewData.address ? this.previewData.address.mobile : '',
+				};
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+			},
+			changeSendType(mchIndex, value) {
+				if (this.previewData.mch_list[mchIndex].delivery.send_type == value) return;
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.list[mchIndex].send_type = value;
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+				this.previewData.mch_list[mchIndex].delivery.send_type = value;
+				this.loadPreviewData();
+			},
+			updateStoreDistance() {
+				if (!this.previewData) return;
+				if (!this.previewData.has_ziti && this.plugin != 'booking') {
+					return;
+				}
+				// #ifdef MP
+				uni.getLocation({
+					success: (res) => {
+						for (let i in this.previewData.mch_list) {
+							if (!this.previewData.mch_list[i].store) {
+								continue;
+							}
+							if (this.previewData.mch_list[i].store.distance &&
+								this.previewData.mch_list[i].store.distance != '-m') {
+								continue;
+							}
+							if (
+								this.previewData.mch_list[i].store.latitude == '' ||
+								this.previewData.mch_list[i].store.longitude == '' ||
+								isNaN(this.previewData.mch_list[i].store.latitude) ||
+								isNaN(this.previewData.mch_list[i].store.longitude)
+							) {
+								continue;
+							}
+							const distance = this.$utils.earthDistance({
+								lat: res.latitude,
+								lng: res.longitude
+							}, {
+								lat: this.previewData.mch_list[i].store.latitude,
+								lng: this.previewData.mch_list[i].store.longitude
+							});
+							let distanceStr = '-m';
+							if (distance > 1000) {
+								distanceStr = (distance / 1000).toFixed(2) + 'km';
+							} else {
+								distanceStr = distance.toFixed(0) + 'm';
+							}
+							this.previewData.mch_list[i].store.distance = distanceStr;
+						}
+					},
+					fail: () => {
+						this.getLocationFail = true;
+					},
+				});
+				// #endif
+				// #ifdef H5
+				if (this.$jwx.isWechat()) {
+					this.$jwx.getLocation({
+						success: (res) => {
+							for (let i in this.previewData.mch_list) {
+								if (!this.previewData.mch_list[i].store) {
+									continue;
+								}
+								if (this.previewData.mch_list[i].store.distance &&
+									this.previewData.mch_list[i].store.distance != '-m') {
+									continue;
+								}
+								if (
+									this.previewData.mch_list[i].store.latitude == '' ||
+									this.previewData.mch_list[i].store.longitude == '' ||
+									isNaN(this.previewData.mch_list[i].store.latitude) ||
+									isNaN(this.previewData.mch_list[i].store.longitude)
+								) {
+									continue;
+								}
+								const distance = this.$utils.earthDistance({
+									lat: res.latitude,
+									lng: res.longitude
+								}, {
+									lat: this.previewData.mch_list[i].store.latitude,
+									lng: this.previewData.mch_list[i].store.longitude
+								});
+								let distanceStr = '-m';
+								if (distance > 1000) {
+									distanceStr = (distance / 1000).toFixed(2) + 'km';
+								} else {
+									distanceStr = distance.toFixed(0) + 'm';
+								}
+								this.previewData.mch_list[i].store.distance = distanceStr;
+							}
+						},
+						fail: () => {
+							this.getLocationFail = true;
+						},
+					});
+				} else {
+					uni.getLocation({
+						success: (res) => {
+							for (let i in this.previewData.mch_list) {
+								if (!this.previewData.mch_list[i].store) {
+									continue;
+								}
+								if (this.previewData.mch_list[i].store.distance &&
+									this.previewData.mch_list[i].store.distance != '-m') {
+									continue;
+								}
+								if (
+									this.previewData.mch_list[i].store.latitude == '' ||
+									this.previewData.mch_list[i].store.longitude == '' ||
+									isNaN(this.previewData.mch_list[i].store.latitude) ||
+									isNaN(this.previewData.mch_list[i].store.longitude)
+								) {
+									continue;
+								}
+								const distance = this.$utils.earthDistance({
+									lat: res.latitude,
+									lng: res.longitude
+								}, {
+									lat: this.previewData.mch_list[i].store.latitude,
+									lng: this.previewData.mch_list[i].store.longitude
+								});
+								let distanceStr = '-m';
+								if (distance > 1000) {
+									distanceStr = (distance / 1000).toFixed(2) + 'km';
+								} else {
+									distanceStr = distance.toFixed(0) + 'm';
+								}
+								this.previewData.mch_list[i].store.distance = distanceStr;
+							}
+						},
+						fail: () => {
+							this.getLocationFail = true;
+						},
+					});
+				}
+				// #endif
+			},
+			openLocationSetting() {
+				this.getLocationFail = false;
+				uni.openSetting({});
+			},
+			showIntegralTip() {
+				uni.showModal({
+					title: '积分抵扣说明',
+					content: this.$store.state.mallConfig.mall.setting.member_integral_rule,
+					showCancel: false,
+				});
+			},
+			changeIntegral(mchIndex) {
+				const formData = this.$store.state.orderSubmit.formData;
+				const use = !this.previewData.mch_list[mchIndex].integral.use;
+				formData.list[mchIndex].use_integral = use ? 1 : 0;
+				this.previewData.mch_list[mchIndex].integral.use = use;
+				this.loadPreviewData();
+			},
+			inputRemark(mchIndex) {
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.list[mchIndex].remark = this.previewData.mch_list[mchIndex].remark;
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+			},
+			submit() {
+				uni.showLoading({
+					mask: true,
+					title: '提交中',
+				});
+				this.$request({
+					url: this.submitUrl,
+					method: 'post',
+					data: {
+						form_data: JSON.stringify(this.$store.state.orderSubmit.formData),
+					},
+				}).then(response => {
+					if (response.code === 0) {
+						this.getPayOrderId(response.data.queue_id, response.data.token);
+					} else {
+						this.submitLock = false;
+						uni.hideLoading();
+						uni.showModal({
+							title: '',
+							content: response.msg,
+							showCancel: false,
+						});
+					}
+				}).catch(e => {
+					this.submitLock = false;
+					uni.hideLoading();
+					uni.showModal({
+						title: '提示',
+						content: e.errMsg,
+						showCancel: false,
+					});
+				});
+			},
+			getPayOrderId(queue_id, token) {
+				this.$request({
+					url: this.payDataUrl,
+					method: 'post',
+					data: {
+						queue_id: queue_id,
+						token: token,
+					},
+				}).then(response => {
+					if (response.code === 0) {
+						if (response.data.retry && response.data.retry === 1) {
+							this.getPayDataTimer = setTimeout(() => {
+								this.getPayOrderId(queue_id, token);
+							}, 1000);
+						} else {
+							uni.hideLoading();
+							this.pay(response.data);
+						}
+					} else {
+						this.submitLock = false;
+						uni.hideLoading();
+						uni.showModal({
+							title: '提示',
+							content: response.msg,
+							showCancel: false,
+						});
+					}
+				}).catch(e => {
+					this.submitLock = false;
+					uni.hideLoading();
+					uni.showModal({
+						title: '提示',
+						content: e.errMsg,
+						showCancel: false,
+					});
+				});
+			},
+			pay(data) {
+				this.p_pay_id = data.id;
+				this.$payment.pay(data.id).then(res => {
+					if (this.showPayResult) {
+						uni.redirectTo({
+							url: `/pages/order-submit/pay-result?payment_order_union_id=${data.id}&order_page_url=${encodeURIComponent(this.orderPageUrl)}`,
+						});
+					} else {
+
+						let page_url = this.orderPageUrl;
+						if (page_url.indexOf('?') === -1) {
+							page_url += '?'
+						} else {
+							page_url += '&';
+						}
+
+						delete data.id;
+
+						page_url += `pay_data=${JSON.stringify(data)}`;
+
+						uni.redirectTo({
+							url: page_url,
+						});
+					}
+				}).catch(e => {
+					if (this.payCancelUrl) {
+						let page_url = this.payCancelUrl;
+						if (page_url.indexOf('?') === -1) {
+							page_url += '?'
+						} else {
+							page_url += '&';
+						}
+						page_url += `pay_data=${JSON.stringify(data)}`;
+						uni.redirectTo({
+							url: page_url,
+						});
+					} else {
+						if (e.errMsg === '5b03b6e009796c698d132908cb635fca') {
+							//重新发起支付
+							this.submitLock = false;
+						} else {
+							uni.showModal({
+								title: '提交失败',
+								content: e.errMsg,
+								showCancel: false,
+								success: () => {
+									uni.redirectTo({
+										url: this.orderPageUrl,
+									});
+								},
+							});
+						}
+					}
+				});
+			},
+			jump() {
+				uni.navigateTo({
+					url: `/pages/order-submit/map`,
+				});
+			},
+			checkCouponError() {
+				for (let i in this.previewData.mch_list) {
+					if (this.previewData.mch_list[i].coupon && this.previewData.mch_list[i].coupon.coupon_error) {
+						uni.showModal({
+							title: '',
+							content: this.previewData.mch_list[i].coupon.coupon_error,
+							showCancel: false,
+						});
+						return;
+					}
+				}
+			},
+			setDiyFormScrollStatus() {
+				for (let i in this.previewData.mch_list) {
+					let order_form = this.previewData.mch_list[i].order_form;
+					if (order_form) {
+						if (order_form.value && order_form.value.length && order_form.value.length >= 5) {
+							order_form.show_scroll = true;
+						} else {
+							order_form.show_scroll = false;
+						}
+					}
+				}
+			},
+			subscribe() {
+				if (this.p_pay_id) {
+					this.pay({
+						id: this.p_pay_id
+					});
+					return true;
+				} else {
+					this.p_pay_id = '';
+				}
+				for (let i in this.$store.state.orderSubmit.formData.list) {
+					const item = this.$store.state.orderSubmit.formData.list[i];
+					if (!item.order_form_validate_result) continue;
+					if (item.order_form_validate_result.hasError) {
+						uni.showModal({
+							title: '提示',
+							content: item.order_form_validate_result.errors[0].msg,
+							showCancel: false,
+						});
+						return;
+					}
+				}
+				for (let i in this.$store.state.orderSubmit.formData.list) {
+					for (let j in this.$store.state.orderSubmit.formData.list[i].goods_list) {
+						const item = this.$store.state.orderSubmit.formData.list[i].goods_list[j];
+						if (!item.goods_form_validate_result) continue;
+						if (item.goods_form_validate_result.hasError) {
+							uni.showModal({
+								title: '提示',
+								content: item.goods_form_validate_result.errors[0].msg,
+								showCancel: false,
+							});
+							return;
+						}
+					}
+					if (this.plugin === 'booking' && this.$store.state.orderSubmit.formData.list[i]) {
+						this.bookStorage('save', this.$store.state.orderSubmit.formData.list[i].store_id);
+					}
+				}
+				if (this.submitLock) return;
+				this.submitLock = true;
+				this.$subscribe(this.previewData.template_message_list).then(res => {
+					this.submit();
+				}).catch(() => {
+					this.submit();
+				});
+			},
+			handleGoodsFormInput({
+				data,
+				sign
+			}) {
+				const signArr = sign.split(',');
+				const mchIndex = parseInt(signArr[0]);
+				const goodsIndex = parseInt(signArr[1]);
+				// const formId = parseInt(signArr[2]);
+				const result = [];
+				for (let i in data) {
+					result[i] = {
+						key: data[i].key,
+						label: data[i].name,
+						value: data[i].value,
+						required: data[i].is_required,
+					};
+				}
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.list[mchIndex].goods_list[goodsIndex].form_data = result;
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+			},
+			handleGoodsFormValidate({
+				result,
+				sign
+			}) {
+				if (!sign) return;
+				const signArr = sign.split(',');
+				const mchIndex = parseInt(signArr[0]);
+				const goodsIndex = parseInt(signArr[1]);
+				const formData = this.$store.state.orderSubmit.formData;
+				formData.list[mchIndex].goods_list[goodsIndex].goods_form_validate_result = result;
+				this.$store.commit('orderSubmit/mutSetFormData', formData);
+			},
+			updateGoodsCount() {
+				for (let i in this.previewData.mch_list) {
+					let count = 0;
+					for (let j in this.previewData.mch_list[i].goods_list) {
+						count += parseInt(this.previewData.mch_list[i].goods_list[j].num);
+					}
+					this.previewData.mch_list[i].goods_count = count;
+				}
+			},
+			handleAddressInput(e) {
+				if (typeof e.name !== 'undefined') this.previewData.address.name = e.name;
+				if (typeof e.mobile !== 'undefined') this.previewData.address.mobile = e.mobile;
+			},
+			// #ifdef H5
+			weChartPay(id) {
+				this.$request({
+					url: this.$api.registered.pay,
+					method: 'get',
+					data: {
+						payment_order_union_id: id
+					}
+				}).then((res) => {
+					if (res.code === 0) {
+						if (res.data.status === 1) {
+							uni.redirectTo({
+								url: `/pages/order-submit/pay-result?payment_order_union_id=${id}&order_page_url=${encodeURIComponent(this.orderPageUrl)}`,
+							});
+						} else {
+							if (this.orderPageUrl) {
+								uni.redirectTo({
+									url: this.orderPageUrl
+								});
+							} else {
+								uni.redirectTo({
+									url: '/pages/order/index/index'
+								});
+							}
+						}
+					}
+				})
+			}
+			// #endif
+		},
+	}
+</script>
+<style scoped lang="scss">
+	$submitBarHeight: #{110rpx};
+	$borderColor: $uni-weak-color-one;
+	$xWidth: #{24rpx};
+	$yWidth: #{24rpx};
+
+	.page {
+		padding-bottom: $submitBarHeight;
+		font-size: #{28rpx};
+		line-height: 1;
+		color: #353535;
+	}
+
+	.u-submit-bar-height {
+		height: 82upx;
+	}
+
+	.group {
+		margin: #{20rpx} #{26rpx};
+		background: #fff;
+		border-radius: #{16rpx};
+		overflow: hidden;
+		box-shadow: 0 0 #{5rpx} rgba(0, 0, 0, 0.025);
+	}
+
+	.row {
+		padding: #{12rpx} #{32rpx};
+	}
+
+	.row.no-px {
+		padding-left: 0;
+		padding-right: 0;
+	}
+
+	.line {
+		height: 0;
+		width: 100%;
+		background: #e2e2e2;
+		border-bottom: #{1rpx} solid #e2e2e2;
+	}
+
+	.font-bold {
+		font-weight: bold;
+	}
+
+	.font-small {
+		font-size: #{24rpx};
+	}
+
+	.font-gray {
+		color: #999999;
+	}
+
+	.title-icon {
+		width: #{28rpx};
+		height: #{25rpx};
+		display: block;
+	}
+
+	.mr-12 {
+		margin-right: #{12rpx};
+	}
+
+	.ellipsis-1 {
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+
+	.ellipsis-2 {
+		display: -webkit-box;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 2;
+		text-overflow: ellipsis;
+		overflow: hidden;
+	}
+
+
+	.send-type {
+		display: inline-block;
+		padding: 0 0;
+		height: #{56rpx};
+		line-height: #{56rpx};
+		width: #{190rpx};
+		text-align: center;
+		border-radius: #{100rpx};
+		margin: 0 #{32rpx} 0 0;
+		font-size: #{28rpx};
+	}
+
+	.send-type:last-child {
+		margin-right: 0;
+	}
+
+	.delivery-coverage-btn {
+		display: inline-block;
+		padding: 0 #{20rpx};
+		height: #{56rpx};
+		line-height: #{56rpx};
+		text-align: center;
+		border-radius: #{100rpx};
+		font-size: #{24rpx};
+		border: #{1rpx} solid #e5e5e5;
+		color: #666;
+	}
+
+	.more-discount-info {
+		background: #f7f7f7;
+		padding: #{6rpx} #{14rpx};
+		position: relative;
+		border-radius: #{8rpx};
+	}
+
+	.more-discount-info:before {
+		display: block;
+		content: " ";
+		width: 0;
+		height: 0;
+		position: absolute;
+		right: #{30rpx};
+		top: -#{39rpx};
+		border: #{20rpx} solid transparent;
+		border-bottom-color: #f7f7f7;
+	}
+
+	.insert-rows {
+		height: 0;
+		overflow: hidden;
+		transition: 200ms;
+		padding: 0 0;
+		visibility: hidden;
+
+		view {
+			font-size: #{24rpx};
+		}
+	}
+
+	.show .insert-rows {
+		height: auto;
+		padding: #{24rpx} 0;
+		visibility: visible;
+	}
+
+	.show .bottom-icon,
+	.bottom-icon.show {
+		transform: rotate(180deg);
+		transition: 200ms;
+	}
+
+	.svip {
+		view {
+			color: #e4cdbb;
+		}
+
+		height: #{120rpx};
+		background-size: 100% 100%;
+		background-color: #3c352e;
+		padding-left: #{110rpx};
+		border-radius: #{12rpx};
+
+		.vip-card-name {
+			max-width: #{90rpx};
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+			font-size: #{24rpx};
+			color: #f3be94;
+		}
+	}
+
+	.goods-form {
+		.goods-list {
+			padding-top: #{12rpx};
+			padding-bottom: #{12rpx};
+		}
+
+		.goods-item {
+			margin: #{12rpx} 0;
+		}
+
+		.goods-image {
+			width: #{200rpx};
+			height: #{200rpx};
+			margin-right: #{24rpx};
+		}
+
+		.goods-name {
+			line-height: #{35rpx};
+			height: #{70rpx};
+			margin-bottom: #{32rpx};
+		}
+	}
+
+	/* ---------- */
+
+
+	.submit-bar {
+		//background: #fff;
+		//border-top: #{1rpx} solid $uni-weak-color-two;
+		//position: fixed;
+		//left: 0;
+		//bottom: 0;
+		//width: 100%;
+		//z-index: 1000;
+
+		.price-info {
+			padding: 0 0;
+
+			>view {
+				margin: #{16rpx} 0;
+			}
+		}
+
+		.submit-btn {
+			width: 240upx;
+			text-align: center;
+			border-radius: 41upx;
+		}
+
+		.submit-btn:active {
+			box-shadow: inset 0 0 #{500rpx} rgba(0, 0, 0, .15);
+		}
+
+		.submit-btn.lock {
+			box-shadow: inset 0 0 #{500rpx} rgba(255, 255, 255, 0.35);
+		}
+
+		.submit-btn.disabled {
+			background: $uni-general-color-two;
+		}
+	}
+
+	.theme-color {
+		color: #ffffff;
+	}
+
+	.u-bottom-fixed {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		z-index: 997;
+		background-color: #ffffff;
+		box-shadow: 0 -1rpx 20rpx -15rpx #353535;
+	}
+
+	.bd-bottom {
+		width: 750upx;
+		height: 110upx;
+		padding: 14upx 24upx;
+	}
+
+	.full-tip {
+		width: 750upx;
+		height: 58upx;
+		line-height: 58upx;
+	}
+
+	.full-tip-show {
+		background-color: #ffecec;
+		font-size: #{24rpx};
+		text-align: center;
+
+		.full-tip-text {
+			color: #FF4544;
+		}
+	}
+</style>

+ 53 - 13
src/pages/order-submit/order-submit.vue

xqd xqd xqd xqd xqd xqd xqd xqd xqd
@@ -97,8 +97,8 @@
 							</template><!-- 自提门店信息end -->
 						</view>
 						<view class="line"></view>
-						<view v-if="mch.show_delivery !== false" style="padding: 18rpx 32rpx;">
-							<!-- 选择配送方式start -->
+						<!-- 选择配送方式start -->
+						<!-- <view v-if="mch.show_delivery !== false" style="padding: 18rpx 32rpx;">
 							<view class="dir-left-nowrap cross-center" style="padding: 18rpx 0;">
 								<view class="box-grow-0">
 									<image src="https://shop.9026.com/web/statics/image/mall/static/icon/delivery.png" class="title-icon mr-12"></image>
@@ -114,7 +114,8 @@
 									{{sendType.name}}
 								</view>
 							</view>
-						</view><!-- 选择配送方式end -->
+						</view> -->
+						<!-- 选择配送方式end -->
 						<template v-if="mch.delivery && mch.delivery.send_type === 'city' && mch.city">
 							<!-- 同城配送信息start -->
 							<view class="line"></view>
@@ -178,7 +179,7 @@
 										</app-coupon-pick>
 									</app-bottom-modal>
 								</template>
-								<view v-if="mch.member_discount > 0 || mch.member_discount < 0" class="dir-left-nowrap"
+								<!-- <view v-if="mch.member_discount > 0 || mch.member_discount < 0" class="dir-left-nowrap"
 									style="padding: 16rpx 0;">
 									<view class="box-grow-1">会员价总优惠</view>
 									<view class="box-grow-0" :class="[themeTextClass]"
@@ -188,8 +189,8 @@
 											v-else-if="mch.member_discount<0">+¥{{0-mch.member_discount}}</template>
 										<template v-else>¥0.00</template>
 									</view>
-								</view>
-								<view v-if="mch.full_reduce_discount > 0 || mch.full_reduce_discount < 0"
+								</view> -->
+								<!-- <view v-if="mch.full_reduce_discount > 0 || mch.full_reduce_discount < 0"
 									class="dir-left-nowrap" style="padding: 16rpx 0;">
 									<view class="box-grow-1">满减总优惠</view>
 									<view class="box-grow-0" :class="[themeTextClass]"
@@ -199,8 +200,8 @@
 										<template
 											v-else-if="mch.full_reduce_discount<0">+¥{{0-mch.full_reduce_discount}}</template>
 									</view>
-								</view>
-								<view v-if="mch.integral && mch.integral.can_use" class="dir-left-nowrap"
+								</view> -->
+								<!-- <view v-if="mch.integral && mch.integral.can_use" class="dir-left-nowrap"
 									style="padding: 16rpx 0;">
 									<view class="box-grow-1 dir-left-nowrap cross-center">
 										积分抵扣(使用 {{mch.integral.use_num}}积分)
@@ -219,8 +220,8 @@
 											</app-submit-checkbox>
 										</view>
 									</view>
-								</view>
-								<view v-if="mch.temp_vip_discount" style="padding: 16rpx 0;">
+								</view> -->
+								<!-- <view v-if="mch.temp_vip_discount" style="padding: 16rpx 0;">
 									<view :style="{
                             backgroundImage: `url(${appImg.order_submit.svip_bg})`,
                             }" class="svip dir-left-nowrap cross-center">
@@ -254,8 +255,8 @@
 												style="width: 12rpx;height: 22rpx; display: block;"></image>
 										</view>
 									</view>
-								</view>
-								<view v-if="mch.insert_rows && mch.insert_rows.length"
+								</view> -->
+								<!-- <view v-if="mch.insert_rows && mch.insert_rows.length"
 									:class="[mch.showInsertRows?'show':'',]">
 									<view class="dir-left-nowrap cross-center" @click="reversalShowInsertRows(mchIndex)"
 										style="padding: 16rpx 0;">
@@ -281,10 +282,47 @@
 											</view>
 										</view>
 									</view>
-								</view>
+								</view> -->
 							</view>
 							<view class="line"></view>
 						</template>
+						<template>
+							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+								<view class="box-grow-1">支付方式</view>
+								<view class="box-grow-0" >
+									微信支付
+								</view>
+							</view>
+							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+								<view class="box-grow-1">配送方式</view>
+								<view class="box-grow-0" >
+									快递配送
+								</view>
+							</view>
+						</template>
+						<template >
+							<!-- 申请发票start -->
+							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+								<view class="box-grow-1">发票</view>
+								<view class="box-grow-0">
+									<label>
+										<checkbox class="fp" :value="1" checked="false" color="#AE8445" style="transform:scale(0.7)" />
+									</label>
+								</view>
+							</view>
+							<view style="font-size: 24rpx;font-weight: 500;color: #AE8445;line-height: 46rpx;text-align: right;padding: 0 32rpx;">编辑发票资料</view>
+							
+							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
+								<view class="box-grow-1">发票收货地址</view>
+								<view class="box-grow-0">
+									<label>
+										<checkbox class="fp" :value="1" checked="false" color="#AE8445" style="transform:scale(0.7)" />
+									</label>
+								</view>
+							</view>
+							<view style="font-size: 24rpx;font-weight: 500;color: #AE8445;line-height: 46rpx;text-align: right;padding: 0 32rpx;">填写收货地址</view>
+						</template><!-- 申请发票end -->
+						
 						<template v-if="mch.show_express_price !== false">
 							<!-- 运费信息start -->
 							<view class="dir-left-nowrap cross-center" style="height: 84rpx; padding: 0 32rpx;">
@@ -1522,4 +1560,6 @@
 			color: #FF4544;
 		}
 	}
+	
+	
 </style>

+ 112 - 123
src/pages/sale/properties/addProperties.vue

xqd xqd xqd xqd xqd
@@ -1,131 +1,120 @@
 <template>
-	<u-index-list>
-<!-- 		<view slot="header" class="list">
-			<view class="list__item">
-				<u-avatar shape="square" size="35" icon="man-add-fill" fontSize="26" randomBgColor></u-avatar>
-				<text class="list__item__user-name">新的朋友</text>
-			</view>
-			<u-line></u-line>
-			<view class="list__item">
-				<u-avatar shape="square" size="35" icon="tags-fill" fontSize="26" randomBgColor></u-avatar>
-				<text class="list__item__user-name">标签</text>
-			</view>
-			<u-line></u-line>
-			<view class="list__item">
-				<u-avatar shape="square" size="35" icon="chrome-circle-fill" fontSize="26" randomBgColor></u-avatar>
-				<text class="list__item__user-name">朋友圈</text>
+	<view>
+		<view class="main-left cross-center search">
+			<image src="../../../static/image/index/search.png" mode=""></image>
+			<input style="width: 560rpx;" type="text" value="" placeholder="搜索楼盘" placeholder-style="font-size:28rpx;color:#999;" />
+		</view>
+		<view class="properties_list">
+			<view class="item main-left" v-for="(item,index) in 14" @click="show=true">
+				<view class="left">
+					<image src="../../../static/image/sale/1.png" mode=""></image>
+				</view>
+				<view class="main-between-y right ">
+					<view class="title">建业·凯旋广场</view>
+					<view class="addr">成都市武侯区天府一街5号</view>
+					<view class="content">洛阳建业·凯旋广场由建业(住宅)集团投资,洛阳建业凯旋置地有限公司开发...</view>
+				</view>
+				<image class="bg" src="../../../static/image/sale/properties_gradual.png" mode=""></image>
 			</view>
-			<u-line></u-line>
-			<view class="list__item">
-				<u-avatar shape="square" size="35" icon="qq-fill" fontSize="26" randomBgColor></u-avatar>
-				<text class="list__item__user-name">QQ</text>
+			<!-- <view style="100rpx"></view>
+			<navigator url="/pages/sale/properties/addProperties" hover-class="navigator-hover">
+				<button class="addPro" type="default">添加楼盘</button>
+			</navigator> -->
+		
+		</view>
+		<u-popup v-model="show" mode="center" border-radius="14" @close="show = false">
+			<view class="model">
+				<viwe class="main-right"><image src="../../../static/image/index/close.png" mode="" style="width: 25rpx;height: 24rpx;" @click="show=false"></image></viwe>
+				<viwe class="title">建业·凯旋广场</viwe>
+				<viwe class="main-left cross-center addr"><image src="../../../static/image/index/location.png" mode="" style="width: 18rpx;height: 20rpx;margin-right: 8rpx;"></image>
+				成都市武侯区天府一街5号
+				</viwe>
+				<viwe class="img"><image class="img" src="../../../static/image/index/11.png" mode=""></image></viwe>
+				<viwe class="desc t-omit-three">建业南湖壹号,建业集团第19年首部旅游度假社区,也将是河南省第一个真正意义上的度假地产项目。</viwe>
+				<button type="default" class="btn">确认选择</button>
 			</view>
-			<u-line></u-line>
-		</view> -->
-		<template v-for="(item, index) in itemArr">
-			<u-index-item :key="index">
-				<u-index-anchor :text="indexList[index]"></u-index-anchor>
-				<!-- <view class="list" v-for="(item1, index1) in item" :key="index1">
-					<view class="list__item">
-						<image class="list__item__avatar" :src="item1.url"></image>
-						<text class="list__item__user-name">{{item1.name}}</text>
-					</view>
-					<u-line></u-line>
-				</view> -->
-				<view class="item main-left" v-for="(item1, index1) in item" :key="index1">
-					<view class="left">
-						<image src="../../../static/image/sale/1.png" mode=""></image>
-					</view>
-					<view class="main-between-y right ">
-						<view class="title">建业·凯旋广场</view>
-						<view class="addr">成都市武侯区天府一街5号</view>
-						<view class="content">洛阳建业·凯旋广场由建业(住宅)集团投资,洛阳建业凯旋置地有限公司开发...</view>
-					</view>
-					<image class="bg" src="../../../static/image/sale/properties_gradual.png" mode=""></image>
-				</view>
-			</u-index-item>
-		</template>
-	</u-index-list>
+		</u-popup>
+	</view>
 </template>
 
 <script>
-	const indexList = () => {
-		const indexList = []
-		const charCodeOfA = 'A'.charCodeAt(0)
-		for (let i = 0; i < 26; i++) {
-			indexList.push(String.fromCharCode(charCodeOfA + i))
-		}
-		return indexList
-	}
+	import uPopup from '../../../components/basic-component/u-popup/u-popup.vue';
 	export default {
+		components:{
+			uPopup
+		},
 		data() {
 			return {
-				indexList: indexList(),
-				urls: [
-					'https://cdn.uviewui.com/uview/album/1.jpg',
-					'https://cdn.uviewui.com/uview/album/2.jpg',
-					'https://cdn.uviewui.com/uview/album/3.jpg',
-					'https://cdn.uviewui.com/uview/album/4.jpg',
-					'https://cdn.uviewui.com/uview/album/5.jpg',
-					'https://cdn.uviewui.com/uview/album/6.jpg',
-					'https://cdn.uviewui.com/uview/album/7.jpg',
-					'https://cdn.uviewui.com/uview/album/8.jpg',
-					'https://cdn.uviewui.com/uview/album/9.jpg',
-					'https://cdn.uviewui.com/uview/album/10.jpg',
-				],
-				names: ["勇往无敌", "疯狂的迪飙", "磊爱可", "梦幻梦幻梦", "枫中飘瓢", "飞翔天使",
-					"曾经第一", "追风幻影族长", "麦小姐", "胡格罗雅", "Red磊磊", "乐乐立立", "青龙爆风", "跑跑卡叮车", "山里狼", "supersonic超"
-				]
-			}
-		},
-		computed: {
-			itemArr() {
-				return this.indexList.map(item => {
-					const arr = []
-					for (let i = 0; i < 10; i++) {
-						arr.push({
-							name: this.names[uni.$u.random(0, this.names.length - 1)],
-							url: this.urls[uni.$u.random(0, this.urls.length - 1)]
-						})
-					}
-					return arr
-				})
-			}
-		},
+				show:false
+			};
+		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.list {
-		
-		&__item {
-			@include flex;
-			padding: 6px 12px;
-			align-items: center;
-			
-			&__avatar {
-				height: 35px;
-				width: 35px;
-				border-radius: 3px;
-			}
-			
-			&__user-name {
-				font-size: 16px;
-				margin-left: 10px;
-				color: $u-main-color;
-			}
+	.model{
+		width: 626rpx;
+		height: 839rpx;
+		background: #FFFFFF;
+		border-radius: 14rpx;
+		padding: 37rpx 49rpx;
+		.title{
+			font-size: 36rpx;
+			font-weight: bold;
+			color: #222222;
 		}
-		
-		&__footer {
-			color: $u-tips-color;
-			font-size: 14px;
-			text-align: center;
-			margin: 15px 0;
+		.addr{
+			font-size: 22rpx;
+			font-weight: 500;
+			color: #999999;
+			margin-top: 20rpx;
+		}
+		.img{
+			width: 528rpx;
+			height: 311rpx;
+			border-radius: 14rpx;
+			margin-top: 28rpx;
+		}
+		.desc{
+			font-size: 26rpx;
+			font-weight: 500;
+			color: #222222;
+			line-height: 36rpx;
+			margin-top: 36rpx;
+			max-height: 100rpx;
+		}
+		.btn{
+			width: 525rpx;
+			height: 85rpx;
+			background: #A18353;
+			border-radius: 6rpx;
+			margin: 49rpx auto;
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #FFFFFF;
 		}
 	}
-	// .properties_list {
-	// 	background-color: #F8F8F8;
-	
+	.page{
+		padding: 22rpx 0 0 0;
+		min-height: 100vh;
+	}
+	.search{
+		width: 680rpx;
+		height: 82rpx;
+		background: #FFFFFF;
+		border: 1rpx solid #EEEEEE;
+		border-radius: 4rpx;
+		margin: 0 auto;
+		padding-left: 22rpx;
+		image{
+			width: 22rpx;
+			height: 22rpx;
+			margin-right: 18rpx;
+		}
+	}
+	.properties_list {
+		background-color: #F8F8F8;
+
 		.item {
 			font-family: PingFang SC;
 			margin: 25rpx auto;
@@ -136,7 +125,7 @@
 			// background-image: url(../../../static/image/sale/properties_gradual.png);
 			padding: 25rpx;
 			position: relative;
-	
+
 			.bg {
 				position: absolute;
 				top: 0;
@@ -144,7 +133,7 @@
 				width: 80%;
 				height: 100%;
 			}
-	
+
 			.left {
 				image {
 					width: 153rpx;
@@ -152,34 +141,34 @@
 					border-radius: 10rpx;
 				}
 			}
-	
+
 			.right {
 				margin-left: 25rpx;
-	
+
 				.title {
 					font-size: 30rpx;
-	
+
 					font-weight: bold;
 					color: #222222;
 				}
-	
+
 				.addr {
 					font-size: 22rpx;
-	
+
 					font-weight: 500;
 					color: #222222;
 				}
-	
+
 				.content {
 					font-size: 24rpx;
-	
+
 					font-weight: 500;
 					color: #666666;
 					line-height: 34rpx;
 				}
 			}
 		}
-	
+
 		.addPro {
 			position: fixed;
 			bottom: 0;
@@ -191,5 +180,5 @@
 			font-weight: bold;
 			color: #FFFFFF;
 		}
-	// }
+	}
 </style>

+ 22 - 0
src/pages/sale/properties/bindBuild/bindBuild.vue

xqd
@@ -0,0 +1,22 @@
+<template>
+	<view>
+		<view>
+			<view>请选择楼盘</view>
+			<view></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 59 - 2
src/pages/user-center/user-center.vue

xqd xqd xqd
@@ -68,6 +68,30 @@
                         </view>
                     </app-jump-button>
                 </view>
+				<view class="item" v-for="(item, index) in temporaryMenu" :key="index" >
+				    <app-jump-button form
+				                     :url="item.link_url"
+				                     :open_type="item.open_type"
+				                     :item="item"
+				                     :arrangement="`${userCenter.menu_style === '1' ? 'row' : userCenter.menu_style === '2' ? 'column' : ''}`">
+				        <view style="width: 100%"
+				              class="item-container"
+				              :class="[
+				                  userCenter.menu_style=='1'?'dir-left-nowrap cross-center':'',
+				                  userCenter.menu_style=='2'?'dir-top-nowrap cross-center':'',
+				              ]">
+				            <view class="box-grow-0">
+				                <image :src="item.icon_url" class="icon"></image>
+				            </view>
+				            <view class="box-grow-1" style="max-width: 100%">
+				                <view class="name">{{item.name}}</view>
+				            </view>
+				            <view class="box-grow-0" v-if="userCenter.menu_style=='1'">
+				                <image src="https://shop.9026.com/web/statics/image/mall/static/icon/arrow-right.png" class="arrow"></image>
+				            </view>
+				        </view>
+				    </app-jump-button>
+				</view>
                 <!--  #endif -->
                 <!--  #ifdef H5 -->
                 <block v-for="(item, index) in menus" :key="index">
@@ -141,6 +165,40 @@
 			AppNavBar,
 			AppMyIncome,
         },
+		data(){ 
+			return {
+				temporaryMenu:[
+					{
+						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
+						key: "pintuan",
+						link_url: "/plugins/pt/order/order",
+						name: "我的评价",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
+						key: "pintuan",
+						link_url: "/plugins/pt/order/order",
+						name: "我的楼盘",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
+						key: "pintuan",
+						link_url: "/plugins/pt/order/order",
+						name: "关于商城",
+						open_type: "navigate",
+					},
+					{
+						icon_url: "https://t1.9026.com/plugins/pintuan/assets/img/pick-link/icon-pintuan.png",
+						key: "pintuan",
+						link_url: "/plugins/pt/order/order",
+						name: "切换销售端",
+						open_type: "navigate",
+					}
+				]
+			}
+		},
         computed: {
             ...mapState({
                 copyright: state => state.mallConfig.copyright,
@@ -246,8 +304,7 @@
                                   -webkit-align-items: center;
                                   align-items: center;
                                 }
-</style>
-                            `;
+							</style>`;
                             let classStr = '';
                             let font = '';
                             let padding = '';

+ 9 - 0
src/static/css/hxj.scss

xqd xqd
@@ -18,7 +18,13 @@
 .hjx-tc-B19D60{
 	color: #B19D60;
 }
+.hjx-tc-AE8445{
+	color: #AE8445;
+}
 
+.hjx-ts-22{
+	font-size: 22rpx;
+}
 .hjx-ts-24{
 	font-size: $uni-font-size-weak-one;
 }
@@ -35,6 +41,9 @@
 	font-size: 34rpx;
 }
 
+.hjx-tw-500{
+	font-weight: 500;
+}
 .hjx-tw-600{
 	font-weight: 600;
 }

BIN
src/static/image/index/16.png


BIN
src/static/image/index/arrow-down.png


BIN
src/static/image/index/arrow-right-yellow.png


BIN
src/static/image/index/close.png


BIN
src/static/image/index/k.png


BIN
src/static/image/index/location.png


BIN
src/static/image/index/search.png