Commit 49c72676 authored by lanbaoming's avatar lanbaoming

2024-06-03

parent 31d93922
......@@ -360,7 +360,7 @@ export function downloadPreloadGoodsList(params) {
});
}
// 下载应收汇总
// 下载应收汇总 lanbm 2024-05-24 添加注释
export function downloadReceivableList(params) {
return request({
url: "/ecw/box-preload-goods/downloadReceivableList",
......
......@@ -145,6 +145,7 @@ export function billCreate(data) {
/**
* 获得提单补料pdf
* 空运提单补料 lanbm 2024-05-28 添加注释
*/
export function getBoxLadingBillPdf(params) {
return request({
......
......@@ -462,6 +462,15 @@ export function financeReceiptWriteOff(query) {
})
}
// lanbm 2024-05-29 add 批量收款单核销
export function financeReceiptWriteOff2(query) {
return request({
url: '/ecw/receipt/financeReceiptWriteOff2',
method: 'POST',
data: query
})
}
// 收款单银行明细核销
export function financeReceiptItemWriteOff(query) {
return request({
......@@ -471,6 +480,15 @@ export function financeReceiptItemWriteOff(query) {
})
}
//批量 银行实收明细提交审核 lanbm 2024-05-30 add
export function financeReceiptItemWriteOff2(query) {
return request({
url: '/ecw/receipt-item/financeReceiptItemWriteOff2',
method: 'POST',
data: query
})
}
// 收款单银行明细核销反审核
export function financeReceiptItemWriteOffNo(query) {
......@@ -490,6 +508,16 @@ export function financeApproveNo(query) {
})
}
//lanbm 2024-05-29 添加的批量反审核功能
//参数query 为List
export function financeApproveNo2(query) {
return request({
url: '/ecw/receipt/financeApproveNo2',
method: 'POST',
data: query
})
}
// 收款单反核销
export function financeReceiptWriteOffNo(query) {
return request({
......@@ -499,7 +527,17 @@ export function financeReceiptWriteOffNo(query) {
})
}
// 收款单取消审核
//批量 收款单反核销 lanbm 2024-05-29 add
//query 为List
export function financeReceiptWriteOffNo2(query) {
return request({
url: '/ecw/receipt/financeReceiptWriteOffNo2',
method: 'POST',
data: query
})
}
//收款单取消审核
export function cancelFinanceReceiptApproval(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptApproval',
......
......@@ -16,7 +16,7 @@
<el-form
:ref="'form' + index"
:model="auditForms[index]"
:rules="auditRule"
:rules="auditRule2"
label-width="100px"
>
<el-form-item
......@@ -295,6 +295,22 @@ export default {
BoxSplitDetail,
},
computed: {
auditRule2() {
if (this.isMust == true) {
var obj = {
comment: [
{
required: true,
message: this.$t("审批建议不能为空"),
trigger: "blur",
},
],
};
return obj;
} else {
return {};
}
},
matterNum() {
return this.$store.state.user.matterNum;
},
......@@ -663,30 +679,27 @@ export default {
// 流程实例
id: undefined, // 流程实例的编号
processInstance: {},
// 流程表单详情
detailForm: {
fields: [],
},
isMust: true,
// BPMN 数据
bpmnXML: null,
bpmnControlForm: {
prefix: "activiti",
},
activityList: [],
// 审批记录
tasksLoad: true,
tasks: [],
// 审批表单
runningTasks: [],
auditForms: [],
auditRule: {
comment: [
{
required: true,
required: this.isMust,
message: this.$t("审批建议不能为空"),
trigger: "blur",
},
......@@ -743,6 +756,26 @@ export default {
this.processInstance = response.data;
console.log(this.processInstance);
//银行实收明细核销不限制必填 lanbm 2024-05-24 add
if (
this.processInstance.processDefinition.formCustomViewPath ==
undefined ||
this.processInstance.processDefinition.formCustomViewPath == null ||
this.processInstance.processDefinition.formCustomViewPath == ""
) {
this.isMust = true;
} else {
if (
this.processInstance.processDefinition.formCustomViewPath.trim() ==
"finance_receipt_item_write_off"
) {
this.isMust = false;
} else {
this.isMust = true;
}
}
//end 银行实收明细核销不限制必填 lanbm 2024-05-24 add
// 设置表单信息
if (this.processInstance.processDefinition.formType === 10) {
this.detailForm = {
......
......@@ -628,6 +628,7 @@ export default {
);
break;
case "downloadReceivableList":
//下载空运应收款汇总单 lanbm 2024-05-25 添加注释
this.exportExcel(
downloadAirReceivableList,
{shipmentId: row.id}
......
......@@ -149,6 +149,7 @@
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="downloadPreloadGoodsList" v-hasPermi="['shipment:box:download:downloadPreloadGoodsList']">{{$t('预装单')}}</el-dropdown-item>
<el-dropdown-item command="downloadLoadGoodsList" v-hasPermi="['shipment:box:download:downloadLoadGoodsList']">{{$t('已装单')}}</el-dropdown-item>
<!--应收汇总表,Manifest样式修改 lanbm 2024-05-24 -->
<el-dropdown-item command="downloadReceivableList" v-hasPermi="['shipment:box:download:downloadReceivableList']">{{$t('应收汇总表')}}</el-dropdown-item>
<el-dropdown-item command="downloadAgentListFiles" v-hasPermi="['shipment:box:download:downloadAgentListFiles']">agent list</el-dropdown-item>
<el-dropdown-item command="downloadSoncapFiles" v-hasPermi="['shipment:box:download:downloadSoncapFiles']">soncap</el-dropdown-item>
......
......@@ -123,7 +123,9 @@ import {
getCapacity,
downloadFile,
} from "../shippingSea/utils";
//制作提单 lanbm 2024-05-24 添加注释
import makeLadingBill from "./makeLadingBill.vue";
//预览提单
import previewBill from "./previewBill.vue";
export default {
......
<template>
<el-row class="shipping-makeLadingBill">
<el-row>
<div class="title-orderNo">{{$t('订单号')}}{{orderNo}}</div>
<div class="title-orderNo">{{ $t("订单号") }}{{ orderNo }}</div>
</el-row>
<el-row class="ueditor-row">
<vue-ueditor-wrap v-model="billContent" :config="editorConfig" editor-id="billUeditor" />
<vue-ueditor-wrap
v-model="billContent"
:config="editorConfig"
editor-id="billUeditor"
/>
</el-row>
<!-- 审核流程 -->
<el-row class="process-area">
<div class="process">
<div>{{$t('审批流程')}}</div>
<div>{{ $t("审批流程") }}</div>
<work-flow xmlkey="bill_lading" v-model="selectedUsers"></work-flow>
</div>
<div v-if="currRow.status === 1">
<el-button type="primary" @click="jumpReviewDetail">{{$t('审核中')}}</el-button>
<el-button plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
<el-button plain type="primary" @click="showLoaingTemplate">{{$t('提单预览')}}</el-button>
<el-button type="primary" @click="jumpReviewDetail">{{
$t("审核中")
}}</el-button>
<el-button plain type="primary" @click="canclAudit">{{
$t("取消审核")
}}</el-button>
<el-button plain type="primary" @click="showLoaingTemplate">{{
$t("提单预览")
}}</el-button>
</div>
<div v-if="currRow.status !== 1">
<el-button type="primary" @click="createPdf">{{
$t("提交完成")
}}</el-button>
<!--lanbm 2024-05-24 修改为提交完成,在后台不用审批直接,完成提单的制作
<el-button type="primary" @click="createPdf">{{$t('提交审核')}}</el-button>
<el-button type="primary" @click="showLoaingTemplate">{{$t('提单预览')}}</el-button>
-->
<el-button type="primary" @click="showLoaingTemplate">{{
$t("提单预览")
}}</el-button>
</div>
</el-row>
<!-- htm2canvas 容器 -->
<div style="height:0; overflow: hidden;">
<div style="height: 0; overflow: hidden">
<div id="html2canvas-container" v-html="billContent"></div>
</div>
<el-dialog :title="dialogCfg.title" :visible.sync="visible" width="1000px" append-to-body class="shippingSea-dialog">
<previewBill v-if="visible" :contentHtml="billContent" :currRow="currRow" :type="dialogCfg.type" />
<el-dialog
:title="dialogCfg.title"
:visible.sync="visible"
width="1000px"
append-to-body
class="shippingSea-dialog"
>
<previewBill
v-if="visible"
:contentHtml="billContent"
:currRow="currRow"
:type="dialogCfg.type"
/>
</el-dialog>
</el-row>
</template>
......@@ -46,12 +74,12 @@ import {
import { serviceMsg, toReviewDetail } from "../shippingSea/utils";
import previewBill from "./previewBill.vue";
import { getToken } from "@/utils/auth";
import html2canvas from 'html2canvas';
import html2canvas from "html2canvas";
import { jsPDF } from "jspdf";
import {uploadFile} from '@/api/infra/file'
import FileSaver from 'file-saver'
import {getOrder, getOrderDetail} from "@/api/ecw/order";
window.html2canvas = html2canvas
import { uploadFile } from "@/api/infra/file";
import FileSaver from "file-saver";
import { getOrder, getOrderDetail } from "@/api/ecw/order";
window.html2canvas = html2canvas;
export default {
name: "makeLadingBill",
components: {
......@@ -177,49 +205,69 @@ export default {
this.visible = true;
},
// 先获取订单信息,pdf用 订单号+唛头命名
createPdf(){
createPdf() {
// 空运的由接口生成pdf,所以直接提交即可
if(this.$route.fullPath.toLowerCase().indexOf('air') > -1){
return this.submit()
if (this.$route.fullPath.toLowerCase().indexOf("air") > -1) {
return this.submit();
}
getOrder(this.currRow.orderId).then(res => {
this.afterCreatePdf(res.data)
})
// lanbm 2024-05-24 修改此后台接口
getOrder(this.currRow.orderId).then((res) => {
this.afterCreatePdf(res.data);
});
},
afterCreatePdf(orderData){
let loading = this.$loading()
html2canvas(document.querySelector("#html2canvas-container"), {dpi:144, useCORS: true}).then(canvas => {
const doc = new jsPDF('p','pt','a4',true);
afterCreatePdf(orderData) {
let loading = this.$loading();
html2canvas(document.querySelector("#html2canvas-container"), {
dpi: 144,
useCORS: true,
})
.then((canvas) => {
const doc = new jsPDF("p", "pt", "a4", true);
const imgWidth = canvas.width
const imgHeight = canvas.height
console.log(imgHeight, imgWidth)
let _w = 595.28;
let _h = 595.28/imgWidth*imgHeight;
if(_h>841.89){
_h = 841.89;
_w = _h/imgHeight*imgWidth
}
const _left = (595.28-_w)/2;
doc.addImage(canvas, 'PNG', _left, 0, _w,_h, '', 'FAST');
/* doc.save("a4.pdf");
const imgWidth = canvas.width;
const imgHeight = canvas.height;
console.log(imgHeight, imgWidth);
let _w = 595.28;
let _h = (595.28 / imgWidth) * imgHeight;
if (_h > 841.89) {
_h = 841.89;
_w = (_h / imgHeight) * imgWidth;
}
const _left = (595.28 - _w) / 2;
doc.addImage(canvas, "PNG", _left, 0, _w, _h, "", "FAST");
/* doc.save("a4.pdf");
return Promise.reject() */
let form = new FormData()
const dst = this.$l(orderData.logisticsInfoDto, 'destTitle')
let file = this.selfNo + "-" + this.currRow.tidanNo + ' ' + orderData.marks + '-' + dst + '.pdf' //this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
let form = new FormData();
const dst = this.$l(orderData.logisticsInfoDto, "destTitle");
let file =
this.selfNo +
"-" +
this.currRow.tidanNo +
" " +
orderData.marks +
"-" +
dst +
".pdf"; //this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
form.append('file', new File([doc.output('arraybuffer')], file, {type: 'application/pdf'}))
form.append('path', `admin/shipment/${this.selfNo}/pdf/${file}`) // 最前面不能有/,否则返回的url会有两个/
form.append(
"file",
new File([doc.output("arraybuffer")], file, {
type: "application/pdf",
})
);
form.append("path", `admin/shipment/${this.selfNo}/pdf/${file}`); // 最前面不能有/,否则返回的url会有两个/
/* let blob = new Blob([doc.output('arraybuffer')], {type: "application/pdf"})
/* let blob = new Blob([doc.output('arraybuffer')], {type: "application/pdf"})
FileSaver.saveAs(blob, file);
return */
return uploadFile(form)
}).then(res => {
return this.submit(res.data)
}).finally(res => {
loading.close()
})
return uploadFile(form);
})
.then((res) => {
return this.submit(res.data);
})
.finally((res) => {
loading.close();
});
},
submit(imgUrl) {
let params = {
......@@ -228,10 +276,10 @@ export default {
copyUserId: this.selectedUsers,
};
// 有pdf地址则提交,没有则指定后端生成
if(imgUrl){
params.imgUrl = imgUrl
}else{
params.needBackend = true
if (imgUrl) {
params.imgUrl = imgUrl;
} else {
params.needBackend = true;
}
if (["makeBill", "resetBill"].includes(this.dialogCfg.type)) {
createBillService({ ...params, status: 1 }).then((res) => {
......@@ -263,7 +311,7 @@ export default {
this.$emit("closeDialog", type);
},
jumpReviewDetail() {
this.close('close')
this.close("close");
const { bpmProcessId } = this.currData;
toReviewDetail.apply(this, [bpmProcessId]);
},
......@@ -281,14 +329,14 @@ export default {
</script>
<style lang="scss" scoped>
::v-deep #html2canvas-container{
::v-deep #html2canvas-container {
padding: 3rem;
word-break:initial;
p{
word-break: initial;
p {
margin: 0;
}
td{
word-break:initial;
td {
word-break: initial;
}
}
.shipping-makeLadingBill {
......@@ -318,10 +366,9 @@ export default {
justify-content: center;
}
}
.shippingSea-dialog{
::v-deep .el-dialog__body{
.shippingSea-dialog {
::v-deep .el-dialog__body {
padding-top: 0;
}
}
</style>
......@@ -349,8 +349,8 @@
:label="$t('客户经理ID')"
align="center" v-show="false"
prop="customerService"
>-->
</el-table-column>
>
</el-table-column>-->
<el-table-column :label="$t('出货渠道')">
<template slot-scope="{ row }">
{{ channel(row.transportType) }}
......
This diff is collapsed.
This diff is collapsed.
......@@ -115,11 +115,11 @@
label=""
label-width="0"
style="margin-bottom: 0"
prop="latestPayAt"
prop="sjfkdate"
>
<el-date-picker
clearable
v-model="form.latestPayAt"
v-model="form.sjfkdate"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
type="date"
......@@ -299,11 +299,48 @@
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('备注')">
<!--lanbm 2024-05-30 添加备注信息和附件上传功能-->
<el-form-item abel="" label-width="0" prop="editreason">
<el-input
v-model="form.editreason" disabled
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item :label="$t('附件')">
<el-form-item label="" label-width="0" prop="filelist">
<el-upload
v-if="!isView"
class="upload-demo"
:action="uploadFileUrl"
:headers="headers"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:on-error="handleUploadError"
:before-remove="beforeRemove"
:file-list="form.filelist"
multiple
>
<!--filelist 是保存在数据库中的文件路径-->
<el-button size="small" type="primary">{{
$t("上传附件")
}}</el-button>
</el-upload>
<div v-else>
<div v-for="(v, i) in form.filelist" :key="i">
<el-link :href="v.url" type="primary" target="_blank">{{
v.name
}}</el-link>
</div>
</div>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
<div slot="footer" style="margin: 20px 0">
<!-- <el-button type="primary" @click="submitDraft">{{ $t('保 存') }}</el-button> -->
<el-button
type="primary"
@click="$store.dispatch('tagsView/delCurrentView')"
......@@ -339,6 +376,8 @@ export default {
},
data() {
return {
//lanbm 2024-05-31 add
isView: true,
id: 0,
payableId: 0,
orderData: [],
......
......@@ -133,7 +133,8 @@
</el-card>
<el-card class="card">
<div slot="header" class="card-title">{{ $t("收款信息") }}</div>
<!--收款信息 账单信息 lanbm 2024-05-29 update -->
<div slot="header" class="card-title">{{ $t("账单信息") }}</div>
<el-table :data="form.receiptAccountList" border>
<el-table-column :label="$t('应收币种')" align="center">
<template slot-scope="scope">
......@@ -327,6 +328,7 @@
v-hasPermi="['ecw:payment:detail:detail']"
>{{ $t("详情") }}</el-button
>
<!--核销 提交 lanbm 2024-05-29 -->
<el-button
v-if="scope.row.status == 0"
type="text"
......@@ -334,7 +336,7 @@
$router.push(`bankDetail?id=` + id + `&bankId=` + scope.row.id)
"
v-hasPermi="['ecw:payment:detail:writeOff']"
>{{ $t("核销") }}</el-button
>{{ $t("提交") }}</el-button
>
<el-button
v-if="scope.row.status == 1"
......@@ -812,7 +814,8 @@ import NP from "number-precision";
export default {
data() {
return {
uploadFileUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload", // 上传的图片服务器地址
uploadFileUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload",
//上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken(),
},
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -1573,6 +1573,7 @@ export default {
},
// 关联报价单
getOfferData() {
//查询订单关联报价单下拉列表 lanbm 2024-05-29 添加注释
const that = this
const offParams = {}
if (that.form.lineId) {
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment