Commit 2d2d8edc authored by 我在何方's avatar 我在何方
parents 80831dd3 006dfacf
import request from "@/utils/request";
/**
* 二程起飞
*
* @export
* @param {*} data
* @return {*}
*/
export function takeoffCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-takeoff/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-takeoff/create",
method: "post",
data,
});
}
/**
* 二程到港
*
* @export
* @param {*} data
* @return {*}
*/
export function arrivalCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-arrival-air/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-arrival-air/create",
method: "post",
data,
});
}
\ No newline at end of file
...@@ -11,6 +11,7 @@ const i18n = new VueI18n({ ...@@ -11,6 +11,7 @@ const i18n = new VueI18n({
'zh_CN': require('./languages/zh_CN.json') 'zh_CN': require('./languages/zh_CN.json')
} }
}) })
window.i18n = i18n
console.log({i18n}) console.log({i18n})
/* /*
用法 用法
...@@ -19,7 +20,7 @@ $l(item, 'title') => item.titleZh ...@@ -19,7 +20,7 @@ $l(item, 'title') => item.titleZh
$l(null, 'title') => titleZh $l(null, 'title') => titleZh
$l() => Zh $l() => Zh
*/ */
Vue.prototype.$l = (object, field = '') => { Vue.prototype.$l = i18n.l = (object, field = '') => {
let prefix = i18n.locale.split('_')[0] let prefix = i18n.locale.split('_')[0]
let append = prefix.charAt(0).toUpperCase() + prefix.toLowerCase().substr(1) let append = prefix.charAt(0).toUpperCase() + prefix.toLowerCase().substr(1)
if(typeof object == 'string'){ if(typeof object == 'string'){
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<el-badge :value="matterNum !== 0 ? matterNum : '' " class="right-menu-item badge"> <el-badge :value="matterNum !== 0 ? matterNum : '' " class="right-menu-item badge">
<div @click="$router.push('/task/todo')" style="font-size: 28px; color: #cccccc;cursor: pointer;" class="el-icon-postcard"></div> <div @click="$router.push('/task/todo')" style="font-size: 28px; color: #cccccc;cursor: pointer;" class="el-icon-postcard"></div>
</el-badge> </el-badge>
<el-badge :value="notMessage !== 0 ? notMessage : '' " class="right-menu-item badge"> <el-badge :value="notMessage !== 0 ? notMessage : '' " class="right-menu-item badge">
<el-image style="width: 22px;height: 20px;cursor: pointer;" :src="unreadMessage" @click="notRead"></el-image> <el-image style="width: 22px;height: 20px;cursor: pointer;" :src="unreadMessage" @click="notRead"></el-image>
</el-badge> </el-badge>
...@@ -40,8 +40,10 @@ ...@@ -40,8 +40,10 @@
<dict-selector :type="DICT_TYPE.SYSTEM_LOCALE" v-model="lang" defaultable class="right-menu-item select-nav" /> <dict-selector :type="DICT_TYPE.SYSTEM_LOCALE" v-model="lang" defaultable class="right-menu-item select-nav" />
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
<img :src="avatar" class="user-avatar"> <div class="avatar-wrapper flex-center">
{{$store.getters.name}}
<img :src="avatar" class="user-avatar ml-10">
<i class="el-icon-caret-bottom" /> <i class="el-icon-caret-bottom" />
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
......
...@@ -406,6 +406,28 @@ export const constantRoutes = [ ...@@ -406,6 +406,28 @@ export const constantRoutes = [
} }
] ]
}, },
{
path: '/boxSeaAir',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: 'query/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/query'),
props: true,
name: 'shippingDetail',
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/boxDetail'}
},
{
path: 'shippingSeaAir/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shippingSeaAir/shippingSeaAir'),
props: true,
name: 'shippingSeaAir',
meta: {title: '海空联运出货操作', icon: '', activeMenu: '/shipment/boxSeaAir'}
}
]
},
] ]
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
......
...@@ -109,7 +109,7 @@ const user = { ...@@ -109,7 +109,7 @@ const user = {
user: { user: {
id: '', id: '',
avatar: '', avatar: '',
userName: '' nickname: ''
} }
} }
} }
...@@ -125,7 +125,7 @@ const user = { ...@@ -125,7 +125,7 @@ const user = {
commit('SET_ROLES', ['ROLE_DEFAULT']) commit('SET_ROLES', ['ROLE_DEFAULT'])
} }
commit('SET_ID', user.id) commit('SET_ID', user.id)
commit('SET_NAME', user.userName) commit('SET_NAME', user.nickname)
commit('SET_AVATAR', avatar) commit('SET_AVATAR', avatar)
resolve(res) resolve(res)
}).catch(error => { }).catch(error => {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
* 数据字典工具类 * 数据字典工具类
*/ */
import store from '@/store' import store from '@/store'
import i18n from '@/i18n'
export const DICT_TYPE = { export const DICT_TYPE = {
USER_TYPE: 'user_type', USER_TYPE: 'user_type',
...@@ -256,7 +257,7 @@ export function getDictData(dictType, value) { ...@@ -256,7 +257,7 @@ export function getDictData(dictType, value) {
export function getDictDataLabel(dictType, value) { export function getDictDataLabel(dictType, value) {
const dict = getDictData(dictType, value); const dict = getDictData(dictType, value);
return dict ? dict.label : ''; return dict ? i18n.l(dict, 'label') : '';
} }
export class getDictDataL { export class getDictDataL {
......
...@@ -158,10 +158,22 @@ export default { ...@@ -158,10 +158,22 @@ export default {
return false return false
} }
const map = { const map = {
// 报价单特价审核,原来配置的组件名
"special-discount": { "special-discount": {
component: 'special-detail', component: 'SpecialDetail',
id: this.processInstance.businessKey, id: this.processInstance.businessKey,
readonly: true type: 1
},
// 报价单特价审核,符合命名规则的组件名
offer_special: {
component: 'SpecialDetail',
id: this.processInstance.businessKey,
type: 1
},
offer_commission: {
component: 'SpecialDetail',
id: this.processInstance.businessKey,
type: 2
}, },
free_apply: { free_apply: {
component: "warehouseDetails", component: "warehouseDetails",
......
<template>
<div class="shippingSea-dialog">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="运输方式" prop="transportType">
<el-radio-group v-model="form.transportType">
<el-radio v-for="dict in transportTypes" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="出货渠道" prop="shippingChannelId">
<el-select v-model="form.shippingChannelId" placeholder="请选择出货渠道">
<el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId" :key="item.channelId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="柜型" prop="cabinetId">
<el-select v-model="form.cabinetId" placeholder="请选择柜型">
<el-option v-for="item in cabinetList" :label="item.name" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="始发地" prop="startWarehouseId">
<el-select v-model="form.startWarehouseId" placeholder="请选择始发地">
<el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="目的地" prop="destWarehouseId">
<el-select v-model="form.destWarehouseId" placeholder="请选择目的地">
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</div>
</template>
<script>
import { createbox, updatebox } from "@/api/ecw/box";
import { getChannelList } from '@/api/ecw/channel'
export default {
name: "editForm",
inheritAttrs: false,
props: {
transportTypes: Array,
warehouseList: Array,
cabinetList: Array,
shipmentObj: Object,
},
created() {
this.form = { ...this.shipmentObj };
this.getChannelList()
},
data() {
return {
// 表单参数
form: { transportType: '4' },
channelList: [],
// 表单校验
rules: {
shippingChannelId: [
{ required: true, message: '出货渠道不能为空', trigger: 'blur' }
],
cabinetId: [
{ required: true, message: '柜型不能为空', trigger: 'blur' }
],
startWarehouseId: [
{ required: true, message: '始发地不能为空', trigger: 'blur' }
],
destWarehouseId: [
{ required: true, message: '目的地不能为空', trigger: 'blur' }
]
}
};
},
methods: {
getChannelList() {
getChannelList().then((res) => (this.channelList = res.data))
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate((valid) => {
if (!valid) {
return
}
this.form.transportType = 4
// 修改的提交
if (this.form.id != null) {
updatebox(this.form).then((response) => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
})
return
}
// 添加的提交
createbox(this.form).then((response) => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
})
})
},
/** 取消按钮 */
cancel() {
this.$emit("closeDialog");
},
},
computed: {
exportWarehouseList() {
return this.warehouseList.filter(
(item) => item.tradeType == "2" || item.type == "3"
);
},
importWarehouseList() {
return this.warehouseList.filter(
(item) => item.tradeType == "1" || item.type == "3"
);
},
},
};
</script>
<style lang="scss">
// 海运操作统一弹窗样式
.shippingSea-dialog {
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
text-align: center;
}
.two-element-formItem {
display: flex;
> :last-child {
width: 100%;
margin-left: 10px;
}
}
.two-element {
.el-form-item__content {
display: flex;
> :last-child {
margin-left: 10px;
}
}
}
}
</style>
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="自编号" prop="selfNo"> <el-form-item label="自编号" prop="selfNo">
<el-input v-model="queryParams.selfNo" placeholder="请输入自编号" clearable @keyup.enter.native="handleQuery"/> <el-input
v-model="queryParams.selfNo"
placeholder="请输入自编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="柜号" prop="cubNo"> <el-form-item label="柜号" prop="cubNo">
<el-input v-model="queryParams.cubNo" placeholder="请输入柜号" clearable @keyup.enter.native="handleQuery"/> <el-input
v-model="queryParams.cubNo"
placeholder="请输入柜号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="柜型" prop="cabinetId"> <el-form-item label="柜型" prop="cabinetId">
<el-select v-model="queryParams.cabinetId" placeholder="请选择柜型"> <el-select v-model="queryParams.cabinetId" placeholder="请选择柜型">
<el-option v-for="item in cabinetList" :label="item.name" :value="item.name" :key="item.id"></el-option> <el-option
v-for="item in cabinetList"
:label="item.name"
:value="item.name"
:key="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="始发地" prop="startWarehouseId"> <el-form-item label="始发地" prop="startWarehouseId">
<el-select v-model="queryParams.startWarehouseId" placeholder="请选择始发地"> <el-select
<el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> v-model="queryParams.startWarehouseId"
placeholder="请选择始发地"
>
<el-option
v-for="item in exportWarehouseList"
:label="item.titleZh"
:value="item.id"
:key="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="目的地" prop="destWarehouseId"> <el-form-item label="目的地" prop="destWarehouseId">
<el-select v-model="queryParams.destWarehouseId" placeholder="请选择目的地"> <el-select
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> v-model="queryParams.destWarehouseId"
placeholder="请选择目的地"
>
<el-option
v-for="item in importWarehouseList"
:label="item.titleZh"
:value="item.id"
:key="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="" prop="date"> <el-form-item label="" prop="date">
<el-select v-model="queryParams.dateType" placeholder="请选择时间类型" clearable size="small"> <el-select
<el-option v-for="item in dateTypes" :key="item.value" :label="item.label" :value="item.value" /> v-model="queryParams.dateType"
placeholder="请选择时间类型"
clearable
size="small"
>
<el-option
v-for="item in dateTypes"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-date-picker v-model="queryParams.dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" <el-date-picker
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"/> v-model="queryParams.dateRangeCreateTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="boxStatus"> <el-form-item label="状态" prop="boxStatus">
<el-select v-model="queryParams.boxStatus" placeholder="请选择状态" clearable size="small"> <el-select
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BOX_SHIPMENT_STATUS)" v-model="queryParams.boxStatus"
:key="dict.value" :label="dict.label" :value="dict.value"/> placeholder="请选择状态"
clearable
size="small"
>
<el-option
v-for="dict in this.getDictDatas(DICT_TYPE.BOX_SHIPMENT_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -56,23 +119,38 @@ ...@@ -56,23 +119,38 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button
v-hasPermi="['shipment:box:create']">出货安排 type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['shipment:box:create']"
>出货安排
</el-button> </el-button>
</el-col> </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
:loading="exportLoading" type="warning"
v-hasPermi="['shipment:box:export']">导出 plain
icon="el-icon-download"
size="mini"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['shipment:box:export']"
>导出
</el-button> </el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="自编号" align="center" prop="selfNo"/> <el-table-column label="自编号" align="center" prop="selfNo" />
<el-table-column label="柜号" align="center" prop="cubNo"/> <el-table-column label="柜号" align="center" prop="cubNo" />
<el-table-column label="柜型" align="center" prop="cabinetId"> <el-table-column label="柜型" align="center" prop="cabinetId">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ getCabinetName(scope.row.cabinetId) }}</span> <span>{{ getCabinetName(scope.row.cabinetId) }}</span>
...@@ -80,7 +158,10 @@ ...@@ -80,7 +158,10 @@
</el-table-column> </el-table-column>
<el-table-column label="运输方式" align="center" prop="transportType"> <el-table-column label="运输方式" align="center" prop="transportType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportType"/> <dict-tag
:type="DICT_TYPE.ECW_TRANSPORT_TYPE"
:value="scope.row.transportType"
/>
</template> </template>
</el-table-column> </el-table-column>
...@@ -90,21 +171,36 @@ ...@@ -90,21 +171,36 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="方数(预装/已装)" align="center" prop="squareNumber"/> <el-table-column
<el-table-column label="重量(预装/已装)" align="center" prop="weight"/> label="方数(预装/已装)"
align="center"
<el-table-column label="状态" align="center" prop="boxStatus"> prop="squareNumber"
<template slot-scope="scope"> >
<dict-tag :type="DICT_TYPE.BOX_SHIPMENT_STATUS" :value="scope.row.boxStatus"/> <template slot-scope="{ row }">
{{ row.boxStatistics.volume }}/{{ row.boxStatistics.loadVolume }}
</template>
</el-table-column>
<el-table-column label="重量(预装/已装)" align="center" prop="weight">
<template slot-scope="{ row }">
{{ row.boxStatistics.weight }}/{{ row.boxStatistics.loadWeight }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="日期" align="center" prop="createTime" width="180"> <el-table-column label="状态" align="center" prop="shipmentStatusText" />
<template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss') }}</span> <el-table-column
</template> label="日期"
align="center"
prop="createTime"
width="180"
>
<template slot-scope="scope">
<span>{{
new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss')
}}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)" <!-- <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
v-hasPermi="['shipment:box:query']">查看</el-button> v-hasPermi="['shipment:box:query']">查看</el-button>
...@@ -112,309 +208,351 @@ ...@@ -112,309 +208,351 @@
v-hasPermi="['shipment:box:update']">修改</el-button> v-hasPermi="['shipment:box:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['shipment:box:delete']">删除</el-button> --> v-hasPermi="['shipment:box:delete']">删除</el-button> -->
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)"> <el-dropdown
trigger="click"
@command="(command) => handleCommand(scope.row, command)"
style="marginRight:10px;"
>
<el-button type="primary"> <el-button type="primary">
操作<i class="el-icon-arrow-down el-icon--right"></i> 操作<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">编辑</el-dropdown-item> <el-dropdown-item command="edit">编辑</el-dropdown-item>
<el-dropdown-item command="seaAir">操作-海空联运</el-dropdown-item> <el-dropdown-item command="seaAir"
>操作-海空联运</el-dropdown-item
>
<el-dropdown-item command="error">异常登记</el-dropdown-item> <el-dropdown-item command="error">异常登记</el-dropdown-item>
<el-dropdown-item command="cost">费用登记</el-dropdown-item> <el-dropdown-item command="cost">费用登记</el-dropdown-item>
<el-dropdown-item command="delete">删除</el-dropdown-item> <el-dropdown-item command="delete">删除</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-dropdown trigger="click">
<el-button type="primary">
下载<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="">预装单</el-dropdown-item>
<el-dropdown-item command="">已装单</el-dropdown-item>
<el-dropdown-item command="">应收汇总表</el-dropdown-item>
<el-dropdown-item command="">agent list</el-dropdown-item>
<el-dropdown-item command="">son cap</el-dropdown-item>
<el-dropdown-item command="">提货单</el-dropdown-item>
<el-dropdown-item command="">提单Copy</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination
@pagination="getList"/> v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> <el-dialog
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> :title="dialogCfg.title"
:visible.sync="dialogCfg.open"
<el-form-item label="运输方式" prop="transportType"> :width="dialogCfg.width"
<el-radio-group v-model="form.transportType"> :fullscreen="dialogCfg.fullscreen"
<el-radio v-for="dict in transportTypes" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio> append-to-body
</el-radio-group> class="shippingSea-dialog"
</el-form-item> >
<template
<el-form-item label="出货渠道" prop="shippingChannelId"> v-if="
<el-select v-model="form.shippingChannelId" placeholder="请选择出货渠道"> dialogCfg.dialogType === 'edit' || dialogCfg.dialogType === 'add'
<el-option v-for="item in channelList" :label="item.nameZh" :value="item.channelId" :key="item.channelId"></el-option> "
</el-select> >
</el-form-item> <editForm
v-if="dialogCfg.open"
<el-form-item label="柜型" prop="cabinetId"> @closeDialog="closeDialog"
<el-select v-model="form.cabinetId" placeholder="请选择柜型"> :shipmentObj="currRow"
<el-option v-for="item in cabinetList" :label="item.name" :value="item.id" :key="item.id"></el-option> :warehouseList="warehouseList"
</el-select> :transportTypes="transportTypes"
</el-form-item> :cabinetList="cabinetList"
/>
<el-form-item label="始发地" prop="startWarehouseId"> </template>
<el-select v-model="form.startWarehouseId" placeholder="请选择始发地"> <template v-if="dialogCfg.dialogType === 'cost'">
<el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <costForm
</el-select> v-if="dialogCfg.open"
</el-form-item> @closeDialog="closeDialog"
:shipmentObj="currRow"
<el-form-item label="目的地" prop="destWarehouseId"> />
<el-select v-model="form.destWarehouseId" placeholder="请选择目的地"> </template>
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <template v-if="dialogCfg.dialogType === 'error'">
</el-select> <regError
</el-form-item> v-if="dialogCfg.open"
@closeDialog="closeDialog"
</el-form> :shipmentObj="currRow"
<div slot="footer" class="dialog-footer"> />
<el-button type="primary" @click="submitForm">确 定</el-button> </template>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {createbox, updatebox, deletebox, getbox, getboxPage, exportboxExcel} from "@/api/ecw/box"; import {
import {getCabinetPage} from "@/api/ecw/cabinet"; deletebox,
import { getChannelList } from '@/api/ecw/channel'; getbox,
import { getWarehouseList } from "@/api/ecw/warehouse" getboxPage,
exportboxExcel
export default { } from '@/api/ecw/box'
name: "box", import { getCabinetPage } from '@/api/ecw/cabinet'
components: {}, import { getChannelList } from '@/api/ecw/channel'
data() { import { getWarehouseList } from '@/api/ecw/warehouse'
return { import costForm from './costForm.vue'
dateTypes:[ import regError from './regError.vue'
{value:'1', label:'预装时间'}, import editForm from './editSeaAirForm.vue'
{value:'2', label:'装柜时间'},
{value:'3', label:'起运时间'}, export default {
{value:'4', label:'到港时间'}, name: 'box',
{value:'5', label:'清关时间'}, components: {
{value:'6', label:'提货时间'}, costForm,
], regError,
editForm
},
// 遮罩层 data() {
loading: true, return {
// 导出遮罩层 dateTypes: [
exportLoading: false, { value: '1', label: '预装时间' },
// 显示搜索条件 { value: '2', label: '装柜时间' },
showSearch: true, { value: '3', label: '起运时间' },
// 总条数 { value: '4', label: '到港时间' },
total: 0, { value: '5', label: '清关时间' },
// 出货列表 { value: '6', label: '提货时间' }
list: [], ],
// 弹出层标题
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 出货列表
list: [],
// 弹出层标题
title: '',
// 是否显示弹出层
open: false,
dialogCfg: {
title: "", title: "",
dialogType: "",
width: "600px",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
dateRangeCreateTime: [], fullscreen: false,
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
id: null,
selfNo: null,
cubNo: null,
cabinetId: null,
boxStatus: null,
startWarehouseId: null,
destWarehouseId: null,
transportType: null,
},
cabinetList:[],
channelList:[],
warehouseList: [],
// 表单参数
form: {transportType:"4"},
// 表单校验
rules: {
shippingChannelId: [{ required: true, message: "出货渠道不能为空", trigger: "blur" }],
cabinetId: [{ required: true, message: "柜型不能为空", trigger: "blur" }],
startWarehouseId: [{ required: true, message: "始发地不能为空", trigger: "blur" }],
destWarehouseId: [{ required: true, message: "目的地不能为空", trigger: "blur" }],
}
};
},
computed: {
exportWarehouseList() {
return this.warehouseList.filter(item => item.tradeType == '2' || item.type == '3')
}, },
importWarehouseList() { // 当前行
return this.warehouseList.filter(item => item.tradeType == '1' || item.type == '3') currRow: {},
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
id: null,
selfNo: null,
cubNo: null,
cabinetId: null,
boxStatus: null,
startWarehouseId: null,
destWarehouseId: null,
transportType: null
}, },
cabinetList: [],
channelList: [],
warehouseList: [],
}
},
computed: {
exportWarehouseList() {
return this.warehouseList.filter(
(item) => item.tradeType == '2' || item.type == '3'
)
},
importWarehouseList() {
return this.warehouseList.filter(
(item) => item.tradeType == '1' || item.type == '3'
)
},
getCabinetName() { getCabinetName() {
return cabinetId => { return (cabinetId) => {
for (let index in this.cabinetList) { for (let index in this.cabinetList) {
let cabinetItem = this.cabinetList[index]; let cabinetItem = this.cabinetList[index]
if (cabinetItem.id == cabinetId) { if (cabinetItem.id == cabinetId) {
return cabinetItem.name; return cabinetItem.name
}
} }
return '/'
} }
}, return '/'
}
},
getShipChannelName() { getShipChannelName() {
return shippingChannelId => { return (shippingChannelId) => {
for (let index in this.channelList) { for (let index in this.channelList) {
let channelItem = this.channelList[index]; let channelItem = this.channelList[index]
if (channelItem.channelId == shippingChannelId) { if (channelItem.channelId == shippingChannelId) {
return channelItem.nameZh; return channelItem.nameZh
}
} }
return '/'
} }
return '/'
} }
}
},
created() {
this.transportTypes = this.getDictDatas(
this.DICT_TYPE.ECW_TRANSPORT_TYPE
).filter((item) => item.value == '4')
getWarehouseList().then((res) => (this.warehouseList = res.data))
getCabinetPage(null).then((response) => {
this.cabinetList = response.data.list
})
this.getList()
this.getChannelList()
},
methods: {
getChannelList() {
getChannelList().then((res) => (this.channelList = res.data))
},
/** 查询列表 */
getList() {
this.loading = true
// 处理查询参数
let params = { ...this.queryParams }
params.transportType = 4
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime')
// 执行查询
getboxPage(params).then((response) => {
this.list = response.data.list
this.total = response.data.total
this.loading = false
})
}, },
created() { /** 取消按钮 */
this.transportTypes = this.getDictDatas( cancel() {
this.DICT_TYPE.ECW_TRANSPORT_TYPE this.open = false
).filter((item) => item.value == "4"); this.reset()
getWarehouseList().then(res => this.warehouseList = res.data); },
getCabinetPage(null).then(response => { /** 表单重置 */
this.cabinetList = response.data.list; reset() {
this.form = {
id: undefined,
cabinetId: undefined,
startWarehouseId: undefined,
destWarehouseId: undefined,
transportType: '4'
}
this.resetForm('form')
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = []
this.resetForm('queryForm')
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.$set(this.dialogCfg, "title", "添加出货");
this.$set(this.dialogCfg, "dialogType", "add");
this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "fullscreen", false);
this.$set(this.dialogCfg, "open", true);
},
/** 修改按钮操作 */
handleUpdate(row) {
const id = row.id;
getbox(id).then((response) => {
this.currRow = response.data;
this.$set(this.dialogCfg, "title", "修改出货");
this.$set(this.dialogCfg, "dialogType", "edit");
this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "open", true);
}); });
this.getList();
this.getChannelList();
}, },
methods: { /* 关闭弹窗 */
getChannelList(){ closeDialog(type) {
getChannelList().then(res => this.channelList = res.data) this.$set(this.dialogCfg, "open", false);
}, if (type === "add" || type === "edit") {
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
params.transportType = 4;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询
getboxPage(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
cabinetId: undefined,
startWarehouseId: undefined,
destWarehouseId: undefined,
transportType: "4",
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList(); this.getList();
}, }
/** 重置按钮操作 */ },
resetQuery() {
this.dateRangeCreateTime = []; /** 删除按钮操作 */
this.resetForm("queryForm"); handleDelete(row) {
this.handleQuery(); const id = row.id
}, this.$modal
/** 新增按钮操作 */ .confirm('是否确认删除出货编号为"' + id + '"的数据项?')
handleAdd() { .then(function () {
this.reset(); return deletebox(id)
this.open = true; })
this.title = "添加出货"; .then(() => {
}, this.getList()
/** 修改按钮操作 */ this.$modal.msgSuccess('删除成功')
handleUpdate(row) { })
this.reset(); .catch(() => {})
const id = row.id; },
getbox(id).then(response => { /** 导出按钮操作 */
this.form = response.data; handleExport() {
this.open = true; // 处理查询参数
this.title = "修改出货"; let params = { ...this.queryParams }
}); params.pageNo = undefined
}, params.pageSize = undefined
/** 提交按钮 */ this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime')
submitForm() { // 执行导出
this.$refs["form"].validate(valid => { this.$modal
if (!valid) { .confirm('是否确认导出所有出货数据项?')
return; .then(() => {
} this.exportLoading = true
return exportboxExcel(params)
this.form.transportType = 4; })
.then((response) => {
// 修改的提交 this.$download.excel(response, '${table.classComment}.xls')
if (this.form.id != null) { this.exportLoading = false
updatebox(this.form).then(response => { })
this.$modal.msgSuccess("修改成功"); .catch(() => {})
this.open = false; },
this.getList(); /** 查看按钮操作 */
}); handleCommand(row, command) {
return; this.$set(this.dialogCfg, "fullscreen", false);
} switch (command) {
// 添加的提交 case 'seaAir':
createbox(this.form).then(response => { this.$router.push('/boxSeaAir/shippingSeaAir/' + row.id)
this.$modal.msgSuccess("新增成功"); break
this.open = false;
this.getList(); case 'edit':
}); this.handleUpdate(row)
}); break
},
/** 删除按钮操作 */ case 'delete':
handleDelete(row) { this.handleDelete(row)
const id = row.id; break
this.$modal.confirm('是否确认删除出货编号为"' + id + '"的数据项?').then(function () {
return deletebox(id); case 'cost':
}).then(() => { this.$set(this.dialogCfg, 'title', '费用登记')
this.getList(); break
this.$modal.msgSuccess("删除成功");
}).catch(() => { case 'error':
}); this.$set(this.dialogCfg, 'title', '异常登记')
}, break
/** 导出按钮操作 */ }
handleExport() { if (["editLadingBill", "cost", "error"].includes(command)) {
// 处理查询参数 this.currRow = row;
let params = {...this.queryParams}; this.$set(this.dialogCfg, "dialogType", command);
params.pageNo = undefined; this.$set(this.dialogCfg, "width", "600px");
params.pageSize = undefined; this.$set(this.dialogCfg, "open", true);
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); }
// 执行导出
this.$modal.confirm('是否确认导出所有出货数据项?').then(() => {
this.exportLoading = true;
return exportboxExcel(params);
}).then(response => {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).catch(() => {
});
},
/** 查看按钮操作 */
handleCommand(row, command) {
switch (command) {
case 'sea':
this.$router.push('/box/shippingSea/' + row.id)
break;
case 'edit':
this.handleUpdate(row);
break;
case 'delete':
this.handleDelete(row);
break;
}
},
} }
}; }
}
</script> </script>
<template>
<div>
<el-form ref="twoWayArrivalForm" :rules="rules" :model="twoWayArrivalObj" label-width="120px">
<el-form-item label="预计到达时间" prop="estTime">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="twoWayArrivalObj.estTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="实际到达时间" prop="actTime">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="twoWayArrivalObj.actTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="实际二程时间" prop="actSecondTime">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="twoWayArrivalObj.actSecondTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" @click="onSubmit(2)">提交</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="primary" @click="exceptionReg">异常登记</el-button>
</el-row>
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="异常登记" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<regError @closeDialog="dialogVisible = false" v-bind="$attrs" />
</el-dialog>
</div>
</template>
<script>
import regError from "../../regError";
import { arrivalCreate } from "@/api/ecw/boxSeaAir";
import { formatDateStr, serviceMsg } from "../utils";
/**
* 起飞
*/
export default {
name: "twoWayArrival",
inheritAttrs: false,
components: {
regError,
},
data() {
return {
// 清关对象
twoWayArrivalObj: {},
// 校验
rules: {
actTime: [{ required: true, message: "必填", trigger: "blur" }]
},
// 弹窗配置
dialogVisible: false,
// 提示消息
showMsg: false,
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["actTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["actSecondTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["estTime"], "YYYY-MM-DD HH:mm:ss");
this.twoWayArrivalObj = oldData;
},
watch: {
},
methods: {
// 异常登记
exceptionReg() {
this.dialogVisible = true;
},
/** 提交 */
onSubmit(operateType) {
this.$refs["twoWayArrivalForm"].validate((valid) => {
if (valid) {
arrivalCreate({
...this.twoWayArrivalObj,
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
},
};
</script>
<style lang="scss" scoped>
.message-area {
margin: 0;
color: red;
}
</style>
<template>
<div>
<el-form ref="twoWayTakeoffForm" :rules="rules" :model="twoWayTakeoffObj" label-width="120px">
<el-form-item label="预计头程时间" prop="estHeadTime">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="twoWayTakeoffObj.estHeadTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="实际头程时间" prop="actHeadTime">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="twoWayTakeoffObj.actHeadTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="预计二程时间" prop="estSecondTime">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="twoWayTakeoffObj.estSecondTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" @click="onSubmit(2)">提交</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="primary" @click="exceptionReg">异常登记</el-button>
</el-row>
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="异常登记" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<regError @closeDialog="dialogVisible = false" v-bind="$attrs" />
</el-dialog>
</div>
</template>
<script>
import regError from "../../regError";
import { takeoffCreate } from "@/api/ecw/boxSeaAir";
import { formatDateStr, serviceMsg } from "../utils";
/**
* 起飞
*/
export default {
name: "twoWayTakeoff",
inheritAttrs: false,
components: {
regError,
},
data() {
return {
// 清关对象
twoWayTakeoffObj: {},
// 校验
rules: {
actHeadTime: [{ required: true, message: "必填", trigger: "blur" }],
estHeadTime: [{ required: true, message: "必填", trigger: "blur" }],
estSecondTime: [{ required: true, message: "必填", trigger: "blur" }],
},
// 弹窗配置
dialogVisible: false,
// 提示消息
showMsg: false,
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["actHeadTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["estHeadTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["estSecondTime"], "YYYY-MM-DD HH:mm:ss");
this.twoWayTakeoffObj = oldData;
},
watch: {
},
methods: {
// 异常登记
exceptionReg() {
this.dialogVisible = true;
},
/** 提交 */
onSubmit(operateType) {
this.$refs["twoWayTakeoffForm"].validate((valid) => {
if (valid) {
takeoffCreate({
...this.twoWayTakeoffObj,
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
},
};
</script>
<style lang="scss" scoped>
.message-area {
margin: 0;
color: red;
}
</style>
...@@ -40,6 +40,8 @@ import blCopyWidget from "./nodePage/blCopy.vue"; ...@@ -40,6 +40,8 @@ import blCopyWidget from "./nodePage/blCopy.vue";
import clrDocumentWidget from "./nodePage/clrDocument.vue"; import clrDocumentWidget from "./nodePage/clrDocument.vue";
import arrivalWidget from "./nodePage/arrival.vue"; import arrivalWidget from "./nodePage/arrival.vue";
import cusClearanceWidget from "./nodePage/cusClearance.vue"; import cusClearanceWidget from "./nodePage/cusClearance.vue";
import twoWayTakeoffWidget from "./nodePage/twoWayTakeoff.vue";
import twoWayArrivalWidget from "./nodePage/twoWayArrival.vue";
import unloadingWidget from "./nodePage/unloading/index.vue"; import unloadingWidget from "./nodePage/unloading/index.vue";
import settlementWidget from "./nodePage/settlement.vue"; import settlementWidget from "./nodePage/settlement.vue";
import reviewWidget from "./nodePage/review.vue"; import reviewWidget from "./nodePage/review.vue";
...@@ -66,6 +68,8 @@ export default { ...@@ -66,6 +68,8 @@ export default {
clrDocumentWidget, clrDocumentWidget,
arrivalWidget, arrivalWidget,
cusClearanceWidget, cusClearanceWidget,
twoWayTakeoffWidget,
twoWayArrivalWidget,
unloadingWidget, unloadingWidget,
settlementWidget, settlementWidget,
reviewWidget, reviewWidget,
......
...@@ -437,6 +437,414 @@ function seaBaseData() { ...@@ -437,6 +437,414 @@ function seaBaseData() {
]; ];
} }
/**
* 海空联运流程
*
* @return {*}
*/
function seaAirBaseData() {
return [
[
{
title: "订舱",
imgSrc: {
start: require("@/assets/images/shipping/dc-start.png"),
end: require("@/assets/images/shipping/dc-end.png"),
},
type: "booking", // 类型
dataKey: "1", // 字典数据键值
/**
* 订舱状态:11、未订舱;12、已订舱
*/
voName: "bookSeaInfo", // 订舱对象vo
keyName: "bkStatus",
status: {
start: [11],
wait: [],
end: [12],
},
},
],
[
{
title: "排单",
imgSrc: {
start: require("@/assets/images/shipping/yz-start.png"),
wait: require("@/assets/images/shipping/yz-wait.png"),
end: require("@/assets/images/shipping/yz-end.png"),
},
type: "preinstall",
dataKey: "2", // 字典数据键值
/**
* 预装状态:21、未预装;22、预装中;23、预装审核中;24、预装审核失败;25、预装审核成功
*/
voName: "preInstallInfo",
keyName: "prStatus",
status: {
start: [21],
wait: [22, 23, 24],
end: [25],
},
},
{
title: "AGENT",
imgSrc: {
start: require("@/assets/images/shipping/agent-start.png"),
wait: require("@/assets/images/shipping/agent-wait.png"),
end: require("@/assets/images/shipping/agent-end.png"),
},
type: "agent",
voName: "agentInfo",
currStatus: "start",
},
],
[
{
title: "理货",
imgSrc: {
start: require("@/assets/images/shipping/lh-start.png"),
wait: require("@/assets/images/shipping/lh-wait.png"),
end: require("@/assets/images/shipping/lh-end.png"),
},
type: "tally",
dataKey: "16", // 字典数据键值
/**
* 理货状态:2111、未理货;2112、已理货
*/
voName: "tallyInfo",
keyName: "tyStatus",
status: {
start: [2111],
wait: [],
end: [2112],
},
},
{
title: "拖车",
imgSrc: {
start: require("@/assets/images/shipping/tc-start.png"),
wait: require("@/assets/images/shipping/tc-wait.png"),
end: require("@/assets/images/shipping/tc-end.png"),
},
type: "trailer",
dataKey: "3", // 字典数据键值
/**
* 拖车状态:31、未派车;32、已派车
*/
voName: "trailerInfo",
keyName: "tlStatus",
status: {
start: [31],
wait: [],
end: [32],
},
},
],
[
{
title: "装柜",
imgSrc: {
start: require("@/assets/images/shipping/zg-start.png"),
wait: require("@/assets/images/shipping/zg-wait.png"),
end: require("@/assets/images/shipping/zg-end.png"),
},
type: "cabinet",
dataKey: "4", // 字典数据键值
/**
* 装柜状态:41、未装柜;42、装柜中;43、已装柜、待封柜;44、封柜审核中;45、封柜审核失败;46、封柜审核成功;47、已封柜,待出仓
*/
voName: "cabinetInfo",
keyName: "ldStatus",
status: {
start: [41],
wait: [42, 43, 44, 45, 46],
end: [47],
},
},
],
[
{
title: "报关",
imgSrc: {
start: require("@/assets/images/shipping/bg-start.png"),
wait: require("@/assets/images/shipping/bg-wait.png"),
end: require("@/assets/images/shipping/bg-end.png"),
},
type: "cusDeclaration",
dataKey: "5", // 字典数据键值
/**
*报关状态:51、未报关;52、报关中;53、已报关
*/
voName: "customsInfo",
keyName: "dcStatus",
status: {
start: [51],
wait: [52],
end: [53],
},
},
{
title: "配船",
imgSrc: {
start: require("@/assets/images/shipping/pc-start.png"),
wait: require("@/assets/images/shipping/pc-wait.png"),
end: require("@/assets/images/shipping/pc-end.png"),
},
type: "ship",
dataKey: "6", // 字典数据键值
/**
* 配船状态:61、未配船;62、已配船
*/
voName: "shipConfigInfo",
keyName: "saStatus",
status: {
start: [61],
wait: [],
end: [62],
},
},
{
title: "提单补料",
imgSrc: {
start: require("@/assets/images/shipping/tdcl-start.png"),
wait: require("@/assets/images/shipping/tdcl-wait.png"),
end: require("@/assets/images/shipping/tdcl-end.png"),
},
type: "subMaterial",
dataKey: "7", // 字典数据键值
/**
* 提单补料状态:71、未提单补料;72、已提单补料
*/
voName: "ladingBillInfo",
keyName: "blStatus",
status: {
start: [71],
wait: [],
end: [72],
},
},
],
[
{
title: "驳船",
imgSrc: {
start: require("@/assets/images/shipping/bc-start.png"),
wait: require("@/assets/images/shipping/bc-wait.png"),
end: require("@/assets/images/shipping/bc-end.png"),
},
type: "barge",
dataKey: "8", // 字典数据键值
/**
* 驳船状态:81、未驳船;82、已驳船
*/
voName: "bargeInfo",
keyName: "bgStatus",
status: {
start: [81],
wait: [],
end: [82],
},
},
],
[
{
title: "起运",
imgSrc: {
start: require("@/assets/images/shipping/qy-start.png"),
wait: require("@/assets/images/shipping/qy-wait.png"),
end: require("@/assets/images/shipping/qy-end.png"),
},
type: "departure",
dataKey: "9", // 字典数据键值
/**
* 起运状态:91、未起运;92、已起运
*/
voName: "shippingInfo",
keyName: "dtStatus",
status: {
start: [91],
wait: [],
end: [92],
},
},
],
[
{
title: "提单Copy",
imgSrc: {
start: require("@/assets/images/shipping/tdcopy-start.png"),
wait: require("@/assets/images/shipping/tdcopy-wait.png"),
end: require("@/assets/images/shipping/tdcopy-end.png"),
},
type: "blCopy",
dataKey: "10", // 字典数据键值
/**
* 提单COPY状态:101、未上传;102、已上传
*/
voName: "ladingCopyInfo",
keyName: "cpStatus",
status: {
start: [101],
wait: [],
end: [102],
},
},
{
type: "clrDocument",
imgSrc: {
start: require("@/assets/images/shipping/qg-start.png"),
wait: require("@/assets/images/shipping/qg-wait.png"),
end: require("@/assets/images/shipping/qg-end.png"),
},
title: "清关文件",
dataKey: "11", // 字典数据键值
/**
* 清关文件状态:111、未清关文件;112、已清关文件
*/
voName: "clearanceDocInfo",
keyName: "cdStatus",
status: {
start: [111],
wait: [],
end: [112],
},
},
],
[
{
title: "到港",
imgSrc: {
start: require("@/assets/images/shipping/dg-start.png"),
wait: require("@/assets/images/shipping/dg-wait.png"),
end: require("@/assets/images/shipping/dg-end.png"),
},
type: "arrival",
dataKey: "12", // 字典数据键值
/**
* 到港状态:121、未到港;112、已到港
*/
voName: "arrivalInfo",
keyName: "apStatus",
status: {
start: [121],
wait: [],
end: [122],
},
},
],
[
{
title: "清关",
imgSrc: {
start: require("@/assets/images/shipping/qg-start.png"),
wait: require("@/assets/images/shipping/qg-wait.png"),
end: require("@/assets/images/shipping/qg-end.png"),
},
type: "cusClearance",
dataKey: "13", // 字典数据键值
/**
* 清关状态:131、未清关;132、已清关
*/
voName: "clearanceInfo",
keyName: "clStatus",
status: {
start: [131],
wait: [],
end: [132],
},
},
],
[
{
title: "二程起飞",
imgSrc: {
start: require("@/assets/images/shipping/ecqf-start.png"),
wait: require("@/assets/images/shipping/ecqf-wait.png"),
end: require("@/assets/images/shipping/ecqf-end.png"),
},
type: "twoWayTakeoff",
dataKey: "14", // 字典数据键值
/**
* 起飞状态:141、未起飞;142、已起飞
*/
voName: "takeOffInfo",
keyName: "stkStatus",
status: {
start: [141],
wait: [],
end: [142],
},
},
],
[
{
title: "二程到港",
imgSrc: {
start: require("@/assets/images/shipping/ecdg-start.png"),
wait: require("@/assets/images/shipping/ecdg-wait.png"),
end: require("@/assets/images/shipping/ecdg-end.png"),
},
type: "twoWayArrival",
dataKey: "15", // 字典数据键值
/**
* 清关状态:131、未清关;132、已清关
*/
voName: "airArrivalInfo",
keyName: "sapStatus",
status: {
start: [151],
wait: [],
end: [152],
},
},
],
[
{
title: "卸柜",
imgSrc: {
start: require("@/assets/images/shipping/xg-start.png"),
wait: require("@/assets/images/shipping/xg-wait.png"),
end: require("@/assets/images/shipping/xg-end.png"),
},
type: "unloading",
dataKey: "14", // 字典数据键值
/**
* 卸柜状态:181、未卸柜;182、卸柜中;183、卸柜审核中;184、卸柜审核失败;185、卸柜审核成功;186、已卸柜
*/
voName: "cabinetUnloadInfo",
keyName: "ulStatus",
status: {
start: [181],
wait: [182, 183, 184, 185],
end: [186],
},
},
],
[
{
title: "结算",
imgSrc: {
start: require("@/assets/images/shipping/js-start.png"),
wait: require("@/assets/images/shipping/js-wait.png"),
end: require("@/assets/images/shipping/js-end.png"),
},
type: "settlement",
dataKey: "15", // 字典数据键值
/**
* 结算状态:191、未结算;192、结算中;193、已结算
*/
voName: "settlementInfo",
keyName: "slStatus",
status: {
start: [191],
wait: [192],
end: [193],
},
},
],
];
}
/** /**
* 详情显示列 * 详情显示列
* *
...@@ -764,6 +1172,48 @@ function getColmnMapping() { ...@@ -764,6 +1172,48 @@ function getColmnMapping() {
key: "operator", key: "operator",
}, },
], ],
takeOffInfo: [
{
title: "预计头程时间",
key: "estHeadTime",
type: "datetime",
},
{
title: "实际头程时间",
key: "actHeadTime",
type: "datetime",
},
{
title: "预计二程时间",
key: "estSecondTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
airArrivalInfo: [
{
title: "预计到达时间",
key: "estTime",
type: "datetime",
},
{
title: "实际到达时间",
key: "actTime",
type: "datetime",
},
{
title: "实际二程时间",
key: "actSecondTime",
type: "datetime",
},
{
title: "业务员",
key: "operator",
},
],
cabinetUnloadInfo: [ cabinetUnloadInfo: [
{ {
title: "到仓时间", title: "到仓时间",
...@@ -1047,6 +1497,7 @@ export { ...@@ -1047,6 +1497,7 @@ export {
getColmnMapping, getColmnMapping,
getSeaStatus, getSeaStatus,
seaBaseData, seaBaseData,
seaAirBaseData,
constantDict, constantDict,
formatStringNumber, formatStringNumber,
formatDateStr, formatDateStr,
......
<template>
<div>
<el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="19">
<div style="display: flex; justify-content: space-between;align-items: flex-end;">
<h2>海空联运出货操作</h2>
</div>
<!-- 信息 -->
<el-card style="margin-top: 15px">
<el-descriptions :column="5" border>
<el-descriptions-item label="自编号">{{shipmentObj.selfNo}}</el-descriptions-item>
<el-descriptions-item label="出货渠道">
{{ channelName(shipmentObj.shippingChannelId) }}
</el-descriptions-item>
<el-descriptions-item label="始发地">
{{importCityName(shipmentObj.startWarehouseId)}}
</el-descriptions-item>
<el-descriptions-item label="目的地">
{{importCityName(shipmentObj.destWarehouseId)}}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{statusLabel}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<!-- 海运流程图 -->
<seaProcess :seaBaseData="seaAirBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" @getBoxInfo="getBoxInfo" />
<!-- 海运步骤图 -->
<seaStepDetail :seaBaseData="seaAirBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" />
</el-col>
</el-row>
</div>
</template>
<script>
import seaProcess from "../shippingSea/seaProcess.vue";
import seaStepDetail from "../shippingSea/seaStepDetail.vue";
import { getbox } from "@/api/ecw/box";
import { getWarehouseList } from "@/api/ecw/warehouse";
import { getSupplierPage } from "@/api/ecw/supplier";
import { getChannelList } from '@/api/ecw/channel';
import { getDockPage } from "@/api/ecw/dock";
import { listUser } from "@/api/system/user";
import { getSeaStatus, getStatusName, seaAirBaseData } from "../shippingSea/utils";
import {arrryToKeyedObjectBy} from '@/utils/index'
/**
* 海运操作主页面
*/
export default {
name: "shippingSea",
components: {
seaProcess,
seaStepDetail,
},
props: {
shipmentId: String,
},
data() {
return {
shipmentObj: {},
warehouseList: [],
// 供应商
allSupplier: [],
// 码头
allDocks: [],
// 用户
allUsers: [],
// 流程图节点
seaAirBaseData: seaAirBaseData(),
// 状态
statusLabel: "",
channelList:[] , // 渠道
};
},
computed: {
// 渠道用id做键值
keyedChannel(){
return arrryToKeyedObjectBy(this.channelList, 'channelId')
},
// 根据渠道id获取渠道名
channelName(){
return id => {
return this.keyedChannel[id] ? this.keyedChannel[id].nameZh : null
}
},
},
created() {
this.getBoxInfo();
// 仓库
getWarehouseList().then((r) => {
this.warehouseList = r.data;
});
// 供应商
getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allSupplier = data.list.map((item) => {
if (item.companyType) {
item.companyTypes = item.companyType.split(",");
}
return item;
});
});
// 码头
getDockPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allDocks = data.list;
});
// 用户
listUser({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allUsers = data.list ?? [];
});
getChannelList().then(res => this.channelList = res.data)
},
methods: {
/* 获取仓库 */
importCityName(id) {
var arr = this.warehouseList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : "";
},
// 出货
getBoxInfo() {
getbox(this.shipmentId).then((res) => {
const { data } = res;
this.shipmentObj = data ?? {};
});
},
},
watch: {
/* 监听发货对象 */
shipmentObj(val) {
this.statusLabel = getStatusName(getSeaStatus(val));
},
},
};
</script>
<style lang="scss">
// 海运操作统一弹窗样式
.shipping-dialog {
.el-dialog__body {
height: calc(100% - 54px);
> :first-child {
height: 100%;
}
}
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
padding-top: 10px;
text-align: center;
}
.two-element {
.el-form-item__content {
display: flex;
> :last-child {
margin-left: 10px;
}
}
}
}
</style>
<template> <template>
<el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('佣金规则申请')"> <el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('佣金规则申请')">
<el-form ref="form" :model="form" label-width="80px" :rules="rules"> <el-form ref="form" :model="form" label-width="80px" :rules="rules" :disabled="!!form.applyStatus">
<el-form-item :label="$t('商品类型')"> <el-form-item :label="$t('商品类型')">
<span>{{ getProductAttrNameById(form.productType) }}</span> <span>{{ getProductTypeNameById(form.productType) }}</span>
</el-form-item> </el-form-item>
<el-form-item :label="$t('商品名称')"> <el-form-item :label="$t('商品名称')">
<span>{{ form.prodTitleZh }}</span> <span>{{ form.prodTitleZh }}</span>
...@@ -66,9 +66,10 @@ ...@@ -66,9 +66,10 @@
<div v-if="form.commissionType == 1 || form.commissionType == 3">销售价:{{form.orgSeaFreight + form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div> <div v-if="form.commissionType == 1 || form.commissionType == 3">销售价:{{form.orgSeaFreight + form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
<div v-if="form.commissionType == 3">实际佣金返点:{{form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div> <div v-if="form.commissionType == 3">实际佣金返点:{{form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
</div> </div>
<div class="page-title">审批流程</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
</el-form> </el-form>
<div class="page-title">审批流程</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
<div v-if="!form.applyStatus"> <div v-if="!form.applyStatus">
<el-button type="primary" @click="handleSubmit">提交</el-button> <el-button type="primary" @click="handleSubmit">提交</el-button>
...@@ -88,7 +89,7 @@ import DictSelector from "@/components/DictSelector" ...@@ -88,7 +89,7 @@ import DictSelector from "@/components/DictSelector"
import {getUnitList} from "@/api/ecw/unit" import {getUnitList} from "@/api/ecw/unit"
import {getChannelList} from "@/api/ecw/channel" import {getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency' import { getCurrencyList } from '@/api/ecw/currency'
import { getProductAttrList } from '@/api/ecw/productAttr' import { getProductTypeList } from '@/api/ecw/productType'
import WorkFlow from '@/components/WorkFlow' import WorkFlow from '@/components/WorkFlow'
import {getDarkReturnCommission} from '@/api/ecw/customerCommission' import {getDarkReturnCommission} from '@/api/ecw/customerCommission'
export default { export default {
...@@ -109,7 +110,7 @@ export default { ...@@ -109,7 +110,7 @@ export default {
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
getChannelList().then(res => this.channelList = res.data) getChannelList().then(res => this.channelList = res.data)
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getProductAttrList().then(res => this.productAttrList = res.data) getProductTypeList().then(res => this.productTypeList = res.data)
}, },
data() { data() {
...@@ -119,7 +120,7 @@ export default { ...@@ -119,7 +120,7 @@ export default {
unitList:[], unitList:[],
channelList:[], channelList:[],
currencyList:[], currencyList:[],
productAttrList:[], productTypeList:[],
ccIdArr: [], ccIdArr: [],
form: { form: {
type: 2 type: 2
...@@ -157,9 +158,12 @@ export default { ...@@ -157,9 +158,12 @@ export default {
ccIdArr(){ ccIdArr(){
this.$set(this.form, 'ccIds', this.ccIdArr.join(',')) this.$set(this.form, 'ccIds', this.ccIdArr.join(','))
}, },
'form.commissionType'(val){ 'form.commissionType'(val, old){
this.$set(this.form, 'lightCommissionAmount', 0) if(typeof old !='undefined' && old != val){
this.$set(this.form, 'shadeCommissionAmount', 0) this.$set(this.form, 'lightCommissionAmount', 0)
this.$set(this.form, 'shadeCommissionAmount', 0)
}
// 暗佣需要查询暗佣设置 // 暗佣需要查询暗佣设置
if(val == 2){ if(val == 2){
...@@ -185,8 +189,8 @@ export default { ...@@ -185,8 +189,8 @@ export default {
this.form = r.data this.form = r.data
}) })
}, },
getProductAttrNameById(id){ getProductTypeNameById(id){
return this.productAttrList.find(e => e.id === id)?.attrName || '' return this.$l(this.productTypeList.find(e => e.id === id), 'title')
}, },
closeDialog(){ closeDialog(){
this.$emit('close') this.$emit('close')
...@@ -199,7 +203,7 @@ export default { ...@@ -199,7 +203,7 @@ export default {
darkUnit: this.form.orgSeaFreightVolume, darkUnit: this.form.orgSeaFreightVolume,
departureId: this.offer.departureId, departureId: this.offer.departureId,
objectiveId: this.offer.objectiveId, objectiveId: this.offer.objectiveId,
productAttr: 3, //this.offerProd.prodAttrIds, productAttr: this.offerProd.prodAttrIds.split(',').filter(item => item && item != ''),
productType: this.offerProd.productType, productType: this.offerProd.productType,
transportId: this.offer.transportId, transportId: this.offer.transportId,
type: 2, // 暗佣 type: 2, // 暗佣
......
<template> <template>
<el-descriptions border :column="1"> <el-descriptions border :column="3" v-if="offer">
<el-descriptions-item label="商品类型">{{ form.productType }}</el-descriptions-item> <el-descriptions-item label="报价单号">{{offer.number}}</el-descriptions-item>
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="offer.transportId" />
</el-descriptions-item>
<el-descriptions-item label="出货方式">
{{ channel ? $l(channel, 'name') : '/' }}
</el-descriptions-item>
<el-descriptions-item label="报价单状态">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="offer.status" />
</el-descriptions-item>
<el-descriptions-item label="唛头">{{offer.marks}}</el-descriptions-item>
<el-descriptions-item label="始发仓">{{form.departureName}}</el-descriptions-item>
<el-descriptions-item label="目的仓">{{form.objectiveName}}</el-descriptions-item>
<el-descriptions-item label="申请原因" :span="3" v-if="type == 2">
<div class="item">
商品:{{$l(form, 'prodTitle')}}
</div>
<div class="item">
佣金规则:{{$t('从【{oldType}】改为【{newType}', {
oldType: getDictDataLabel(DICT_TYPE.COMMISSION_TYPE, offer.commissionType) ,
newType: getDictDataLabel(DICT_TYPE.COMMISSION_TYPE, form.commissionType),
})}}
</div>
<div>
原运费:{{form.seaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
新运费:{{newSeaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
成本价:{{form.orgSeaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
明佣:{{ form.lightCommissionAmount + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
<div>
暗佣:{{form.shadeCommissionAmount + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
</div>
</el-descriptions-item>
<el-descriptions-item label="申请原因" :span="3" v-if="type == 1">
<div class="item">
商品:{{$l(form, 'prodTitle')}}
</div>
<div>
原运费:{{form.orgSeaFreight + currentMap[form.seaFreight] + '/' + unitMap[form.seaFreight]}}
原清关费:{{form.orgClearanceFreight + currentMap[form.clearanceFreightCurrency] + '/' + unitMap[form.clearanceFreightVolume]}}
</div>
<div>
新运费:{{seaFreight + currentMap[form.orgSeaFreightCurrency] + '/' + unitMap[form.orgSeaFreightVolume]}}
新清关费:{{form.clearanceFreight + currentMap[form.clearanceFreightCurrency] + '/' + unitMap[form.clearanceFreightVolume]}}
</div>
</el-descriptions-item>
<!--
<el-descriptions-item label="商品类型">{{ $l(productType, 'title') }}</el-descriptions-item>
<el-descriptions-item label="商品名称">{{ form.prodTitleZh }}</el-descriptions-item> <el-descriptions-item label="商品名称">{{ form.prodTitleZh }}</el-descriptions-item>
<el-descriptions-item label="英文名称">{{ form.prodTitleEn }}</el-descriptions-item> <el-descriptions-item label="英文名称">{{ form.prodTitleEn }}</el-descriptions-item>
<el-descriptions-item label="线路"> <el-descriptions-item label="线路">
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${form.departureName}】发往【${form.objectiveName}】`}} <dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="form.transportId" />
<template v-if="channel">
{{ $l(channel, 'name') }}
</template>
{{$t("从【{start}】发往【{dest}", { start: form.departureName, dest: form.objectiveName })}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="是否预付">{{ form.isPayAdvance === 0 ? '' : '' }}</el-descriptions-item> <el-descriptions-item label="是否预付">
<el-descriptions-item label="旧运费">{{ form.orgSeaFreight }} {{ currentMap[form.orgSeaFreightCurrency] }}/{{ unitMap[form.orgSeaFreightVolume] }}</el-descriptions-item> <dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="form.isPayAdvance" />
</el-descriptions-item> -->
<!-- <el-descriptions-item label="旧运费">{{ form.orgSeaFreight }} {{ currentMap[form.orgSeaFreightCurrency] }}/{{ unitMap[form.orgSeaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="旧清关费">{{ form.orgClearanceFreight }} {{ currentMap[form.orgClearanceFreightCurrency] }}/{{ unitMap[form.orgClearanceFreightVolume] }}</el-descriptions-item> <el-descriptions-item label="旧清关费">{{ form.orgClearanceFreight }} {{ currentMap[form.orgClearanceFreightCurrency] }}/{{ unitMap[form.orgClearanceFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新运费">{{ form.seaFreight }} {{ currentMap[form.seaFreightCurrency] }}/{{ unitMap[form.seaFreightVolume] }}</el-descriptions-item> <el-descriptions-item label="新运费">{{ form.seaFreight }} {{ currentMap[form.seaFreightCurrency] }}/{{ unitMap[form.seaFreightVolume] }}</el-descriptions-item>
<el-descriptions-item label="新清关费">{{ form.clearanceFreight }} {{ currentMap[form.clearanceFreightCurrency] }}/{{ unitMap[form.clearanceFreightVolume] }}</el-descriptions-item> <el-descriptions-item label="新清关费">{{ form.clearanceFreight }} {{ currentMap[form.clearanceFreightCurrency] }}/{{ unitMap[form.clearanceFreightVolume] }}</el-descriptions-item> -->
</el-descriptions> </el-descriptions>
</template> </template>
<script> <script>
import {createOfferSpecial, getOfferSpecial, getOfferSpecialByApproveId} from "@/api/ecw/offer" import {getOfferSpecialByApproveId, getOffer} from "@/api/ecw/offer"
import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
import {getUnitList} from "@/api/ecw/unit" import {getUnitList} from "@/api/ecw/unit"
import {getChannelList} from "@/api/ecw/channel" import {getChannel} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency' import { getCurrencyList } from '@/api/ecw/currency'
import { getProductAttrList } from '@/api/ecw/productAttr' import {getProductType} from '@/api/ecw/productType'
import Decimal from 'decimal.js'
export default { export default {
name: "specialDetail", name: "SpecialDetail",
props: { props: {
offerProdId: Number,
id: [String, Number], id: [String, Number],
readonly: { type: Number, // 类型,1特价,2佣金
type: Boolean,
default: false
}
}, },
created() { created() {
// 从流程查看详情 // 从流程查看详情
...@@ -38,84 +97,60 @@ export default { ...@@ -38,84 +97,60 @@ export default {
this.getOfferSpecialByApproveId() this.getOfferSpecialByApproveId()
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
getChannelList().then(res => this.channelList = res.data)
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getProductAttrList().then(res => this.productAttrList = res.data)
}, },
data() { data() {
return { return {
getDictDataLabel,
DICT_TYPE,
unitList:[], unitList:[],
channelList:[], channelList:[],
currencyList:[], currencyList:[],
productAttrList:[], productType: null,
ccIdArr: [], channel: null,
form: { offer: null,
type: 1 form:{}
},
rules:{
seaFreight : {required: true, message: '运费不能为空'},
clearanceFreight: {required: true, message: '清关费不能为空'}
}
}
},
watch:{
ccIdArr(){
this.$set(this.form, 'ccIds', this.ccIdArr.join(','))
}
},
methods: {
handleSubmit(){
this.$refs.form.validate().then(res => {
console.log(this.form.type)
createOfferSpecial(Object.assign({}, this.form, {type: 1})).then(res => {
this.$message.success(r.msg || '提交成功')
})
})
},
getOfferSpecial(){
getOfferSpecial(this.offerProdId, {type: 1}).then(r => {
this.form = r.data
})
},
getOfferSpecialByApproveId(){
getOfferSpecialByApproveId(this.id).then(r => {
this.form = r.data
})
},
getProductAttrNameById(id){
return this.productAttrList.find(e => e.id === id)?.attrName || ''
} }
}, },
computed: { computed: {
// 根据渠道id显示渠道名
getChannelNameById(){
return channelId => {
const s = this.channelList.find(item => item.channelId == channelId) ?. nameZh
return s ? '' + s + '' : ''
}
},
currentMap(){ currentMap(){
let map = {} let map = {}
this.currencyList.forEach(item => { this.currencyList.forEach(item => {
map[item.id] = item.titleZh map[item.id] = this.$l(item, 'title')
}) })
return map return map
}, },
unitMap(){ unitMap(){
let map = {} let map = {}
this.unitList.forEach(item => { this.unitList.forEach(item => {
map[item.id] = item.titleZh map[item.id] = this.$l(item, 'title')
}) })
return map return map
},
// 新运费
newSeaFreight(){
return Decimal(this.form.seaFreight).plus(this.form.shadeCommissionAmount).plus(this.form.lightCommissionAmount)
}
},
methods: {
getOfferSpecialByApproveId(){
getOfferSpecialByApproveId(this.id).then(r => {
this.form = r.data
getOffer(this.form.offerId).then(res => {
this.offer = res.data
})
if(this.form.productType){
getProductType(this.form.productType).then(res => {
this.productType = res.data
})
}
if(this.form.channelId){
getChannel(this.form.channelId).then(res => {
this.channel = res.data
})
}
})
} }
} },
} }
</script> </script>
\ No newline at end of file
<style scoped>
</style>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('优惠申请')"> <el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('优惠申请')">
<el-form ref="form" :model="form" label-width="80px" :rules="rules"> <el-form ref="form" :model="form" label-width="80px" :rules="rules">
<el-form-item :label="$t('商品类型')"> <el-form-item :label="$t('商品类型')">
<span>{{ getProductAttrNameById(form.productType) }}</span> <span>{{ getProductTypeNameById(form.productType) }}</span>
</el-form-item> </el-form-item>
<el-form-item :label="$t('商品名称')"> <el-form-item :label="$t('商品名称')">
<span>{{ form.prodTitleZh }}</span> <span>{{ form.prodTitleZh }}</span>
...@@ -73,7 +73,7 @@ import DictSelector from "@/components/DictSelector" ...@@ -73,7 +73,7 @@ import DictSelector from "@/components/DictSelector"
import {getUnitList} from "@/api/ecw/unit" import {getUnitList} from "@/api/ecw/unit"
import {getChannelList} from "@/api/ecw/channel" import {getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency' import { getCurrencyList } from '@/api/ecw/currency'
import { getProductAttrList } from '@/api/ecw/productAttr' import { getProductTypeList } from '@/api/ecw/productType'
import WorkFlow from '@/components/WorkFlow' import WorkFlow from '@/components/WorkFlow'
export default { export default {
name: "specialDiscount", name: "specialDiscount",
...@@ -92,7 +92,7 @@ export default { ...@@ -92,7 +92,7 @@ export default {
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
getChannelList().then(res => this.channelList = res.data) getChannelList().then(res => this.channelList = res.data)
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getProductAttrList().then(res => this.productAttrList = res.data) getProductTypeList().then(res => this.productTypeList = res.data)
}, },
data() { data() {
...@@ -102,7 +102,7 @@ export default { ...@@ -102,7 +102,7 @@ export default {
unitList:[], unitList:[],
channelList:[], channelList:[],
currencyList:[], currencyList:[],
productAttrList:[], productTypeList:[],
ccIdArr: [], ccIdArr: [],
form: { form: {
type: 1 type: 1
...@@ -132,8 +132,8 @@ export default { ...@@ -132,8 +132,8 @@ export default {
this.form = r.data this.form = r.data
}) })
}, },
getProductAttrNameById(id){ getProductTypeNameById(id){
return this.productAttrList.find(e => e.id === id)?.attrName || '' return this.$l(this.productTypeList.find(e => e.id === id), 'title')
}, },
closeDialog(){ closeDialog(){
this.$emit('close') this.$emit('close')
......
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
<el-dropdown-item @click.native="$router.push('edit?id=' + scope.row.offerId)" v-if="[1,2,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('编辑')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('edit?id=' + scope.row.offerId)" v-if="[1,2,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('logList?offerId=' + scope.row.offerId)" v-if="[1,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('跟进')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('logList?offerId=' + scope.row.offerId)" v-if="[1,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('跟进')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)" v-if="[3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)" v-if="[3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('/offer/special?offerId=' + scope.row.offerId)" v-if="[3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('/offer/special?offerId=' + scope.row.offerId)" v-if="[1,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-dropdown-item>
<el-dropdown-item @click.native="cancel(scope.row.offerId)" v-if="[1,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-dropdown-item> <el-dropdown-item @click.native="cancel(scope.row.offerId)" v-if="[1,3,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-dropdown-item>
<el-dropdown-item @click.native="recovery(scope.row.offerId)" v-if="[0].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-dropdown-item> <el-dropdown-item @click.native="recovery(scope.row.offerId)" v-if="[0].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-dropdown-item>
<el-dropdown-item @click.native="deleteOffer(scope.row.offerId)" v-if="[0,1,2,3,4,5,6,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-dropdown-item> <el-dropdown-item @click.native="deleteOffer(scope.row.offerId)" v-if="[0,1,2,3,4,5,6,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-dropdown-item>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-form inline label-width="85px" label-position="left"> <el-form inline label-width="85px" label-position="left">
<el-form-item label="订单号"> <el-form-item label="订单号">
<div class="content"> <div class="content">
<el-input v-model="relateOrderId"></el-input> <el-input v-model.trim="params.relateOrderNo"></el-input>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -49,6 +49,8 @@ ...@@ -49,6 +49,8 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="params.page" :limit.sync="params.rows"
@pagination="getUnassociatedOrder" />
<el-row style="margin-top: 40px"> <el-row style="margin-top: 40px">
<el-col> <el-col>
<el-button type="primary" @click="batchJoin(multipleSelection.map(e => e.orderId))" <el-button type="primary" @click="batchJoin(multipleSelection.map(e => e.orderId))"
...@@ -78,9 +80,13 @@ export default { ...@@ -78,9 +80,13 @@ export default {
data() { data() {
return { return {
orderDetails: {}, orderDetails: {},
relateOrderId: '',
list: [], list: [],
multipleSelection: [], multipleSelection: [],
params:{
page:1,
rows:10
},
total:0
} }
}, },
created() { created() {
...@@ -96,11 +102,12 @@ export default { ...@@ -96,11 +102,12 @@ export default {
methods: { methods: {
getUnassociatedOrder() { getUnassociatedOrder() {
getUnGuanlianOrderByOrderId({ getUnGuanlianOrderByOrderId({
orderId: this.orderId, orderId: this.orderId,
relateOrderId: this.relateOrderId ? this.relateOrderId : 0 ...this.params
}).then(r => { }).then(r => {
if (r.code === 0) { if (r.code === 0) {
this.list = r.data this.list = r.data.list;
this.total = r.data.total;
} }
}) })
}, },
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<el-divider></el-divider> <el-divider></el-divider>
<el-form inline label-width="100px"> <el-form inline label-width="100px">
<el-form-item label="订单号"><div class="content"> <el-form-item label="订单号"><div class="content">
<el-input v-model="params.relateOrderId"></el-input> <el-input v-model.trim="params.relateOrderNo"></el-input>
</div></el-form-item> </div></el-form-item>
<el-form-item><div class="content"> <el-form-item><div class="content">
<el-button @click="getList">查询</el-button> <el-button @click="getList">查询</el-button>
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
</el-table-column> </el-table-column>
<el-table-column label="操作人" prop="creator"> <el-table-column label="操作人" prop="creator">
<template v-slot="{row}"> <template v-slot="{row}">
{{userList.find( i => row.creator == i.id).nickname}} {{(userList.find( i => row.creator == i.id) || {}).nickname}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作时间"> <el-table-column label="操作时间">
...@@ -75,6 +75,8 @@ ...@@ -75,6 +75,8 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="params.page" :limit.sync="params.rows"
@pagination="getList" />
</div> </div>
</template> </template>
...@@ -114,13 +116,16 @@ export default { ...@@ -114,13 +116,16 @@ export default {
orderDetails:{}, orderDetails:{},
params:{ params:{
orderId:undefined, orderId:undefined,
relateOrderId:undefined relateOrderNo:undefined,
page:1,
rows:10
}, },
list:[], list:[],
DICT_TYPE, DICT_TYPE,
getDictDatas, getDictDatas,
multipleSelection:[], multipleSelection:[],
userList:[] userList:[],
total:0,
} }
}, },
created() { created() {
...@@ -137,7 +142,8 @@ export default { ...@@ -137,7 +142,8 @@ export default {
getList(){ getList(){
guanlianList(this.params).then(r => { guanlianList(this.params).then(r => {
if(r.code === 0){ if(r.code === 0){
this.list = r.data this.list = r.data.list;
this.total = r.data.total;
} }
}) })
}, },
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
{{ row.consignorName }} {{ row.consignorName }}
</p> </p>
<p> <p>
{{row.consignorPhone}} +{{row.consignorCountryCode}}{{row.consignorPhone}}
</p> </p>
</div> </div>
</div> </div>
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
{{ row.consigneeName }} {{ row.consigneeName }}
</p> </p>
<p> <p>
{{ row.consigneePhone}} +{{row.consigneeCountryCode}}{{ row.consigneePhone}}
</p> </p>
</div> </div>
</template> </template>
......
...@@ -116,13 +116,13 @@ ...@@ -116,13 +116,13 @@
<template v-if="scope.row.cargoControlStatus == 2"> <template v-if="scope.row.cargoControlStatus == 2">
<el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('修改')}}</el-button> <el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('修改')}}</el-button>
<el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('取消')}}</el-button> <el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('取消')}}</el-button>
<el-button type="text" size="mini" @click="review(scope.row)" >{{$t('放货复核')}}</el-button> <el-button type="text" size="mini" @click="review(scope.row)" v-if="scope.row.isToReview">{{$t('放货复核')}}</el-button>
</template> </template>
<!--已完成放货--> <!--已完成放货-->
<template v-if="scope.row.cargoControlStatus == 1"> <template v-if="scope.row.cargoControlStatus == 1">
<el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('查看')}}</el-button> <el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('查看')}}</el-button>
<el-button type="text" size="mini" @click="showTransferCargoOrderId=scope.row.orderId" >{{$t('调货')}}</el-button> <el-button type="text" size="mini" @click="showTransferCargoOrderId=scope.row.orderId" >{{$t('调货')}}</el-button>
<el-button type="text" size="mini" @click="showFallbackOrder=scope.row">{{$t('反复核')}}</el-button> <el-button type="text" size="mini" @click="showFallbackOrder=scope.row" v-if="scope.row.isReleaseAfterGoods">{{$t('反复核')}}</el-button>
</template> </template>
<!-- <el-button type="text" size="mini" >取消</el-button> <!-- <el-button type="text" size="mini" >取消</el-button>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('收货人电话')" prop="field103"> <el-form-item :label="$t('收货人电话')" prop="field103">
{{info.consigneePhone}} +{{info.consigneeCountryCode}} {{info.consigneePhone}}
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货手机号')" prop="field106"> <el-form-item :label="$t('控货手机号')" prop="field106">
{{info.phone}} +{{info.countryCode}} {{info.phone}}
</el-form-item> </el-form-item>
<el-form-item :label="$t('手机验证码')" prop="field106"> <el-form-item :label="$t('手机验证码')" prop="field106">
<el-input v-model="formData.code" placeholder="" style="width: 100px; margin-right:10px"></el-input> <el-input v-model="formData.code" placeholder="" style="width: 100px; margin-right:10px"></el-input>
......
...@@ -47,13 +47,15 @@ ...@@ -47,13 +47,15 @@
<el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable class="w-150" ></el-input> <el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable class="w-150" ></el-input>
</el-form-item> </el-form-item>
</div> </div>
<el-table :data="[formData]" border> <el-table :data="[formData]" border class="release-table">
<el-table-column :label="$t('控货箱数')"> <el-table-column :label="$t('控货箱数')">
{{detail.sumNum}} {{detail.sumNum}}
</el-table-column> </el-table-column>
<el-table-column :label="$t('放货箱数')"> <el-table-column :label="$t('放货箱数')">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input> <el-form-item prop="pickNum" label-width="0" class="mb-0">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('体积') + '(m³)'"> <el-table-column :label="$t('体积') + '(m³)'">
...@@ -73,7 +75,7 @@ ...@@ -73,7 +75,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px"> <el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px">
<el-input :value="detail.phone" readonly :placeholder="$t('请输入控货手机号')" > <el-input :value="'+' + detail.dialCode + detail.phone" readonly :placeholder="$t('请输入控货手机号')" >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('手机验证码')" prop="code"> <el-form-item :label="$t('手机验证码')" prop="code">
...@@ -120,14 +122,22 @@ export default { ...@@ -120,14 +122,22 @@ export default {
"pickWeight": 0, "pickWeight": 0,
"remarks": "", "remarks": "",
}, },
rules:{
consigneeName: {required: true, message: this.$t('请填写收货人')},
code: {required: true, message: '请填写验证码'}
},
agreement: false, // 是否同意协议 agreement: false, // 是否同意协议
} }
}, },
computed:{ computed:{
rules(){
return {
consigneeName: {required: true, message: this.$t('请填写收货人')},
code: {required: true, message: '请填写验证码'},
pickNum: {
type: 'number',
max: this.detail.sumNum - this.detail.releaseNum,
message: "不能超过剩余箱数",
trigger: 'change'
}
}
},
title(){ title(){
let t = this.$t('放货') let t = this.$t('放货')
if(this.detail){ if(this.detail){
...@@ -159,7 +169,6 @@ export default { ...@@ -159,7 +169,6 @@ export default {
if(!valid){ if(!valid){
return false return false
} }
console.log('submit')
createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => { createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => {
this.$message.success(res.msg || this.$t('操作成功')) this.$message.success(res.msg || this.$t('操作成功'))
this.show = false this.show = false
...@@ -186,4 +195,7 @@ export default { ...@@ -186,4 +195,7 @@ export default {
margin-right:10px; margin-right:10px;
} }
} }
::v-deep .release-table .el-form-item__error{
position: static;
}
</style> </style>
\ No newline at end of file
...@@ -17,11 +17,11 @@ ...@@ -17,11 +17,11 @@
<el-descriptions-item label="目的地">{{details.logisticsInfoDto ? details.logisticsInfoDto.destTitleZh : ''}}</el-descriptions-item> <el-descriptions-item label="目的地">{{details.logisticsInfoDto ? details.logisticsInfoDto.destTitleZh : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{details.consignorVO ? details.consignorVO.name : ''}}</el-descriptions-item> <el-descriptions-item label="发货人姓名">{{details.consignorVO ? details.consignorVO.name : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{details.consignorVO ? details.consignorVO.company : ''}}</el-descriptions-item> <el-descriptions-item label="发货人公司">{{details.consignorVO ? details.consignorVO.company : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{details.consignorVO ? details.consignorVO.countryCode : ''}} {{details.consignorVO ? details.consignorVO.phone : ''}}</el-descriptions-item> <el-descriptions-item label="发货人电话">+{{details.consignorVO ? details.consignorVO.countryCode : ''}} {{details.consignorVO ? details.consignorVO.phone : ''}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{details.consigneeVO ? details.consigneeVO.name :''}}</el-descriptions-item> <el-descriptions-item label="收货人姓名">{{details.consigneeVO ? details.consigneeVO.name :''}}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{details.consigneeVO ? details.consigneeVO.company :''}}</el-descriptions-item> <el-descriptions-item label="收货人公司">{{details.consigneeVO ? details.consigneeVO.company :''}}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{details.consigneeVO ? details.consigneeVO.countryCode :''}} {{details.consigneeVO ? details.consigneeVO.phone :''}}</el-descriptions-item> <el-descriptions-item label="收货人电话"> +{{details.consigneeVO ? details.consigneeVO.countryCode :''}} {{details.consigneeVO ? details.consigneeVO.phone :''}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
......
...@@ -59,8 +59,8 @@ ...@@ -59,8 +59,8 @@
<p> <p>
{{row.consignorName}} {{row.consignorName}}
</p> </p>
<p> <p style="white-space: nowrap">
{{row.consignorCountryCode}} {{row.consignorPhone}} +{{row.consignorCountryCode}} {{row.consignorPhone}}
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
...@@ -69,8 +69,8 @@ ...@@ -69,8 +69,8 @@
<p> <p>
{{row.consigneeName}} {{row.consigneeName}}
</p> </p>
<p> <p style="white-space: nowrap">
{{row.consigneeCountryCode}} {{row.consigneePhone}} +{{row.consigneeCountryCode}} {{row.consigneePhone}}
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -988,6 +988,9 @@ export default { ...@@ -988,6 +988,9 @@ export default {
prodConditionParamList: this.getProductListWithDefaultValue() prodConditionParamList: this.getProductListWithDefaultValue()
}).then(res => { }).then(res => {
this.$set(this, 'fee', res.data.costDto) this.$set(this, 'fee', res.data.costDto)
this.form.orderItemVOList.map((item, index) => {
this.$set(item, 'fee', res.data.prodCostDtoList[index] || null)
})
}).finally(() => { }).finally(() => {
this.calculating = false this.calculating = false
}) })
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<el-divider></el-divider> <el-divider></el-divider>
<el-form inline label-width="100px"> <el-form inline label-width="100px">
<el-form-item label="订单号"><div class="content"> <el-form-item label="订单号"><div class="content">
<el-input v-model="params.relateOrderId"></el-input> <el-input v-model.trim="params.relateOrderNo"></el-input>
</div></el-form-item> </div></el-form-item>
<el-form-item><div class="content"> <el-form-item><div class="content">
<el-button @click="getList">查询</el-button> <el-button @click="getList">查询</el-button>
...@@ -75,6 +75,8 @@ ...@@ -75,6 +75,8 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="params.page" :limit.sync="params.rows"
@pagination="getList" />
</div> </div>
</template> </template>
...@@ -104,8 +106,10 @@ export default { ...@@ -104,8 +106,10 @@ export default {
orderDetails:{}, orderDetails:{},
params:{ params:{
orderId:undefined, orderId:undefined,
mutualOrderId:undefined page:1,
rows:10,
}, },
total:0,
list:[], list:[],
DICT_TYPE, DICT_TYPE,
getDictDatas, getDictDatas,
...@@ -127,7 +131,8 @@ export default { ...@@ -127,7 +131,8 @@ export default {
getList(){ getList(){
guanlianList(this.params).then(r => { guanlianList(this.params).then(r => {
if(r.code === 0){ if(r.code === 0){
this.list = r.data this.list = r.data.list;
this.total = r.data.total;
} }
}) })
}, },
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<el-form inline label-width="85px" label-position="left"> <el-form inline label-width="85px" label-position="left">
<el-form-item label="订单号"> <el-form-item label="订单号">
<div class="content"> <div class="content">
<el-input v-model="mutualOrderId"></el-input> <el-input v-model.trim="params.relateOrderNo"></el-input>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
...@@ -53,6 +53,8 @@ ...@@ -53,6 +53,8 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="params.page" :limit.sync="params.rows"
@pagination="getUnassociatedOrder" />
<el-row style="margin-top: 40px"> <el-row style="margin-top: 40px">
<el-col> <el-col>
<el-button type="primary" @click="batchJoin(multipleSelection.map(e => e.orderId))" <el-button type="primary" @click="batchJoin(multipleSelection.map(e => e.orderId))"
...@@ -85,6 +87,11 @@ export default { ...@@ -85,6 +87,11 @@ export default {
mutualOrderId: '', mutualOrderId: '',
list: [], list: [],
multipleSelection: [], multipleSelection: [],
total:0,
params:{
page:1,
rows:10,
}
} }
}, },
created() { created() {
...@@ -101,11 +108,11 @@ export default { ...@@ -101,11 +108,11 @@ export default {
getUnassociatedOrder() { getUnassociatedOrder() {
getUnGuanlianOrderByOrderId({ getUnGuanlianOrderByOrderId({
orderId: this.orderId, orderId: this.orderId,
mutualOrderId: this.mutualOrderId ? this.mutualOrderId : 0 ...this.params,
}).then(r => { }).then(r => {
if (r.code === 0) { if (r.code === 0) {
this.list = r.data this.list = r.data.list;
console.log(this.list[0]) this.total = r.data.total;
} }
}) })
}, },
......
...@@ -38,12 +38,16 @@ ...@@ -38,12 +38,16 @@
<el-table-column label="真实姓名" align="center" prop="identityName" /> <el-table-column label="真实姓名" align="center" prop="identityName" />
<el-table-column label="区号"> <el-table-column label="区号">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
{{scope.row.areaCode ? `${scope.row.areaCode}`:''}} +{{scope.row.areaCode ? `${scope.row.areaCode}`:''}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="手机号" show-overflow-tooltip align="center" prop="mobile" > <el-table-column label="手机号" show-overflow-tooltip align="center" prop="mobile" >
</el-table-column> </el-table-column>
<el-table-column label="成交" align="center" prop="" show-overflow-tooltip /> <el-table-column label="成交" align="center" prop="customerStatus" show-overflow-tooltip >
<template v-slot="{row}">
{{row.customerStatus === 3 ? '成交' : '非成交'}}
</template>
</el-table-column>
<el-table-column label="认证" align="center" :formatter="authentication" /> <el-table-column label="认证" align="center" :formatter="authentication" />
<el-table-column label="状态" align="center" prop="status" > <el-table-column label="状态" align="center" prop="status" >
<template slot-scope="scope"> <template slot-scope="scope">
......
...@@ -36,12 +36,16 @@ ...@@ -36,12 +36,16 @@
<el-table-column label="真实姓名" align="center" prop="identityName" /> <el-table-column label="真实姓名" align="center" prop="identityName" />
<el-table-column label="区号"> <el-table-column label="区号">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
{{scope.row.areaCode ? `${scope.row.areaCode}`:''}} +{{scope.row.areaCode ? `${scope.row.areaCode}`:''}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="手机号" show-overflow-tooltip align="center" prop="mobile" > <el-table-column label="手机号" show-overflow-tooltip align="center" prop="mobile" >
</el-table-column> </el-table-column>
<el-table-column label="成交" align="center" prop="" show-overflow-tooltip /> <el-table-column label="成交" align="center" prop="" show-overflow-tooltip >
<template v-slot="{row}">
{{row.customerStatus === 3 ? '成交' : '非成交'}}
</template>
</el-table-column>
<el-table-column label="认证" align="center" :formatter="authentication" /> <el-table-column label="认证" align="center" :formatter="authentication" />
<el-table-column label="状态" align="center" prop="status" > <el-table-column label="状态" align="center" prop="status" >
<template slot-scope="scope"> <template slot-scope="scope">
......
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