Commit 68770381 authored by 我在何方's avatar 我在何方
parents efc07da3 4ae1078e
......@@ -46,6 +46,10 @@ export default {
align-items: center;
justify-content: center;
}
.empty-placeholder{
padding: 50px;
text-align: center;
}
$sizes: 10,20,30,50,100,150,200,500,800,1000;
@for $i from 1 through length($sizes){
$item: nth($sizes, $i);
......
import request from '@/utils/request'
import request from "@/utils/request";
// 创建出货
export function createbox(data) {
return request({
url: '/shipment/box/create',
method: 'post',
data: data
})
url: "/shipment/box/create",
method: "post",
data: data,
});
}
// 更新出货
export function updatebox(data) {
return request({
url: '/shipment/box/update',
method: 'put',
data: data
})
url: "/shipment/box/update",
method: "put",
data: data,
});
}
// 删除出货
export function deletebox(id) {
return request({
url: '/shipment/box/delete?id=' + id,
method: 'delete'
})
url: "/shipment/box/delete?id=" + id,
method: "delete",
});
}
// 获得出货
export function getbox(id) {
return request({
url: '/shipment/box/get?id=' + id,
method: 'get'
})
url: "/shipment/box/get?id=" + id,
method: "get",
});
}
// 获得出货分页
export function getboxPage(query) {
return request({
url: '/shipment/box/page',
method: 'get',
params: query
})
url: "/shipment/box/page",
method: "get",
params: query,
});
}
// 导出出货 Excel
export function exportboxExcel(query) {
return request({
url: '/shipment/box/export-excel',
method: 'get',
url: "/shipment/box/export-excel",
method: "get",
params: query,
responseType: 'blob'
})
responseType: "blob",
});
}
// 创建费用登记
......@@ -64,10 +64,10 @@ export function createCost(data) {
}
return request({
url: '/ecw/box-cost/create',
method: 'post',
data
})
url: "/ecw/box-cost/create",
method: "post",
data,
});
}
// 删除费用登记
......@@ -75,44 +75,115 @@ export function deleteCost(id) {
return request({
url: `/ecw/box-cost/delete?id=${id}`,
method: "delete",
})
});
}
// 审核详情
export function approvalDetail(data) {
return request({
url: '/ecw/box-approval/approvalDetail',
method: 'post',
url: "/ecw/box-approval/approvalDetail",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
})
});
}
// 出货操作日志列表
export function getLogList(params) {
return request({
url: '/ecw/box-op-log/list',
method: 'get',
params
})
url: "/ecw/box-op-log/list",
method: "get",
params,
});
}
// 获得费用登记列表
export function getCostList(params) {
return request({
url: '/ecw/box-cost/list',
method: 'get',
params
})
url: "/ecw/box-cost/list",
method: "get",
params,
});
}
// 获得出货异常记录列表
export function getAbnormalList(params) {
return request({
url: '/ecw/box-abnormal/list',
method: 'get',
params
})
url: "/ecw/box-abnormal/list",
method: "get",
params,
});
}
// 获得制作提货单列表
export function getMakeBillList(params) {
return request({
url: "/shipment/make-bill-of-lading/getMakeLadingBillList",
method: "get",
params,
});
}
// 制作提货单
export function makeBillService(params) {
return request({
url: "/shipment/make-bill-of-lading/make",
method: "get",
params,
});
}
// 创建制作提货单
export function createBillService(data) {
return request({
url: "/shipment/make-bill-of-lading/create",
method: "post",
data,
});
}
// 取消制作提货单审核
export function cancelBillService(id) {
return request({
url: `/shipment/make-bill-of-lading/cancel?id=${id}`,
method: "delete",
});
}
// 下载提货单
export function downloadBillService(params) {
return request({
url: "/shipment/make-bill-of-lading/download",
responseType: "arraybuffer",
method: "get",
params,
});
}
// 更新制作提货单
export function updateBillService(data) {
return request({
url: "/shipment/make-bill-of-lading/update",
method: "put",
data,
});
}
// 删除制作提货单
export function deleteBillService(id) {
return request({
url: `/shipment/make-bill-of-lading/delete?id=${id}`,
method: "delete",
});
}
// 获得制作提货单
export function getBillService(params) {
return request({
url: "/shipment/make-bill-of-lading/get",
method: "get",
params,
});
}
/**
......
......@@ -61,3 +61,12 @@ export function exportChannelExcel(query) {
responseType: 'blob'
})
}
//
export function getChannelListByIds(params){
return request({
url: '/ecw/channel/list',
method: 'get',
params
})
}
......@@ -18,6 +18,15 @@ export function updateReceipt(data) {
})
}
// 获取收款单列表
export function getReceiptList(query) {
return request({
url: '/ecw/receipt/page',
method: 'get',
params: query
})
}
// 获取应收款列表
export function getReceivableList(query) {
return request({
......@@ -36,30 +45,39 @@ export function getReceivableInfoByIds(query) {
})
}
// 获取收款单列表
export function getReceiptList(query) {
// 修改优惠信息
export function updateReceivableDiscountById(query) {
return request({
url: '/ecw/receipt/page',
method: 'get',
params: query
url: '/ecw/receivable/updateReceivableDiscountById',
method: 'post',
data: query
})
}
// 核销收款单
export function receiptVerification(id) {
// 得到应收优惠的最后操作人
export function getReceivableDiscountLogById(query) {
return request({
url: '/ecw/receipt/verification/' + id,
method: 'GET'
url: '/ecw/receivable/getReceivableDiscountLogById',
method: 'get',
params: query
})
}
// 核销收款单
// export function receiptVerification(id) {
// return request({
// url: '/ecw/receipt/verification/' + id,
// method: 'GET'
// })
// }
// 反核销收款单
export function receiptVerificationCancel(id) {
return request({
url: '/ecw/receipt/verificationCancel/' + id,
method: 'GET'
})
}
// export function receiptVerificationCancel(id) {
// return request({
// url: '/ecw/receipt/verificationCancel/' + id,
// method: 'GET'
// })
// }
// 获取收款单详情
export function getReceiptInfoByIds(query) {
......
......@@ -163,7 +163,7 @@ export function orderWarehouseIn(data){
})
}
// 入仓
// 入仓修改
export function orderWarehouseInUpdateApply(data){
return request({
url: '/order/order-warehouse-in/update-apply',
......@@ -171,6 +171,13 @@ export function orderWarehouseInUpdateApply(data){
data
})
}
// 获取入仓修改审批单详情-审批使用
export function getWarehouseUpdateApprovalInfo(id) {
return request({
url: '/order/order-warehouse-in/get-update-approval-info?formId=' + id,
method: 'get'
})
}
// 入仓完成
export function orderWarehouseInFinish(data){
......@@ -190,6 +197,15 @@ export function rollbackApply(data){
})
}
// 退仓-订单项退仓(不审批)
export function rollbackDelete(data){
return request({
url: '/order/order-warehouse-in/rollback-order-item',
method: 'put',
data
})
}
//取消订单
export function cancelOrder(orderId){
return request({
......@@ -352,3 +368,29 @@ export function getOrderSpecialByApproveId(approveId) {
})
}
// 根据合并订单编号获得已合单的订单动态
export function getMergeLogByMergedOrderNo(params){
return request({
url: '/order/merge/getMergeLogByMergedOrderNo',
method: 'get',
params
})
}
// 导入装箱单
export function orderImport(data) {
return request({
url: '/ecw/order/import',
method: 'post',
data
})
}
// 下载装箱单模板
export function exportPackingList(){
return request({
url: '/ecw/order/export-packing-list',
method: 'get',
responseType: 'blob'
})
}
\ No newline at end of file
......@@ -93,3 +93,26 @@ export function orderReview(orderId){
method: 'put'
})
}
// 根据订单id批量复合订单控货人放货
export function batchReview(data){
return request({
url: '/ecw/order-cargo-control-pick/review/',
method: 'put',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data
})
}
// 获得可调货的控货订单列表
export function seasoningCondimentsSelect(params){
return request({
url: '/ecw/order-cargo-control-pick/seasoning-condiments/cargo-control/order/select',
method: 'get',
params
})
}
......@@ -52,3 +52,12 @@ export function exportReceiptExcel(query) {
responseType: 'blob'
})
}
// 根据订单ID获得应收款列表
export function getReceivableListByOrderId(params){
return request({
url: '/ecw/receivable/getReceivableListByOrderId',
method: 'get',
params
})
}
\ No newline at end of file
......@@ -98,3 +98,12 @@ export function getTradeCityList(query) {
params: query
})
}
export function listByIds(params){
return request({
url: '/ecw/region/listByIds',
method: 'get',
params
})
}
\ No newline at end of file
<template>
<div>
<el-select v-model="formData.country">
<el-select v-model="formData.country" :disabled="readonly">
<el-option v-for="(item) in treeList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select>
<el-select v-model="formData.province" class="ml-10">
<el-select v-model="formData.province" class="ml-10" :disabled="readonly">
<el-option v-for="(item) in provinceList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select>
<el-select v-model="formData.city" class="ml-10">
<el-select v-model="formData.city" class="ml-10" :disabled="readonly">
<el-option v-for="(item) in cityList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select>
</div>
......@@ -15,41 +15,75 @@
import { getListTree } from "@/api/ecw/region";
export default {
props:{
country: Number,
city: Number,
province: Number,
readonly: Boolean
},
data(){
return {
formData:{
country: undefined,
province: undefined,
city: undefined
},
treeList: [],
provinceList: [],
cityList:[]
// provinceList: [],
// cityList:[]
}
},
watch:{
city(val){
this.$set(this.formData, 'city', val)
},
province(val){
this.$set(this.formData, 'province', val)
},
country(val){
this.$set(this.formData, 'country', val)
},
'formData.city'(city){
this.$emit('cityChange', city)
},
'formData.country'(country){
this.$emit('countryChange', country)
this.treeList.forEach(item => {
/* this.treeList.forEach(item => {
if(item.id == country){
this.provinceList = item.children || []
}
})
}) */
},
'formData.province'(province){
this.$emit('provinceChange', province)
this.provinceList.forEach(item => {
/* this.provinceList.forEach(item => {
if(item.id == province){
this.cityList = item.children || []
}
})
}) */
}
},
computed:{
provinceList(){
if(!this.formData.country) return []
let country = this.treeList.find(item => item.id == this.formData.country)
return country && country.children || []
},
cityList(){
if(!this.provinceList.length) return []
let province = this.provinceList.find(item => item.id == this.formData.province)
return province && province.children || []
}
},
created(){
getListTree({treeType: 1}).then(response => {
this.treeList = response.data
})
this.formData = {
country: this.country,
province: this.province,
city: this.city
}
}
}
</script>
\ No newline at end of file
<template>
<div class="dict-selector">
<el-select v-if="formType == 'select'" v-model="valueSync" :placeholder="placeholder" clearable :multiple="multiple" :disabled="disabled">
<el-select v-if="formType == 'select'" v-model="valueSync" :placeholder="placeholder" clearable :multiple="multiple" :disabled="disabled" @change="val => $emit('change', val)">
<el-option v-for="dict in formattedList"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
......
<template>
<div class="need-know" :id="'need-know_' + keyname" v-if="detail">
<!-- <h2>{{detail.titleZh}}</h2> -->
<div class="body" v-html="detail.contentZh"></div>
<div class="body" ref="body" v-html="detail.contentZh"></div>
</div>
</template>
<script>
......@@ -26,6 +26,9 @@ export default {
download(){
// 直接保存图片
let l = this.$loading()
/* document.querySelectorAll(`#need-know_${this.keyname} img`).forEach(img => {
img.setAttribute('crossOrigin', '*')
}) */
html2canvas(document.querySelector("#need-know_" + this.keyname)).then(canvas => {
canvas.toBlob((blob) => {
FileSaver.saveAs(blob, this.keyname + '.png')
......
......@@ -67,6 +67,10 @@ export default {
cityId: {
type: Number,
default: undefined
},
warehouseId: {
type: Number,
default: undefined
}
},
......@@ -87,7 +91,7 @@ export default {
if (val) {
this.opened = true
getByWarehouseId({cityId: this.cityId}).then(r => {
getByWarehouseId({cityId: this.cityId,warehouseId: this.warehouseId }).then(r => {
const area = r.data
area.forEach(e => {
// 仓库
......
<template>
<div>
<div style="height:350px; overflow:hidden;">
<div class="mb-10">
<my-process-viewer
ref="processViewer"
:value="bpmnXML"
......@@ -8,7 +8,6 @@
:activityData="activityData"
:processInstanceData="processInstanceData"
:taskData="taskData"
style="height:500px; margin-top: -80px"
/>
</div>
<el-form label-position="left" label-width="100px">
......
......@@ -90,7 +90,10 @@ export default {
let xmlString = xml || DefaultEmptyXML(newId, newName, this.prefix);
try {
// console.log(this.bpmnModeler.importXML);
let { warnings } = await this.bpmnModeler.importXML(xmlString);
let { warnings } = await this.bpmnModeler.importXML(xmlString)
// 220906 增加一个缩放,自动适应尺寸
this.bpmnModeler.get('canvas').zoom('fit-viewport');
if (warnings && warnings.length) {
warnings.forEach(warn => console.warn(warn));
}
......
......@@ -297,7 +297,7 @@ export const constantRoutes = [
meta: {title: '订单特价申请', icon: '', activeMenu: '/order/index'}
},
{
path: 'discount/:offerProdId(\\d+)',
path: 'discount/:orderItemId(\\d+)',
component: (resolve) => import('@/views/ecw/order/special/discount'),
props: true,
name: 'discount',
......
......@@ -177,6 +177,11 @@ export default {
processId: this.processInstance.businessKey,
type: 1
},
warehouse_update: {
component: "warehouseDetails",
processId: this.processInstance.businessKey,
type: 4
},
container_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
......
......@@ -141,10 +141,10 @@
</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.page" :limit.sync="queryParams.pageSize" @pagination="getList" @current-change="pageChange" />
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="dialogCfg.title" :visible.sync="dialogCfg.open" :width="dialogCfg.width" append-to-body class="shippingSea-dialog">
<el-dialog :title="dialogCfg.title" :visible.sync="dialogCfg.open" :width="dialogCfg.width" :fullscreen="dialogCfg.fullscreen" append-to-body class="shippingSea-dialog">
<template v-if="dialogCfg.dialogType === 'edit' || dialogCfg.dialogType === 'add'">
<editForm v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :warehouseList="warehouseList" :transportTypes="transportTypes" :cabinetList="cabinetList" />
</template>
......@@ -155,7 +155,7 @@
<regError v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" />
</template>
<template v-if="dialogCfg.dialogType === 'editLadingBill'">
<ladingBill v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" />
<ladingBill v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :getCabinetName="getCabinetName" />
</template>
</el-dialog>
</div>
......@@ -169,7 +169,7 @@ import { getListTree } from "@/api/ecw/region";
import costForm from "./costForm.vue";
import regError from "./regError.vue";
import editForm from "./editForm.vue";
import ladingBill from "./ladingBill.vue";
import ladingBill from "./ladingBill/index.vue";
export default {
name: "indexSea",
......@@ -207,13 +207,14 @@ export default {
width: "600px",
// 是否显示弹出层
open: false,
fullscreen: false,
},
// 当前行
currRow: {},
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
page: 1,
pageSize: 10,
},
cabinetList: [],
......@@ -279,7 +280,7 @@ export default {
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.queryParams.page = 1;
this.getList();
},
/** 重置按钮操作 */
......@@ -290,20 +291,21 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$set(this.dialogCfg, "open", true);
this.$set(this.dialogCfg, "title", "添加出货");
this.$set(this.dialogCfg, "dialogType", "add");
this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "fullscreen", false);
this.$set(this.dialogCfg, "open", true);
},
/** 修改按钮操作 */
handleUpdate(row) {
const id = row.id;
getbox(id).then((response) => {
this.currRow = response.data;
this.$set(this.dialogCfg, "open", true);
this.$set(this.dialogCfg, "title", "修改出货");
this.$set(this.dialogCfg, "dialogType", "edit");
this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "open", true);
});
},
/** 删除按钮操作 */
......@@ -323,7 +325,7 @@ export default {
handleExport() {
// 处理查询参数
let params = { ...this.queryParams };
params.pageNo = undefined;
params.page = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
// 执行导出
......@@ -348,6 +350,8 @@ export default {
},
/** 查看按钮操作 */
handleCommand(row, command) {
this.$set(this.dialogCfg, "fullscreen", false);
switch (command) {
case "sea":
this.$router.push("/boxSea/shippingSea/" + row.id);
......@@ -357,41 +361,44 @@ export default {
this.handleUpdate(row);
break;
case "delete":
this.handleDelete(row);
break;
case "detail":
this.$router.push("/boxSea/query/" + row.id);
break;
case "editLadingBill":
const cabinetLabel = this.getCabinetName(row.cabinetId);
const title = `查看提单 ${row.selfNo} 柜号:${row.cubNo} 柜型:${cabinetLabel}`;
this.$set(this.dialogCfg, "open", true);
const title = `查看提单 ${row.selfNo ?? ""} 柜号:${
row.cubNo ?? ""
} 柜型:${cabinetLabel}`;
this.$set(this.dialogCfg, "title", title);
this.$set(this.dialogCfg, "dialogType", "editLadingBill");
this.$set(this.dialogCfg, "width", "60%");
this.currRow = row;
break;
case "delete":
this.handleDelete(row);
this.$set(this.dialogCfg, "fullscreen", true);
break;
case "cost":
this.$set(this.dialogCfg, "open", true);
this.$set(this.dialogCfg, "title", "费用登记");
this.$set(this.dialogCfg, "dialogType", "cost");
this.$set(this.dialogCfg, "width", "600px");
this.currRow = row;
break;
case "error":
this.$set(this.dialogCfg, "open", true);
this.$set(this.dialogCfg, "title", "异常登记");
this.$set(this.dialogCfg, "dialogType", "error");
this.$set(this.dialogCfg, "width", "600px");
this.currRow = row;
break;
}
case "detail":
this.$router.push("/boxSea/query/" + row.id);
break;
if (["editLadingBill", "cost", "error"].includes(command)) {
this.currRow = row;
this.$set(this.dialogCfg, "dialogType", command);
this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "open", true);
}
},
/* 分页 */
pageChange(page) {
this.pageParam.page = page;
this.getList();
},
},
};
</script>
<template>
</template>
<script>
export default {
name: "ladingBill",
};
</script>
<style lang="scss" scoped>
</style>
<template>
<el-row class="shipping-ladingBill">
<el-row class="oper-button">
<el-button type="primary">打包下载</el-button>
<el-button type="primary">应收汇总单</el-button>
<el-button type="primary">下载已装单</el-button>
</el-row>
<el-row style="margin-top:15px">
<el-table :data="billData.list" border max-height="500px">
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="货物信息" align="center" prop="">
<template slot-scope="scope">
<section class="table-goodList">
<div v-for="(item, index) in scope.row.orderItemList" :key="index" class="goodList-div">
<p>品名:{{item.prodTitleZh}}</p>
<p>品牌:【
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
</p>
<p>其他:{{getTotlContent(item)}}</p>
</div>
</section>
</template>
</el-table-column>
<el-table-column label="控货" align="center" prop="">
<template slot-scope="scope">
{{scope.row.isCargoControl}}
</template>
</el-table-column>
<el-table-column label="计划箱数" align="center" prop="loadNum">
<template slot-scope="scope">
{{ scope.row.loadNum }}
</template>
</el-table-column>
<el-table-column label="实装箱数" align="center" prop="num">
<template slot-scope="scope">
{{ scope.row.num }}
</template>
</el-table-column>
<el-table-column label="提货点" align="center" prop="destWarehouse" />
<el-table-column label="体积" align="center" prop="loadVolume">
<template slot-scope="scope">
{{ scope.row.loadVolume }}
</template>
</el-table-column>
<el-table-column label="重量" align="center" prop="loadWeight">
<template slot-scope="scope">
{{ scope.row.loadWeight }}kg
</template>
</el-table-column>
<el-table-column label="跟进客服" align="center" prop="" />
<el-table-column label="制作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- 0 (未制作提货单) 1(审核中) 2(审核通过) 3(审核拒绝) -->
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="handleCommand('makeBill',scope.row)">提单制作</el-button>
<el-button v-if="scope.row.status === 1" type="text" size="small" @click="handleCommand('queryBill',scope.row)">审核中</el-button>
<template v-if="scope.row.status === 2">
<el-button type="text" size="small" @click="handleCommand('previewBill',scope.row)" style="color:green">已审核通过</el-button>
<el-button type="text" size="small" @click="handleCommand('queryBill',scope.row)">重新制作</el-button>
<el-button type="text" size="small" @click="handleCommand('resetBill',scope.row)" style="color:#333333">重置</el-button>
</template>
<template v-if="scope.row.status === 3">
审核拒绝
</template>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row>
<el-col class="totle-info">
<div>总计:{{getSumData}}</div>
<div>容量:{{calcCapacity}}</div>
</el-col>
</el-row>
<el-dialog :title="dialogCfg.title" :visible.sync="dialogCfg.visible" :width="dialogCfg.width" :fullscreen="dialogCfg.fullscreen" append-to-body class="shippingSea-dialog">
<makeLadingBill v-if="['makeBill','queryBill','resetBill'].includes(dialogCfg.type)" :currData="currData" :currRow="currRow" :dialogCfg="dialogCfg" @closeDialog="closeDialog" />
<previewBill v-if="dialogCfg.type === 'previewBill'" :contentHtml="currData.billContent" :currRow="currRow" :type="dialogCfg.type" />
</el-dialog>
</el-row>
</template>
<script>
import {
getMakeBillList,
makeBillService,
getBillService,
deleteBillService,
} from "@/api/ecw/box";
import { getTotlContent, getCapacity } from "../shippingSea/utils";
import makeLadingBill from "./makeLadingBill.vue";
import previewBill from "./previewBill.vue";
export default {
name: "ladingBill",
components: { makeLadingBill, previewBill },
props: {
shipmentObj: Object,
getCabinetName: Function,
},
data() {
return {
billData: {
list: [],
},
// 提货单数据
currData: {},
// 当前行
currRow: {},
// 弹出类型
dialogCfg: {
title: "",
type: "",
width: "80%",
// 是否显示弹出层
visible: false,
fullscreen: false,
},
// 模板内容
billContent: "",
};
},
created() {
this.getBillList();
this.buildTitle();
},
methods: {
getTotlContent,
getBillList() {
getMakeBillList({ shipmentId: this.shipmentObj.id }).then((res) => {
this.billData = res.data;
});
},
buildTitle() {
const cabinetLabel = this.getCabinetName(this.shipmentObj.cabinetId);
const title = `查看提单 ${this.shipmentObj.selfNo ?? ""} 柜号:${
this.shipmentObj.cubNo ?? ""
} 柜型:${cabinetLabel}`;
this.$set(this.dialogCfg, "title", title);
},
closeDialog(type) {
this.$set(this.dialogCfg, "visible", false);
if (type === "query") {
this.getBillList();
}
},
handleCommand(type, row) {
switch (type) {
case "previewBill":
this.getBill(row);
break;
case "makeBill":
this.makeBill(row);
break;
case "queryBill":
this.getBill(row);
break;
case "resetBill":
// 先删除,在创建
deleteBillService(row.id).then((res) => {
const { code } = res;
if (code === 0) {
this.makeBill(row);
}
});
break;
}
this.currRow = row;
this.$set(this.dialogCfg, "type", type);
this.$set(this.dialogCfg, "visible", true);
},
makeBill(row) {
makeBillService({ orderId: row.orderId }).then((res) => {
const { data } = res;
const { titleZh = "", contentZh = "" } = data?.ladingTemplate ?? {};
let billContent = `${titleZh}${contentZh}`,
orderNo = data.orderInfo?.orderNo ?? "";
this.currData = {
billContent,
orderNo,
};
});
},
getBill(row) {
getBillService({ id: row.id }).then((res) => {
const { data } = res;
this.currData = {
billContent: data?.billContent ?? "",
orderNo: this.currRow.orderNo,
};
});
},
},
computed: {
/* 总计 */
getSumData() {
return `${this.billData.totalNum ?? 0} ${
this.billData.totalVolume ?? 0
}m³ ${this.billData.totalVolume ?? 0}kg`;
},
/* 容量 */
calcCapacity() {
const { cabinet } = this.billData;
return getCapacity(cabinet);
},
},
};
</script>
<style lang="scss" scoped>
.shipping-ladingBill {
.oper-button {
text-align: right;
}
.table-goodList {
p {
margin: 0;
}
.goodList-div {
border-bottom: 1px solid #e6ebf5;
> p {
text-align: left;
}
> p:last-child {
> span {
margin-right: 5px;
}
}
}
> div:last-child {
border-bottom: none;
}
}
.totle-info {
font-size: 20px;
margin-top: 15px;
}
}
</style>
<template>
<el-row class="shipping-makeLadingBill">
<el-row>
<div class="title-orderNo">订单号:{{orderNo}}</div>
</el-row>
<vue-ueditor-wrap v-model="billContent" :config="editorConfig" editor-id="billUeditor" />
<!-- 审核流程 -->
<el-row class="process-area">
<div class="process">
<div>审批流程</div>
<work-flow xmlkey="bill_lading" v-model="selectedUsers"></work-flow>
</div>
<div v-if="currRow.status === 1">
<el-button type="primary" disabled>审核中</el-button>
<el-button plain type="primary" @click="canclAudit">取消审核</el-button>
<el-button plain type="primary" @click="showLoaingTemplate">提单预览</el-button>
</div>
<div v-if="currRow.status !== 1">
<el-button type="primary" @click="submit">提交审核</el-button>
<el-button type="primary" @click="showLoaingTemplate">提单预览</el-button>
</div>
</el-row>
<el-dialog :title="dialogCfg.title" :visible.sync="visible" width="80%" append-to-body class="shippingSea-dialog">
<previewBill v-if="visible" :contentHtml="billContent" :currRow="currRow" :type="dialogCfg.type" />
</el-dialog>
</el-row>
</template>
<script>
import VueUeditorWrap from "vue-ueditor-wrap";
import WorkFlow from "@/components/WorkFlow";
import {
createBillService,
updateBillService,
cancelBillService,
} from "@/api/ecw/box";
import { serviceMsg } from "../shippingSea/utils";
import previewBill from "./previewBill.vue";
import { getToken } from "@/utils/auth";
export default {
name: "makeLadingBill",
components: {
VueUeditorWrap,
WorkFlow,
previewBill,
},
props: {
currData: Object,
currRow: Object,
dialogCfg: Object,
},
data() {
return {
orderNo: "",
billContent: "",
editorConfig: {
UEDITOR_HOME_URL: "/static/plugins/ueditor/",
autoHeightEnabled: false,
initialFrameHeight: 500,
initialFrameWidth: "100%",
zIndex: 9999,
toolbars: [
[
"anchor", //锚点
"undo", //撤销
"redo", //重做
"bold", //加粗
"indent", //首行缩进
"snapscreen", //截图
"italic", //斜体
"underline", //下划线
"strikethrough", //删除线
"subscript", //下标
"fontborder", //字符边框
"superscript", //上标
"formatmatch", //格式刷
"source", //源代码
"blockquote", //引用
"pasteplain", //纯文本粘贴模式
"selectall", //全选
"preview", //预览
"horizontal", //分隔线
"removeformat", //清除格式
"time", //时间
"date", //日期
"unlink", //取消链接
"insertrow", //前插入行
"insertcol", //前插入列
"mergeright", //右合并单元格
"mergedown", //下合并单元格
"deleterow", //删除行
"deletecol", //删除列
"splittorows", //拆分成行
"splittocols", //拆分成列
"splittocells", //完全拆分单元格
"deletecaption", //删除表格标题
"inserttitle", //插入标题
"mergecells", //合并多个单元格
"deletetable", //删除表格
"cleardoc", //清空文档
"insertparagraphbeforetable", //"表格前插入行"
"insertcode", //代码语言
"fontfamily", //字体
"fontsize", //字号
"paragraph", //段落格式
"simpleupload", //单图上传
"insertimage", //多图上传
"edittable", //表格属性
"edittd", //单元格属性
"link", //超链接
"emotion", //表情
"spechars", //特殊字符
"searchreplace", //查询替换
"insertvideo", //视频
"justifyleft", //居左对齐
"justifyright", //居右对齐
"justifycenter", //居中对齐
"justifyjustify", //两端对齐
"forecolor", //字体颜色
"backcolor", //背景色
"insertorderedlist", //有序列表
"insertunorderedlist", //无序列表
"fullscreen", //全屏
"directionalityltr", //从左向右输入
"directionalityrtl", //从右向左输入
"rowspacingtop", //段前距
"rowspacingbottom", //段后距
"pagebreak", //分页
"insertframe", //插入Iframe
"imagenone", //默认
"imageleft", //左浮动
"imageright", //右浮动
"attachment", //附件
"imagecenter", //居中
"wordimage", //图片转存
"lineheight", //行间距
"edittip ", //编辑提示
"customstyle", //自定义标题
"autotypeset", //自动排版
"touppercase", //字母大写
"tolowercase", //字母小写
"background", //背景
"scrawl", //涂鸦
"music", //音乐
"inserttable", //插入表格
"drafts", // 从草稿箱加载
"charts", // 图表
],
],
serverUrl:
process.env.VUE_APP_BASE_API +
"/admin-api/infra/file/editor?api_token=" +
getToken().replace("Bearer ", ""),
},
visible: false,
selectedUsers: [],
};
},
methods: {
showLoaingTemplate() {
this.visible = true;
},
submit() {
let params = {
billContent: this.billContent,
orderId: this.currRow.orderId,
copyUserId: this.selectedUsers,
};
if (['makeBill','resetBill'].includes(this.dialogCfg.type)) {
createBillService({ ...params, status: 1 }).then((res) => {
serviceMsg(res, this).then((res) => {
this.close("query");
});
});
} else {
updateBillService({
...params,
id: this.currRow.id,
status: 1,
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.close("query");
});
});
}
},
/* 取消审核 */
canclAudit() {
cancelBillService(this.currRow.id).then((res) => {
serviceMsg(res, this).then(() => {
this.close("query");
});
});
},
close(type) {
this.$emit("closeDialog", type);
},
},
watch: {
currData: {
immediate: true,
handler(val) {
this.billContent = val?.billContent ?? "";
this.orderNo = val.orderNo;
},
},
},
};
</script>
<style lang="scss" scoped>
.shipping-makeLadingBill {
.title-orderNo {
text-align: center;
font-size: 28px;
font-weight: normal;
margin-bottom: 10px;
}
.process-area {
margin-top: 15px;
.process {
display: flex;
flex-direction: column;
> :first-child {
color: #606266;
font-weight: bolder;
font-size: 16px;
}
}
> :last-child {
text-align: center;
}
}
}
</style>
<template>
<el-row>
<div v-html="contentHtml"></div>
<el-row v-if="currRow.status === 2 && type === 'previewBill'" style="text-align: center;">
<el-button type="primary" @click="download">下载</el-button>
<el-button type="primary" @click="print">打印</el-button>
</el-row>
</el-row>
</template>
<script>
import { downloadBillService } from "@/api/ecw/box";
import lodop from "@/utils/lodop";
import FileSaver from "file-saver";
export default {
name: "previewBill",
props: {
contentHtml: String,
currRow: Object,
type: String,
},
methods: {
download() {
downloadBillService({ id: this.currRow.id }).then((res) => {
let blob = new Blob([res], { type: "application/pdf" });
FileSaver.saveAs(blob, this.currRow.orderNo + ".pdf");
});
},
print() {
lodop()
.then((LODOP) => {
LODOP.PRINT_INIT();
LODOP.SET_PRINT_STYLE("FontSize", 18);
LODOP.SET_PRINT_STYLE("Bold", 1);
// LODOP.ADD_PRINT_TEXT(50,231,260,39,"打印页面部分内容");
// var stylePrint = "<style>table th,td{padding:0;margin:0;border:1px solid #000000;border-collapse:collapse;}</style>"
var htmlContent =
"<body>" + document.getElementById("print").innerHTML + "</body>";
LODOP.ADD_PRINT_HTM(
"6mm",
"6mm",
"RightMargin:6mm",
"BottomMargin:6mm",
htmlContent
);
LODOP.PRINT();
})
.catch((err) => {
console.error("lodop异常", err);
alert("请检查LODOP打印控件是否安装并启动");
});
},
},
watch: {
contentHtml(val) {
console.log(val);
},
},
};
</script>
<style lang="scss" scoped>
</style>
......@@ -61,8 +61,8 @@
</el-table-column>
<el-table-column label="货物信息" align="center" width="500px">
<template v-slot="{row}">
<section class="table-goodList">
<div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div">
<section>
<div v-for="(item, index) in row.goodsList" :key="index">
{{index+1}}{{item.prodTitleZh}}
</div>
</section>
......@@ -70,9 +70,9 @@
</el-table-column>
<el-table-column label="入仓货物属性" align="center">
<template v-slot="{row}">
<section class="table-goodList">
<section>
<div>合计:{{calcSum(row.goodsList)}}</div>
<div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div">
<div v-for="(item, index) in row.goodsList" :key="index">
{{getTotlContent(item,['volume','weight'])}}
</div>
</section>
......
......@@ -547,7 +547,7 @@ export default {
let count = 0;
if (Array.isArray(this.listData)) {
this.listData.forEach((item) => {
const { sectionOrderList } = item;
const { sectionOrderList = [] } = item;
sectionOrderList.forEach((item) => {
count = count + item.installNum;
});
......
......@@ -511,11 +511,13 @@ export default {
},
/* 增加部分 */
addPart() {
createSection({ shipmentId: this.shipmentObj.id }).then((res) => {
createSection({ shipmentId: this.shipmentObj.id, isCover: 0 }).then(
(res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
}
);
},
/* 删除部分 */
deletePart(part) {
......
......@@ -24,7 +24,7 @@
<el-button size="small" @click="$emit('closeDialog')">关闭</el-button>
</el-row>
<warehouse-area-dialog ref="area" :visible.sync="visible" v-model="storageSpaces" :order-id="orderId" :modal-append-to-body=false append-to-body />
<warehouse-area-dialog ref="area" :visible.sync="visible" v-model="storageSpaces" :order-id="orderId" :warehouseId="warehouseId" :modal-append-to-body=false append-to-body />
</div>
</template>
......@@ -50,6 +50,8 @@ export default {
orderId: -1,
// 仓位数据
storageList: deepClone(this.tallyRows),
// 仓库id
warehouseId: this.$attrs.shipmentObj.startWarehouseId,
};
},
methods: {
......
......@@ -68,7 +68,7 @@
<div class="label-font">
<p>
<span>已卸:</span>
<span>无返回</span>
<span>{{getUnLoadNumCount}}</span>
</p>
</div>
</el-row>
......@@ -253,7 +253,7 @@ export default {
const { shipmentObj } = this.$attrs;
approvalCancel({
applyReason: "取消审核",
id: shipmentObj['cabinetUnloadApprovalInfo'].id,
id: shipmentObj["cabinetUnloadApprovalInfo"].id,
shipmentId: shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
......@@ -277,6 +277,16 @@ export default {
return getTotlContent(secStatistics);
}
},
/* 已卸总数 */
getUnLoadNumCount() {
let count = 0;
if (this.pageData.sectionOrderList) {
this.pageData.sectionOrderList.forEach((item) => {
count = count + item.unloadNum;
});
}
return count;
},
},
};
</script>
......
......@@ -2,16 +2,16 @@
<div class="app-seaProcess">
<!-- 海运流程图 -->
<el-scrollbar :vertical="true" viewClass="shipping-chart">
<div v-for="(nodes,index) in seaBaseData" :key="index" class="chart-nodes">
<div v-for="(nodes,index) in processData" :key="index" class="chart-nodes">
<div class="node-area">
<div v-for="node in nodes" :key="node.title" @click="nodeClick(index, node)" class="node-div">
<div v-show="isShowAgent(node.type)">
<div>
<img :src="getImgSrc(node)" alt="">
<p>{{node.title}}</p>
</div>
</div>
</div>
<div class="arrow-area" v-if="index !== (seaBaseData.length-1)">
<div class="arrow-area" v-if="index !== (processData.length-1)">
<img src="@/assets/images/shipping/jt-start.png" alt="" v-if="index >= currIndex">
<img src="@/assets/images/shipping/jt-end.png" alt="" v-if="index < currIndex">
</div>
......@@ -90,10 +90,12 @@ export default {
currIndex: 0,
// 当前节点
currNode: {},
// 数据
processData: this.seaBaseData,
};
},
created() {},
computed: {
/* computed: {
isShowAgent() {
return (type) => {
if (type === "agent") {
......@@ -106,7 +108,7 @@ export default {
return true;
};
},
},
}, */
methods: {
/** 关闭弹窗 */
closeDialog(type) {
......@@ -176,6 +178,7 @@ export default {
watch: {
/* 监听发货对象 */
shipmentObj(val) {
let newNodes = [];
// 迭代每个节点
for (let i = 0; i < this.seaBaseData.length; i++) {
const nodes = this.seaBaseData[i];
......@@ -218,7 +221,9 @@ export default {
// 加1表示为已完成步骤后一步
this.currIndex = i + 1;
}
newNodes.push(nodes);
}
this.processData = newNodes;
},
},
};
......
......@@ -168,6 +168,34 @@
<dict-tag :type="DICT_TYPE.BRAND_REG_TYPE" :value="row.filing" />
</template>
</el-table-column>
<el-table-column label="授权开始">
<template v-slot="{row}">
{{parseTime(row.startTime)}}
</template>
</el-table-column>
<el-table-column label="授权结束">
<template v-slot="{row}">
{{parseTime(row.endTime)}}
</template>
</el-table-column>
<el-table-column label="授权证明">
<template v-slot="{row}">
<div v-if="!!row.fileUrl && row.fileUrl.length > 0">
<span v-for="(item, index) in row.fileUrl.split(',')">
<a :href="item" target="_blank">附件{{ index + 1 }}</a>,
</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="feeScale"
:formatter="(row) => getDictDataLabel(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL, row.feeScale)"
label="收费标准">
</el-table-column>
<el-table-column
prop="createUsername"
label="添加人">
</el-table-column>
<el-table-column label="创建时间">
<template v-slot="{row}">
{{parseTime(row.createTime)}}
......
<template>
<div class="app-container">
<el-form :rules="rules" :model="form" ref="form" :inline="true" >
<el-form class="demo-ruleForm" label-position="left" label-width="110px" :rules="rules" :model="form" ref="form" >
<el-card class="box-card" style="padding: 10px">
<div slot="header" class="clearfix">
<el-row>
<el-col :span="24">
<el-col :span="5">
<el-form-item label="客户名称" prop="customerId">
<el-select
v-model="customerForm.name"
......@@ -20,27 +22,26 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<el-form-item label="运输方式" prop="transportId">
<div style="width: 130px;">
<custom-selectors-dictionary v-model="form.transportId"
:options="getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE)"></custom-selectors-dictionary>
<div>
<custom-selectors-dictionary v-model="form.transportId" :options="getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE)"></custom-selectors-dictionary>
</div>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="始发地" prop="departureId">
<div style="width: 130px;">
<div>
<custom-selectors-dictionary label-key="titleZh" value-key="id" v-model="form.departureId"
:options="exportCityList"></custom-selectors-dictionary>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<el-form-item label="目的地" prop="objectiveId">
<div style="width: 130px;">
<div>
<custom-selectors-dictionary label-key="titleZh" value-key="id" v-model="form.objectiveId"
:options="importCityList"></custom-selectors-dictionary>
</div>
......@@ -48,24 +49,25 @@
</el-col>
<el-col :span="5">
<el-form-item label="报关方式" prop="customsType">
<div style="width: 130px;">
<div>
<custom-selectors-dictionary v-model="form.customsType"
:options="getDictDatas(DICT_TYPE.SHIPPING_DECLARATION_TYPE)"></custom-selectors-dictionary>
</div>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="5">
<el-form-item label="备案" prop="approval">
<div style="width: 130px;">
<div>
<custom-selectors-dictionary v-model="form.approval"
:options="getDictDatas(DICT_TYPE.COMMISSION_PRODUCT_APPROVAL)"></custom-selectors-dictionary>
</div>
</el-form-item>
</el-col>
</el-row>
</div>
<el-row>
<el-col :span="24">
<el-form-item label="佣金类型(明佣、暗佣)">
<el-form-item label-width="150px" label="佣金类型(明佣、暗佣)">
<el-radio-group v-model="form.type">
<el-radio v-for="(item,index) in getDictDatas(DICT_TYPE.COMMISSION_TYPE)" v-show="item.value != 0" :label="parseInt(item.value)"
:key="index">{{ item.label }}
......@@ -195,7 +197,7 @@
</div>
</div>
<div class="title">
<span class="label">成本价:</span>原价-暗佣佣金
<span class="label">成本价 = 原价-暗佣佣金</span>
</div>
<div class="box">
<div class="label">销售价上调:</div>
......@@ -214,7 +216,7 @@
</div>
</div>
<div class="title">
<span class="label"> 实际佣金返点:</span>销售价-成本价
<span class="label"> 实际佣金返点 = 销售价-成本价</span>
</div>
</div>
</el-col>
......@@ -225,6 +227,7 @@
<el-button style="width:200px" @click="cancel">取消</el-button>
</el-col>
</el-row>
</el-card>
</el-form>
</div>
</template>
......@@ -320,11 +323,6 @@ export default {
// 表单校验
rules: {
customerId: [{required: true, message: "客户名称不能为空", trigger: "blur"}],
departureId: [{required: true, message: "始发地不能为空", trigger: "blur"}],
transportId: [{required: true, message: "运输方式不能为空", trigger: "blur"}],
objectiveId: [{required: true, message: "目的地不能为空", trigger: "blur"}],
customsType: [{required: true, message: "报关类别不能为空", trigger: "blur"}],
approval: [{required: true, message: "产品备案不能为空", trigger: "blur"}],
},
customerShow: true,
id:undefined,//佣金id
......@@ -618,11 +616,11 @@ export default {
}
.title {
margin: 15px 0;
margin: 25px 0;
text-align: left;
.label {
vertical-align: middle;
font-size: 14px;
font-size: 16px;
color: #606266;
font-weight: 700;
}
......
This diff is collapsed.
......@@ -28,7 +28,7 @@
<el-descriptions-item label="纳税人识别号">{{ invoiceData.taxpayer }}</el-descriptions-item>
<el-descriptions-item label="地址">{{ invoiceData.addressPhone }}</el-descriptions-item>
<el-descriptions-item label="开户行">{{ invoiceData.accountBank }}</el-descriptions-item>
<el-descriptions-item label="税率">
<el-descriptions-item label="税率%">
<el-form-item label="">
<el-input v-model="invoiceData.taxRate"></el-input>
</el-form-item>
......@@ -57,24 +57,36 @@
</el-table-column>
<el-table-column label="箱数" align="center" prop="num" />
<el-table-column label="体积/重量" align="center" prop="weight"></el-table-column>
<el-table-column label="费用类型" align="center" prop="feeType">
<el-table-column label="收入类型" align="center" prop="feeType">
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.ECW_TRANSPORT_TYPE"
:type="DICT_TYPE.FEE_TYPE"
:value="scope.row.feeType"
></dict-tag>
</template>
</el-table-column>
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="总金额" align="center" prop="totalAmount" />
<el-table-column label="税额" align="center">
<el-table-column label="单价金额" align="center" prop="unitPrice">
<template slot-scope="scope">
<span>{{ scope.row.unitPrice }}</span>
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" />
</template>
</el-table-column>
<el-table-column label="价税合计" align="center">
<el-table-column label="总金额" align="center" prop="totalAmount">
<template slot-scope="scope">
<span>{{ scope.row.totalAmount }}</span>
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" />
</template>
</el-table-column>
<el-table-column label="税额" align="center" prop="tax">
<template slot-scope="scope">
<span>{{ scope.row.tax }}</span>
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" />
</template>
</el-table-column>
<el-table-column label="价税合计" align="center" prop="taxAndTotalAmount">
<template slot-scope="scope">
<span>{{ scope.row.taxAndTotalAmount }}</span>
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" />
</template>
</el-table-column>
</el-table>
......@@ -99,6 +111,7 @@
<script>
import { DICT_TYPE } from "@/utils/dict";
import { getReceiptInvoicing, getInvoicingItem, updateReceiptInvoicing } from "@/api/ecw/financial";
import NP from 'number-precision'
export default {
name: "OpenInvoice",
......@@ -118,9 +131,9 @@ export default {
}
},
methods: {
getData() {
async getData() {
this.loading = true;
getReceiptInvoicing(this.id).then((res) => {
await getReceiptInvoicing(this.id).then((res) => {
this.invoiceData = res.data;
this.invoiceData.invoicingTypeId = this.invoiceData.invoicingTypeId || ''
// if (!this.invoiceData.info || this.invoiceData.info.length == 0) {
......@@ -129,9 +142,15 @@ export default {
this.loading = false;
});
getInvoicingItem({ id: this.id }).then(res => {
res.data.map(v => {
v.tax = NP.times(v.totalAmount, this.invoiceData.taxRate/100)
v.taxAndTotalAmount = NP.plus(v.totalAmount, NP.times(v.totalAmount, this.invoiceData.taxRate/100))
})
const t = {
orderNo: '合计',
totalAmount: res.data.reduce((total, curr) => total + curr.totalAmount, 0)
totalAmount: res.data.reduce((total, curr) => NP.plus(total, curr.totalAmount), 0),
tax: res.data.reduce((total, curr) => NP.plus(total, curr.tax), 0),
taxAndTotalAmount: res.data.reduce((total, curr) => NP.plus(total, curr.taxAndTotalAmount), 0)
}
this.list = [...res.data, t]
})
......@@ -148,8 +167,98 @@ export default {
})
},
getSummaries(param) {
return ['收款人', this.invoiceData.payeeName, '核销人', this.invoiceData.writeOffName, '开票人', this.invoiceData.issuerName, '', '价税合计大写', 444];
const t = this.list[this.list.length - 1].taxAndTotalAmount
return ['收款人', this.invoiceData.payeeName, '核销人', this.invoiceData.writeOffName, '开票人', this.invoiceData.issuerName, '', '价税合计大写', this.convertCurrency(t)];
},
convertCurrency(money) {
//汉字的数字
var cnNums = new Array('', '', '', '', '', '', '', '', '', '');
//基本单位
var cnIntRadice = new Array('', '', '', '');
//对应整数部分扩展单位
var cnIntUnits = new Array('', '', '亿', '');
//对应小数部分单位
var cnDecUnits = new Array('', '', '', '');
//整数金额时后面跟的字符
var cnInteger = '';
//整型完以后的单位
var cnIntLast = '';
//最大处理的数字
var maxNum = 999999999999999.9999;
//金额整数部分
var integerNum;
//金额小数部分
var decimalNum;
//输出的中文金额字符串
var chineseStr = '';
//分离金额后用的数组,预定义
var parts;
// 传入的参数为空情况
if(money === '') {
return '';
}
money = parseFloat(money)
if(money >= maxNum){
return ''
}
// 传入的参数为0情况
if (money === 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr
}
// 转为字符串
money = money.toString();
// indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无
if (money.indexOf('.') == -1) {
integerNum = money;
decimalNum = ''
}else{
parts = money.split('.');
integerNum = parts[0];
decimalNum = parts[1].substr(0,4);
}
//转换整数部分
if(parseInt(integerNum,10) > 0){
let zeroCount = 0;
let IntLen = integerNum.length
for(let i = 0; i < IntLen; i++){
let n = integerNum.substr(i,1);
let p = IntLen - i - 1;
let q = p / 4;
let m = p % 4;
if( n == '0'){
zeroCount ++ ;
}else{
if(zeroCount > 0){
chineseStr += cnNums[0]
}
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if(m == 0 && zeroCount < 4){
chineseStr += cnIntUnits[q];
}
}
// 最后+ 元
chineseStr += cnIntLast;
}
// 转换小数部分
if(decimalNum != ''){
let decLen = decimalNum.length;
for(let i = 0; i <decLen; i++){
let n = decimalNum.substr(i,1);
if(n != '0'){
chineseStr += cnNums[Number(n)] + cnDecUnits[i]
}
}
}
if(chineseStr == ''){
chineseStr += cnNums[0] + cnIntLast + cnInteger;
}else if(decimalNum == ''){
chineseStr += cnInteger;
}
return chineseStr
}
},
};
</script>
......
......@@ -100,18 +100,11 @@
id:0
}
},
created() {
async created() {
let that = this
if(that.$route.query.id){
that.id = that.$route.query.id
that.getCollectionData()
getInvoicingItem({id: this.id}).then(res => {
this.list = res.data
})
}
listSimpleUsers().then(res =>that.creatorData = res.data)
getBankAccountPage(that.params).then(res =>that.bankData = res.data.list)
listSimpleDepts().then(res =>{
await listSimpleDepts().then(res =>{
res.data.forEach((item)=>{
if(item.parentId==0){
......@@ -130,12 +123,20 @@
})
})
if(that.$route.query.id){
that.id = that.$route.query.id
that.getCollectionData()
getInvoicingItem({id: this.id}).then(res => {
this.list = res.data
})
}
},
methods: {
getCollectionData(){
let that = this
getReceiptInfoByIds({id:that.id}).then(res =>{
that.form = res.data
that.form.departmentName = that.deptData.find(v => v.id == that.form.departmentId).name
})
},
print(){
......
This diff is collapsed.
......@@ -113,7 +113,11 @@
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column label="收款单号" align="center" prop="receiptNo" />
<el-table-column label="收款单号" align="center" prop="receiptNo">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="verificationCancelClick(scope.row)">{{ scope.row.receiptNo }}</el-button>
</template>
</el-table-column>
<!-- <el-table-column label="自编号" align="center" prop="orderNo" /> -->
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="客户名称" align="center" prop="customerName" />
......@@ -154,43 +158,44 @@
>
<template slot-scope="scope">
<el-button
v-if="scope.row.state === 0 || scope.row.state == 1 || scope.row.state == 5"
v-if="scope.row.state === 0 || scope.row.state == 1 || scope.row.state == 2 || scope.row.state == 3"
size="mini"
type="text"
@click="handleAdd(scope.row.id)"
>编辑</el-button
>
<el-button
v-if="scope.row.state == 1"
<!-- <el-button
v-if="scope.row.state == "
size="mini"
type="text"
@click="verificationClick(scope.row)"
>核销</el-button
>
> -->
<el-button
v-if="scope.row.state != 1 && scope.row.state != 5"
v-if="scope.row.state == 4 || scope.row.state == 5 || scope.row.state == 6"
size="mini"
type="text"
@click="verificationCancelClick(scope.row)"
>反核销</el-button
>
<el-button
v-if="scope.row.state == 3"
v-if="scope.row.state == 5"
size="mini"
type="text"
@click="openInvoice(scope.row.id)"
>开票</el-button
>
<el-button v-if="scope.row.state === 0" size="mini" type="text" @click="deleteClick(scope.row)">删除</el-button>
<el-button v-if="scope.row.state == 1 || scope.row.state == 2 || scope.row.state == 3" size="mini" type="text" @click="verificationCancelClick(scope.row)">收款</el-button>
<el-button v-if="scope.row.state == 0 || scope.row.state == 1" size="mini" type="text" @click="deleteClick(scope.row)">删除</el-button>
<el-button
v-if="scope.row.state != 5"
v-if="scope.row.state != 0"
size="mini"
type="text"
@click="toprint(scope.row.id)"
>打印</el-button
>
<el-button
v-if="scope.row.state != 5"
v-if="scope.row.state != 0"
size="mini"
type="text"
@click="exportReceipt(scope.row.id)"
......@@ -241,8 +246,8 @@ import { DICT_TYPE } from "@/utils/dict";
import CustomerSelector from "@/components/CustomerSelector";
import {
getReceiptList,
receiptVerification,
receiptVerificationCancel,
// receiptVerification,
// receiptVerificationCancel,
receiptExportExcel,
deleteReceipt
} from "@/api/ecw/financial";
......
......@@ -23,19 +23,19 @@
{{ form.isPayAdvance === 0 ? '' : '' }}
</el-form-item>
<el-form-item label="旧运费">
<el-input v-model="form.orgSeaFreight" readonly>
<el-input v-model="form.orgSeaFreight" readonly style="width: 400px">
<div slot="prepend" style="width: 60px">{{ currentMap[form.orgSeaFreightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.orgSeaFreightVolume] }}</div>
</el-input>
</el-form-item>
<el-form-item label="旧清关费">
<el-input v-model="form.orgClearanceFreight" readonly>
<el-input v-model="form.orgClearanceFreight" readonly style="width: 400px">
<div slot="prepend" style="width: 60px">{{ currentMap[form.orgClearanceFreightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.orgClearanceFreightVolume] }}</div>
</el-input>
</el-form-item>
<el-form-item label="新运费" required>
<el-input v-model.number="form.seaFreight">
<el-form-item label="新运费" required style="width: 400px">
<el-input v-model="form.seaFreight" type="number">
<el-select v-model="form.seaFreightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-option
v-for="item in currencyList"
......@@ -54,8 +54,8 @@
</el-select>
</el-input>
</el-form-item>
<el-form-item label="新清关费" required>
<el-input v-model.number="form.clearanceFreight">
<el-form-item label="新清关费" required style="width: 400px">
<el-input v-model="form.clearanceFreight" type="number">
<el-select v-model="form.clearanceFreightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-option
v-for="item in currencyList"
......
......@@ -57,7 +57,11 @@
<dict-tag :value="scope.row.orderBackVO.status" :type="DICT_TYPE.ORDER_STATUS" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作人"></el-table-column>
<el-table-column label="操作人" prop="creator">
<template v-slot="{row}">
{{userList.find( i => row.creator == i.id).nickname}}
</template>
</el-table-column>
<el-table-column label="操作时间">
<template v-slot="{row}">
{{parseTime(row.createTime)}}
......@@ -85,6 +89,7 @@ import {
} from "@/api/ecw/associatedOrder";
import {getDictDatas,DICT_TYPE} from '@/utils/dict'
import Template from "@/views/cms/template";
import {listSimpleUsers} from "@/api/system/user";
export default {
name: "associatedOrder",
props:{
......@@ -114,7 +119,8 @@ export default {
list:[],
DICT_TYPE,
getDictDatas,
multipleSelection:[]
multipleSelection:[],
userList:[]
}
},
created() {
......@@ -125,13 +131,13 @@ export default {
this.orderDetails = r.data;
}
})
listSimpleUsers().then(r => this.userList = r.data)
},
methods:{
getList(){
guanlianList(this.params).then(r => {
if(r.code === 0){
this.list = r.data
console.log( this.list[0])
}
})
},
......
......@@ -63,7 +63,7 @@
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="2">
<el-button type="primary" plain icon="el-icon-setting" size="mini" :disabled="multiple">批量复核</el-button>
<el-button type="primary" plain icon="el-icon-setting" size="mini" :disabled="multiple" @click="batchReview">批量复核</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
......@@ -118,7 +118,7 @@
<template v-if="scope.row.cargoControlStatus == 1">
<el-button type="text" size="mini" @click="toDetail(scope.row)" >查看</el-button>
<el-button type="text" size="mini" @click="showTransferCargoOrderId=scope.row.orderId" >调货</el-button>
<el-button type="text" size="mini" @click="$alert('//TODO')">反复核</el-button>
<el-button type="text" size="mini" @click="showFallbackOrder=scope.row">反复核</el-button>
</template>
<!-- <el-button type="text" size="mini" >取消</el-button>
......@@ -135,7 +135,8 @@
<transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" />
<release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" @success="onReleaseSuccess" />
<transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" />
<transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" @success="onReansferCargoSuccess" />
<fallback v-if="showFallbackOrder !== null" :order="showFallbackOrder" @close="showFallbackOrder=null" @success="onFallbackSuccess" :index="null" />
</div>
</template>
......@@ -148,14 +149,14 @@ import { getTradeCityList } from '@/api/ecw/region'
import Transfer from '@/views/ecw/order/components/Transfer'
import Release from './components/Release'
import CargoControlEdit from './components/CargoControlEdit'
import { getCargoControlOrderPage } from "@/api/ecw/orderCargoControl"
import { getCargoControlOrderPage, batchReview } from "@/api/ecw/orderCargoControl"
import TransferCargo from '@/views/ecw/order/components/TransferCargo'
import Fallback from './components/Fallback'
export default {
name: "OrderCargonControl",
components: {
CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit, TransferCargo
CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit, TransferCargo, Fallback
},
data() {
return {
......@@ -191,6 +192,7 @@ export default {
showTransferOrder: null, // 控制权转移操作订单
showReleaseOrderId: null, // 放货ID
showTransferCargoOrderId: null, // 调货ID
showFallbackOrder: null, // 调货订单
};
},
computed: {
......@@ -273,9 +275,26 @@ export default {
this.handleQuery()
})
},
// 批量复核
batchReview(){
this.$confirm('确定复核选中的订单么?').then(() => {
return batchReview("orderIds=" + this.ids.join(','))
}).then(() => {
this.$message.success('操作成功')
this.handleQuery()
})
},
onReleaseSuccess(){
this.showReleaseOrderId = null
this.handleQuery()
},
onFallbackSuccess(){
this.showFallbackOrder = null
this.handleQuery()
},
onReansferCargoSuccess(){
this.showTransferCargoOrderId = null
this.handleQuery()
}
}
};
......
......@@ -65,7 +65,7 @@
<el-button v-if="scope.row.status == 1" type="danger" size="mini" @click="cancel(scope.row.id)">取消</el-button>
<el-button v-if="scope.row.status == 1" type="success" size="mini" @click="review(scope.row.id)">放货复核</el-button>
<el-button v-if="scope.row.status == 3" type="danger" size="mini" @click="fallbackIndex=scope.$index">反复核</el-button>
<el-button v-if="scope.row.status == 3" type="success" size="mini" @click="$alert('// TODO')">调货</el-button>
<el-button v-if="scope.row.status == 3" type="success" size="mini" @click="cargoControlPickId=scope.row.id">调货</el-button>
<el-button v-if="[2,4].indexOf(scope.row.status) > -1" type="primary" size="mini" @click="showApprovalDetail(scope.row.id)">审核详情</el-button>
<el-button v-if="[2,4].indexOf(scope.row.status) > -1" type="danger" size="mini" @click="cancelApproval(scope.row.id)">取消审核</el-button>
......@@ -105,6 +105,12 @@
</el-table> -->
<fallback v-if="fallbackIndex !== null" :order="detail" :index="fallbackIndex" @close="fallbackIndex=null" @success="onFallbackSuccess" />
<edit v-if="editIndex !== null" @close="editIndex=null" :order="detail" :index="editIndex" @success="onEditSuccess" />
<transfer-cargo
v-if="cargoControlPickId !== null"
:order-id="detail.orderId"
:cargo-control-pick-id="cargoControlPickId"
@close="cargoControlPickId=null"
@success="onTransferCargoSuccess" />
</div>
</template>
<script>
......@@ -112,9 +118,11 @@ import edit from './components/CargoControlEdit.vue'
import {createPick, getPickRleaseInfo, review, cancel, cancelApproval} from '@/api/ecw/orderCargoControl'
import {parseTime} from '@/utils/ruoyi'
import Fallback from './components/Fallback'
import TransferCargo from '@/views/ecw/order/components/TransferCargo'
export default {
filters: {parseTime},
components: {edit, Fallback},
components: {edit, Fallback, TransferCargo},
data(){
return {
detail: null,
......@@ -122,6 +130,7 @@ export default {
rules: {},
editIndex: null, // 修改索引
fallbackIndex: null, // 反复核索引
cargoControlPickId: null, // 调货ID
}
},
created(){
......@@ -192,6 +201,10 @@ export default {
})
console.log({item})
return item[field]
},
onTransferCargoSuccess(){
this.cargoControlPickId = null
this.loadData()
}
}
}
......
......@@ -25,7 +25,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="原放货箱数">
{{info.pickNum}}
{{index == null ? order.releaseNum : info.pickNum}}
</el-form-item>
</el-col>
</el-row>
......@@ -37,7 +37,13 @@
</el-form-item>
<el-form-item label="控货手机号">
+{{info.countryCode}} {{info.phone}}
<template v-if="index !== null">
+ {{info.countryCode}} {{info.phone}}
</template>
<template v-else>
+{{order.cargoControlCountryCode}} {{order.cargoControlPhone}}
</template>
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input v-model="formData.code" placeholder="" style="width: 100px; margin-right:10px"></el-input>
......@@ -82,7 +88,9 @@ export default {
return t
},
info(){
if(this.index !== null)
return this.order.cargoControlPickBackVOList[this.index]
return this.order
}
},
watch:{
......
<!--拆单审核中的申请信息部分-->
<template>
<div v-if="detail">
<el-table :data="detail.unMergeList.list">
<div v-if="orders">
<el-table :data="orders">
<el-table-column label="订单编号">
<template slot-scope="scope">{{scope.row.orderNo}}</template>
</el-table-column>
<el-table-column label="唛头">
<template slot-scope="{row}">{{row.marks}}</template>
</el-table-column>
<el-table-column label="已到箱数/总箱数">
<template slot-scope="{row}">// TODO/{{row.sumNum}}</template>
</el-table-column>
<!-- <el-table-column label="已到箱数/总箱数">
<template slot-scope="{row}">/{{row.sumNum}}/{{row.sumNum}}</template>
</el-table-column> -->
<el-table-column label="下单统计">
<template slot-scope="{row}">
22箱 44m³ 50kg
{{row.costVO.totalNum}}22箱<br/>{{row.costVO.totalVolume}}<br/>{{row.costVO.totalWeight}}kg
</template>
</el-table-column>
<el-table-column label="入仓你统计">
<template slot-scope="{row}">总箱数:1 总体积:m³ 总重量 110kg</template>
<template slot-scope="{row}">
{{row.sumNum}}22箱<br/>{{row.sumVolume}}<br/>{{row.sumWeight}}kg
</template>
</el-table-column>
<el-table-column label="入仓时间">
<template slot-scope="{row}">
// TODO
{{row.rucangTime|parseTime}}
</template>
</el-table-column>
<el-table-column label="运输方式">
<template slot-scope="{row}">{{row.num}}</template>
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" />
</template>
</el-table-column>
<el-table-column label="出货渠道">
<template slot-scope="{row}">{{row.num}}</template>
<template slot-scope="{row}">
{{getChannelName(row.channelId)}}
</template>
</el-table-column>
<el-table-column label="始发仓">
<template slot-scope="{row}">{{row.num}}</template>
<template slot-scope="{row}">{{jsonParse(row.departureVO.departure).titleZh}}</template>
</el-table-column>
<el-table-column label="目的仓">
<template slot-scope="{row}">{{row.num}}</template>
<template slot-scope="{row}">
{{jsonParse(row.objectiveVO.objective).titleZh}}
</template>
</el-table-column>
<el-table-column label="发货人">
<template slot-scope="{row}">{{row.num}}</template>
<template slot-scope="{row}">
{{row.consignorVO.name}}
</template>
</el-table-column>
<el-table-column label="收货人">
<template slot-scope="{row}">{{row.num}}</template>
<template slot-scope="{row}">
{{row.consigneeVO.name}}
</template>
</el-table-column>
</el-table>
</div>
......@@ -48,31 +60,37 @@
<script>
import {getApproval, getOrder} from '@/api/ecw/order'
import {getMergeListByMergeId} from '@/api/ecw/orderHandle'
import {getChannel} from '@/api/ecw/channel'
import {getChannelListByIds} from '@/api/ecw/channel'
import {parseTime} from '@/utils/ruoyi'
export default {
name: 'MergeDetail',
filters: {parseTime},
props:{
id: [String, Number]
},
data(){
return {
detail: null,
order: null,
channel: null
orders: null,
channels: []
}
},
watch:{
id(){
this.getData()
}
},
computed:{
jsonParse(){
return d => {
return JSON.parse(d)
}
},
/* detail(){
this.getOrder()
}, */
/* order(){
if(this.order.channelId){
this.getChannel()
getChannelName(){
return id => {
let channel = this.channels.find(item => item.channelId == id)
return channel ? channel.nameZh : '/'
}
}
} */
},
created(){
if(this.id){
......@@ -82,19 +100,22 @@ export default {
methods:{
getData(){
getMergeListByMergeId({id: this.id}).then(res => {
this.detail = res.data
this.orders = res.data
this.getChannels()
})
},
/* getOrder(){
getOrder(this.detail.orderId).then(res => {
this.order = res.data
getChannels(){
let ids = []
this.orders.forEach(order => {
if(order.channelId){
ids.push(order.channelId)
}
})
},
getChannel(){
getChannel(this.order.channelId).then(res => {
this.channel = res.data
if(!ids.length) return false
getChannelListByIds({ids: ids.join(',')}).then(res => {
this.channels = res.data
})
} */
}
}
}
</script>
......
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-collapse v-model="activeNames">
<template v-for="item in list">
<el-collapse-item :key="item.orderNo" :title="item.orderNo" :name="item.orderNo">
<el-timeline :reverse="reverse">
<el-timeline-item
v-for="(activity, index) in item.logs"
:key="index"
:timestamp="activity.createTime|parseTime">
{{activity.titleZh}}
</el-timeline-item>
</el-timeline>
</el-collapse-item>
</template>
<div class="empty-placeholder" v-if="status == 'finished' && !list.length">
暂无数据
</div>
</el-collapse>
</el-dialog>
</template>
<script>
import {getMergeLogByMergedOrderNo} from '@/api/ecw/order'
import {parseTime} from '@/utils/ruoyi'
export default {
props:{
orderNo: String
},
data(){
return {
show: false,
list:[],
activeNames:[],
status: null
}
},
filters: {parseTime},
computed:{
title(){
return '合单日志 - ' + this.orderNo
}
},
created(){
this.status = 'loading'
getMergeLogByMergedOrderNo({mergedOrderNo: this.orderNo}).then(res => {
for(let orderNo in res.data){
this.list.push({
orderNo,
logs: res.data[orderNo]
})
}
if(!this.list.length){
this.empty = true
}
}).finally(res => {
this.status = 'finished'
})
},
methods:{
closeDialog(){
this.show = false
this.$emit('close');
}
}
}
</script>
\ No newline at end of file
......@@ -17,7 +17,12 @@
</el-form>
</div>
<div v-if="step=='preview'" style="height:250px; overflow-y:hidden">
<div class="order-print-tag-item" v-for="item in tags.filter(tag => tag.num >= form.start && tag.num <= form.end)" style="width: 80mm; margin: 0 auto;" :id="'order-print-tag' + item.num" :key="item.num">
<div
class="order-print-tag-item"
v-for="(item, index) in tags.filter(tag => tag.num >= form.start && tag.num <= form.end)"
style="width: 80mm; margin: 0 auto;" :id="'order-print-tag' + item.num"
:style="{display: index == 0 ? 'block':'none' }"
:key="item.num">
<div style="float: left; width: 28mm; border-bottom: 0.2mm solid #333; border-right: 0.2mm solid #333; " >
<img :src="detail.url" alt="ECP0063704N-1" style="width: 26mm" />
<p style=" text-align: center; height: 5mm; font-size: 3mm; -webkit-margin-before: 0em; -webkit-margin-after: 0em; margin-top: 0mm; " >
......
<template>
<el-dialog title="调货" visible :before-close="closeDialog" :close-on-click-modal="false" width="800px">
<!--调货-->
<el-form ref="form" :model="formData" :rules="rules" size="small" label-width="150px" >
<el-form ref="form" :model="formData" :rules="rules" size="small" label-width="150px" v-if="detail" >
<el-row>
<el-col :span="12">
<el-form-item label="收货人">
{{detail.orderNo}}
{{detail.consigneeName}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话">
{{detail.sumNum}}
{{detail.consigneeCountryCode}} {{detail.consigneePhone}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="选择控货订单">
<el-select v-model="formData.order" placeholder="请选择控货中的订单" multiple>
<el-option :label="1" :value="1"></el-option>
<el-select v-model="formData.orderIds" placeholder="请选择控货中的订单" multiple>
<el-option v-for="item in orders" :label="item.orderNo" :value="item.orderId" :key="item.orderId"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-table :data="[formData,formData]" border>
<el-table :data="selectedOrders" border>
<el-table-column label="订单号">
{{detail.sumNum}}
{{detail.orderNo}}
</el-table-column>
<el-table-column label="目的地">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
{{row.objectiveName}}
</template>
</el-table-column>
<el-table-column label="总控货数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
{{row.sumNum}}
</template>
</el-table-column>
<el-table-column label="放货箱数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
<el-input type="number" v-model.number="row.releaseNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="体积(m³)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
{{row.sumVolume}}
</template>
</el-table-column>
<el-table-column label="重量(kg)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
{{row.sumWeight}}
</template>
</el-table-column>
</el-table>
......@@ -63,6 +63,8 @@
<el-input v-model="formData.code" placeholder="请输入手机验证码" clearable class="w-150 mr-10"></el-input>
<send-sms-code :order-id="detail.orderId" scene="5" />
</el-form-item>
<div class="page-title">审批流程</div>
<work-flow v-model="ccIdArr" xmlkey="transfer_goods" />
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">提交申请</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
......@@ -72,29 +74,39 @@
</el-dialog>
</template>
<script>
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
import {createPick, getRleaseInfo, seasoningCondimentsSelect, updateApply} from '@/api/ecw/orderCargoControl'
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import WorkFlow from '@/components/WorkFlow'
export default {
props:{
orderId: [String, Number]
orderId: [String, Number],
cargoControlPickId: Number
},
components: {AreaCodeSelector, SendSmsCode},
components: {AreaCodeSelector, SendSmsCode, WorkFlow},
data(){
return {
show: false,
detail: null,
ccIdArr: [],
formData:{
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
applyType: 9, // 调货审核
ccIds: ''
},
rules:{
consigneeName: {required: true, message: '请填写收货人'},
code: {required: true, message: '请填写验证码'}
},
orders: [],
selectedOrders:[]
}
},
watch:{
'formData.orderIds'(val){
this.selectedOrders = this.orders.filter(item => val.indexOf(item.orderId) > -1)
},
ccIdArr(val){
this.formData.ccIds = val.join(',')
}
},
created(){
......@@ -104,6 +116,9 @@ export default {
methods:{
loadData(){
getRleaseInfo(this.orderId).then(res => this.detail = res.data)
seasoningCondimentsSelect({orderId: this.orderId}).then(res => {
this.orders = res.data
})
},
closeDialog(){
this.show = false
......@@ -115,7 +130,15 @@ export default {
return false
}
console.log('submit')
updateApply(Object.assign({
cargoControlPickId: this.cargoControlPickId,
orderBackPageVOList: this.selectedOrders,
orderId: this.orderId
}, this.formData)).then(res => {
this.$message.success('操作成功')
this.show = false
this.$emit('success')
})
})
......
......@@ -5,7 +5,9 @@
<div class="content">
<el-form label-width="180px" label-position="left">
<el-form-item label="特殊要求">
<dict-selector v-if="show" v-model="advanceType" multiple formType="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" ></dict-selector>
<el-checkbox-group v-model="advanceType">
<el-checkbox v-for="(item) in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)" :disabled="advanceTypeList.includes(item.value)" :label="item.value" >{{item.label}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊要求备注"><el-input type="textarea" style="width: 300px;" v-model="todoDetail"></el-input></el-form-item>
<el-form-item v-for="(item,index) in this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS)" v-if="advanceType.indexOf(item.value) > -1" :key="item.value" :label="item.label + '预计金额'">
......@@ -14,9 +16,10 @@
<dict-selector v-model="specialNeedsList[index].transCurrency" :type="DICT_TYPE.COMMISSION_CURRENCY_TYPE" ></dict-selector>
</div>
</el-input>
</el-form-item>
<el-form-item label="付款类型">
<dict-selector placeholder="请选择付款类型" v-model="payType" :type="DICT_TYPE.PAYMENT_TYPE" ></dict-selector>
<div style="display: inline-block;margin-left: 20px;">
<span style="margin-right: 10px;">付款类型</span>
<dict-selector placeholder="请选择付款类型" v-model="specialNeedsList[index].payType" :type="DICT_TYPE.PAYMENT_TYPE" ></dict-selector>
</div>
</el-form-item>
</el-form>
</div>
......@@ -38,6 +41,12 @@ export default {
type:[String,Number],
},
show:Boolean,
advanceTypes:String,
},
computed:{
advanceTypeList(){
return !!this.advanceTypes ? this.advanceTypes.split(',') : []
}
},
data(){
return{
......@@ -47,14 +56,13 @@ export default {
advanceType:[],
specialNeedsList:[],
todoDetail:'',
payType:''
}
},
methods:{
submit(){
this.specialNeedsList.forEach(i => {
i.todoDetail = this.todoDetail
i.payType = this.payType
})
let p = this.specialNeedsList.filter(i => this.advanceType.indexOf(i.advanceType) > -1)
specialNeedCreate(p).then(r=>{
......@@ -75,6 +83,7 @@ export default {
orderId:this.orderId,
transFee:'',//预计金额
transCurrency:'',//运输费币种
payType:''
})
})
}else {
......
......@@ -86,7 +86,7 @@
<el-descriptions-item label="始发仓">{{FeeDetails.startWarehouse}}</el-descriptions-item>
<el-descriptions-item label="目的仓">{{FeeDetails.destWarehouse}}</el-descriptions-item>
</el-descriptions>
<el-descriptions v-else-if="type === 3" :column="4" border>
<el-descriptions v-else-if="type === 3 || type === 4" :column="4" border>
<el-descriptions-item label="订单号">{{FeeDetails.orderNo}}</el-descriptions-item>
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="FeeDetails.transportId"></dict-tag>
......@@ -124,6 +124,12 @@
{{ FeeDetails.details && FeeDetails.details.reason ? FeeDetails.details.reason :''}}
</div>
</div>
<div v-if="type === 4">
<p>申请理由</p>
<div>
{{ FeeDetails.details || '' }}
</div>
</div>
</div>
</template>
......@@ -133,7 +139,13 @@ import {
warehouseApprovalGetById,
warehouseAreaPositionList
} from "@/api/ecw/batchSingleApplication";
import {applicationGetOrderByProcessId, feeApplicationGet, getOrder, getOrderPage,} from "@/api/ecw/order";
import {
applicationGetOrderByProcessId,
feeApplicationGet,
getOrder,
getOrderPage,
getWarehouseUpdateApprovalInfo
} from '@/api/ecw/order'
import { getChannelList } from '@/api/ecw/channel';
import Template from "@/views/cms/template";
import {getSupplierPage} from "@/api/ecw/supplier";
......@@ -221,6 +233,12 @@ export default {
})
});
break;
case 4:
// 入仓修改
getWarehouseUpdateApprovalInfo(this.processInstanceID).then(r => {
this.FeeDetails.details = r.data.details
})
break
}
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -72,7 +72,7 @@
</el-form-item>
<el-form-item label="是否齐货" >
<!--// 字段存疑-->
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<dict-selector v-model="queryParams.isNeat" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<!-- <el-form-item label="重货比" prop="weightRatio">
<el-input style="width: 100px;" v-model="molecule" placeholder="" clearable @change="moleculeChange"
......@@ -130,10 +130,16 @@
</el-table-column>
<el-table-column label="唛头" align="center" prop="marks" />
<el-table-column label="总箱数/入仓箱数" align="center" prop="sumNum">
<template slot-scope="{row}">{{row.totalNum}}箱/{{row.sumNum}}</template>
<template slot-scope="{row}">
{{row.totalNum}}箱/{{row.sumNum}}
</template>
</el-table-column>
<el-table-column label="体积/重量" align="center" prop="sumWeight">
<template slot-scope="{row}">{{row.sumVolume}}m³ /{{row.sumWeight}}Kg</template>
<template slot-scope="{row}">
<!--入仓前是填单数据,入仓后是入仓数据-->
<template v-if="row.inWarehouseState <= 1">{{row.costVO.totalVolume}}m³ /{{row.costVO.totalWeight}}Kg箱</template>
<template v-else>{{row.sumVolume}}m³ /{{row.sumWeight}}Kg箱</template>
</template>
</el-table-column>
<el-table-column label="始发仓" align="center" prop="departureName" />
<el-table-column label="运输方式/目的地" align="center" prop="transportId">
......@@ -179,6 +185,7 @@
<el-button type="text" size="mini" @click="$router.push(`/order/release?orderId=${scope.row.orderId}`)">确认放货</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/singleApply?orderNo=${scope.row.orderNo}`)">合单申请</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/splitApply?orderId=${scope.row.orderId}`)">拆单申请</el-button>
<el-button type="text" size="mini" @click="showMergedLogOrderNo=scope.row.orderNo">合单日志</el-button>
</div>
</el-popover>
......@@ -241,6 +248,7 @@
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal>
<batch-single-application :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
<fee-application :order-id="orderId" :dialog-visible.sync="feeApplicationBol"></fee-application>
<merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" />
</div>
</template>
......@@ -272,12 +280,14 @@ import withdrawal from "@/views/ecw/order/withdrawal";
import UserSelector from '@/components/UserSelector'
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication";
import FeeApplication from "@/views/ecw/order/feeApplication";
import MergeLog from '@/views/ecw/order/components/MergeLog'
export default {
name: "Order",
components: {
UserSelector,
FeeApplication,
BatchSingleApplication,
MergeLog,
CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal
},
props: {
......@@ -353,6 +363,7 @@ export default {
printWarehouseReceiptOrderId: null, // 打印入仓单的订单ID
printLadingBillInfo: null, // 打印提单
showBatchPickup: false, // 是否显示批量提货弹窗
showMergedLogOrderNo:null, // 显示合单日志订单号
isShow:false,//特殊显示
orderId:undefined,
/* DICT_TYPE,
......@@ -449,7 +460,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('edit')
this.$router.push('create')
},
/** 修改按钮操作 */
handleUpdate(row) {
......
......@@ -57,7 +57,11 @@
<dict-tag :value="scope.row.orderBackVO.status" :type="DICT_TYPE.ORDER_STATUS" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作人"></el-table-column>
<el-table-column label="操作人">
<template v-slot="{row}">
{{userList.find( i => row.creator == i.id).nickname}}
</template>
</el-table-column>
<el-table-column label="操作时间" prop="createTime">
<template v-slot="{row}">{{
parseTime(row.orderBackVO.createTime)
......@@ -85,6 +89,7 @@ import {
} from "@/api/ecw/mutexOrder";
import {getDictDatas,DICT_TYPE} from '@/utils/dict'
import Template from "@/views/cms/template";
import {listSimpleUsers} from "@/api/system/user";
export default {
name: "mutexOrder",
props:{
......@@ -104,7 +109,8 @@ export default {
list:[],
DICT_TYPE,
getDictDatas,
multipleSelection:[]
multipleSelection:[],
userList:[]
}
},
created() {
......@@ -115,6 +121,7 @@ export default {
this.orderDetails = r.data;
}
})
listSimpleUsers().then(r => this.userList = r.data)
},
methods:{
getList(){
......
......@@ -8,7 +8,7 @@
</div>
<el-form v-if="!readonly" ref="form" :model="form" label-width="80px">
<el-form-item label="商品类型">
<span>{{ getProductAttrNameById(form.productType) }}</span>
<span>{{ getProductAttrNameById(form.prodType) }}</span>
</el-form-item>
<el-form-item label="商品名称">
<span>{{ form.prodTitleZh }}</span>
......@@ -17,26 +17,26 @@
<span>{{ form.prodTitleEn }}</span>
</el-form-item>
<el-form-item label="线路">
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${form.departureName}】发往【${form.objectiveName}】`}}
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${startTitleZh}】发往【${destTitleZh}】`}}
</el-form-item>
<el-form-item label="是否预付">
{{ form.isPayAdvance === 0 ? '' : '' }}
</el-form-item>
<el-form-item label="旧运费">
<el-input v-model="form.orgSeaFreight" readonly>
<div slot="prepend" style="width: 60px">{{ currentMap[form.orgSeaFreightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.orgSeaFreightVolume] }}</div>
<el-form-item label="旧运费" style="width: 400px">
<el-input v-model="form.orgFreight" readonly>
<div slot="prepend" style="width: 60px">{{ currentMap[form.orgFreightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.orgFreightVolume] }}</div>
</el-input>
</el-form-item>
<el-form-item label="旧清关费">
<el-form-item label="旧清关费" style="width: 400px">
<el-input v-model="form.orgClearanceFreight" readonly>
<div slot="prepend" style="width: 60px">{{ currentMap[form.orgClearanceFreightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.orgClearanceFreightVolume] }}</div>
</el-input>
</el-form-item>
<el-form-item label="新运费" required>
<el-input v-model.number="form.seaFreight">
<el-select v-model="form.seaFreightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-form-item label="新运费" required style="width: 400px">
<el-input v-model="form.freight" type="number">
<el-select v-model="form.freightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
......@@ -44,7 +44,7 @@
:value="item.id">
</el-option>
</el-select>
<el-select v-model="form.seaFreightVolume" placeholder="请选择" slot="append" style="width: 100px">
<el-select v-model="form.freightVolume" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in unitList"
:key="item.id"
......@@ -54,8 +54,8 @@
</el-select>
</el-input>
</el-form-item>
<el-form-item label="新清关费" required>
<el-input v-model.number="form.clearanceFreight">
<el-form-item label="新清关费" required style="width: 400px">
<el-input v-model="form.clearanceFreight" type="number">
<el-select v-model="form.clearanceFreightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-option
v-for="item in currencyList"
......@@ -84,12 +84,12 @@
<el-descriptions-item label="商品名称">{{ form.prodTitleZh }}</el-descriptions-item>
<el-descriptions-item label="英文名称">{{ form.prodTitleEn }}</el-descriptions-item>
<el-descriptions-item label="线路">
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${form.departureName}】发往【${form.objectiveName}】`}}
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${startTitleZh}】发往【${destTitleZh}】`}}
</el-descriptions-item>
<el-descriptions-item label="是否预付">{{ form.isPayAdvance === 0 ? '' : '' }}</el-descriptions-item>
<el-descriptions-item label="旧运费">{{ form.orgSeaFreight }} {{ currentMap[form.orgSeaFreightCurrency] }}/{{ unitMap[form.orgSeaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="旧运费">{{ form.orgFreight }} {{ currentMap[form.orgFreightCurrency] }}/{{ unitMap[form.orgFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="旧清关费">{{ form.orgClearanceFreight }} {{ currentMap[form.orgClearanceFreightCurrency] }}/{{ unitMap[form.orgClearanceFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新运费">{{ form.seaFreight }} {{ currentMap[form.seaFreightCurrency] }}/{{ unitMap[form.seaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新运费">{{ form.freight }} {{ currentMap[form.freightCurrency] }}/{{ unitMap[form.freightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新清关费">{{ form.clearanceFreight }} {{ currentMap[form.clearanceFreightCurrency] }}/{{ unitMap[form.clearanceFreightVolume] }}</el-descriptions-item>
</el-descriptions>
</el-card>
......@@ -106,11 +106,12 @@ import {getUnitList} from "@/api/ecw/unit"
import {getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency'
import { getProductAttrList } from '@/api/ecw/productAttr'
import {openedRouterList} from "@/api/ecw/warehouse"
export default {
name: "specialDiscount",
props: {
offerProdId: String,
orderItemId: String,
id: Number,
readonly: {
type: Boolean,
......@@ -122,14 +123,14 @@ export default {
},
created() {
// 临时
if(this.$route.query.offerId){
this.form.offerId = this.$route.query.offerId - 0
if(this.$route.query.orderId){
this.form.orderId = this.$route.query.orderId - 0
// this.getOrder()
}
// 查看详情,列表进来的
if(this.offerProdId){
this.form.offerProdId = this.offerProdId - 0
if(this.orderItemId){
this.form.orderItemId = this.orderItemId - 0
this.getOrderSpecial()
}
......@@ -155,7 +156,7 @@ export default {
"abnormalState": 0,
"applyResult": "",
"applyStatus": 0,
"applyType": 0,
"applyType": '1',
"ccIds": "",
"channelId": 0,
"charging": 0,
......@@ -206,26 +207,30 @@ export default {
"transportId": 0,
"vweight": "",
"wvolume": ""
}
},
startTitleZh: '',
destTitleZh: ''
}
},
methods: {
handleSubmit(){
createOrderSpecial({
"applyType": '1',
clearanceFreight: this.form.clearanceFreight,
clearanceFreightCurrency: this.form.clearanceFreightCurrency,
clearanceFreightVolume: this.form.clearanceFreightVolume,
offerId: this.form.offerId,
offerProdId: this.form.offerProdId,
seaFreight: this.form.seaFreight,
seaFreightCurrency: this.form.seaFreightCurrency,
seaFreightVolume: this.form.seaFreightVolume,
orderId: this.form.orderId,
orderItemId: this.form.orderItemId,
freight: this.form.freight,
freightCurrency: this.form.freightCurrency,
freightVolume: this.form.freightVolume,
}).then(r => {
this.$message.success(r.msg || '提交成功')
})
},
getOrderSpecial(){
getOrderSpecial(this.form.offerProdId).then(r => {
getOrderSpecial(this.form.orderItemId).then(r => {
this.form = r.data
})
},
......@@ -260,6 +265,19 @@ export default {
})
return map
}
},
watch: {
'form.lineId'(val){
if (val){
openedRouterList({lineId: val}).then(r => {
if(r.data && r.data.length > 0){
this.startTitleZh = r.data[0].startTitleZh
this.destTitleZh = r.data[0].destTitleZh
}
})
}
}
}
}
</script>
......
......@@ -4,7 +4,7 @@
<div slot="header" class="card-title">申请特价</div>
<!-- 列表 -->
<div class="order-header">
<span style="font-size: 15px;">订单号:{{ order.number }}</span>
<span style="font-size: 15px;">订单号:{{ order.orderNo }}</span>
</div>
<el-table v-loading="loading" :data="order.orderItemVOList">
......@@ -78,7 +78,7 @@
prop="address"
label="操作">
<template v-slot="{row}">
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount/${row.prodId}?orderId=${row.orderId}`)">优惠申请</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount/${row.orderItemId}?orderId=${row.orderId}`)">优惠申请</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']">佣金规则</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']">管理折扣</el-button>
</template>
......
......@@ -29,7 +29,7 @@
<el-dialog title="查看须知" :visible.sync="showNotice" width="700px">
<!-- <img :src="noticeUrl" id="noticeImg" /> -->
<need-know keyname="control" ref="needKnow" />
<need-know keyname="warehousing" ref="needKnow" />
<div style="text-align:center">
<el-button type="primary" @click="$refs.needKnow.download()">下载</el-button>
</div>
......
......@@ -8,8 +8,8 @@
<el-divider content-position="left">
货物信息
</el-divider>
<el-table :data=" orderDetails.orderItemVOList && orderDetails.orderItemVOList.length > 0 ? orderDetails.orderItemVOList : [] ">
<el-table-column type="index" label="序号"></el-table-column>
<el-table :show-summary="true" :summary-method="totalFn" :data=" orderDetails.orderItemVOList && orderDetails.orderItemVOList.length > 0 ? orderDetails.orderItemVOList : [] ">
<el-table-column width="80" type="index" label="序号"></el-table-column>
<el-table-column label="品名">
<template v-slot="{row}">
<div>{{ row.prodTitleZh }}</div>
......@@ -18,22 +18,21 @@
</el-table-column>
<el-table-column label="填单货物属性">
<template v-slot="{row}">
<el-descriptions size="mini" :column="1">
<el-descriptions size="mini" :column="2">
<el-descriptions-item label="品牌">{{ row.brand }}</el-descriptions-item>
<el-descriptions-item label="箱数">{{ row.num }}</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.volume }}</el-descriptions-item>
<el-descriptions-item label="重量">
</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.volume }}</el-descriptions-item>
<el-descriptions-item label="重量">{{row.weight}}Kg</el-descriptions-item>
</el-descriptions>
</template>
</el-table-column>
<el-table-column label="入库货物属性">
<template v-slot="{row}">
<el-descriptions size="mini" :column="4">
<el-descriptions size="mini" :column="2">
<el-descriptions-item label="品牌">{{ row.brand }}</el-descriptions-item>
<el-descriptions-item label="箱数"> {{ row.warehouseInInfoVO ? row.warehouseInInfoVO.cartonsNum :'' }}</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.warehouseInInfoVO ? row.warehouseInInfoVO.volume :'' }}</el-descriptions-item>
<el-descriptions-item label="重量"> {{row.warehouseInInfoVO ? row.warehouseInInfoVO.weight : '' }}</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.warehouseInInfoVO ? row.warehouseInInfoVO.volume :'' }}</el-descriptions-item>
<el-descriptions-item label="重量"> {{row.warehouseInInfoVO ? row.warehouseInInfoVO.weight : '' }}Kg</el-descriptions-item>
</el-descriptions>
</template>
</el-table-column>
......@@ -238,6 +237,22 @@ export default {
this.$router.back();
}
})
},
totalFn({ columns, data }){
// 体积,数量,重量 W:入仓
let volume = 0,num = 0,weight = 0;
let Wvolume = 0 ,Wnum = 0,Wweight = 0;
data.forEach(i => {
volume += Number(i.volume)
num += Number(i.num)
weight += Number(i.weight)
Wvolume += Number(i.warehouseInInfoVO ? i.warehouseInInfoVO.volume : 0);
Wnum += Number(i.warehouseInInfoVO ? i.warehouseInInfoVO.num : 0)
Wweight += Number(i.warehouseInInfoVO ? i.warehouseInInfoVO.weight : 0)
})
let text = `下单统计:${num}${volume}${weight}Kg`
let text2 =` 入仓统计:${Wnum}${Wvolume}${Wweight}Kg`
return ['合计:',text,text2]
}
},
}
......
......@@ -25,6 +25,7 @@
</el-select>
</el-descriptions-item>
<el-descriptions-item label="是否备案">{{ isBeian }}</el-descriptions-item>
<el-descriptions-item label="收费模式">{{ feeType }}</el-descriptions-item>
<el-descriptions-item label="填单参数">
箱数:{{ warehousing.num }}<br>
体积:{{ warehousing.volume }}<br>
......@@ -36,7 +37,7 @@
<dict-selector :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="form.material"></dict-selector>
</el-form-item>
<el-form-item label="入仓时间">
<el-date-picker v-model="form.inTime" type="datetime" placeholder="请选择入仓时间"></el-date-picker>
<el-date-picker v-model="form.inTime" type="datetime" placeholder="请选择入仓时间" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
......@@ -317,6 +318,18 @@ export default {
isBeian(){
return ['无备案', '有备案', '中性'][this.warehousing.brandType]
},
/**
* 收费模式
* @returns {string}
*/
feeType(){
// 无牌价0,有牌价1,中性品牌价2
const feeType = this.form.feeType
if (feeType >= 0 && feeType < 3) {
return ['无牌价', '有牌价', '中性品牌价'][feeType]
}
return ''
},
brand(){
if (!!this.form.brand){
const brand = this.brandList.find(e => e.id === this.form.brand)
......
This diff is collapsed.
......@@ -51,7 +51,7 @@
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" :disabled="multiple" v-hasPermi="['ecw:product:attr']">批量设置商品属性</el-button>
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" v-hasPermi="['ecw:product:attr']">批量设置商品属性</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
......
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