1215 lines
33 KiB
Vue
1215 lines
33 KiB
Vue
<template>
|
||
<div>
|
||
<div class="main">
|
||
<div class="maintop">
|
||
<div class="mainbtn">
|
||
<el-button
|
||
size="small"
|
||
:disabled="multiple"
|
||
class="thebtn2"
|
||
v-hasButtons="['DeliveryImmediateAdd']"
|
||
@click="getImmediateData"
|
||
>{{ '立即发货' }}</el-button
|
||
>
|
||
<el-button
|
||
size="small"
|
||
:disabled="single"
|
||
class="thebtn2"
|
||
v-hasButtons="['DeliveryImmediateUpdateCode']"
|
||
@click="updateCode"
|
||
>{{ '修改单号' }}</el-button
|
||
>
|
||
|
||
<el-button
|
||
size="small"
|
||
v-hasButtons="['DeliveryImmediateExport']"
|
||
@click="handleExport"
|
||
class="thebtn1"
|
||
>
|
||
{{ '导出' }}</el-button
|
||
>
|
||
</div>
|
||
</div>
|
||
<el-table
|
||
:data="tableData"
|
||
height="540px"
|
||
style="width: 100%"
|
||
:header-cell-style="{ background: '#EEEEEE' }"
|
||
@selection-change="handleSelectionChange"
|
||
:span-method="objectSpanMethod"
|
||
>
|
||
<el-table-column prop="colsele" type="selection" width="55">
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="deliverCode"
|
||
:label="'发货单号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="orderCode"
|
||
:label="'订单编号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="orderTypeVal"
|
||
:label="'订单类型'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="deliverStatusVal"
|
||
:label="'发货状态'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="120px"
|
||
align="center"
|
||
prop="memberCode"
|
||
:label="'会员编号'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
min-width="120px"
|
||
align="center"
|
||
prop="memberName"
|
||
:label="'会员姓名'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="120px"
|
||
align="center"
|
||
prop="phone"
|
||
:label="'联系方式'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
align="center"
|
||
min-width="120px"
|
||
prop="productCode"
|
||
:label="'产品编号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="150px"
|
||
align="center"
|
||
prop="productName"
|
||
:label="'产品名称'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
min-width="150px"
|
||
align="center"
|
||
prop="specsName"
|
||
:label="'产品规格'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column align="center" prop="unitName" :label="'产品单位'">
|
||
</el-table-column>
|
||
<el-table-column align="center" prop="quantity" :label="'产品数量'">
|
||
</el-table-column>
|
||
<el-table-column align="center" prop="isBarCodeVal" label="是否追溯">
|
||
</el-table-column>
|
||
<el-table-column align="center" prop="barCode" :label="'追溯编号'">
|
||
</el-table-column>
|
||
<el-table-column align="center" prop="recName" :label="'收货人'">
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="120px"
|
||
align="center"
|
||
prop="recPhone"
|
||
:label="'收货电话'"
|
||
>
|
||
</el-table-column>
|
||
<!-- <el-table-column
|
||
align="center"
|
||
prop="recProvinceVal"
|
||
:label="'省'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recCityVal"
|
||
:label="'市'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recCountyVal"
|
||
:label="'区/县'"
|
||
>
|
||
</el-table-column> -->
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="recAddress"
|
||
:formatter="formatAddress"
|
||
:label="'收货地址'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="logisticsCompany"
|
||
:label="'物流公司'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
min-width="120px"
|
||
prop="logisticsCode"
|
||
:label="'快递单号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="shippingChannelVal"
|
||
:label="'发货类型'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="100px"
|
||
align="center"
|
||
prop="storehouseName"
|
||
:label="'发货仓库'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="payTime"
|
||
:label="'支付日期'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="deliverTime"
|
||
:label="'发货日期'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="deliveryWayVal"
|
||
:label="'发货方式'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="operateScopeVal"
|
||
:label="'供应方式'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="tranTypeVal"
|
||
:label="'运输方式'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="secondDeliverVal"
|
||
:label="'二次发货'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="systemType"
|
||
:label="$t('系统类型')"
|
||
>
|
||
<template slot-scope="scope">
|
||
<div
|
||
v-for="item in systemTypes"
|
||
:key="item.value"
|
||
v-if="scope.row.systemType == item.value"
|
||
>
|
||
{{ item.label }}
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="printTime"
|
||
:label="'打印日期'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
min-width="180px"
|
||
align="center"
|
||
prop="creationTime"
|
||
:label="'创建日期'"
|
||
>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
<pagination
|
||
v-show="total > 0"
|
||
:total="total"
|
||
:page.sync="params.pageNum"
|
||
:limit.sync="params.pageSize"
|
||
@pagination="getList"
|
||
:pageSizes="pageSizes"
|
||
/>
|
||
<!-- 立即发货 -->
|
||
<el-dialog
|
||
:title="'立即发货'"
|
||
:close-on-click-modal="false"
|
||
:visible.sync="ljfhShow"
|
||
width="80%"
|
||
append-to-body
|
||
class="nowFhbox"
|
||
>
|
||
<div class="maintable">
|
||
<div class="btnbox">
|
||
<el-button size="small" class="thebtn1" @click="handleImport">
|
||
{{ '导入' }}</el-button
|
||
>
|
||
</div>
|
||
<el-table
|
||
:data="fhTable"
|
||
height="400px"
|
||
style="width: 100%"
|
||
:header-cell-style="{ background: '#EEEEEE' }"
|
||
:span-method="objectSpanMethod2"
|
||
>
|
||
<el-table-column
|
||
align="center"
|
||
prop="deliverCode"
|
||
:label="'发货单号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="productName"
|
||
:label="'产品名称'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="specsName"
|
||
:label="'产品规格'"
|
||
>
|
||
</el-table-column
|
||
><el-table-column
|
||
align="center"
|
||
prop="quantity"
|
||
:label="'产品数量'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column align="center" prop="barCode" :label="'追溯编号'">
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="orderCode"
|
||
:label="'订单编号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="memberCode"
|
||
:label="'会员编号'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
align="center"
|
||
prop="memberName"
|
||
:label="'会员姓名'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recName"
|
||
:label="'收货人'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recPhone"
|
||
:label="'收货电话'"
|
||
>
|
||
</el-table-column>
|
||
<!-- <el-table-column
|
||
align="center"
|
||
prop="recProvinceVal"
|
||
:label="'省'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recCityVal"
|
||
:label="'市'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recCountyVal"
|
||
:label="'区/县'"
|
||
>
|
||
</el-table-column> -->
|
||
<el-table-column
|
||
align="center"
|
||
prop="recAddress"
|
||
:formatter="formatAddress"
|
||
:label="'详细地址'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
align="center"
|
||
prop="logisticsCompany"
|
||
width="130px"
|
||
:label="'物流公司'"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.logisticsCompany"
|
||
:placeholder="'请输入物流名称'"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="logisticsCode"
|
||
min-width="150px"
|
||
:label="'物流单号'"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.logisticsCode"
|
||
:placeholder="'请输入物流单号'"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
fixed="right"
|
||
align="center"
|
||
prop="thedel"
|
||
:label="'操作'"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
@click="handleDelete(scope.row, scope.$index, fhTable)"
|
||
type="text"
|
||
size="small"
|
||
style="color: #c73030"
|
||
>
|
||
{{ '删除' }}
|
||
</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="footer" style="text-align: center; margin-top: 20px">
|
||
<el-button @click="ljfhShow = false">
|
||
{{ '取消' }}</el-button
|
||
>
|
||
<el-button type="primary" @click="sureFh">{{
|
||
'确定'
|
||
}}</el-button>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
<el-dialog
|
||
:title="upload.title"
|
||
:close-on-click-modal="false"
|
||
:visible.sync="upload.open"
|
||
width="600px"
|
||
append-to-body
|
||
>
|
||
<el-upload
|
||
ref="upload"
|
||
:limit="1"
|
||
accept=".xlsx, .xls"
|
||
:headers="upload.headers"
|
||
:action="upload.url"
|
||
:disabled="upload.isUploading"
|
||
:on-progress="handleFileUploadProgress"
|
||
:on-success="handleFileSuccess"
|
||
:on-exceed="handleExceed"
|
||
:auto-upload="false"
|
||
drag
|
||
>
|
||
<i class="el-icon-upload"></i>
|
||
<div class="el-upload__text">
|
||
{{ '将文件拖到此处,或' }}
|
||
<em>{{ '点击上传' }}</em>
|
||
</div>
|
||
<div class="el-upload__tip" slot="tip">
|
||
<el-link type="info" style="font-size: 12px" @click="importTemplate">
|
||
{{ '下载模板' }}</el-link
|
||
>
|
||
</div>
|
||
<div class="el-upload__tip" style="color: red" slot="tip">
|
||
{{ '提示:仅允许导入“xls”或“xlsx”格式文件!' }}
|
||
</div>
|
||
</el-upload>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="submitFileForm">{{
|
||
'确定'
|
||
}}</el-button>
|
||
<el-button @click="upload.open = false">{{
|
||
'取消'
|
||
}}</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
<!-- 修改单号 -->
|
||
<el-dialog
|
||
:title="'修改单号'"
|
||
:close-on-click-modal="false"
|
||
:visible.sync="updateCodeShow"
|
||
width="80%"
|
||
append-to-body
|
||
class="nowFhbox"
|
||
>
|
||
<div class="maintable">
|
||
<el-table
|
||
:data="updateCodeList"
|
||
height="400px"
|
||
style="width: 100%"
|
||
:header-cell-style="{ background: '#EEEEEE' }"
|
||
>
|
||
<el-table-column
|
||
align="center"
|
||
prop="deliverCode"
|
||
:label="'发货单号'"
|
||
>
|
||
</el-table-column>
|
||
<!-- <el-table-column
|
||
align="center"
|
||
prop="productName"
|
||
:label="'产品名称'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="specsName"
|
||
:label="'产品规格'"
|
||
>
|
||
</el-table-column
|
||
><el-table-column
|
||
align="center"
|
||
prop="quantity"
|
||
:label="'产品数量'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column align="center" prop="barCode" :label="'追溯编号'">
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="orderCode"
|
||
:label="'订单编号'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="memberCode"
|
||
:label="'会员编号'"
|
||
>
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
align="center"
|
||
prop="memberName"
|
||
:label="'会员姓名'"
|
||
>
|
||
</el-table-column> -->
|
||
<el-table-column
|
||
align="center"
|
||
prop="recName"
|
||
:label="'收货人'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recPhone"
|
||
:label="'收货电话'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recProvinceVal"
|
||
:label="'省'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recCityVal"
|
||
:label="'市'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recCountyVal"
|
||
:label="'区/县'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="recAddress"
|
||
:label="'详细地址'"
|
||
>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="logisticsCompany"
|
||
width="120px"
|
||
:label="'物流公司'"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.logisticsCompany"
|
||
:placeholder="'请输入物流名称'"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
align="center"
|
||
prop="logisticsCode"
|
||
width="120px"
|
||
:label="'物流单号'"
|
||
>
|
||
<template slot-scope="scope">
|
||
<el-input
|
||
v-model="scope.row.logisticsCode"
|
||
:placeholder="'请输入物流单号'"
|
||
></el-input>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<div class="footer" style="text-align: center; margin-top: 20px">
|
||
<el-button @click="updateCodeShow = false">
|
||
{{ '取消' }}</el-button
|
||
>
|
||
<el-button type="primary" @click="sureUpdateCode">{{
|
||
'确定'
|
||
}}</el-button>
|
||
</div>
|
||
</div>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import * as del from "@/api/delivery";
|
||
import { getToken } from "@/utils/auth";
|
||
export default {
|
||
name: "Nowdelivery",
|
||
props: {
|
||
params: {
|
||
type: Object,
|
||
default: null,
|
||
},
|
||
},
|
||
data() {
|
||
return {
|
||
tableData: [],
|
||
total: 0,
|
||
idList: [],
|
||
// 非多个禁用
|
||
multiple: true,
|
||
//非单个禁用
|
||
single: true,
|
||
ljfhShow: false,
|
||
fhTable: [],
|
||
updateCodeShow: false,
|
||
updateCodeList: [],
|
||
pageSizes: [100, 200, 500, 1000, 2000],
|
||
// 需要合并项的列
|
||
needMergeArr: [
|
||
{
|
||
colName: "colsele",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "deliverCode",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "orderCode",
|
||
mergeCheckNames: ["deliverCode", "orderCode"],
|
||
},
|
||
{
|
||
colName: "orderTypeval",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "orderTypeval"],
|
||
},
|
||
{
|
||
colName: "orderTypeVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "orderTypeVal"],
|
||
},
|
||
{
|
||
colName: "memberCode",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "memberCode"],
|
||
},
|
||
{
|
||
colName: "memberName",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "memberName"],
|
||
},
|
||
{
|
||
colName: "phone",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "phone"],
|
||
},
|
||
{
|
||
colName: "recName",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recName"],
|
||
},
|
||
{
|
||
colName: "recPhone",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recPhone"],
|
||
},
|
||
{
|
||
colName: "recProvinceVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recProvinceVal"],
|
||
},
|
||
{
|
||
colName: "recCityVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recCityVal"],
|
||
},
|
||
{
|
||
colName: "recCountyVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recCountyVal"],
|
||
},
|
||
{
|
||
colName: "recAddress",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recAddress"],
|
||
},
|
||
{
|
||
colName: "operateScopeVal",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "tranTypeVal",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
|
||
{
|
||
colName: "remark",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "remark"],
|
||
},
|
||
{
|
||
colName: "creationTime",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "creationTime"],
|
||
},
|
||
{
|
||
colName: "payTime",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "payTime"],
|
||
},
|
||
{
|
||
colName: "deliveryWayVal",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "preSaleStatusVal",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "printStatusVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "printStatusVal"],
|
||
},
|
||
{
|
||
colName: "deliverStatusVal",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "logisticsCompany",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "shippingChannelVal",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "storehouseName",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
|
||
{
|
||
colName: "logisticsCode",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "secondDeliverVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "secondDeliverVal"],
|
||
},
|
||
{
|
||
colName: "printTime",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "deliverTime",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
|
||
{
|
||
colName: "orderStatusVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "orderStatusVal"],
|
||
},
|
||
],
|
||
rowMergeArrs: {}, // 包含需要一个或多个合并项信息的对象
|
||
needMergeArr2: [
|
||
{
|
||
colName: "deliverCode",
|
||
mergeCheckNames: ["deliverCode"],
|
||
},
|
||
{
|
||
colName: "orderCode",
|
||
mergeCheckNames: ["deliverCode", "orderCode"],
|
||
},
|
||
{
|
||
colName: "memberCode",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "memberCode"],
|
||
},
|
||
{
|
||
colName: "memberName",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "memberName"],
|
||
},
|
||
{
|
||
colName: "recName",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recName"],
|
||
},
|
||
{
|
||
colName: "recProvinceVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recProvinceVal"],
|
||
},
|
||
{
|
||
colName: "recCityVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recCityVal"],
|
||
},
|
||
{
|
||
colName: "recCountyVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recCountyVal"],
|
||
},
|
||
{
|
||
colName: "recAddress",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "recAddress"],
|
||
},
|
||
{
|
||
colName: "orderStatusVal",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "orderStatusVal"],
|
||
},
|
||
{
|
||
colName: "logisticsCompany",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "logisticsCompany"],
|
||
},
|
||
{
|
||
colName: "logisticsCode",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "logisticsCode"],
|
||
},
|
||
{
|
||
colName: "thedel",
|
||
mergeCheckNames: ["deliverCode", "orderCode", "thedel"],
|
||
},
|
||
],
|
||
|
||
rowMergeArrs2: {}, //包含需要一个或多个合并项信息的对象
|
||
upload: {
|
||
// 是否显示弹出层(物流导入)
|
||
open: false,
|
||
// 弹出层标题(物流导入)
|
||
title: "",
|
||
// 是否禁用上传
|
||
isUploading: false,
|
||
// 是否更新已经存在的物流数据
|
||
updateSupport: 0,
|
||
// 设置上传的请求头部
|
||
headers: { Authorization: "Bearer " + getToken() },
|
||
// 上传的地址
|
||
url:
|
||
process.env.VUE_APP_BASE_API +
|
||
"/sale/manage/deliver/immediate-import",
|
||
},
|
||
logisticsTable: [],
|
||
};
|
||
},
|
||
created() {
|
||
this.getList();
|
||
},
|
||
methods: {
|
||
formatAddress(row) {
|
||
return (
|
||
row.recProvinceVal +
|
||
row.recCityVal +
|
||
(row.recCountyVal || "") +
|
||
row.recAddress
|
||
);
|
||
},
|
||
//下载模板
|
||
importTemplate() {
|
||
this.download(
|
||
"/sale/manage/deliver/template-export",
|
||
{},
|
||
`${'模板'}${new Date().getTime()}.xlsx`
|
||
);
|
||
},
|
||
|
||
/** 导入按钮操作 */
|
||
handleImport() {
|
||
this.upload.url =
|
||
process.env.VUE_APP_BASE_API +
|
||
"/sale/manage/deliver/immediate-import?idList=" +
|
||
this.idList;
|
||
this.upload.title = '导入';
|
||
this.upload.open = true;
|
||
},
|
||
// 文件上传中处理
|
||
handleFileUploadProgress(event, file, fileList) {
|
||
this.upload.isUploading = true;
|
||
},
|
||
// 文件上传成功处理
|
||
handleFileSuccess(response, file, fileList) {
|
||
var fileName = response.fileName;
|
||
if (fileName != undefined && fileName != "") {
|
||
}
|
||
if (response.code == 200) {
|
||
this.logisticsTable = response.data;
|
||
if (this.logisticsTable.length > 0) {
|
||
this.fhTable.forEach((ele) => {
|
||
this.logisticsTable.forEach((item) => {
|
||
if (ele.pkId == item.pkId) {
|
||
this.$set(ele, "logisticsCompany", item.logisticsCompany || "");
|
||
this.$set(ele, "logisticsCode", item.logisticsCode || "");
|
||
}
|
||
});
|
||
});
|
||
}
|
||
}
|
||
|
||
this.upload.open = false;
|
||
this.upload.isUploading = false;
|
||
this.$refs.upload.clearFiles();
|
||
this.$alert(response.msg, '导入结果', {
|
||
dangerouslyUseHTMLString: true,
|
||
});
|
||
// this.getList();
|
||
},
|
||
// 上传文件数量超出后的动作
|
||
handleExceed() {
|
||
this.upload.isUploading = false;
|
||
this.msgInfo('仅可上传一个文件哦');
|
||
},
|
||
// 提交上传文件
|
||
submitFileForm() {
|
||
this.$refs.upload.submit();
|
||
},
|
||
//解决多列行列合并,根据某一列 合并其他列
|
||
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
||
let needMerge = this.needMergeArr.some((item) => {
|
||
return item.colName === column.property;
|
||
});
|
||
if (needMerge === true) {
|
||
return this.mergeAction(column.property, rowIndex, column);
|
||
}
|
||
},
|
||
mergeAction(val, rowIndex, colData) {
|
||
let _row = this.rowMergeArrs[val].rowArr[rowIndex];
|
||
let _col = _row > 0 ? 1 : 0;
|
||
return [_row, _col];
|
||
},
|
||
rowMergeHandle(arr, data) {
|
||
if (!Array.isArray(arr) && !arr.length) return false;
|
||
if (!Array.isArray(data) && !data.length) return false;
|
||
let needMerge = {};
|
||
|
||
arr.forEach((mergeItem) => {
|
||
// 创建合并管理对象
|
||
needMerge[mergeItem.colName] = {
|
||
rowArr: [],
|
||
rowMergeNum: 0,
|
||
};
|
||
let currentMergeItemData = needMerge[mergeItem.colName];
|
||
|
||
// 进行合并管理对象数据的遍历整理
|
||
data.forEach((item, index) => {
|
||
if (index === 0) {
|
||
currentMergeItemData.rowArr.push(1);
|
||
currentMergeItemData.rowMergeNum = 0;
|
||
} else {
|
||
let currentRowData = data[index];
|
||
let preRowData = data[index - 1];
|
||
|
||
if (
|
||
this.colMergeCheck(
|
||
currentRowData,
|
||
preRowData,
|
||
mergeItem.mergeCheckNames
|
||
)
|
||
) {
|
||
currentMergeItemData.rowArr[
|
||
currentMergeItemData.rowMergeNum
|
||
] += 1;
|
||
currentMergeItemData.rowArr.push(0);
|
||
} else {
|
||
currentMergeItemData.rowArr.push(1);
|
||
currentMergeItemData.rowMergeNum = index;
|
||
}
|
||
}
|
||
});
|
||
});
|
||
return needMerge;
|
||
},
|
||
colMergeCheck(currentRowData, preRowData, mergeCheckNames) {
|
||
if (!Array.isArray(mergeCheckNames) && !mergeCheckNames.length)
|
||
return false;
|
||
let result = true;
|
||
for (let index = 0; index < mergeCheckNames.length; index++) {
|
||
const mergeCheckName = mergeCheckNames[index];
|
||
if (currentRowData[mergeCheckName] !== preRowData[mergeCheckName]) {
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
return result;
|
||
},
|
||
getList() {
|
||
this.params.pkIdList = [];
|
||
del.getDeliverList(this.params).then((res) => {
|
||
this.tableData = res.rows;
|
||
this.total = res.total;
|
||
this.rowMergeArrs = this.rowMergeHandle(
|
||
this.needMergeArr,
|
||
this.tableData
|
||
);
|
||
});
|
||
},
|
||
//立即发货弹框删除
|
||
handleDelete(row, index, tab) {
|
||
this.$confirm(`${'是否删除'}?`).then((_) => {
|
||
const delList = [];
|
||
this.fhTable.forEach((ele, eindex) => {
|
||
if (
|
||
row.deliverCode == ele.deliverCode &&
|
||
row.orderCode == ele.orderCode
|
||
) {
|
||
delList.push(eindex);
|
||
}
|
||
});
|
||
tab.splice(index, delList.length);
|
||
this.rowMergeArrs2 = this.rowMergeHandle2(this.needMergeArr2, tab);
|
||
});
|
||
},
|
||
handleSelectionChange(selection) {
|
||
this.idList = selection.map((item) => item.pkId);
|
||
this.multiple = !selection.length;
|
||
this.single = selection.length !== 1;
|
||
},
|
||
//导出
|
||
handleExport() {
|
||
this.params.pkIdList = this.idList;
|
||
this.$confirm('是否确认导出所有数据项?', '警告', {
|
||
confirmButtonText: '确定',
|
||
cancelButtonText: '取消',
|
||
type: "warning",
|
||
}).then((_) => {
|
||
this.download(
|
||
"/sale/manage/deliver/export",
|
||
// {pkIdList:this.idList},
|
||
{ ...this.params },
|
||
`${'发货清单-立即发货'}${new Date().getTime()}.xlsx`
|
||
);
|
||
});
|
||
},
|
||
getImmediateData() {
|
||
this.ljfhShow = true;
|
||
del
|
||
.getImmediateData({ deliverIdList: this.idList.join() })
|
||
.then((res) => {
|
||
this.fhTable = res.data;
|
||
this.rowMergeArrs2 = this.rowMergeHandle2(
|
||
this.needMergeArr2,
|
||
this.fhTable
|
||
);
|
||
});
|
||
},
|
||
//修改单号
|
||
updateCode() {
|
||
this.updateCodeShow = true;
|
||
del.getUpdateCodeList({ deliverId: this.idList[0] }).then((res) => {
|
||
this.updateCodeList = [res.data];
|
||
});
|
||
},
|
||
sureUpdateCode() {
|
||
del
|
||
.changeDeliverCode({
|
||
pkId: this.updateCodeList[0].pkId,
|
||
logisticsCode: this.updateCodeList[0].logisticsCode,
|
||
logisticsCompany: this.updateCodeList[0].logisticsCompany,
|
||
})
|
||
.then((res) => {
|
||
if (res.code == 200) {
|
||
this.$message({
|
||
message: res.msg,
|
||
type: "success",
|
||
});
|
||
this.updateCodeShow = false;
|
||
this.getList();
|
||
}
|
||
});
|
||
},
|
||
sureFh() {
|
||
if (this.fhTable.length > 0) {
|
||
del.deliverConfirm(this.fhTable).then((res) => {
|
||
if (res.code == 200) {
|
||
this.$message({
|
||
message: res.msg,
|
||
type: "success",
|
||
});
|
||
this.ljfhShow = false;
|
||
}
|
||
});
|
||
} else {
|
||
this.$message({
|
||
message: res.msg,
|
||
type: "warning",
|
||
});
|
||
this.ljfhShow = false;
|
||
}
|
||
},
|
||
//解决多列行列合并,根据某一列 合并其他列
|
||
objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
|
||
let needMerge = this.needMergeArr2.some((item) => {
|
||
return item.colName === column.property;
|
||
});
|
||
if (needMerge === true) {
|
||
return this.mergeAction2(column.property, rowIndex, column);
|
||
}
|
||
},
|
||
mergeAction2(val, rowIndex, colData) {
|
||
let _row = this.rowMergeArrs2[val].rowArr[rowIndex];
|
||
let _col = _row > 0 ? 1 : 0;
|
||
return [_row, _col];
|
||
},
|
||
rowMergeHandle2(arr, data) {
|
||
if (!Array.isArray(arr) && !arr.length) return false;
|
||
if (!Array.isArray(data) && !data.length) return false;
|
||
let needMerge = {};
|
||
|
||
arr.forEach((mergeItem) => {
|
||
// 创建合并管理对象
|
||
needMerge[mergeItem.colName] = {
|
||
rowArr: [],
|
||
rowMergeNum: 0,
|
||
};
|
||
let currentMergeItemData = needMerge[mergeItem.colName];
|
||
|
||
// 进行合并管理对象数据的遍历整理
|
||
data.forEach((item, index) => {
|
||
if (index === 0) {
|
||
currentMergeItemData.rowArr.push(1);
|
||
currentMergeItemData.rowMergeNum = 0;
|
||
} else {
|
||
let currentRowData = data[index];
|
||
let preRowData = data[index - 1];
|
||
|
||
if (
|
||
this.colMergeCheck2(
|
||
currentRowData,
|
||
preRowData,
|
||
mergeItem.mergeCheckNames
|
||
)
|
||
) {
|
||
currentMergeItemData.rowArr[
|
||
currentMergeItemData.rowMergeNum
|
||
] += 1;
|
||
currentMergeItemData.rowArr.push(0);
|
||
} else {
|
||
currentMergeItemData.rowArr.push(1);
|
||
currentMergeItemData.rowMergeNum = index;
|
||
}
|
||
}
|
||
});
|
||
});
|
||
return needMerge;
|
||
},
|
||
colMergeCheck2(currentRowData, preRowData, mergeCheckNames) {
|
||
if (!Array.isArray(mergeCheckNames) && !mergeCheckNames.length)
|
||
return false;
|
||
let result = true;
|
||
for (let index = 0; index < mergeCheckNames.length; index++) {
|
||
const mergeCheckName = mergeCheckNames[index];
|
||
if (currentRowData[mergeCheckName] !== preRowData[mergeCheckName]) {
|
||
result = false;
|
||
break;
|
||
}
|
||
}
|
||
return result;
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.nowFhbox ::v-deep .el-dialog__body {
|
||
padding: 0;
|
||
padding-bottom: 20px;
|
||
}
|
||
.btnbox {
|
||
padding: 10px;
|
||
.thebtn1 {
|
||
background: rgba(255, 103, 35, 1);
|
||
color: #ffffff;
|
||
}
|
||
}
|
||
|
||
::v-deep .el-table .warning-row {
|
||
background: #f9f9f9;
|
||
}
|
||
|
||
::v-deep .el-table .success-row {
|
||
background: #ffffff;
|
||
}
|
||
::v-deep .el-table thead {
|
||
color: #000000;
|
||
}
|
||
.main {
|
||
// margin-top: 20px;
|
||
background: #ffffff;
|
||
border-radius: 8px;
|
||
box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
|
||
|
||
.main_content {
|
||
padding: 20px 25px;
|
||
}
|
||
|
||
.maintop {
|
||
display: flex;
|
||
// padding: 10px 20px;
|
||
padding-bottom: 10px;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
.mainbtn {
|
||
.thebtn1 {
|
||
color: #ffffff;
|
||
background: rgba(243, 169, 0, 1);
|
||
}
|
||
.thebtn2 {
|
||
color: #ffffff;
|
||
background: rgba(72, 178, 253, 1);
|
||
}
|
||
.thebtn3 {
|
||
color: #ffffff;
|
||
background: rgba(83, 177, 30, 1);
|
||
}
|
||
.thebtn4 {
|
||
color: #ffffff;
|
||
background: rgba(199, 48, 48, 1);
|
||
}
|
||
.thebtn5 {
|
||
color: #ffffff;
|
||
background: rgba(0, 155, 88, 1);
|
||
}
|
||
.thebtn6 {
|
||
color: #ffffff;
|
||
background: rgba(236, 108, 0, 1);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|