Commit 4711720c authored by zs嵩's avatar zs嵩

批量费用申请

parent 37897ac3
import Vue from 'vue' import Vue from "vue"
import Router from 'vue-router' import Router from "vue-router"
/* Layout */ /* Layout */
import Layout from '@/layout' import Layout from "@/layout"
Vue.use(Router) Vue.use(Router)
/** /**
...@@ -26,178 +26,198 @@ Vue.use(Router) ...@@ -26,178 +26,198 @@ Vue.use(Router)
// 公共路由 // 公共路由
export const constantRoutes = [ export const constantRoutes = [
{ {
path: '/redirect', path: "/redirect",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [ children: [
{ {
path: '/redirect/:path(.*)', path: "/redirect/:path(.*)",
component: (resolve) => require(['@/views/redirect'], resolve) component: (resolve) => require(["@/views/redirect"], resolve)
} }
] ]
}, },
{ {
path: '/login', path: "/login",
component: (resolve) => require(['@/views/login'], resolve), component: (resolve) => require(["@/views/login"], resolve),
hidden: true hidden: true
}, },
{ {
path: '/social-login', path: "/social-login",
component: (resolve) => require(['@/views/socialLogin'], resolve), component: (resolve) => require(["@/views/socialLogin"], resolve),
hidden: true hidden: true
}, },
{ {
path: '/404', path: "/404",
component: (resolve) => require(['@/views/error/404'], resolve), component: (resolve) => require(["@/views/error/404"], resolve),
hidden: true hidden: true
}, },
{ {
path: '/401', path: "/401",
component: (resolve) => require(['@/views/error/401'], resolve), component: (resolve) => require(["@/views/error/401"], resolve),
hidden: true hidden: true
}, },
{ {
path: '', path: "",
component: Layout, component: Layout,
redirect: 'index', redirect: "index",
children: [{ children: [
path: 'index', {
component: (resolve) => require(['@/views/index'], resolve), path: "index",
name: '首页', component: (resolve) => require(["@/views/index"], resolve),
nameEn: 'Home', name: "首页",
meta: {title: '首页', titleEn: 'Home', icon: 'dashboard', affix: true} nameEn: "Home",
meta: { title: "首页", titleEn: "Home", icon: "dashboard", affix: true }
} }
] ]
}, { },
path: '/user', {
path: "/user",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [{ children: [
path: 'profile', {
component: (resolve) => require(['@/views/system/user/profile/index'], resolve), path: "profile",
name: 'Profile', component: (resolve) => require(["@/views/system/user/profile/index"], resolve),
meta: {title: '个人中心', titleEn: 'Profile', icon: 'user'} name: "Profile",
meta: { title: "个人中心", titleEn: "Profile", icon: "user" }
} }
] ]
}, { },
path: '/dict', {
path: "/dict",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [{ children: [
path: 'type/data/:dictId(\\d+)', {
component: (resolve) => require(['@/views/system/dict/data'], resolve), path: "type/data/:dictId(\\d+)",
name: 'Data', component: (resolve) => require(["@/views/system/dict/data"], resolve),
meta: {title: '字典数据', icon: '', activeMenu: '/system/dict'} name: "Data",
meta: { title: "字典数据", icon: "", activeMenu: "/system/dict" }
} }
] ]
}, { },
path: '/job', {
path: "/job",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [{ children: [
path: 'log', {
component: (resolve) => require(['@/views/infra/job/log'], resolve), path: "log",
name: 'JobLog', component: (resolve) => require(["@/views/infra/job/log"], resolve),
meta: {title: '调度日志', activeMenu: '/infra/job'} name: "JobLog",
meta: { title: "调度日志", activeMenu: "/infra/job" }
} }
] ]
}, { },
path: '/codegen', {
path: "/codegen",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [{ children: [
path: 'edit/:tableId(\\d+)', {
component: (resolve) => require(['@/views/infra/codegen/editTable'], resolve), path: "edit/:tableId(\\d+)",
name: 'GenEdit', component: (resolve) => require(["@/views/infra/codegen/editTable"], resolve),
meta: {title: '修改生成配置', activeMenu: '/infra/codegen'} name: "GenEdit",
meta: { title: "修改生成配置", activeMenu: "/infra/codegen" }
} }
] ]
}, { },
path: '/bpm', {
path: "/bpm",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [{ children: [
path: 'oa/leave/create', {
component: (resolve) => require(['@/views/bpm/oa/leave/create'], resolve), path: "oa/leave/create",
name: '发起 OA 请假', component: (resolve) => require(["@/views/bpm/oa/leave/create"], resolve),
meta: {title: '发起 OA 请假', icon: 'form', activeMenu: '/bpm/oa/leave'} name: "发起 OA 请假",
}, { meta: { title: "发起 OA 请假", icon: "form", activeMenu: "/bpm/oa/leave" }
path: 'oa/leave/detail', },
component: (resolve) => require(['@/views/bpm/oa/leave/detail'], resolve), {
name: '查看 OA 请假', path: "oa/leave/detail",
meta: {title: '查看 OA 请假', icon: 'view', activeMenu: '/bpm/oa/leave'} component: (resolve) => require(["@/views/bpm/oa/leave/detail"], resolve),
name: "查看 OA 请假",
meta: { title: "查看 OA 请假", icon: "view", activeMenu: "/bpm/oa/leave" }
} }
] ]
}, { },
path: '/bpm', {
path: "/bpm",
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [{ children: [
path: 'manager/form/edit', {
component: (resolve) => require(['@/views/bpm/form/formEditor'], resolve), path: "manager/form/edit",
name: '流程表单-编辑', component: (resolve) => require(["@/views/bpm/form/formEditor"], resolve),
meta: {title: '流程表单-编辑', activeMenu: '/bpm/manager/form'} name: "流程表单-编辑",
}, { meta: { title: "流程表单-编辑", activeMenu: "/bpm/manager/form" }
path: 'manager/definition', },
component: (resolve) => require(['@/views/bpm/definition/index'], resolve), {
name: '流程定义', path: "manager/definition",
meta: {title: '流程定义', activeMenu: '/bpm/manager/model'} component: (resolve) => require(["@/views/bpm/definition/index"], resolve),
}, { name: "流程定义",
path: 'manager/model/design', meta: { title: "流程定义", activeMenu: "/bpm/manager/model" }
component: (resolve) => require(['@/views/bpm/model/modelEditor'], resolve), },
name: '设计流程', {
meta: {title: '设计流程', activeMenu: '/bpm/manager/model'} path: "manager/model/design",
}, { component: (resolve) => require(["@/views/bpm/model/modelEditor"], resolve),
path: 'process-instance/create', name: "设计流程",
component: (resolve) => require(['@/views/bpm/processInstance/create'], resolve), meta: { title: "设计流程", activeMenu: "/bpm/manager/model" }
name: '发起流程', },
meta: {title: '发起流程', activeMenu: '/bpm/task/my'} {
}, { path: "process-instance/create",
path: 'process-instance/detail', component: (resolve) => require(["@/views/bpm/processInstance/create"], resolve),
component: (resolve) => require(['@/views/bpm/processInstance/detail'], resolve), name: "发起流程",
name: 'Flow details', meta: { title: "发起流程", activeMenu: "/bpm/task/my" }
meta: {title: '流程详情',titleEn:'Flow details', activeMenu: '/bpm/task/my'} },
{
path: "process-instance/detail",
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 //lanbm 2024-06-07 add
path: 'process-instance/detail2', path: "process-instance/detail2",
component: (resolve) => require(['@/views/bpm/processInstance/detail2'], resolve), component: (resolve) => require(["@/views/bpm/processInstance/detail2"], resolve),
name: 'Flow details2', name: "Flow details2",
meta: {title: '流程详情',titleEn:'Flow details', activeMenu: '/bpm/task/my'} meta: { title: "流程详情", titleEn: "Flow details", activeMenu: "/bpm/task/my" }
} }
] ]
}, },
{ {
path: '/deptTarget', path: "/deptTarget",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ { children: [
path: 'empAchievement', {
component: (resolve) => require(['@/views/ecw/deptTarget/empAchievement'], resolve), path: "empAchievement",
name: '员工业绩', component: (resolve) => require(["@/views/ecw/deptTarget/empAchievement"], resolve),
meta: {title: '员工业绩',titleEn: 'Emp Achievement', activeMenu: '/deptTarget/index'} name: "员工业绩",
}, meta: { title: "员工业绩", titleEn: "Emp Achievement", activeMenu: "/deptTarget/index" }
{ },
path: 'myDeptAchievement', {
component: (resolve) => require(['@/views/ecw/deptTarget/myDeptAchievement'], resolve), path: "myDeptAchievement",
name: '我的部门业绩', component: (resolve) => require(["@/views/ecw/deptTarget/myDeptAchievement"], resolve),
meta: {title: '我的部门业绩',titleEn: 'My dept Achievement', activeMenu: '/deptTarget/myDeptAchievement'} name: "我的部门业绩",
meta: { title: "我的部门业绩", titleEn: "My dept Achievement", activeMenu: "/deptTarget/myDeptAchievement" }
} }
] ]
}, },
{ {
path: '/node', path: "/node",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [{ children: [
path: 'warehouse-list', {
component: (resolve) => require(['@/views/ecw/warehouse/index'], resolve), path: "warehouse-list",
name: 'WarehouseList', component: (resolve) => require(["@/views/ecw/warehouse/index"], resolve),
meta: {title: '网点仓库', activeMenu: '/warehouse/node'} name: "WarehouseList",
meta: { title: "网点仓库", activeMenu: "/warehouse/node" }
} }
] ]
}, },
...@@ -215,17 +235,17 @@ export const constantRoutes = [ ...@@ -215,17 +235,17 @@ export const constantRoutes = [
// ] // ]
// }, // },
{ {
path: '/product', path: "/product",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [{ children: [
path: 'product-price', {
component: (resolve) => require(['@/views/ecw/productPrice/index'], resolve), path: "product-price",
name: 'ProductPrice', component: (resolve) => require(["@/views/ecw/productPrice/index"], resolve),
meta: {title: '价格列表', activeMenu: '/product/product-list',componentPath:'/ecw/productprice/index'} name: "ProductPrice",
meta: { title: "价格列表", activeMenu: "/product/product-list", componentPath: "/ecw/productprice/index" }
} }
] ]
}, },
...@@ -244,32 +264,32 @@ export const constantRoutes = [ ...@@ -244,32 +264,32 @@ export const constantRoutes = [
// ] // ]
// }, // },
{ {
path: '/shelf', path: "/shelf",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [{ children: [
path: 'grid', {
component: (resolve) => require(['@/views/ecw/shelfGrid/index'], resolve), path: "grid",
name: 'ShelfGrid', component: (resolve) => require(["@/views/ecw/shelfGrid/index"], resolve),
meta: {title: '货架设置', activeMenu: '/warehouse/shelf'} name: "ShelfGrid",
meta: { title: "货架设置", activeMenu: "/warehouse/shelf" }
} }
] ]
}, },
{ {
path: '/customer', path: "/customer",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ children: [
{ {
path: '/customerCommissionInfo/:dictId(\\d+)/:id(\\d+)?', path: "/customerCommissionInfo/:dictId(\\d+)/:id(\\d+)?",
component: (resolve) => require(['@/views/ecw/customerCommissionInfo/index'], resolve), component: (resolve) => require(["@/views/ecw/customerCommissionInfo/index"], resolve),
name: 'customerCommissionInfo', name: "customerCommissionInfo",
meta: {title: '佣金设置', titleEn:'Commission settings', icon: '', activeMenu: '/customer/customerCommissionInfo'}, meta: { title: "佣金设置", titleEn: "Commission settings", icon: "", activeMenu: "/customer/customerCommissionInfo" },
props: true, props: true
}, },
// { // {
// path: 'edit/:customerId(\\d+)', // path: 'edit/:customerId(\\d+)',
...@@ -279,11 +299,11 @@ export const constantRoutes = [ ...@@ -279,11 +299,11 @@ export const constantRoutes = [
// meta: {title:'编辑客户',titleEn:'Edit Customer', icon: ''} // meta: {title:'编辑客户',titleEn:'Edit Customer', icon: ''}
// }, // },
{ {
path: 'edit-distribution/:customerId(\\d+)', path: "edit-distribution/:customerId(\\d+)",
component: (resolve) => import('@/views/ecw/customer/edit'), component: (resolve) => import("@/views/ecw/customer/edit"),
props: true, props: true,
name: 'allocatedCustomerEdit', name: "allocatedCustomerEdit",
meta: {title:'编辑客户',titleEn:'Edit Customer', icon: ''} meta: { title: "编辑客户", titleEn: "Edit Customer", icon: "" }
}, },
// { // {
// path: 'add-edit/:customerId(\\d+)', // path: 'add-edit/:customerId(\\d+)',
...@@ -293,12 +313,12 @@ export const constantRoutes = [ ...@@ -293,12 +313,12 @@ export const constantRoutes = [
// meta: {title: '新建客户',titleEn:'New customer', icon: ''} // meta: {title: '新建客户',titleEn:'New customer', icon: ''}
// }, // },
{ {
path: 'perfect/:customerId(\\d+)', path: "perfect/:customerId(\\d+)",
component: (resolve) => import('@/views/ecw/customer/edit'), component: (resolve) => import("@/views/ecw/customer/edit"),
props: true, props: true,
name: 'perfect', name: "perfect",
meta: {title: '完善客户',titleEn:'Perfect customers', icon: ''} meta: { title: "完善客户", titleEn: "Perfect customers", icon: "" }
}, }
// { // {
// path: 'query/:customerId(\\d+)', // path: 'query/:customerId(\\d+)',
// component: (resolve) => import('@/views/ecw/customer/query'), // component: (resolve) => import('@/views/ecw/customer/query'),
...@@ -309,17 +329,17 @@ export const constantRoutes = [ ...@@ -309,17 +329,17 @@ export const constantRoutes = [
] ]
}, },
{ {
path: '/order', path: "/order",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ children: [
{ {
path: 'special/:orderId(\\d+)', path: "special/:orderId(\\d+)",
component: (resolve) => import('@/views/ecw/order/special'), component: (resolve) => import("@/views/ecw/order/special"),
props: true, props: true,
name: 'order-special', name: "order-special",
meta: {title: '订单特价申请',titleEn:'Order special price application', icon: '', activeMenu: '/order/index'} meta: { title: "订单特价申请", titleEn: "Order special price application", icon: "", activeMenu: "/order/index" }
}, },
/* { /* {
path: 'discount/:orderItemId(\\d+)', path: 'discount/:orderItemId(\\d+)',
...@@ -358,173 +378,174 @@ export const constantRoutes = [ ...@@ -358,173 +378,174 @@ export const constantRoutes = [
}, },
*/ */
{ {
path: 'associated-order/:orderId(\\d+)', path: "associated-order/:orderId(\\d+)",
component: (resolve) => require(['@/views/ecw/order/associatedOrder'],resolve), component: (resolve) => require(["@/views/ecw/order/associatedOrder"], resolve),
props: true, props: true,
name: 'associatedOrder', name: "associatedOrder",
meta: {title: '关联订单',titleEn:'Associated order', icon: '', activeMenu: '/order/associatedOrder',noCache:true,} meta: { title: "关联订单", titleEn: "Associated order", icon: "", activeMenu: "/order/associatedOrder", noCache: true }
}, },
{ {
path: 'add-associated-order/:orderId(\\d+)', path: "add-associated-order/:orderId(\\d+)",
component:(resolve)=>require(['@/views/ecw/order/addAssociatedOrder'], resolve), component: (resolve) => require(["@/views/ecw/order/addAssociatedOrder"], resolve),
props: true, props: true,
name:'addAssociatedOrder', name: "addAssociatedOrder",
meta:{ meta: {
title:'添加关联订单', title: "添加关联订单",
titleEn:'Add associated order', titleEn: "Add associated order",
icon:'', icon: "",
activeMenu:'/order/addAssociatedOrder', activeMenu: "/order/addAssociatedOrder",
noCache:true, noCache: true
} }
}, },
{ {
path: 'mutex-order/:orderId', path: "mutex-order/:orderId",
component:()=> import('@/views/ecw/order/mutexOrder'), component: () => import("@/views/ecw/order/mutexOrder"),
name:'mutexOrder', name: "mutexOrder",
props: true, props: true,
meta: { meta: {
title: '订单互斥', title: "订单互斥",
titleEn:'Orders are mutually exclusive', titleEn: "Orders are mutually exclusive",
icon:'', icon: "",
activeMenu: '/order/mutexOrder', activeMenu: "/order/mutexOrder",
noCache: true, noCache: true
} }
},{ },
path: 'not-mutex-order/:orderId', {
component:()=>import('@/views/ecw/order/notMutexOrder'), path: "not-mutex-order/:orderId",
name: 'notMutexOrder', component: () => import("@/views/ecw/order/notMutexOrder"),
name: "notMutexOrder",
props: true, props: true,
meta:{ meta: {
title: '未加入互斥', title: "未加入互斥",
titleEn:'Mutual exclusion is not added', titleEn: "Mutual exclusion is not added",
icon:'', icon: "",
activeMenu: '/order/notMutexOrder', activeMenu: "/order/notMutexOrder",
noCache: true, noCache: true
} }
}, },
{ {
path: 'transfer-warehousing/:orderId/:type', path: "transfer-warehousing/:orderId/:type",
component:()=>import('@/views/ecw/order/transferWarehousing'), component: () => import("@/views/ecw/order/transferWarehousing"),
name:'transferWarehousing', name: "transferWarehousing",
props: true, props: true,
meta:{ meta: {
title:'调拨出仓', title: "调拨出仓",
titleEn:'Transfer out of warehouse', titleEn: "Transfer out of warehouse",
icon:'', icon: "",
activeMenu:'order/transferWarehousing', activeMenu: "order/transferWarehousing",
noCache:true, noCache: true
} }
}, },
{ {
path: 'transfer-to-warehouse/:orderId/:type', path: "transfer-to-warehouse/:orderId/:type",
component:()=>import('@/views/ecw/order/transferWarehousing'), component: () => import("@/views/ecw/order/transferWarehousing"),
name:'transferToWarehouse', name: "transferToWarehouse",
props: true, props: true,
meta:{ meta: {
title:'调拨到仓', title: "调拨到仓",
titleEn:'Transfer to warehouse', titleEn: "Transfer to warehouse",
icon:'', icon: "",
activeMenu:'order/transferToWarehouse', activeMenu: "order/transferToWarehouse",
noCache:true, noCache: true
} }
} }
], ]
}, },
{ {
path: '/boxSea', path: "/boxSea",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ children: [
{ {
path: 'query/:shipmentId(\\d+)', path: "query/:shipmentId(\\d+)",
component: (resolve) => import('@/views/ecw/box/query'), component: (resolve) => import("@/views/ecw/box/query"),
props: true, props: true,
name: 'shippingDetail', name: "shippingDetail",
meta: { meta: {
titleZh: '出货详情', titleZh: "出货详情",
titleEn: "Shipping Details", titleEn: "Shipping Details",
icon: '', icon: "",
activeMenu: '/shipment/boxDetail', activeMenu: "/shipment/boxDetail",
componentPath: 'ecw/box/query' componentPath: "ecw/box/query"
} }
}, },
{ {
path: 'shippingSea/:shipmentId(\\d+)', path: "shippingSea/:shipmentId(\\d+)",
component: (resolve) => import('@/views/ecw/box/shippingSea/shippingSea'), component: (resolve) => import("@/views/ecw/box/shippingSea/shippingSea"),
props: true, props: true,
name: 'shippingSea', name: "shippingSea",
meta: {titleZh: '海运出货操作', titleEn: "Ocean shipment operation", icon: '', activeMenu: '/shipment/boxSea'} meta: { titleZh: "海运出货操作", titleEn: "Ocean shipment operation", icon: "", activeMenu: "/shipment/boxSea" }
} }
] ]
}, },
{ {
path: '/boxSeaAir', path: "/boxSeaAir",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ children: [
{ {
path: 'query/:shipmentId(\\d+)', path: "query/:shipmentId(\\d+)",
component: (resolve) => import('@/views/ecw/box/query'), component: (resolve) => import("@/views/ecw/box/query"),
props: true, props: true,
name: 'shippingDetail', name: "shippingDetail",
meta: {titleZh: '出货详情', titleEn: "Shipping Details", icon: '', activeMenu: '/shipment/boxDetail'} meta: { titleZh: "出货详情", titleEn: "Shipping Details", icon: "", activeMenu: "/shipment/boxDetail" }
}, },
{ {
path: 'shippingSeaAir/:shipmentId(\\d+)', path: "shippingSeaAir/:shipmentId(\\d+)",
component: (resolve) => import('@/views/ecw/box/shippingSeaAir/shippingSeaAir'), component: (resolve) => import("@/views/ecw/box/shippingSeaAir/shippingSeaAir"),
props: true, props: true,
name: 'shippingSeaAir', name: "shippingSeaAir",
meta: {titleZh: '海空联运出货操作', titleEn: "Sea and Air Combined Shipping Operation", icon: '', activeMenu: '/shipment/boxSeaAir'} meta: { titleZh: "海空联运出货操作", titleEn: "Sea and Air Combined Shipping Operation", icon: "", activeMenu: "/shipment/boxSeaAir" }
} }
] ]
}, },
{ {
path: '/boxAir', path: "/boxAir",
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: "noredirect",
children: [ children: [
{ {
path: 'query/:shipmentId(\\d+)', path: "query/:shipmentId(\\d+)",
component: (resolve) => import('@/views/ecw/box/queryAir'), component: (resolve) => import("@/views/ecw/box/queryAir"),
props: true, props: true,
name: 'shippingDetail', name: "shippingDetail",
meta: { meta: {
titleZh: '出货详情', titleZh: "出货详情",
titleEn: "Shipping Details", titleEn: "Shipping Details",
icon: '', icon: "",
activeMenu: '/shipment/boxDetail', activeMenu: "/shipment/boxDetail",
componentPath: 'ecw/box/queryAir' componentPath: "ecw/box/queryAir"
} }
}, },
{ {
path: 'shippingAir/:shipmentId(\\d+)', path: "shippingAir/:shipmentId(\\d+)",
component: (resolve) => import('@/views/ecw/box/shippingAir/shippingAir'), component: (resolve) => import("@/views/ecw/box/shippingAir/shippingAir"),
props: true, props: true,
name: 'shippingAir', name: "shippingAir",
meta: {titleZh: '空运出货操作', titleEn: "Ocean shipment operation", icon: '', activeMenu: '/shipment/boxAir'} meta: { titleZh: "空运出货操作", titleEn: "Ocean shipment operation", icon: "", activeMenu: "/shipment/boxAir" }
}, },
{ {
path: 'batch_markup', path: "batch_markup",
component: (resolve) => import('@/views/ecw/box/batchMarkup'), component: (resolve) => import("@/views/ecw/box/batchMarkup"),
name: 'batchMarkup', name: "batchMarkup",
meta: {titleZh: '批量加价', titleEn: "Batch Markup", icon: '', activeMenu: '/boxSeaAir'} meta: { titleZh: "批量加价", titleEn: "Batch Markup", icon: "", activeMenu: "/boxSeaAir" }
} }
] ]
}, }
] ]
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
let routerPush = Router.prototype.push; let routerPush = Router.prototype.push
Router.prototype.push = function push(location) { Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(err => err) return routerPush.call(this, location).catch((err) => err)
} }
export default new Router({ export default new Router({
base: process.env.VUE_APP_APP_NAME ? process.env.VUE_APP_APP_NAME : "/", base: process.env.VUE_APP_APP_NAME ? process.env.VUE_APP_APP_NAME : "/",
mode: 'hash', // 去掉url中的# mode: "hash", // 去掉url中的#
scrollBehavior: () => ({y: 0}), scrollBehavior: () => ({ y: 0 }),
routes: constantRoutes routes: constantRoutes
}) })
...@@ -205,7 +205,7 @@ ...@@ -205,7 +205,7 @@
<el-button type="default" @click="listOpen" v-else>{{ $t("收起明细") }}</el-button> <el-button type="default" @click="listOpen" v-else>{{ $t("收起明细") }}</el-button>
</div> </div>
</div> </div>
<el-table v-loading="loading" ref="orderTable" border :data="list || []" @selection-change="handleSelectionChange" class="mt-10"> <el-table v-loading="loading" ref="orderTable" border :data="list || []" @selection-change="handleSelectionChange" :row-style="rowStyle" class="mt-10">
<el-table-column type="selection" width="50"></el-table-column> <el-table-column type="selection" width="50"></el-table-column>
<el-table-column :label="$t('序号')" width="50" type="index" align="center" /> <el-table-column :label="$t('序号')" width="50" type="index" align="center" />
<el-table-column prop="orderNo" :label="$t('订单号')" align="center" width="150"> <el-table-column prop="orderNo" :label="$t('订单号')" align="center" width="150">
...@@ -223,20 +223,20 @@ ...@@ -223,20 +223,20 @@
<router-link :to="'/customer/query/' + row.consigneeCustomerId">{{ row.consigneeCustomerNumber }}</router-link> <router-link :to="'/customer/query/' + row.consigneeCustomerId">{{ row.consigneeCustomerNumber }}</router-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('始发仓/渠道-目的仓')" align="center"> <el-table-column :label="$t('始发仓/渠道-目的仓')" align="center" width="200">
<template v-slot="scope"> {{ scope.row.destAdjustToStartWarehouseName }}-{{ scope.row.destAdjustToDestWarehouseName }} </template> <template v-slot="scope"> {{ scope.row.destAdjustToStartWarehouseName }}-{{ scope.row.destAdjustToDestWarehouseName }} </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('额外费用')" align="center" width="150"> <el-table-column :label="$t('额外费用')" width="200">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<div v-for="(item, feeIndex) in row.costVO.feeDtoList" :key="feeIndex"> <div v-for="(item, feeIndex) in row.costVO.feeDtoList" :key="feeIndex">
<div v-if="item.amount && item.feeType !== 1 && item.feeType !== 2"><dict-tag :type="DICT_TYPE.FEE_TYPE" :value="item.feeType" />: {{ currencyMapF[item.currencyId] }}{{ item.amount }}</div> <div v-if="item.amount && item.feeType !== 1 && item.feeType !== 2"><dict-tag :type="DICT_TYPE.FEE_TYPE" :value="item.feeType" />: {{ currencyMapF[item.currencyId] }}{{ item.amount }}</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('加价单价')" align="center" width="150"> <el-table-column :label="$t('加价单价')" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<div>{{ $t("运费") }}{{ form.freightFee || 0 }}{{ currencyMap[form.freightCurrencyId] }}/{{ unitMap[form.freightUnitId] }}</div> <div>{{ $t("运费") }}:{{ form.freightFee || 0 }}{{ currencyMap[form.freightCurrencyId] }}/{{ unitMap[form.freightUnitId] }}</div>
<div>{{ $t("清关费") }}{{ form.clearanceFee || 0 }}{{ currencyMap[form.clearanceCurrencyId] }}/{{ unitMap[form.clearanceUnitId] }}</div> <div>{{ $t("清关费") }}:{{ form.clearanceFee || 0 }}{{ currencyMap[form.clearanceCurrencyId] }}/{{ unitMap[form.clearanceUnitId] }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="salesmanName" :label="$t('客户经理')" align="center"></el-table-column> <el-table-column prop="salesmanName" :label="$t('客户经理')" align="center"></el-table-column>
...@@ -296,6 +296,7 @@ export default { ...@@ -296,6 +296,7 @@ export default {
components: { Template, selector, WorkFlow, batchMarkupComList, UserSelector }, components: { Template, selector, WorkFlow, batchMarkupComList, UserSelector },
data() { data() {
return { return {
prodTypeList: [],
unitList: [], unitList: [],
currencyList: [], currencyList: [],
form: { form: {
...@@ -536,6 +537,13 @@ export default { ...@@ -536,6 +537,13 @@ export default {
} }
}, },
methods: { methods: {
rowStyle(row) {
if (row.specialPriceType) {
return { background: "#DBECFF" }
} else {
return {}
}
},
listOpen() { listOpen() {
this.isExpand = !this.isExpand this.isExpand = !this.isExpand
this.$nextTick(() => { this.$nextTick(() => {
......
<template> <template>
<div style="padding: 20px; background: #f4f4f4; margin: -10px 0 -10px 100px"> <div style="padding: 20px; background: #f4f4f4; margin: 0 20px 0 100px; border: 1px solid #e4e4e4">
<el-table :data="list" border style="width: 100%" size="mini"> <el-table :data="list" border style="width: 100%" size="mini">
<el-table-column :label="$t('序号')" width="90px" type="index" align="center"></el-table-column> <el-table-column :label="$t('序号')" width="90px" type="index" align="center"></el-table-column>
<el-table-column prop="prodTitleZh" :label="$t('品名')" width="220px"> <el-table-column prop="prodTitleZh" :label="$t('品名')" width="220px">
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
width="80%" width="80%"
:before-close=" :before-close="
() => { () => {
$emit('update:dialogVisible', false); $emit('update:dialogVisible', false)
} }
" "
> >
...@@ -12,209 +12,105 @@ ...@@ -12,209 +12,105 @@
<h1>{{ $t("费用申请") }}-{{ orderDetails.orderNo }}</h1> <h1>{{ $t("费用申请") }}-{{ orderDetails.orderNo }}</h1>
<el-divider></el-divider> <el-divider></el-divider>
<el-form label-width="100px" inline> <el-form label-width="100px" inline>
<el-form-item :label="$t('订单号') + ':'" <el-form-item :label="$t('订单号') + ':'">
>
<div class="content"> <div class="content">
{{ orderDetails.orderNo }} {{ orderDetails.orderNo }}
</div> </div>
</el-form-item </el-form-item>
> <el-form-item :label="$t('发货人') + ':'">
<el-form-item :label="$t('发货人') + ':'"
>
<div class="content"> <div class="content">
{{ orderDetails.consignorVO ? orderDetails.consignorVO.name : "" }} {{ orderDetails.consignorVO ? orderDetails.consignorVO.name : "" }}
</div> </div>
</el-form-item </el-form-item>
> <el-form-item :label="$t('唛头')">
<el-form-item :label="$t('唛头')"
>
<div class="content">{{ orderDetails.marks }}</div> <div class="content">{{ orderDetails.marks }}</div>
</el-form-item </el-form-item>
>
<el-form-item> <el-form-item>
<el-button <el-button :disabled="!!processInstanceId" @click="addCost">{{ $t("添加申请") }} </el-button>
:disabled="!!processInstanceId " </el-form-item>
@click="addCost"
>{{ $t("添加申请") }}
</el-button
>
</el-form-item
>
</el-form> </el-form>
<el-table :data="list"> <el-table :data="list">
<el-table-column :label="$t('序号')" type="index"></el-table-column> <el-table-column :label="$t('序号')" type="index"></el-table-column>
<el-table-column :label="$t('费用类型')"> <el-table-column :label="$t('费用类型')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<dict-selector <dict-selector :disabled="!scope.row.editMode && !!scope.row.status" :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" @change="updatePayer(scope.row)" />
:disabled="!scope.row.editMode && !!scope.row.status"
:type="DICT_TYPE.FEE_TYPE"
v-model="scope.row.feeType"
@change="updatePayer(scope.row)"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('金额')"> <el-table-column :label="$t('金额')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-input <el-input :disabled="!scope.row.editMode && !!scope.row.status" v-model="scope.row.applicationFee" type="number" @input="formatAmount(scope.row)"></el-input>
:disabled="!scope.row.editMode && !!scope.row.status"
v-model="scope.row.applicationFee" type="number" @input="formatAmount(scope.row)"
></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('货币类型')"> <el-table-column :label="$t('货币类型')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-select <el-select :disabled="!scope.row.editMode && !!scope.row.status" v-model="scope.row.applicationFeeCurrency">
:disabled="!scope.row.editMode && !!scope.row.status" <el-option v-for="item in JSON.parse(currencys)" :key="item.id" :label="isChinese ? item.titleZh : item.titleEn" :value="item.id" />
v-model="scope.row.applicationFeeCurrency"
>
<el-option
v-for="item in JSON.parse(currencys)"
:key="item.id"
:label="isChinese ? item.titleZh : item.titleEn"
:value="item.id"
/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('付款类型')"> <el-table-column :label="$t('付款类型')">
<template v-slot="{ row }"> <template v-slot="{ row }">
<dict-selector <dict-selector :disabled="!row.editMode && !!row.status" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" />
:disabled="!row.editMode && !!row.status"
:type="DICT_TYPE.PAYMENT_TYPE"
v-model="row.payType"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('付款人')"> <el-table-column :label="$t('付款人')">
<template v-slot="{ row }"> <template v-slot="{ row }">
<dict-selector <dict-selector :disabled="!row.editMode && !!row.status" :type="DICT_TYPE.DRAWEE" :filter="payerDictFilter" v-model="row.payer" />
:disabled="!row.editMode && !!row.status"
:type="DICT_TYPE.DRAWEE"
:filter="payerDictFilter"
v-model="row.payer"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('备注')"> <el-table-column :label="$t('备注')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-input <el-input :disabled="!scope.row.editMode && !!scope.row.status" v-model="scope.row.remarks" type="textarea"></el-input>
:disabled="!scope.row.editMode && !!scope.row.status"
v-model="scope.row.remarks"
type="textarea"
></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('确认收款')"> <el-table-column :label="$t('确认收款')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<dict-tag <dict-tag :type="DICT_TYPE.ECW_RECEIVABLE_STATE" :value="scope.row.receiveFlag" />
:type="DICT_TYPE.ECW_RECEIVABLE_STATE"
:value="scope.row.receiveFlag"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('申请人')"> <el-table-column :label="$t('申请人')">
<template v-slot:default="scope"> <template v-slot:default="scope">
{{ {{ scope.row.status === 0 ? $t("未提交") : scope.row.applicationAuthor }}
scope.row.status === 0
? $t("未提交")
: scope.row.applicationAuthor
}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')"> <el-table-column :label="$t('操作')">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-tag v-if="scope.row.status !== 0 && !scope.row.editMode">{{ <el-tag v-if="scope.row.status !== 0 && !scope.row.editMode">{{ STATUS[scope.row.status] }} </el-tag>
STATUS[scope.row.status]
}}
</el-tag>
<!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button--> <!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button-->
<el-button <el-button type="text" v-if="scope.row.id && modifable(scope.row)" @click="modify(scope.row)">{{ $t("修改") }} </el-button>
type="text" <el-button type="text" v-if="scope.row.status === 0" @click="del(scope.$index)">删除 </el-button>
v-if="scope.row.id && modifable(scope.row)" <el-button type="text" v-if="scope.row.id && scope.row.applicationFee === 0 && scope.row.status === 2 && !scope.row.editMode" @click="deleteByFeeIsZero(scope.row.id)">删除 </el-button>
@click="modify(scope.row)"
>{{ $t("修改") }}
</el-button
>
<el-button
type="text"
v-if="scope.row.status === 0"
@click="del(scope.$index)"
>删除
</el-button
>
<el-button
type="text"
v-if="scope.row.id && scope.row.applicationFee === 0 && scope.row.status === 2 && !scope.row.editMode"
@click="deleteByFeeIsZero(scope.row.id)"
>删除
</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="padding: 20px"> <div style="padding: 20px">
<work-flow xmlkey="free_apply" v-model="selectedUsers"/> <work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div> </div>
<div style="text-align: center; margin-top: 20px"> <div style="text-align: center; margin-top: 20px">
<el-button <el-button type="primary" v-if="!processInstanceId" style="margin-right: 30px" :disabled="!feeList.length && !editMode" @click="submit">{{ $t("提交") }} </el-button>
type="primary" <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px" @click="goProcessDetail">{{ $t("审核中") }} </el-button>
v-if="!processInstanceId" <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px" @click="cancel">{{ $t("取消审核") }} </el-button>
style="margin-right: 30px" <el-button @click="$emit('update:dialogVisible', false)">{{ $t("返回") }} </el-button>
:disabled="!feeList.length && !editMode"
@click="submit"
>{{ $t("提交") }}
</el-button>
<el-button
type="primary"
v-if="processInstanceId"
style="margin-right: 30px"
@click="goProcessDetail"
>{{ $t("审核中") }}
</el-button
>
<el-button
type="primary"
v-if="processInstanceId"
style="margin-right: 30px"
@click="cancel"
>{{ $t("取消审核") }}
</el-button
>
<el-button @click="$emit('update:dialogVisible', false)">{{
$t("返回")
}}
</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { import { getOrder, feeApplicationCreateBatch, ApplicationListByOrderId, applicationUpdate, feeApplicationListByOrderId, feeApplicationCancel, getFeeApplicationApproveByOrderId, getBatchFeeByProcessId, qetBatchFeeByBusinessId, getBatchFeeByBusinessId, feeApplicationDelete, getFeeDraweeByFeeType } from "@/api/ecw/order"
getOrder, import { getDictDatas, DICT_TYPE } from "@/utils/dict"
feeApplicationCreateBatch, import workFlow from "@/components/WorkFlow"
ApplicationListByOrderId,
applicationUpdate,
feeApplicationListByOrderId,
feeApplicationCancel,
getFeeApplicationApproveByOrderId,
getBatchFeeByProcessId,
qetBatchFeeByBusinessId,
getBatchFeeByBusinessId, feeApplicationDelete, getFeeDraweeByFeeType,
} from "@/api/ecw/order";
import {getDictDatas, DICT_TYPE} from "@/utils/dict";
import workFlow from "@/components/WorkFlow";
export default { export default {
name: "feeApplication", name: "feeApplication",
components: {workFlow}, components: { workFlow },
props: { props: {
orderId: [Number, String], orderId: [Number, String],
dialogVisible: { dialogVisible: {
type: Boolean, type: Boolean,
default: false, default: false
}, },
currencys: String, currencys: String
}, },
data() { data() {
return { return {
...@@ -227,77 +123,77 @@ export default { ...@@ -227,77 +123,77 @@ export default {
DICT_TYPE, DICT_TYPE,
getDictDatas, getDictDatas,
STATUS: {}, STATUS: {},
selectedUsers: [], selectedUsers: []
}; }
}, },
computed: { computed: {
isChinese() { isChinese() {
return this.$i18n.locale === "zh_CN"; return this.$i18n.locale === "zh_CN"
}, },
feeList() { feeList() {
// return this.list.filter((item) => item.status === 0); // return this.list.filter((item) => item.status === 0);
return this.list; return this.list
}, },
// 正在编辑的费用申请 // 正在编辑的费用申请
currentItem() { currentItem() {
return this.list.find((item) => item.editMode); return this.list.find((item) => item.editMode)
}, },
// 是否修改模式 // 是否修改模式
editMode() { editMode() {
return !!this.currentItem; return !!this.currentItem
}, },
modifable() { modifable() {
return (item) => { return (item) => {
// 审核中不允许修改 // 审核中不允许修改
if (this.processInstanceId) return false; if (this.processInstanceId) return false
// 有未提交的不允许修改 // 有未提交的不允许修改
// if (this.feeList.length) return false; // if (this.feeList.length) return false;
// 修改中的不允许修改 // 修改中的不允许修改
if (item.editMode) return false; if (item.editMode) return false
return true; return true
} }
} }
}, },
created() { created() {
this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach((e) => { this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach((e) => {
this.STATUS[e.value] = e.label; this.STATUS[e.value] = e.label
}); })
getOrder(this.orderId).then((res) => { getOrder(this.orderId).then((res) => {
this.orderDetails = res.data; this.orderDetails = res.data
}); })
// 查询历史申请 // 查询历史申请
feeApplicationListByOrderId({orderId: this.orderId}).then((res) => { feeApplicationListByOrderId({ orderId: this.orderId }).then((res) => {
this.list = res.data; this.list = res.data
}); })
// 查询是否有审核中的费用申请 // 查询是否有审核中的费用申请
getFeeApplicationApproveByOrderId(this.orderId).then((res) => { getFeeApplicationApproveByOrderId(this.orderId).then((res) => {
if (res.data) { if (res.data) {
this.processInstanceId = res.data.formId; this.processInstanceId = res.data.formId
/*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => { /*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data this.list = res.data
})*/ })*/
} }
}); })
}, },
methods: { methods: {
formatAmount(row) { formatAmount(row) {
// 使用正则表达式限制输入为数字和小数点,并限制小数点后最多两位数字 // 使用正则表达式限制输入为数字和小数点,并限制小数点后最多两位数字
// row.applicationFee = row.applicationFee.replace(/[^\d.]/g, '').replace(/(\..*)\./g, '$1'); // row.applicationFee = row.applicationFee.replace(/[^\d.]/g, '').replace(/(\..*)\./g, '$1');
if (row.applicationFee.indexOf('.') > -1) { if (row.applicationFee.indexOf(".") > -1) {
const decimalPart = row.applicationFee.split('.')[1]; const decimalPart = row.applicationFee.split(".")[1]
if (decimalPart.length > 2) { if (decimalPart.length > 2) {
row.applicationFee = row.applicationFee.substring(0, row.applicationFee.length - (decimalPart.length - 2)); row.applicationFee = row.applicationFee.substring(0, row.applicationFee.length - (decimalPart.length - 2))
} }
} }
}, },
del(index) { del(index) {
this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => { this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => {
this.list.splice(index, 1); this.list.splice(index, 1)
}); })
}, },
// 过滤订单状态筛选字典内容 // 过滤订单状态筛选字典内容
payerDictFilter(item) { payerDictFilter(item) {
...@@ -308,35 +204,35 @@ export default { ...@@ -308,35 +204,35 @@ export default {
}, },
// 修改 // 修改
modify(item) { modify(item) {
this.$set(item, "editMode", true); this.$set(item, "editMode", true)
}, },
updatePayer(item) { updatePayer(item) {
console.log("变动的费用记录:", item); console.log("变动的费用记录:", item)
this.$nextTick(() => { this.$nextTick(() => {
// 根据新费用类型和索引更新payer付款人信息 // 根据新费用类型和索引更新payer付款人信息
this.orderDetails.drawee ? (this.orderDetails.drawee != 3 ? this.$set(item, "payer", this.orderDetails.drawee) : this.getDraweePayer(item)) : undefined; // 费用申请付款人 this.orderDetails.drawee ? (this.orderDetails.drawee != 3 ? this.$set(item, "payer", this.orderDetails.drawee) : this.getDraweePayer(item)) : undefined // 费用申请付款人
console.log("变动的费用记录:", item); console.log("变动的费用记录:", item)
}) })
}, },
getDraweePayer(item) { getDraweePayer(item) {
let feeType = item.feeType let feeType = item.feeType
if (feeType) { if (feeType) {
getFeeDraweeByFeeType(feeType).then(res => { getFeeDraweeByFeeType(feeType).then((res) => {
console.log(res.data) console.log(res.data)
let drawee = res.data let drawee = res.data
console.log("自定义费用枚举值:", drawee) console.log("自定义费用枚举值:", drawee)
if (drawee) { if (drawee) {
if (this.orderDetails.customDraweeVOList && this.orderDetails.customDraweeVOList.length > 0) { if (this.orderDetails.customDraweeVOList && this.orderDetails.customDraweeVOList.length > 0) {
let customDrawee = this.orderDetails.customDraweeVOList.find(item => item.name == drawee) let customDrawee = this.orderDetails.customDraweeVOList.find((item) => item.name == drawee)
console.log("自定义费用类型值:", customDrawee) console.log("自定义费用类型值:", customDrawee)
if (customDrawee) { if (customDrawee) {
console.log("返回值:", customDrawee.value) console.log("返回值:", customDrawee.value)
this.$set(item, "payer", customDrawee.value) this.$set(item, "payer", customDrawee.value)
}
} }
} }
}); }
} })
}
}, },
addCost() { addCost() {
...@@ -349,33 +245,28 @@ export default { ...@@ -349,33 +245,28 @@ export default {
remarks: undefined, remarks: undefined,
receiveFlag: 0, receiveFlag: 0,
applicationAuthor: undefined, applicationAuthor: undefined,
status: 0, status: 0
}); })
}, },
deleteByFeeIsZero(id) { deleteByFeeIsZero(id) {
this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => { this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => {
feeApplicationDelete(id).then((r) => { feeApplicationDelete(id).then((r) => {
this.$message({ this.$message({
type: "success", type: "success",
message: this.$t("删除成功"), message: this.$t("删除成功")
}); })
this.$emit("update:dialogVisible", false); this.$emit("update:dialogVisible", false)
}); })
}); })
}, },
submit() { submit() {
// 判断费用申请是否有未填项 // 判断费用申请是否有未填项
// console.log("提交的费用信息列表", this.feeList) // console.log("提交的费用信息列表", this.feeList)
const errList = this.feeList.filter((item) => { const errList = this.feeList.filter((item) => {
return ( return !item["feeType"] || item.applicationFee == null || item.applicationFee == undefined || !item["applicationFeeCurrency"] || !item["payType"]
!item["feeType"] || })
item.applicationFee == null || item.applicationFee == undefined ||
!item["applicationFeeCurrency"] ||
!item["payType"]
);
});
if (errList.length) { if (errList.length) {
return this.$message.error("请填写完整费用申请信息"); return this.$message.error("请填写完整费用申请信息")
} }
// if (this.editMode) { // if (this.editMode) {
// // 要提交status=1,否则保持原状态 // // 要提交status=1,否则保持原状态
...@@ -393,57 +284,54 @@ export default { ...@@ -393,57 +284,54 @@ export default {
feeApplicationCreateBatch({ feeApplicationCreateBatch({
orderFeeApplicationCreateReqVOList: this.feeList, orderFeeApplicationCreateReqVOList: this.feeList,
copyUserId: this.selectedUsers, copyUserId: this.selectedUsers,
orderId: this.orderId, orderId: this.orderId
}).then((r) => { }).then((r) => {
if (r.code === 0) { if (r.code === 0) {
this.$emit("update:dialogVisible", false); this.$emit("update:dialogVisible", false)
this.$message.success(this.$t("添加成功")); this.$message.success(this.$t("添加成功"))
this.selectedUsers = []; this.selectedUsers = []
this.$emit("refresh") this.$emit("refresh")
} }
}); })
}, },
goProcessDetail() { goProcessDetail() {
this.$emit("update:dialogVisible", false); this.$emit("update:dialogVisible", false)
this.$router.push( this.$router.push("/bpm/process-instance/detail?id=" + this.processInstanceId)
"/bpm/process-instance/detail?id=" + this.processInstanceId
);
}, },
cancel() { cancel() {
this.$prompt(this.$t("请输入取消原因"), this.$t("提示"), { this.$prompt(this.$t("请输入取消原因"), this.$t("提示"), {
confirmButtonText: this.$t("确定"), confirmButtonText: this.$t("确定"),
cancelButtonText: this.$t("取消"), cancelButtonText: this.$t("取消")
}) })
.then(({value}) => { .then(({ value }) => {
let item = this.list.find((e) => e.status === 1); let item = this.list.find((e) => e.status === 1)
feeApplicationCancel({ feeApplicationCancel({
huifu: value, huifu: value,
bpmProcessId: this.processInstanceId, bpmProcessId: this.processInstanceId
}).then((r) => { }).then((r) => {
this.$message({ this.$message({
type: "success", type: "success",
message: this.$t("取消成功"), message: this.$t("取消成功")
}); })
this.$emit("update:dialogVisible", false); this.$emit("update:dialogVisible", false)
}); })
}) })
.catch(() => { .catch(() => {})
}); }
},
}, },
watch: { watch: {
dialogVisible(val) { dialogVisible(val) {
if (val) { if (val) {
this.getOrderList(); this.getOrderList()
getOrder(this.orderId).then((r) => { getOrder(this.orderId).then((r) => {
if (r.code === 0) { if (r.code === 0) {
this.orderDetails = r.data; this.orderDetails = r.data
} }
}); })
} }
}, }
}, }
}; }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
......
<template>
<div style="padding: 20px; background: #f4f4f4; margin: 0 20px 0 100px; border: 1px solid #e4e4e4">
<el-table :data="list" border style="width: 100%" size="mini">
<el-table-column :label="$t('序号')" width="90px" type="index" align="center"></el-table-column>
<el-table-column prop="prodTitleZh" :label="$t('品名')" width="220px">
<template slot-scope="{ row }">
<div>{{ getProdTypeName(row.prodType) }}</div>
<div>{{ row.prodTitleZh }}/{{ row.prodTitleEn }}</div>
</template>
</el-table-column>
<!--<el-table-column prop="prodTitleEn" :label="$t('品名')" />-->
<el-table-column prop="brand" :label="$t('品牌')" width="90px">
<template slot-scope="{ row }">
<template v-if="row.brandName">{{ row.brandName }}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" />
</template>
</el-table-column>
<el-table-column prop="brand" :label="$t('特性')" width="90px">
<template slot-scope="{ row }">
{{ showAttrText(row.warehouseInInfoVO ? row.warehouseInProdAttrIds : row.prodAttrIds) }}
</template>
</el-table-column>
<el-table-column prop="sumNum" :label="$t('入仓信息')" width="220px">
<template slot-scope="{ row }">
<!--<el-link type="primary" @click.native="showWarehouseLogs(row,1)">{{row.warehouseInInfoVO ? row.warehouseInInfoVO.cartonsNum : 0}}</el-link>
<div v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.isMultiSpecification">({{$t('多规格')}})</div>-->
<el-link type="primary" @click.native="$emit('showWarehouseLogs', row, 1)" v-if="row.warehouseInInfoVO"> {{ row.warehouseInInfoVO.cartonsNum }}{{ $t("") }} {{ row.warehouseInInfoVO.weight }}Kg {{ row.warehouseInInfoVO.volume }}{{ row.warehouseInInfoVO.quantityAll }}{{ $t("") }} </el-link>
<div v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.isMultiSpecification">({{ $t("多规格") }})</div>
</template>
</el-table-column>
<el-table-column prop="warehouseType" :label="$t('类型')" width="120px" />
<el-table-column prop="specificationType" :label="$t('包装')" width="120px" />
<el-table-column prop="sumNum" :label="$t('收费数据')" width="220px">
<template slot-scope="{ row }">
<div v-if="row.warehouseInInfoVO">{{ row.chargeWeight }}Kg {{ row.chargeVolume }}</div>
</template>
</el-table-column>
<el-table-column prop="" :label="`${$t('费用类型')}/${$t('模式')}`" width="200px">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.isPayAdvance" />
<div v-if="row.charging == 0">{{ $t("运费/清关费") }}</div>
<div v-if="row.charging == 1">{{ $t("全包价") }}</div>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('成交单价')" width="220px">
<template slot-scope="{ row }">
<template v-if="row.charging == 1">
<template v-if="!row.originalSeaFreight">{{ $t("未报价") }}</template>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')" v-else>{{ $t("全包价") }} {{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</el-link>
</template>
<template v-else-if="!row.originalSeaFreight && !row.originalClearanceFreight">{{ $t("未报价") }}</template>
<template v-else>
<el-link type="primary" @click="showFeeDetail(row, 'freight')"> {{ $t("运费") }}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }} </el-link>
<el-link type="primary" @click="showFeeDetail(row, 'clearance')"> {{ $t("清关费") }}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }} </el-link>
</template>
</template>
</el-table-column>
<el-table-column :label="$t('特价')" align="center">
<template v-slot="scope">{{ scope.row.specialPriceType ? "" : "" }}</template>
</el-table-column>
<el-table-column prop="firstInTime" :label="$t('首次入仓时间')" align="center" width="150"></el-table-column>
<el-table-column prop="lastInTime" :label="$t('最后入仓时间')" align="center" width="150"></el-table-column>
<el-table-column prop="" :label="$t('材质')">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="row.material" />
</template>
</el-table-column>
<el-table-column prop="" :label="$t('用途')">
<template slot-scope="{ row }">
<div v-if="row.usageIds">
<div v-for="(item, index) in row.usageIds.split(',')">
<dict-tag :type="DICT_TYPE.OREER_ITEM_USAGE" :value="item" />
<span v-if="index + 1 != row.usageIds.split(',').length">,</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column :label="$t('原价')" width="180px">
<template slot-scope="{ row }">
<template v-if="row.charging == 1">
<template v-if="!row.oneSeaFreight">{{ $t("未报价") }}</template>
<template>{{ $t("全包价") }} {{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</template>
</template>
<template v-else-if="!row.oneSeaFreight && !row.oneClearanceFreight">{{ $t("未报价") }}</template>
<template v-else-if="row.specialPriceType">
<div style="color: red; font-weight: 700">
{{ $t("原价") }}
</div>
<div>{{ $t("运费") }}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</div>
<div>{{ $t("清关费") }}{{ row.originalClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
<div style="color: red; font-weight: 700">
{{ $t("特价") }}
</div>
<div>{{ $t("运费") }}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</div>
<div>{{ $t("清关费") }}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
</template>
<template v-else>
<div>{{ $t("运费") }}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</div>
<div v-if="row.oneClearanceFreight">{{ $t("清关费") }}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
<div v-else>{{ $t("清关费未报价") }}</div>
</template>
</template>
</el-table-column>
</el-table>
<el-dialog :title="$t('费用详情')" :visible="!!showFeeDetailDialog" :before-close="closeFeeDetail">
<el-row v-if="feeDetail">
<el-col :span="12">
<div>{{ feeDetail.charging ? $t("全包价") : $t("运费") }}</div>
<div v-for="item in feeDetail.freight">
{{ item.label }}: {{ item.value }}
<template v-if="item.currency">
{{ currencyMap[item.currency] }} / {{ unitMap[item.volume] }} <span v-if="item.remark">{{ item.remark }}</span>
</template>
</div>
</el-col>
<el-col :span="12" v-if="feeDetail.charging != 1">
<div>
{{ $t("清关费") }}
<template v-if="transportId == 3 || transportId == 4">
{{ $t("来自{source}", { source: feeDetail.airClearanceSource + feeDetail.sourceName }) }}
</template>
</div>
<div v-for="item in feeDetail.clearance">
{{ item.label }}: {{ item.value }}
<template v-if="item.currency">
{{ currencyMap[item.currency] }} / {{ unitMap[item.volume] }} <span v-if="item.remark">{{ item.remark }}</span>
</template>
</div>
</el-col>
</el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{ $t("优惠详情") }}</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column label="优惠名称">
<template slot-scope="{ row }">
{{ $l(row, "title") }}
</template>
</el-table-column>
<el-table-column label="类型">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type"></dict-tag>
</template>
</el-table-column>
<el-table-column label="运费优惠">
<template slot-scope="{ row }">
{{ row.freightReduceAmount }}
{{ currencyMap[row.freightReduceCurrencyId] }}
</template>
</el-table-column>
<el-table-column label="清关费优惠">
<template slot-scope="{ row }">
{{ row.clearanceReduceAmount }}
{{ currencyMap[row.clearanceReduceCurrencyId] }}
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import Decimal from "decimal.js"
import { parseTime } from "@/utils/ruoyi"
export default {
props: {
list: {
type: Array,
required: true
},
attrList: {
type: Array,
required: true
},
prodTypeList: {
type: Array,
required: true
},
currencyMap: {
type: Object,
required: true
},
unitMap: {
type: Object,
required: true
},
transportId: {
type: Number,
required: false
}
},
data() {
return {
feeDetail: null,
showFeeDetailDialog: false
}
},
computed: {
getProdTypeName() {
return (prodType) => {
for (let index in this.prodTypeList) {
let prodTypeItem = this.prodTypeList[index]
if (prodTypeItem.id == prodType) {
return this.$l(prodTypeItem, "title")
}
}
}
},
// 显示特性
showAttrText() {
return (ids) => {
if (!ids) return ""
ids = !Array.isArray(ids) ? ids.split(",") : ids
const attrMap = {}
this.attrList.forEach((item) => {
attrMap[item.id] = this.$l(item, "attrName")
})
return ids.map((id) => attrMap[id]).join(",")
}
}
},
created() {},
methods: {
closeFeeDetail() {
this.showFeeDetailDialog = null
},
showFeeDetail(row, type) {
console.log("showFeeDetail", row, type)
this.showFeeDetailDialog = true
const freight = [],
clearance = []
let freightFields = []
let clearanceFields = []
const brandType = row.warehouseInInfoVO ? row.feeType : row.brandType
// 不是特价则显示其他字段
freightFields = [
// {field: 'oneSeaFreight', label: this.$t('成交单价')},
{ field: "originalSeaFreight", label: this.$t("默认单价(无牌无液无电)") },
// {field: 'brandFreightPrice', label: this.$t('品牌加价')},
{ field: "liquidFreightPrice", label: this.$t("液体加价") },
{ field: "electrifiedFreightPrice", label: this.$t("带电加价") },
{ field: "discountFreightPrice", label: this.$t("优惠活动减免") },
{ field: "plainCommission", label: this.$t("明佣") },
{ field: "hiddenCommission", label: this.$t("暗佣") }
]
// 批量加价
if (row.markupSeaFreight) {
freightFields.push({ field: "markupSeaFreight", label: this.$t("批量加价") })
}
// 品牌加价
if (row["brandFreightPrice"] && row["brandFreightPrice"] > 0) {
freightFields.push({ field: "brandFreightPrice", label: brandType == 1 ? this.$t("有品牌加价") : this.$t("中性品牌加价") })
}
// 有减免金额才显示优惠后单价
if (row["discountFreightPrice"] && row["discountFreightPrice"] > 0) {
freightFields.push({ field: "afterDiscountSeaFreight", label: this.$t("优惠后单价") })
}
// 包装加价
if (row["packagingFreightPrice"] && row["packagingFreightPrice"] > 0) {
freightFields.push({ field: "packagingFreightPrice", label: this.$t("包装加价") })
}
freightFields.push({ field: "oneSeaFreight", label: this.$t("成交单价") })
console.log({ freightFields })
freightFields.forEach((item) => {
if (row[item.field]) {
freight.push({
label: item.label,
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
// 特价通过四个字段标识,任一为true则为特价
remark: item.field == "oneSeaFreight" && (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) ? this.$t("特价") : null
})
}
})
clearanceFields = [
{ field: "originalClearanceFreight", label: this.$t("默认单价(无牌无液无电)") },
// {field: 'brandClearanceFeePrice', label: this.$t('品牌加价')},
{ field: "liquidClearanceFeePrice", label: this.$t("液体加价") },
{ field: "electrifiedClearanceFeePrice", label: this.$t("带电加价") },
{ field: "discountClearanceFeePrice", label: this.$t("优惠活动减免") }
]
// 批量加价
if (row.markupClearanceFreight) {
clearanceFields.push({ field: "markupClearanceFreight", label: this.$t("批量加价") })
}
// 品牌加价
if (row["brandClearanceFeePrice"] && row["brandClearanceFeePrice"] > 0) {
clearanceFields.push({ field: "brandClearanceFeePrice", label: brandType == 1 ? this.$t("有品牌加价") : this.$t("中性品牌加价") })
}
if (row["discountClearanceFeePrice"] && row["discountClearanceFeePrice"] > 0) {
clearanceFields.push({ field: "afterDiscountClearanceFreight", label: this.$t("优惠后单价") })
}
// 包装加价
if (row["packagingClearanceFeePrice"] && row["packagingClearanceFeePrice"] > 0) {
clearanceFields.push({ field: "packagingClearanceFeePrice", label: this.$t("包装加价") })
}
clearanceFields.push({ field: "oneClearanceFreight", label: this.$t("成交单价") })
clearanceFields.forEach((item) => {
if (row[item.field]) {
clearance.push({
label: item.label,
value: row[item.field],
currency: row.clearanceFreightCurrency,
volume: row.clearanceFreightVolume,
remark: (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) && item.field == "oneClearanceFreight" ? this.$t("特价") : null
})
}
})
freight.push({
label: this.$t("价格更新时间"),
value: parseTime(row.lastFreightChargePriceTime)
})
clearance.push({
label: this.$t("价格更新时间"),
value: parseTime(row.lastClearanceChargePriceTime)
})
this.feeDetail = {
freight,
clearance,
charging: row.charging,
coupons: row.couponInfoVOList,
airClearanceSource: [, this.$t("商品"), this.$t("渠道"), this.$t("商品线路价格"), this.$t("线路渠道")][row.airClearanceSource], // 1 商品 2 渠道 3 商品线路价格 4 线路渠道
airClearanceInfo: JSON.parse(row.airClearanceInfo), //空运清关费来源数据详情,
sourceName: row.airClearanceSource == 1 ? this.$l(row, "prodTitle") : this.order?.channelName
}
},
// 获取储位名称
getLocationName(locationArr) {
if (!locationArr || !locationArr.length) return ""
let arr = []
locationArr.forEach((item) => {
arr.push(`${item.areaName}${item.locationName || ""}`)
})
return Array.from(new Set(arr)).join(",")
}
}
}
</script>
<template>
<el-dialog
:visible.sync="dialogVisible"
width="80%"
:before-close="
() => {
$emit('update:dialogVisible', false)
}
"
>
<div class="fee-application">
<h1>{{ $t("费用申请") }}-{{ orderDetails.orderNo }}</h1>
<el-divider></el-divider>
<el-form label-width="100px" inline>
<el-form-item :label="$t('订单号') + ':'">
<div class="content">
{{ orderDetails.orderNo }}
</div>
</el-form-item>
<el-form-item :label="$t('发货人') + ':'">
<div class="content">
{{ orderDetails.consignorVO ? orderDetails.consignorVO.name : "" }}
</div>
</el-form-item>
<el-form-item :label="$t('唛头')">
<div class="content">{{ orderDetails.marks }}</div>
</el-form-item>
<el-form-item>
<el-button :disabled="!!processInstanceId" @click="addCost">{{ $t("添加申请") }} </el-button>
</el-form-item>
</el-form>
<el-table :data="list">
<el-table-column :label="$t('序号')" type="index"></el-table-column>
<el-table-column :label="$t('费用类型')">
<template v-slot:default="scope">
<dict-selector :disabled="!scope.row.editMode && !!scope.row.status" :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" @change="updatePayer(scope.row)" />
</template>
</el-table-column>
<el-table-column :label="$t('金额')">
<template v-slot:default="scope">
<el-input :disabled="!scope.row.editMode && !!scope.row.status" v-model="scope.row.applicationFee" type="number" @input="formatAmount(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('货币类型')">
<template v-slot:default="scope">
<el-select :disabled="!scope.row.editMode && !!scope.row.status" v-model="scope.row.applicationFeeCurrency">
<el-option v-for="item in JSON.parse(currencys)" :key="item.id" :label="isChinese ? item.titleZh : item.titleEn" :value="item.id" />
</el-select>
</template>
</el-table-column>
<el-table-column :label="$t('付款类型')">
<template v-slot="{ row }">
<dict-selector :disabled="!row.editMode && !!row.status" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" />
</template>
</el-table-column>
<el-table-column :label="$t('付款人')">
<template v-slot="{ row }">
<dict-selector :disabled="!row.editMode && !!row.status" :type="DICT_TYPE.DRAWEE" :filter="payerDictFilter" v-model="row.payer" />
</template>
</el-table-column>
<el-table-column :label="$t('备注')">
<template v-slot:default="scope">
<el-input :disabled="!scope.row.editMode && !!scope.row.status" v-model="scope.row.remarks" type="textarea"></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('确认收款')">
<template v-slot:default="scope">
<dict-tag :type="DICT_TYPE.ECW_RECEIVABLE_STATE" :value="scope.row.receiveFlag" />
</template>
</el-table-column>
<el-table-column :label="$t('申请人')">
<template v-slot:default="scope">
{{ scope.row.status === 0 ? $t("未提交") : scope.row.applicationAuthor }}
</template>
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot:default="scope">
<el-tag v-if="scope.row.status !== 0 && !scope.row.editMode">{{ STATUS[scope.row.status] }} </el-tag>
<!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button-->
<el-button type="text" v-if="scope.row.id && modifable(scope.row)" @click="modify(scope.row)">{{ $t("修改") }} </el-button>
<el-button type="text" v-if="scope.row.status === 0" @click="del(scope.$index)">删除 </el-button>
<el-button type="text" v-if="scope.row.id && scope.row.applicationFee === 0 && scope.row.status === 2 && !scope.row.editMode" @click="deleteByFeeIsZero(scope.row.id)">删除 </el-button>
</template>
</el-table-column>
</el-table>
<el-table ref="orderTable" border :data="orderList" @selection-change="handleSelectionChange" :row-style="rowStyle" class="mt-10">
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column :label="$t('序号')" width="50" type="index" align="center" />
<el-table-column prop="orderNo" :label="$t('订单号')" align="center" width="150">
<template slot-scope="{ row }">
<router-link :to="'/order/detail?orderId=' + row.orderId"> {{ row.orderNo }}</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('发货人')" width="100" align="center">
<template slot-scope="{ row }">
<router-link :to="'/customer/query/' + row.consignorCustomerId"> {{ row.consignorCustomerNumber }}</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('收货人')" width="100" align="center">
<template slot-scope="{ row }">
<router-link :to="'/customer/query/' + row.consigneeCustomerId">{{ row.consigneeCustomerNumber }}</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('始发仓/渠道-目的仓')" align="center" width="200">
<template v-slot="scope"> {{ scope.row.destAdjustToStartWarehouseName }}-{{ scope.row.destAdjustToDestWarehouseName }} </template>
</el-table-column>
<el-table-column :label="$t('额外费用')" width="200">
<template slot-scope="{ row }">
<div v-for="(item, feeIndex) in row.costVO.feeDtoList" :key="feeIndex">
<div v-if="item.amount && item.feeType !== 1 && item.feeType !== 2"><dict-tag :type="DICT_TYPE.FEE_TYPE" :value="item.feeType" />: {{ currencyMapF[item.currencyId] }}{{ item.amount }}</div>
</div>
</template>
</el-table-column>
<el-table-column :label="$t('加价单价')" width="200">
<template slot-scope="scope">
<div>{{ $t("运费") }}:{{ form.freightFee || 0 }}{{ currencyMap[form.freightCurrencyId] }}/{{ unitMap[form.freightUnitId] }}</div>
<div>{{ $t("清关费") }}:{{ form.clearanceFee || 0 }}{{ currencyMap[form.clearanceCurrencyId] }}/{{ unitMap[form.clearanceUnitId] }}</div>
</template>
</el-table-column>
<el-table-column prop="salesmanName" :label="$t('客户经理')" align="center"></el-table-column>
<el-table-column prop="firstInTime" :label="$t('首次入仓时间')" align="center" width="150"></el-table-column>
<el-table-column prop="lastInTime" :label="$t('最后入仓时间')" align="center" width="150"></el-table-column>
<el-table-column prop="createTime" :label="$t('创建时间')" align="center" width="150"></el-table-column>
<el-table-column :label="$t('特价')" align="center">
<template v-slot="scope">{{ scope.row.specialPriceType ? "" : "" }}</template>
</el-table-column>
<el-table-column type="expand" :label="$t('更多')">
<template v-slot="scope">
<batchMarkupComList :list="scope.row.orderItemBackVOList" :prodTypeList="prodTypeList" :attrList="attrList" :unitMap="unitMap" :currencyMap="currencyMap" />
</template>
</el-table-column>
</el-table>
<div style="padding: 20px">
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div>
<div style="text-align: center; margin-top: 20px">
<el-button type="primary" v-if="!processInstanceId" style="margin-right: 30px" :disabled="!feeList.length && !editMode" @click="submit">{{ $t("提交") }} </el-button>
<el-button type="primary" v-if="processInstanceId" style="margin-right: 30px" @click="goProcessDetail">{{ $t("审核中") }} </el-button>
<el-button type="primary" v-if="processInstanceId" style="margin-right: 30px" @click="cancel">{{ $t("取消审核") }} </el-button>
<el-button @click="$emit('update:dialogVisible', false)">{{ $t("返回") }} </el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import { getOrder, feeApplicationCreateBatch, ApplicationListByOrderId, applicationUpdate, feeApplicationListByOrderId, feeApplicationCancel, getFeeApplicationApproveByOrderId, getBatchFeeByProcessId, qetBatchFeeByBusinessId, getBatchFeeByBusinessId, feeApplicationDelete, getFeeDraweeByFeeType } from "@/api/ecw/order"
import { getDictDatas, DICT_TYPE } from "@/utils/dict"
import workFlow from "@/components/WorkFlow"
import batchMarkupComList from "./batchMarkupComList"
export default {
name: "feeApplicationBatch",
components: { workFlow, batchMarkupComList },
props: {
orderList: [Array],
dialogVisible: {
type: Boolean,
default: false
},
currencys: String
},
data() {
return {
prodTypeList: [],
attrList: [],
unitList: [],
currencyList: [],
orderDetails: {},
// 费用列表
list: [],
// 审核ID,没有则表示不在审核中
processInstanceId: null,
DICT_TYPE,
getDictDatas,
STATUS: {},
selectedUsers: []
}
},
computed: {
currencyMap() {
let map = {}
this.currencyList.forEach((item) => {
map[item.id] = this.$l(item, "title")
})
return map
},
currencyMapF() {
let map = {}
this.currencyList.forEach((item) => {
map[item.id] = item.fuhao
})
return map
},
unitMap() {
let map = {}
this.unitList.forEach((item) => {
map[item.id] = this.$l(item, "title")
})
return map
},
isChinese() {
return this.$i18n.locale === "zh_CN"
},
feeList() {
// return this.list.filter((item) => item.status === 0);
return this.list
},
// 正在编辑的费用申请
currentItem() {
return this.list.find((item) => item.editMode)
},
// 是否修改模式
editMode() {
return !!this.currentItem
},
modifable() {
return (item) => {
// 审核中不允许修改
if (this.processInstanceId) return false
// 有未提交的不允许修改
// if (this.feeList.length) return false;
// 修改中的不允许修改
if (item.editMode) return false
return true
}
}
},
created() {
this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach((e) => {
this.STATUS[e.value] = e.label
})
getOrder(this.orderId).then((res) => {
this.orderDetails = res.data
})
// 查询历史申请
feeApplicationListByOrderId({ orderId: this.orderId }).then((res) => {
this.list = res.data
})
// 查询是否有审核中的费用申请
getFeeApplicationApproveByOrderId(this.orderId).then((res) => {
if (res.data) {
this.processInstanceId = res.data.formId
/*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data
})*/
}
})
getUnitList().then((res) => (this.unitList = res.data))
getCurrencyList().then((res) => (this.currencyList = res.data))
getProductAttrList().then((response) => {
this.attrList = response.data
})
getProductTypeList().then((response) => {
this.prodTypeList = response.data
})
},
methods: {
// 表格多选
handleSelectionChange(selection) {
this.multipleSelection = selection
this.ids = selection.map((item) => item.orderId)
},
formatAmount(row) {
// 使用正则表达式限制输入为数字和小数点,并限制小数点后最多两位数字
// row.applicationFee = row.applicationFee.replace(/[^\d.]/g, '').replace(/(\..*)\./g, '$1');
if (row.applicationFee.indexOf(".") > -1) {
const decimalPart = row.applicationFee.split(".")[1]
if (decimalPart.length > 2) {
row.applicationFee = row.applicationFee.substring(0, row.applicationFee.length - (decimalPart.length - 2))
}
}
},
del(index) {
this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => {
this.list.splice(index, 1)
})
},
// 过滤订单状态筛选字典内容
payerDictFilter(item) {
if (item.value && item.value == 3) {
return false
}
return true
},
// 修改
modify(item) {
this.$set(item, "editMode", true)
},
updatePayer(item) {
console.log("变动的费用记录:", item)
this.$nextTick(() => {
// 根据新费用类型和索引更新payer付款人信息
this.orderDetails.drawee ? (this.orderDetails.drawee != 3 ? this.$set(item, "payer", this.orderDetails.drawee) : this.getDraweePayer(item)) : undefined // 费用申请付款人
console.log("变动的费用记录:", item)
})
},
getDraweePayer(item) {
let feeType = item.feeType
if (feeType) {
getFeeDraweeByFeeType(feeType).then((res) => {
console.log(res.data)
let drawee = res.data
console.log("自定义费用枚举值:", drawee)
if (drawee) {
if (this.orderDetails.customDraweeVOList && this.orderDetails.customDraweeVOList.length > 0) {
let customDrawee = this.orderDetails.customDraweeVOList.find((item) => item.name == drawee)
console.log("自定义费用类型值:", customDrawee)
if (customDrawee) {
console.log("返回值:", customDrawee.value)
this.$set(item, "payer", customDrawee.value)
}
}
}
})
}
},
addCost() {
this.list.push({
orderId: this.orderId,
feeType: undefined, //费用申请类型
applicationFee: undefined, //金额
applicationFeeCurrency: undefined, // 费用申请货币类型
payer: this.orderDetails.drawee && this.orderDetails.drawee != 3 ? this.orderDetails.drawee : undefined, // 费用申请付款人
remarks: undefined,
receiveFlag: 0,
applicationAuthor: undefined,
status: 0
})
},
deleteByFeeIsZero(id) {
this.$confirm(this.$t("确定要删除此条费用申请么?")).then(() => {
feeApplicationDelete(id).then((r) => {
this.$message({
type: "success",
message: this.$t("删除成功")
})
this.$emit("update:dialogVisible", false)
})
})
},
submit() {
// 判断费用申请是否有未填项
// console.log("提交的费用信息列表", this.feeList)
const errList = this.feeList.filter((item) => {
return !item["feeType"] || item.applicationFee == null || item.applicationFee == undefined || !item["applicationFeeCurrency"] || !item["payType"]
})
if (errList.length) {
return this.$message.error("请填写完整费用申请信息")
}
// if (this.editMode) {
// // 要提交status=1,否则保持原状态
// const data = {
// ...this.currentItem,
// status: 1,
// copyUserId: this.selectedUsers,
// };
// return applicationUpdate(data).then((r) => {
// this.$message.success(this.$t("修改成功"));
// this.$emit("update:dialogVisible", false);
// });
// }
feeApplicationCreateBatch({
orderFeeApplicationCreateReqVOList: this.feeList,
copyUserId: this.selectedUsers,
orderId: this.orderId
}).then((r) => {
if (r.code === 0) {
this.$emit("update:dialogVisible", false)
this.$message.success(this.$t("添加成功"))
this.selectedUsers = []
this.$emit("refresh")
}
})
},
goProcessDetail() {
this.$emit("update:dialogVisible", false)
this.$router.push("/bpm/process-instance/detail?id=" + this.processInstanceId)
},
cancel() {
this.$prompt(this.$t("请输入取消原因"), this.$t("提示"), {
confirmButtonText: this.$t("确定"),
cancelButtonText: this.$t("取消")
})
.then(({ value }) => {
let item = this.list.find((e) => e.status === 1)
feeApplicationCancel({
huifu: value,
bpmProcessId: this.processInstanceId
}).then((r) => {
this.$message({
type: "success",
message: this.$t("取消成功")
})
this.$emit("update:dialogVisible", false)
})
})
.catch(() => {})
}
},
watch: {
dialogVisible(val) {
if (val) {
this.getOrderList()
getOrder(this.orderId).then((r) => {
if (r.code === 0) {
this.orderDetails = r.data
}
})
}
}
}
}
</script>
<style scoped lang="scss">
.fee-application {
padding: 0 20px;
h1 {
font-weight: 600;
font-size: 20px;
}
.content {
width: 200px;
}
}
.my-process-designer {
height: calc(100vh - 200px);
}
.box-card {
width: 100%;
margin-bottom: 20px;
}
</style>
...@@ -2,13 +2,7 @@ ...@@ -2,13 +2,7 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px" class="search-z"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px" class="search-z">
<el-form-item :label="$t('编号')" prop="orderNo"> <el-form-item :label="$t('编号')" prop="orderNo">
<el-input <el-input v-model.trim="noParam.value" :placeholder="$t('请输入订单号、唛头、提单号')" clearable class="w-200" @input="replaceSpace(noParam, 'value')" @keyup.enter.native="handleQuery">
v-model.trim="noParam.value"
:placeholder="$t('请输入订单号、唛头、提单号')"
clearable
class="w-200"
@input="replaceSpace(noParam, 'value')"
@keyup.enter.native="handleQuery">
<template slot="prepend"> <template slot="prepend">
<dict-selector :type="DICT_TYPE.ORDER_QUERY_NO_FIELD" defaultable v-model="noParam.key" /> <dict-selector :type="DICT_TYPE.ORDER_QUERY_NO_FIELD" defaultable v-model="noParam.key" />
</template> </template>
...@@ -18,14 +12,14 @@ ...@@ -18,14 +12,14 @@
<el-input v-model="queryParams.marks" :placeholder="$t('唛头')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.marks" :placeholder="$t('唛头')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('发货人电话')" prop="consignorPhone"> <el-form-item :label="$t('发货人电话')" prop="consignorPhone">
<el-input v-model.trim="queryParams.consignorPhone" :placeholder="$t('发货人电话')" clearable @keyup.enter.native="handleQuery" @input="queryParams.consignorPhone = queryParams.consignorPhone.replace(/\s+/g, '')" class="w-200"/> <el-input v-model.trim="queryParams.consignorPhone" :placeholder="$t('发货人电话')" clearable @keyup.enter.native="handleQuery" @input="queryParams.consignorPhone = queryParams.consignorPhone.replace(/\s+/g, '')" class="w-200" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人电话')" prop="consignorPhone"> <el-form-item :label="$t('收货人电话')" prop="consignorPhone">
<el-input v-model.trim="queryParams.consigneePhone" :placeholder="$t('收货人电话')" clearable @keyup.enter.native="handleQuery" @input="queryParams.consigneePhone = queryParams.consigneePhone.replace(/\s+/g, '')" class="w-200"/> <el-input v-model.trim="queryParams.consigneePhone" :placeholder="$t('收货人电话')" clearable @keyup.enter.native="handleQuery" @input="queryParams.consigneePhone = queryParams.consigneePhone.replace(/\s+/g, '')" class="w-200" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch"> <el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable @change="handleQuery" class="w-200"/> <dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable @change="handleQuery" class="w-200" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发仓')" prop="startWarehouseIds"> <el-form-item :label="$t('始发仓')" prop="startWarehouseIds">
<el-select v-model="queryParams.startWarehouseIds" multiple :placeholder="$t('请选择始发仓')" clearable @change="handleQuery" class="w-200"> <el-select v-model="queryParams.startWarehouseIds" multiple :placeholder="$t('请选择始发仓')" clearable @change="handleQuery" class="w-200">
...@@ -49,7 +43,7 @@ ...@@ -49,7 +43,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('运输方式')" prop="transportId" v-if="!transportId"> <el-form-item :label="$t('运输方式')" prop="transportId" v-if="!transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable @change="handleQuery" class="w-200"/> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable @change="handleQuery" class="w-200" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('商品类型')" prop="goodsTypes" v-show="showSearch"> <el-form-item :label="$t('商品类型')" prop="goodsTypes" v-show="showSearch">
...@@ -150,10 +144,10 @@ ...@@ -150,10 +144,10 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('发货人')" prop="consignorKey" v-show="showSearch"> <el-form-item :label="$t('发货人')" prop="consignorKey" v-show="showSearch">
<el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" class="w-200"/> <el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" class="w-200" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey" v-show="showSearch"> <el-form-item :label="$t('收货人')" prop="consigneeKey" v-show="showSearch">
<el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" class="w-200"/> <el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" class="w-200" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('付款人')" prop="draweeList" v-show="showSearch"> <el-form-item :label="$t('付款人')" prop="draweeList" v-show="showSearch">
<dict-selector :type="DICT_TYPE.DRAWEE" v-model="queryParams.draweeList" multiple clearable @change="handleQuery" class="w-200" /> <dict-selector :type="DICT_TYPE.DRAWEE" v-model="queryParams.draweeList" multiple clearable @change="handleQuery" class="w-200" />
...@@ -176,6 +170,9 @@ ...@@ -176,6 +170,9 @@
<!-- </el-button>--> <!-- </el-button>-->
<el-button type="primary" v-hasPermi="['ecw:order:batch_release']" plain icon="el-icon-setting" size="mini" @click="showBatchPickup = true">{{ $t("批量提货") }}</el-button> <el-button type="primary" v-hasPermi="['ecw:order:batch_release']" plain icon="el-icon-setting" size="mini" @click="showBatchPickup = true">{{ $t("批量提货") }}</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="feeApplicationBatchOpen">{{ $t("批量费用申请") }}</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" <!-- <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
:loading="exportLoading" v-hasPermi="['ecw:order:export']">{{$t('导出')}}</el-button> --> :loading="exportLoading" v-hasPermi="['ecw:order:export']">{{$t('导出')}}</el-button> -->
...@@ -223,7 +220,7 @@ ...@@ -223,7 +220,7 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('唛头')" align="center" prop="marks" fixed/> <el-table-column :label="$t('唛头')" align="center" prop="marks" fixed />
<el-table-column :label="$t('总箱数/入仓箱数')" align="center" prop="sumNum" width="200px"> <el-table-column :label="$t('总箱数/入仓箱数')" align="center" prop="sumNum" width="200px">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
...@@ -291,15 +288,14 @@ ...@@ -291,15 +288,14 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="dept" :label="$t('客户经理')" align="center" prop="salesmanName" /> <el-table-column v-if="dept" :label="$t('客户经理')" align="center" prop="salesmanName" />
<el-table-column :label="$t('发货人客服')" align="center" prop="consignorFollowCustomerService" /> <el-table-column :label="$t('发货人客服')" align="center" prop="consignorFollowCustomerService" />
<el-table-column :label="$t('收货人客服')" align="center" prop="consigneeFollowCustomerService" /> <el-table-column :label="$t('收货人客服')" align="center" prop="consigneeFollowCustomerService" />
<!-- <el-table-column :label="$t('到仓箱数/方数/重量')" align="center" prop="status">--> <!-- <el-table-column :label="$t('到仓箱数/方数/重量')" align="center" prop="status">-->
<!-- <template slot-scope="{ row }">--> <!-- <template slot-scope="{ row }">-->
<!-- {{ row.checkNum }}{{ $t("箱") }} / {{ row.checkVolume }}m³ /{{ row.checkWeight }}Kg--> <!-- {{ row.checkNum }}{{ $t("箱") }} / {{ row.checkVolume }}m³ /{{ row.checkWeight }}Kg-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('提货率')" align="center" prop="pickRatio" /> <el-table-column :label="$t('提货率')" align="center" prop="pickRatio" />
<el-table-column :label="$t('状态')" align="center" prop="status"> <el-table-column :label="$t('状态')" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -342,52 +338,17 @@ ...@@ -342,52 +338,17 @@
<el-button type="text">{{ $t("操作") }}</el-button> <el-button type="text">{{ $t("操作") }}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!--出货订单编辑,shipmentState > 0表示出货后,inWarehouseState == 0 表示预装未审核或者是卸柜到仓 , shipmentState==307 表示已预装,待封柜, shipmentState==407 表示已预装,待封柜)--> <!--出货订单编辑,shipmentState > 0表示出货后,inWarehouseState == 0 表示预装未审核或者是卸柜到仓 , shipmentState==307 表示已预装,待封柜, shipmentState==407 表示已预装,待封柜)-->
<template <template v-if="(scope.row.shipmentState > 0 || scope.row.status == 16) && scope.row.inWarehouseState == 0 && exclude(scope.row.auditType, [1, 2, 3, 4, 5, 6, 11, 23, 28, 31, 32]) && exclude(scope.row.shipmentState, [305, 307, 309, 310, 311, 313, 407, 409, 411])">
v-if="(scope.row.shipmentState > 0 || scope.row.status == 16) && <el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:shipment:update']">{{ $t("编辑") }}</el-dropdown-item>
scope.row.inWarehouseState == 0 &&
exclude(scope.row.auditType, [1, 2, 3, 4, 5, 6, 11, 23, 28, 31, 32]) &&
exclude(scope.row.shipmentState, [305, 307, 309, 310, 311, 313, 407,409,411])"
>
<el-dropdown-item
@click.native="handleUpdate(scope.row)"
v-hasPermi="['ecw:order:shipment:update']"
>{{ $t("编辑") }}</el-dropdown-item>
</template> </template>
<!-- 其他编辑 --> <!-- 其他编辑 -->
<template <template v-else-if="(scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314)) && exclude(scope.row.auditType, [1, 2, 3, 4, 5, 6, 11, 23, 28, 31, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206]) && exclude(scope.row.shipmentState, [305, 307, 407])">
v-else-if=" <el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:edit']">{{ $t("编辑") }}</el-dropdown-item>
(scope.row.status < 12 ||
(scope.row.status == 12 &&
scope.row.shipmentState == 314)) &&
exclude(scope.row.auditType, [1, 2, 3, 4, 5, 6, 11, 23, 28, 31, 32]) &&
exclude(scope.row.inWarehouseState, [204, 205, 206]) &&
exclude(scope.row.shipmentState, [305, 307, 407])
"
>
<el-dropdown-item
@click.native="handleUpdate(scope.row)"
v-hasPermi="['ecw:order:edit']"
>{{ $t("编辑") }}</el-dropdown-item
>
</template> </template>
<!-- 修改货值(已预装/已理货/添加到预装) --> <!-- 修改货值(已预装/已理货/添加到预装) -->
<template v-if="scope.row.status == 11 || <template v-if="scope.row.status == 11 || scope.row.auditType == 18 || scope.row.auditType == 19 || scope.row.auditType == 24 || scope.row.auditType == 25 || scope.row.auditType == 50 || scope.row.auditType == 51 || scope.row.shipmentState == 407 || scope.row.shipmentState == 409 || scope.row.shipmentState == 411 || (scope.row.status == 5 && scope.row.shipmentState == 304)">
scope.row.auditType == 18 || <el-dropdown-item @click.native="handleUpdate(scope.row, false, true)" v-hasPermi="['ecw:order:edit-worth']">{{ $t("修改货值") }}</el-dropdown-item>
scope.row.auditType == 19 ||
scope.row.auditType == 24 ||
scope.row.auditType == 25 ||
scope.row.auditType == 50 ||
scope.row.auditType == 51 ||
scope.row.shipmentState == 407 ||
scope.row.shipmentState == 409 ||
scope.row.shipmentState == 411 ||
(scope.row.status == 5 && scope.row.shipmentState == 304)
">
<el-dropdown-item
@click.native="handleUpdate(scope.row,false ,true)"
v-hasPermi="['ecw:order:edit-worth']"
>{{ $t("修改货值") }}</el-dropdown-item>
</template> </template>
<!-- 删除 --> <!-- 删除 -->
...@@ -472,16 +433,7 @@ ...@@ -472,16 +433,7 @@
</template> </template>
<!--转异--> <!--转异-->
<template <template v-if="(scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314)) && !scope.row.abnormalState && exclude(scope.row.inWarehouseState, [204, 205, 206]) && exclude(scope.row.shipmentState, [305, 307, 407])">
v-if="
(scope.row.status < 12 ||
(scope.row.status == 12 &&
scope.row.shipmentState == 314)) &&
!scope.row.abnormalState &&
exclude(scope.row.inWarehouseState, [204, 205, 206]) &&
exclude(scope.row.shipmentState, [305, 307, 407])
"
>
<el-dropdown-item @click.native="handleException(scope.row)" v-hasPermi="['ecw:order:turnException']">{{ $t("转异") }}</el-dropdown-item> <el-dropdown-item @click.native="handleException(scope.row)" v-hasPermi="['ecw:order:turnException']">{{ $t("转异") }}</el-dropdown-item>
</template> </template>
<template v-if="scope.row.abnormalState != 0"> <template v-if="scope.row.abnormalState != 0">
...@@ -491,96 +443,29 @@ ...@@ -491,96 +443,29 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<template <template v-if="(exclude(scope.row.status, [0, 11, 12, 13, 14, 15, 17, 18, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206])) || (scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0)">
v-if="
(exclude(scope.row.status,[0, 11, 12, 13, 14, 15, 17, 18, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206]))
||
(scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0)
"
>
<!-- <el-divider direction="vertical"></el-divider> --> <!-- <el-divider direction="vertical"></el-divider> -->
<!--仓库相关的--> <!--仓库相关的-->
<el-dropdown <el-dropdown v-hasPermi="['ecw:order:warehouse_add', 'ecw:order:warehouse_update', 'ecw:order:warehouse_exit', 'ecw:order:warehouse_adjustment', 'ecw:order:warehouse_transfer', 'ecw:order:warehouse_arrive', 'ecw:order:stocking', 'ecw:order:shipment:warehouse_replenish', 'ecw:order:shipment:warehouse_update']">
v-hasPermi="[
'ecw:order:warehouse_add',
'ecw:order:warehouse_update',
'ecw:order:warehouse_exit',
'ecw:order:warehouse_adjustment',
'ecw:order:warehouse_transfer',
'ecw:order:warehouse_arrive',
'ecw:order:stocking',
'ecw:order:shipment:warehouse_replenish',
'ecw:order:shipment:warehouse_update',
]"
>
<el-button type="text">{{ $t("仓库") }}</el-button> <el-button type="text">{{ $t("仓库") }}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- 入仓操作 --> <!-- 入仓操作 -->
<template v-if="(include(scope.row.status, [0, 2]) || scope.row.inWarehouseState == 208)"> <template v-if="include(scope.row.status, [0, 2]) || scope.row.inWarehouseState == 208">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{ $t("入仓操作") }}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{ $t("入仓操作") }}</el-dropdown-item>
</template> </template>
<!-- 入仓补充 --> <!-- 入仓补充 -->
<template <template v-if="scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0 && exclude(scope.row.shipmentState, [305, 307, 309, 310, 311, 313, 407, 409, 411])">
v-if="scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0 && exclude(scope.row.shipmentState, [305, 307, 309, 310, 311, 313, 407,409,411])" <el-dropdown-item @click.native="$router.push('/order/warehousing-add?shipment=1&id=' + scope.row.orderId)" v-hasPermi="['ecw:order:shipment:warehouse_replenish']">{{ $t("入仓补充") }}</el-dropdown-item>
>
<el-dropdown-item
@click.native="$router.push('/order/warehousing-add?shipment=1&id=' + scope.row.orderId)"
v-hasPermi="['ecw:order:shipment:warehouse_replenish']"
>{{ $t("入仓补充") }}</el-dropdown-item
>
</template> </template>
<template <template v-else-if="include(scope.row.inWarehouseState, [201, 202, 202, 210, 202, 211, 202, 214, 215, 216]) && include(scope.row.status, [2, 3, 5, 10, 9, 8]) && include(scope.row.airShipment, [0, 1])">
v-else-if=" <el-dropdown-item @click.native="$router.push('/order/warehousing-add?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_replenish']">{{ $t("入仓补充") }}</el-dropdown-item>
include(
scope.row.inWarehouseState,
[201, 202, 202, 210, 202, 211, 202, 214, 215, 216]
) && include(scope.row.status, [2, 3, 5, 10, 9, 8]) && include(scope.row.airShipment, [0, 1])
"
>
<el-dropdown-item
@click.native="
$router.push(
'/order/warehousing-add?id=' + scope.row.orderId
)
"
v-hasPermi="['ecw:order:warehouse_replenish']"
>{{ $t("入仓补充") }}</el-dropdown-item
>
</template> </template>
<!-- 入仓修改 --> <!-- 入仓修改 -->
<template <template v-if="scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0 && exclude(scope.row.shipmentState, [305, 307, 309, 310, 311, 313, 407, 409, 411])">
v-if="scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0 <el-dropdown-item @click.native="$router.push('/order/warehousing-update?shipment=1&id=' + scope.row.orderId)" v-hasPermi="['ecw:order:shipment:warehouse_update']">{{ $t("入仓修改") }}</el-dropdown-item>
&& exclude(scope.row.shipmentState, [305, 307, 309, 310, 311, 313, 407,409,411])"
>
<el-dropdown-item
@click.native="$router.push('/order/warehousing-update?shipment=1&id=' + scope.row.orderId)"
v-hasPermi="['ecw:order:shipment:warehouse_update']"
>{{ $t("入仓修改") }}</el-dropdown-item
>
</template> </template>
<template <template v-else-if="include(scope.row.inWarehouseState, [201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215, 216, 204, 205]) && scope.row.status != 11 && exclude(scope.row.shipmentState, [305, 307, 407]) && include(scope.row.airShipment, [0, 1])">
v-else-if=" <el-dropdown-item @click.native="$router.push('/order/warehousing-update?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_update']" :disabled2="scope.row.parentOrderId">{{ $t("入仓修改") }}</el-dropdown-item>
include(
scope.row.inWarehouseState,
[
201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215,
216, 204, 205,
]
) &&
scope.row.status != 11 &&
exclude(scope.row.shipmentState, [305, 307, 407]) && include(scope.row.airShipment, [0, 1])
"
>
<el-dropdown-item
@click.native="
$router.push(
'/order/warehousing-update?id=' + scope.row.orderId
)
"
v-hasPermi="['ecw:order:warehouse_update']"
:disabled2="scope.row.parentOrderId"
>{{ $t("入仓修改") }}</el-dropdown-item
>
</template> </template>
<!-- 退仓 --> <!-- 退仓 -->
...@@ -703,7 +588,8 @@ ...@@ -703,7 +588,8 @@
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose" /> <batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose" />
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId"></withdrawal> <withdrawal v-if="show" :dialog-visible="show" :orderId="orderId"></withdrawal>
<batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application> <batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
<fee-application v-if="feeApplicationBol" :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol "@refresh="getList"></fee-application> <fee-application v-if="feeApplicationBol" :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol" @refresh="getList"></fee-application>
<feeApplicationBatch v-if="feeApplicationBatch" :order-list="multipleSelection" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBatch" @refresh="getList" />
<merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo = null" /> <merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo = null" />
<pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo = null" @delete="getList" /> <pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo = null" @delete="getList" />
<SplitRevoke <SplitRevoke
...@@ -736,6 +622,7 @@ import withdrawal from "@/views/ecw/order/withdrawal" ...@@ -736,6 +622,7 @@ import withdrawal from "@/views/ecw/order/withdrawal"
import UserSelector from "@/components/UserSelector" import UserSelector from "@/components/UserSelector"
import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication" import BatchSingleApplication from "@/views/ecw/order/batchSingleApplication"
import FeeApplication from "@/views/ecw/order/feeApplication" import FeeApplication from "@/views/ecw/order/feeApplication"
import feeApplicationBatch from "@/views/ecw/order/feeApplicationBatch"
import MergeLog from "@/views/ecw/order/components/MergeLog" import MergeLog from "@/views/ecw/order/components/MergeLog"
import PickupLog from "./components/PickupLog" import PickupLog from "./components/PickupLog"
import { getWarehouseList } from "@/api/ecw/warehouse" import { getWarehouseList } from "@/api/ecw/warehouse"
...@@ -752,6 +639,7 @@ export default { ...@@ -752,6 +639,7 @@ export default {
Template, Template,
UserSelector, UserSelector,
FeeApplication, FeeApplication,
feeApplicationBatch,
BatchSingleApplication, BatchSingleApplication,
MergeLog, MergeLog,
PickupLog, PickupLog,
...@@ -866,7 +754,8 @@ export default { ...@@ -866,7 +754,8 @@ export default {
key: "eqPickRatio", key: "eqPickRatio",
value: "" value: ""
}, },
autoHeight: null autoHeight: null,
feeApplicationBatch: false
} }
}, },
watch: { watch: {
...@@ -1023,10 +912,10 @@ export default { ...@@ -1023,10 +912,10 @@ export default {
}, },
computed: { computed: {
isMobile() { isMobile() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera; const userAgent = navigator.userAgent || navigator.vendor || window.opera
// 匹配常见的移动设备标识 // 匹配常见的移动设备标识
const mobileIdentifiers = ['Android', 'webOS', 'iPhone', 'iPad', 'iPod', 'BlackBerry', 'Windows Phone']; const mobileIdentifiers = ["Android", "webOS", "iPhone", "iPad", "iPod", "BlackBerry", "Windows Phone"]
return mobileIdentifiers.some(identifier => userAgent.includes(identifier)); return mobileIdentifiers.some((identifier) => userAgent.includes(identifier))
}, },
// 导出的权限字符串 // 导出的权限字符串
exportPermiString() { exportPermiString() {
...@@ -1407,10 +1296,10 @@ export default { ...@@ -1407,10 +1296,10 @@ export default {
let url = "edit?id=" + row.orderId let url = "edit?id=" + row.orderId
if (updateChannel) { if (updateChannel) {
url += "&updateChannel=1" url += "&updateChannel=1"
}else if(updateWorth){ } else if (updateWorth) {
url += "&updateWorth=1" url += "&updateWorth=1"
} }
console.log('url:' + url); console.log("url:" + url)
this.$router.push(url) this.$router.push(url)
}, },
...@@ -1539,20 +1428,27 @@ export default { ...@@ -1539,20 +1428,27 @@ export default {
}, },
//表格高度自适应 //表格高度自适应
getHeight() { getHeight() {
if(!this.isMobile) { if (!this.isMobile) {
this.$refs.dataTable.doLayout() this.$refs.dataTable.doLayout()
let getHeightFromBottom = (element, variableHeight) => { let getHeightFromBottom = (element, variableHeight) => {
const elementRect = element.getBoundingClientRect().top; const elementRect = element.getBoundingClientRect().top
const windowHeight = document.documentElement.clientHeight; const windowHeight = document.documentElement.clientHeight
const elementHeightFromBottom = windowHeight - elementRect; const elementHeightFromBottom = windowHeight - elementRect
const result = elementHeightFromBottom - variableHeight; const result = elementHeightFromBottom - variableHeight
return result; return result
} }
const element = document.getElementById('dataTable'); const element = document.getElementById("dataTable")
const variableHeight = 70; // 给定的变量高度 一般留于分页器高度 const variableHeight = 70 // 给定的变量高度 一般留于分页器高度
this.autoHeight =getHeightFromBottom(element, variableHeight) ; this.autoHeight = getHeightFromBottom(element, variableHeight)
} }
}, },
feeApplicationBatchOpen() {
if (!this.ids.length) {
this.$message(this.$t("请先勾选订单"))
return
}
this.feeApplicationBatch = true
}
} }
} }
</script> </script>
......
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