web-base-admin/src/components/Delivery/yihandeled.vue

1465 lines
43 KiB
Vue
Raw Normal View History

2025-03-23 09:18:42 +08:00
<template>
<div>
<div class="main">
<div class="maintop">
<div class="mainbtn">
<el-button
v-hasButtons="['DeliveryHandledPrint']"
2025-03-23 09:18:42 +08:00
size="small"
class="thebtn2"
:disabled="multiple"
@click="getPrintCheck"
>{{ '生成打印' }}</el-button>
2025-03-23 09:18:42 +08:00
<el-button
v-hasButtons="['DeliveryHandledBind']"
2025-03-23 09:18:42 +08:00
size="small"
class="thebtn3"
:disabled="multiple"
@click="codeBind(true)"
>{{ '绑定追溯' }}</el-button>
2025-03-23 09:18:42 +08:00
<el-button
v-hasButtons="['DeliveryHandledUnBind']"
2025-03-23 09:18:42 +08:00
size="small"
class="thebtn3"
:disabled="multiple"
@click="codeBind(false)"
>{{ '解绑追溯' }}</el-button>
2025-03-23 09:18:42 +08:00
<el-button
v-hasButtons="['DeliveryHandledDelete']"
2025-03-23 09:18:42 +08:00
size="small"
class="thebtn4"
:disabled="multiple"
@click="deleteDelivery"
>{{ '批量删除' }}</el-button>
2025-03-23 09:18:42 +08:00
<el-button
v-hasButtons="['DeliveryHandledExport']"
size="small"
2025-03-23 09:18:42 +08:00
class="thebtn1"
@click="handleExport"
>{{ '导出' }}</el-button>
<el-button
v-hasButtons="['DeliveryHandledExport']"
size="small"
class="thebtn1"
@click="handleWaresExport"
>仓储导出</el-button>
2025-03-23 09:18:42 +08:00
</div>
</div>
<el-table
:data="tableData"
height="540px"
style="width: 100%"
:header-cell-style="{ background: '#EEEEEE' }"
:span-method="objectSpanMethod"
@selection-change="handleSelectionChange"
2025-03-23 09:18:42 +08:00
>
<!-- :row-class-name="tableRowClassName"
-->
<el-table-column prop="colsele" type="selection" width="55" />
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
width="80px"
prop="dayBatch"
label="批次"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
width="60px"
prop="batchNumber"
label="序号"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
width="200px"
2025-03-23 09:18:42 +08:00
prop="deliverCode"
2025-04-01 23:46:26 +08:00
:label="'发货单号'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
width="200px"
2025-03-23 09:18:42 +08:00
align="center"
prop="orderCode"
2025-04-01 23:46:26 +08:00
:label="'订单编号'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="orderTypeVal"
2025-04-01 23:46:26 +08:00
:label="'订单类型'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="orderStatusVal"
2025-04-01 23:46:26 +08:00
:label="'订单状态'"
2025-03-23 09:18:42 +08:00
width="120px"
>
<template slot-scope="scope">
<span>{{ scope.row.orderStatusVal }}</span>
<span
style="font-size: 18px; cursor: pointer; margin-left: 10px"
@click="deleteOrderRow(scope.row)"
><i class="el-icon-delete" /></span>
2025-03-23 09:18:42 +08:00
</template>
</el-table-column>
<el-table-column
width="150px"
align="center"
prop="memberCode"
2025-04-01 23:46:26 +08:00
:label="'会员编号'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="memberName"
2025-04-01 23:46:26 +08:00
:label="'会员姓名'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
width="150px"
align="center"
prop="phone"
2025-04-01 23:46:26 +08:00
:label="'联系方式'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
min-width="120px"
prop="productCode"
2025-04-01 23:46:26 +08:00
:label="'产品编号'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
width="150px"
align="center"
prop="productName"
2025-04-01 23:46:26 +08:00
:label="'产品名称'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
width="150px"
align="center"
prop="specsName"
2025-04-01 23:46:26 +08:00
:label="'产品规格'"
/>
<el-table-column align="center" prop="unitName" :label="'产品单位'" />
2025-03-23 09:18:42 +08:00
<el-table-column align="center" prop="quantity" :label="'产品数量'" />
<el-table-column align="center" prop="isBarCodeVal" label="是否追溯" />
<el-table-column align="center" prop="barCode" :label="'追溯编号'" />
<el-table-column align="center" prop="scanTime" :label="'扫码日期'" />
2025-03-23 09:18:42 +08:00
<el-table-column align="center" prop="recName" :label="'收货人'" />
2025-03-23 09:18:42 +08:00
<el-table-column
width="150px"
align="center"
prop="recPhone"
2025-04-01 23:46:26 +08:00
:label="'收货电话'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
width="180px"
align="center"
prop="recAddress"
:formatter="formatAddress"
2025-04-01 23:46:26 +08:00
:label="'收货地址'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="shippingChannelVal"
2025-04-01 23:46:26 +08:00
:label="'发货类型'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
min-width="100px"
align="center"
prop="storehouseName"
2025-04-01 23:46:26 +08:00
:label="'发货仓库'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="printStatusVal"
2025-04-01 23:46:26 +08:00
:label="'打印状态'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
width="150px"
align="center"
prop="payTime"
2025-04-01 23:46:26 +08:00
:label="'支付日期'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="deliveryWayVal"
2025-04-01 23:46:26 +08:00
:label="'发货方式'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="operateScopeVal"
2025-04-01 23:46:26 +08:00
:label="'供应方式'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="tranTypeVal"
2025-04-01 23:46:26 +08:00
:label="'运输方式'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="preSaleStatusVal"
2025-04-01 23:46:26 +08:00
:label="'预售状态'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="logisticsCompany"
2025-04-01 23:46:26 +08:00
:label="'物流公司'"
/>
2025-03-23 09:18:42 +08:00
<el-table-column
align="center"
prop="logisticsCode"
2025-04-01 23:46:26 +08:00
:label="'物流单号'"
/>
<el-table-column align="center" prop="remark" :label="'备注'" />
<!-- <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>-->
2025-03-23 09:18:42 +08:00
<el-table-column
width="150px"
align="center"
prop="creationTime"
2025-04-01 23:46:26 +08:00
:label="'创建日期'"
/>
2025-03-23 09:18:42 +08:00
</el-table>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="params.pageNum"
:limit.sync="params.pageSize"
:page-sizes="pageSizes"
2025-03-23 09:18:42 +08:00
@pagination="getList"
/>
<!-- 打印货单1版 -->
<!-- <el-dialog
:close-on-click-modal="false"
:visible.sync="scdyShow2"
width="800px"
center
append-to-body
class="fhd_dialog"
>
<div class="fhdbox" v-for="(item, index) in dyhdData" :key="index">
<div class="fhdtop">
<el-row>
<el-col :span="12">
<div>条形码</div>
</el-col>
<el-col :span="12">
<span class="col_title">打印时间</span>
<span class="col-content">2022-11-03 12:12:00</span>
</el-col>
</el-row>
<el-row class="mainrow">
<el-col :span="12">
<span class="col_title">发货单号</span>
<span class="col-content">{{ item.deliverCode }}</span>
</el-col>
</el-row>
</div>
<div class="fhdtop">
<el-row>
<el-col :span="12">
<span class="col_title">收货人</span>
<span class="col-content">{{ item.recName }}</span>
</el-col>
<el-col :span="12">
<span class="col_title">收货电话</span>
<span>{{ item.recPhone }}</span>
</el-col>
</el-row>
<el-row class="mainrow">
<el-col :span="10">
<div class="fhd_flex">
<span class="col_title">收货地址</span>
<span class="col-content">
<el-input v-model="item.recAddress" disabled></el-input>
</span>
</div>
</el-col>
<el-col :span="14">
<el-input type="textarea" :rows="3"></el-input>
</el-col>
</el-row>
</div>
<el-table
:data="item.itemList"
:header-cell-style="{ background: '#EEEEEE' }"
border
>
2025-04-01 23:46:26 +08:00
<el-table-column align="center" prop="productName" :label="'产品名称'">
2025-03-23 09:18:42 +08:00
</el-table-column>
2025-04-01 23:46:26 +08:00
<el-table-column align="center" prop="specsName" :label="'产品规格'">
2025-03-23 09:18:42 +08:00
</el-table-column>
2025-04-01 23:46:26 +08:00
<el-table-column align="center" prop="quantity" :label="'产品数量'">
2025-03-23 09:18:42 +08:00
</el-table-column>
2025-04-01 23:46:26 +08:00
<el-table-column align="center" prop="price" :label="'订单金额'">
2025-03-23 09:18:42 +08:00
</el-table-column>
</el-table>
</div>
</el-dialog> -->
<el-dialog
:title="zsTitle"
:close-on-click-modal="false"
:visible.sync="bdzsShow"
width="70%"
append-to-body
><div>
<el-table
ref="singleTable"
:data="codeData"
height="500px"
style="width: 100%"
:header-cell-style="{ background: '#EEEEEE' }"
border
@current-change="handleCurrentChange"
>
<el-table-column
align="center"
prop="orderCode"
:label="'订单编号'"
/>
<el-table-column
align="center"
prop="productName"
:label="'产品名称'"
/>
<el-table-column
align="center"
prop="specsName"
:label="'产品规格'"
/>
<el-table-column
align="center"
prop="productNum"
:label="'产品数量'"
/>
<el-table-column align="center" prop="barCode" :label="'追溯编号'">
<template slot-scope="scope">
<el-input
:ref="'mark' + scope.$index"
v-model="scope.row.barCode"
:disabled="!ifcodebind"
tabindex="1"
@keydown.enter.native="nextFocus"
/>
</template>
</el-table-column>
<el-table-column align="center" prop="" :label="'操作'">
<template slot-scope="scope">
<div
v-if="ifcodebind"
style="cursor: pointer; color: #409eff"
@click="reCz(scope.row)"
>
{{ '重置' }}
</div>
<div
style="color: #c73030; cursor: pointer"
@click="handleDelete(scope.row, scope.$index, codeData)"
>
{{ '删除' }}
</div>
</template>
</el-table-column>
</el-table>
<div class="footer" style="text-align: center; margin-top: 20px">
<el-button @click="bdzsShow = false">
{{ '取消' }}</el-button>
<el-button type="primary" @click="sureBd">{{
'确定'
}}</el-button>
2025-03-23 09:18:42 +08:00
</div>
</div>
2025-03-23 09:18:42 +08:00
</el-dialog>
<!-- 国内打印 -->
<div v-show="false" id="print-content">
<div v-for="(item, index) in dyhdData" :key="index" class="fhdbox2">
2025-03-23 09:18:42 +08:00
<div>
<div
class="fhdTitle"
style="
font-weight: 600;
font-size: 16px;
margin-bottom: 5px;
text-align: center;
"
>
出库单汇总
</div>
<div
class="mainrow2"
style="
font-weight: 400;
font-size: 14px;
margin-bottom: 5px;
margin-right: 20px;
text-align: right;
"
>
序号{{ item.batchNumber }} / {{ item.batchCount }}
</div>
<div style="padding-right: 20px">
<img :id="'barcode' + index">
2025-03-23 09:18:42 +08:00
</div>
<div
class="mainrow2"
style="
padding: 5px 0;
display: flex;
align-items: center;
font-size: 12px;
"
>
<div class="rowcontent" style="width: 400px">
发货单编号{{ item.deliverCode }}
</div>
<div class="rowcontent" style="width: 400px">
<!-- 出货仓库{{ item.houseName }} -->
</div>
<div class="rowcontent" style="width: 400px">
2025-04-01 23:46:26 +08:00
{{ '支付时间' }}{{ item.payTime }}
2025-03-23 09:18:42 +08:00
</div>
</div>
<div
class="mainrow2"
style="
padding: 5px 0;
display: flex;
align-items: center;
font-size: 12px;
"
>
<div class="rowcontent" style="width: 400px">
收货人{{ item.recName }}
</div>
<div class="rowcontent" style="width: 400px">
收货电话{{ item.recPhone }}
</div>
<div class="rowcontent" style="width: 400px">
2025-04-01 23:46:26 +08:00
{{ '打印时间' }}{{ item.printTime }}
2025-03-23 09:18:42 +08:00
</div>
</div>
<div class="mainrow2" style="font-size: 12px">
<div>
2025-04-01 23:46:26 +08:00
<span> {{ '收货地址' }}:</span>
2025-03-23 09:18:42 +08:00
<span>
{{ item.recProvinceVal }}{{ item.recCityVal
}}{{ item.recCountyVal || "" }}{{ item.recAddress }}</span>
2025-03-23 09:18:42 +08:00
</div>
</div>
<table
class="tables"
style="
margin-top: 10px;
width: 100%;
background: #fff;
border-collapse: collapse;
border: 1px solid #cccccc;
border-spacing: 0;
table-layout: fixed;
font-size:12px;!important
border-collapse: collapse;
"
border
:data="item.itemList"
>
<tr>
2025-04-01 23:46:26 +08:00
<td colspan="3">{{ '产品编码' }}</td>
<td colspan="5">{{ '产品名称' }}</td>
<td colspan="4">{{ '产品规格' }}</td>
<td colspan="1">{{ '单位' }}</td>
<td colspan="1">{{ '数量' }}</td>
<td colspan="2">{{ '金额' }}</td>
<!-- <td colspan="2">{{ '金额' }}</td> -->
<!-- <td colspan="2">{{ '备注' }}</td> -->
2025-03-23 09:18:42 +08:00
</tr>
<tr v-for="(aitem, aindex) in item.itemList" :key="aindex">
<td colspan="3">{{ aitem.productCode }}</td>
<td colspan="5">{{ aitem.productName }}</td>
<td colspan="4">{{ aitem.specsName }}</td>
<td colspan="1">{{ aitem.unitTransactionVal }}</td>
<td colspan="1">{{ aitem.quantity }}</td>
<td colspan="2">{{ aitem.price | decimalFormat }}</td>
<!-- <td colspan="2">{{ aitem.price * aitem.quantity }}</td> -->
<!-- <td colspan="2">{{ aitem.remarks }}</td> -->
</tr>
</table>
<div
class="mainrow2"
style="
padding: 5px 0;
display: flex;
align-items: center;
margin-top: 20px;
font-size: 12px;
"
>
<div class="rowcontent" style="width: 260px">制单人</div>
<div class="rowcontent" style="width: 260px">出库人</div>
<div class="rowcontent" style="width: 260px">出库时间</div>
<div class="rowcontent" style="width: 260px">
客服热线4001112818
</div>
</div>
<div>
<span style="font-weight: bold; font-size: 12px">温馨提示</span>
<span
style="font-size:10px;!important"
>尊敬的各位家人感谢您长期以来对海之圣的支持与厚爱当您收到货物时请检查货物是否有破损当场开箱验货确认无误后再签收哦如有问题请第一时间致电公司客服热线我们将一如既往的为您提供优质快捷的物流服务</span>
2025-03-23 09:18:42 +08:00
</div>
<div style="page-break-after: always" />
2025-03-23 09:18:42 +08:00
</div>
<div
v-for="(titem, tindex) in item.orderList"
:key="tindex"
style="font-size: 12px"
2025-03-23 09:18:42 +08:00
>
<div
class="fhdTitle"
style="
font-weight: 600;
font-size: 16px;
margin-bottom: 5px;
text-align: center;
"
>
出库单明细
</div>
<div
class="mainrow2"
style="display: flex; align-items: center; font-size: 12px"
>
<div class="rowcontent" style="width: 400px">
会员编号{{ titem.memberCode }}
</div>
<div class="rowcontent" style="width: 400px">
会员姓名{{ titem.memberName }}
</div>
<div class="rowcontent" style="width: 400px">
2025-04-01 23:46:26 +08:00
{{ '支付时间' }}{{ titem.payTime }}
2025-03-23 09:18:42 +08:00
</div>
</div>
<div
class="mainrow2"
style="display: flex; align-items: center; font-size: 12px"
>
<!-- <div class="rowcontent" style="width: 400px">
出货仓库{{ titem.houseName }}
</div> -->
<!-- <div class="rowcontent" style="width: 400px">
订单类型{{ titem.orderTypeVal }}
</div> -->
<div class="rowcontent" style="width: 400px">
2025-04-01 23:46:26 +08:00
{{ '打印时间' }}{{ titem.printTime }}
2025-03-23 09:18:42 +08:00
</div>
<div class="rowcontent" style="width: 400px">
<!-- 订单类型{{ titem.orderTypeVal }} -->
</div>
</div>
<div
class="mainrow2"
style="display: flex; align-items: center; font-size: 12px"
>
<div class="rowcontent" style="width: 400px">
收货人{{ titem.recName }}
</div>
<div class="rowcontent" style="width: 400px">
收货电话{{ titem.recPhone }}
</div>
<div class="rowcontent" style="width: 400px">
收货地址{{ titem.recProvinceVal }}{{ titem.recCityVal
}}{{ titem.recCountyVal || "" }}{{ titem.recAddress }}
</div>
</div>
<!-- <div class="mainrow2" style="font-size:12px;">
<div>
2025-04-01 23:46:26 +08:00
<span> {{ '收货地址' }}:</span>
2025-03-23 09:18:42 +08:00
<span>
{{ titem.recProvinceVal }}{{ titem.recCityVal
}}{{ titem.recCountyVal || "" }}{{ titem.recAddress }}</span
>
</div>
</div> -->
<table
class="tables"
style="
margin-top: 10px;
width: 100%;
background: #fff;
border-collapse: collapse;
border: 1px solid #cccccc;
border-spacing: 0;
table-layout: fixed;
border-collapse: collapse;
font-size: 12px;
"
border
:data="titem.orderItemsList"
>
<tr>
<td colspan="5">订单编号</td>
2025-04-01 23:46:26 +08:00
<td colspan="4">{{ '产品编码' }}</td>
<td colspan="4">{{ '产品名称' }}</td>
<td colspan="4">{{ '产品规格' }}</td>
<td colspan="1">{{ '单位' }}</td>
<td colspan="1">{{ '数量' }}</td>
<td colspan="2">{{ '金额' }}</td>
<!-- <td colspan="2">{{ '金额' }}</td> -->
<!-- <td colspan="2">{{ '备注' }}</td> -->
2025-03-23 09:18:42 +08:00
</tr>
<tr v-for="(aitem, aindex) in titem.orderItemsList" :key="aindex">
<td colspan="5">{{ aitem.orderCode }}</td>
<td colspan="4">{{ aitem.productCode }}</td>
<td colspan="4">{{ aitem.productName }}</td>
<td colspan="4">{{ aitem.specsName }}</td>
<td colspan="1">{{ aitem.unitTransactionVal }}</td>
<td colspan="1">{{ aitem.quantity }}</td>
<td colspan="2">{{ aitem.price | decimalFormat }}</td>
</tr>
</table>
<div
class="mainrow2"
style="
padding: 5px 0;
display: flex;
align-items: center;
margin-top: 20px;
font-size: 12px;
"
>
<div class="rowcontent" style="width: 260px">制单人</div>
<div class="rowcontent" style="width: 260px">出库人</div>
<div class="rowcontent" style="width: 260px">
客服热线4001112818
</div>
<div class="rowcontent" style="width: 260px" />
2025-03-23 09:18:42 +08:00
</div>
<div>
<span style="font-weight: bold; font-size: 12px">温馨提示</span>
<span
style="font-size:10px;!important"
>尊敬的各位家人感谢您长期以来对海之圣的支持与厚爱当您收到货物时请检查货物是否有破损当场开箱验货确认无误后再签收哦如有问题请第一时间致电公司客服热线我们将一如既往的为您提供优质快捷的物流服务</span>
2025-03-23 09:18:42 +08:00
</div>
<div style="page-break-after: always" />
2025-03-23 09:18:42 +08:00
</div>
</div>
</div>
<!-- 海外打印 -->
<div v-show="false" id="print-content2">
2025-03-23 09:18:42 +08:00
<div
v-for="(item, index) in dyhdData"
:key="index"
class="fhdbox2"
style="min-height: 100vh"
2025-03-23 09:18:42 +08:00
>
<div
class="fhdTitle"
style="
text-align: center;
font-weight: 600;
font-size: 16px;
margin-bottom: 5px;
"
>
2025-04-01 23:46:26 +08:00
{{ '出库单' }}
2025-03-23 09:18:42 +08:00
</div>
<div style="text-align: right; line-height: 24px">
2025-04-01 23:46:26 +08:00
{{ '快递发货' }}
2025-03-23 09:18:42 +08:00
</div>
<div
style="
text-align: right;
line-height: 24px;
border-bottom: 2px solid #000000;
padding-bottom: 10px;
"
>
2025-04-01 23:46:26 +08:00
{{ '订单日期' }} {{ item.printTime }}
2025-03-23 09:18:42 +08:00
</div>
<div
class="mainrow2"
style="padding: 5px 0; display: flex; align-items: center"
>
<div
class="rowcontent"
style="border-bottom: 2px solid #000000; padding-bottom: 10px"
>
2025-04-01 23:46:26 +08:00
{{ '发货单号' }} {{ item.deliverCode }}
2025-03-23 09:18:42 +08:00
</div>
<!-- <div class="rowcontent">订单类型{{ item.deliverCode }}</div> -->
</div>
<div
class="mainrow2"
style="padding: 5px 0; display: flex; align-items: center"
>
<div
class="rowcontent"
style="
width: 46%;
border-top: 2px solid #000000;
margin-right: 10px;
padding-top: 10px;
"
>
2025-04-01 23:46:26 +08:00
{{ '收货人'
2025-03-23 09:18:42 +08:00
}}<span style="margin-left: 20px">{{ item.recName }}</span>
</div>
<div
class="rowcontent"
style="width: 46%; border-top: 2px solid #000000; padding-top: 10px"
>
2025-04-01 23:46:26 +08:00
{{ '联系电话'
2025-03-23 09:18:42 +08:00
}}<span style="margin-left: 20px">{{ item.recPhone }}</span>
</div>
</div>
<div class="mainrow2">
<div>
2025-04-01 23:46:26 +08:00
<span> {{ '收货地址' }}</span>
2025-03-23 09:18:42 +08:00
<span style="margin-left: 30px"> {{ item.recAddress }}</span>
</div>
</div>
<!-- <div
class="mainrow2"
style="
padding: 5px 0;
display: flex;
align-items: center;
border-top: 2px solid #000000;
border-bottom: 2px solid #000000;
"
>
<div
class="rowcontent"
style="width: 50%; display: flex; align-items: center"
>
<div style="padding-right: 20px; border-right: 2px solid #000000">
会员编号
</div>
<span style="margin-left: 20px">{{ item.recName }}</span>
</div>
<div
class="rowcontent"
style="width: 50%; display: flex; align-items: center"
>
<div style="padding-right: 20px; border-right: 2px solid #000000">
会员姓名
</div>
<span style="margin-left: 20px">{{ item.recPhone }}</span>
</div>
</div> -->
<table
class="tables"
style="
margin-top: 10px;
width: 100%;
background: #fff;
border-collapse: collapse;
border-spacing: 0;
table-layout: fixed;
border-collapse: collapse;
"
:data="item.itemList"
>
<tr style="border-bottom: 2px solid #000000; padding-bottom: 10px">
<td colspan="3" style="border-left: none; border-right: none">
2025-04-01 23:46:26 +08:00
{{ '产品名称' }}
2025-03-23 09:18:42 +08:00
</td>
2025-04-01 23:46:26 +08:00
<td colspan="1">{{ '单位' }}</td>
<td colspan="2">{{ '销售数量' }}</td>
<td colspan="2">{{ '产品单价' }}</td>
<td colspan="2">{{ '总金额' }}</td>
<td colspan="2">{{ '产品规格' }}</td>
<td colspan="2">{{ '赠品数量' }}</td>
<td colspan="2">{{ '出库数量' }}</td>
2025-03-23 09:18:42 +08:00
</tr>
<tr v-for="(aitem, aindex) in item.itemList" :key="aindex">
<td colspan="3">{{ aitem.productName }}</td>
<td colspan="1">{{ aitem.unitTran }}</td>
<td colspan="2">{{ aitem.quantity }}</td>
<td colspan="2">{{ aitem.price }}</td>
<td colspan="2">{{ aitem.price * aitem.quantity }}</td>
<td colspan="2">{{ aitem.specsName }}</td>
<td colspan="2" />
<td colspan="2" />
2025-03-23 09:18:42 +08:00
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import * as del from '@/api/delivery'
import JsBarcode from 'jsbarcode'
2025-03-23 09:18:42 +08:00
export default {
name: 'Yihandeled',
filters: {
decimalFormat(value) {
return Number(value).toFixed(2)
}
},
2025-03-23 09:18:42 +08:00
props: {
params: {
type: Object,
default: null
}
2025-03-23 09:18:42 +08:00
},
data() {
return {
tableData: [],
total: 0,
idList: [],
orderIdList: [],
multiple: true,
bdzsShow: false,
zsTitle: '',
ifcodebind: '', // true绑定false解绑
2025-03-23 09:18:42 +08:00
codeData: [],
delIdList: [], // 存放删除
delIdList2: [], // 存放解绑
2025-03-23 09:18:42 +08:00
pageSizes: [100, 200, 500, 1000, 2000],
// 需要合并项的列
needMergeArr: [
{
colName: 'colsele',
mergeCheckNames: ['deliverCode']
2025-03-23 09:18:42 +08:00
},
{
colName: 'deliverCode',
mergeCheckNames: ['deliverCode']
2025-03-23 09:18:42 +08:00
},
{
colName: 'orderCode',
mergeCheckNames: ['deliverCode', 'orderCode']
2025-03-23 09:18:42 +08:00
},
{
colName: 'orderTypeVal',
mergeCheckNames: ['deliverCode', 'orderCode', 'orderTypeVal']
2025-03-23 09:18:42 +08:00
},
{
colName: 'memberCode',
mergeCheckNames: ['deliverCode', 'orderCode', 'memberCode']
2025-03-23 09:18:42 +08:00
},
{
colName: 'memberName',
mergeCheckNames: ['deliverCode', 'orderCode', 'memberName']
2025-03-23 09:18:42 +08:00
},
{
colName: 'phone',
mergeCheckNames: ['deliverCode', 'orderCode', 'phone']
2025-03-23 09:18:42 +08:00
},
{
colName: 'recName',
mergeCheckNames: ['deliverCode', 'orderCode', 'recName']
2025-03-23 09:18:42 +08:00
},
{
colName: 'recPhone',
mergeCheckNames: ['deliverCode', 'orderCode', 'recPhone']
2025-03-23 09:18:42 +08:00
},
{
colName: 'recAddress',
mergeCheckNames: ['deliverCode', 'orderCode', 'recAddress']
2025-03-23 09:18:42 +08:00
},
{
colName: 'operateScopeVal',
mergeCheckNames: ['deliverCode', 'orderCode', 'operateScopeVal']
2025-03-23 09:18:42 +08:00
},
{
colName: 'isLandTransVal',
mergeCheckNames: ['deliverCode', 'orderCode', 'isLandTransVal']
2025-03-23 09:18:42 +08:00
},
{
colName: 'deliveryWayVal',
mergeCheckNames: ['deliverCode', 'orderCode', 'deliveryWayVal']
2025-03-23 09:18:42 +08:00
},
{
colName: 'preSaleStatusVal',
mergeCheckNames: ['deliverCode', 'orderCode', 'preSaleStatusVal']
2025-03-23 09:18:42 +08:00
},
{
colName: 'printStatusVal',
mergeCheckNames: ['deliverCode', 'orderCode', 'printStatusVal']
2025-03-23 09:18:42 +08:00
},
{
colName: 'remark',
mergeCheckNames: ['deliverCode', 'orderCode', 'remark']
2025-03-23 09:18:42 +08:00
},
{
colName: 'creationTime',
mergeCheckNames: ['deliverCode', 'orderCode', 'creationTime']
2025-03-23 09:18:42 +08:00
},
{
colName: 'payTime',
mergeCheckNames: ['deliverCode', 'orderCode', 'payTime']
2025-03-23 09:18:42 +08:00
},
{
colName: 'logisticsCompany',
mergeCheckNames: ['deliverCode', 'orderCode', 'logisticsCompany']
2025-03-23 09:18:42 +08:00
},
{
colName: 'logisticsCode',
mergeCheckNames: ['deliverCode', 'orderCode', 'logisticsCode']
}
2025-03-23 09:18:42 +08:00
],
rowMergeArrs: {}, // 包含需要一个或多个合并项信息的对象
dyhdTable: [],
dyhdData: [],
pkCountry: '',
currentRow: ''
}
2025-03-23 09:18:42 +08:00
},
computed: {
...mapGetters(['user'])
2025-03-23 09:18:42 +08:00
},
mounted() {
this.getList()
this.pkCountry = this.user.pkCountry
2025-03-23 09:18:42 +08:00
},
methods: {
formatAddress(row) {
return (
row.recProvinceVal +
row.recCityVal +
(row.recCountyVal || '') +
2025-03-23 09:18:42 +08:00
row.recAddress
)
2025-03-23 09:18:42 +08:00
},
// 条码枪回车
handleCurrentChange(val) {
this.currentRow = val
2025-03-23 09:18:42 +08:00
},
// 条码枪回车
nextFocus() {
const len = this.codeData.length
const val = this.currentRow
2025-03-23 09:18:42 +08:00
this.codeData.forEach((v, i) => {
if (v === val) {
if (i < len - 1) {
this.setCurrent(this.codeData[i + 1])
this.$refs['mark' + (i + 1)].focus()
2025-03-23 09:18:42 +08:00
} else {
this.setCurrent(this.codeData[0])
this.$refs['mark' + 0].focus()
2025-03-23 09:18:42 +08:00
}
}
})
2025-03-23 09:18:42 +08:00
},
// 条码枪回车
setCurrent(row) {
this.$refs.singleTable.setCurrentRow(row)
2025-03-23 09:18:42 +08:00
},
totalAmount(row) {
let total2 = ''
2025-03-23 09:18:42 +08:00
total2 = row.price * row.quantity
return total2
2025-03-23 09:18:42 +08:00
},
// 解决多列行列合并,根据某一列 合并其他列
2025-03-23 09:18:42 +08:00
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
const needMerge = this.needMergeArr.some((item) => {
return item.colName === column.property
})
2025-03-23 09:18:42 +08:00
if (needMerge === true) {
return this.mergeAction(column.property, rowIndex, column)
2025-03-23 09:18:42 +08:00
}
},
mergeAction(val, rowIndex, colData) {
const _row = this.rowMergeArrs[val].rowArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return [_row, _col]
2025-03-23 09:18:42 +08:00
},
rowMergeHandle(arr, data) {
if (!Array.isArray(arr) && !arr.length) return false
if (!Array.isArray(data) && !data.length) return false
const needMerge = {}
2025-03-23 09:18:42 +08:00
arr.forEach((mergeItem) => {
// 创建合并管理对象
needMerge[mergeItem.colName] = {
rowArr: [],
rowMergeNum: 0
}
const currentMergeItemData = needMerge[mergeItem.colName]
2025-03-23 09:18:42 +08:00
// 进行合并管理对象数据的遍历整理
data.forEach((item, index) => {
if (index === 0) {
currentMergeItemData.rowArr.push(1)
currentMergeItemData.rowMergeNum = 0
2025-03-23 09:18:42 +08:00
} else {
const currentRowData = data[index]
const preRowData = data[index - 1]
2025-03-23 09:18:42 +08:00
if (
this.colMergeCheck(
currentRowData,
preRowData,
mergeItem.mergeCheckNames
)
) {
currentMergeItemData.rowArr[
currentMergeItemData.rowMergeNum
] += 1
currentMergeItemData.rowArr.push(0)
2025-03-23 09:18:42 +08:00
} else {
currentMergeItemData.rowArr.push(1)
currentMergeItemData.rowMergeNum = index
2025-03-23 09:18:42 +08:00
}
}
})
})
return needMerge
2025-03-23 09:18:42 +08:00
},
colMergeCheck(currentRowData, preRowData, mergeCheckNames) {
if (!Array.isArray(mergeCheckNames) && !mergeCheckNames.length) { return false }
let result = true
2025-03-23 09:18:42 +08:00
for (let index = 0; index < mergeCheckNames.length; index++) {
const mergeCheckName = mergeCheckNames[index]
2025-03-23 09:18:42 +08:00
if (currentRowData[mergeCheckName] !== preRowData[mergeCheckName]) {
result = false
break
2025-03-23 09:18:42 +08:00
}
}
return result
2025-03-23 09:18:42 +08:00
},
// 删除行内订单状态列
2025-03-23 09:18:42 +08:00
deleteOrderRow(row) {
this.$confirm('是否删除' + '?').then((_) => {
2025-03-23 09:18:42 +08:00
del.deleteDeliverItems({ id: row.pkId || null }).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
})
this.getList()
2025-03-23 09:18:42 +08:00
}
})
})
2025-03-23 09:18:42 +08:00
},
// 重置
2025-03-23 09:18:42 +08:00
reCz(row) {
2025-04-01 23:46:26 +08:00
this.$confirm('是否重置?').then((_) => {
row.barCode = ''
2025-03-23 09:18:42 +08:00
// del
// .codeReset({ barCodeId: row.deliverBarCodeId || null })
// .then((res) => {
// if (res.code == 200) {
// this.$message({
// message: res.msg,
// type: "success",
// });
// }
// });
})
2025-03-23 09:18:42 +08:00
},
// 列表删除
2025-03-23 09:18:42 +08:00
deleteDelivery() {
this.$confirm('是否删除' + '?').then((_) => {
2025-03-23 09:18:42 +08:00
del.deleteDeliver({ idList: this.idList.join() }).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
})
this.getList()
2025-03-23 09:18:42 +08:00
}
})
})
2025-03-23 09:18:42 +08:00
},
// 删除
2025-03-23 09:18:42 +08:00
handleDelete(row, index, rows) {
if (this.ifcodebind) {
// 绑定-删除
this.$confirm('是否删除' + '?').then((_) => {
2025-03-23 09:18:42 +08:00
if (row.deliverBarCodeId) {
del.codeReset({ barCodeId: row.deliverBarCodeId }).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
})
rows.splice(index, 1)
2025-03-23 09:18:42 +08:00
}
})
2025-03-23 09:18:42 +08:00
} else {
this.$message({
message: '没有绑定过追溯码',
type: 'warning'
})
2025-03-23 09:18:42 +08:00
}
})
2025-03-23 09:18:42 +08:00
} else {
// 解绑-删除
2025-03-23 09:18:42 +08:00
this.$confirm('是否删除' + '?').then((_) => {
2025-03-23 09:18:42 +08:00
if (row.deliverBarCodeId) {
del.codeReset({ barCodeId: row.deliverBarCodeId }).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
})
2025-03-23 09:18:42 +08:00
}
})
const thedel1 = []
thedel1.push(row.deliverBarCodeId)
this.delIdList = thedel1
rows.splice(index, 1)
2025-03-23 09:18:42 +08:00
} else {
this.$message({
message: '没有绑定过追溯码',
type: 'warning'
})
2025-03-23 09:18:42 +08:00
}
})
2025-03-23 09:18:42 +08:00
}
},
getList() {
this.params.pkDeliverList = []
2025-03-23 09:18:42 +08:00
del.getDeliveryHandledList(this.params).then((res) => {
this.tableData = res.rows
this.total = res.total
2025-03-23 09:18:42 +08:00
this.rowMergeArrs = this.rowMergeHandle(
this.needMergeArr,
this.tableData
)
})
2025-03-23 09:18:42 +08:00
},
// 绑定/解绑
2025-03-23 09:18:42 +08:00
sureBd() {
if (this.ifcodebind == true) {
// 绑定
2025-03-23 09:18:42 +08:00
del.savCodeBind(this.codeData).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
})
this.bdzsShow = false
this.getList()
2025-03-23 09:18:42 +08:00
}
})
2025-03-23 09:18:42 +08:00
} else {
if (this.codeData.length > 0) {
// 解绑确定
2025-03-23 09:18:42 +08:00
del.codeUnbind(this.delIdList2).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: 'success'
})
this.bdzsShow = false
this.getList()
2025-03-23 09:18:42 +08:00
}
})
2025-03-23 09:18:42 +08:00
} else {
this.bdzsShow = false
2025-03-23 09:18:42 +08:00
}
}
},
codeBind(index) {
this.delIdList = []
this.ifcodebind = index
2025-03-23 09:18:42 +08:00
if (index == true) {
// 绑定追溯
this.zsTitle = '绑定追溯码'
2025-03-23 09:18:42 +08:00
del
.getCodeBindData({ deliverIdList: this.idList.join() })
.then((res) => {
res.data.forEach((element) => {
element.productNum = 1
})
this.codeData = res.data
})
2025-03-23 09:18:42 +08:00
} else if (index == false) {
// 解绑追溯
this.zsTitle = '解绑追溯码'
2025-03-23 09:18:42 +08:00
del
.getCodeUnbindData({
deliverIdList: this.idList.join(),
orderIdList: this.orderIdList.join()
2025-03-23 09:18:42 +08:00
})
.then((res) => {
res.data.forEach((element) => {
element.productNum = 1
})
this.codeData = res.data
const thedel2 = []
2025-03-23 09:18:42 +08:00
res.data.forEach((ele) => {
thedel2.push(ele.deliverBarCodeId)
})
this.delIdList2 = thedel2
})
2025-03-23 09:18:42 +08:00
}
this.bdzsShow = true
2025-03-23 09:18:42 +08:00
},
// 生成打印
2025-03-23 09:18:42 +08:00
getPrintCheck() {
del
.deliverHandledPrint({ deliverIdList: this.idList.join() })
.then((res) => {
this.dyhdData = res.data
2025-03-23 09:18:42 +08:00
})
.finally(() => {
// 在接口请求完成后,循环生成条形码并展示在页面上
// 循环生成条形码并展示在页面上
this.dyhdData.forEach((item, index) => {
// 使用JsBarcode生成条形码图片
JsBarcode('#barcode' + index, item.deliverCode, {
format: 'CODE128',
lineColor: '#000',
background: '#EBEEF5',
2025-03-23 09:18:42 +08:00
width: 2,
height: 20,
displayValue: false
})
})
2025-03-23 09:18:42 +08:00
})
.then(() => {
if (this.pkCountry == 1) {
const printContent = document.getElementById('print-content')
const printWindow = window.open('', '_blank') // 这句解决edge浏览器打不开的问题
printWindow.document.write(printContent.innerHTML)
printWindow.document.close()
printWindow.focus()
printWindow.print()
2025-05-15 09:55:55 +08:00
// printWindow.close()
2025-03-23 09:18:42 +08:00
} else {
const printContent = document.getElementById('print-content2')
const printWindow = window.open('', '_blank') // 这句解决edge浏览器打不开的问题
printWindow.document.write(printContent.innerHTML)
printWindow.document.close()
printWindow.focus()
printWindow.print()
2025-05-15 09:55:55 +08:00
// printWindow.close()
2025-03-23 09:18:42 +08:00
}
})
2025-03-23 09:18:42 +08:00
},
handleSelectionChange(selection) {
this.idList = selection.map((item) => item.pkDeliver)
this.orderIdList = selection.map((item) => item.pkOrder)
this.multiple = !selection.length
2025-03-23 09:18:42 +08:00
},
// 导出
2025-03-23 09:18:42 +08:00
handleExport() {
this.params.pkDeliverList = this.idList
2025-04-01 23:46:26 +08:00
this.$confirm('是否确认导出所有数据项?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
2025-03-23 09:18:42 +08:00
}).then((_) => {
this.download(
'/sale/manage/deliver-handled/export',
2025-03-23 09:18:42 +08:00
{ ...this.params },
2025-04-01 23:46:26 +08:00
`${'已合单'}${new Date().getTime()}.xlsx`
)
})
},
handleWaresExport() {
this.params.pkDeliverList = this.idList
this.$confirm('是否确认导出所有数据项?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then((_) => {
this.download(
'/sale/manage/deliver-handled/wms-export',
{ ...this.params },
`${'已合单-仓储导出'}${new Date().getTime()}.xlsx`
)
})
}
}
}
2025-03-23 09:18:42 +08:00
</script>
<style lang="scss" scoped>
@media print {
table {
width: 100%;
background: #fff;
border-collapse: collapse;
border: 1px solid #cccccc;
border-spacing: 0;
table-layout: fixed;
border-collapse: collapse;
// 合并内外边距
// (去除表格单元格默认的2个像素内外边距*/
}
.fhdbox2 {
background: #ffffff;
padding: 20px;
margin-top: 10px;
}
.fhdbox2 .fhdTitle {
text-align: center;
font-weight: 600;
font-size: 20px;
margin-bottom: 10px;
}
.fhdbox2 .mainrow2 {
padding: 5px 0;
display: flex;
align-items: center;
}
}
.tables {
width: 100%;
background: #fff;
border-collapse: collapse;
border: 1px solid #cccccc;
border-spacing: 0;
table-layout: fixed;
border-collapse: collapse;
// 合并内外边距
// (去除表格单元格默认的2个像素内外边距*/
}
::v-deep .fhdDialog2 .el-dialog__header {
padding: 0;
border: 0;
}
::v-deep .fhdDialog2 .el-dialog--center .el-dialog__body {
padding: 0;
}
::v-deep .fhdDialog2 .el-dialog {
background: rgba(0, 0, 0, 0);
// padding: 10px 0;
margin: 5vh auto !important;
// margin-top: 0!important;
}
::v-deep .el-table .warning-row {
background: #f9f9f9;
}
::v-deep .el-table .success-row {
background: #ffffff;
}
::v-deep .el-table thead {
color: #000000;
}
.fhdbox {
background: #ffffff;
.mainrow {
margin-top: 20px;
}
.fhdtop {
padding: 20px;
border-bottom: 1px solid rgba(0, 0, 0, 0.5);
.fhd_flex {
display: flex;
align-items: center;
}
.col_title {
font-weight: bold;
margin-right: 20px;
}
}
}
.fhdbox2 {
background: #ffffff;
padding: 20px;
margin-top: 20px;
.fhdTitle {
text-align: center;
font-weight: 600;
font-size: 20px;
margin-bottom: 10px;
}
.mainrow2 {
padding: 5px 0;
display: flex;
align-items: center;
.rowcontent {
width: 500px;
}
}
}
.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(16, 142, 233, 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>