Browse Source

2021.3.10

zhiquz@163.com 3 years ago
parent
commit
b879cdefce
4 changed files with 219 additions and 35 deletions
  1. 2 2
      .env.production
  2. 8 0
      src/api/order/list.js
  3. 55 19
      src/pages/order/examine.vue
  4. 154 14
      src/pages/order/list.vue

+ 2 - 2
.env.production

@@ -2,6 +2,6 @@
 ENV = 'production'
 
 # base api
-VUE_APP_BASE_API = '//api.admin.app.jiuweiyun.cn/api'
+#VUE_APP_BASE_API = '//api.admin.app.jiuweiyun.cn/api'
 
-#VUE_APP_BASE_API = '//api.appadmin.woaidakele.cn/api'
+VUE_APP_BASE_API = '//api.appadmin.woaidakele.cn/api'

+ 8 - 0
src/api/order/list.js

@@ -53,6 +53,14 @@ export function downOrder(data) {
     data
   })
 }
+// 导出金额
+export function downList(params) {
+  return request({
+    url: '/data/order_list_down',
+    method: 'get',
+    params
+  })
+}
 
 // 拆单
 export function toExport(params) {

+ 55 - 19
src/pages/order/examine.vue

@@ -679,6 +679,7 @@
           <el-radio v-for="item in addressList" :key="item.id" :label="item.id" class="radio_item">
             <div>
               <span>{{ item.con_name }},{{ item.provice }}-{{ item.city }}-{{ item.area }}-{{ item.address }},{{ item.con_mobile }}</span>
+              <span v-if="item.belong_user" style="color: red">(所属-{{ `昵称:${item.belong_user.nickname}, 真实姓名:${item.belong_user.realname}, 手机号:${item.belong_user.mobile}` }})</span>
               <!-- <span v-if="addressId === item.id" class="default">默认</span> -->
             </div>
             <div class="right">
@@ -723,7 +724,7 @@
     </el-dialog>
     <!-- 修改订单所属 -->
     <el-dialog
-      title="修改订单所属"
+      title="绑定订单所属"
       :visible.sync="dialog.belong"
       :show-close="false"
       :close-on-click-modal="false"
@@ -783,7 +784,7 @@ import {
   belongUsers,
   editBelong
 } from '@/api/order/examine'
-import { getUserAddress, updateOrderAddress, addUserAddress } from '@/api/order/common'
+import { getUserAddress, updateOrderAddress, addUserAddress, publishBindBelong } from '@/api/order/common'
 // money
 import { parseMoney } from '@/utils/index'
 // level
@@ -866,6 +867,7 @@ export default {
       roles: this.$route.meta.buttonAuthList ? this.$route.meta.buttonAuthList : [],
       loadingFull: false,
       tabIndex: '1',
+      edit: false,
       dialog: {
         remark: false,
         receive: false,
@@ -997,22 +999,41 @@ export default {
         type: 'warning'
       }).then(() => {
         const loading = this.$loading()
-        editBelong({
-          id: this.belongId,
-          order_num: this.orderDetail.order_num
-        }).then(res => {
-          loading.close()
-          if (res.code === 200) {
-            this.$message.success('修改订单所属成功')
-            this.resetBelong()
-            this.getDetail()
-          } else {
-            this.$message.error(res.message || '修改订单所属失败')
-          }
-        }).catch(() => {
-          loading.close()
-          this.$message.error('修改订单所属失败')
-        })
+        if (this.edit === true) {
+          editBelong({
+            id: this.belongId,
+            order_num: this.orderDetail.order_num
+          }).then(res => {
+            loading.close()
+            if (res.code === 200) {
+              this.$message.success('修改订单所属成功')
+              this.resetBelong()
+              this.getDetail()
+            } else {
+              this.$message.error(res.message || '修改订单所属失败')
+            }
+          }).catch(() => {
+            loading.close()
+            this.$message.error('修改订单所属失败')
+          })
+        } else {
+          publishBindBelong({
+            belong_id: this.belongId,
+            id: this.addressId
+          }).then(res => {
+            loading.close()
+            if (res.code === 200) {
+              this.$message.success('绑定订单所属成功')
+              this.getUserAddress()
+              this.dialog.belong = false
+            } else {
+              this.$message.error(res.message || '绑定订单所属失败')
+            }
+          }).catch(() => {
+            loading.close()
+            this.$message.error('绑定订单所属失败')
+          })
+        }
       }).catch(() => {})
     },
     changeBelongPagination({ page, limit }) { // 所属者分页
@@ -1021,6 +1042,7 @@ export default {
       this.getBelongUser()
     },
     getBelongUser() { // 获取订单所属信息
+      this.edit = true
       const loading = this.$loading()
       this.belongUserParams.order_num = this.orderDetail.order_num
       belongUsers(this.belongUserParams).then(res => {
@@ -1588,7 +1610,21 @@ export default {
         this.$message.error('请选择收货地址')
         return false
       }
-      this.loadingFull = true
+      // this.loadingFull = true
+      const belong_user = this.addressList.filter(item => Number(item.id) === Number(this.addressId))[0].belong_user
+      if (!belong_user) {
+        this.$confirm('该地址暂未绑定所属者, 请先绑定所属者?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.getBelongUser(() => {
+            this.dialog.belong = true
+          })
+          this.edit = false
+        }).catch(() => {})
+        return false
+      }
       editOrderAddress({
         address_id: this.addressId,
         order_id: this.orderDetail.id

+ 154 - 14
src/pages/order/list.vue

@@ -55,11 +55,11 @@
         <!-- <el-button v-permit="2" :roles-permit="roles" type="primary" :loading="downloadLoading" icon="el-icon-document" class="filter-item" @click="exportTemp">物流模板</el-button>
         <el-button v-permit="2" :roles-permit="roles" type="primary" :loading="downloadLoading" icon="el-icon-document" class="filter-item">导入物流</el-button> -->
         <el-button v-permit="3" :roles-permit="roles" type="primary" @click="showMergeOrder">合并订单</el-button>
-        <el-button v-permit="[0,1,2]" :roles-permit="roles" type="primary" @click="exportOrder">导出订单数据</el-button>
-        <el-button v-permit="[0,1,2]" :roles-permit="roles" type="primary" @click="exporOrdertOrder">导出拆单数据</el-button>
+        <!-- <el-button v-permit="[0,1,2]" :roles-permit="roles" type="primary" @click="exportOrder">导出订单数据</el-button>
+        <el-button v-permit="[0,1,2]" :roles-permit="roles" type="primary" @click="exporOrdertOrder">导出拆单数据</el-button> -->
+        <el-button v-permit="[0,1,2]" :roles-permit="roles" type="primary" @click="dialog.export_order = true">导出</el-button>
       </div>
     </div>
-
     <!-- 合并订单 -->
     <el-dialog
       title="合并订单"
@@ -610,28 +610,31 @@
         </div>
       </div>
     </el-dialog>
-    <!-- <el-dialog title="导出数据" :visible.sync="dialog.export_order" width="520px">
+    <el-dialog title="导出数据" :visible.sync="dialog.export_order" width="520px">
       <el-form label-width="120">
         <el-form-item label="导出类型">
-          <el-select v-model="dialog.export_order_type" style="width: 350px">
+          <!-- <el-select v-model="dialog.export_order_type" style="width: 350px">
             <el-option label="导出订单数据" value="0" />
             <el-option label="导出拆单数据" value="1" />
-          </el-select>
+          </el-select> -->
+          <el-button type="primary" @click="exportOrder">订单明细</el-button>
+          <el-button type="primary" @click="exporOrdertOrder">拆单明细</el-button>
+          <el-button type="primary" @click="exportMoney">订单金额</el-button>
         </el-form-item>
-        <el-form-item>
+        <!-- <el-form-item>
           <el-button size="small" @click="dialog.export_order = false">取消</el-button>
           <el-button size="small" type="primary" @click="toExportOrder">导出</el-button>
-        </el-form-item>
+        </el-form-item> -->
       </el-form>
     </el-dialog>
     <el-dialog v-if="order_examine_dialog" title="订单详情" :visible.sync="order_examine_dialog" width="80%" top="50px">
-      <examine :order-num="examine_order_num"/>
-    </el-dialog> -->
+      <examine :order-num="examine_order_num" />
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { getList, orderPass, orderreJect, downOrder, toExport, orderSpend, UpdateExpress, highSearch, machAuditOrder, getStore, addStoreOrder, cancelStoreOrder, toMergeOrder, mergeOrderInfo } from '@/api/order/list'
+import { getList, orderPass, orderreJect, downOrder, toExport, orderSpend, UpdateExpress, highSearch, machAuditOrder, getStore, addStoreOrder, cancelStoreOrder, toMergeOrder, mergeOrderInfo, downList } from '@/api/order/list'
 import { cancelOrder } from '@/api/order/common'
 import { orderStatus, payStatus } from '@/filters/common'
 import ChangeAddress from './components/ChangeAddress'
@@ -645,7 +648,7 @@ import { accountBalance, addRecharge } from '@/api/order/examine'
 // money
 import { parseMoney } from '@/utils/index'
 import VDistpicker from 'v-distpicker'
-// import examine from './examine2'n
+import examine from './examine2'
 const newList = {
   '快递公司': '',
   '快递公司代码': '',
@@ -690,7 +693,7 @@ const moduleList = {
 
 export default {
   name: 'OrderList',
-  components: { ChangeAddress, VDistpicker },
+  components: { ChangeAddress, VDistpicker, examine },
   // examine
   data() {
     const receiveMoney = (rule, value, cb) => {
@@ -1233,7 +1236,7 @@ export default {
       try {
         this.$request(orderSpend(formdata), () => {
           this.getList()
-          this.$message.success('上传成功')
+          // this.$message.success('上传成功')
         })
         // this.$request(sendOrder(formdata), () => {
         //   this.getList()
@@ -1490,6 +1493,142 @@ export default {
         })
       }
     },
+    // 订单金额
+    exportMoney() {
+      if (this.chooseList.length) {
+        // this.$request(downList({ id: this.chooseList.map(e => e.id) }), (res) => {
+        //   this.expressData = res
+        //   const exportData = this.getExportModule()
+        //   import('@/vendor/Export2Excel').then(excel => {
+        //     excel.export_json_to_excel({
+        //       header: Object.keys(moduleList),
+        //       data: exportData.map(listItem => Object.keys(exportData[0]).map(j => listItem[j])),
+        //       filename: `${new Date().toLocaleDateString()}快递单导出`,
+        //       bookType: 'xlsx',
+        //       isCSV: true
+        //     })
+        //     this.dialog.export_order = false
+        //   })
+        // })
+        this.$request(downList({ id: this.chooseList.map(e => e.id) }), (res) => {
+          const exportData = res.list
+          import('@/vendor/Export2Excel').then(excel => {
+            const header = ['序号', '下单时间', '所属政委', '下单人昵称', '下单人姓名', '订单状态', '支付状态', '数量合计', '订单总额', '已付金额', '所属', '收货人', '联系方式', '收货地址', '订单备注']
+            const exportK = ['index', 'updated_at', 'admin_name', 'nickname', 'realname', 'status', 'pay_status', 'total', 'money', 'pay_money', 'belong_user', 'username', 'mobile', 'address', 'remark']
+            const exportV = exportData.map((item, i) => {
+              const obj = {
+                index: i + 1,
+                updated_at: item.updated_at || '',
+                admin_name: item.get_user && item.get_user.warea && item.get_user.warea.admin_name,
+                nickname: item.get_user.nickname || '',
+                realname: item.get_user.realname || '',
+                status: orderStatus(item.status).name || '',
+                pay_status: payStatus(item.pay_status).name,
+                total: item.total || '',
+                money: item.money || '',
+                pay_money: item.pay_money || '',
+                username: item.get_address.username || '',
+                mobile: +item.get_address.mobile,
+                belong_user: item.belong_user && item.belong_user.nickname + ',' + item.belong_user.mobile,
+                address: item.get_address.province + item.get_address.city + item.get_address.town + item.get_address.address,
+                remark: item.remark || ''
+              }
+              return obj
+            })
+            const exportD = exportV.map(item => exportK.map(k => item[k]))
+            excel.export_json_to_excel({
+              header,
+              data: exportD,
+              filename: `${formatter(new Date(), 'yyyy-MM-dd')}订单金额`,
+              autoWidth: true,
+              bookType: 'xlsx'
+            })
+          })
+        })
+      } else {
+        let query = {}
+        if (!this.highSearchFlag) {
+          const { order_status, order_no, page_index, page_size, search_name, time, activity_id } = this.listQuery
+          query = {
+            order_status, order_no, page_index, page_size, search_name,
+            start_time: time.length > 0 ? time[0] : '',
+            end_time: time.length > 0 ? time[1] : '',
+            activity_id
+          }
+        } else {
+          let order_status
+          let pay_status
+          try {
+            order_status = this.$refs.status_tree.getCheckedKeys()
+            if (order_status.indexOf(-1) !== -1) order_status = [-1]
+            pay_status = this.$refs.pay_status_tree.getCheckedKeys()
+            if (pay_status.indexOf(-1) !== -1) pay_status = [-1]
+          } catch (e) {
+            order_status = []
+            pay_status = []
+          }
+          const { page_index, page_size, order_num, time, name, address, good, type, provice, city, area, activity_id } = this.exportForm
+          query = {
+            page_index,
+            page_size,
+            order_no: order_num,
+            start_time: time.length > 0 ? time[0] : '',
+            end_time: time.length > 0 ? time[1] : '',
+            user_name: name,
+            receive_info: address,
+            goods_info: good,
+            order_status,
+            pay_status,
+            order_type: type,
+            provice: provice || '',
+            city: city || '',
+            area: area || '',
+            activity_id
+          }
+        }
+        this.$request(downList(query), (res) => {
+          // console.log(res.data)
+          const exportData = res.list
+          // console.log(exportData)
+              import('@/vendor/Export2Excel').then(excel => {
+                const header = ['序号', '下单时间', '所属政委', '下单人昵称', '下单人姓名', '订单状态', '支付状态', '数量合计', '订单总额', '已付金额', '所属', '收货人', '联系方式', '收货地址', '订单备注']
+                const exportK = ['index', 'updated_at', 'admin_name', 'nickname', 'realname', 'status', 'pay_status', 'total', 'money', 'pay_money', 'belong_user', 'username', 'mobile', 'address', 'remark']
+                // if(+this.collect == false) {
+                //     header.splice(12,1)
+                //     exportK.splice(12,1)
+                //   }
+                const exportV = exportData.map((item, i) => {
+                  const obj = {
+                    index: i + 1,
+                    updated_at: item.updated_at || '',
+                    admin_name: item.get_user && item.get_user.warea && item.get_user.warea.admin_name,
+                    nickname: item.get_user.nickname || '',
+                    realname: item.get_user.realname || '',
+                    status: orderStatus(item.status).name || '',
+                    pay_status: payStatus(item.pay_status).name,
+                    total: item.total || '',
+                    money: item.money || '',
+                    pay_money: item.pay_money || '',
+                    username: item.get_address.username || '',
+                    mobile: +item.get_address.mobile,
+                    belong_user: item.belong_user && item.belong_user.nickname + ',' + item.belong_user.mobile,
+                    address: item.get_address.province + item.get_address.city + item.get_address.town + item.get_address.address,
+                    remark: item.remark || ''
+                  }
+                  return obj
+                })
+                const exportD = exportV.map(item => exportK.map(k => item[k]))
+                excel.export_json_to_excel({
+                  header,
+                  data: exportD,
+                  filename: `${formatter(new Date(), 'yyyy-MM-dd')}订单金额`,
+                  autoWidth: true,
+                  bookType: 'xlsx'
+                })
+              })
+        })
+      }
+    },
     // 导出拆单
     async exporOrdertOrder() {
       if (this.chooseList.length) {
@@ -1773,6 +1912,7 @@ export default {
       }
       return out
     },
+    getExportMoney() {},
     formatJson(filterVal, jsonData) {
       return jsonData.map(v => filterVal.map(j => {
         return v[j]