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

Merge branch 'master' into debt

shish 1 год назад
Родитель
Сommit
7cdc21bc13

+ 34 - 0
.cursor/rules/general-rules.mdc

@@ -0,0 +1,34 @@
+---
+description: 
+globs: 
+alwaysApply: true
+---
+你是一名顶尖的 uni-app 开发专家,精通 Vue.js (同时支持 Vue 2 和 Vue 3 语法)、JavaScript 和 TypeScript。
+你的首要任务是编写高效、可维护、跨端兼容性强的 uni-app 代码。
+
+### 核心准则
+    1. **API 优先**: 必须优先使用 uni-app 的跨平台 API (例如 `uni.navigateTo`, `uni.request`, `uni.getSystemInfo`),而不是 Web 平台的特有 API (如 `window`, `document`, `localStorage`)。
+    2. **组件规范**: 必须使用 uni-app 的内置组件 (如 `<view>`, `<text>`, `<image>`, `<button>`),而不是标准的 HTML 标签 (如 `<div>`, `<span>`, `<img>`, `<p>`)。
+    3. **生命周期**: 精确理解并使用 uni-app 的页面生命周期 (`onLoad`, `onShow`, `onReady`) 和应用生命周期 (`onLaunch`, `onShow`, `onError`)。
+    4. **条件编译**: 熟练运用条件编译 (`#ifdef H5`, `#ifdef MP-WEIXIN`, `#endif`) 来处理不同平台的特定逻辑和样式。
+    5. **配置文件**: 充分理解 `pages.json` (用于页面路由、导航栏和样式配置) 和 `manifest.json` (用于应用标识、图标、权限和模块配置) 的重要性。
+    6. **样式单位**: 在编写 CSS/SCSS/LESS 时,默认使用 `rpx` 作为响应式尺寸单位,以确保在不同尺寸的设备上表现一致。
+    7. **项目结构**: 认知并遵循标准的 uni-app 项目结构,例如 `pages` 目录存放页面,`components` 存放可复用组件,`static` 存放静态资源, `store` 存放状态管理。
+    8. **性能优化**: 在生成代码时,考虑到小程序的性能限制,例如避免在视图层进行复杂的运算,合理使用 `v-if` 和 `v-show`。
+    9. **Vue 语法**: 如果项目使用 Vue 3,优先使用 Composition API (`<script setup>`) 以获得更好的类型支持和代码组织。如果项目是 Vue 2,则使用 Options API。
+
+
+### 项目结构
+这个目录下放了多个项目,项目分布与说明如下:
+
+- ghs 供货商
+    1. ghsApp   -- 手机微信端(或手机App端界面)
+    2. ghsPad   -- 平板端
+    3. ghs      -- 桌面电脑 web 端
+
+- hd 花店
+    1. hdApp    -- 手机微信端(或手机App端界面)
+    2. hdPad    -- 平板端
+    3. hd       -- 桌面电脑 web 端
+
+注意:各个项目是相互独立的

+ 2 - 1
.gitignore

@@ -1,2 +1,3 @@
 .idea
-.DS_Store
+.DS_Store
+hdApp/dist/release/

+ 97 - 27
ghsApp/src/admin/expend/addExpend.vue

@@ -4,12 +4,10 @@
       <form @submit="formSubmit">
         <view class="module-com input-line-wrap">
 
-          <tui-list-cell class="line-cell" :hover="false" :arrow="true">
-            <view class="tui-title">类型</view>
-            <view class="tui-input" @click="changeType">
-              <text v-if="form.type == -1" style="color:#CCCCCC;">请选择</text>
-              <text v-else>{{ form.typeName }}</text>
-            </view>
+          <tui-list-cell class="line-cell" :arrow="true">
+            <div class="tui-title">类型</div>
+            <view class="uni-input" v-if="form.type==-1" style="color:#CCCCCC;width:400upx;" @click="changeType()">请选择</view>
+            <view class="uni-input" v-else @click="changeType()" style="width:400upx;">{{ form.typeName ? form.typeName : '请选择' }}</view>
           </tui-list-cell>
 
           <tui-list-cell class="line-cell" :hover="false">
@@ -41,17 +39,25 @@
           </tui-list-cell>
 
           <tui-list-cell class="line-cell" :hover="false">
-          <div class="tui-title">报销</div>
-          <radio-group class="tui-input" @change="bxChange">
-            <label class="list" for="fixedLink">
-              <radio id="fixedLink" value="0" :checked="form.bx == 0" style="transform: scale(0.7,0.7);" />
-              <span class="checkbox-text" style="font-size:30upx;">未报销</span>
-            </label>
-            <label class="list" for="dimLink">
-              <radio id="dimLink" value="1" :checked="form.bx == 1" style="transform: scale(0.7,0.7);" />
-              <span class="checkbox-text" style="font-size:30upx;">已报销</span>
-            </label>
-          </radio-group>
+            <div class="tui-title">报销状态</div>
+            <view class="tui-input">
+              <view class="bx-btn-group">
+                <button 
+                  class="bx-btn" 
+                  :class="{'selected': form.bx == 0}"
+                  @click="selectBx(0)"
+                >
+                  未报销
+                </button>
+                <button 
+                  class="bx-btn" 
+                  :class="{'selected': form.bx == 1}"
+                  @click="selectBx(1)"
+                >
+                  已报销
+                </button>
+              </view>
+            </view>
           </tui-list-cell>
 
 					<tui-list-cell class="line-cell" :hover="false" :arrow="true">
@@ -68,14 +74,23 @@
       </form>
     </view>
 
-    <uni-popup ref="typeShowMore" background-color="#fff" type="center" :animation="true" class="class-popup-style">
-		<view style="display:flex;width:100vw;padding:20upx 20upx 40upx 20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
-			<view v-for="(item, index) in typeList" :key="index" style="width:100vw;margin-top:8upx;">
-				<button @click="getType(item)">{{ item.name }}</button>
-			</view>
-			<view style="width:100vw;margin-top:30upx;margin-bottom:70upx;"><button @click="closeTypeShow()">取消</button></view>
-		</view>
-	</uni-popup>
+    <uni-popup ref="typeShowMore" background-color="#fff" type="center" :animation="false" class="class-popup-style">
+      <view style="max-height:80vh;overflow: scroll;">
+        <view style="margin-left:30upx;margin-top:19upx;font-size:27upx;font-weight:bold;">请选择:</view>
+        <view style="display:flex;padding:20upx;height:auto;justify-content: flex-start;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
+          <view v-for="(item, index) in typeList" :key="index" style="margin-bottom:20upx;margin-left:3upx;">
+            <button
+              class="admin-button-com staff-btn"
+              @click.stop="getType(item)"
+              :class="{'selected': form.type === item.id}"
+            >
+              {{ item.name }}
+            </button>
+          </view>
+        </view>
+        <view style="text-align:center;padding:10upx 0 10upx 0;"><button class="admin-button-com big blue" @click="closeTypeShow()">取消选择</button></view>
+      </view>
+    </uni-popup>
 
   <mx-date-picker :show="showPicker" format="yyyy-mm-dd" type="date" :value="defaultPickerDate" :show-tips="true" @confirm="confirmPicker" @cancel="showPicker = false" />
 
@@ -148,8 +163,8 @@ export default {
 		changeType(){
 			this.$refs.typeShowMore.open('top')
 		},
-    bxChange(e) {
-      this.form.bx = e.detail.value;
+    selectBx(value) {
+      this.form.bx = value;
     },
     init(){
       let that = this
@@ -238,4 +253,59 @@ export default {
     width: 100%;
   }
 }
+
+.staff-btn {
+  min-width: 160upx;
+  padding: 0 27upx;
+  height: 80upx;
+  font-size: 40upx;
+  font-weight: bold;
+  margin: 8upx 8upx 0 0;
+  border-radius: 16upx;
+  background: #f0f2f6;
+  color: #333;
+  border: 2upx solid #e0e0e0;
+  transition: none;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  
+  &.selected {
+    background-color: #007aff !important;
+    color: #fff !important;
+    border-color: #007aff !important;
+  }
+}
+
+.bx-btn-group {
+  display: flex;
+  gap: 8upx;
+  justify-content: flex-start;
+}
+
+.bx-btn {
+  width: 200upx;
+  height: 90upx;
+  font-size: 28upx;
+  border-radius: 12upx;
+  background: #f0f2f6;
+  color: #333;
+  border: 2upx solid #e0e0e0;
+  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 0 20upx;
+  white-space: nowrap;
+  
+  &.selected {
+    background-color: #007aff !important;
+    color: #fff !important;
+    border-color: #007aff !important;
+  }
+  
+  &:active {
+    opacity: 0.8;
+  }
+}
 </style>

+ 29 - 2
ghsApp/src/admin/expend/list.vue

@@ -12,7 +12,7 @@
     </view>
 	<block v-if="!$util.isEmpty(list.data)">
 		<view v-for="(item, index) in list.data" :key="index">
-			<view style="background-color: white;margin-bottom:15upx;padding:18upx 0 18upx 30upx;font-size:28upx;">
+			<view style="background-color: white;margin-bottom:15upx;padding:18upx 0 18upx 30upx;font-size:28upx;position:relative;">
 				<view style="font-weight:bold;font-size:32upx;">
 					<text>{{item.typeName}}</text>
 					<text style="margin-left:20upx;">¥{{item.amount?parseFloat(item.amount):0}}</text>
@@ -29,6 +29,7 @@
 				<view style="margin-top:8upx;">支付:{{item.payWay==0?'线下微信':item.payWay == 4 ? '现金':item.payWay == 1?'线下支付宝':item.payWay == 5 ? '银行卡':''}}</view>
 				<view v-if="item.bx == 0" style="margin-top:8upx;">报销:待报销</view>
 				<view v-else style="margin-top:8upx;">报销:已报销</view>
+				<button @click="delExpend(item)" class="expend-delete-btn" > 删除 </button>
 			</view>
 		</view>
 	</block>
@@ -68,7 +69,7 @@
 
 <script>
 import AppWrapperEmpty from "@/components/app-wrapper-empty";
-import { getExpendList,getTypeList,changePayTime } from '@/api/expend'
+import { getExpendList,getTypeList,changePayTime,deleteExpend } from '@/api/expend'
 import list from '@/mixins/list'
 import { getAllStaff } from "@/api/shop-admin"
 import DateSelect from "@/components/module/dateSelect"
@@ -218,6 +219,18 @@ export default {
 				return
 			}
 			this.completes(res)
+		},
+		delExpend(item) {
+			const that = this;
+			this.$util.confirmModal({content:'确认要删除?系统将会记录由谁删除'},() => {
+				deleteExpend({ id: item.id, staffId: item.staffId }).then(result =>{
+					if (result.code == 1) {
+						that.$msg('删除成功');
+						that.resetList();
+						that.init();
+					}
+				})
+			})
 		}
 	},
 	async onPullDownRefresh() {
@@ -243,4 +256,18 @@ export default {
 .class-popup-style{
 	z-index:99999;
 }
+.expend-delete-btn {
+	position: absolute;
+	right: 30upx;
+	top: 80%;
+	transform: translateY(-50%);
+	width: 120upx;
+	height: 60upx;
+	background: #fff;
+	border: 2upx solid #ccc;
+	border-radius: 16upx;
+	color: #ac2929;
+	font-size: 30upx;
+	line-height: 56rpx;
+}
 </style>

+ 181 - 15
ghsApp/src/admin/home/components/OrderItem.vue

@@ -1,5 +1,6 @@
 <template>
-    <view  @click="pageTo({url:'/pagesOrder/detail',query: {id: item.id}})">
+    <view>
+      <view @click="pageTo({url:'/pagesOrder/detail?id='+item.id})">
         <view class="order-top_box" style="position:relative;">
 
         <image style="width:105upx;position:absolute;top:80upx;right:12upx;" v-if="currentStatus == 1 && item.book == 0"
@@ -69,33 +70,99 @@
           本客户共有{{item.sameTimeIdsNum}}个订单,可合并发货
         </view>
         </view>
-        <div class="list-bottom">
-            <div class="list-button">
+        <view class="list-bottom">
+            <view class="list-button">
                 <view><button @click.stop="shareOrder(item)" open-type="share" class="admin-button-com bule">分享</button> </view>
                 <block v-if="currentStatus == 2">
                   <block v-if="item.book == 0">
                     <view><button @click.stop="directFh(item)" class="admin-button-com bule">发货</button> </view>
-                    <view><button @click.stop="fillNoFh(item)" class="admin-button-com bule">填单发货</button> </view>
                   </block>
                   <block v-else>
                     <view><button @click.stop="confirmFh(item)" class="admin-button-com bule">确认发货</button> </view>
                   </block>
                 </block>
                 <block v-else>
-                <view><button disabled="true" class="admin-button-com bule active">发货</button> </view>
-                <view><button disabled="true" class="admin-button-com bule active">填单发货</button> </view>
+                  <view><button disabled="true" class="admin-button-com bule active">发货</button> </view>
                 </block>
                 <view v-if="currentStatus == 1">
                   <button disabled="true" class="admin-button-com bule active">打印(${item.printNum})</button>
                 </view>
                 <view v-else>
-                  <button @click.stop="printOrder(item)" class="admin-button-com bule">打印<text v-if="Number(item.printNum)>0">({{item.printNum}})</text></button>
+                  <button @click.stop="printOrder(item)" class="admin-button-com bule">打印<text>({{item.printNum}})</text></button>
                 </view>
-            </div>
-        </div>
+                <view>
+                  <button @click.stop="openMore(item)" class="admin-button-com bule">更多</button>
+                </view>
+            </view>
+        </view>
+
+      </view>
+
+      <uni-popup ref="morePopup" background-color="#fff" type="center" :animation="true" class="class-popup-style">
+        <view style="padding:50upx 40upx;width:70vw;">
+          <view style="text-align: center;"><button class="admin-button-com" style="margin:0 auto 30upx auto;width:240upx;height:80upx;line-height: 80upx;font-size:29upx;" @click="addExpress(item)">顺丰下单</button></view>
+          <view style="text-align: center;"><button class="admin-button-com" style="margin:0 auto 30upx auto;width:240upx;height:80upx;line-height: 80upx;font-size:29upx;" @click="cancelExpress(item)">取消顺丰订单</button></view>
+          <view style="text-align: center;"><button class="admin-button-com" style="margin:0 auto 30upx auto;width:240upx;height:80upx;line-height: 80upx;font-size:29upx;" @click="fillNoFh(item)">填单发货</button></view>
+          <view style="text-align: center;"><button class="admin-button-com" style="margin:0 auto 30upx auto;width:240upx;height:80upx;line-height: 80upx;font-size:29upx;" @click="sim(item)">模拟</button></view>
+          <view style="text-align: center;"><button class="admin-button-com default" @click="closeMore" style="margin:10upx auto 0 auto;width:240upx;height:80upx;line-height: 80upx;font-size:29upx;">取消</button></view>
+        </view>
+      </uni-popup>
+
+      <!-- 新增物流下单弹窗 -->
+      <uni-popup ref="expressAddressRef" background-color="#fff" type="center" :animation="true" class="class-popup-style" :mask-click="false">
+        <view style="padding:40upx 50upx;width:96vw;">
+          <view style="font-size:32upx;font-weight:bold;text-align:center;margin-bottom:30upx;">发货信息</view>
+          <view style="display:flex;flex-direction:column;gap:18upx;">
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;white-space:nowrap;">包裹数量:</view>
+              <input style="flex:1;font-size:28upx;border:1px solid #eee;padding:0 12upx;border-radius:8upx;height:60upx;line-height:60upx;" type="number" v-model="wlPackageNum" placeholder="请输入包裹数量" />
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;white-space:nowrap;">重量(kg):</view>
+              <input style="flex:1;font-size:28upx;border:1px solid #eee;padding:0 12upx;border-radius:8upx;height:60upx;line-height:60upx;" type="digit" v-model="wlWeight" placeholder="请输入重量" />
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;white-space:nowrap;">长度(cm):</view>
+              <input style="flex:1;font-size:28upx;border:1px solid #eee;padding:0 12upx;border-radius:8upx;height:60upx;line-height:60upx;" type="number" v-model="wlLength" placeholder="请输入长度" />
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;white-space:nowrap;">宽度(cm):</view>
+              <input style="flex:1;font-size:28upx;border:1px solid #eee;padding:0 12upx;border-radius:8upx;height:60upx;line-height:60upx;" type="number" v-model="wlWidth" placeholder="请输入宽度" />
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;white-space:nowrap;">高度(cm):</view>
+              <input style="flex:1;font-size:28upx;border:1px solid #eee;padding:0 12upx;border-radius:8upx;height:60upx;line-height:60upx;" type="number" v-model="wlHeight" placeholder="请输入高度" />
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;">城市:</view>
+              <view style="flex:1;font-size:28upx;">{{ receiverCity }}</view>
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;">地址:</view>
+              <view style="flex:1;font-size:28upx;">{{ receiverAddress }}{{ receiverFloor }}</view>
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;">姓名:</view>
+              <view style="flex:1;font-size:28upx;">{{ receiverName }}</view>
+            </view>
+            <view style="display:flex;align-items:center;">
+              <view style="width:135upx;color:#888;font-size:28upx;">电话:</view>
+              <view style="flex:1;font-size:28upx;">{{ receiverMobile }}</view>
+            </view>
+          </view>
+          <view style="display:flex;justify-content:space-around;margin-top:40upx;">
+            <button class="admin-button-com default" style="width:160upx;" @click="closeExpressPop">取消</button>
+            <button class="admin-button-com bule" style="width:160upx;" @click="modifyAddress(item)">修改地址</button>
+            <button class="admin-button-com bule" style="width:160upx;" @click="confirmAddExpress(item)">提交</button>
+          </view>
+        </view>
+      </uni-popup>
+
     </view>
 </template>
 <script>
+import { getUserDet } from "@/api/member";
+import { createExpressOrder,cancelExpressOrder,testUpdate } from "@/api/express";
 export default {
 	name: "OrderItem",
 	components: {
@@ -111,8 +178,18 @@ export default {
 	},
 	data() {
 		return {
-      currentStatus:0
-		};
+      currentStatus:0,
+      wlPackageNum: 1,
+      wlWeight: '',
+      wlLength:100,
+      wlWidth: 70,
+      wlHeight: 50,
+      receiverCity: '',
+      receiverAddress: '',
+      receiverFloor:'',
+      receiverName:'',
+      receiverMobile:'',
+    };
 	},
 	mounted(){
 		if(this.item.status){
@@ -120,6 +197,10 @@ export default {
 		}
 	},
 	methods: {
+    modifyAddress(item){
+      this.closeExpressPop()
+      this.$util.pageTo({url: "/pagesClient/member/modify?id="+item.customId+"&name="+item.customName})
+    },
     shareOrder(info){
       this.$emit('shareOrder',info)
     },
@@ -127,9 +208,10 @@ export default {
 			this.$emit('directFh', info)
     },
     confirmFh(info){
-      this.$util.pageTo({url: "/pagesOrder/arrival?id="+info.id})
+      this.$util.pageTo({url: "/pagesOrder/arrival?id="+info.id})
     },
     fillNoFh(info){
+      this.closeMore()
 			this.$emit('fillNoFh', info)
     },
 		printOrder(item) {
@@ -141,12 +223,64 @@ export default {
       }else{
         that.$emit('printOrder', item)
       }
-		}
+		},
+    openMore(item) {
+      this.$refs.morePopup.open('center');
+    },
+    closeMore() {
+      this.$refs.morePopup.close();
+    },
+    sim(item){
+      //testUpdate({id:item.id}).then(res=>{ })
+    },
+    addExpress(item) {
+      this.closeMore()
+      getUserDet({id:item.customId}).then(res=>{
+        if(res.code == 1){
+          this.receiverCity = res.data.city
+          this.receiverAddress = res.data.address
+          this.receiverFloor = res.data.floor
+          this.receiverName = res.data.name
+          this.receiverMobile = res.data.mobile
+        }
+      })
+      this.$refs.expressAddressRef.open('center');
+    },
+    cancelExpress(item){
+      this.$util.confirmModal({content:'确认取消?'},() => {
+        cancelExpressOrder({id:item.id}).then(res=>{
+          if(res.code == 1){
+            this.$msg(res.msg)
+            this.closeMore()
+          }
+        })
+      })
+    },
+    closeExpressPop() {
+      this.$refs.expressAddressRef.close();
+    },
+    confirmAddExpress(item) {
+        if(Number(this.wlWeight)<=0){
+          this.$msg('请填写重量')
+          return false
+        }
+        this.$util.confirmModal({content:'确认提交?'},() => {
+          createExpressOrder({id:item.id,weight:Number(this.wlWeight),length:this.wlLength,width:this.wlWidth,height:this.wlHeight,packageNum:this.wlPackageNum}).then(res=>{
+            if(res.code == 1){
+              this.$msg(res.msg)
+              this.closeExpressPop()
+            }
+          })
+        })
+    },
 	}
 };
 </script>
 
 <style lang="scss" scoped>
+.class-popup-style{
+	z-index:999999;
+}
 .admin-button-com {
   width: 140upx;
   height: 60upx;
@@ -169,11 +303,22 @@ export default {
 }
 .list-bottom {
     & > div {
-        @include disFlex(center, flex-end);
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
     }
     .list-button {
+        width: 100%;
+        display: flex;
+        flex-wrap: wrap;
+        justify-content: space-around;
+        align-items: center;
         .admin-button-com {
-            margin-left: 20upx;
+            margin: 0 6upx 12upx 6upx;
+            min-width: 90upx;
+            max-width: 140upx;
+            flex: none;
+            box-sizing: border-box;
         }
     }
 }
@@ -275,4 +420,25 @@ export default {
     }
   }
 }
+
+input {
+  height: 60upx;
+  line-height: 60upx;
+  padding: 0 12upx;
+  font-size: 28upx;
+  box-sizing: border-box;
+}
+input::placeholder {
+  line-height: 60upx;
+  /* 可选:color、font-size 等 */
+}
+input::-webkit-input-placeholder {
+  line-height: 60upx;
+}
+input:-ms-input-placeholder {
+  line-height: 60upx;
+}
+input::-ms-input-placeholder {
+  line-height: 60upx;
+}
 </style>

+ 98 - 5
ghsApp/src/admin/home/me.vue

@@ -16,8 +16,8 @@
           <view class="me-shop_top">
             <view class="shop-top_left">
 
-              <image :src="myInfo.shopImg" style="width:110upx;border-radius:100upx;" mode="widthFix" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentGhsShopId > 0"></image>
-              <image :src="myInfo.shopImg" style="width:110upx;border-radius:100upx;" mode="widthFix" @click="pageTo({url:'/admin/home/login'})" v-else></image>
+              <image :src="myInfo.smallShopImg" class="avatar-img" mode="aspectFill" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentGhsShopId > 0" @click="openAvatarPopup"></image>
+              <image :src="myInfo.smallShopImg" class="avatar-img" mode="aspectFill" @click="pageTo({url:'/admin/home/login'})" v-else></image>
 
               <view class="top-info_box" v-if="!$util.isEmpty(getLoginInfo.admin) && getLoginInfo.admin.currentGhsShopId > 0" @click="pageTo({url: '/admin/shop/add?id='+myInfo.shopInfo.id})">
                 <view> {{ myInfo.shopName||'' }}
@@ -212,6 +212,26 @@
 			</view>
 		</uni-popup>
 
+    <uni-popup ref="avatarPopup" type="top" :animation="false">
+      <view class="avatar-popup-content avatar-popup-bg">
+        <image :src="myInfo.smallShopImg" class="avatar-popup-img" mode="aspectFill"></image>
+        <button class="admin-button-com middle blue avatar-upload-btn" @click="triggerAvatarUpload">修改头像</button>
+      </view>
+      <!-- 隐藏上传组件,只用于触发上传 -->
+      <htz-image-upload
+        ref="avatarUploader"
+        :max="1"
+        :compress="true"
+        v-model="avatarImgData"
+        :headers="headers"
+        :action="getLoginInfo.imgUploadApi"
+        @uploadSuccess="avatarUploadSuccess"
+        :add="false"
+        :remove="false"
+        style="display:none;"
+      ></htz-image-upload>
+    </uni-popup>
+
   </view>
 </template>
 <script>
@@ -225,6 +245,7 @@ import { list } from "@/mixins";
 import { mapGetters } from "vuex";
 import NotLogin from "@/components/not-login";
 import ModalModule from "@/components/plugin/modal"
+import htzImageUpload from '@/components/htz-image-upload/htz-image-upload.vue'
 export default {
   name: "me",
   components: {
@@ -232,7 +253,8 @@ export default {
     TuiListCell,
     ShopSelect,
     NotLogin,
-    ModalModule
+    ModalModule,
+    htzImageUpload
   },
   mixins: [list],
   computed: {
@@ -250,7 +272,9 @@ export default {
       inAmountFocus:false,
       outAmountFocus:false,
       lookMoney:0,
-      showDeadline:false
+      showDeadline:false,
+      avatarImgData: [],
+      headers: { token: '' },
     };
   },
   onPullDownRefresh () {
@@ -282,6 +306,8 @@ export default {
     // #ifdef MP-WEIXIN
     this.showDeadline = true
     // #endif
+    const token = uni.getStorageSync('token')
+    this.headers.token = token
   },
   methods: {
 		closeGzh(){
@@ -477,7 +503,42 @@ export default {
           }
         })
       })
-    }
+    },
+    openAvatarPopup() {
+      this.avatarImgData = []
+      this.$refs.avatarPopup.open('top')
+    },
+    triggerAvatarUpload() {
+      // 直接通过 ref 触发上传
+      this.$refs.avatarUploader && this.$refs.avatarUploader.chooseFile()
+    },
+    async avatarUploadSuccess(res) {
+      // 上传成功后,调用 /shop/update-avatar 更新头像
+      let _res = JSON.parse(res.data)
+      if(_res.code == 1 && _res.data && _res.data.shortUrl) {
+        // shopId 从 myInfo.shopInfo.id 获取
+        const shopId = this.myInfo.shopInfo && this.myInfo.shopInfo.id
+        if(!shopId) {
+          this.$msg('门店信息异常,无法更新头像')
+          return
+        }
+        // 调用 /shop/update-avatar
+        const { updateShopAvatar } = require('@/api/shop')
+        uni.showLoading({mask:true})
+        updateShopAvatar({ shopId: shopId, avatar: _res.data.shortUrl }).then(resp => {
+          uni.hideLoading()
+          if(resp.code == 1) {
+            this.$msg('头像更新成功')
+            this.myInfo.smallShopImg = resp.data.shopImg
+            this.$refs.avatarPopup.close()
+          } else {
+            this.$msg(resp.msg || '头像更新失败')
+          }
+        })
+      } else {
+        this.$msg('图片上传失败')
+      }
+    },
   },
 };
 </script>
@@ -655,5 +716,37 @@ export default {
     margin-top: 20upx;
     border-radius: 10upx;
   }
+  .avatar-popup-bg {
+    background: #fff;
+    opacity: 1;
+    border-bottom-left-radius: 24upx;
+    border-bottom-right-radius: 24upx;
+  }
+  .avatar-popup-content {
+    min-height: 42vh;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: flex-start;
+    padding: 148upx 0 32upx 0;
+  }
+  .avatar-img {
+    width: 110upx;
+    height: 110upx;
+    border-radius: 50%;
+    object-fit: cover;
+  }
+  .avatar-popup-img {
+    width: 350upx;
+    height: 350upx;
+    border-radius: 50%;
+    object-fit: cover;
+    margin-bottom: 10upx;
+    border: 3upx solid #3385FF;
+  }
+  .avatar-upload-btn {
+    margin-top: 25upx;
+    width: 30vw;
+  }
 }
 </style>

+ 1 - 0
ghsApp/src/admin/home/order.vue

@@ -263,6 +263,7 @@ export default {
 			})
       // #endif
     },
+    //这个有多处要同步修改,关键词:fh_express_pop
     fillNoFh(info){
       let that = this
       this.fhLabelShow = true

+ 82 - 7
ghsApp/src/admin/order/itemOrder.vue

@@ -7,7 +7,7 @@
             <OrderItem :item="item.orderInfo" @printOrder="printOrder"></OrderItem>
           </div>
           <div v-else>
-            <OrderItem :item="item" @printOrder="printOrder"></OrderItem>
+            <OrderItem :ref="`orderRef${item.id}`" :item="item" @printOrder="printOrder" @directFh="directFh" @fillNoFh="fillNoFh"></OrderItem>
           </div>
 
         </div>
@@ -17,10 +17,29 @@
       </block>
     </div>
 
-			<div class="app-footer" v-if="!$util.isEmpty(ids)">
-        <div class="admin-button-com big blue" @click="batchFh()">全部发货</div>
-				<div class="admin-button-com big blue" style="margin-left:50upx;" @click="batchPrint()">合并打印</div>
-			</div>
+    <div class="app-footer" v-if="!$util.isEmpty(ids)">
+      <div class="admin-button-com big blue" @click="batchFh()">全部发货</div>
+      <div class="admin-button-com big blue" style="margin-left:50upx;" @click="batchPrint()">合并打印</div>
+    </div>
+
+		<modal-module :show="fhLabelShow" @click="fhConfirm" :maskClosable="true" title="物流信息" padding="30rpx 30rpx" >
+      <template v-slot:content>
+        <div class="app-modal-input-wrap">
+          <div class="inp-list-line">
+            <div class="line-label">物流名称</div>
+            <div class="line-input">
+            <input type="text" v-model="fhWl" @focus="fhWl=''" class="inp-input" />
+            </div>
+          </div>
+          <div class="inp-list-line">
+            <div class="line-label">物流单号</div>
+            <div class="line-input">
+            <input type="text" v-model="fhWlNo" :focus="fhWlFocus" @focus="fhWlNo=''" class="inp-input" />
+            </div>
+          </div>
+        </div>
+      </template>
+		</modal-module>
 
   </div>
 </template>
@@ -32,7 +51,7 @@ import { mapGetters } from "vuex";
 import { getOrderInfoList } from "@/api/order-item";
 import orderMixin from "@/mixins/order";
 import OrderItem from "../home/components/OrderItem"
-import { getListB,cloudPrintOrder,mergePrintFn,allFhAction} from "@/api/order";
+import { getListB,cloudPrintOrder,mergePrintFn,allFhAction,orderFh} from "@/api/order";
 export default {
   name: "itemOrder",
   components: {
@@ -44,7 +63,12 @@ export default {
   computed: { ...mapGetters(["getLoginInfo", "getDictionariesInfo"]) },
   data() {
     return {
-      ids:''
+      ids:'',
+      fhWlInfo:[],
+      fhWlNo:'',
+      fhWl:'顺丰',
+      fhWlFocus:false,
+      fhLabelShow:false,
     }
   },
   onPullDownRefresh() {
@@ -74,8 +98,59 @@ export default {
 
   },
   methods: {
+    //这个有多处要同步修改,关键词:fh_express_pop
+    fillNoFh(info){
+      let that = this
+      this.fhLabelShow = true
+      this.fhWlInfo = info
+			setTimeout(x => {
+				this.$nextTick(() => {
+          that.fhWlFocus = true
+        })
+			}, 200)
+    },
+    fhConfirm(val){
+      let that = this
+			if (val.index == 0) {
+				that.fhLabelShow = false
+				that.fhWlFocus = false
+        that.fhWlNo = ''
+				return
+			}
+      if (this.$util.isEmpty(this.fhWl)){
+        that.$msg('请填写物流名称')
+        return false
+      }
+      if (this.$util.isEmpty(this.fhWlNo)){
+        that.$msg('请填写物流单号')
+        return false
+      }
+      let id = that.fhWlInfo.id ? that.fhWlInfo.id : 0
+      that.$util.confirmModal({content:'确认发货?'},() => {
+          orderFh({id:id,fhType:1,fhWl:that.fhWl,fhWlNo:that.fhWlNo}).then(res=>{
+            if(res.code == 1){
+              that.$refs[`orderRef${id}`][0].currentStatus = 3
+              that.fhLabelShow = false
+              that.fhWlFocus = false
+              that.fhWlNo = ''
+              that.$msg('发货成功')
+            }
+          })
+      })
+    },
     init(){
 
+    },
+    directFh(info){
+      let that = this
+      that.$util.confirmModal({content:'确认发货?'},() => {
+          orderFh({id:info.id,fhType:0}).then(res=>{
+            if(res.code == 1){
+              that.$refs[`orderRef${info.id}`][0].currentStatus = 3
+              that.$msg('发货成功')
+            }
+          })
+      })
     },
     batchFh(){
       let that = this

+ 9 - 9
ghsApp/src/admin/shop/add.vue

@@ -94,12 +94,12 @@
 					</view>
 				</tui-list-cell>
 
-				<tui-list-cell class="line-cell" :hover="false">
+				<!-- <tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">显示库存</view>
 					<view>
 						<switch style="transform:scale(0.7,0.7)" :checked="form.showStock == 0 ? false : true" @change="showStockChange" /> {{form.showStock==1 ? '是' : '否'}}
 					</view>
-				</tui-list-cell>
+				</tui-list-cell> 
 
 				<tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">默认享受价格</view>
@@ -113,7 +113,7 @@
 					<view>
 						<switch style="transform:scale(0.7,0.7)" :checked="form.allowDebt == 0 ? false : true" @change="allowDebtChange" /> {{form.allowDebt==0 ? '不能' : '允许'}}
 					</view>
-				</tui-list-cell>
+				</tui-list-cell> -->
 
 
 				<tui-list-cell class="line-cell" :hover="false" v-if="form.allowDebt == 1">
@@ -121,12 +121,12 @@
 					<input type="number" v-model="form.allowDebtAmount" @focus="form.allowDebtAmount=''" placeholder-class="phcolor" class="tui-input" name="allowDebtAmount" placeholder="请填写金额" />
 				</tui-list-cell>
 
-				<tui-list-cell class="line-cell" :hover="false">
+				<!-- <tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">默认新客要审</view>
 					<view>
 						<switch style="transform:scale(0.7,0.7)" :checked="form.needCheck == 0 ? false : true" @change="needCheckChange" /> {{form.needCheck==0 ? '不要' : '需要'}}
 					</view>
-				</tui-list-cell>
+				</tui-list-cell> -->
 
 				<tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">车销身份</view>
@@ -149,12 +149,12 @@
 					</view>
 				</tui-list-cell>
 
-				<tui-list-cell class="line-cell" :hover="false">
+				<!-- <tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">显示销量</view>
 					<view>
 						<switch style="transform:scale(0.7,0.7)" :checked="form.showSold == 0 ? false : true" @change="showSoldChange" /> {{form.showSold==1 ? '是' : '否'}}
 					</view>
-				</tui-list-cell>
+				</tui-list-cell> -->
 
 				<tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">自主售后申请</view>
@@ -182,12 +182,12 @@
 					</view>
 				</tui-list-cell>
 
-				<tui-list-cell class="line-cell" :hover="false">
+				<!-- <tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title">线下开单超欠</view>
 					<view>
 						<switch style="transform:scale(0.7,0.7)" :checked="form.overAllowDebt == 0 ? false : true" @change="overAllowDebtChange" /> {{form.overAllowDebt==1 ? '允许' : '禁止'}}
 					</view>
-				</tui-list-cell>
+				</tui-list-cell> -->
 
 				<tui-list-cell class="line-cell" :hover="false">
 					<view class="tui-title " style="color:#3385FF;">整单满扎数</view>

+ 4 - 0
ghsApp/src/api/expend/index.js

@@ -32,6 +32,10 @@ export const getExpendList = data => {
 	return https.get('/expend/list', data)
 }
 
+export const deleteExpend = data => {
+	return https.post('/expend/del-expend', data)
+}
+
 export const changePayTime = data => {
 	return https.get('/expend/change-pay-time', data)
 }

+ 17 - 0
ghsApp/src/api/express/index.js

@@ -0,0 +1,17 @@
+import https from '@/plugins/luch-request_0.0.7/request'
+
+export const createExpressOrder = data => {
+    return https.post('/express/create-way-bill', data)
+}
+
+export const cancelExpressOrder = data => {
+    return https.get('/express/cancel-way-bill', data)
+}
+
+export const testUpdate = data => {
+    return https.get('/express/test-update', data)
+}
+
+export const getCgExpressTrack = data => {
+	return https.get('/express/get-cg-express-track', data)
+}

+ 8 - 0
ghsApp/src/api/shop/index.js

@@ -55,6 +55,14 @@ export const updateShop = data => {
 	return https.post('/shop/update', data)
 }
 
+/** *
+ * 修改门店的头像
+ */
+export const updateShopAvatar = data => {
+	return https.post('/shop/update-avatar', data)
+}
+
+
 /** *
  * 添加门店
  */

+ 2 - 2
ghsApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "销花宝",
     "appid" : "__UNI__BD781B0",
     "description" : "鲜花批发销售管理系统",
-    "versionName" : "1.2.35",
-    "versionCode" : 1235,
+    "versionName" : "1.2.36",
+    "versionCode" : 1236,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {

+ 8 - 0
ghsApp/src/pagesClient/member/modify.vue

@@ -62,6 +62,14 @@ export default {
 		}
 	},
 	onLoad() {
+
+		//返回上一页时不需要刷新
+		let pages = getCurrentPages();
+		let prevPage = pages[ pages.length - 2 ];
+		//订单列表页修改客户地址,返回时不刷新
+		prevPage.$vm.fromDetail = {status:1}
+
+
 		if(this.option.name){
 			uni.setNavigationBarTitle({ title: this.option.name })
 		}

+ 31 - 2
ghsApp/src/pagesOrder/detail.vue

@@ -150,14 +150,26 @@
 					<view>订单状态:</view>
 					<view>{{ detailInfo.status==1?'待付款':detailInfo.status==2?'待发货':detailInfo.status==3?'待收货':detailInfo.status==4?'已完成':detailInfo.status==5?'已取消':'已退款' }}</view>
 				</view>
+
+				<view class="order-info_box" v-if="detailInfo.fhType == 1">
+					<view>物流名称:</view>
+					<view>{{ detailInfo.fhWl }}</view>
+				</view>
+
 				<view class="order-info_box" v-if="detailInfo.fhType == 1">
 					<view>物流单号:</view>
-					<view>{{ detailInfo.fhWl }} {{detailInfo.fhWlNo}}</view>
+					<view>{{detailInfo.fhWlNo}}</view>
 					<view class="price">
 						<button @click="copyWl(detailInfo.fhWlNo)" class="admin-button-com default">复制单号</button>
 					</view>
 				</view>
 
+				<view style="border:1upx solid green;width:97%;margin-left:6upx;color:green;padding:2upx;border-radius: 8upx;">
+					<view v-for="(name, tIndex) in trackList" :key="tIndex">
+					{{ tIndex+1 }}、{{ name }}
+					</view>
+				</view>
+
 				<view v-if="detailInfo.status==1" class="order-info_box">
 					<view>过期时间:</view>
 					<view>{{detailInfo.deadline?detailInfo.deadline.substr(5,11):''}}</view>
@@ -483,6 +495,7 @@ import { delItem,updateRemarkItemFn } from "@/api/order-item";
 import { getAllStaff } from "@/api/shop-admin"
 import ModalModule from "@/components/plugin/modal"
 import MxDatePicker from '@/components/mx-datepicker/mx-datepicker.vue';
+import { getCgExpressTrack } from "@/api/express"
 export default {
 	name: "orderDetail",
 	components: {
@@ -523,7 +536,8 @@ export default {
 			fhLabelShow:false,
 			payDate:'',
 			currentItem:[],
-			staffListData:[]
+			staffListData:[],
+			trackList:[]
 		};
 	},
 	onPullDownRefresh() {
@@ -1173,6 +1187,21 @@ export default {
 						selectJobId:this.selectJobId
 					});
 				}
+
+				let that = this
+				if (!this.$util.isEmpty(this.detailInfo.fhWlSn)){
+				//获取运单轨迹
+				getCgExpressTrack({id:this.option.id}).then(result=>{ 
+					that.trackList = []
+					if(!that.$util.isEmpty(result.data.path_item_list) && this.$util.isArray(result.data.path_item_list)){
+					result.data.path_item_list.forEach(function(item){
+						that.trackList.push(item.action_msg)
+					})
+					}
+				})
+				}
+
+
 			} catch {
 			} finally {
 				this.loading = false;

+ 2 - 1
ghsApp/src/pagesPurchase/details.vue

@@ -106,7 +106,8 @@
 
 						<tui-list-cell v-if="myShopInfo.cgModel == 0" class="line-cell" :hover="false" :arrow="false">
 							<view class="tui-title">运费支付</view>
-							<button @click="changeYfPayWay(1)" class="admin-button-com mini-btn" :class="form.yfPayWay == 1 ? 'blue' : 'default'">寄付</button>
+							长短途费用由
+							<button @click="changeYfPayWay(1)" class="admin-button-com mini-btn" :class="form.yfPayWay == 1 ? 'blue' : 'default'" style="margin-left:10upx;">寄付</button>
 							<button @click="changeYfPayWay(2)" class="admin-button-com mini-btn" :class="form.yfPayWay == 2 ? 'blue' : 'default'" style="margin-left:20upx;">到付</button>
 						</tui-list-cell>
 					</block>

+ 1 - 1
hdApp/src/admin/billing/affirmGhs.vue

@@ -151,7 +151,7 @@
 				</text>
 				<text style="color: #3385FF;width:100%;" v-else>在本店配送范围的,免费送货上门</text>
 
-				<view><text style="color: #3385FF;width:100%;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">每天早7点和下午1点发车,请发车前30分钟下单</text></view>
+				<view><text style="color: #3385FF;width:100%;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">每天早上6点和中午12点发车,请发车前30分钟下单</text></view>
 				<view><text style="color: #3385FF;width:100%;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">市区满100元起送,远的地方需满200元起送,其余时间不免费配送</text></view>
 				<view><text style="color: #09733e;width:100%;font-weight:bold;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">理赔规则:鲜花是鲜活类产品,一旦送出后无质量问题不退不换;收到货请仔细检查数量和质量,有问题请在6小时内联系客服,超过6小时不再理赔;所有花材10%为正常损耗不售后,超出的部分可以售后,感谢支持。</text></view>
 				<view><text style="color: #09733e;width:100%;font-weight:bold;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">基地玫瑰:基地玫瑰有夹支、畸形花头 属于正常,一律不售后。</text></view>

+ 17 - 6
hdApp/src/admin/home/workbench.vue

@@ -35,7 +35,7 @@
             {{ $util.numberFormat(data.todayData.order) || 0 }}
           </div>
         </navigator>
-        <div class="info-list" @click="">
+        <div class="info-list">
           <div class="info-list-name">昨天</div>
           <div class="info-list-value">
             {{ $util.numberFormat(0) || 0 }}
@@ -158,7 +158,7 @@
         <view class="ghs_box flex-col justify-end" v-for="(ghsInfo, index) in supplierList" :key="index">
           <view class="image-text_7 flex-row justify-between">
             <view class="section_1 flex-col">
-              <image class="logo" :src="ghsInfo.avatar" @click="enterShop(ghsInfo)" />
+              <image class="logo" :src="ghsInfo.smallAvatar" @click="enterShop(ghsInfo)" />
             </view>
             <view class="text-group_7 flex-col justify-between" @click="enterShop(ghsInfo)">
               <text class="text_8">{{ghsInfo.name}}</text>
@@ -441,14 +441,25 @@ export default {
 		},
     goMore(){
       let that = this
+      let shopkeeper = this.loginInfo.staff && this.loginInfo.staff.founder == 2 //判断店主(老板)
+      let items = ['已屏蔽商家', '我已离职', '开关商城', '也要一个此商城', '修改密码', '退出登录'];
+      if(shopkeeper) {
+        items = ['已屏蔽商家', '改进建议', '开关商城', '也要一个此商城', '修改密码', '退出登录'];
+      }
       uni.showActionSheet({
-        itemList: ['已屏蔽商家', '改进建议','开关商城','也要一个此商城','修改密码','退出登录'],
+        itemList: items,
         success: function (res) {
           if(res.tapIndex == 0){
             that.$util.pageTo({url: '/pagesPurchase/pb'})
           }
           if(res.tapIndex == 1){
-            that.suggest()
+            if(shopkeeper){
+              // 店主显示改进建议
+              that.suggest()
+            }else{
+              // 员工显示离职
+              that.$util.pageTo({url: '/admin/staff/dimission'})
+            }
           }
           if(res.tapIndex == 2){
             that.$util.pageTo({url:'/pagesPurchase/open'})
@@ -463,7 +474,7 @@ export default {
             that.$util.confirmModal({content:'确认退出?'},() => {
               // #ifdef APP-PLUS
               uni.clearStorage()
-              that.$store.commit("setLoginInfo", {})
+              that.$store.commit("setLoginInfo", {})
               plus.runtime.restart()
               // #endif
               // #ifdef MP-WEIXIN
@@ -685,7 +696,7 @@ export default {
           success (res) {
           }
         })
-    },
+    }
   }
 };
 </script>

+ 100 - 0
hdApp/src/admin/staff/dimission.vue

@@ -0,0 +1,100 @@
+<template>
+  <div class="app-content">
+    <div>
+      <form>
+        <div class="module-com input-line-wrap" style="padding:20upx 26upx 0upx 26upx;font-size:32upx;">
+          您正在申请离职,如你之前有注册过门店,离职后将会回到你自己的门店。如没有注册过,离职后将退出登录。
+        </div>
+        <div class="confirm-btn">
+          <button class="admin-button-com big blue" @click="confirmDim()">确认离职</button>
+          <button class="admin-button-com big default" style="margin-top:30upx;" @click="changeCg(1)">返回</button>
+        </div>
+      </form>
+    </div>
+  </div>
+</template>
+<script>
+import { mapGetters } from "vuex";
+import { delStaff } from "@/api/admin";
+export default {
+  name: "dimission",
+  data() {
+    return {
+    };
+  },
+  computed: {
+    ...mapGetters({ loginInfo: "getLoginInfo",dictInfo:"getDictionariesInfo",myShopInfo:"getMyShopInfo" })
+  },
+  methods: {
+    init(){
+    },
+    confirmDim(){
+        this.$util.confirmModal({content:'确认离职?'},() => {
+            this.handleStaffResignation()
+        })
+    },
+    handleStaffResignation() {
+      let that = this
+      // 显示加载提示
+      uni.showLoading({ title: '处理中...' })
+      delStaff().then(res => {
+        uni.hideLoading()
+        if(res.code == 1){
+
+          that.$msg('操作成功')
+
+          if(res.data.hasShop == 0){
+            // 没有门店,清理本地数据
+            uni.clearStorage()
+            that.$store.commit("setLoginInfo", {})
+          }
+          
+          // 根据不同平台处理重启
+          // #ifdef APP-PLUS
+          plus.runtime.restart()
+          // #endif
+          // #ifdef MP-WEIXIN
+          uni.reLaunch({url:'/admin/home/workbench'})
+          // #endif
+          // #ifdef H5
+          window.location.reload()
+          // #endif
+        }
+      })
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.app-content {
+  min-height: calc(100vh - 20upx);
+  padding-top: 20upx;
+}
+.prompt-text {
+  color: $fontColor3;
+  padding-left: 30upx;
+  margin-bottom: 30upx;
+}
+.module-com {
+  margin-bottom: 20upx;
+  .member-wrap {
+    .member-det {
+      font-size: 24upx;
+      margin-left: 20upx;
+    }
+  }
+  .remark-wrap {
+    align-items: flex-start;
+    .remark {
+      height: 240upx;
+    }
+  }
+}
+.confirm-btn {
+  width: calc(100% - 60upx);
+  margin: 60upx 30upx 20upx;
+  .admin-button-com {
+    width: 100%;
+  }
+}
+</style>

+ 5 - 1
hdApp/src/api/admin/index.js

@@ -31,4 +31,8 @@ export const modifyPassword = data => {
 
 export const hasNotice = data => {
 	return https.get("/admin/has-notice", data);
-};
+};
+
+export const delStaff = data => {
+	return https.post('/admin/del-staff', data)
+}

+ 4 - 0
hdApp/src/api/express/index.js

@@ -1,5 +1,9 @@
 import https from '@/plugins/luch-request_0.0.7/request'
 
+export const getCgExpressTrack = data => {
+	return https.get('/express/get-cg-express-track', data)
+}
+
 /** *
  * 计算客户的距离和运费
  */

+ 2 - 1
hdApp/src/pages.json

@@ -230,7 +230,8 @@
 				{ "path": "admin","style": {"navigationBarTitleText": "个人资料"}},
 				{ "path": "sel-member", "style": { "navigationBarTitleText": "客户列表" } },
 				{ "path": "achieve", "style": { "navigationBarTitleText": "员工业绩" } },
-				{ "path": "miniAutoLogin", "style": { "navigationBarTitleText": "绑定账号" } }
+				{ "path": "miniAutoLogin", "style": { "navigationBarTitleText": "绑定账号" } },
+				{ "path": "dimission", "style": { "navigationBarTitleText": "申请离职" } }
 			]
 		},
 		{

+ 2 - 2
hdApp/src/pagesPurchase/ghsProduct.vue

@@ -3,7 +3,7 @@
 	<view class="billing_box_bg">
 		<view class="c_header" :class="myClass">
 			<view class="header_inside">
-				<image :src="ghsInfo.avatar"></image>
+				<image :src="ghsInfo.smallAvatar"></image>
 				<view class="shop_info">
 					<view class="shop_title" @click="pageTo({url:'/pagesPurchase/level?id='+ghsInfo.id})">
 						{{ghsInfo.name}}
@@ -14,7 +14,7 @@
 				</view>
 			</view>
 			<view>
-			<image v-if="buyNotice == 1" :src="`${constant.imgUrl}/cg/buy_look2.png?v=1`" @click.stop="getReadMe(ghsInfo)" style="border-radius:10upx;margin-top:9upx;" mode="widthFix"></image>
+			<image v-if="buyNotice == 1" :src="`${constant.hostUrl}/image/cg/buy_look2.png?v=1`" @click.stop="getReadMe(ghsInfo)" style="border-radius:10upx;margin-top:9upx;" mode="widthFix"></image>
 			</view>
 		</view>
 

+ 2 - 2
hdApp/src/pagesPurchase/ghsProduct2.vue

@@ -3,7 +3,7 @@
 	<view class="billing_box_bg">
 		<view class="c_header" :class="myClass">
 			<view class="header_inside">
-				<image :src="ghsInfo.avatar"></image>
+				<image :src="ghsInfo.smallAvatar"></image>
 				<view class="shop_info">
 					<view class="shop_title" @click="pageTo({url:'/pagesPurchase/level?id='+ghsInfo.id})">
 						{{ghsInfo.name}}
@@ -14,7 +14,7 @@
 				</view>
 			</view>
 			<view>
-			<image v-if="buyNotice == 1" :src="`${constant.imgUrl}/cg/buy_look2.png?v=1`" @click.stop="getReadMe(ghsInfo)" style="border-radius:10upx;margin-top:9upx;" mode="widthFix"></image>
+			<image v-if="buyNotice == 1" :src="`${constant.hostUrl}/image/cg/buy_look2.png?v=1`" @click.stop="getReadMe(ghsInfo)" style="border-radius:10upx;margin-top:9upx;" mode="widthFix"></image>
 			</view>
 		</view>
 

+ 1 - 1
hdApp/src/pagesPurchase/order.vue

@@ -14,7 +14,7 @@
             <view class="ghs_box flex-col justify-end" v-for="(ghsInfo, index) in supplierList" :key="index">
               <view class="image-text_7 flex-row justify-between">
                 <view class="section_1 flex-col">
-                  <image class="logo" :src="ghsInfo.avatar" />
+                  <image class="logo" :src="ghsInfo.smallAvatar" />
                 </view>
                 <view class="text-group_7 flex-col justify-between">
                   <text class="text_8">{{ghsInfo.name}}</text>

+ 24 - 2
hdApp/src/pagesPurchase/purDetails.vue

@@ -22,13 +22,22 @@
           <view>发货状态:</view>
           <view style="color:green;font-weight:bold;font-size:30upx;">待收货</view>
         </view>
+        <view class="order-info_box" v-if="detailInfo.fhType == 1">
+          <view>物流名称:</view>
+					<view>{{ detailInfo.fhWl }}</view>
+        </view>
         <view class="order-info_box" v-if="detailInfo.fhType == 1">
           <view>物流单号:</view>
-					<view>{{ detailInfo.fhWl }} {{detailInfo.fhWlNo}}</view>
+					<view>{{detailInfo.fhWlNo}}</view>
 					<view class="price">
 						<button @click="copyWl(detailInfo.fhWlNo)" class="admin-button-com default">复制单号</button>
 					</view>
         </view>
+        <view style="border:1upx solid green;width:97%;margin-left:6upx;color:green;padding:2upx;border-radius: 8upx;">
+          <view v-for="(name, tIndex) in trackList" :key="tIndex">
+           {{ tIndex+1 }}、{{ name }}
+          </view>
+        </view>
       </view>
 
       <view class="bills-info_box content-box">
@@ -325,6 +334,7 @@
 </template>
 <script>
 import { mapGetters } from "vuex";
+import { getCgExpressTrack } from "@/api/express"
 import { purchaseDetail, purchaseDebtPay,purchaseClearCreateOrder,confirmTake } from "@/api/purchase";
 import TuiListCell from "@/components/plugin/list-cell";
 import { getGhsDataApi } from "@/api/ghs";
@@ -354,7 +364,8 @@ export default {
       settlePrice:0,
       //登录状态 0未登录 1登录仅用到了采购 2登录用到完整功能
       loginStyle :0,
-      afterSale:1
+      afterSale:1,
+      trackList:[]
     };
   },
   onShareAppMessage(res) {
@@ -533,6 +544,17 @@ export default {
         that.settlePrice = parseFloat(that.settlePrice.toFixed(2))
         that.afterSale = res.data.afterSale
         that.$forceUpdate()
+        if (!this.$util.isEmpty(that.detailInfo.fhWlSn)){
+          //获取运单轨迹
+          getCgExpressTrack({id:id}).then(result=>{ 
+            that.trackList = []
+            if(!that.$util.isEmpty(result.data.path_item_list) && this.$util.isArray(result.data.path_item_list)){
+              result.data.path_item_list.forEach(function(item){
+                  that.trackList.push(item.action_msg)
+              })
+            }
+          })
+        }
       })
     },
     toPay () {

+ 1 - 1
hdApp/src/pagesPurchase/readMe.vue

@@ -364,7 +364,7 @@
 			</view>
 			<view>
 				<view class="info">
-      			每天早上7点和下午1点发车,请在发车前30分钟完成下单,市区满100元起送,远的地方需满200元起,其余时间不免费配送,请在规定时间内下单!
+      			每天早上6点和中午12点发车,请在发车前30分钟完成下单,市区满100元起送,远的地方需满200元起,其余时间不免费配送,请在规定时间内下单!
                 </view>
 				<view class="info">
 				配送根据线路安排,不支持催单,急单可以帮叫车单独送,车费自理!

+ 2 - 2
开发http/ghsApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "销花宝",
     "appid" : "__UNI__BD781B0",
     "description" : "鲜花批发销售管理系统",
-    "versionName" : "1.2.35",
-    "versionCode" : 1235,
+    "versionName" : "1.2.36",
+    "versionCode" : 1236,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {

+ 2 - 2
开发https/ghsApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "销花宝",
     "appid" : "__UNI__BD781B0",
     "description" : "鲜花批发销售管理系统",
-    "versionName" : "1.2.35",
-    "versionCode" : 1235,
+    "versionName" : "1.2.36",
+    "versionCode" : 1236,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {

+ 2 - 2
线上/ghsApp/src/manifest.json

@@ -2,8 +2,8 @@
     "name" : "销花宝",
     "appid" : "__UNI__BD781B0",
     "description" : "鲜花批发销售管理系统",
-    "versionName" : "1.2.35",
-    "versionCode" : 1235,
+    "versionName" : "1.2.36",
+    "versionCode" : 1236,
     "transformPx" : true,
     /* 5+App特有相关 */
     "app-plus" : {