Commit 5d508865 authored by lanbaoming's avatar lanbaoming

2024-06-10发布提交

parents 964c36e7 a79d96a7
......@@ -117,6 +117,8 @@ export function getLogList(params) {
}
// 获得费用登记列表
//先登记费用入表 ecw_box_cost 同时进应付款表,ecw_payable,
//用户在应收款列表中点击收款,生成付款单,入表 ecw_payment
export function getCostList(params) {
return request({
url: "/ecw/box-cost/list",
......@@ -124,8 +126,8 @@ export function getCostList(params) {
params,
});
}
// 付款单主表 SELECT * from ecw_payment
// 付款单费用明细 SELECT * from ecw_payable
// 收款单表 SELECT * from ecw_payment
// 应付款表 SELECT * from ecw_payable
// 根据明细获取主表ID
export function getPaymentId(id) {
return request({
......@@ -360,7 +362,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({
......
......@@ -140,6 +140,14 @@ export function getReceivableItem(query) {
})
}
//lanbm 2024-06-05 add
export function getReceivableItem2(id) {
return request({
url: '/ecw/receipt-item/get?id=' + id,
method: 'get'
})
}
// 根据收款单ID获得收款账户细列表
export function getReceiptAccountList(query) {
return request({
......@@ -462,6 +470,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 +488,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 +516,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 +535,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',
......
......@@ -159,6 +159,13 @@ export const constantRoutes = [
component: (resolve) => require(['@/views/bpm/processInstance/detail'], resolve),
name: 'Flow details',
meta: {title: '流程详情',titleEn:'Flow details', activeMenu: '/bpm/task/my'}
},
{
//lanbm 2024-06-07 add
path: 'process-instance/detail2',
component: (resolve) => require(['@/views/bpm/processInstance/detail2'], resolve),
name: 'Flow details2',
meta: {title: '流程详情',titleEn:'Flow details', activeMenu: '/bpm/task/my'}
}
]
},
......
......@@ -16,7 +16,7 @@
<el-form
:ref="'form' + index"
:model="auditForms[index]"
:rules="auditRule"
:rules="auditRule2"
label-width="100px"
>
<el-form-item
......@@ -88,6 +88,7 @@
</div>
</el-col>
</el-card>
<!-- 申请信息 -->
<el-card class="box-card mt-10" v-loading="processInstanceLoading">
<div slot="header" class="clearfix">
......@@ -295,6 +296,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 +680,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 +757,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 = {
......
This diff is collapsed.
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item :label="$t('流程编号')" prop="processInstanceId">
<el-input v-model="queryParams.processInstanceId" :placeholder="$t('流程编号')" clearable
@keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.processInstanceId"
:placeholder="$t('流程编号')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('流程名称')" prop="name">
<el-input v-model="queryParams.name" :placeholder="$t('流程名称')" clearable @keyup.enter.native="handleQuery"/>
<el-input
v-model="queryParams.name"
:placeholder="$t('流程名称')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('流程分类')" prop="category">
<el-select v-model="queryParams.category" :placeholder="$t('请选择流程分类')" clearable>
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY)"
:key="dict.value" :label="$l(dict, 'label')" :value="dict.value"/>
<el-select
v-model="queryParams.category"
:placeholder="$t('请选择流程分类')"
clearable
>
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY)"
:key="dict.value"
:label="$l(dict, 'label')"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('提交时间')">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" :start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')"/>
<el-date-picker
v-model="dateRangeCreateTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
:start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')"
/>
</el-form-item>
<el-form-item :label="$t('业务编号')" prop="businessNo">
<el-input v-model="queryParams.businessNo" :placeholder="$t('请输入业务编号')" clearable
@keyup.enter.native="handleQuery"/>
<el-form-item :label="$t('业务编号')" prop="businessNo">
<el-input
v-model="queryParams.businessNo"
:placeholder="$t('请输入业务编号')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('搜索') }}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{ $t('重置') }}</el-button>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{
$t("搜索")
}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{
$t("重置")
}}</el-button>
</el-form-item>
</el-form>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('流程编号')" align="center" prop="processInstance.id" width="320" fixed/>
<el-table-column :label="$t('流程名称')" align="center" prop="processInstance.name" width="200"/>
<el-table-column :label="$t('业务编号')" align="center" prop="businessNo"/>
<el-table-column :label="$t('流程分类')" align="center" prop="category" width="200">
<el-table-column
:label="$t('流程编号')"
align="center"
prop="processInstance.id"
width="320"
fixed
/>
<el-table-column
:label="$t('流程名称')"
align="center"
prop="processInstance.name"
width="200"
/>
<el-table-column
:label="$t('业务编号')"
align="center"
prop="businessNo"
/>
<el-table-column
:label="$t('流程分类')"
align="center"
prop="category"
width="200"
>
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category"/>
<dict-tag
:type="DICT_TYPE.BPM_MODEL_CATEGORY"
:value="scope.row.category"
/>
</template>
</el-table-column>
<el-table-column :label="$t('当前审批节点')" align="center" prop="name" width="200"/>
<el-table-column
:label="$t('当前审批节点')"
align="center"
prop="name"
width="200"
/>
<!-- <el-table-column :label="$t('状态')" align="center" prop="" width="200" >{{ $t('缺少字段') }}</el-table-column> -->
<!-- <el-table-column :label="$t('流程发起人')" align="center" prop="processInstance.startUserNickname" width="120"/>-->
<el-table-column :label="$t('结果')" align="center" prop="result">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT" :value="scope.row.result"/>
<dict-tag
:type="DICT_TYPE.BPM_PROCESS_INSTANCE_RESULT"
:value="scope.row.result"
/>
</template>
</el-table-column>
<el-table-column :label="$t('提交时间')" align="center" prop="createTime" width="180">
<el-table-column
:label="$t('提交时间')"
align="center"
prop="createTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('结束时间')" align="center" prop="endTime" width="180">
<el-table-column
:label="$t('结束时间')"
align="center"
prop="endTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endTime) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('操作')" align="center" fixed="right" class-name="small-padding fixed-width">
<el-table-column
:label="$t('操作')"
align="center"
fixed="right"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleAudit(scope.row)"
v-hasPermi="['bpm:task:query']">{{ $t('详情') }}
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleAudit(scope.row)"
v-hasPermi="['bpm:task:query']"
>{{ $t("详情") }}
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import {getDoneTaskPage} from '@/api/bpm/task'
import {getDate} from "@/utils/dateUtils";
import { getDoneTaskPage } from "@/api/bpm/task";
import { getDate } from "@/utils/dateUtils";
export default {
//lanbm 2024-05-08 添加查询条件不清空优化
......@@ -118,9 +210,9 @@ export default {
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
getDoneTaskPage(params).then(response => {
let params = { ...this.queryParams };
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
getDoneTaskPage(params).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
......@@ -142,8 +234,11 @@ export default {
},
/** 处理审批按钮 */
handleAudit(row) {
this.$router.push({path: "/bpm/process-instance/detail", query: {id: row.processInstance.id}});
this.$router.push({
path: "/bpm/process-instance/detail",
query: { id: row.processInstance.id },
});
},
}
},
};
</script>
......@@ -290,7 +290,7 @@ export default {
return;
}
}
this.form.comment="";
this.form.comment = "";
this.title = "批量通过";
this.titleType = 1;
this.open = true;
......@@ -309,11 +309,10 @@ export default {
return;
}
}
this.form.comment="";
this.form.comment = "";
this.title = "批量不通过";
this.titleType = 2;
this.open = true;
},
submitForm() {
this.$refs["form"].validate((valid) => {
......@@ -380,10 +379,19 @@ export default {
},
/** 处理审批按钮 */
handleAudit(row) {
this.$router.push({
path: "/bpm/process-instance/detail",
query: { id: row.processInstance.id },
});
//lanbm 2024-06-07 添加根据不同的业务打开不同的展示页面
let name1 = row.processInstance.name;
if (name1.includes("银行实收明细核销审核")) {
this.$router.push({
path: "/bpm/process-instance/detail2",
query: { id: row.processInstance.id },
});
} else {
this.$router.push({
path: "/bpm/process-instance/detail",
query: { id: row.processInstance.id },
});
}
},
handleCancel(row) {
const id = row.id;
......
......@@ -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>
......@@ -392,7 +392,7 @@
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button
type="primary"
type="primary" :disabled="scope.row.paymentId!='-1'"
size="small"
@click="editCostClick(scope.row)"
style="marginright: 10px"
......@@ -404,7 +404,7 @@
@confirm="deleteCostClick(scope.row)"
>
<el-button
type="danger"
type="danger" :disabled="scope.row.paymentId!='-1'"
size="small"
slot="reference"
v-hasPermi="['ecw:box-cost:delete']"
......
......@@ -456,7 +456,7 @@
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button
type="primary"
type="primary" :disabled="scope.row.paymentId!='-1'"
size="small"
@click="editCostClick(scope.row)"
style="marginright: 10px"
......@@ -468,7 +468,7 @@
@confirm="deleteCostClick(scope.row)"
>
<el-button
type="danger"
type="danger" :disabled="scope.row.paymentId!='-1'"
size="small"
slot="reference"
v-hasPermi="['ecw:box-cost:delete']"
......
This diff is collapsed.
......@@ -11,27 +11,30 @@
>
<el-form-item :label="$t('客户编号')" prop="number">
<el-input
v-model="queryParams.number"
v-model.trim="queryParams.number"
:placeholder="$t('请输入客户编号')"
clearable
@keyup.enter.native="handleQuery"
/>
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"/>
</el-form-item>
<el-form-item :label="$t('客户名称')" prop="name">
<el-input
v-model="queryParams.name"
v-model.trim="queryParams.name"
:placeholder="$t('请输入客户名称')"
clearable
@keyup.enter.native="handleQuery"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item :label="$t('客户等级')" prop="level">
<el-select
multiple
clearable
v-model="queryParams.level"
:placeholder="$t('请选择客户等级')"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
......@@ -44,23 +47,28 @@
<el-form-item :label="$t('联系方式')">
<el-input
:placeholder="$t('请输入联系方式')"
v-model="queryParams.defaultContactPhone"
v-model.trim="queryParams.defaultContactPhone"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
></el-input>
</el-form-item>
<el-form-item :label="$t('客户类别')" prop="level">
<dict-selector
multiple
clearable
:type="DICT_TYPE.CUSTOMER_TYPE"
v-model="queryParams.type"
@change="handleQuery"
></dict-selector>
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select
multiple
clearable
v-model="queryParams.customerService"
:placeholder="$t('请选择客户经理')"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in customerServiceList"
......@@ -72,10 +80,12 @@
</el-form-item>
<el-form-item :label="$t('客户来源')" prop="source">
<el-select
multiple
clearable
v-model="queryParams.source"
:placeholder="$t('请选择客户来源')"
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
......@@ -87,9 +97,11 @@
</el-form-item>
<el-form-item :label="$t('国家')" prop="source">
<el-select
multiple
clearable
v-model="queryParams.country"
:placeholder="$t('请选择国家')"
@change="handleQuery"
>
<el-option
v-for="dict in countryList"
......@@ -101,11 +113,13 @@
</el-form-item>
<el-form-item :label="$t('客户状态')" prop="status">
<el-select
multiple
clearable
v-model="queryParams.status"
:placeholder="$t('请选择客户状态')"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
......@@ -125,24 +139,29 @@
range-separator="-"
:start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')"
/>
</el-form-item>
<el-form-item :label="$t('信用等级')" prop="department">
<el-select clearable v-model="queryParams.creditLevel">
<el-select multiple clearable v-model="queryParams.creditLevel">
<el-option
v-for="(item, index) in creditList"
:label="isChinese ? item.nameZh : item.nameEn"
:key="index"
:value="item.id"
@change="handleQuery"
></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('市场获客')" prop="department">
<dict-selector
multiple
clearable
:type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model="queryParams.resourceType"
formatter="number"
@change="handleQuery"
></dict-selector>
</el-form-item>
<el-form-item>
......@@ -349,8 +368,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) }}
......
......@@ -4,19 +4,19 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="queryParams.name" :placeholder="$t('请输入客户名称')" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model.trim="queryParams.name" :placeholder="$t('请输入客户名称')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"/>
</el-form-item>
<el-form-item :label="$t('联系方式')">
<el-input :placeholder="$t('请输入联系方式')" v-model="queryParams.defaultContactPhone"></el-input>
<el-input :placeholder="$t('请输入联系方式')" v-model.trim="queryParams.defaultContactPhone" @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"></el-input>
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-select clearable v-model="queryParams.customerService" @change="handleQuery" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('客户来源')" prop="source">
<el-select clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" clearable size="small">
<el-select clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" @change="handleQuery" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
</el-select>
......@@ -26,7 +26,7 @@
type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
<el-form-item :label="$t('市场获客')" prop="department">
<dict-selector clearable :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="queryParams.marketType" formatter="number"></dict-selector>
<dict-selector clearable :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="queryParams.marketType" formatter="number" @change="handleQuery"></dict-selector>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
......
......@@ -4,43 +4,43 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item :label="$t('客户编号')" prop="number">
<el-input v-model="queryParams.number" :placeholder="$t('请输入客户编号')" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model.trim="queryParams.number" :placeholder="$t('请输入客户编号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"/>
</el-form-item>
<el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="queryParams.name" :placeholder="$t('请输入客户名称')" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model.trim="queryParams.name" :placeholder="$t('请输入客户名称')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"/>
</el-form-item>
<el-form-item :label="$t('客户等级')" prop="level">
<el-select clearable v-model="queryParams.level" :placeholder="$t('请选择客户等级')" clearable size="small">
<el-select multiple v-model="queryParams.level" :placeholder="$t('请选择客户等级')" clearable size="small" @change="handleQuery">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('联系方式')">
<el-input :placeholder="$t('请输入联系方式')" v-model="queryParams.defaultContactPhone"></el-input>
<el-input :placeholder="$t('请输入联系方式')" v-model.trim="queryParams.defaultContactPhone" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"></el-input>
</el-form-item>
<el-form-item :label="$t('客户类别')" prop="level">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" v-model="queryParams.type"></dict-selector>
<dict-selector multiple :type="DICT_TYPE.CUSTOMER_TYPE" v-model="queryParams.type" clearable @change="handleQuery"></dict-selector>
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small">
<el-select multiple v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small" @change="handleQuery">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('客户来源')" prop="source">
<el-select clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" clearable size="small">
<el-select v-model="queryParams.source" :placeholder="$t('请选择客户来源')" clearable size="small" @change="handleQuery">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('国家')" prop="source">
<el-select clearable v-model="form.country" :placeholder="$t('请选择国家')">
<el-select multiple clearable v-model="form.country" :placeholder="$t('请选择国家')" @change="handleQuery">
<el-option v-for="dict in countryList"
:key="dict.id" :label=" isChinese ? dict.nameZh : dict.nameEn" :value="parseInt(dict.id)" />
</el-select>
</el-form-item>
<el-form-item :label="$t('客户状态')" prop="status">
<el-select clearable v-model="queryParams.status" :placeholder="$t('请选择客户状态')" clearable size="small">
<el-select multiple v-model="queryParams.status" :placeholder="$t('请选择客户状态')" clearable size="small" @change="handleQuery">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
</el-select>
......@@ -50,12 +50,12 @@
type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
<el-form-item :label="$t('信用等级')" prop="department">
<el-select clearable v-model="queryParams.creditLevel" >
<el-select multiple clearable v-model="queryParams.creditLevel" @change="handleQuery">
<el-option v-for="(item,index) in creditList" :label=" isChinese ? item.nameZh : item.nameEn" :key="index" :value="item.id" ></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('市场获客')" prop="department">
<dict-selector clearable :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="queryParams.marketType" formatter="number"></dict-selector>
<dict-selector multiple clearable :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="queryParams.marketType" formatter="number" @change="handleQuery"></dict-selector>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
......
This diff is collapsed.
This diff is collapsed.
......@@ -343,6 +343,9 @@ import { getSupplierPage } from "@/api/ecw/supplier";
import { getCurrencyPage } from "@/api/ecw/currency";
import { getWarehouseList } from "@/api/ecw/warehouse";
/*
应付款
*/
export default {
name: "EcwFinancialPayable",
components: {},
......
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.
......@@ -6,8 +6,9 @@
<pdf-viewer id="pdfViewer" ref="viewer" v-if="pdfData" :url="pdfData" style="display:block; margin: 0 auto; max-height: 80vh; overflow:auto;" />
<!-- <div v-if="detail" class="billcontent" v-html="detail.billContent"></div> -->
<p class="subs" style="text-align:center">
<el-button type="primary" @click="download" :disabled="!detail">{{$t('下载')}}</el-button>
<el-button type="primary" @click="print" :disabled="!detail">{{$t('打印')}}</el-button>
<!--lanbm 2024-06-04 添加审批状态控制逻辑-->
<el-button type="primary" @click="download" :disabled="detail.bpmStatus!='2'">{{$t('下载')}}</el-button>
<el-button type="primary" @click="print" :disabled="detail.bpmStatus!='2'">{{$t('打印')}}</el-button>
</p>
</el-dialog>
</template>
......
......@@ -574,7 +574,9 @@
</el-card>
<print-warehouse-receipt v-if="showWarehouseReceipt" :order-id="order.orderId" @close="showWarehouseReceipt=false" />
<!--查看提货单 lanbm 2024-06-03-->
<print-lading-bill v-if="showLadingBill" :order-id="order.orderId" :transport-type="order.transportId" @close="showLadingBill=false" />
<!--入仓记录 lanbm 2024-06-10 add-->
<warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" :type="type" @openPackHistory="openPackHistory" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<el-dialog :title="$t('付款人')" :visible.sync="showDarweeDialog" v-if="order && order.customDraweeVOList">
<el-table :data="order.customDraweeVOList" v-if="order.drawee==3" >
......
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.
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