emis-frontend/src/views/emis/emisWaybill/waybillIsPrinted.vue
2024-05-23 08:17:19 +08:00

994 lines
44 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<SearchForm :model="queryParams" ref="queryForm" size="mini" :maxShow="8" label-width="100px" v-show="showSearch" @search="handleQuery" @reset="resetQuery">
<el-form-item label="" prop="billCode">
<div slot="label">
<el-radio-group class="query-label" v-model="queryParams.params.queryOrderType">
<el-radio label="1">运单号</el-radio>
<el-radio label="0">订单号</el-radio>
</el-radio-group>
</div>
<el-input
v-model="queryParams.billCode"
:placeholder="$t('多个流水号逗号或换行隔开')"
clearable
type="textarea"
rows="2"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="" prop="dateTimeRange">
<div slot="label">
<el-radio-group class="query-label" v-model="queryParams.params.queryOrderDateType">
<el-radio label="1">下单时间</el-radio>
<el-radio label="0">录单时间</el-radio>
</el-radio-group>
</div>
<elDateAdvPicker clearable v-model="dateTimeRange" @dateTimeChange="onDateSelect" ></elDateAdvPicker>
</el-form-item>
<el-form-item label="收件人" prop="receiveName">
<el-input
v-model="queryParams.receiveName"
:placeholder="$t('收件人')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收件电话" prop="receiveMobile">
<el-input
v-model="queryParams.receiveMobile"
:placeholder="$t('收件电话')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收件公司" prop="receiveCompany">
<el-input
v-model="queryParams.receiveCompany"
:placeholder="$t('收件公司')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="目的国" prop="receiveCountry">
<CountryPicker0 v-model="queryParams.receiveCountry" :placeholder="$t('目的国')" @onChange="handleQuery"></CountryPicker0>
</el-form-item>
<el-form-item label="寄件人" prop="sendName">
<el-input
v-model="queryParams.sendName"
:placeholder="$t('寄件人')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="寄件人电话" prop="sendMobile">
<el-input
v-model="queryParams.sendMobile"
:placeholder="$t('寄件人电话')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="寄件公司" prop="sendCompany">
<el-input
v-model="queryParams.sendCompany"
:placeholder="$t('寄件公司')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="寄件国" prop="sendCountry">
<CountryPicker1 v-model="queryParams.sendCountry" :placeholder="$t('目的国')" @onChange="handleQuery"></CountryPicker1>
</el-form-item>
<el-form-item label="运单状态" prop="siteType">
<el-select v-model="queryParams.waybillStatus" placeholder="运单状态" clearable filterable>
<el-option
v-for="dict in dict.type.emis_waybill_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="报关方式" prop="customsEclaration">
<el-select v-model="queryParams.customsEclaration" placeholder="请选择">
<el-option
v-for="dict in dict.type.emis_declare_mode"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="清关方式" prop="customsClear">
<el-select v-model="queryParams.customsClear" placeholder="请选择">
<el-option
v-for="dict in dict.type.emis_customs_clear"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="付款方式" prop="paymentType" label-width="70px">
<el-select v-model="queryParams.paymentType" placeholder="请选择">
<el-option
v-for="dict in dict.type.emis_payment_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</SearchForm>
<!-- 打印机状态 -->
<div style="padding:5px 0px;text-align: right;position: fixed;top: 150px;right: 10px; z-index: 9999;">
<el-tag type="danger" v-if="printerStatus==0">{{ printerStatusMessage }}</el-tag>
<el-tag type="success" v-if="printerStatus==1">{{ printerStatusMessage }}</el-tag>
</div>
<XdTable v-loading="loading"
border stripe
size="small"
:data="emisWaybillList"
:showSearch.sync="showSearch"
:queryParams="queryParams"
:total="total"
@queryTable="getList"
@selection-change="handleSelectionChange"
@sort-change="handleSortChange"
v-if="tableHeight" :max-height="tableHeight + 'px'"
>
<div slot="toolbar">
<el-row :gutter="10" class="mb8" style="display: flex;flex-wrap: wrap;">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-print"
size="mini"
:disabled="multiple||(printerStatus!=1)"
@click="handleBatchPrint"
>打印</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleView"
>查看</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
:disabled="multiple||(printerStatus!=1)"
@click="handlePrintPreview"
>预览面单</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
:disabled="multiple||(printerStatus!=1)"
@click="handleDownPDF"
>下载pdf</el-button>
</el-col>
<el-col :span="1.5">
<div style="display: inline-flex;">
<div style="font-size: 12px; line-height: 28px;font-weight: 600;">模板:</div>
<div>
<el-select v-model="selTplName" size="mini" placeholder="选择打印模板" clearable filterable>
<el-option
v-for="item in printTplList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</div>
</el-col>
<el-col :span="1.5">
<div style="display: inline-flex;">
<div style="font-size: 12px;
line-height: 28px;
font-weight: 600;">打印机:</div>
<div>
<el-select v-model="selPrinterName" size="mini" placeholder="打印机" clearable filterable>
<el-option
v-for="item in printerList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</div>
</el-col>
<el-col :span="1.5">
<a :href="printerDownUrl" style="color: blue;font-weight: 600;font-size:13px;text-decoration: underline">下载打印组件</a>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['emis:emisWaybill:export']"
>导出</el-button>
</el-col> -->
</el-row>
</div>
<el-table-column type="selection" width="55" align="center" />
<!--
<el-table-column label="序号" align="center" min-width="60">
<template slot-scope="scope">
<span v-text="getIndex(scope.$index)"> </span>
</template>
</el-table-column>
-->
<el-table-column type="selection" width="55" align="center" />
<!--
<el-table-column label="序号" align="center" min-width="60">
<template slot-scope="scope">
<span v-text="getIndex(scope.$index)"> </span>
</template>
</el-table-column>
-->
<!-- <el-table-column :label="$t('订单状态')" align="center" prop="orderStatus" min-width="100" /> -->
<el-table-column :label="$t('运单编号')" align="center" prop="billCode" min-width="120" :show-overflow-tooltip="true" />
<el-table-column :label="$t('订单号')" align="center" prop="orderSn" width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('是否打印')" align="center" prop="blPrint" min-width="80" >
<template slot-scope="scope">
<el-tag v-if="scope.row.blPrint==1" type="success">已打印</el-tag>
<el-tag v-else type="danger">未打印</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('打印次数')" align="center" prop="printCount" min-width="80" />
<el-table-column :label="$t('打印时间')" align="center" prop="printDate" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('打印人')" align="center" prop="printManName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('打印站点')" align="center" prop="printSiteName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('进仓单号')" align="center" prop="warehouseInNo" width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('发货日期')" align="center" prop="sendDate" min-width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('取件方式')" align="center" prop="pickupMethod" width="100" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_qujian_fangshi" :value="scope.row.pickupMethod"/>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="customerName" min-width="80" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.paymentType==2 || scope.row.paymentType==4 || scope.row.paymentType==5">{{scope.row.customerName}}</span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column :label="$t('销售回款人')" align="center" prop="payee" min-width="100" />
<el-table-column :label="$t('销售联系人')" align="center" prop="salesmen" min-width="100" />
<el-table-column :label="$t('操作员')" align="center" prop="operateEmployeeName" min-width="100" />
<el-table-column :label="$t('收件业务员')" align="center" prop="takePieceEmployeeName" min-width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('运单状态')" align="center" prop="waybillStatus" width="100" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_waybill_status" :value="scope.row.waybillStatus"/>
</template>
</el-table-column>
<el-table-column :label="$t('起始国')" align="center" prop="sendCountryName" width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('目的国')" align="center" prop="receiveCountryName" width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('线路')" align="center" prop="transLineTypeName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('产品类型')" align="center" prop="productTypeName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('时效')" align="center" prop="timeType" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('预计到达时间')" align="center" prop="estimateDate" min-width="100" >
<template slot-scope="scope">
<span>{{ parseTime(scope.row.estimateDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('清关方式')" align="center" prop="customsClear" min-width="80" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_customs_clear" :value="scope.row.customsClear"/>
</template>
</el-table-column>
<el-table-column :label="$t('报关方式')" align="center" prop="customsEclaration" min-width="80" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_declare_mode" :value="scope.row.customsEclaration"/>
</template>
</el-table-column>
<el-table-column :label="$t('合同号')" align="center" prop="custOrderId" width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件网点')" align="center" prop="sendSiteName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件人')" align="center" prop="sendName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件手机')" align="center" prop="sendMobile" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件公司')" align="center" prop="sendCompany" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件国家')" align="center" prop="sendCountryName" min-width="80" :show-overflow-tooltip="true" />
<el-table-column :label="$t('寄件省')" align="center" prop="sendProvinceName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件市')" align="center" prop="sendCityName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件区')" align="center" prop="sendCountyName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件地址')" align="center" prop="sendAddress" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('寄件/签收短信')" align="center" prop="blMessage" min-width="150" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="scope.row.blMessage==1" >发送</div>
<div v-else>不发送</div>
</template>
</el-table-column>
<el-table-column :label="$t('寄件日期')" align="center" prop="sendDate" min-width="100" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('目的地')" align="center" prop="destinationName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('目的网点')" align="center" prop="dispatchUnderlingSiteName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件人')" align="center" prop="receiveName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件电话')" align="center" prop="receiveMobile" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件公司')" align="center" prop="receiveCompany" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件国家')" align="center" prop="receiveCountryName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件省')" align="center" prop="receiveProvinceName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件市')" align="center" prop="receiveCityName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件区')" align="center" prop="receiveCountyName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收件地址')" align="center" prop="receiveAddress" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('派件短信')" align="center" prop="blAcceptMessage" min-width="80" :show-overflow-tooltip="true">
<template slot-scope="scope">
<div v-if="scope.row.blAcceptMessage==1" >发送</div>
<div v-else>不发送</div>
</template>
</el-table-column>
<el-table-column :label="$t('货物名称')" align="center" prop="goodsInfo" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('包装类型')" align="center" prop="packType" min-width="80" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_tab_packing_type" :value="scope.row.packType"/>
</template>
</el-table-column>
<el-table-column :label="$t('件数')" align="center" prop="parcelQty" min-width="80" />
<el-table-column :label="$t('实际重量')" align="center" prop="billWeight" min-width="80" />
<el-table-column :label="$t('体积')" align="center" prop="totalVolume" min-width="80" />
<el-table-column :label="$t('体积重量')" align="center" prop="volumeWeight" min-width="80" />
<el-table-column :label="$t('结算重量')" align="center" prop="settlementWeight" min-width="80" />
<el-table-column :label="$t('派件方式')" align="center" prop="dispatchMethod" min-width="80" >
<template slot-scope="scope">
<div v-if="scope.row.dispatchMethod==1" >派送</div>
<div v-else>自提</div>
</template>
</el-table-column>
<el-table-column :label="$t('支付方式')" align="center" prop="paymentType" min-width="80" :show-overflow-tooltip="true" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_payment_type" :value="scope.row.paymentType"/>
</template>
</el-table-column>
<el-table-column :label="$t('到付款')" align="center" prop="freight" min-width="80" >
<template slot-scope="scope">
<span v-if="scope.row.paymentType==3">{{scope.row.freight}}</span>
<span v-else>0</span>
</template>
</el-table-column>
<el-table-column :label="$t('运费')" align="center" prop="freight" min-width="80" />
<el-table-column :label="$t('保价金额')" align="center" prop="insureValue" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('保费')" align="center" prop="insureFee" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('费用备注')" align="center" prop="feeRemaker" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('收款状态')" align="center" prop="paymentStatus" width="100" >
<template slot-scope="scope">
<dict-tag :options="dict.type.emis_payment_status" :value="scope.row.paymentStatus"/>
</template>
</el-table-column>
<el-table-column :label="$t('签收状态')" align="center" prop="waybillStatus" width="80" >
<template slot-scope="scope">
<el-tag v-if="scope.row.waybillStatus=='50'" type="success">已签收</el-tag>
<el-tag v-else type="danger">未签收</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('签收时间')" align="center" prop="signDate" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('签收人')" align="center" prop="signMan" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('派件人')" align="center" prop="dispatchManName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('派件网点')" align="center" prop="dispatchSiteName" min-width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('问题件')" align="center" prop="blIsQuestion" min-width="80" >
<template slot-scope="scope">
<el-tag v-if="scope.row.blIsQuestion==1" type="danger">是</el-tag>
<el-tag v-else type="info">否</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('问题件类型')" align="center" prop="problemType" width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('问题件原因')" align="center" prop="problemCause" width="80" :show-overflow-tooltip="true"/>
<el-table-column :label="$t('延期天数')" align="center" prop="problemDelayDays" width="80" :show-overflow-tooltip="true"/>
<!-- <el-table-column :label="$t('录单网点')" align="center" prop="registerSiteName" min-width="80" :show-overflow-tooltip="true" /> -->
<el-table-column :label="$t('录单人')" align="center" prop="registerManName" min-width="80" :show-overflow-tooltip="true" />
<el-table-column :label="$t('录单备注')" align="center" prop="remark" min-width="80" :show-overflow-tooltip="true" />
<el-table-column :label="$t('数据来源')" align="center" prop="dataFrom" min-width="80" />
<el-table-column label="创建人" align="center" prop="createBy" width="80" :show-overflow-tooltip="true"/>
<el-table-column label="创建网点" align="center" prop="createSite" width="80" :show-overflow-tooltip="true"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="170"/>
<el-table-column label="修改人" align="center" prop="updateBy" width="80" :show-overflow-tooltip="true"/>
<el-table-column label="修改网点" align="center" prop="updateSite" width="80" :show-overflow-tooltip="true"/>
<el-table-column label="修改时间" align="center" prop="updateTime" width="170"/>
</XdTable>
<!--
<el-dialog :title="titleView" :visible.sync="openView" width="60%" :close-on-click-modal="false" v-dialogDrag append-to-body>
<emisWaybillView :id="id" ></EmisWaybillView>
</el-dialog>
-->
<el-dialog class="previe_dialog" title="打印预览" :visible.sync="openPdfView" width="80%" :close-on-click-modal="false" v-dialogDrag append-to-body>
<PdfViewer :pdfUrl="pdfUrl" width="100%" @onPrint="handleBatchPrint" ></PdfViewer>
</el-dialog>
</div>
</template>
<script>
import { listEmisWaybill, getEmisWaybill, delEmisWaybill, addEmisWaybill, updateEmisWaybill } from "@/api/emis/emisWaybill";
import emisWaybillForm from '@/views/emis/emisWaybill/emisWaybillForm';
import elDateAdvPicker from '@/components/DatePickerAdv/elDateAdvPicker';
import CountryPicker0 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import CountryPicker1 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import PdfViewer from '@/components/PdfViewer/index.vue';
import PdfUtils from '@/utils/pdfUtils'
export default {
name: "WaybillIsPrinted",
components: { PdfViewer,elDateAdvPicker,emisWaybillForm,CountryPicker0,CountryPicker1 },
dicts: ['emis_qujian_fangshi','emis_declare_mode','emis_customs_clear',
'emis_tab_packing_type','emis_tab_dispatch_mode','emis_payment_type',
'emis_calc_fee_type','emis_print_type','emis_payment_status','emis_waybill_status'
],
data() {
return {
tableHeight: 200,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 创建时间搜索
dateTimeRange:[],
// 总条数
total: 0,
// 运单列表表格数据
emisWaybillList: [],
currentId:null,
openForm: false,
titleForm: "",
openPdfView:false,
pdfUrl:null,
tanexPrinter:null,
printerDownUrl:null,
printerStatus:0,
printerStatusMessage:'打印组件未连接',
printerList:[],
printTplList:[],
selTplName:null,
selPrinterName:null,
currentSelection:[],
// 弹出展示层
id:null,
titleView:"",
openView: false,
// 更新网点时间范围
daterangeOrderDate: [],
// 更新网点时间范围
daterangeEstimateDate: [],
// 更新网点时间范围
daterangePickStartDate: [],
// 更新网点时间范围
daterangePickFinishDate: [],
// 更新网点时间范围
daterangeDispFdDate: [],
// 更新网点时间范围
daterangeRegisterDate: [],
// 更新网点时间范围
daterangeSendDate: [],
// 更新网点时间范围
daterangeProduceBillDate: [],
// 更新网点时间范围
daterangeCreateTime: [],
// 更新网点时间范围
daterangeUpdateTime: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 20,
orderSn: null,
billCode: null,
billCodeSub: null,
orderStatus: null,
waybillStatus: null,
orderType: null,
orderDate: null,
customerCode: null,
customerName: null,
receiveCustomerCode: null,
receiveCustomerName: null,
thirdCustomerCode: null,
thirdCustomerName: null,
receiveName: null,
receiveCompany: null,
receiveMobile: null,
receiveTel: null,
receiveCountry: null,
receiveProvince: null,
receiveCity: null,
receiveCounty: null,
receiveTown: null,
receiveAddress: null,
receivePostcode: null,
receivePcd: null,
sendName: null,
sendCompany: null,
sendMobile: null,
sendTel: null,
sendCountry: null,
sendProvince: null,
sendCity: null,
sendCounty: null,
sendTown: null,
sendAddress: null,
sendPostcode: null,
sendPcd: null,
paymentType: null,
calcFeeType: null,
custNo: null,
transLineType: null,
productType: null,
timeType: null,
meterType: null,
customsClear: null,
customsEclaration: null,
estimateDate: null,
packType: null,
dispatchMethod: null,
pickupMethod: null,
pickStartDate: null,
pickFinishDate: null,
pickFailReason: null,
intoWarehouseCode: null,
intoWarehouseName: null,
intoWarehouseAddress: null,
intoWarehouseContact: null,
intoWarehousePhone: null,
intoWarehouseBillCode: null,
warehouseInNo: null,
customerDeliveryBeginTime: null,
customerDeliveryEndTime: null,
goodsType: null,
goodsInfo: null,
goodsPics: null,
blPrepareInFreight: null,
prepareInEstFee: null,
prepareInRealFee: null,
prepareInExpress: null,
prepareInBillCode: null,
prepareInRemark: null,
prepareInSupplier: null,
totalWeight: null,
totalVolume: null,
parcelQty: null,
billWeight: null,
volumeWeight: null,
currency: null,
settlementWeight: null,
feeWeight: null,
freight: null,
blOverLong: null,
blBill: null,
blOverWeight: null,
overWeightNumber: null,
feeRemaker: null,
thirdCode: null,
realValue: null,
blInsure: null,
insureValue: null,
insureValueCurrency: null,
insureFeeCurrency: null,
insureFee: null,
insureRemark: null,
insureSiteCode: null,
insureDate: null,
blPrint: null,
printManCode: null,
printSite: null,
printDate: null,
printCount: null,
blDispFd: null,
transferCode: null,
transferBillcode: null,
dispFdDate: null,
dispFdReason: null,
currentSiteCode: null,
lastSiteCode: null,
registerSiteCode: null,
registerDate: null,
registerManCode: null,
takePieceEmployeeCode: null,
sendSiteCode: null,
sendDate: null,
dispatchManCode: null,
dispatchDate: null,
dispatchSiteCode: null,
produceBillDate: null,
produceBillSiteCode: null,
produceBillManCode: null,
destinationCode: null,
destinationProvince: null,
destinationCity: null,
destinationCounty: null,
dispatchUnderlingSiteCode: null,
destinationCenterCode: null,
marketManCode: null,
payee: null,
salesmen: null,
operateEmployeeCode: null,
blIsQuestion: null,
problemType: null,
problemCause: null,
problemDelayDays: null,
blMessage: null,
blAcceptMessage: null,
blGenSubbill: null,
signMan: null,
signManCode: null,
signSiteCode: null,
signDate: null,
billPicSendRmk: null,
billPicDispatchRmk: null,
timezoneOffset: null,
delFlag: null,
remark: null,
params:{
queryOrderType:1,
queryOrderDateType:1
}
},
};
},
created() {
this.getList();
this.initTanexPrinterSdk();
// 调整表格的高度,不允许滚动
this.$nextTick(function() {
let queryFormEl = this.$refs.queryForm.$el;
let tableH = queryFormEl.offsetHeight+190;
this.tableHeight = window.innerHeight - tableH;
});
},
beforeDestroy(){
this.tanexPrinter.close();
},
methods: {
initTanexPrinterSdk(){
this.tanexPrinter = this.$tanexPrinter;
this.getConfigKey("sys.printer.downurl").then(response => {
this.printerDownUrl = response.msg;
});
this.tanexPrinter.init();
this.tanexPrinter.setOnOpen(this.onPrinterOpen);
this.tanexPrinter.setOnClose(this.onPrinterClose);
this.tanexPrinter.setOnError(this.onPrinterError);
this.tanexPrinter.setOnGetPrinter(this.onGetPrinter);
this.tanexPrinter.setOnGetPrintTpl(this.onGetPrintTpl);
},
onPrinterOpen(evt){
console.log("onPrinterOpen")
this.printerStatus = 1;
this.printerStatusMessage="打印组件已连接,可以打印.";
},
onPrinterClose(evt){
console.log("onPrinterClose")
this.printerStatus = 0;
this.printerStatusMessage="打印组件已断开!";
},
onPrinterError(evt){
console.log("onPrinterError")
this.printerStatus = 0;
this.printerStatusMessage="打印组件已断开!";
},
onGetPrinter(msg){
console.log("onGetPrinter")
this.printerList=this.tanexPrinter.getPrinterTplList();
this.selPrinterName=this.tanexPrinter.getDefaultPrinter();
},
onGetPrintTpl(msg){
console.log("onGetPrintTpl")
this.printTplList=this.tanexPrinter.getPrintTplList();
this.selTplName=this.printTplList[0].value;
},
handleBatchPrint(){
// 重要,设置为true才会把右上角X和取消区分开来
this.$confirm("确定打印?", "提示", {
cancelButtonText: "不打印",
confirmButtonText: "确定打印",
type: "warning",
distinguishCancelAndClose: true,
closeOnClickModal: false
}).then(() => {
let orderList=[];
this.currentSelection.forEach(item=>{
orderList.push(item.billCode);
});
this.tanexPrinter.batchPrint(this.selTplName,this.selPrinterName,orderList)
}).catch(() => {});
},
async handlePrintPreview(){
let pdfUrlList=[];
this.currentSelection.forEach(item=>{
let url=this.tanexPrinter.getPdfUrl(item.billCode,this.selTplName,this.selPrinterName);
pdfUrlList.push(url)
});
let pdfUtils=new PdfUtils({});
const loadingInstance = this.$loading({
text: '正在生成预览...'
})
pdfUtils.mergePdf2(pdfUrlList, (new Date()).getTime()+".pdf" )
.then(url=>{
loadingInstance.close();
// this.pdfUrl='/static/pdfjs/dist/web/printPreview.html?file=' +encodeURIComponent(url);
this.pdfUrl=url;
this.openPdfView = true;
})
.catch(error => {
});
},
handleDownPDF(){
let pdfUrlList=[];
this.currentSelection.forEach(item=>{
let url=this.tanexPrinter.getPdfUrl(item.billCode,this.selTplName,this.selPrinterName);
pdfUrlList.push(url)
});
let pdfUtils=new PdfUtils({});
pdfUtils.mergePdf2(pdfUrlList, (new Date()).getTime()+".pdf" ,true);
},
/** 查询运单列表列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
listEmisWaybill(this.addDateRange(this.queryParams, this.dateTimeRange)).then(response => {
this.emisWaybillList = response.rows;
this.total = response.total;
this.loading = false;
});
},
onDateSelect(value){
// console.log("date picker---->", value)
this.dateTimeRange=value;
// scanDate
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.currentSelection=selection;
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
// 排序 查询字段是表格中字段名字 动态取值排序顺序
handleSortChange(column) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
/** 新增按钮操作 */
handleAdd(row) {
this.currentId=null;
this.openForm= true;
this.titleForm = "新增";
},
handleShowMoreInput(){
this.moreInputVisible = !this.moreInputVisible;
},
/** 修改按钮操作 */
handleUpdate(row) {
this.currentId= row.id;
this.openForm = true;
this.titleForm = "修改";
},
handleView(row) {
this.id=row.id;
this.titleView="查看";
this.openView=true;
// this.router.push({ path: '/emis/emisWaybill/viewDetail', query: { id: row.id }})
},
handleFormChanged(){
this.openForm = false;
this.getList();
},
cancelForm(){
this.openForm = false;
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除').then(function() {
return delEmisWaybill(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
// this.download('emis/emisWaybill/export', {
// ...this.queryParams
// }, `emisWaybill_${new Date().getTime()}.xlsx`)
const loadingInstance = this.$loading({
text: '正在导出...'
})
var qParam = {...this.queryParams};
qParam.pageNum=1;
qParam.pageSize=5000;
listEmisWaybill(this.addDateRange(qParam, this.dateTimeRange)).then(response => {
this.downloadLoading = false
if (response.code === 200) {
const curList = response.rows
import('@/vendor/Export2Excel').then(excel => {
const tHeader = ['id','订单号','客户单号,合同号','运单号','子单号,逗号隔开','订单状态','运单状态','订单类型','下单时间','客户ID','客户编号2502021','客户名称','收件客户编号2502021','收件客户客户名称','第三方客户客户编号','第三方客户客户名称','wx','收货人名','收货公司','收货人手机号','收货人电话','收货人国家','省','市','区','县','收货地址','邮编','寄件人省市区名称,逗号分隔','寄件人名','寄件公司','寄件人手机号','寄件人电话','寄件人国家','寄件省','寄件市','寄件区','寄件县','寄件地址','寄件邮编','发件人省市区名称,逗号分隔','支付方式','计费方式','支付月结编号','快递线路','快递产品类型','时效','计泡比例','清关方式','报关方式','预计到达时间','包装类型','派件方式:1-送货上门','取件方式:1-上门取件','预计上门取件开始时间','预计上门取件结束时间','取货失败原因','入仓代码','入仓名称','入仓地址','入仓联系人','入仓联系人电话','入仓单号','实际进仓单关联','客户发货开始时间','客户发货截止时间','货物大类','货物描述','货物图片,逗号隔开','预入仓代垫运费','预入仓代垫运费','预入仓实际运费','预入仓快递公司','预入仓快递单号','预入仓自定义标识','预入仓供应商','总重量','总体积','件数','实际重量','体积重量','费用币种','结算重量','计费重量','运费','是否超长','是否出账','账单备注','是否超重','超重重量','费用备注','三段码','实际货值','是否投保','投保货值','投保货值币种','保费币种','保费','保险备注','保险站点代码','投保日期','是否打印','打印人编号','打印站点','打印时间','打印次数','是否同行转单','转单代码','转单单号','转单时间','转单原因','当前网点编号','下一网点编号','上一网点点号','寄件站点代码','寄件日期','寄件人编号','取件员代码','发件网点代码','发货时间','派件人代码','派件时间','派件网点代码','生成账单时间','生成账单站点代码','生成账单人代码','目的地编号','目的省','目的城市','目的国家','目的地网点代码','目的地财务中心代码','业务人代码','销售回款人','销售联系人','操作员代码','是否问题件','问题件类型','问题件原因','问题件延期天数','是否备注消息','是否发送收件人短信','是否生成子单','签收人','签收人代码','签收站点代码','签收时间','揽收图片备注','签收底单图片','时区偏差','删除标志(0代表存在','创建者','创建时间','更新者','更新时间','备注','创建网点','更新网点',];
const filterVal = ['id','orderSn','custOrderId','billCode','billCodeSub','orderStatus','waybillStatus','orderType','orderDate','userId','customerCode','customerName','receiveCustomerCode','receiveCustomerName','thirdCustomerCode','thirdCustomerName','openId','receiveName','receiveCompany','receiveMobile','receiveTel','receiveCountry','receiveProvince','receiveCity','receiveCounty','receiveTown','receiveAddress','receivePostcode','receivePcd','sendName','sendCompany','sendMobile','sendTel','sendCountry','sendProvince','sendCity','sendCounty','sendTown','sendAddress','sendPostcode','sendPcd','paymentType','calcFeeType','custNo','transLineType','productType','timeType','meterType','customsClear','customsEclaration','estimateDate','packType','dispatchMethod','pickupMethod','pickStartDate','pickFinishDate','pickFailReason','intoWarehouseCode','intoWarehouseName','intoWarehouseAddress','intoWarehouseContact','intoWarehousePhone','intoWarehouseBillCode','warehouseInNo','customerDeliveryBeginTime','customerDeliveryEndTime','goodsType','goodsInfo','goodsPics','blPrepareInFreight','prepareInEstFee','prepareInRealFee','prepareInExpress','prepareInBillCode','prepareInRemark','prepareInSupplier','totalWeight','totalVolume','parcelQty','billWeight','volumeWeight','currency','settlementWeight','feeWeight','freight','blOverLong','blBill','blBillText','blOverWeight','overWeightNumber','feeRemaker','thirdCode','realValue','blInsure','insureValue','insureValueCurrency','insureFeeCurrency','insureFee','insureRemark','insureSiteCode','insureDate','blPrint','printManCode','printSite','printDate','printCount','blDispFd','transferCode','transferBillcode','dispFdDate','dispFdReason','currentSiteCode','nextSiteCode','lastSiteCode','registerSiteCode','registerDate','registerManCode','takePieceEmployeeCode','sendSiteCode','sendDate','dispatchManCode','dispatchDate','dispatchSiteCode','produceBillDate','produceBillSiteCode','produceBillManCode','destinationCode','destinationProvince','destinationCity','destinationCounty','dispatchUnderlingSiteCode','destinationCenterCode','marketManCode','payee','salesmen','operateEmployeeCode','blIsQuestion','problemType','problemCause','problemDelayDays','blMessage','blAcceptMessage','blGenSubbill','signMan','signManCode','signSiteCode','signDate','billPicSendRmk','billPicDispatchRmk','timezoneOffset','delFlag','createBy','createTime','updateBy','updateTime','remark','createSite','updateSite',];
const data = this.formatJson(filterVal, curList, response.rows)
excel.export_json_to_excel({
header: tHeader,
data,
filename: '运单列表',
autoWidth: true
})
loadingInstance.close()
})
}
});
},
formatJson(filterVal, jsonData, resData) {
let index = 0
return jsonData.map(v => filterVal.map(j => {
if (j === 'index') {
return ++index
}
if (j === 'status') {
var statusStr='xxx'
if(v[j] == 10){
statusStr='xxx'
}
return statusStr;
}
return v[j]
}))
},
/** 列索引函数 */
getIndex($index) {
return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
},
/** 时间搜索响应函数 */
dateTimeChange(value){
this.dateTimeRange=value;
},
}
};
</script>
<style lang="scss" scoped>
.el-divider{
margin-top: 0px;
background: 0 0;
border-top: 1px solid #E6EBF5;
}
.el-divider__text {
color: #0955ee;
cursor: pointer;
}
.query-label {
.el-radio{
display: block;
line-height: 23px;
white-space: normal;
margin-right: 0;
}
}
.previe_dialog {
display: flex;
justify-content: center;
align-items: Center;
overflow: hidden;
.el-dialog .el-dialog__body {
margin: 8px!important;
padding: 0;
overflow: auto;
}
.el-dialog {
margin: 0 auto !important;
height: 100%;
overflow: hidden;
.el-dialog__body {
margin: 0px 8px 8px 8px;
position: absolute;
left: 0;
top: 54px;
bottom: 0;
right: 0;
padding: 0;
z-index: 1;
overflow: hidden;
overflow-y: auto;
}
}
}
</style>