From d8d6661b4736e5de37d4a158b8286509b748d62b Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 22 一月 2026 18:16:54 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java                        |    1 
 admin/src/components/business/OperaOrderMarkWindow.vue                                          |   51 +
 admin/src/views/business/goodsorder.vue                                                         |  501 +++++++++++---------------
 admin/src/components/common/GlobalAlertWindow.vue                                               |    1 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java               |   14 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |  217 +++++++---
 admin/src/components/common/UploadImage.vue                                                     |    5 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/GoodsorderDetail.java         |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java |    2 
 admin/src/api/business/goodsorder.js                                                            |    8 
 admin/src/views/business/labelsExpress.vue                                                      |    1 
 admin/src/components/business/OperaGoodsOrderDetailOld.vue                                      |  216 +++++++++++
 admin/src/components/business/OperaShipmentsWindow.vue                                          |   68 +-
 admin/src/components/base/BaseTable.vue                                                         |    4 
 14 files changed, 674 insertions(+), 416 deletions(-)

diff --git a/admin/src/api/business/goodsorder.js b/admin/src/api/business/goodsorder.js
index d69ee1f..392491c 100644
--- a/admin/src/api/business/goodsorder.js
+++ b/admin/src/api/business/goodsorder.js
@@ -29,3 +29,11 @@
 export function updateById (data) {
   return request.post('/business/goodsorder/updateById', data)
 }
+
+// 淇敼
+export function orderRemark (data) {
+  return request.post('/business/goodsorder/orderRemark', data)
+}
+export function orderSendOutGoods (data) {
+  return request.post('/business/goodsorder/orderSendOutGoods', data)
+}
diff --git a/admin/src/components/base/BaseTable.vue b/admin/src/components/base/BaseTable.vue
index ccdafc0..94e3169 100644
--- a/admin/src/components/base/BaseTable.vue
+++ b/admin/src/components/base/BaseTable.vue
@@ -33,6 +33,7 @@
         sorts: [],
         // 褰撳墠椤垫暟鎹�
         list: [],
+        totalData:{},
         // 鍒嗛〉
         pagination: {
           pageIndex: 1,
@@ -124,6 +125,9 @@
         .then(data => {
           this.tableData.list = data.records
           this.tableData.pagination.total = data.total
+          if (this.tableData.pagination.pageIndex === 1) {
+            this.tableData.totalData = data.countData || {}
+          }
         })
         .catch(e => {
           this.$tip.apiFailed(e)
diff --git a/admin/src/components/business/OperaGoodsOrderDetailOld.vue b/admin/src/components/business/OperaGoodsOrderDetailOld.vue
new file mode 100644
index 0000000..2ab5591
--- /dev/null
+++ b/admin/src/components/business/OperaGoodsOrderDetailOld.vue
@@ -0,0 +1,216 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-tabs v-model="activeName" @tab-click="handleClick">
+      <el-tab-pane label="璁㈠崟淇℃伅" name="first">
+        <el-descriptions title="璁㈠崟淇℃伅" size="medium" direction="horizontal" :column="4">
+          <el-descriptions-item label="璁㈠崟缂栧彿">{{ form.code }}</el-descriptions-item>
+          <el-descriptions-item label="璁㈠崟鐘舵��">
+            <span :class="[0,1,2,5].indexOf(form.status) != -1 ? 'underway' : 'complete'">
+              {{ 
+                form.status==0 ? '寰呮敮浠�'
+                  : form.status==1 ? '寰呭彂璐�'
+                    : form.status==2 ? '寰呮敹璐�'
+                      : form.status==3 ? '浜ゆ槗瀹屾垚'
+                        : form.status==4 ? '宸插叧闂�' : '閮ㄥ垎鍙戣揣'
+              }}
+            </span>
+          </el-descriptions-item>
+          <el-descriptions-item label="涓嬪崟鏃堕棿">{{ form.createDate }}</el-descriptions-item>
+          <el-descriptions-item label="鏀粯鏃堕棿">{{ form.payDate }}</el-descriptions-item>
+          <el-descriptions-item label="璁㈠崟閲戦">
+            <span v-if="isPlatform">锟�</span>{{ form.price }}<span v-if="!isPlatform">鍜栬眴</span></el-descriptions-item>
+          <el-descriptions-item label="鏀粯璁㈠崟鍙�">{{ form.payOrderId }}</el-descriptions-item>
+          <el-descriptions-item label="瀹屾垚鏃堕棿" :span="2">{{ form.completeDate }}</el-descriptions-item>
+         
+          <el-descriptions-item label="鐢ㄦ埛澶囨敞" :span="4">{{ form.memberInfo }}</el-descriptions-item>
+          <el-descriptions-item label="骞冲彴澶囨敞" :span="4">{{ form.sysInfo }}</el-descriptions-item>
+          
+        </el-descriptions>
+        <div style="height: 20px;"></div>
+        <el-descriptions title="璁㈠崟淇℃伅" size="medium" direction="horizontal" :column="4">
+          <el-descriptions-item label="鏀朵欢濮撳悕">{{ form.linkname }}</el-descriptions-item>
+          <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ form.linkphone }}</el-descriptions-item>
+          <el-descriptions-item label="鏀惰幏鍦板潃">{{ form.linkaddr }}</el-descriptions-item>
+        </el-descriptions>
+        <div style="height: 20px;"></div>
+        <el-descriptions title="鍟嗗搧淇℃伅" size="medium" direction="horizontal" :column="4">
+          
+        </el-descriptions>
+        <el-table
+          :data="list"
+          stripe
+          border
+        >
+          <el-table-column prop="name" label="鍟嗗搧ID" align="center" min-width="100px"></el-table-column>
+          <el-table-column prop="name" label="鍟嗗搧淇℃伅" align="center" min-width="100px"></el-table-column>
+          <el-table-column prop="name" label="鍒嗙被" align="center" width="100px"></el-table-column>
+          <el-table-column prop="name" label="瑙勬牸" align="center" min-width="100px"></el-table-column>
+          <el-table-column prop="name" :label="isPlatform?'浠锋牸(鍏�)':'浠锋牸(鍜栬眴)'" align="center" width="100px"></el-table-column>
+        </el-table>
+        <div v-if="isPlatform" class="statistics">
+          <div>璁㈠崟鍟嗗搧閲戦锛歿{ form.price }}鍏�</div>
+          <div>璁㈠崟浼樻儬閲戦锛�-{{ form.price }}鍏�</div>
+          <div>瀹炴敹娆撅細{{ form.price }}鍏�</div>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane label="鐗╂祦淇℃伅" name="second">
+        <el-descriptions title="蹇�掍俊鎭�" size="medium" direction="horizontal" :column="4">
+          <el-descriptions-item label="杩愬崟鍙�">{{ form.createDate }}</el-descriptions-item>
+          <el-descriptions-item label="鐗╂祦鍏徃" :span="3">{{ form.kdName }}</el-descriptions-item>
+          <el-descriptions-item label="鏀惰揣鍦板潃" :span="4">{{ form.linkaddr }}</el-descriptions-item>
+          <el-descriptions-item label="鍙戣揣鏃堕棿" :span="4">{{ form.kdDate }}</el-descriptions-item>
+        </el-descriptions>
+        <div class="kd-detail">
+          <div class="kd-status">宸茬鏀�</div>
+          <el-timeline>
+            <el-timeline-item
+              v-for="(item, index) in kdDetail"
+              :key="index"
+              hide-timestamp
+              :class="index==0&&'first'"
+              :size="index==0?'large':'normal'"
+              :timestamp="item.date"
+            >
+              <h4>{{ item.date }}</h4>
+              <p>{{ item.message }}</p>
+            </el-timeline-item>
+          </el-timeline>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+    <div slot="footer"></div>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaGoodsOrderDetail',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    
+    return {
+      activeName: '0',
+      isPlatform: true,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: '1',
+        code: '256302564258',
+        payOrderId: '256302564258',
+        createDate: '2022-11-01 22:30:43',
+        payDate: '2022-11-01 22:30:43',
+        soonTime: '2022-11-03 22:30:43',
+        completeDate: '2022-11-03 22:30:43',
+        imgurl: '',
+        goodsName: '鍜栧暋鏉�',
+        attr: '鐧借壊锛涘叾瀹冭鏍煎唴瀹癸紱 10L',
+        memberInfo: '杩欓噷鏄敤鎴峰娉�',
+        sysInfo: '杩欓噷鏄钩鍙板娉�',
+        linkname: '鏉庢��鑻�',
+        linkphone: '18055151023',
+        linkaddr: '鍥涘窛鐪佹垚閮藉競閲戠墰鍖猴紝閲戞硥琛楅亾涓捣鍥介檯绀惧尯钃濆哺琛�98鍙锋閮′竴鏈�5-2-504',
+        price: '2333',
+        status: 1, 
+        kdCode: 'SF01021213',
+        kdDate: '2022-11-03 23:30:43',
+        kdId: 'KD21312',
+        kdInfo: '杩欐槸鍙戣揣澶囨敞',
+        kdName: '椤轰赴蹇��',
+        kdUser: '00190',
+      },
+      list: [],
+      kdDetail: [
+        { date: '2022-11-03 23:30:43', message: '宸插彂璐�' },
+        { date: '2022-11-03 23:30:43', message: '宸插彂璐�' },
+        { date: '2022-11-03 23:30:43', message: '宸插彂璐�' },
+        { date: '2022-11-03 23:30:43', message: '宸插彂璐�' },
+        { date: '2022-11-03 23:30:43', message: '宸插彂璐�' },
+      ]
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/coupon',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open(title, target, active, isPlatform=true) {
+      this.title = title
+      this.visible = true
+      this.activeName = active
+      this.isPlatform = isPlatform
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.type = '0'
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        if (this.form.shopId) {
+          this.type = 0
+          this.shops = [{ label: target.shopName, id: this.form.shopId }]
+        } else {
+          this.type = 1
+          this.orgs = [{ label: target.orgName, id: this.form.orgId }]
+        }
+      })
+    },
+    handleClick() {}
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.underway {
+  color: rgb(233, 165, 80)
+}
+.complete {
+  color: #ccc;
+}
+
+.first {
+  ::v-deep .el-timeline-item__node {
+    background-color: #fff !important;
+    width: 8px !important;
+    height: 8px !important;
+    transform: translateX(-3px);
+    border: #216EEE solid 6px !important;
+  }
+}
+.kd-detail {
+  padding: 30px;
+  background-color: #f2f2f2;
+  .kd-status {
+    height: 30px;
+    line-height: 30px;
+    font-size: 20px;
+    font-weight: 500;
+    border-bottom: 1px solid #000;
+    margin-bottom: 20px;
+  }
+}
+.statistics {
+  text-align: right;
+  padding: 10px 5px;
+  font-size: 14px;
+  line-height: 24px;
+  :last-child {
+    color: rgb(232, 60,45);
+  }
+}
+</style>
diff --git a/admin/src/components/business/OperaOrderMarkWindow.vue b/admin/src/components/business/OperaOrderMarkWindow.vue
index 6a1d7bc..2d5691f 100644
--- a/admin/src/components/business/OperaOrderMarkWindow.vue
+++ b/admin/src/components/business/OperaOrderMarkWindow.vue
@@ -6,11 +6,11 @@
     :confirm-working="isWorking"
     @confirm="confirm"
   >
-    <el-form :model="form" ref="form" label-width="120px" label-suffix="锛�"  inline>
+    <el-form :model="form" ref="form" label-width="120px" label-suffix="锛�"  :rules="rules" inline>
       <el-form-item label="澶囨敞" prop="sysInfo">
-        <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 12}" v-model="form.sysInfo" placeholder="璇疯緭鍏ュ娉�" :maxlength="5" v-trim/>
+        <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 12}" v-model="form.sysInfo" placeholder="璇疯緭鍏ュ娉�" :maxlength="50" v-trim/>
       </el-form-item>
-      
+
     </el-form>
   </GlobalAlertWindow>
 </template>
@@ -29,32 +29,49 @@
       form: {
         id: null,
         sysInfo: ''
-        // isdeleted: '',
-        // name: '',
-        // info: '',
-        // type: '',
-        // module: '',
-        // parentId: '',
-        // sortnum: '',
-        // status: '',
-        // imgurl: ''
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {
+        sysInfo: [
+          { required: true, message: '璇疯緭鍏ヨ鍗曞娉ㄤ俊鎭�', tigger: 'blur' }
+        ]
       }
     }
   },
-  
+
   created () {
     this.config({
-      api: '/business/labels',
+      api: '/business/goodsorder',
       'field.id': 'id'
     })
-    
   },
-  
+  methods: {
+    confirm () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        this.isWorking = true
+        this.api.orderRemark(this.form)
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('鍙戣揣鎴愬姛')
+            this.$emit('success')
+          }).catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+        // 璋冪敤鏂板缓鎺ュ彛
+      })
+    }
+  }
+
 }
 </script>
 
 <style lang="scss" scoped>
 @import "@/assets/style/alertstyle.scss";
-
 
 </style>
diff --git a/admin/src/components/business/OperaShipmentsWindow.vue b/admin/src/components/business/OperaShipmentsWindow.vue
index 73ef388..fa018c0 100644
--- a/admin/src/components/business/OperaShipmentsWindow.vue
+++ b/admin/src/components/business/OperaShipmentsWindow.vue
@@ -7,7 +7,7 @@
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�"  inline>
-      <div class="tips-style">鎮ㄧ湡鍦ㄩ拡瀵硅鍗曪細<span>{{ form.code }} </span>杩涜鍙戣揣</div>
+      <p class="tip-warn" style="margin: 30px;"><i class="el-icon-warning"></i>鎿嶄綔璇存槑锛氭偍姝e湪閽堝璁㈠崟锛�<span class="red">{{ form.code }} </span>杩涜{{ form.status==2?'蹇�掑彉鏇�':'鍙戣揣' }}鎿嶄綔锛�</p>
       <el-form-item label="蹇�掑叕鍙�" prop="kdId">
         <el-select
           v-model="form.kdId"
@@ -15,16 +15,16 @@
           clearable
           placeholder="璇烽�夋嫨蹇�掑叕鍙�"
         >
-          <el-option v-for="item in kd" :key="item.id" :value="item.id" :label="item.label" />
+          <el-option v-for="item in kd" :key="item.id" :value="item.id" :label="item.name" />
         </el-select>
       </el-form-item>
       <el-form-item label="蹇�掑崟鍙�" prop="kdCode">
-        <el-input v-model="form.kdCode" placeholder="璇疯緭鍏ュ揩閫掑崟鍙�" :maxlength="5" v-trim/>
+        <el-input v-model="form.kdCode" placeholder="璇疯緭鍏ュ揩閫掑崟鍙�"   v-trim/>
       </el-form-item>
       <el-form-item label="鍙戣揣澶囨敞" prop="kdInfo">
-        <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 12}" v-model="form.kdInfo" placeholder="璇疯緭鍏ュ彂璐у娉�" :maxlength="5" v-trim/>
+        <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 12}" v-model="form.kdInfo" placeholder="璇疯緭鍏ュ彂璐у娉�"   v-trim/>
       </el-form-item>
-      
+
     </el-form>
   </GlobalAlertWindow>
 </template>
@@ -32,7 +32,7 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
-import { fetchList as kdList } from '@/api/business/labels'
+import {orderSendOutGoods} from '@/api/business/goodsorder'
 export default {
   name: 'OperaShipmentsWindow',
   extends: BaseOpera,
@@ -44,56 +44,62 @@
       form: {
         id: null,
         code: '',
+        status: '',
         kdId: '',
         kdInfo: '',
         kdCode: '',
-        // isdeleted: '',
-        // name: '',
-        // info: '',
-        // type: '',
-        // module: '',
-        // parentId: '',
-        // sortnum: '',
-        // status: '',
-        // imgurl: ''
+        kdName: ''
       },
       kd: [],
       // 楠岃瘉瑙勫垯
       rules: {
         kdId: [
-          { required: true, message: '璇烽�夋嫨蹇�掑叕鍙�', tigger: 'change' }
+          { required: true, message: '璇烽�夋嫨蹇�掑叕鍙�' }
         ],
         kdCode: [
-          { required: true, message: '璇疯緭鍏ュ揩閫掑崟鍙�', tigger: 'blur' }
+          { required: true, message: '璇疯緭鍏ュ揩閫掑崟鍙�' }
         ]
       }
     }
   },
-  
+
   created () {
     this.config({
       api: '/business/labels',
       'field.id': 'id'
     })
   },
-  mounted() {
-    kdList({
-      capacity: 999,
-      model: {
-        type: 3 //蹇��
-      }
-    })
+  mounted () {
+    this.api.findAll({ status: 0, type: 17 })
       .then(res => {
-        this.kd = res.records
+        this.kd = res
       })
   },
   methods: {
     // 涓婁紶鍥剧墖
-    uploadAvatarSuccess(file) {
-      this.form.imgurl = file.imgurl;
-      this.form.imgurlfull = file.imgurlfull;
-    },
-  },
+    confirm () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        this.isWorking = true
+        var kd = this.kd.find(item => item.id === this.form.kdId)
+        this.form.kdName = kd.name
+        orderSendOutGoods(this.form)
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('娣诲姞鎴愬姛')
+            this.$emit('success')
+          }).catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+        // 璋冪敤鏂板缓鎺ュ彛
+      })
+    }
+  }
 }
 </script>
 
diff --git a/admin/src/components/common/GlobalAlertWindow.vue b/admin/src/components/common/GlobalAlertWindow.vue
index 6087fb0..ca81240 100644
--- a/admin/src/components/common/GlobalAlertWindow.vue
+++ b/admin/src/components/common/GlobalAlertWindow.vue
@@ -6,6 +6,7 @@
     :with-header="true"
     :width="width"
     :close-on-press-escape="false"
+    :close-on-click-modal="false"
     :wrapper-closable="false"
     :append-to-body="true"
     @close="close"
diff --git a/admin/src/components/common/UploadImage.vue b/admin/src/components/common/UploadImage.vue
index 2fc87b3..2e4f5e5 100644
--- a/admin/src/components/common/UploadImage.vue
+++ b/admin/src/components/common/UploadImage.vue
@@ -83,7 +83,6 @@
             this.srcList.push(item.url)
           })
         }
-
         console.log("==================srcList=",this.srcList);
       }
 
@@ -129,9 +128,9 @@
       console.log(this.fileList);
       let tempIndex = this.realList.findIndex(item => item.fileurl === file.fileurl)
       // debugger
-      this.realList.splice(tempIndex, 1)
+      // this.realList.splice(tempIndex, 1)
       this.fileList.splice(tempIndex, 1)
-      this.srcList.splice(tempIndex, 1)
+      // this.srcList.splice(tempIndex, 1)
 
     },
   },
diff --git a/admin/src/views/business/goodsorder.vue b/admin/src/views/business/goodsorder.vue
index 9ac3915..ac49b58 100644
--- a/admin/src/views/business/goodsorder.vue
+++ b/admin/src/views/business/goodsorder.vue
@@ -4,148 +4,67 @@
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
       <!-- 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣 -->
       <el-tabs v-model="status" @tab-click="handleClick">
-        <el-tab-pane label="鍏ㄩ儴璁㈠崟" name="10"></el-tab-pane>
-        <el-tab-pane label="寰呮敮浠�" name="0"></el-tab-pane>
-        <el-tab-pane label="寰呭彂璐�" name="1"></el-tab-pane>
-        <el-tab-pane label="寰呮敹璐�" name="2"></el-tab-pane>
-        <el-tab-pane label="浜ゆ槗瀹屾垚" name="3"></el-tab-pane>
-        <el-tab-pane label="浜ゆ槗鍏抽棴" name="4"></el-tab-pane>
-        <el-tab-pane label="鍥炴敹绔�" name="9"></el-tab-pane>
+        <el-tab-pane
+            v-for="tab in statusList"
+            :key="tab.name"
+            :name="tab.name"
+        >
+          <template #label>
+            <span>{{ tab.label }}</span>
+            <el-badge
+                v-if="tab.count > 0"
+                :value="tab.count"
+                class="tab-badge"
+            />
+          </template>
+        </el-tab-pane>
       </el-tabs>
       <el-form-item label="璁㈠崟缂栧彿" prop="code">
-        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" @keypress.enter.native="search"></el-input>
+        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" type="number" clearable @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="鐢ㄦ埛淇℃伅" prop="information">
-        <el-input v-model="searchForm.information" placeholder="璇疯緭鍏ユ樀绉�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鏀惰揣浜�" prop="nickName">
+        <el-input v-model="searchForm.nickName" placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" clearable  @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="璁㈠崟鏃堕棿" prop="createDate">
-        <el-date-picker
-          v-model="createDate"
-          type="daterange"
-          value-format="yyyy-MM-dd"
-          start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡"
-          @change="selectDate"
-        />
-      </el-form-item>
-      <el-form-item label="鍌彂璐�" prop="isSoon">
-        <el-select
-          v-model="searchForm.isSoon"
-          placeholder="璇烽�夋嫨鏄惁鍌彂璐�"
-          @change="search"
-        >
-          <el-option :key="0" :value="0" label="鍚�"></el-option>
-          <el-option :key="1" :value="1" label="鏄�"></el-option>
+      <el-form-item label="鍙栬揣鏂瑰紡" prop="receiveType">
+        <el-select v-model="searchForm.receiveType"    placeholder="璇烽�夋嫨鍙栬揣鏂瑰紡" clearable   @change="search" >
+          <el-option :key="0" :value="0" label="蹇�掗厤閫�"></el-option>
+          <el-option :key="1" :value="1" label="鑷彁"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="褰掑睘缁忛攢鍟�" prop="shopName">
+        <el-input v-model="searchForm.shopName" placeholder="璇疯緭鍏ョ粡閿�鍟嗗悕绉�" clearable @keypress.enter.native="search"></el-input>
+      </el-form-item>
       <el-form-item label="鏀粯鍗曞彿" prop="payOrderId">
-        <el-input v-model="searchForm.payOrderId" placeholder="璇疯緭鍏ユ敮浠樺崟鍙�" @keypress.enter.native="search"></el-input>
+        <el-input v-model="searchForm.payOrderId" placeholder="璇疯緭鍏ユ敮浠樺崟鍙�" clearable  @keypress.enter.native="search"></el-input>
       </el-form-item>
-
-
-      <!-- <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="searchForm.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="searchForm.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="璁㈠崟缂栧彿" prop="code">
-        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="璁㈠崟瀹炰粯浠锋牸锛堝厓/鍜栬眴锛�" prop="price">
-        <el-input v-model="searchForm.price" placeholder="璇疯緭鍏ヨ鍗曞疄浠樹环鏍硷紙鍏�/鍜栬眴锛�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍟嗗搧鎬绘暟閲�" prop="goodsNum">
-        <el-input v-model="searchForm.goodsNum" placeholder="璇疯緭鍏ュ晢鍝佹�绘暟閲�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="涓嬪崟浜虹紪鐮侊紙鍏宠仈member琛級" prop="memberId">
-        <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ笅鍗曚汉缂栫爜锛堝叧鑱攎ember琛級" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀惰揣鍦板潃缂栫爜锛堝叧鑱攁ddr琛級" prop="addrId">
-        <el-input v-model="searchForm.addrId" placeholder="璇疯緭鍏ユ敹璐у湴鍧�缂栫爜锛堝叧鑱攁ddr琛級" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀惰揣浜哄鍚�" prop="linkname">
-        <el-input v-model="searchForm.linkname" placeholder="璇疯緭鍏ユ敹璐т汉濮撳悕" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀惰揣浜虹數璇�" prop="linkphone">
-        <el-input v-model="searchForm.linkphone" placeholder="璇疯緭鍏ユ敹璐т汉鐢佃瘽" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀惰揣鍦板潃" prop="linkaddr">
-        <el-input v-model="searchForm.linkaddr" placeholder="璇疯緭鍏ユ敹璐у湴鍧�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣" prop="status">
-        <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏄惁宸茶瘎浠� 0鏈瘎浠� 1宸茶瘎浠�" prop="isComment">
-        <el-input v-model="searchForm.isComment" placeholder="璇疯緭鍏ユ槸鍚﹀凡璇勪环 0鏈瘎浠� 1宸茶瘎浠�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀粯鐘舵�� 0鏈敮浠� 1宸叉敮浠�" prop="payStatus">
-        <el-input v-model="searchForm.payStatus" placeholder="璇疯緭鍏ユ敮浠樼姸鎬� 0鏈敮浠� 1宸叉敮浠�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏀粯鏃堕棿" prop="payDate">
-        <el-date-picker v-model="searchForm.payDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ敮浠樻椂闂�" @change="search"/>
-      </el-form-item>
-      
-      <el-form-item label="鏀粯鏂瑰紡 0寰俊鏀粯 1绾夸笅鏀粯" prop="payMethod">
-        <el-input v-model="searchForm.payMethod" placeholder="璇疯緭鍏ユ敮浠樻柟寮� 0寰俊鏀粯 1绾夸笅鏀粯" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="蹇�掑崟鍙�" prop="kdCode">
-        <el-input v-model="searchForm.kdCode" placeholder="璇疯緭鍏ュ揩閫掑崟鍙�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="蹇�掑悕绉�" prop="kdName">
-        <el-input v-model="searchForm.kdName" placeholder="璇疯緭鍏ュ揩閫掑悕绉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="蹇�掔紪鐮侊紙鍏宠仈labels琛級" prop="kdId">
-        <el-input v-model="searchForm.kdId" placeholder="璇疯緭鍏ュ揩閫掔紪鐮侊紙鍏宠仈labels琛級" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鐢ㄦ埛澶囨敞" prop="memberInfo">
-        <el-input v-model="searchForm.memberInfo" placeholder="璇疯緭鍏ョ敤鎴峰娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="骞冲彴澶囨敞" prop="sysInfo">
-        <el-input v-model="searchForm.sysInfo" placeholder="璇疯緭鍏ュ钩鍙板娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙栨秷鏃堕棿" prop="cancelDate">
-        <el-date-picker v-model="searchForm.cancelDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ彇娑堟椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鍙栨秷浜�" prop="cancelUser">
-        <el-input v-model="searchForm.cancelUser" placeholder="璇疯緭鍏ュ彇娑堜汉" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙栨秷澶囨敞" prop="cancelInfo">
-        <el-input v-model="searchForm.cancelInfo" placeholder="璇疯緭鍏ュ彇娑堝娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙戣揣鏃堕棿" prop="kdDate">
-        <el-date-picker v-model="searchForm.kdDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ彂璐ф椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="鍙戣揣澶囨敞" prop="kdInfo">
-        <el-input v-model="searchForm.kdInfo" placeholder="璇疯緭鍏ュ彂璐у娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍙戣揣浜虹紪鐮侊紙鍏宠仈system_user琛級" prop="kdUser">
-        <el-input v-model="searchForm.kdUser" placeholder="璇疯緭鍏ュ彂璐т汉缂栫爜锛堝叧鑱攕ystem_user琛級" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="瀹屾垚鏃堕棿" prop="doneDate">
-        <el-date-picker v-model="searchForm.doneDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ畬鎴愭椂闂�" @change="search"/>
-      </el-form-item>
-      <el-form-item label="瀹屾垚澶囨敞" prop="doneInfo">
-        <el-input v-model="searchForm.doneInfo" placeholder="璇疯緭鍏ュ畬鎴愬娉�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鏄惁宸插敭鍚� 0鍚� 1鏄�" prop="isAftersale">
-        <el-input v-model="searchForm.isAftersale" placeholder="璇疯緭鍏ユ槸鍚﹀凡鍞悗 0鍚� 1鏄�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="璁㈠崟绫诲瀷 0骞冲彴鍟嗗煄 1鍜栬眴鍟嗗煄 2鍜栧暋璁″垝缂栫爜" prop="type">
-        <el-input v-model="searchForm.type" placeholder="璇疯緭鍏ヨ鍗曠被鍨� 0骞冲彴鍟嗗煄 1鍜栬眴鍟嗗煄 2鍜栧暋璁″垝缂栫爜" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浼樻儬閲戦" prop="couponPrice">
-        <el-input v-model="searchForm.couponPrice" placeholder="璇疯緭鍏ヤ紭鎯犻噾棰�" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="浼樻儬鍒哥紪鐮侊紙鍏宠仈MEMBER_COUPON琛級" prop="couponId">
-        <el-input v-model="searchForm.couponId" placeholder="璇疯緭鍏ヤ紭鎯犲埜缂栫爜锛堝叧鑱擬EMBER_COUPON琛級" @keypress.enter.native="search"></el-input>
-      </el-form-item>
-      <el-form-item label="鍜栧暋璁″垝璁㈠崟褰㈠紡 0鏂板 1寤堕暱" prop="planOrderType">
-        <el-input v-model="searchForm.planOrderType" placeholder="璇疯緭鍏ュ挅鍟¤鍒掕鍗曞舰寮� 0鏂板 1寤堕暱" @keypress.enter.native="search"></el-input>
-      </el-form-item> -->
+      <div class="date-style" style="display: inline">
+        <el-form-item label="璁㈠崟鏃堕棿" prop="starttime" >
+          <el-date-picker
+              style="width: 160px"
+              clearable
+              @change="search"
+              v-model="searchForm.starttime"
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              format="yyyy-MM-dd HH:mm:ss"
+              range-separator="鑷�"
+              placeholder="寮�濮嬫椂闂�"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="-" label-width="10px" prop="endtime" >
+          <el-date-picker
+              style="width: 160px"
+              clearable
+              v-model="searchForm.endtime"
+              type="datetime"
+              @change="search"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              format="yyyy-MM-dd HH:mm:ss"
+              range-separator="鑷�"
+              placeholder="鎴鏃堕棿"
+          ></el-date-picker>
+        </el-form-item>
+      </div>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button type="primary" :loading="isWorking.export" v-permissions="['business:goodsorder:exportExcel']" @click="exportExcel">瀵煎嚭</el-button>
@@ -154,78 +73,72 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <div v-for="item in list" :key="id" class="order-detail">
-        <div class="order-title-message">
-          <div class="base-message">
-            <div class="date">{{ item.createDate }}</div>
-            <div>璁㈠崟缂栧彿锛�<span>{{ item.code }}</span></div>
+      <div v-for="item in tableData.list" :key="'id_'+item.id" class="order-detail">
+        <div class="order-title-message" >
+          <div class="base-message" >
+            <div class="date" >璁㈠崟鏃堕棿锛歿{ item.createDate }}</div>
+            <div class="date" >璁㈠崟缂栧彿锛�<span  @click="$refs.operaGoodsOrderDetail.open('璁㈠崟璇︽儏', item, 'first')" style="cursor: pointer;">{{ item.code }}</span></div>
+            <div v-if="item.distributionShopId">缁忛攢鍟嗭細{{ item.shopName || ''}}</div>
           </div>
-          <div class="soon-style">{{ `鐢ㄦ埛浜�${item.soonTime}鍌彂璐 }}</div>
+          <div>
+            <span v-if="item.status ==0" class="orange">寰呮敮浠�</span>
+            <span  v-if="item.status ==1" class="orange">{{item.receiveType==1?'寰呰嚜鎻�':'寰呭彂璐�'}}</span>
+            <span  v-if="item.status ==2" class="orange">寰呮敹璐�</span>
+            <span  v-if="item.status ==3" class="grey">浜ゆ槗瀹屾垚</span>
+            <span  v-if="item.status ==4" class="grey">宸插叧闂�</span>
+            <span  v-if="item.status ==6" class="grey">宸查��娆�</span>
+          </div>
         </div>
         <div class="detail-message">
           <div class="goods-message right-border">
-            <div class="goods-base-message">
-              <el-image
-                style="width: 90px; height: 90px; border-radius: 2px;"
-                :src="item.imgurl"
-                :preview-src-list="[item.imgurl]"
-              ></el-image>
-              <div class="message">
-                <div>{{ item.goodsName }}</div>
-                <div class="attr">瑙勬牸锛歿{ item.attr }}</div>
-                <div class="attr">浠锋牸锛歿{ item.price }}</div>
+            <div  class="goods-base-message" :key="item.id+'_'+goods.id" v-for="goods in item.goodsorderDetailList">
+              <div style="width: 60px; height: 60px;">
+                <el-image
+                    style="width: 60px; height: 60px; border-radius: 2px;"
+                    :src="goods.imgurl"
+                    :preview-src-list="[goods.imgurl]"
+                ></el-image>
+              </div>
+              <div class="message" style="">
+                <div class="name">{{ goods.name }}</div>
+                <div class="attr">锟{ goods.goodsNum }}</div>
               </div>
             </div>
-            <div v-if="item.memberInfo" class="mark">鐢ㄦ埛澶囨敞锛歿{ item.memberInfo }}</div>
-            <div v-if="item.sysInfo" class="mark">骞冲彴澶囨敞锛歿{ item.sysInfo }}</div>
+            <div class="mark" v-if="item.sysInfo&& item.sysInfo.length" >澶囨敞锛歿{item.sysInfo}}</div>
           </div>
           <div class="member-message right-border">
-            <div>{{ item.linkname }}</div>
-            <div>{{ item.linkphone }}</div>
+            <div class="el-icon-user" style="padding: 5px 5px;">{{ item.linkname }}</div>
+            <div class="el-icon-phone-outline" style="padding: 10px 5px;color: #777;font-size: 13px;">{{ item.linkphone }}</div>
           </div>
-          <div class="address-message right-border">{{ item.linkaddr }}</div>
-          <div class="price-message right-border">锟{ item.price }}</div>
-          <div class="status-message right-border">
-            <!-- // 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣 -->
-            <div :class="[0,1,2,5].indexOf(item.status) != -1 ? 'underway' : 'complete'">
-              {{ 
-                item.status==0 ? '寰呮敮浠�'
-                  : item.status==1 ? '寰呭彂璐�'
-                    : item.status==2 ? '寰呮敹璐�'
-                      : item.status==3 ? '浜ゆ槗瀹屾垚'
-                        : item.status==4 ? '宸插叧闂�' : '閮ㄥ垎鍙戣揣'
-              }}
-            </div>
-            <el-button style="color: #666; font-size: 16px;"  type="text" @click="$refs.operaGoodsOrderDetail.open('璁㈠崟璇︽儏', item, 'first')">璁㈠崟璇︽儏</el-button>
-            <div></div>
-            <el-button style="color: #666; font-size: 16px;"  type="text" @click="$refs.operaGoodsOrderDetail.open('鐗╂祦璇︽儏', item, 'second')">鐗╂祦璇︽儏</el-button>
+          <div class="address-message right-border right-border" style="padding-top: 15px;" >
+            <div class="underway el-icon-sell" >{{item.receiveType==1?'鍒板簵鑷彁':'蹇�掗厤閫�'}} </div>
+            <div class=" el-icon-add-location" v-if="item.receiveType!=1">{{ item.linkaddr }}</div>
+          </div>
+          <div class="price-message right-border">
+            <div class="underway" >璁㈠崟鎬讳环锛氾骏{{ (item.totalPrice||0).toFixed(2) }}</div>
+            <div class="price-info">鍟嗗搧鎬讳环锛氾骏{{  ((item.totalPrice||0)-(item.price || 0)).toFixed(2)}}</div>
+            <div class="price-info">鐗╂祦杩愯垂锛氾骏{{  (item.mailPrice || 0).toFixed(2)}}</div>
+            <div class="price-info">绉垎鎶垫墸锛�-锟{  (item.integral || 0 ).toFixed(2)}}</div>
+            <div class="price-info">浼樻儬閲戦锛�-锟{  (item.couponPrice).toFixed(2) }}</div>
+            <div class="price-info">瀹炰粯閲戦锛�<span class="red" style="font-weight: 600">锟{  (item.price).toFixed(2) }}</span></div>
           </div>
           <div class="action">
-            <el-button v-if="item.status==1" style="font-size: 16px; width: 80%;" type="primary" @click="$refs.operaShipmentsWindow.open('鍙戣揣', item)">鍙戣揣</el-button>
+            <el-button v-if="item.status==1 && item.receiveType!=1" style=" width: 80%;" type="primary" @click="$refs.operaShipmentsWindow.open('鍙戣揣', item)">鍙戣揣</el-button>
             <div></div>
-            <el-button v-if="item.status<2" style="color: #666; font-size: 16px;"  type="text" @click="cancelOrder(item)">鍙栨秷璁㈠崟</el-button>
+            <el-button v-if="item.status == 0" style="color: red; "  type="text" @click="cancelOrder(item)">鍙栨秷璁㈠崟</el-button>
             <div></div>
-            <el-button style="color: #666; font-size: 16px;" type="text" @click="$refs.operaOrderMarkWindow.open(item.sysInfo.length?'缂栬緫澶囨敞':'娣诲姞澶囨敞', item)">澶囨敞</el-button>
+            <el-button v-if="item.status == 3" style="color: red "  type="text" @click="cancelOrder(item)">璁㈠崟閫�娆�</el-button>
+            <div></div>
+            <el-button v-if="item.status==2 && item.receiveType!=1" style="color: #666; " type="text"  @click="$refs.operaShipmentsWindow.open('蹇�掍俊鎭彉鏇�', item)">蹇�掑彉鏇�</el-button>
+            <div></div>
+            <el-button style="color: #666; " type="text" @click="$refs.operaOrderMarkWindow.open(item.sysInfo && item.sysInfo.length?'缂栬緫澶囨敞':'娣诲姞澶囨敞', item)">
+              {{ item.sysInfo && item.sysInfo.length?'淇敼澶囨敞':'娣诲姞澶囨敞' }}</el-button>
+            <div></div>
+            <el-button style="color: #216EEE; "  type="text" @click="$refs.operaGoodsOrderDetail.open('璁㈠崟璇︽儏', item, 'first')">鏌ョ湅璇︽儏</el-button>
           </div>
         </div>
       </div>
-      <!-- <el-table
-        v-loading="isWorking.search"
-        :data="tableData.list"
-        stripe
-      >
-        
-        <el-table-column
-          v-if="containPermissions(['business:goodsorder:update', 'business:goodsorder:delete'])"
-          label="鎿嶄綔"
-          min-width="120"
-          fixed="right"
-        >
-          <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaGoodsorderWindow.open('缂栬緫鍟嗗搧璁㈠崟淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:goodsorder:update']">缂栬緫</el-button>
-          </template>
-        </el-table-column>
-      </el-table> -->
+      <div style="width: 100%;text-align: center;padding: 50px;color: #999;font-size: 12px;" v-if="!tableData.pagination ||!tableData.pagination.total">鏆傛棤鏁版嵁</div>
       <pagination
         @size-change="handleSizeChange"
         @current-change="handlePageChange"
@@ -234,7 +147,7 @@
       </pagination>
     </template>
     <!-- 鏂板缓/淇敼 -->
-    <OperaShipmentsWindow ref="operaShipmentsWindow" @success="handlePageChange"/>
+    <OperaShipmentsWindow ref="operaShipmentsWindow" @success="search"/>
     <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="handlePageChange"/>
     <OperaGoodsOrderDetail ref="operaGoodsOrderDetail"/>
   </TableLayout>
@@ -256,76 +169,25 @@
       status: '10',
       createDate: [],
       id: '',
+      statusList: [{ name: '10', label: '鍏ㄩ儴璁㈠崟', count: 0 },
+        { name: '0', label: '寰呮敮浠�', count: 0 },
+        { name: '1', label: '寰呭彂璐�/寰呰嚜鎻�', count: 0 },
+        { name: '2', label: '寰呮敹璐�', count: 0 },
+        { name: '3', label: '浜ゆ槗瀹屾垚', count: 0 },
+        { name: '6', label: '宸查��娆�', count: 0 },
+        { name: '4', label: '浜ゆ槗鍏抽棴', count: 0 }],
       // 鎼滅储
       searchForm: {
         id: '',
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
-        remark: '',
+        receiveType: '',
+        shopName: '',
+        goodsName: '',
         code: '',
-        price: '',
-        goodsNum: '',
-        memberId: '',
-        addrId: '',
-        linkname: '',
-        linkphone: '',
-        linkaddr: '',
         status: '',
-        isComment: '',
-        payStatus: '',
-        payDate: '',
-        payOrderId: '',
-        payMethod: '',
-        kdCode: '',
-        kdName: '',
-        kdId: '',
-        memberInfo: '',
-        sysInfo: '',
-        cancelDate: '',
-        cancelUser: '',
-        cancelInfo: '',
-        kdDate: '',
-        kdInfo: '',
-        kdUser: '',
-        doneDate: '',
-        doneInfo: '',
-        isAftersale: '',
-        type: '0', // 0骞冲彴鍟嗗煄 1鍜栬眴鍟嗗煄 2鍜栧暋璁″垝
-        couponPrice: '',
-        couponId: '',
-        planOrderType: ''
+        nickName: '',
+        starttime: null,
+        enttime: null
       },
-      list: [
-        {
-          id: '1',
-          code: '256302564258',
-          payOrderId: '256302564258',
-          createDate: '2022-11-01 22:30:43',
-          payDate: '2022-11-01 22:30:59',
-          soonTime: '2022-11-03 22:30:43',
-          completeDate: '2022-11-05 22:30:43',
-          imgurl: '',
-          goodsName: '鍜栧暋鏉�',
-          attr: '鐧借壊锛涘叾瀹冭鏍煎唴瀹癸紱 10L',
-          memberInfo: '杩欓噷鏄敤鎴峰娉�',
-          sysInfo: '杩欓噷鏄钩鍙板娉�',
-          linkname: '鏉庢��鑻�',
-          linkphone: '18055151023',
-          linkaddr: '鍥涘窛鐪佹垚閮藉競閲戠墰鍖猴紝閲戞硥琛楅亾涓捣鍥介檯绀惧尯钃濆哺琛�98鍙锋閮′竴鏈�5-2-504',
-          price: '2333',
-          status: 1, 
-          kdCode: 'SF01021213',
-          kdDate: '2022-11-03 23:30:43',
-          kdId: 'KD21312',
-          kdInfo: '杩欐槸鍙戣揣澶囨敞',
-          kdName: '椤轰赴蹇��',
-          kdUser: '00190',
-          
-        }
-      ]
     }
   },
   created () {
@@ -338,56 +200,87 @@
     this.search()
   },
   methods: {
-    selectDate(v) {
+    handlePageChange (pageIndex) {
+      this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
+      this.isWorking.search = true
+      this.api.fetchList({
+        page: this.tableData.pagination.pageIndex,
+        capacity: this.tableData.pagination.pageSize,
+        model: this.searchForm, // 閿�鍞ā寮忓彉鏇�
+        sorts: this.tableData.sorts
+      })
+        .then(data => {
+          this.tableData.list = data.records || []
+          this.tableData.pagination.total = data.total || 0
+          if (this.tableData.pagination.pageIndex === 1) {
+            var totalData = data.countData || {}
+            this.statusList[1].count = totalData.waitPayNum || 0
+            this.statusList[2].count = totalData.waitKdNum || 0
+            this.statusList[3].count = totalData.waitDoneNum || 0
+          }
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.search = false
+        })
+    },
+    selectDate (v) {
       this.searchForm.startDate = v[0]
       this.searchForm.endDate = v[1]
       this.search()
     },
     reset () {
       this.createDate = []
-      this.searchForm.startDate = ''
-      this.searchForm.endDate = ''
+      this.searchForm.starttime = ''
+      this.searchForm.enttime = ''
       this.$refs.searchForm.resetFields()
       this.search()
     },
-    handleClick(table, val) {
-      this.$refs.searchForm.resetFields()
-      if (this.status==9) {
-        this.searchForm.isdeleted=1
-        this.searchForm.status=''
-      } else if (this.status==10) {
-        this.searchForm.status=''
+    handleClick (table, val) {
+      // this.$refs.searchForm.resetFields()
+      if (this.status == 9) {
+        this.searchForm.isdeleted = 1
+        this.searchForm.status = ''
+      } else if (this.status == 10) {
+        this.searchForm.status = ''
       } else {
-        this.searchForm.isdeleted=0
-        this.searchForm.status=this.status
+        this.searchForm.isdeleted = 0
+        this.searchForm.status = this.status
       }
       this.search()
     },
-    cancelOrder(item) {
+    cancelOrder (item) {
       this.$dialog.cancelOrder(`纭畾鍙栨秷璁㈠崟锛�${item.code}锛焋)
         .then(() => {
 
         })
     }
-  },
+  }
 }
 </script>
 
 <style lang="scss" scoped>
+.tab-badge{
+  color: green;
+}
 .order-detail {
+  font-size: 14px;
+  color: #666;
+  margin-bottom: 10px;
   .order-title-message {
     display: flex;
     justify-content: space-between;
-    padding: 8px;
+    padding: 10px 20px;
     font-weight: 500;
     box-sizing: border-box;
     background-color: #f2f2f2;
     .base-message {
       display: flex;
-      font-size: 14px;
-      color: #999;
+      color: #333;
       .date {
-        width: 150px;
+        width: auto;
         margin-right: 100px;
       }
       span {
@@ -412,50 +305,84 @@
       .goods-base-message {
         display: flex;
         margin-bottom: 10px;
+        padding-bottom: 10px;
+        border-bottom: 1px solid #f2f2f2;
         .message {
+          flex-basis: content-box;
+          display: flex;width: 100%;
           margin-left: 10px;
-          font-size: 16px;
-          .attr {
-            font-size: 13px;
+          .name {
+            flex: 3;
+            display: -webkit-box;
+            -webkit-box-orient: vertical;
+            -webkit-line-clamp: 2;
+            overflow: hidden;
+            max-height: 40px;
+          }
+          .attr{
+            padding-top: 10px;
+            text-align: right;
+            flex: 1;
+            padding-right: 30px;
+            font-size: 12px;
+            color: #666;
           }
         }
       }
       .mark {
         margin-bottom: 5px;
-        color: rgb(235, 80, 50);
         font-size: 13px;
+        color: rgb(235, 80, 50);
       }
     }
     .member-message {
       flex: 0.4;
-     
-      font-size: 14px;
-      :last-child {
-        margin-top: 5px;
-        font-size: 13px;
-      }
     }
     .address-message {
       flex: 0.6;
+      display: -webkit-box;
+      -webkit-box-orient: vertical;
+      overflow: hidden;
+      .underway {
+        display: block;
+        padding-bottom: 10px;
+        border-bottom: 1px solid #f2f2f2;
+        color: #71b247;
+        margin-bottom: 10px;
+      }
     }
     .price-message {
-      flex: 0.5;
-      font-size: 18px;
+      flex: 0.6;
       font-weight: 600;
-      text-align: center;
+      .underway {
+        padding-bottom: 10px;
+        border-bottom: 1px solid #f2f2f2;
+        color: rgb(233, 165, 80);
+        margin-bottom: 10px;
+      }
+      .price-info {
+        text-align: left;
+        width: 100%;
+        font-weight: normal;
+        color: #777;
+        font-size: 13px;
+      }
     }
     .status-message {
       flex: 0.4;
       text-align: center;
       .underway {
+        padding-bottom: 10px;
+        border-bottom: 1px solid #f2f2f2;
         color: rgb(233, 165, 80)
       }
+
       .complete {
         color: #ccc;
       }
     }
     .action {
-      flex: 0.6;
+      flex: 0.5;
       box-sizing: border-box;
       padding: 10px;
       text-align: center;
diff --git a/admin/src/views/business/labelsExpress.vue b/admin/src/views/business/labelsExpress.vue
index 3f59d51..bf1ae5c 100644
--- a/admin/src/views/business/labelsExpress.vue
+++ b/admin/src/views/business/labelsExpress.vue
@@ -68,7 +68,6 @@
 import TableLayout from '@/layouts/TableLayout'
 import Pagination from '@/components/common/Pagination'
 import OperaLabelExpressWindow from '@/components/business/OperaLabelExpressWindow'
-import {updateStatusById} from "@/api/business/labels";
 export default {
   name: 'ProductLabel',
   extends: BaseTable,
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
index b334fb7..70ef54a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1201,6 +1201,7 @@
     public  enum UserActionType {
         CHANGE_SHOP(0, "缁忛攢鍟嗘洿鎹�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愮粡閿�鍟嗘洿鎹€��" ),
         CHANGE_SALETYPE(1, "缁忛攢鍟嗘洿鎹㈤攢鍞ā寮�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愰攢鍞ā寮忓彉鏇淬��" ),
+        CHANGE_ORDER_KD(2, "璁㈠崟蹇�掓洿鎹�","鐢便��${param1}銆戜簬銆�${param2}銆戯紝杩涜銆愯鍗曞揩閫掓洿鎹€��;${param3}" ),
         ;
 
         // 鎴愬憳鍙橀噺
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 3d630ef..08b8266 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -62,7 +62,7 @@
     @ExcelColumn(name="鑱旂郴浜哄湴鍧�" ,index =8 ,width = 10)
     private String linkaddr;
 
-    @ApiModelProperty(value = "璁㈠崟鎬讳环鏍�", example = "1")
+    @ApiModelProperty(value = "璁㈠崟鎬讳环鏍�(鍖呭惈杩愯垂)", example = "1")
     private BigDecimal totalPrice;
 
     @ApiModelProperty(value = "璁㈠崟瀹炰粯浠锋牸锛堝厓/鍜栬眴锛�", example = "1")
@@ -253,6 +253,15 @@
     @ApiModelProperty(value = "璁㈠崟鎬绘暟 ")
     @TableField(exist = false)
     private Long orderCount;
+    @ApiModelProperty(value = "寰呮敮浠樻�绘暟 ")
+    @TableField(exist = false)
+    private Integer waitPayNum;
+    @ApiModelProperty(value = "寰呭彂璐ф�绘暟 ")
+    @TableField(exist = false)
+    private Integer waitKdNum;
+    @ApiModelProperty(value = "寰呮敹璐ф�绘暟 ")
+    @TableField(exist = false)
+    private Integer waitDoneNum;
     @ApiModelProperty(value = "璁㈠崟鍟嗗搧鎬绘暟 ")
     @TableField(exist = false)
     private Long goodsCount;
@@ -271,5 +280,8 @@
     @ApiModelProperty(value = "鏃ユ湡 ")
     @TableField(exist = false)
     private String everyDay;
+    @ApiModelProperty(value = "缁忛攢鍟嗗悕绉� ")
+    @TableField(exist = false)
+    private String shopName;
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/GoodsorderDetail.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/GoodsorderDetail.java
index b9769aa..1501568 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/GoodsorderDetail.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/GoodsorderDetail.java
@@ -107,6 +107,7 @@
     private String lablesName;
 
 
+
     @ApiModelProperty(value = "鍟嗗搧涓诲浘")
     @TableField(exist = false)
     private String goodsImgurl;
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 0663bae..7634794 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -78,6 +78,8 @@
     @Autowired
     private GoodsorderMapper goodsorderMapper;
     @Autowired
+    private UserActionMapper userActionMapper;
+    @Autowired
     private ActivitySignMapper activitySignMapper;
     @Autowired
     private AftersaleMapper  aftersaleMapper;
@@ -240,22 +242,47 @@
     @Override
     public void orderSendOutGoods(Goodsorder goodsorder) {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-
+        if(StringUtils.isBlank(goodsorder.getKdCode()) ||StringUtils.isBlank(goodsorder.getKdName())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         Goodsorder query=goodsorderMapper.selectById(goodsorder.getId());
         if(query==null){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),ResponseStatus.DATA_EMPTY.getMessage());
         }
-        if(!Constants.equalsInteger(query.getStatus(),Constants.ONE)){
+        if(!Constants.equalsInteger(query.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())
+                && !Constants.equalsInteger(query.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆锛岃鍒锋柊椤甸潰锛�");
         }
-        goodsorder.setEditDate(new Date());
-        goodsorder.setEditor(user.getId());
-        goodsorder.setKdDate(new Date());
-        goodsorder.setKdUser(user.getId());
-        goodsorder.setStatus(Constants.OrderStatus.WAIT_RECEIVE.getKey());
-        goodsorderMapper.updateById(goodsorder);
+        if(!Constants.equalsInteger(query.getReceiveType(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ヨ鍗曟湁瀹㈡埛鍒板簵鑷彁锛屾棤闇�鍙戣揣鎿嶄綔锛�");
+        }
+        Goodsorder update = new Goodsorder();
+        update.setId(goodsorder.getId());
+        update.setKdName(goodsorder.getKdName());
+        update.setKdCode(goodsorder.getKdCode());
+        update.setKdInfo(goodsorder.getKdInfo());
+        update.setKdId(goodsorder.getKdId());
+        update.setEditDate(new Date());
+        update.setEditor(user.getId());
+        update.setKdDate(new Date());
+        update.setKdUser(user.getId());
+        update.setStatus(Constants.OrderStatus.WAIT_RECEIVE.getKey());
+        goodsorderMapper.updateById(update);
 
-        // TODO 鍙戦�佸井淇℃ā鏉挎秷鎭�
+        if(Constants.equalsInteger(query.getStatus(), Constants.OrderStatus.WAIT_RECEIVE.getKey())){
+            //濡傛灉鏄揩閫掑彉鏇�
+            UserActionServiceImpl.saveUserActionBiz(user,query.getId(),
+                    Constants.UserActionType.CHANGE_ORDER_KD,
+                    userActionMapper,
+                    update.getEditDate(),
+                    new String[]{user.getUsername(), DateUtil.getPlusTime2(update.getEditDate()),"澶囨敞锛�"+goodsorder.getKdInfo()},
+                    JSONObject.toJSONString(update) ,
+                    query.getKdName()+"(鍗曞彿锛�"+query.getKdCode()+")",
+                    goodsorder.getKdName()+"(鍗曞彿锛�"+goodsorder.getKdCode()+")");
+
+        }
+
+      /*  // TODO 鍙戦�佸井淇℃ā鏉挎秷鎭�
         Member member=memberMapper.selectById(query.getMemberId());
         MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>();
         queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
@@ -263,7 +290,7 @@
         queryWrapper.orderByDesc(GoodsorderDetail::getCreateDate);
         queryWrapper.last("limit 1");
         GoodsorderDetail goodsorderDetail=goodsorderDetailMapper.selectOne(queryWrapper);
-        SendWxMessage.orderSendNotice(goodsorder,goodsorderDetail!=null?goodsorderDetail.getName():"",member);
+        SendWxMessage.orderSendNotice(goodsorder,goodsorderDetail!=null?goodsorderDetail.getName():"",member);*/
     }
 
 
@@ -381,12 +408,14 @@
         if(Objects.nonNull(result)){
             MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>();
             queryWrapper.selectAll(GoodsorderDetail.class);
+            queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
             queryWrapper.selectAs(Labels::getName,GoodsorderDetail::getLablesName);
             queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
             queryWrapper.eq(GoodsorderDetail::getOrderId,result.getId());
             queryWrapper.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
             queryWrapper.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
             queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getCategoryId);
+            queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId);
             List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailMapper.selectList(queryWrapper);
             String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
 
@@ -426,82 +455,113 @@
         IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-
         queryWrapper.selectAll(Goodsorder.class);
-        queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName);
-        queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone);
-        queryWrapper.selectAs(Addr::getAddr,Goodsorder::getAddr);
-      //  queryWrapper.select("(select CREATE_DATE  from order_urge where ORDER_ID=t.id and ISDELETED=0 ORDER BY CREATE_DATE desc limit 1) as urgeCreateDate ");
-        queryWrapper.leftJoin(Member.class,Member::getId,Goodsorder::getMemberId);
-        queryWrapper.leftJoin(Addr.class,Addr::getMemberId,Member::getId);
-        queryWrapper.eq(Addr::getIsDefault,Constants.ONE);
-
-        queryWrapper.eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode());
-        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickName()),ms->ms.like(Goodsorder::getLinkname,pageWrap.getModel().getNickName())
-         .or().like(Goodsorder::getLinkphone,pageWrap.getModel().getNickName())
-        );
-        queryWrapper.ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime());
-        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime());
-
-        queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
+        queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
+        initPageQueryWrapper(queryWrapper,pageWrap);
         queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus());
-        queryWrapper.eq(pageWrap.getModel().getIsdeleted()==null,Goodsorder::getIsdeleted,Constants.ZERO);
         queryWrapper.orderByDesc(Goodsorder::getCreateDate);
 
         IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
 
-        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
-
+        List<Integer> idList = new ArrayList<>();
         for(Goodsorder model:result.getRecords()){
-            model.setResourcePath(path);
-            //璁㈠崟鎬婚噾棰濈瓑浜庡疄浠橀噾棰濆姞浼樻儬閲戦锛屽啀鍑忓幓閫�娆鹃噾棰�
-            BigDecimal sumMoney=new BigDecimal(0);
-            if(model.getPrice()!=null){
-                if(model.getIntegral()!=null){
-                    sumMoney=model.getPrice().add(model.getIntegral());
-                    if(Constants.equalsInteger(model.getIsAftersale(),Constants.ONE)&&model.getAftersaleMoney()!=null){
-                        sumMoney.subtract(model.getAftersaleMoney());
-                        model.setOrderMoneyCount(sumMoney);
-                    }else{
-                        model.setOrderMoneyCount(sumMoney);
-                    }
-                }else{
-                    model.setOrderMoneyCount(model.getPrice());
-                }
-            }else   if(model.getIntegral()!=null){
-                sumMoney=model.getIntegral();
+            idList.add(model.getId());
+        }
+        if(idList.size()>0){
+            dealOrderDetailsBiz(idList,result);//鏌ヨ璁㈠崟鏄庣粏
+        }
+        PageData<Goodsorder> rr =  PageData.from(result);
+        if(pageWrap.getPage() == 1){
+            //濡傛灉鏌ヨ绗竴椤碉紝鍋氭暟鎹粺璁�
+            rr.setCountData(dealCountOrderNum(pageWrap));
+        }
+        return rr;
+    }
+
+    private void initPageQueryWrapper(MPJLambdaWrapper<Goodsorder> queryWrapper, PageWrap<Goodsorder> pageWrap) {
+        queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId);
+        queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
+        queryWrapper.eq(pageWrap.getModel().getCode()!=null,Goodsorder::getCode,pageWrap.getModel().getCode());
+        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getShopName()),Shop::getName,pageWrap.getModel().getShopName());
+        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getNickName()),ms->ms.like(Goodsorder::getLinkname,pageWrap.getModel().getNickName())
+                .or().like(Goodsorder::getLinkphone,pageWrap.getModel().getNickName())
+        );
+        queryWrapper.ge(pageWrap.getModel().getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getModel().getStarttime());
+        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime());
+        queryWrapper.eq(pageWrap.getModel().getReceiveType()!=null,Goodsorder::getReceiveType,pageWrap.getModel().getReceiveType());
+        queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
+    }
+
+
+    private Goodsorder dealCountOrderNum( PageWrap<Goodsorder>  pageWrap) {
+        MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
+        initPageQueryWrapper(queryWrapper,pageWrap);
+        Goodsorder goodsorder = new Goodsorder();
+        queryWrapper.eq( Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey());
+        goodsorder.setWaitPayNum(goodsorderJoinMapper.selectJoinCount(queryWrapper));//寰呮敮浠�
+
+        queryWrapper = new MPJLambdaWrapper<>();
+        initPageQueryWrapper(queryWrapper,pageWrap);
+        queryWrapper.eq( Goodsorder::getStatus,Constants.OrderStatus.PAY_DONE.getKey());
+        goodsorder.setWaitKdNum(goodsorderJoinMapper.selectJoinCount(queryWrapper));//寰呭彂璐э紝寰呰嚜鎻�
+
+        queryWrapper = new MPJLambdaWrapper<>();
+        initPageQueryWrapper(queryWrapper,pageWrap);
+        queryWrapper.eq( Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey());
+        goodsorder.setWaitDoneNum(goodsorderJoinMapper.selectJoinCount(queryWrapper));//寰呮敹璐�
+        return goodsorder;
+
+    }
+
+    private void dealOrderDetailsBiz(List<Integer> idList, IPage<Goodsorder> result) {
+        MPJLambdaWrapper<GoodsorderDetail> queryGoods = new MPJLambdaWrapper<>();
+        queryGoods.selectAll(GoodsorderDetail.class);
+        queryGoods.selectAs(Goods::getImgurl,GoodsorderDetail::getGoodsImgurl);
+        queryGoods.selectAs(Labels::getName, GoodsorderDetail::getCategoryName);
+        queryGoods.select("ls.name as parentName ");
+
+        queryGoods.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
+        queryGoods.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
+
+        queryGoods.leftJoin(Labels.class, Labels::getId, Goods::getCategoryId);
+        queryGoods.leftJoin("labels ls on ls.id=t2.PARENT_CATEGORY_ID");
+        queryGoods.in(GoodsorderDetail::getOrderId,idList);
+        queryGoods.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
+        List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
+        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
+        for(Goodsorder model :result.getRecords()){
+            initOrderPrice(model);
+            model.setGoodsorderDetailList(getDetailListById(fullUrl,goodsorderDetailList,model.getId()));
+        }
+    }
+
+    private void initOrderPrice(Goodsorder model) {
+        //璁㈠崟鎬婚噾棰濈瓑浜庡疄浠橀噾棰濆姞浼樻儬閲戦锛屽啀鍑忓幓閫�娆鹃噾棰�
+        BigDecimal sumMoney=new BigDecimal(0);
+        if(model.getPrice()!=null){
+            if(model.getIntegral()!=null){
+                sumMoney=model.getPrice().add(model.getIntegral());
                 if(Constants.equalsInteger(model.getIsAftersale(),Constants.ONE)&&model.getAftersaleMoney()!=null){
                     sumMoney.subtract(model.getAftersaleMoney());
                     model.setOrderMoneyCount(sumMoney);
                 }else{
                     model.setOrderMoneyCount(sumMoney);
                 }
+            }else{
+                model.setOrderMoneyCount(model.getPrice());
             }
-
-
-            MPJLambdaWrapper<GoodsorderDetail> queryGoods = new MPJLambdaWrapper<>();
-            queryGoods.selectAll(GoodsorderDetail.class);
-            queryGoods.selectAs(Goods::getImgurl,GoodsorderDetail::getGoodsImgurl);
-            queryGoods.selectAs(Labels::getName, GoodsorderDetail::getCategoryName);
-            queryGoods.select("ls.name as parentName ");
-
-            queryGoods.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId);
-            queryGoods.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId);
-
-            queryGoods.leftJoin(Labels.class, Labels::getId, Goods::getCategoryId);
-            queryGoods.leftJoin("labels ls on ls.id=t2.PARENT_CATEGORY_ID");
-            queryGoods.eq(GoodsorderDetail::getOrderId,model.getId());
-            queryGoods.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO);
-           List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
-           goodsorderDetailList.stream().forEach(s ->{
-               if(StringUtils.isBlank(s.getImgurl())){
-                   s.setImgurl(s.getGoodsImgurl());
-               }
-           });
-           model.setGoodsorderDetailList(goodsorderDetailList);
+        }else   if(model.getIntegral()!=null){
+            sumMoney=model.getIntegral();
+            if(Constants.equalsInteger(model.getIsAftersale(),Constants.ONE)&&model.getAftersaleMoney()!=null){
+                sumMoney.subtract(model.getAftersaleMoney());
+                model.setOrderMoneyCount(sumMoney);
+            }else{
+                model.setOrderMoneyCount(sumMoney);
+            }
         }
-        return PageData.from(result);
     }
+
     @Override
     public PageData<Goodsorder> findPageShop(PageWrap<Goodsorder> pageWrap) {
         IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -533,8 +593,10 @@
                 w.like(GoodsorderDetail::getName,pageWrap.getModel().getGoodsName() ).or().eq(GoodsorderDetail::getGoodsSkuId,pageWrap.getModel().getGoodsName());
             } );
             List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(queryGoods);
+            String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
             for(Goodsorder model:result.getRecords()){
-                model.setGoodsorderDetailList(getDetailListById(goodsorderDetailList,model.getId()));
+                model.setGoodsorderDetailList(getDetailListById(fullUrl,goodsorderDetailList,model.getId()));
             }
             if(pageWrap.getPage() == 1 && pageWrap.getModel().getDistributionShopId()!=null){
                 //濡傛灉鏌ヨ绗竴椤碉紝鍋氱粡閿�鍟嗛攢鍞俊鎭粺璁′笟鍔℃煡璇�
@@ -569,11 +631,16 @@
         return rr;
     }
 
-    private List<GoodsorderDetail> getDetailListById(List<GoodsorderDetail> goodsorderDetailList, Integer id) {
+    private List<GoodsorderDetail> getDetailListById( String fullUrl ,List<GoodsorderDetail> goodsorderDetailList, Integer id) {
         List<GoodsorderDetail> list = new ArrayList<>();
-        for(GoodsorderDetail d : goodsorderDetailList){
-            if(Constants.equalsInteger(id,d.getOrderId())){
-                list.add(d);
+        if(goodsorderDetailList!=null && goodsorderDetailList.size()>0){
+            for(GoodsorderDetail d : goodsorderDetailList){
+                if(Constants.equalsInteger(id,d.getOrderId())){
+                    if(d.getImgurl()!=null){
+                        d.setImgurl(fullUrl+d.getImgurl());
+                    }
+                    list.add(d);
+                }
             }
         }
         return list;
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
index 61d1d72..4ee7ed1 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
@@ -90,7 +90,7 @@
                 info = info.replace("${param"+(i+1)+"}",params[i]);
             }
         }
-       UserAction userAction=new UserAction();
+        UserAction userAction=new UserAction();
         userAction.setIsdeleted(Constants.ZERO);
         userAction.setCreateDate(date);
         userAction.setCreator(user.getId());

--
Gitblit v1.9.3