Просмотр исходного кода

Merge branch 'master' of git.huaml.com:zhh/front-end

# Conflicts:
#	ghs/src/admin/home/workbench.vue
zhengxin 5 лет назад
Родитель
Сommit
5ab57ac5e1

+ 144 - 5
ghs/src/admin/home/apply.vue

@@ -1,15 +1,154 @@
 <template>
-    <div>
-
-    </div>
+    <view class="app-content">
+        <view class="apply-content_box">
+            <view 
+                v-for="item in menuList"
+                :key="item.title"
+                class="apply-list_box">
+                <view class="tit">
+                    {{item.title}}
+                </view>
+                <div class="tabs-wrap">
+                    <div 
+                        v-for="s in item.list"
+                        :key="s.url"
+                        class="tabs-list">
+                        <div @click="pageTo(s)">
+                        <div class="tabs-img">
+                            <img :src="s.img" alt mode="widthFix" />
+                        </div>
+                        <div class="tabs-name">{{s.name}}</div>
+                        </div>
+                    </div>
+                </div> 
+            </view>
+            
+        </view>
+    </view>
 </template>
 
 <script>
     export default { // 应用页面
-        name:'Apply'
+        name:'Apply',
+        data(){
+            return {
+                menuList: [
+                    {
+                        title:'门店仓库',
+                        list:[
+                            {
+                            name: "花材管理",
+                            img: `${this.$constant.imgUrl}/ghs/home/hcgl.png`,
+                            url: "/admin/staff/list"
+                            },
+                            {
+                            name: "门店管理",
+                            img: `${this.$constant.imgUrl}/ghs/home/shop.png`,
+                            url: "/admin/shop/list"
+                            },
+                            {
+                            name: "调拨出库",
+                            img: `${this.$constant.imgUrl}/ghs/home/dbck.png`,
+                            url: "/admin/staff/list"
+                            },
+                            {
+                            name: "调拨入库",
+                            img: `${this.$constant.imgUrl}/ghs/home/dbrk.png`,
+                            url: "/admin/staff/list"
+                            },
+                            {
+                                name: "库存预警",
+                                img: `${this.$constant.imgUrl}/ghs/home/kcyj.png`,
+                                url: "/admin/staff/list"
+                            },
+                            {
+                                name: "盘点",
+                                img: `${this.$constant.imgUrl}/ghs/home/pandian.png`,
+                                url: "/admin/staff/list"
+                            },
+                            {
+                                name: "员工管理",
+                                img: `${this.$constant.imgUrl}/ghs/home/yggl.png`,
+                                url: "/admin/staff/list"
+                            },
+                        ]
+                    },
+                    {
+                        title:'赚钱分红',
+                        list:[{
+                            name: "邀请开店",
+                            img: `${this.$constant.imgUrl}/ghs/home/yqyl.png`,
+                            url: "/pagesShare/interest/my-invite"
+                        }]
+                    },
+                    {
+                        title:'数据统计',
+                        list:[
+                            {
+                            name: "经营概况",
+                            img: `${this.$constant.imgUrl}/ghs/home/jyzk.png`,
+                            url: "/admin/interest/my-invite"
+                        },
+                        {
+                            name: "开单业绩",
+                            img: `${this.$constant.imgUrl}/ghs/home/kdyj.png`,
+                            url: "/admin/interest/my-invite"
+                        }
+                        ]
+                    },{
+                        title:'资金管理',
+                        list:[
+                             {
+                            name: "客户欠款",
+                            img: `${this.$constant.imgUrl}/ghs/home/khqk.png`,
+                            url: "/admin/interest/my-invite"
+                            }
+                        ]
+                    }
+                ]
+            }
+        }
     }
 </script>
 
 <style lang="scss" scoped>
-
+    .apply-content_box {
+        padding-top: 1upx;
+        padding-bottom: 60upx;
+        & .apply-list_box {
+            margin-top: 20px;
+            padding:40upx 30upx;
+            background-color: #FFFFFF;
+            & > .tit {
+                color: #333333;
+                font-size: 32upx;
+                font-weight: 600;
+            }
+        }
+.tabs-wrap {
+  padding: 40px 0px;
+  @include disFlex(center, flex-start);
+  flex-wrap: wrap;
+  .tabs-list {
+    width: 25%;
+    margin-top: 50px;
+    text-align: center;
+    .tabs-img {
+      width: 100px;
+      height: 100px;
+      margin: 0 auto;
+      img {
+        height: 100%;
+      }
+    }
+    .tabs-name {
+      color: $fontColor2;
+      margin-top: 10px;
+    }
+    &:nth-child(-n + 4) {
+      margin-top: 0;
+    }
+  }
+}
+    }
 </style>

+ 237 - 4
ghs/src/admin/home/me.vue

@@ -1,15 +1,248 @@
 <template>
-    <div>
-
-    </div>
+    <view class="me-content_box app-content">
+        <image :src="`${constant.imgUrl}/ghs/me/bg.png`" class="me-content_bg"></image>
+        <template v-if="!$util.isEmpty(infoData)">
+            <view class="me-user_box">
+                <view class="user-info_item">
+                    <view>
+                        <view class="name">
+                            {{infoData.adminName}}
+                        </view>
+                        <view class="mobile">
+                            {{infoData.adminMobile}}
+                        </view>
+                    </view>
+                    <!-- <i class="iconfont iconxiangyou"></i> -->
+                </view>
+            </view>
+            <view class="me-shop_box">
+                <view class="me-shop_content content_box">
+                    <view class="me-shop_top">
+                        <view class="shop-top_left">
+                        <app-avatar-module src="https://imgm.gmw.cn/attachement/jpg/site215/20210129/3570070943574738873.jpg" :width="100"/> 
+                        <view class="top-info_box">
+                                <view >
+                                    {{infoData.sjName}}
+                                </view>
+                                <view>
+                                    {{infoData.shopName}}
+                                </view>
+                        </view>
+                        </view>
+                        <view class="chang-shop_btn">
+                            <i class="iconfont iconqiehuan1"></i>
+                            切换店铺
+                        </view>
+                    </view>
+                    <view class="image-box">
+                        <view class="dec">
+                            店铺服务期至: {{infoData.deadline}}
+                        </view>
+                        <image :src="`${constant.imgUrl}/ghs/me/upgrade.png`"></image>
+                    </view>
+                
+                </view>
+                <view class="account-info_box content_box">
+                    <view class="info-lf_box">
+                        <view>
+                            账户余额(元)
+                        </view>
+                        <view>
+                        <text>¥ </text> {{infoData.balance}}
+                        </view>
+                        <view>
+                            累计收益 ¥ {{infoData.totalIncome}}
+                        </view>
+                    </view>
+                    <button class="admin-button-com default" >提现</button>
+                </view>
+                <view class="module-com content_box user-open_bx">
+                    <view class="input-line-wrap">
+                        <tui-list-cell @click="pageTo({url:'/pagesStore/me/withdraw'})" class="line-cell" :hover="false" :arrow="true">
+                            <div class="tui-title">提现记录</div>
+                        <!-- <input v-model="form.name" placeholder-class="phcolor" class="tui-input" name="name" placeholder="请输入" maxlength="50" type="text" /> -->
+                        </tui-list-cell>
+                        <tui-list-cell @click="pageTo({url:'/pagesStore/me/incomeExpenses'})" class="line-cell" :hover="false" :arrow="true">
+                            <div class="tui-title">收支明细</div>
+                        <!-- <input v-model="form.name" placeholder-class="phcolor" class="tui-input" name="name" placeholder="请输入" maxlength="50" type="text" /> -->
+                        </tui-list-cell>
+                    </view>
+                </view>
+            </view>
+        </template>  
+    </view>
 </template>
 
 <script>
+    import AppAvatarModule from '@/components/module/app-avatar'
+    import TuiListCell from '@/components/plugin/list-cell'
+    import { mainMy } from '@/api/home'
     export default { // 我的
-        name:"Me"
+        name:"Me",
+        components:{
+            AppAvatarModule,
+            TuiListCell
+        },
+        data(){
+            return {
+                constant: this.$constant,
+                infoData: {}
+            }
+        },
+        methods:{
+           async init(){
+                try {
+                    const { data } = await mainMy()
+                    this.infoData = data
+                } finally {
+
+                }
+            }
+        }
     }
 </script>
 
 <style lang="scss" scoped>
+    .me-content_box {
+        position: relative;
+        .content_box {
+            background-color: #FFFFFF;
+            box-shadow: 0px 1px 0px 0px #EEEEEE;
+            border-radius: 10px; 
+        }
+        & .me-content_bg {
+            position: absolute;
+            top: 0;
+            width: 102%;
+            height: 410upx;
+        }
+        & .me-user_box {
+            position: relative;
+            padding: 150upx 30upx 0;
+            z-index: 10;
+            & > .user-info_item {
+                display: flex;
+                align-items: center;
+                 & > view:nth-child(1) {
+                     flex: 1;
+                     & > view {
+                        color: #FFFFFF;
+                        font-weight: 600;
+                        &.name {
+                           font-size: 36upx;
+                           margin-bottom: 20px;
+                        }
+                        &.mobile {
+                            font-size: 26upx;
+                        }
+                     }
+                }
+                & .iconxiangyou {
+                    font-size: 20upx;
+                    color: #FFFFFF;
+                }
+            }
+           
+        }
+        & .me-shop_box {
+            padding:50upx 20px 0;
+            & .me-shop_content {
+                position: relative;
+                z-index: 10;
+                & .me-shop_top {
+                    position: relative;
+                    & .shop-top_left {
+                       display: flex;
+                       padding: 40upx 30upx;
+                       align-items: center;
+                       & .top-info_box {
+                           padding-left: 30upx;
+                           & > view:nth-child(1){
+                               color: #333333;
+                               font-size: 32upx;
+                               font-weight: 600;
 
+                           }
+                           & > view:nth-child(2){
+                               color: #666666;
+                               font-size: 26upx;
+                               font-weight: 400;
+                               margin-top: 22upx;
+                           }
+                       }
+                    }
+                    & .chang-shop_btn {
+                        // padding: 20upx 13upx;
+                        width: 176upx;
+                        height: 50upx;
+                        border: 1px solid #DDDDDD;
+                        border-radius: 25px;
+                        color: #666666;
+                        position: absolute;
+                        right: 20upx;
+                        top: 40upx;
+                        text-align: center;
+                        line-height: 50upx;
+                        & .iconqiehuan1 {
+                            margin-right: 10upx;
+                        }
+                    }
+                }
+                & > .image-box {
+                    width: 100%;
+                    height: 70upx;
+                    position: relative;
+                    & > .dec {
+                        color: #FFFFFF;
+                        font-size: 24upx;
+                        font-weight: 500;
+                        position: absolute;
+                        top: 50%;
+                        left: 20upx;
+                        transform: translate(0,-50%);
+                    }
+                    & > image {
+                        width: 100%;
+                        height: 100%;
+                    }
+                }
+            }
+        }
+        & .account-info_box {
+            margin-top: 20upx;
+            padding: 30upx 20upx;
+            display: flex;
+            & .info-lf_box {
+                flex: 1;
+                & > view:nth-child(1),& > view:nth-child(3) {
+                    font-weight: 400;
+                    font-size: 24upx;
+                }
+                 & > view:nth-child(1) {
+                     color: #999999;
+                 }
+                 & > view:nth-child(2) {
+                     color: #333333;
+                     font-size: 60upx;
+                     font-weight: bold;
+                     margin: 30upx 0;
+                     & > text {
+                         font-size: 24px;
+                     }
+                 }
+                 & > view:nth-child(3) {
+                     color: #666666;
+                 }
+            }
+            & > .admin-button-com {
+                width: 120upx;
+                height: 50upx;
+                border-radius: 25upx;
+            }
+        }
+        & .user-open_bx {
+            margin-top: 20px;
+            border-radius: 10px;
+        }
+    }
 </style>

+ 32 - 41
ghs/src/admin/home/order.vue

@@ -75,7 +75,7 @@
                 :key="s.type"
               >
                 <button
-                  @click="openBt(s)"
+                  @click.stop="openBt(s,item)"
                   v-if="s.disable == 1"
                   class="admin-button-com bule" >
                   {{s.type==='item'?'花材':s.type==='selfGet'?'自取':'发货'}}
@@ -99,31 +99,6 @@
       :size="32"
       padding="30rpx 30rpx"
     ></modal-module>
-
-		<!-- 选取分类 -->
-		<!-- <modal-module :show="classifyModal" :maskClosable="false" @cancel="modalCancel" @click="confirmClassify" title="订单分类" padding="30rpx 30rpx">
-			<template v-slot:content>
-				<div class="upload-confirm-wrap">
-					<div class="sel-wrap">
-						<div class="sel-tit">类型</div>
-						<div class="sel-btn">
-							<block v-for="(item, index) in categoryData" :key="index">
-								<button class="admin-button-com" :class="[classifyForm.categoryId == item.id ? '' : 'default']" @click="selCategoryFn(item)">{{ item.categoryName || '暂无' }}</button>
-							</block>
-						</div>
-					</div>
-					<div class="sel-wrap">
-						<div class="sel-tit">用途</div>
-						<div class="sel-btn">
-							<block v-for="(item, index) in usageData" :key="index">
-								<button class="admin-button-com" :class="[classifyForm.usageId == item.id ? '' : 'default']" @click="selUsageFn(item)">{{ item.usageName || '暂无' }}</button>
-							</block>
-						</div>
-					</div>
-				</div>
-			</template>
-		</modal-module> -->
-
   </div>
 </template>
 
@@ -218,11 +193,11 @@ export default {
 	},
   onLoad: function() {},
   onShow() {
-    let tabIndex = uni.getStorageSync("switchTabQuery") || null;
-    if (tabIndex) {
-      uni.removeStorageSync("switchTabQuery");
-      this.tabIndex = parseInt(tabIndex.tabIndex);
-    }
+    // let tabIndex = uni.getStorageSync("switchTabQuery") || null;
+    // if (tabIndex) {
+    //   uni.removeStorageSync("switchTabQuery");
+    //   this.tabIndex = parseInt(tabIndex.tabIndex);
+    // }
   },
   methods: {
     statusFormat(status){
@@ -248,9 +223,24 @@ export default {
           default:
               return ''
       } 
-    },
-    openBt(val){
+    }, // 操作按钮
+    openBt(s,item){
+      // 花材
+      if(s.item === 'item') {
 
+        // 自取
+      }else if(s.item === 'selfGet') {
+        this.freeShipModal = true;
+        this.operateData = item;
+        //发货 
+      }else if(s.item === 'send') {
+        this.pageTo({
+           url: '/pagesOrder/ship',
+            query: {
+              id: item.id
+            }
+        })
+      }
     },
     selectSussess(val){
       console.log(val)
@@ -287,19 +277,20 @@ export default {
       }
     },
     // 免发货
-    freeShippingFn(item, index) {
-      this.operateIndex = index;
-      this.operateData = item;
-      this.freeShipModal = true;
-    },
+    // freeShippingFn(item, index) {
+    //   // this.operateIndex = index;
+    //   this.operateData = item;
+    //   this.freeShipModal = true;
+    // },
     // 免发货
     freeShipModalClick(e) {
       if (e.index === 0) {
         this.modalCancel();
       } else {
-        this.$set(this.list.data[this.operateIndex], "status", 5);
-        this.$set(this.list.data[this.operateIndex], "sendType", 1);
-        freeShipping({ id: this.list.data[this.operateIndex].id }).then(res => {
+        // this.$set(this.list.data[this.operateIndex], "status", 5);
+        // this.$set(this.list.data[this.operateIndex], "sendType", 1);
+        freeShipping({ id: this.operateData.id }).then(res => {
+          this.init();
           this.$msg("操作成功!");
           this.modalCancel();
         });

+ 1 - 1
ghs/src/admin/shop/list.vue

@@ -42,7 +42,7 @@
 		<!-- 按钮 -->
 		<div class="app-footer">
 			<!-- <div class="admin-button-com middle blue" @click="pageTo('/admin/shop/add')">添加门店</div> -->
-			<div class="admin-button-com middle blue">添加门店</div>
+			<div @click="pageTo('/admin/shop/add')" class="admin-button-com middle blue">添加门店</div>
 		</div>
 		<!-- 删除弹窗 -->
 		<modal-module :show="delModal" @cancel="modalCancel" @click="delModalClick" content="是否要删除该门店" color="#333" :size="32" padding="30rpx 30rpx"></modal-module>

+ 4 - 0
ghs/src/api/home/index.js

@@ -6,3 +6,7 @@ import https from '@/plugins/luch-request_0.0.7/request'
 export const getMainIndex = data => {
 	return https.get('/main/index', data)
 }
+// 我的
+export const mainMy = async (data) => {
+	return https.get("/main/my", data);
+};

+ 1 - 1
ghs/src/api/official/index.js

@@ -32,7 +32,7 @@ export const merchantDet = data => {
  * 申请试用 w
  */
 export const applyRegister = data => {
-	return https.get('/apply/register', data)
+	return https.post('/apply/register', data)
 }
 
 // 获取验证码 w

+ 9 - 0
ghs/src/api/order/index.js

@@ -119,3 +119,12 @@ export const orderClass = data => {
 export const orderUpdatePrice = data => {
 	return https.get('/order/update-price', data)
 }
+// =====================  new ========================
+// 计算运费
+export const freight = data => https.get('/order/freight', data)
+// 发快递
+export const thirdSend = data => https.get('/order/third-send', data)
+//  本店送
+export const selfSend = data => https.get('/order/self-send', data)
+
+export const reachOrder = data => https.get('/order/reach', data)

+ 3 - 3
ghs/src/api/proxy/index.js

@@ -10,6 +10,6 @@ export const assetDet = data => {
 /** *
  * 我的代理列表 b
  */
-export const applyList = data => {
-	return https.get('/apply/list', data)
-}
+// export const applyList = data => {
+// 	return https.get('/apply/list', data)
+// }

+ 8 - 0
ghs/src/api/store/index.js

@@ -0,0 +1,8 @@
+import https from '@/plugins/luch-request_0.0.7/request'
+
+export const applyList = data => {
+	return https.get('/apply/list', data)
+}
+// export const mainMy = async (data) => {
+// 	return https.get("/main/my", data);
+// };

+ 14 - 1
ghs/src/components/app-bind-info.vue

@@ -1,7 +1,7 @@
 <template>
     <view>
         <tui-list-cell class="line-cell" :hover="false">
-            <div class="tui-title required" style="width:120rpx;">微信昵称</div>
+            <div class="tui-title required" style="width:120rpx;">{{nameTetx}}</div>
             <view 
                 v-if="!$util.isEmpty(form.nickName)"
                 style="width:400rpx;">{{form.nickName}}
@@ -44,6 +44,12 @@
     import { getWxInfo, getWxPhone } from "@/api/mini";
     export default {
         name:'AppBindInfo',
+        props:{
+            nameTetx:{
+                type:String,
+                default:'微信昵称'
+            }
+        },
         components:{
             TuiListCell
         },
@@ -65,6 +71,7 @@
                         subRes => {
                         this.form.adminId = subRes.data.id;
                         this.form.nickName = subRes.data.nickName;
+                        this.$emit('bindInfo',this.form)
                         uni.showToast({
                             icon: "success"
                         });
@@ -84,6 +91,7 @@
                 encryptedData: e.detail.encryptedData
                 }).then(res => {
                 this.form.mobile = res.data.mobile;
+                this.$emit('bindInfo',this.form)
                 uni.showToast({
                     icon: "success"
                 });
@@ -102,4 +110,9 @@
         font-size: 28px;
         font-weight: 400;
     }
+    .tui-title {
+        color: #666666;
+        font-size: 28upx;
+        font-weight: 400;
+    } 
 </style>

+ 37 - 9
ghs/src/components/plugin/tabs.vue

@@ -17,13 +17,14 @@
 			class="item-wrap"
 			:style="{ width: isAdd ? `calc(100% - ${addTabWidth + 30}rpx)` : '100%' }"
 		>
+			<!-- { 'border-left': borderLeft }, -->
 			<view
 				v-for="(item, index) in tabs"
 				:key="index"
+					
 				:class="[
 					'tui-tabs-item',
-					{ active: currentTab == index },
-					{ 'border-left': borderLeft }
+					{ active: currentTab == index },	
 				]"
 				:style="{ width: itemWidth }"
 				@tap.stop="swichTabs(item, index)"
@@ -32,7 +33,8 @@
 					class="tui-tabs-title"
 					:class="{
 						'tui-tabs-active': currentTab == index,
-						'tui-tabs-disabled': item.disabled
+						'tui-tabs-disabled': item.disabled,
+						'border-left': borderLeft && !(index == tabs.length -1)
 					}"
 					:style="{
 						fontSize: size + 'rpx',
@@ -271,14 +273,26 @@ export default {
 	z-index: 9;
 	.tui-tabs-item {
 		&.border-left {
-			border-left: 2px solid #ddd;
-		}
-	}
-	.tui-tabs-item:first-child {
-		&.border-left {
-			border-left: none;
+			position: relative;
+			&::after {
+				// content: '';
+				// width: 2upx;
+				// height: 65%;
+				// position: absolute;
+				// left: 0upx;
+				// top: 50%;
+				// transform: translate(0,-50%);
+			// 	background-color: #ddd;
+			}
 		}
 	}
+	// .tui-tabs-item:first-child {
+	// 	&.border-left {
+	// 		&::after {
+	// 			content: '';
+	// 		}
+	// 	}
+	// }
 }
 .tui-tabs-view-shadow {
 	box-shadow: 4px 4px 10px #eee;
@@ -354,6 +368,20 @@ export default {
 	position: relative;
 	z-index: 2;
 	width: 100%;
+	&.border-left {
+		&::after {
+		content: '';
+		width: 2upx;
+		height: 40upx;
+		position: absolute;
+		right: 0upx;
+		top: 50%;
+		transform: translate(0,-50%);
+		background-color: #ddd;
+		}
+	}
+	&.border-left {
+	}
 }
 .tabs-title {
 	text-align: center;

+ 4 - 1
ghs/src/mixins/globalMixins.js

@@ -50,7 +50,10 @@ export default {
 						} else if(res.data.admin.identity == '1'){
 							this.$util.pageTo({
 								url: "/pagesClient/official/latest-shop",
-								type: 2
+								type: 2,
+								query:{
+									...this.option	
+								}
 							});
 						//未知身份
 						}else{

+ 32 - 25
ghs/src/pages.json

@@ -37,8 +37,9 @@
 		{
 			"path": "admin/home/me",
 			"style": {
-				"navigationBarTitleText": "应用",
-				"enablePullDownRefresh": true
+				"navigationBarTitleText": "我的",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom"
 			}
 		},
 		{
@@ -71,6 +72,12 @@
 						"navigationBarTitleText": "客户详情"
 					}
 				},
+				{
+					"path": "member/bind",
+					"style": {
+						"navigationBarTitleText": "绑定微信"
+					}
+				},
 				{
 					"path": "official/index",
 					"style": {
@@ -124,6 +131,12 @@
 					"style": {
 						"navigationBarTitleText": "付款"
 					}
+				},
+				{
+					"path": "interest/my-invite",
+					"style": {
+						"navigationBarTitleText": "我的邀请"
+					}
 				}
 			]
 		},
@@ -144,6 +157,23 @@
 				}
 			]
 		},
+		{
+			"root": "pagesStore",
+			"pages": [
+				{
+					"path": "me/withdraw",
+					"style": {
+						"navigationBarTitleText": "提现记录"
+					}	
+				},
+				{
+					"path": "me/incomeExpenses",
+					"style": {
+						"navigationBarTitleText": "收支记录"
+					}	
+				}
+			]
+		},
 		{
 			"root": "admin/order",
 			"pages": [
@@ -173,29 +203,6 @@
 				}
 			]
 		},
-		{
-			"root": "admin/interest",
-			"pages": [
-				{
-					"path": "invite",
-					"style": {
-						"navigationBarTitleText": "邀请列表"
-					}
-				},
-				{
-					"path": "my-invite",
-					"style": {
-						"navigationBarTitleText": "我的邀请"
-					}
-				},
-				{
-					"path": "setting",
-					"style": {
-						"navigationBarTitleText": "邀请奖励设置"
-					}
-				}
-			]
-		},
 		{
 			"root": "admin/coupon",
 			"pages": [

+ 63 - 0
ghs/src/pagesClient/member/bind.vue

@@ -0,0 +1,63 @@
+<template>
+    <view class="app-content">
+        <view  class="bind-des_box">
+            <view>
+                花极客
+            </view>
+            <view>
+                您好,我在整理客户信息,帮忙填下以下内容
+            </view>
+        </view>
+        
+        <AppBindInfo
+            @bindInfo="bindInfo"
+            nameTetx="店长姓名"></AppBindInfo>
+        <view class="btn-wrap">
+             <button class="admin-button-com blue big">确认</button>
+        </view>
+    </view>
+</template>
+
+<script>
+    import AppBindInfo from "@/components/app-bind-info";
+    export default {
+        name:'MenberBind',
+        components:{
+            AppBindInfo
+        },
+        methods:{
+            // 绑定信息
+            bindInfo(val){
+                console.log(val)
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .app-content {
+        padding-top: 20upx;
+        & .btn-wrap {
+            padding: 60upx 30upx;
+            & .admin-button-com {
+                width: 100%;
+            }
+        }
+    }
+    .bind-des_box {
+        margin-bottom: 20upx;
+        padding: 30upx;
+        background-color: #FFFFFF;
+        & > view:nth-child(1) {
+            color: #333333;
+            font-size: 28upx;
+            font-weight: 600;
+            margin-bottom: 19upx;
+        }
+        & > view:nth-child(2) {
+            color: #666666;
+            font-size: 28upx;
+            font-weight: 400;
+        }
+    }
+</style>

+ 3 - 3
ghs/src/pagesClient/member/detail.vue

@@ -8,10 +8,10 @@
                 <AppAvatarModule class="avatar" :src="userInfo.avatar" :width="100"></AppAvatarModule>
                 <view class="dec-bx">
                   <view>
-                      {{userInfo.shopName}}
+                      {{userInfo.name}}
                   </view>
                   <view>
-                      No.{{userInfo.retailShopId}}
+                      No.{{userInfo.sn}}
                   </view>
                 </view>
             </view>
@@ -58,7 +58,7 @@
             <view>
               <view
                 @click="pageTo({
-                  url:'/admin/shopAdmin/bind'
+                  url:'/pagesClient/member/bind'
                 })" 
                 class="invite-bt white">
                 关联微信

+ 89 - 129
ghs/src/pagesClient/official/apply.vue

@@ -40,7 +40,7 @@
         <tui-list-cell class="line-cell" :hover="false">
           <div class="tui-title">店长姓名</div>
           <input
-            v-model="form.name"
+            v-model="form.adminName"
             placeholder-class="phcolor"
             placeholder-style="color:#CCCCCC"
             class="tui-input"
@@ -48,61 +48,66 @@
             placeholder="请输入店长姓名"
           />
         </tui-list-cell>
-        <tui-list-cell class="line-cell code-wrap" :hover="false">
-          <div class="tui-title">我的昵称</div>
-          <div class="tui-code" style="width:260rpx;">{{nickName}}</div>
-          <button
-            class="admin-button-com blue mini-btn"
-            open-type="getUserInfo"
-            @getuserinfo="getWxAvatar"
-          >帮我填</button>
-        </tui-list-cell>
-        <tui-list-cell class="line-cell code-wrap" :hover="false">
-          <div class="tui-title">我的手机号</div>
-          <div class="tui-code" style="width:260rpx;">{{form.mobile}}</div>
-          <button
-            class="admin-button-com blue mini-btn"
-            open-type="getPhoneNumber"
-            @getphonenumber="getWxMobile"
-          >帮我填</button>
-        </tui-list-cell>
+        <AppBindInfo
+            @bindInfo="bindInfo"
+            nameTetx="我的昵称">
+        </AppBindInfo>
       </div>
       <!-- 手机号 -->
       <div class="module-com">
-          <tui-list-cell class="line-cell code-wrap" :hover="false">
-            <div class="tui-title">主营业务</div>
+          <!-- <tui-list-cell 
+            class="line-cell code-wrap" :hover="false">
+            <div class="tui-title">商家类型</div>
             <div>
               <button class="admin-button-com blue mini-btn">
                 零售
               </button>
               <button style="margin-left:10px;" class="admin-button-com default mini-btn">
+                供货商
+              </button>
+            </div>
+          </tui-list-cell> -->
+          <tui-list-cell 
+            v-if="option.style == 1"
+            class="line-cell code-wrap" :hover="false">
+            <div class="tui-title">主营业务</div>
+            <div>
+              <button 
+                @click="changeMain(1)"
+                :class="['admin-button-com','mini-btn',form.main==1?'blue':'default']">
+                零售
+              </button>
+              <button
+                @click="changeMain(2)" 
+                style="margin-left:10px;" :class="['admin-button-com','mini-btn',form.main==2?'blue':'default']">
                 培训
               </button>
             </div>
           </tui-list-cell>
           <tui-list-cell class="line-cell" :hover="false">
               <div class="tui-title">营业执照编号</div>
-              <app-uploader ref="appUploader" :imgList.sync="form.shopImg" :isMain="true" :num="4" />
-              <!-- <input
-                v-model="form.name"
+              <input
+                v-model="form.licenseNo"
                 placeholder-class="phcolor"
                 placeholder-style="color:#CCCCCC"
                 class="tui-input"
                 name="name"
                 placeholder="请输入营业执照编号"
-              /> -->
+              />
          </tui-list-cell>
-         <tui-list-cell class="line-cell" :hover="false">
-              <div class="tui-title">营业执照图片</div>
-              <input
+          <tui-list-cell class="line-cell" :hover="false">
+              <div class="tui-title">营业执照片</div>
+              <app-uploader @resultData="resultData" ref="appUploader" :num="1" />
+              <!-- <input
                 v-model="form.name"
                 placeholder-class="phcolor"
                 placeholder-style="color:#CCCCCC"
                 class="tui-input"
                 name="name"
                 placeholder="请输入营业执照编号"
-              />
+              /> -->
          </tui-list-cell>
+         
       </div>
       <!-- 推荐人 -->
       <div class="module-com recommend-wrap" v-if="!$util.isEmpty(merchantData)">
@@ -138,6 +143,7 @@ import SimpleAddress from "@/components/plugin/simple-address";
 import AppAvatarModule from "@/components/module/app-avatar";
 import { getWxInfo, getWxPhone } from "@/api/mini";
 import AppUploader from "@/components/app-uploader";
+import AppBindInfo from "@/components/app-bind-info";
 const form = require("@/utils/formValidation.js");
 // api
 import {
@@ -154,7 +160,8 @@ export default {
     AppAreaSel,
     SimpleAddress,
     AppAvatarModule,
-    AppUploader
+    AppUploader,
+    AppBindInfo
   },
   data() {
     return {
@@ -166,10 +173,15 @@ export default {
         city: "",
         dist: "",
         address: "",
-        floor: "",
+        adminName:'',
+        nickName:'',
+        main: 1,
+        licenseNo: "",
+         license: "",
+        // floor: "",
         longitude: "",
         latitude: "",
-        adminId: ""
+        
       },
       showRegion: false,
       // 省市联动
@@ -183,6 +195,7 @@ export default {
     };
   },
   onLoad() {
+    // form 来源  introMerchantId 推荐ID  style  供货商 | 零售
     // if (!this.$util.isLogin()) {
     // 	// getShopUser()
     // 	return false
@@ -190,14 +203,23 @@ export default {
     // this.init()
   },
   methods: {
+    //图片地址
+    resultData(val){
+      this.form.license = val.smallUrl
+    },
+    changeMain(val){
+      this.form.main = val
+    },
+    bindInfo(val){
+      this.form.nickName = val.nickName;
+      this.form.mobile = val.mobile
+    },
     init() {
       this.$util.getCheckLogin().then(res => {
         if (res) {
-          let id = uni.getStorageSync("introMerchantId");
-          if (id > 0) {
-            this._getMerchantDet();
-          }
-          // this._regionTree();
+            if(this.option.introMerchantId) {
+              this._getMerchantDet();
+            }
         }
       });
     },
@@ -207,21 +229,22 @@ export default {
     //   });
     // },
     _getMerchantDet() {
-      let id = uni.getStorageSync("introMerchantId");
-      getIntroduce({ id: id }).then(res => {
+      // let id = uni.getStorageSync("introMerchantId");
+      getIntroduce({ id: this.option.introMerchantId || 0 }).then(res => {
         this.merchantData = res.data;
       });
     },
     // ==============
     confirmFn() {
-      let id = uni.getStorageSync("introMerchantId");
+      // let id = uni.getStorageSync("introMerchantId");
       applyRegister({
-        introMerchantId: id || 0,
-        ...this.form
+        introSjId: this.option.introMerchantId || 0,
+        ...this.form,
+        style: this.option.style || 0,
+        from: this.option.from || 0
       }).then(res => {
-        uni.setStorageSync("officialApply", res.data);
         this.$util.pageTo({
-          url: "/pagesClient/official/callback",
+          url: "/pagesClient/official/result",
           type: 2,
           query: {
             pagestatus: 3
@@ -229,76 +252,6 @@ export default {
         });
       });
     },
-    // 验证码
-    getCode() {
-      if (!this.form.mobile || !this.$util.checkMobile(this.form.mobile)) {
-        this.$msg("请输入正确的手机号!");
-        return false;
-      }
-      this.isSend = 1;
-      sendSmsW({
-        type: 1,
-        mobile: this.form.mobile
-      })
-        .then(res => {
-          this.beginCountDown();
-          this.$msg("发送成功!");
-        })
-        .catch(() => {
-          this.isSend = 0;
-          this.$msg("发送失败!");
-        });
-    },
-    // 获取微信手机号
-    getWxMobile(e) {
-      console.log(e);
-      if (e.detail.errMsg === "getPhoneNumber:ok") {
-        getWxPhone({
-          iv: e.detail.iv,
-          encryptedData: e.detail.encryptedData
-        }).then(res => {
-          this.form.mobile = res.data.mobile;
-          uni.showToast({
-            icon: "success"
-          });
-        });
-      } else {
-        this.$msg("获取信息失败!");
-      }
-    },
-    // 获取微信信息
-    getWxAvatar() {
-      uni.getUserInfo({
-        provider: "weixin",
-        success: res => {
-          console.log("res", res);
-          getWxInfo({ iv: res.iv, encryptedData: res.encryptedData }).then(
-            subRes => {
-              this.form.adminId = subRes.data.id;
-              this.nickName = subRes.data.nickName;
-              uni.showToast({
-                icon: "success"
-              });
-            }
-          );
-        },
-        fail: () => {
-          // this.loading = false
-        }
-      });
-    },
-    // 倒计时
-    beginCountDown() {
-      this.countDown = 119;
-      this.timer = setInterval(() => {
-        if (this.countDown === 0) {
-          clearInterval(this.timer);
-          this.isSend = 0;
-          return;
-        }
-        this.countDown -= 1;
-      }, 1000);
-    },
     // 选择地址
     selRegionFn() {
       if (!this.form.city) {
@@ -324,6 +277,7 @@ export default {
       this.form.address = e.address;
       this.form.latitude = e.location.lat;
       this.form.longitude = e.location.lng;
+      this.form.dist = e.district
     },
     // -----
     // 省市联动
@@ -341,7 +295,7 @@ export default {
       // 表单规则
       let rules = [
         {
-          name: "adminId",
+          name: "name",
           rule: ["required"],
           msg: ["请填写昵称"]
         }
@@ -349,22 +303,28 @@ export default {
       // 进行表单检查
       let formData = this.form;
       let checkRes = form.validation(formData, rules);
-      this.$util.pageTo({
-          url: "/pagesClient/official/callback",
-          type: 2,
-          query: {
-            pagestatus: 1
-          }
-        });
+      // this.$util.pageTo({
+      //     url: "/pagesClient/official/callback",
+      //     type: 2,
+      //     query: {
+      //       pagestatus: 1
+      //     }
+      //   });
       // 验证通过!
-      // if (!checkRes) {
-      //   setTimeout(() => {
-        //   this.confirmFn();
-        // });
-      // } else {
-      //   this.$msg(checkRes);
-      // }
+      if (!checkRes) {
+        setTimeout(() => {
+          this.confirmFn();
+        });
+      } else {
+        this.$msg(checkRes);
+      }
     }
+  },
+  watch:{
+    // imageList(val){
+    //   this.form.
+    //   console.log(val)
+    // }
   }
 };
 </script>

+ 5 - 5
ghs/src/pagesClient/official/index.vue

@@ -152,11 +152,11 @@ export default {
         uni.removeStorageSync("renewOption");
       }
       //花店分享的页面有邀人,打开页面保存邀请人
-      let introMerchantId = 0;
-      if (typeof this.option.introMerchantId != "undefined") {
-        introMerchantId = this.option.introMerchantId;
-      }
-      uni.setStorageSync("introMerchantId", introMerchantId);
+      // let introMerchantId = 0;
+      // if (typeof this.option.introMerchantId != "undefined") {
+      //   introMerchantId = this.option.introMerchantId;
+      // }
+      // uni.setStorageSync("introMerchantId", introMerchantId);
     },
     _getDet() {
       applyStatus().then(res => {

+ 59 - 7
ghs/src/pagesClient/official/latest-shop.vue

@@ -1,17 +1,33 @@
 <template>
-  <div class="app-content">
-      最近问店铺
-  </div>
+  <view class="latest-content_box">
+      <view class="shop-title_box">
+          您访问过的供货商
+      </view>
+      <view class="shop-list_box">
+          <view>
+            <app-avatar-module src="https://goss.cfp.cn/creative/vcg/800/new/VCG41N1210205351.jpg" :width="120" />
+            <view class="tit">
+              宣言花行
+            </view>
+          </view>
+      </view>
+      <view class="app-footer">
+          <view class="des">
+              我是供货商,点此 <text>申请开店</text><i class="iconfont iconxiangyou"></i>
+          </view>
+      </view>
+  </view>
 </template>
 
 <script>
-import AppSwiper from "@/components/app-swiper";
-import AppImg from "@/components/app-img";
-import { applyStatus } from "@/api/official";
+// import AppSwiper from "@/components/app-swiper";
+// import AppImg from "@/components/app-img";
+// import { applyStatus } from "@/api/official";
 import { share } from "@/mixins";
+import AppAvatarModule from "@/components/module/app-avatar";
 export default {
   name: "shop-list",
-  components: {},
+  components: {AppAvatarModule},
   mixins: [share],
   data() {
     return {
@@ -28,4 +44,40 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+  .shop-title_box {
+    color: #333333;
+    font-size: 36upx;
+    font-weight: 600;
+    padding: 48upx 0 80upx 40upx;
+  }
+  .shop-list_box {
+    padding:0 60upx;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    & > view {
+      width: 120upx;
+      margin-bottom: 70upx;
+      & .tit {
+        text-align: center;
+        margin-top: 30upx;
+      }
+    }
+  }
+  .app-footer {
+     font-size: 28upx;
+    & .des {
+      &  > text {
+        color: #3385FF;
+        display: inline-block;
+        margin-left: 3upx;
+      }
+      & .iconfont {
+        color: #3385FF;
+        font-size: 22upx;
+        margin-left: 2upx;
+      }
+    }
+  }
 </style>

+ 4 - 4
ghs/src/pagesClient/official/warn.vue

@@ -18,7 +18,7 @@
                     </view>
                     <view 
                         class="step-content_box">
-                        <tempelte v-if="index === 0">
+                        <template v-if="index === 0">
                             <view class="button-box">
                                 <button 
                                     @bindcontact="handleContact"
@@ -26,10 +26,10 @@
                                     open-type="contact">打开聊天框</button>
                             </view>
                             
-                        </tempelte>
-                        <tempelte v-else>
+                        </template>
+                        <template v-else>
                             <image class="step-img" :src="item.images" mode="widthFix"></image>
-                        </tempelte>
+                        </template>
                     </view>
                 </view>
             </view>

+ 258 - 0
ghs/src/pagesOrder/components/stepShip.vue

@@ -0,0 +1,258 @@
+<template>
+    <view class="step-content_box">
+        <view 
+            v-if="!$util.isEmpty(orderComData)"
+            class="step-view_box">
+            <view 
+                v-for="(item,index) in orderComData"
+                :key="index"
+                class="step-li_box">
+                <view class="step-head_box">
+                    <view 
+                        v-if="index == 0"
+                        class="step-icon_num">
+                       <view class="dot"></view>
+                   </view>
+                    <view 
+                         v-else
+                        class="step-icon-def">
+                        <view class="dot"></view>
+                    </view>
+                   <view v-if="stepList.length - 1  !== index " class="step-line"></view>
+                </view>
+                <view class="step-main_box">
+                    <view class="step-tit">
+                        {{item.actionName}}
+                    </view>
+                    <view class="step-content_box">
+                        <!-- 送达 -->
+                        <template v-if="item.actionSign === 'reach'">
+                            <view class="reach-content_box">
+                                <button 
+                                    @click="affirmSend(item)"
+                                    v-if="item.status == 0"
+                                    class="admin-button-com blue big">
+                                    确认送达
+                                </button>
+                                <view 
+                                v-else
+                                class="reach-time_box">
+                                    {{item.finishTime}}
+                                </view>
+                            </view>
+                        </template>
+                        <!-- 发货 -->
+                        <template v-else-if="item.actionSign === 'deliver'">
+                            <!-- 没有选择发货方式0 -->
+                            <view 
+                                v-if="item.option == 0&&item.status == 0"
+                                class="deliver-opiton_0">
+                                <button 
+                                    @click="selfSend"
+                                    class="admin-button-com blue big">
+                                    本店送
+                                </button>
+                                <button 
+                                    @click="sendParcel"
+                                    class="admin-button-com blue big">
+                                    发快递
+                                </button>  
+                            </view>
+                            <view 
+                                v-else-if="item.option == 2"
+                                class="deliver-opiton_1">
+                                <view class="shipments-status_box">
+                                    <view>
+                                        配送方: {{sendInfo.sendSide}}
+                                    </view>
+                                    <view>
+                                        距离: {{sendInfo.distance}}
+                                    </view>
+                                    <view>
+                                        消费: {{sendInfo.distance}}
+                                    </view>
+                                    <view>
+                                        小费: {{sendInfo.tip}}
+                                    </view>
+                                    <view
+                                        :class="[sendInfo.status=='待接单'?'colorRed':'colorBlue']"
+                                        >
+                                        状态: {{sendInfo.status}}
+                                    </view>
+                                </view>
+                            </view>
+                            <!-- template -->
+                        </template>
+                        <!-- 下单 -->
+                        <template v-if="item.actionSign === 'placeOrder'">
+                            <view class="placeOrder-cotent_box">
+                                {{item.addTime}}
+                            </view>
+                        </template>
+                    </view>
+                </view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script> 
+    export default {
+        name:'stepShip',
+        comments:{
+        },
+        props:{
+            orderComData:{
+                type:Array,
+                default:()=>[]
+            }
+        },
+        data(){
+            return {
+                
+            }
+        },
+        methods:{
+            // 发快递
+            sendParcel(){
+                this.$emit('sendParcel')
+            }, // 本店送
+            selfSend(){
+                this.$emit('selfSend',{
+                    type:0,
+                    text:'确认自己送货?'
+                })
+            }, //确认送达
+            affirmSend(){
+                //  "option": 【0没有选择 1本店送 2发快递】
+                this.$emit('affirmSend',{
+                    type:1,
+                    text: item.option == 1?'确认送到了吗?':'快递送到后会自动帮你确认,确认要自己操作吗?'
+                })
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .step-content_box {
+        padding-bottom: 50upx;
+    }
+    .step-view_box {
+        margin-top: 20px;
+        padding:40px 25px 0px 20px;
+        background-color: #FFFFFF;
+        & .step-li_box {
+            display: flex;
+            & > .step-head_box {
+                position: relative;
+                & > .step-icon-def {
+                    width: 40px;
+                    height: 40px;
+                    background-color: transparent;
+                    position: relative;
+                    & .dot {
+                        width: 12upx;
+                        height: 12upx;
+                        background-color: #D8D8D8;
+                        border-radius: 50%;
+                        position: absolute;
+                        left: 50%;
+                        top: 50%;
+                        transform: translate(-50%,-50%);
+                    }
+                    
+                }
+                & > .step-icon_num {
+                    width: 40px;
+                    height: 40px;
+                    border-radius: 50%;
+                    background-color: #FDC3B8;
+                    // color: #FFFFFF;
+                    // font-size: 28px;
+                    position: relative;
+                    z-index: 50;
+                    & > .dot {
+                        width: 22upx;
+                        height: 22upx;
+                        border-radius: 50%;
+                        background-color: #F51608;
+                        position: absolute;
+                        left: 50%;
+                        top: 50%;
+                        transform: translate(-50%,-50%);
+                    }
+                }
+                & > .step-line {
+                    height: 100%;
+                    width: 0px;
+                    border-left: 1px solid #E2E4E8;;
+                    position: absolute;
+                    left: 50%;
+                    top: 50%;
+                    transform: translate(-50%, -50%);
+                    z-index: 45;
+                    
+                }
+            }
+            & > .step-main_box {
+                flex: 1;
+                padding-left: 20px;
+                & .step-tit {
+                    color: #141F25;
+                    font-size: 32px;
+                    font-weight: 600;
+                }
+                & .step-content_box {
+                    & .reach-content_box {
+                        padding:40upx 0 0upx;
+                        & > .admin-button-com {
+                            width: 100%;
+                        }
+                        & > .reach-time_box {
+                            color: #333333;
+                            font-size: 24;
+                            font-weight: 600;
+                        }
+                    }
+                    & .deliver-opiton_0 {
+                        padding: 60px 0 0px;
+                        & > .admin-button-com:nth-child(1){
+                            margin-right: 20px;
+                        }
+                        & > .admin-button-com {
+                            width: 310px;
+                            height: 90px;
+                            padding: 0;
+                            line-height: 90px;
+                            text-align: center;
+
+                        }
+                    }
+                    & .shipments-status_box {
+                        padding-top: 20px;
+                        & > view {
+                            color: #666666;
+                            font-size: 24px;
+                            font-weight: 400;
+                            line-height: 50px;
+                            &.colorRed {
+                                color: #F51608;
+                            }
+                            & .colorBlue{
+                                color: #049E2C;
+                            }
+                        }
+                    }
+                    & .placeOrder-cotent_box {
+                        color: #666666;
+                        font-size: 24upx;
+                        font-weight: 600;
+                        padding-top: 20upx;
+                    }
+
+                }
+            }
+        }
+    }
+</style>

+ 77 - 5
ghs/src/pagesOrder/detail.vue

@@ -56,6 +56,12 @@
                   <view>2020 11-22</view>
               </view> -->
            </view>
+           <view class="content-box shipping-address">
+               <view>
+                   配送进展:<text>骑手已接单,取货中</text>
+               </view>
+               <i class="iconfont iconqishouyinying"></i>
+           </view>
            <view class="title">
                商品信息
            </view>
@@ -128,21 +134,31 @@
               >
            <button
                 :key="s.type"
-                @click="openBt(s)"
+                @click="openBt(s,detailInfo)"
                 v-if="s.disable == 1"
                 class="admin-button-com default" >
                 {{s.type==='item'?'花材':s.type==='selfGet'?'自取':'发货'}}
             </button>
         </template>
        </div>
+       <!-- 免发货弹窗 -->
+        <modal-module
+        :show="freeShipModal"
+        @cancel="modalCancel"
+        @click="freeShipModalClick"
+        content="确认已自取?"
+        color="#333"
+        :size="32"
+        padding="30rpx 30rpx"
+        ></modal-module>
     </view>
 </template>
 
 <script>
     import stepStatus from './components/stepStatus'
     import TuiListCell from '@/components/plugin/list-cell'
-    import { getDetail } from '@/api/order/index'
-    import {orderBtn} from '@/mixins'
+    import { getDetail,freeShipping } from '@/api/order/index'
+    // import {orderBtn} from '@/mixins'
     // import { copyText } from '@/utils/common'
     export default {
         name:'orderDetail',
@@ -150,17 +166,50 @@
             stepStatus,
             TuiListCell
         },
-        mixins:[orderBtn],
+        // mixins:[orderBtn],
         data(){
             return {
                 stepActive: 0,
                 form: {
                     name:''
                 },
-                detailInfo:{}
+                detailInfo:{},
+                freeShipModal: false,
             }
         },
         methods:{
+            freeShipModalClick(e){
+                if (e.index === 0) {
+                    this.modalCancel();
+                } else {
+                    freeShipping({ id: this.detailInfo.id }).then(res => {
+                    this.init();
+                    this.$msg("操作成功!");
+                    this.modalCancel();
+                    });
+                }
+            },
+            modalCancel(){
+                this.freeShipModal = false
+            },
+            openBt(s,item) {
+                    // 花材
+                    if(s.item === 'item') {
+
+                        // 自取
+                    }else if(s.item === 'selfGet') {
+                        this.freeShipModal = true;
+                        // this.operateData = item;
+                        //发货 
+                    }else if(s.item === 'send') {
+                        this.pageTo({
+                        url: '/pagesOrder/ship',
+                            query: {
+                            id: item.id
+                            }
+                        })
+                    }
+            },
             copy(val){
                const self = this
                 uni.setClipboardData({
@@ -342,6 +391,29 @@
 				}
 			}
         }
+        .shipping-address {
+            display: flex;
+            align-items: center;
+            margin-top: 20px;
+            & > view:nth-child(1) {
+                color: #999999;
+                font-size: 28upx;
+                font-weight: 400;
+                display: inline-block;
+                padding: 30upx 0 30upx 20upx;
+                flex: 1;
+                & > text {
+                    color: #333333;
+                    font-weight: 600;
+                    
+                }
+            }
+            & > view:nth-child(2) {
+                font-size: 60px;
+                color: #D6E7FF;
+                margin-right: 10px;
+            }
+        }
         .price-detail {
             margin-top: 20px;
             margin-bottom: 20px;

+ 281 - 9
ghs/src/pagesOrder/ship.vue

@@ -4,7 +4,7 @@
 			<view class="order-info-list">
 				<view class="list-item">
 					<text>订单号</text>
-					<text>2929323</text>
+					<text>{{orderInfo.orderSn}}</text>
 				</view>
 				<view class="list-item">
 					<text>下单时间</text>
@@ -23,22 +23,174 @@
 				src="/static/images/default-img.png" mode="scaleToFill">
 			</image>
 		</view>
+		<view class="step-content_box">
+			<stepShip
+				@affirmSend="affirmSend"
+				@selfSend="selfSend"
+				@sendParcel="sendParcel"
+				:orderComData="orderComData">
+			</stepShip>
+		</view>
+		<!-- 快递送 -->
+        <modal-module
+			:show="shipModal"
+			:maskClosable="false"
+			@cancel="modalCancel"
+			@click="shipModalClick"
+			title="发快递"
+			padding="30rpx 30rpx"
+        >
+        <template v-slot:content>
+		  <view class="order-fa_box">
+			  <view class="order-fa_info">
+				  <view class="order-fa_top">
+					  <view>
+						  收
+					  </view>
+					  <view class="">
+						  {{orderInfo.receiveProvince + orderInfo.receiveCity}}
+					  </view>
+				  </view>
+				  <view>
+					  {{orderInfo.receiveAddress}}
+				  </view>
+				  <view>
+					  {{orderInfo.customName}}({{orderInfo.customMobile}})
+				  </view>
+			  </view>
+		  </view>
+          <view class="app-modal-input-wrap ship-modal">
+			<view class="inp-list-line">
+                <view class="line-label">配送方</view>
+                <view class="line-input">
+                <picker
+                    mode="selector"
+                    :range="deliveryList"
+                    @change="changeDeliveryFn"
+                    range-key="text"
+                    class="inp-select"
+                >
+                    <view v-if="form.sendSide">{{ sendSideText }}</view>
+                    <view class="tui-placeholder" v-else>请选择</view>
+                </picker>
+                </view>
+            </view>
+            <view class="inp-list-line">
+                <view class="line-label">送花时间</view>
+                <view class="line-input">
+					<picker
+						mode="multiSelector"
+						:range="timeList"
+						:value="timeValue"
+						@change="changeTimeFn"
+						class="inp-select"
+					>
+						<view v-if="form.sendTime">{{ form.sendTime }}</view>
+						<view class="tui-placeholder" v-else>默认10分钟后配送</view>
+					</picker>
+                </view>
+            </view>
+			<view class="inp-list-line">
+                <view class="line-label">运费</view>
+                <view class="line-input">
+					<view class="">
+						{{form.sendCost}}
+					</view>
+                </view>
+            </view>
+        	</view>
+        </template>
+        </modal-module>
+		<modal-module
+			:show="showSubmitModel"
+			@cancel="modalCancel"
+			@click="submitEvent"
+			:title="titText"
+			color="#333"
+			:size="32"
+			padding="30rpx 30rpx"
+		>
+		</modal-module>
 	</view>
 </template>
 
 <script>
-
-
-import { getDetB, orderSendDet } from '@/api/order'
+import stepShip from './components/stepShip'
+import { getDetB,
+ orderSendDet,
+ freight,
+ thirdSend,
+ selfSend,
+ reachOrder
+ } from '@/api/order'
+import ModalModule from "@/components/plugin/modal";
 export default {
 	name: 'admin-ship',
 	components: {
-
+		stepShip,
+		ModalModule
 	},
 	data() {
 		return {
+			showSubmitModel: false,
+			titText:'',
 			orderInfo: {},
-			orderComData: []
+			orderComData: [],
+			shipModal: false,
+                form:{
+                    sendTime:'',
+					sendSide: 2,
+					sendCost: 0
+                },
+                sendSideText:'达达配送',
+                deliveryList: [
+                    {
+                    text: "达达配送",
+                    key: 2
+					},
+					{
+                    text: "顺丰同城",
+                    key: 3
+					},
+					{
+                    text: "闪送",
+                    key: 4
+					},
+					{
+                    text: "美团",
+                    key: 5
+                    }
+				],
+				timeList: [
+					[
+					"1",
+					"2",
+					"3",
+					"4",
+					"5",
+					"6",
+					"7",
+					"8",
+					"9",
+					"10",
+					"11",
+					"12",
+					"13",
+					"14",
+					"15",
+					"16",
+					"17",
+					"18",
+					"19",
+					"20",
+					"21",
+					"22",
+					"23",
+					"24"
+					],
+					["00", "10", "20", "30", "40", "50"]
+			  ],
+			  currentTitType: {}
 		}
 	},
 	onLoad() {
@@ -53,14 +205,14 @@ export default {
 	},
 	methods: {
 		init() {
-			this.showIndex = this.option.pageStatus || 0
+			// this.showIndex = this.option.pageStatus || 0
 			this._getDet()
 			this._orderComDet()
-
+			this.freightCount()
 		},
 		_getDet() {
 			// this.option.id
-			return getDetB({ id: 78 }).then(res => {
+			return getDetB({ id: this.option.id }).then(res => {
 				this.orderInfo = res.data
 			})
 		},
@@ -69,6 +221,74 @@ export default {
 				this.orderComData = res.data
 			})
 		},
+		// 快递送
+		sendParcel(){
+			this.shipModal = true;
+		},
+		// 计算运费
+		freightCount(){
+			freight({
+				id: this.option.id,
+				sendSide: this.form.sendSide,
+			}).then(res=>{
+				this.form.sendCost = res.data.sndCost
+			})
+		},
+		//发货
+		shipModalClick(e){
+			if (e.index === 0){
+				this.modalCancel()
+			}else{
+				thirdSend({
+					id:this.option.id,
+					...this.form
+				}).then(res=>{
+					this.$msg('发货成功')
+					this.init()
+					this.modalCancel();
+				})
+			}
+			
+		},//关闭
+		modalCancel(){
+			this.shipModal = false;
+			this.showSubmitModel = false
+		}, // 自己送
+		selfSend(val){
+			this.currentTitType = val
+			this.titText = val.text;
+			this.showSubmitModel = true
+		}, // 确认
+		affirmSend(val){
+			this.currentTitType = val
+			this.titText = val.text;
+			this.showSubmitModel = true
+		}, // 确认送达 和 本店送
+		submitEvent(e){
+			if(e.index === 0) {
+				this.modalCancel()
+			}else{
+				let updateStatue = this.currentTitType.type == 0? selfSend:reachOrder
+				updateStatue({
+					id:this.option.id
+				}).then(res=>{
+					this.modalCancel()
+					this.$msg('发货状态已更新')
+					this.init()
+				})
+			}
+		},
+		changeTimeFn(e){
+			let oneIndex = e.detail.value[0] || 0;
+			let twoIndex = e.detail.value[1] || 0;
+			this.form.sendTime = this.timeList[0][oneIndex] + ":" + this.timeList[1][twoIndex];
+		},
+		changeDeliveryFn(e){
+			this.form.sendSide = this.deliveryList[e.detail.value].key;
+			this.sendSideText = this.deliveryList[e.detail.value].text;
+			// 平台不同运费重新计算
+			this.freightCount()
+		},
 	}
 }
 </script>
@@ -76,6 +296,11 @@ export default {
 <style lang="scss" scoped>
 	.app-content {
 		// background-color: #fff;
+		.ship-modal {
+		.line-label {
+			width: 140px;
+		}
+		}
 	}
 	.order-info_box {
 		display: flex;
@@ -102,4 +327,51 @@ export default {
 			height: 146px;
 		}
 	}
+	.order-fa_box {
+		padding:20upx;
+		border: 1upx solid #DDDDDD;
+		border-radius: 4upx;
+		margin-bottom: 20upx;
+		& > .order-fa_info {
+			padding-left: 20upx;
+			& > .order-fa_top {
+				display: flex;
+				align-items: center;
+				& > view:nth-child(1) {
+					width: 40upx;
+					height: 40upx;
+					line-height: 40upx;
+					text-align: center;
+					background-color: #3385FF;
+					color: #FFFFFF;
+					font-size: 24upx;
+					margin-right: 20upx;
+					border-radius: 50%;
+				}
+				& > view:nth-child(2) {
+					color: #333333;
+					font-size: 32upx;
+					font-weight: 600;
+					color: #333333;
+
+				}
+			}
+			& > view:nth-child(2) {
+				padding-left: 60upx;
+				text-align: left;
+				color: #999999;
+				font-size: 24upx;
+				font-weight: 400;
+				margin:25upx 0 19upx;
+			}
+			& > view:nth-child(3) {
+				padding-left: 60upx;
+				text-align: left;
+				color: #333333;
+				font-size: 24upx;
+				font-weight: 400;
+				margin:25upx 0 19upx;
+			}
+		}
+	}
 </style>

+ 0 - 0
ghs/src/admin/interest/invite.vue → ghs/src/pagesShare/interest/invite.vue


+ 48 - 17
ghs/src/admin/interest/my-invite.vue → ghs/src/pagesShare/interest/my-invite.vue

@@ -1,23 +1,31 @@
 <template>
   <div class="app-content">
+    <app-tabs borderLeft :tabs="optionsType" :currentTab="roleIndex" @change="roleChange" itemWidth="50%" :padding="0" />
     <div class="rank-wrap">
       <div class="user-blo">
         <div class="user-wrap">
           <div class="user-wrap-left">
             <app-avatar-module :width="100" />
             <div class="user-det">
-              <!-- <div class="user-name">{{ userInfo.merchantName }}</div> -->
+              <div class="user-name">{{ userInfo.merchantName }}</div>
               <div class="app-color-3">三级代理</div>
             </div>
           </div>
           <!-- #ifdef H5 -->
-          <div class="user-wrap-right" @click="showShare = true">
+          <!-- <div class="user-wrap-right" @click="showShare = true">
             <img :src="`${constant.imgUrl}/retail/interest/invite-store.png`" alt mode="widthFix" />
-          </div>
+          </div> -->
           <!-- #endif -->
           <!-- #ifdef MP-WEIXIN -->
-          <button class="user-wrap-right" open-type="share">
+          <button
+            v-if="roleIndex == 1"
+            class="user-wrap-right" open-type="share">
             <img :src="`${constant.imgUrl}/retail/interest/invite-store.png`" alt mode="widthFix" />
+          </button>
+           <button
+            v-else
+            class="user-wrap-right" open-type="share">
+            <img :src="`${constant.imgUrl}/ghs/me/yqghs.png`" alt mode="widthFix" />
           </button>
           <!-- #endif -->
         </div>
@@ -70,7 +78,8 @@ import AppShareMask from "@/components/module/app-share-mask";
 import { list, share } from "@/mixins";
 // api
 import { getUser } from "@/utils/auth";
-import { assetDet, applyList } from "@/api/proxy";
+// assetDet
+import { applyList } from "@/api/store/index";
 export default {
   name: "my-invite-list",
   components: {
@@ -86,6 +95,15 @@ export default {
       showShare: false,
       data: {},
       tabIndex: 0,
+      roleIndex: 0,
+      optionsType:[
+        {
+          name:'供货商'
+        },
+        {
+          name:'零售店铺'
+        }
+      ],
       tabs: [
         {
           name: "全部"
@@ -130,8 +148,16 @@ export default {
   },
   onLoad() {},
   methods: {
+    roleChange(e){
+       if (this.roleIndex == e.index) {
+        return false;
+      } else {
+        this.roleIndex = e.index;
+        this.init()
+      }
+    },
     init() {
-      this._assetDet();
+      // this._assetDet();
       this._applyList();
       getUser().then(res => {
         let params = {
@@ -143,21 +169,25 @@ export default {
         this.jweixinFn(params);
       });
     },
-    _assetDet() {
-      assetDet().then(res => {
-        if (this.$util.isEmpty(res.data)) {
-          return false;
-        }
-        this.data = res.data;
+    // _assetDet() {
+    //   assetDet().then(res => {
+    //     if (this.$util.isEmpty(res.data)) {
+    //       return false;
+    //     }
+    //     this.data = res.data;
+    //     this.userData[0].value = res.data.balance | 0.0;
+    //     this.userData[1].value = res.data.inviteNum | 0;
+    //     this.userData[2].value = res.data.payNum | 0;
+    //     this.userData[3].value = res.data.income | 0.0;
+    //   });
+    // },
+    _applyList() {
+      let status = this.getStatus(this.tabIndex);
+      return applyList({ status: status, style:this.roleIndex==0?2:1}).then(res => {
         this.userData[0].value = res.data.balance | 0.0;
         this.userData[1].value = res.data.inviteNum | 0;
         this.userData[2].value = res.data.payNum | 0;
         this.userData[3].value = res.data.income | 0.0;
-      });
-    },
-    _applyList() {
-      let status = this.getStatus(this.tabIndex);
-      return applyList({ status: status }).then(res => {
         this.completes(res);
       });
     },
@@ -206,6 +236,7 @@ export default {
 // 头部
 .rank-wrap {
   background-color: #fff;
+  margin-top: 20upx;
   .user-blo {
     padding: 40px 30px 28px 30px;
   }

+ 0 - 0
ghs/src/admin/interest/setting.vue → ghs/src/pagesShare/interest/setting.vue


+ 135 - 0
ghs/src/pagesStore/components/table.vue

@@ -0,0 +1,135 @@
+<template>
+	<view class="table-view">
+		<view
+			class="table-header"
+			:style="{ backgroundColor: headerBackgroundColor }"
+		>
+			<view
+				class="table-th"
+				v-for="(item, index) in columns"
+				:key="index"
+				:style="{
+					flex: item.width ? `0 0 ${item.width}rpx` : '1',
+					textAlign: item.align || 'left',
+					fontSzie: `${headerFontSize}rpx`,
+					margin: `0 ${gutter}rpx`
+				}"
+			>
+				<!-- <slot :name="item.dataIndex" > -->
+				{{ item.name || "" }}
+				<!-- </slot> -->
+			</view>
+		</view>
+		<view class="table-tr" v-for="(item, index) in dataList" :key="index">
+			<view
+				class="table-td"
+				v-for="(column, columnIndex) in columns"
+				:key="columnIndex"
+				:style="{
+					flex: column.width ? `0 0 ${column.width}rpx` : '1',
+					textAlign: column.align || 'left',
+					fontSzie: `${fontSize}rpx`,
+					margin: `0 ${gutter}rpx`
+				}"
+			>
+				<!-- {{ item[column.dataIndex] || "" }} -->
+
+				<slot
+					v-if="column.custom"
+					:row="item"
+					:column="column"
+					:index="index"
+					:parentData="parentData"
+				>
+					{{ item[column.dataIndex] || "" }}
+				</slot>
+				<text v-else :class="[column.color || '']">
+					{{ (column.dataIndex && item[column.dataIndex]) || "" }}
+				</text>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+export default {
+	props: {
+		parentData: {},
+		columns: {
+			type: Array,
+			default: []
+		},
+		dataList: {
+			type: Array,
+			default: []
+		},
+		headerBackgroundColor: {
+			type: String,
+			default: "#ffffff"
+		},
+		fontSize: {
+			type: Number,
+			default: 24
+		},
+		headerFontSize: {
+			type: Number,
+			default: 24
+		},
+		gutter: {
+			type: Number,
+			default: 10
+		}
+	},
+	mounted() {
+		for (let index = 0; index < this.$children.length; index++) {
+			const element = this.$children[index];
+			console.log(33333, element, element.$attrs);
+		}
+	},
+	methods: {
+		childrenItem(name) {
+			let item = null;
+			for (let index = 0; index < this.$children.length; index++) {
+				const element = this.$children[index];
+				if (element.$options.name == "table-item") {
+				}
+			}
+			return;
+		}
+	}
+};
+</script>
+<style lang="scss" scoped>
+.table-view {
+	.table-header {
+		display: flex;
+		padding: 20upx 30upx;
+
+		box-shadow: 0px 1px 0px 0px #eeeeee;
+		color: #999999;
+		.table-th {
+			white-space: nowrap;
+		}
+	}
+	.table-tr {
+		display: flex;
+		align-items: center;
+		padding: 20upx 30upx;
+		border-bottom: 1px solid #eeeeee;
+		color: #999999;
+		.table-td {
+			.warn {
+				color: #ffaf1d;
+			}
+			.fail {
+				color: #f51608;
+			}
+			.success {
+				color: #09bb07;
+			}
+			.info {
+				color: #333;
+			}
+		}
+	}
+}
+</style>

+ 15 - 0
ghs/src/pagesStore/me/incomeExpenses.vue

@@ -0,0 +1,15 @@
+<template>
+    <div>
+        收支
+    </div>
+</template>
+
+<script>
+    export default {
+        name:'IncomeExpenses' // 收支
+    }
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 15 - 0
ghs/src/pagesStore/me/withdraw.vue

@@ -0,0 +1,15 @@
+<template>
+    <div>
+        明细
+    </div>
+</template>
+
+<script>
+    export default {
+        name:'withDraw' //提现记录
+    }
+</script>
+
+<style lang="scss" scoped>
+
+</style>