huangmp 2 лет назад
Родитель
Сommit
540942bbc8

+ 198 - 0
src/components/order-scan-delivery/index.vue

@@ -0,0 +1,198 @@
+<template>
+  <!-- 扫描发货 -->
+  <el-dialog
+    title="扫描发货"
+    v-if="visible"
+    :visible.sync="visible"
+    width="25%"
+    center
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    :append-to-body="true"
+    @close="closeDialog">
+    <el-form :model="wave" label-position="left" size="medium">
+      <el-form-item label="波次号" label-width="100px">
+        <span autocomplete="off">{{wave.waveNo}}</span>
+      </el-form-item>
+      <el-form-item label="剩余订单数" label-width="100px">
+        <span autocomplete="off">{{waitScan.waitScanNum}}/</span>
+        <span autocomplete="off">{{waitScan.orderNum}}</span>
+      </el-form-item>
+      <el-form-item label="扫描订单号" label-width="100px">
+        <el-input id="scanInput" @change="scanMatchPrintOrder" type="text" v-model="scanDeliveryNo" placeholder="请扫描条形码"></el-input>
+      </el-form-item>
+      <el-form-item label="匹配订单" label-width="100px">
+        <span autocomplete="off" style="color: darkgray" v-if="matchPrintOrder.match == null">等待扫描...</span>
+        <span autocomplete="off" style="color: green" v-else-if="matchPrintOrder.match">匹配成功</span>
+        <span autocomplete="off" style="color: red" v-else>匹配失败</span>
+      </el-form-item>
+    </el-form>
+    <el-card class="box-card" shadow="never">
+      <div class="text item">
+        <span autocomplete="off">订单号:</span>
+        <span autocomplete="off">{{matchPrintOrder.orderNumber}}</span>
+      </div>
+      <div class="text item">
+        <span autocomplete="off">快递单号:</span>
+        <span autocomplete="off">{{matchPrintOrder.deliveryNo}}</span>
+      </div>
+      <div class="text item">
+        <span autocomplete="off">波次号:</span>
+        <span autocomplete="off">{{matchPrintOrder.waveNo}}</span>
+      </div>
+      <div class="text item">
+        <span autocomplete="off">收件人:</span>
+        <span autocomplete="off">{{matchPrintOrder.receiverName}}</span>
+      </div>
+      <div class="text item">
+        <span autocomplete="off">手机号:</span>
+        <span autocomplete="off">{{matchPrintOrder.receiverMobile}}</span>
+      </div>
+      <div class="text item">
+        <span autocomplete="off">产品信息:</span>
+        <span autocomplete="off">{{matchPrintOrder.prodName}}</span>
+        <span autocomplete="off"> | </span>
+        <span autocomplete="off">{{matchPrintOrder.prodNums}} 张</span>
+      </div>
+    </el-card>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="handleDelivery" :disabled="!matchPrintOrder.match">发 货</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      visible: false,
+      waitScan: {
+        waitScanNum: 0,
+        orderNum: 0
+      },
+      scanDeliveryNo: null,
+      matchPrintOrder: {
+        orderNumber: null,
+        deliveryNo: null,
+        prodName: null,
+        prodNums: null,
+        waveNo: null,
+        serialNo: null,
+        receiverName: null,
+        receiverMobile: null,
+        match: null
+      },
+      wave:{},
+      lastInputStr: null
+    }
+  },
+  methods: {
+    // 获取数据列表
+    init (wave) {
+      this.wave = wave;
+      this.visible = true
+      // this.initEnterListener();
+      this.$nextTick(() => {
+        let $input = document.getElementById("scanInput");
+        $input.focus();
+        this.waitScanNumCheck();
+      })
+    },
+    initEnterListener(){
+      document.addEventListener('keyup', (e) => {
+        let key = window.event.keyCode;
+        if (key == 32) {
+          if(this.visible == true){
+            this.handleDelivery();
+          }
+        }
+      })
+    },
+    waitScanNumCheck(){
+      let dataBody = {printChannel: this.wave.printChannel, waveId: this.wave.waveId};
+      this.$http({
+        url: this.$http.adornUrl('/wave/wave/waitScanNumCheck'),
+        method: 'get',
+        params: this.$http.adornParams(dataBody),
+      }).then(({data}) => {
+        this.waitScan = data;
+      }).catch((error) => {
+        this.waitScan = {}
+      })
+    },
+    scanMatchPrintOrder(value){
+      // let substr = value.substring(value.length - 19, value.length)
+      let substr;
+      if(this.lastInputStr != null){
+        substr = value.replace(new RegExp(this.lastInputStr), "");
+      }else{
+        substr = value;
+      }
+      if(substr){
+        this.scanDeliveryNo = substr;
+        let dataBody = {printChannel: this.wave.printChannel, orderNumber: substr, waveId: this.wave.waveId};
+        this.$http({
+          url: this.$http.adornUrl('/printOrder/printOrder/findWavePrintOrder'),
+          method: 'get',
+          params: this.$http.adornParams(dataBody),
+        }).then(({data}) => {
+          this.matchPrintOrder = data;
+          if(data){
+            this.handleDelivery();
+            this.lastInputStr = substr;
+
+          }
+        }).catch((error) => {
+          this.matchPrintOrder = {};
+          this.matchPrintOrder.match = false;
+        })
+      }
+    },
+    handleDelivery(){
+      if(this.waitScan.waitScanNum == 0){
+        this.$message({
+          message: "订单已发货",
+          type: 'error'
+        })
+        return;
+      }
+      let dataBody = {waveId: this.wave.waveId, orderNumber: this.scanDeliveryNo.trim(), printChannel: this.wave.printChannel};
+      this.$http({
+        url: this.$http.adornUrl(`/printOrder/printOrder/confirmDelivery`),
+        method: 'POST',
+        data: this.$http.adornData(dataBody)
+      }).then(({data}) => {
+        if(data){
+          this.$message({
+            message: "发货成功",
+            type: 'success'
+          })
+          this.waitScanNumCheck();
+        }else{
+          this.$message({
+            message: "发货失败",
+            type: 'error'
+          })
+        }
+      })
+    },
+    closeDialog(){
+      this.visible = false;
+      this.scanDeliveryNo = null;
+      this.waitScan = {};
+      this.matchPrintOrder = {};
+      this.$emit("refreshDataList", null);
+      this.lastInputStr = null;
+    },
+  }
+}
+</script>
+<style scoped>
+  .text {
+    font-size: 14px;
+  }
+
+  .item {
+    padding: 6px 0;
+  }
+</style>

+ 32 - 0
src/utils/zip.js

@@ -0,0 +1,32 @@
+/**
+ * 下载zip
+ * @param {blob} fileArrayBuffer 文件流
+ * @param {String} filename 文件名称
+ */
+import { saveAs } from 'file-saver';
+
+export const downloadZip = (fileArrayBuffer, filename) => {
+
+  // let data = new Blob([fileArrayBuffer], {type: 'application/zip'});
+  // if (typeof window.chrome !== 'undefined') {
+  //   // Chrome
+  //   var link = document.createElement('a');
+  //   link.href = window.URL.createObjectURL(data);
+  //   link.download = filename;
+  //   link.click();
+  // } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
+  //   // IE
+  //   var blob = new Blob([data], {type: 'application/force-download'});
+  //   window.navigator.msSaveBlob(blob, filename);
+  // } else {
+  //   // Firefox
+  //   var file = new File([data], filename, {type: 'application/force-download'});
+  //   window.open(URL.createObjectURL(file));
+  // }
+
+  const blob = new Blob(fileArrayBuffer, {
+    type: 'application/zip'
+  })
+  debugger
+  saveAs(blob, filename)
+}

+ 170 - 0
src/views/modules/settlement/print-settlement-add-or-update.vue

@@ -0,0 +1,170 @@
+<template>
+  <el-dialog
+    :title="!dataForm.thirdSettleId ? '新增结算账单' : '编辑结算账单'"
+    :close-on-click-modal="false"
+    :visible.sync="visible"
+    v-if="visible"
+    width="760px"
+    @close="dialogClose">
+    <el-form
+      :model="dataForm"
+      label-width="100px"
+      size="small"
+      ref="dataForm">
+      <el-form-item label="打印渠道">
+        <el-select v-model="dataForm.printChannel" placeholder="请选择打印渠道" :disabled="dataForm.thirdSettleId != null">
+          <el-option key="Lightning" label="闪电" value="Lightning"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item class="settleName" label="结算名称" prop="settleName" style="width: 400px">
+        <el-input v-model="dataForm.settleName" maxlength="50" show-word-limit></el-input>
+      </el-form-item>
+      <el-form-item label="结算时段">
+        <el-date-picker style="width: 400px"
+          v-model="dateRange"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          format="yyyy-MM-dd HH:mm:ss"
+          type="datetimerange"
+          start-placeholder="结算开始时间"
+          end-placeholder="结算结束时间"
+          :default-time="['00:00:00', '23:59:59']">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="结算状态">
+        <el-select v-model="dataForm.status" placeholder="请选择结算状态">
+          <el-option label="待结算" :value="0"></el-option>
+          <el-option label="已结算" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="结算凭证" prop="pic">
+        <img-upload v-model="dataForm.pic"></img-upload>
+        <div v-if="dataForm.pic" @click="dataForm.pic = ''" class="default-btn">删除</div>
+      </el-form-item>
+      <el-form-item label="备注" prop="remark" style="width: 400px">
+        <el-input type="textarea" v-model="dataForm.remark"></el-input>
+      </el-form-item>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <div class="default-btn"  @click="dialogClose">{{$t('crud.filter.cancelBtn')}}</div>
+      <div class="default-btn primary-btn" @click="dataFormSubmit()" :loading="updateLoadingVisible">{{$t('crud.filter.submitBtn')}}</div>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import ImgUpload from '@/components/img-upload'
+
+  export default {
+    data () {
+      return {
+        visible: false,
+        dataForm: {
+          thirdSettleId: null,
+          settleName: null,
+          startTime: null,
+          endTime: null,
+          deliveryCode: null,
+          pic: null,
+          remark: null,
+          printChannel: null,
+          status: 0,
+          shopId: this.$store.state.user.shopId
+        },
+        resourcesUrl: process.env.VUE_APP_RESOURCES_URL,
+        dateRange:[],
+        isSubmit: false,
+        updateLoadingVisible: false
+      }
+    },
+    components: {
+      ImgUpload
+    },
+    methods: {
+      init (thirdSettleId) {
+        this.visible = true;
+        this.dataForm.thirdSettleId = thirdSettleId;
+        this.$nextTick(() => {
+          if(thirdSettleId){
+            this.getDataInfo();
+          }
+        });
+      },
+      dialogClose(){
+        this.visible = false;
+        this.dataForm = {settleName: null, startTime: null, endTime: null, status: 0, pic: null, remark:null, printChannel:null};
+        this.dateRange = [];
+        this.$emit('refreshDataList');
+      },
+      // 获取店铺详情数据
+      getDataInfo () {
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/info/' + this.dataForm.thirdSettleId),
+          method: 'get',
+          params: this.$http.adornParams()
+        }).then(({data}) => {
+          this.dataForm = data;
+          this.$set(this.dateRange, 0, this.dataForm.startTime);
+          this.$set(this.dateRange, 1, this.dataForm.endTime);
+        })
+      },
+      // 重置表单
+      resetForm () {
+        this.$refs.dataForm.resetFields()
+      },
+      // 表单提交
+      dataFormSubmit () {
+        this.updateLoadingVisible = true;
+        this.dataForm.startTime = this.dateRange === null ? null : this.dateRange[0];
+        this.dataForm.endTime = this.dateRange === null ? null : this.dateRange[1];
+        let url = '/printSettlement/thirdPrintSettlement/generateSettlement';
+        if(this.dataForm.thirdSettleId){
+          url = '/printSettlement/thirdPrintSettlement/update'
+        }
+        this.$http({
+          url: this.$http.adornUrl(url),
+          method: 'POST',
+          data: this.$http.adornData(this.dataForm)
+        }).then(({data}) => {
+          this.updateLoadingVisible = false;
+          if(data){
+            this.$message({
+              message: '提交成功',
+              type: 'success',
+            })
+            this.dialogClose();
+          }else{
+            this.$message({
+              message: '提交失败',
+              type: 'success',
+            })
+          }
+        }).catch((e) => {
+
+        })
+      },
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .map {
+    width: 100%;
+    height: 500px;
+  }
+  .el-date-editor.el-input, .el-date-editor.el-input__inner {
+    width: 240px;
+  }
+  .area-select {
+    display: flex;
+    .el-select.el-select--smalll {
+      width: 172px;
+    }
+  }
+</style>
+<style scoped>
+  .settleName >>> .el-input__inner {
+    padding-right: 45px !important;
+  }
+  .addr >>> .el-input__inner {
+    padding-right: 55px;
+  }
+</style>

+ 406 - 0
src/views/modules/settlement/third-print-settlement-delivery.vue

@@ -0,0 +1,406 @@
+<template>
+  <div class="mod-transport">
+    <!-- 搜索栏 -->
+    <div class="search-bar">
+      <el-form :inline="true" class="search-form" ref="searchForm" :model="searchForm" label-width="auto" size="small">
+        <div class="input-row">
+          <el-form-item label="波次号" class="search-form-item">
+            <el-input type="text" v-model="searchForm.waveNo" placeholder="请输入波次号"></el-input>
+          </el-form-item>
+          <el-form-item label="备注名" class="search-form-item">
+            <el-input type="text" v-model="searchForm.waveName" placeholder="请输入备注名"></el-input>
+          </el-form-item>
+          <el-form-item label="生产状态"  :label-width=" lang === 'en' ? '145px' : '85px'">
+            <el-select
+              v-model="searchForm.productionStatus"
+              clearable
+              placeholder="请选择生产状态"
+              size="small">
+              <el-option key="0" label="未生成" value="0"></el-option>
+              <el-option key="1" label="已生产" value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="运单号状态"  :label-width=" lang === 'en' ? '145px' : '85px'">
+            <el-select
+              v-model="searchForm.expressBillStatus"
+              clearable
+              placeholder="请选择运单号状态"
+              size="small">
+              <el-option key="0" label="未获取" value="0"></el-option>
+              <el-option key="1" label="已获取" value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <!--<el-form-item label="发货状态"  :label-width=" lang === 'en' ? '145px' : '85px'">
+            <el-select
+              v-model="searchForm.scanStatus"
+              clearable
+              placeholder="请选择发货状态"
+              size="small">
+              <el-option key="0" label="未扫描" value="0"></el-option>
+              <el-option key="1" label="部分扫描" value="1"></el-option>
+              <el-option key="2" label="全部已扫描" value="2"></el-option>
+            </el-select>
+          </el-form-item>-->
+          <el-form-item label="生成时间"   :label-width=" lang === 'en' ? '145px' : '85px'">
+            <el-date-picker
+              size="small"
+              v-model="dateRange"
+              type="datetimerange"
+              :range-separator="this.$i18n.t('time.tip')"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              :start-placeholder="this.$i18n.t('time.start')"
+              :end-placeholder="this.$i18n.t('time.end')"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <div class="default-btn primary-btn" @click="searchChange(true)">{{$t('crud.searchBtn')}}</div>
+            <div class="default-btn" @click="resetSearchForm('searchForm')">{{$t('shop.resetMap')}}</div>
+          </el-form-item>
+        </div>
+      </el-form>
+    </div>
+
+    <div class="main-container">
+      <!-- 表格 -->
+      <div class="table-con transport-table">
+        <el-table
+          ref="waveTable"
+          :data="dataList"
+          border
+          header-cell-class-name="table-header"
+          row-class-name="table-row-low"
+          style="width: 100%">
+          <el-table-column
+            align="center"
+            prop="waveNo"
+            label="波次号">
+            <template slot-scope="scope">
+              <span class="table-cell-text">{{ scope.row.waveNo }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="备注名"
+            align="center"
+            prop="waveName">
+            <template slot-scope="scope">
+              <span>{{scope.row.waveName }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="生产状态"
+            align="center"
+            prop="productionStatus">
+            <template slot-scope="scope">
+              <span v-if="scope.row.productionStatus == 0">未生产</span>
+              <span v-else-if="scope.row.productionStatus == 1">已生产</span>
+              <span v-else>未知</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            align="center"
+            prop="orderNum"
+            label="订单数量"
+          >
+            <template slot-scope="scope">
+              <span>{{scope.row.orderNum }}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            align="center"
+            label="生成时间"
+            prop="createTime"
+          >
+            <template slot-scope="scope">
+              <span>{{scope.row.createTime }}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            align="center"
+            prop="expressBillStatus"
+            label="运单号状态"
+          >
+            <template slot-scope="scope">
+              <span v-if="scope.row.expressBillStatus == 0">未获取</span>
+              <span v-else-if="scope.row.expressBillStatus == 1">已获取</span>
+              <span v-else>未知</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="scanStatus"
+            label="发货状态"
+          >
+            <template slot-scope="scope">
+              <span v-if="scope.row.scanStatus == 0">未发货</span>
+              <span v-else-if="scope.row.scanStatus == 1">部分发货({{scope.row.scanNum}}/{{scope.row.orderNum}})</span>
+              <span v-else-if="scope.row.scanStatus == 2">全部已发货</span>
+              <span v-else>未知</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            align="center"
+            :label="$t('crud.menu')"
+            width="150"
+          >
+            <template slot-scope="scope">
+              <div style="display: inline-block;float: left;">
+<!--                  <el-button size="mini" @click="downloadWavePrintOrderPdf(scope.row)" :loading="wavePrintOrderPdfDownloadLoading" :disabled="scope.row.productionStatus == 0">下载PDF包</el-button>-->
+<!--                  <el-button size="mini" :loading="wavePrintOrderInfoDownloadLoading" @click="downloadWavePrintOrderInfo(scope.row)" :disabled="scope.row.productionStatus == 0">下载订单信息</el-button>-->
+<!--                  <el-button size="mini" @click="openScanDialog(scope.row)" :disabled="scope.row.productionStatus == 0">扫描发货</el-button>-->
+              </div>
+              <div
+                class="default-btn text-btn operate-btn"
+                @click="openWaveDetailDialog(scope.row)">详情</div>
+              <div
+                class="default-btn text-btn"
+                @click="openWaveModifyDialog(scope.row)">
+                编辑
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <!-- 分页 -->
+      <el-pagination
+        v-if="dataList.length"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="page.currentPage"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="page.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="page.total">
+      </el-pagination>
+    </div>
+    <!-- 波次详情 -->
+    <wave-print-order ref="wavePrintOrder" @refressWaveList="getDataList"></wave-print-order>
+
+<!--    <order-scan-delivery ref="orderScanDelivery" @refreshDataList="getDataList"></order-scan-delivery>-->
+
+    <!-- 修改波次 -->
+    <el-dialog
+      title="修改波次"
+      :visible.sync="modifyVisible"
+      v-if="modifyVisible"
+      width="40%"
+      center
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <el-form :model="modifyWave">
+        <el-form-item label="波次号" label-width="100px">
+          <span autocomplete="off">{{modifyWave.waveNo}}</span>
+        </el-form-item>
+        <el-form-item label="备注名" label-width="100px">
+          <el-input v-model="modifyWave.waveName" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="modifyHandle(modifyWave)">确 认</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import {downloadXls} from "@/utils/excel";
+  import {downloadZip} from "@/utils/zip";
+  import OrderScanDelivery from '@/components/order-scan-delivery';
+  export default {
+    components: {OrderScanDelivery},
+    data () {
+      return {
+        theData: null, // 保存上次点击查询的请求条件
+
+        dataForm: {
+          transName: ''
+        },
+        dataList: [],
+        dataListLoading: false,
+        dataListSelections: [],
+        modifyVisible: false,
+        modifyWave: {},
+        lang: localStorage.getItem('lang'),
+        page: {
+          total: 0, // 总页数
+          currentPage: 1, // 当前页数
+          pageSize: 10 // 每页显示多少条
+        },
+        searchForm: {},
+        dateRange: [],
+        selectAll: false,
+        wavePrintOrderInfoDownloadLoading: false,
+        wavePrintOrderPdfDownloadLoading: false,
+        wavePrintOrderVisible: false
+
+      }
+    },
+    created () {
+      this.getDataList()
+    },
+    methods: {
+      // 获取数据列表
+      getDataList (page, newData = false) {
+        this.dataListLoading = true
+        if (newData || !this.theData) {
+          this.searchForm
+          this.searchForm.startTime = this.dateRange === null ? null : this.dateRange[0], // 开始时间
+          this.searchForm.endTime = this.dateRange === null ? null : this.dateRange[1], // 结束时间
+          this.theData = JSON.parse(JSON.stringify(this.searchForm))
+        }
+        this.$http({
+          url: this.$http.adornUrl('/wave/wave/page'),
+          method: 'get',
+          params: this.$http.adornParams(
+            Object.assign(
+              {
+                current: page == null ? this.page.currentPage : page.currentPage,
+                size: page == null ? this.page.pageSize : page.pageSize
+              },
+              this.theData
+            )
+          )
+        }).then(({data}) => {
+          this.dataList = data.records
+          this.page.total = data.total
+          this.dataListLoading = false
+        })
+      },
+      // 新增 / 修改
+      openWaveDetailDialog (wave) {
+        this.$refs.wavePrintOrder.init(wave)
+      },
+      openWaveModifyDialog (wave) {
+        this.modifyVisible = true;
+        this.modifyWave = wave;
+      },
+      downloadWavePrintOrderInfo(wave){
+        this.wavePrintOrderInfoDownloadLoading = true;
+        this.$http({
+          url: this.$http.adornUrl('/wave/wave/downloadWavePrintOrderInfo'),
+          method: 'get',
+          params: this.$http.adornParams({waveId: wave.waveId, printChannel: wave.printChannel}),
+          responseType: 'blob'
+        }).then(({data}) => {
+          this.wavePrintOrderInfoDownloadLoading = false;
+          let fileName = wave.waveNo + "_" + wave.waveName + "_订单信息";
+          downloadXls(data, fileName + ".xlsx");
+        }).catch((error) => {
+          this.wavePrintOrderInfoDownloadLoading = false;
+        })
+      },
+      downloadWavePrintOrderPdf(wave){
+        this.wavePrintOrderPdfDownloadLoading = true;
+        let dataBody = {"printChannel": wave.printChannel, "waveId": wave.waveId};
+        this.$http({
+          url: this.$http.adornUrl('/wave/wave/downloadWavePrintOrderPdf'),
+          method: 'get',
+          params: this.$http.adornParams(dataBody),
+          responseType: 'blob'
+        }).then(({data}) => {
+          this.wavePrintOrderPdfDownloadLoading = false;
+          let fileName = wave.waveNo + "_" + wave.waveName;
+          downloadZip(data, fileName + ".zip");
+        }).catch((error) => {
+          this.wavePrintOrderPdfDownloadLoading = false;
+        })
+      },
+      /**
+       * 全选按钮
+       */
+      handleSelectAll () {
+        if (this.$refs.transportTable.selection.length < this.dataList.length) {
+          this.selectAll = true
+        } else {
+          this.selectAll = false
+        }
+        this.$refs.waveTable.toggleAllSelection()
+      },
+      // 修改
+      modifyHandle (row) {
+        this.$http({
+          url: this.$http.adornUrl(`/wave/wave/modify`),
+          method: 'POST',
+          data: this.$http.adornData(row)
+        }).then(({data}) => {
+          this.modifyVisible = false;
+          if(data){
+            this.$message({
+              message: "修改成功",
+              type: 'success'
+            })
+            this.getDataList(this.page);
+          }else{
+            this.$message({
+              message: "修改失败",
+              type: 'error'
+            })
+          }
+        })
+      },
+      // 删除
+      deleteHandle (row) {
+        this.$confirm('确定要删除波次吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.$http({
+            url: this.$http.adornUrl(`/wave/wave/deleteWave`),
+            method: 'POST',
+            data: this.$http.adornData(row)
+          }).then(({data}) => {
+            if(data){
+              this.$message({
+                message: "删除成功",
+                type: 'success'
+              })
+              this.getDataList(this.page);
+            }else{
+              this.$message({
+                message: "删除失败",
+                type: 'error'
+              })
+            }
+          })
+        })
+      },
+
+      // 条件查询
+      searchChange (newData = false) {
+        this.page.currentPage = 1
+        this.getDataList(this.page, newData)
+      },
+      openScanDialog(row){
+        this.$refs.orderScanDelivery.init(row);
+      },
+
+      /**
+       * 重置表单
+       * @param {String} formName 表单名称
+       */
+      resetSearchForm (formName) {
+        this.$refs[formName].resetFields()
+        this.searchForm = {}
+      },
+      handleSizeChange (val) {
+        this.page.pageSize = val
+        this.getDataList()
+      },
+      handleCurrentChange (val) {
+        this.page.currentPage = val
+        this.getDataList()
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 191 - 0
src/views/modules/settlement/third-print-settlement-detail.vue

@@ -0,0 +1,191 @@
+<template>
+  <el-dialog
+    :title="'【' + settlement.settleName + '】结算账单详情信息'"
+    :close-on-click-modal="false"
+    :visible.sync="visible"
+    v-if="visible"
+    @close="dialogClose"
+    :fullscreen="true">
+
+    <el-collapse v-model="activeNames">
+      <el-collapse-item title="材质结算详情" name="detail">
+        <div class="main-container">
+          <!-- 表格 -->
+          <div class="table-con transport-table">
+            <el-table
+              ref="waveTable"
+              :data="detailList"
+              border
+              header-cell-class-name="table-header"
+              row-class-name="table-row-low"
+              style="width: 100%">
+              <el-table-column
+                align="left"
+                prop="prodName"
+                width="300px"
+                label="产品名称">
+                <template slot-scope="scope">
+                  <span class="table-cell-text">{{ scope.row.prodName }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                align="center"
+                prop="skuName"
+                label="订单材质">
+                <template slot-scope="scope">
+                  <span class="table-cell-text">{{ scope.row.skuName }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="订单数量"
+                align="center"
+                prop="orderNums">
+                <template slot-scope="scope">
+                  <span>{{scope.row.orderNums }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="材质张数"
+                align="center"
+                prop="skuNums">
+                <template slot-scope="scope">
+                  <span>{{scope.row.skuNums }}</span>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                align="center"
+                prop="skuPrice"
+                label="材质单价">
+                <template slot-scope="scope">
+                  <span>{{scope.row.skuPrice }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                align="center"
+                prop="skuAmount"
+                label="小计金额">
+                <template slot-scope="scope">
+                  <span>{{scope.row.skuAmount }}</span>
+                </template>
+              </el-table-column>
+
+              <!--<el-table-column
+                align="center"
+                :label="$t('crud.menu')"
+                width="150"
+              >
+                <template slot-scope="scope">
+                  <div style="display: inline-block;float: left;">
+                    &lt;!&ndash;                  <el-button size="mini" @click="downloadWavePrintOrderPdf(scope.row)" :loading="wavePrintOrderPdfDownloadLoading" :disabled="scope.row.productionStatus == 0">下载PDF包</el-button>&ndash;&gt;
+                    &lt;!&ndash;                  <el-button size="mini" :loading="wavePrintOrderInfoDownloadLoading" @click="downloadWavePrintOrderInfo(scope.row)" :disabled="scope.row.productionStatus == 0">下载订单信息</el-button>&ndash;&gt;
+                    &lt;!&ndash;                  <el-button size="mini" @click="openScanDialog(scope.row)" :disabled="scope.row.productionStatus == 0">扫描发货</el-button>&ndash;&gt;
+                  </div>
+                  <div
+                    class="default-btn text-btn operate-btn"
+                    @click="openWaveDetailDialog(scope.row)">详情</div>
+                  <div
+                    class="default-btn text-btn"
+                    @click="openWaveModifyDialog(scope.row)">
+                    编辑
+                  </div>
+                </template>
+              </el-table-column>-->
+            </el-table>
+          </div>
+
+          <!-- 分页 -->
+          <el-pagination
+            v-if="detailList.length"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="page.currentPage"
+            :page-sizes="[10, 20, 50, 100]"
+            :page-size="page.pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="page.total">
+          </el-pagination>
+        </div>
+      </el-collapse-item>
+    </el-collapse>
+
+  </el-dialog>
+</template>
+
+<script>
+  import {downloadXls} from "@/utils/excel";
+  export default {
+    components: {},
+    data () {
+      return {
+        theData: null, // 保存上次点击查询的请求条件
+        thirdSettleId: null,
+        detailList: [],
+        deliveryList: [],
+        delivery: {},
+        settlement: {},
+        activeNames: 'detail',
+        detailListLoading: false,
+        page: {
+          total: 0, // 总页数
+          currentPage: 1, // 当前页数
+          pageSize: 50 // 每页显示多少条
+        },
+        visible: false,
+      }
+    },
+    created () {
+      // this.getDetailDataList()
+    },
+    methods: {
+      init (settlement) {
+        this.visible = true;
+        this.settlement = settlement;
+        this.$nextTick(() => {
+          if(settlement.thirdSettleId){
+            //获取sku结算详情
+            //获取快递结算详情
+            this.getDetailDataList(this.page);
+          }
+        });
+      },
+      // 获取数据列表
+      getDetailDataList (page, newData = false) {
+        this.detailListLoading = true
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlementDetail/page'),
+          method: 'GET',
+          params: this.$http.adornParams(
+            Object.assign(
+              {
+                current: page == null ? this.page.currentPage : page.currentPage,
+                size: page == null ? this.page.pageSize : page.pageSize,
+                'thirdPrintSettlementId': this.settlement.thirdSettleId,
+                'printChannel': this.settlement.printChannel
+              },
+            )
+          )
+        }).then(({data}) => {
+          this.detailList = data.records
+          this.page.total = data.total
+          this.detailListLoading = false
+        })
+      },
+      dialogClose(){
+
+      },
+      handleSizeChange (val) {
+        this.page.pageSize = val
+        this.getDetailDataList(this.page, false)
+      },
+      handleCurrentChange (val) {
+        this.page.currentPage = val
+        this.getDetailDataList(this.page, false)
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 567 - 0
src/views/modules/settlement/third-print-settlement.vue

@@ -0,0 +1,567 @@
+<template>
+  <div class="mod-transport">
+    <!-- 搜索栏 -->
+    <div class="search-bar">
+      <el-form :inline="true" class="search-form" ref="searchForm" :model="searchForm" label-width="auto" size="small">
+        <div class="input-row">
+          <el-form-item label="推广店铺" prop="shopId">
+            <el-select v-model="searchForm.shopId" placeholder="推广店铺"
+                       controls-position="right" :clearable="true">
+              <el-option v-for="item in shopList" :key="item.shopId" :label="item.shopName" :value="item.shopId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="结算名称" class="search-form-item">
+            <el-input type="text" v-model="searchForm.settleName" placeholder="请输入结算名称"></el-input>
+          </el-form-item>
+          <el-form-item label="结算状态" class="search-form-item">
+            <el-select
+              v-model="searchForm.status"
+              clearable
+              placeholder="请选择结算状态"
+              size="small">
+              <el-option key="0" label="待结算" value="0"></el-option>
+              <el-option key="1" label="已结算" value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="结算时段" class="search-form-item">
+            <el-date-picker
+              :default-time="['00:00:00', '23:59:59']"
+              v-model="dateRange"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始时间"
+              end-placeholder="结束时间"
+              value-format="yyyy-MM-dd HH:mm:ss">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <div class="default-btn primary-btn" @click="searchChange(true)">{{$t('crud.searchBtn')}}</div>
+            <div class="default-btn" @click="resetSearchForm('searchForm')">{{$t('shop.resetMap')}}</div>
+          </el-form-item>
+        </div>
+      </el-form>
+    </div>
+
+    <div class="main-container">
+      <!-- 操作栏 -->
+      <div class="operation-bar">
+        <div
+          class="default-btn primary-btn"
+          @click="addOrUpdateHandle()">
+          新增结算
+        </div>
+      </div>
+      <div style="margin-top: 10px; width: 1000px;">
+        <el-row :gutter="12">
+          <el-col :span="6">
+            <el-card :body-style="{padding:'10px'}"shadow="never">
+              <div>
+                <span style="font-size: 16px">待结算总金额</span>
+                <div style="margin-top: 5px;">
+                  <span v-if="stat.settleAmount" style="color: green; font-weight: bold;font-size: 20px">+ ¥{{parseFloat(stat.settleAmount).toFixed(2)}}</span>
+                  <span v-else style="color: green; font-weight: bold;font-size: 20px">+ ¥0</span>
+                </div>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="6">
+            <el-card :body-style="{padding:'10px'}"shadow="never">
+              <div>
+                <span style="font-size: 16px">待结算材质金额</span>
+                <div style="margin-top: 5px">
+                  <span v-if="stat.settleSkuAmount" style="color: green; font-weight: bold;font-size: 20px;">+ ¥{{parseFloat(stat.settleSkuAmount).toFixed(2)}}</span>
+                  <span v-else style="color: green; font-weight: bold;font-size: 20px;">+ ¥0</span>
+                </div>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="6">
+            <el-card :body-style="{padding:'10px'}"shadow="never">
+              <div>
+                <span style="font-size: 16px" v-if="shopId == 66">待结算打包快递金额</span>
+                <span style="font-size: 16px" v-else>待结算人工金额</span>
+                <div style="margin-top: 5px">
+                  <span v-if="stat.settleLaborAmount" style="color: green; font-weight: bold;font-size: 20px;">+ ¥{{parseFloat(stat.settleLaborAmount).toFixed(2)}}</span>
+                  <span v-else style="color: green; font-weight: bold;font-size: 20px;">+ ¥0</span>
+                </div>
+              </div>
+            </el-card>
+          </el-col>
+          <el-col :span="6">
+            <el-card :body-style="{padding:'10px'}"shadow="never">
+              <div>
+                <span style="font-size: 16px">售后结算金额</span>
+                <div style="margin-top: 5px">
+                  <span v-if="stat.settleAfterSalesCostAmount" style="color: red; font-weight: bold;font-size: 20px">- ¥{{parseFloat(stat.settleAfterSalesCostAmount).toFixed(2)}}</span>
+                  <span v-else style="color: red; font-weight: bold;font-size: 20px">- ¥0</span>
+                </div>
+              </div>
+            </el-card>
+          </el-col>
+        </el-row>
+      </div>
+
+      <!-- 表格 -->
+      <div class="table-con transport-table">
+        <el-table
+          ref="waveTable"
+          :data="dataList"
+          border
+          header-cell-class-name="table-header"
+          row-class-name="table-row-low"
+          style="width: 100%">
+          <el-table-column
+            v-if="shopId == 1"
+            align="center"
+            prop="settleName"
+            label="打印渠道">
+            <template slot-scope="scope">
+              <span class="table-cell-text">{{ scope.row.printChannel }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            width="160px"
+            align="center"
+            prop="settleName"
+            label="结算名称">
+            <template slot-scope="scope">
+              <span class="table-cell-text">{{ scope.row.settleName }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            width="160px"
+            label="结算时段"
+            align="center"
+            prop="startTime">
+            <template slot-scope="scope">
+              <span>{{scope.row.startTime }}</span>
+              <br/>
+              <span>{{scope.row.endTime }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="结算总金额"
+            align="center"
+            prop="settleAmount">
+            <template slot-scope="scope">
+              <span style="color: green; font-weight: bold;font-size: 16px">{{scope.row.settleAmount }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="settleSkuAmount"
+            label="材料结算金额">
+            <template slot-scope="scope">
+              <span style="color: green; font-weight: bold;font-size: 16px">+{{scope.row.settleSkuAmount }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            width="110px"
+            label="打包快递结算金额(按件2.8元)"
+            prop="settleLaborAmount">
+            <template slot-scope="scope">
+              <span style="color: green; font-weight: bold;font-size: 16px">+{{scope.row.settleLaborAmount }}</span>
+            </template>
+          </el-table-column>
+          <!--<el-table-column
+            align="center"
+            width="110px"
+            label="快递结算金额(已发货)"
+            prop="settleDeliveryAmount">
+            <template slot-scope="scope">
+              <span style="color: green; font-weight: bold;font-size: 16px">+{{scope.row.settleDeliveryAmount }}</span>
+            </template>
+          </el-table-column>-->
+          <el-table-column
+            width="110px"
+            align="center"
+            label="售后结算金额(按成本)"
+            prop="settleAfterSalesAmount">
+            <template slot-scope="scope">
+              <span style="color: red; font-weight: bold;font-size: 16px">-{{scope.row.settleAfterSalesCostAmount }}</span>
+            </template>
+          </el-table-column>
+          <!--<el-table-column
+            align="center"
+            label="售后结算金额"
+            prop="settleAfterSalesAmount">
+            <template slot-scope="scope">
+              <span style="color: red; font-weight: bold;font-size: 16px">-{{scope.row.settleAfterSalesAmount }}</span>
+            </template>
+          </el-table-column>-->
+          <el-table-column
+            align="center"
+            prop="settleOrderNums"
+            label="订单数">
+            <template slot-scope="scope">
+              <span>{{scope.row.settleOrderNums }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="settleOrderDeliveryNums"
+            label="已发货数">
+            <template slot-scope="scope">
+              <span>{{scope.row.settleOrderDeliveryNums }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="settleOrderDeliveryNums"
+            label="单独运单号数">
+            <template slot-scope="scope">
+              <span>{{scope.row.diffDvyNums }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="settleOrderDeliveryNums"
+            label="集货发货数">
+            <template slot-scope="scope">
+              <span>{{scope.row.mergeDvyNums }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="settleOrderDeliveryNums"
+            label="相同运单号数">
+            <template slot-scope="scope">
+              <span>{{scope.row.sameDvyNums }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="settleOrderSheets"
+            label="材料总张数">
+            <template slot-scope="scope">
+              <span>{{scope.row.settleOrderSheets }}</span>
+            </template>
+          </el-table-column>
+<!--          <el-table-column-->
+<!--            align="center"-->
+<!--            prop="settleDeliveryNums"-->
+<!--            label="快递总数">-->
+<!--            <template slot-scope="scope">-->
+<!--              <span>{{scope.row.settleDeliveryNums }}</span>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+          <el-table-column
+            align="center"
+            prop="status"
+            label="结算状态">
+            <template slot-scope="scope">
+              <el-tag v-if="scope.row.status === 0" type="danger" effect="dark">待结算</el-tag>
+              <el-tag v-if="scope.row.status ===1" type="success" effect="dark">已结算</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            :label="$t('crud.menu')"
+            width="160">
+            <template slot-scope="scope">
+              <div style="display: inline-block;float: left;">
+              </div>
+              <div
+                class="default-btn text-btn"
+                @click="viewSettlementDetail(scope.row)">小计</div>
+              <div
+                class="default-btn text-btn"
+                @click="addOrUpdateHandle(scope.row.thirdSettleId)">
+                编辑
+              </div>
+              <div
+                class="default-btn text-btn"
+                @click="syncSettlement(scope.row)">更新</div>
+              <br/>
+             <!-- <div
+                style="margin: 0 0"
+                class="default-btn text-btn"
+                @click="openModifySettleDeliveryDialog(scope.row.thirdSettleId)">
+                修改运费
+              </div>-->
+<!--              <br/>-->
+              <div
+                style="margin: 0 0"
+                class="default-btn text-btn"
+                :loading="downloadLoading"
+                @click="downloadSettlementSku(scope.row)">
+                下载明细单
+              </div>
+              <br/>
+              <div
+                style="margin: 0 0"
+                class="default-btn text-btn"
+                :loading="downloadLoading"
+                @click="downloadAfterSales(scope.row)">
+                下载售后单
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <!-- 分页 -->
+      <el-pagination
+        v-if="dataList.length"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="page.currentPage"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="page.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="page.total">
+      </el-pagination>
+    </div>
+
+    <!-- 修改波次 -->
+    <el-dialog
+      title="修改快递运费结算"
+      :visible.sync="settleDeliveryVisible"
+      v-if="settleDeliveryVisible"
+      width="40%"
+      center
+      :close-on-click-modal="false"
+      :close-on-press-escape="false">
+      <el-form :model="settlement" label-position="left">
+        <el-form-item label="结算账单" label-width="100px">
+          <span autocomplete="off">{{settlement.settleName}}</span>
+        </el-form-item>
+        <el-form-item label="当前快递结算" label-width="100px">
+          <span autocomplete="off">{{settlement.settleDeliveryAmount}}</span>
+        </el-form-item>
+        <el-form-item label="最新快递结算" label-width="100px">
+          <el-input v-model="settlement.modifySettleDeliveryAmount" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="updateSettleDeliveryAmount(settlement)">确 认</el-button>
+      </div>
+    </el-dialog>
+
+    <PrintSettlementAddOrUpdate v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="refreshChange"></PrintSettlementAddOrUpdate>
+    <PrintSettlementDetail v-if="settlementDetailVisible" ref="settlementDetail"></PrintSettlementDetail>
+
+
+  </div>
+</template>
+
+<script>
+  import {downloadXls} from "@/utils/excel";
+  import {downloadZip} from "@/utils/zip";
+  import PrintSettlementAddOrUpdate from './print-settlement-add-or-update';
+  import PrintSettlementDetail from './third-print-settlement-detail';
+  export default {
+    components: {PrintSettlementAddOrUpdate, PrintSettlementDetail},
+    data () {
+      return {
+        theData: null, // 保存上次点击查询的请求条件
+        addOrUpdateVisible: false,
+        settlementDetailVisible: false,
+        settleDeliveryVisible: false,
+        downloadLoading: false,
+        stat:{},
+        dataForm: {
+          transName: ''
+        },
+        shopList: [],
+        dataList: [],
+        dataListLoading: false,
+        page: {
+          total: 0, // 总页数
+          currentPage: 1, // 当前页数
+          pageSize: 10 // 每页显示多少条
+        },
+        searchForm: {printChannel: 'Lightning'},
+        dateRange: [],
+        selectAll: false,
+        settlement: {
+          settleDeliveryAmount: 0,
+          modifySettleDeliveryAmount:null
+        }
+
+      }
+    },
+    created () {
+      this.getDataList();
+      this.getStat();
+      this.getShopList()
+    },
+    computed: {
+      shopId: {
+        get () { return this.$store.state.user.shopId }
+      },
+    },
+    methods: {
+      getShopList() {
+        this.$http({
+          url: this.$http.adornUrl('/platform/shopDetail/getShopList'),
+          method: 'get',
+          params: this.$http.adornParams({shopId: this.shopId})
+        }).then(({ data }) => {
+          if (data) {
+            this.shopList = data
+          }
+        })
+      },
+      getStat(){
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/stat'),
+          method: 'GET',
+          params: this.$http.adornParams(this.searchForm)
+        }).then(({data}) => {
+          this.stat = data;
+        }).catch((error) => {
+        })
+      },
+      // 新增 / 修改
+      addOrUpdateHandle (id) {
+        this.addOrUpdateVisible = true
+        this.$nextTick(() => {
+          this.$refs.addOrUpdate.init(id)
+        })
+      },
+      viewSettlementDetail(settlement){
+        this.settlementDetailVisible = true;
+        this.$nextTick(() => {
+          this.$refs.settlementDetail.init(settlement)
+        })
+      },
+      openModifySettleDeliveryDialog(thirdSettleId){
+        this.getSettlement(thirdSettleId);
+        this.settleDeliveryVisible = true;
+      },
+      refreshChange () {
+        this.getDataList(this.page);
+      },
+      // 获取数据列表
+      getDataList (page, newData = false) {
+        this.dataListLoading = true
+        if (newData || !this.theData) {
+          this.searchForm.startTime = this.dateRange === null ? null : this.dateRange[0], // 开始时间
+          this.searchForm.endTime = this.dateRange === null ? null : this.dateRange[1], // 结束时间
+          this.theData = JSON.parse(JSON.stringify(this.searchForm))
+        }
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/page'),
+          method: 'get',
+          params: this.$http.adornParams(
+            Object.assign(
+              {
+                current: page == null ? this.page.currentPage : page.currentPage,
+                size: page == null ? this.page.pageSize : page.pageSize
+              },
+              this.theData
+            )
+          )
+        }).then(({data}) => {
+          this.dataList = data.records
+          this.page.total = data.total
+          this.dataListLoading = false
+        })
+      },
+      // 获取详情
+      getSettlement(thirdSettleId){
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/info/' + thirdSettleId),
+          method: 'GET',
+          params: this.$http.adornParams(),
+        }).then(({data}) => {
+          if(data){
+            this.settlement = data;
+          }
+        }).catch((error) => {
+        })
+      },
+      updateSettleDeliveryAmount(){
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/updateDeliveryAmount'),
+          method: 'POST',
+          data: this.$http.adornData(this.settlement),
+        }).then(({data}) => {
+          this.settleDeliveryVisible = false;
+          this.getDataList(this.page, false);
+        }).catch((error) => {
+        })
+      },
+      downloadSettlementSku(settlement){
+        this.downloadLoading = true;
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/downloadSettlementSku'),
+          method: 'GET',
+          params: this.$http.adornParams(settlement),
+          responseType: 'blob'
+        }).then(({data}) => {
+          let fileName = settlement.settleName + "_结算账单明细表";
+          downloadXls(data, fileName + ".xlsx");
+          this.downloadLoading = false;
+        }).catch((error) => {
+        })
+      },
+      downloadAfterSales(settlement){
+        this.downloadLoading = true;
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/downloadAfterSales'),
+          method: 'GET',
+          params: this.$http.adornParams(settlement),
+          responseType: 'blob'
+        }).then(({data}) => {
+          let fileName = settlement.settleName + "_售后明细表";
+          downloadXls(data, fileName + ".xlsx");
+          this.downloadLoading = false;
+        }).catch((error) => {
+        })
+      },
+      syncSettlement(settlement){
+        this.$http({
+          url: this.$http.adornUrl('/printSettlement/thirdPrintSettlement/syncSettlement'),
+          method: 'POST',
+          data: this.$http.adornData(settlement),
+        }).then(({data})=> {
+          if(data){
+            this.getDataList(this.page, false);
+            this.$message({
+              message: "更新成功",
+              type: 'success'
+            })
+          }else{
+            this.$message({
+              message: "暂无更新",
+              type: 'warning'
+            })
+          }
+        }).catch((error) => {
+        })
+      },
+
+      // 条件查询
+      searchChange (newData = false) {
+        this.stat = {}
+        this.getDataList(this.page, newData);
+        this.getStat();
+      },
+      /**
+       * 重置表单
+       * @param {String} formName 表单名称
+       */
+      resetSearchForm (formName) {
+        this.$refs[formName].resetFields()
+        this.searchForm = {};
+        this.stat = {settleAmount:0, settleSkuAmount:0, settleAfterCostAmount:0, settleLaborAmount:0}
+      },
+      handleSizeChange (val) {
+        this.page.pageSize = val
+        this.getDataList()
+      },
+      handleCurrentChange (val) {
+        this.page.currentPage = val
+        this.getDataList(this.page, false)
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+
+</style>