Commit 1df20f6a authored by 我在何方's avatar 我在何方
parents 50fe2f07 275abef7
...@@ -610,6 +610,20 @@ export function boxUpdate(data) { ...@@ -610,6 +610,20 @@ export function boxUpdate(data) {
}); });
} }
/**
* 拆单审核
*
* @param {*} params
* @returns
*/
export function createApproval(data) {
return request({
url: "/ecw/box-approval/create",
method: "post",
data,
});
}
/***************************** 装柜 end **********************************/ /***************************** 装柜 end **********************************/
/***************************** 卸柜 start **********************************/ /***************************** 卸柜 start **********************************/
......
...@@ -40,10 +40,6 @@ export default { ...@@ -40,10 +40,6 @@ export default {
type: [Function, String], type: [Function, String],
default: String default: String
}, },
/* forceString: {
type: Boolean,
default: true
}, */
defaultable: Boolean, // 是否默认选择第一个 defaultable: Boolean, // 是否默认选择第一个
disabled: Boolean, disabled: Boolean,
/** /**
...@@ -80,11 +76,10 @@ export default { ...@@ -80,11 +76,10 @@ export default {
}, },
watch:{ watch:{
valueSync(val){ valueSync(val){
//this.$emit('input', this.forceString ? String(this.valueSync) : this.valueSync) this.$emit('input', val)
this.$emit('input', this.format(val))
}, },
value(val){ value(val){
this.setValueSync() if(val != this.valueSync)this.setValueSync()
}, },
dictList(){ dictList(){
this.setDefault() this.setDefault()
...@@ -96,7 +91,7 @@ export default { ...@@ -96,7 +91,7 @@ export default {
}, },
methods:{ methods:{
format(val){ format(val){
if(val === null || val == undefined) return val if(val === null || val == undefined || val == '') return val
let formatter = typeof this.formatter == 'function' ? this.formatter : FORMATTERS[this.formatter] let formatter = typeof this.formatter == 'function' ? this.formatter : FORMATTERS[this.formatter]
if(!formatter){ if(!formatter){
console.warn('格式器无效', this.formatter) console.warn('格式器无效', this.formatter)
...@@ -108,7 +103,9 @@ export default { ...@@ -108,7 +103,9 @@ export default {
this.valueSync = val this.valueSync = val
}, },
setValueSync(){ setValueSync(){
if(this.value === null || this.value === undefined || this.value === '') return if(this.value === null || this.value === undefined || this.value === ''){
return this.valueSync = this.multiple ? [] : this.value
}
if(this.multiple){ if(this.multiple){
let value = [] let value = []
if(typeof this.value == 'string'){ if(typeof this.value == 'string'){
...@@ -118,17 +115,13 @@ export default { ...@@ -118,17 +115,13 @@ export default {
}else{ }else{
this.valueSync = this.format(this.value) this.valueSync = this.format(this.value)
} }
/* if(this.forceString && this.multiple){
this.valueSync = this.value.split(',')
}else this.valueSync = this.forceString ? String(this.value) : this.value */
}, },
getList(){ getList(){
return this.getDictDatas(this.type) return this.getDictDatas(this.type)
}, },
setDefault(){ setDefault(){
if(!this.defaultable) return if(!this.defaultable) return
if(this.dictList.length && (this.valueSync === null || this.valueSync == '')){ if(this.dictList.length && (this.valueSync === null || this.valueSync == undefined || this.valueSync == '')){
this.valueSync = this.multiple ? [] : this.formattedList[0].value this.valueSync = this.multiple ? [] : this.formattedList[0].value
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<el-select <el-select
v-model="index" v-model="index"
filterable filterable
clearable :clearable="clearable"
remote remote
reserve-keyword reserve-keyword
placeholder="请选择" placeholder="请选择"
...@@ -20,7 +20,8 @@ import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customer ...@@ -20,7 +20,8 @@ import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customer
import {listSimpleUsers} from '@/api/system/user' import {listSimpleUsers} from '@/api/system/user'
export default { export default {
props:{ props:{
value: [String, Number] value: [String, Number],
clearable: Boolean
}, },
data(){ data(){
return { return {
...@@ -36,7 +37,10 @@ export default { ...@@ -36,7 +37,10 @@ export default {
this.$emit('change', val !== null ? this.list[val]: null) this.$emit('change', val !== null ? this.list[val]: null)
}, },
value(val){ value(val){
// this.init() this.resetIndex()
},
list(){
this.resetIndex()
} }
}, },
created(){ created(){
...@@ -46,6 +50,11 @@ export default { ...@@ -46,6 +50,11 @@ export default {
// this.init() // this.init()
}, },
methods:{ methods:{
resetIndex(){
let index = this.list.findIndex(item => item.id == this.value)
if(index < 0) this.index = null
else this.index = index
}
/* init(){ /* init(){
console.log('初始化联系人选择', this.value) console.log('初始化联系人选择', this.value)
if(!this.value) return if(!this.value) return
......
...@@ -317,8 +317,7 @@ export default { ...@@ -317,8 +317,7 @@ export default {
}; };
</script> </script>
<style> <style scoped>
/** 处理中 */ /** 处理中 */
.highlight-todo.djs-connection > .djs-visual > path { .highlight-todo.djs-connection > .djs-visual > path {
stroke: #1890ff !important; stroke: #1890ff !important;
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
</el-col> </el-col>
</el-card> </el-card>
<!-- 申请信息 --> <!-- 申请信息 -->
<el-card class="box-card" v-loading="processInstanceLoading"> <el-card class="box-card mt-10" v-loading="processInstanceLoading">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="el-icon-document">申请信息【{{ processInstance.name }}</span> <span class="el-icon-document">申请信息【{{ processInstance.name }}</span>
</div> </div>
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
</div> </div>
</el-card> </el-card>
<el-card class="box-card" v-loading="tasksLoad"> <el-card class="box-card mt-10" v-loading="tasksLoad">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="el-icon-picture-outline">审批记录</span> <span class="el-icon-picture-outline">审批记录</span>
</div> </div>
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
</el-card> </el-card>
<!-- 高亮流程图 --> <!-- 高亮流程图 -->
<el-card class="box-card" v-loading="processInstanceLoading"> <el-card class="box-card mt-10" v-loading="processInstanceLoading">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="el-icon-picture-outline">流程图</span> <span class="el-icon-picture-outline">流程图</span>
</div> </div>
...@@ -594,7 +594,7 @@ export default { ...@@ -594,7 +594,7 @@ export default {
}; };
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.my-process-designer { .my-process-designer {
height: calc(100vh - 200px); height: calc(100vh - 200px);
} }
......
...@@ -7,16 +7,16 @@ ...@@ -7,16 +7,16 @@
<!-- <el-select v-model="queryParams.transportType" placeholder="请选择运输方式" clearable size="small"> <!-- <el-select v-model="queryParams.transportType" placeholder="请选择运输方式" clearable size="small">
<el-option v-for="dict in transportTypes" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in transportTypes" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> --> </el-select> -->
<dict-selector :type="DICT_TYPE.TRANSPORT_TYPE" v-model="queryParams.transportType" /> <dict-selector :type="DICT_TYPE.TRANSPORT_TYPE" v-model="queryParams.transportType" clearable/>
</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 v-model="queryParams.startWarehouseId" placeholder="请选择始发地" clearable>
<el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <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 v-model="queryParams.destWarehouseId" placeholder="请选择目的地" clearable>
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <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>
...@@ -179,6 +179,7 @@ import {getCabinetPage} from "@/api/ecw/cabinet"; ...@@ -179,6 +179,7 @@ import {getCabinetPage} from "@/api/ecw/cabinet";
import { getChannelList } from '@/api/ecw/channel'; import { getChannelList } from '@/api/ecw/channel';
import { getWarehouseList } from "@/api/ecw/warehouse" import { getWarehouseList } from "@/api/ecw/warehouse"
import {getTradeCityList} from '@/api/ecw/region' import {getTradeCityList} from '@/api/ecw/region'
import Decimal from 'decimal.js'
export default { export default {
name: "indexFutureBox", name: "indexFutureBox",
components: { components: {
...@@ -327,11 +328,11 @@ export default { ...@@ -327,11 +328,11 @@ export default {
}, },
'form.warehousedNumber'(){ 'form.warehousedNumber'(){
//在仓 = 已入仓-已封柜 //在仓 = 已入仓-已封柜
this.$set(this.form, 'warehousingNumber', this.form.warehousedNumber - this.form.loadingNumber) this.$set(this.form, 'warehousingNumber', Decimal(this.form.warehousedNumber).minus(this.form.loadingNumber))
}, },
'form.loadingNumber'(){ 'form.loadingNumber'(){
//在仓 = 已入仓-已封柜 //在仓 = 已入仓-已封柜
this.$set(this.form, 'warehousingNumber', this.form.warehousedNumber - this.form.loadingNumber) this.$set(this.form, 'warehousingNumber', Decimal(this.form.warehousedNumber).minus(this.form.loadingNumber))
} }
}, },
methods: { methods: {
......
...@@ -175,7 +175,11 @@ export default { ...@@ -175,7 +175,11 @@ export default {
this.$set(this.dialogCfg, "visible", true); this.$set(this.dialogCfg, "visible", true);
}, },
makeBill(row) { makeBill(row) {
makeBillService({ orderId: row.orderId }).then((res) => { const { bookSeaInfo } = this.shipmentObj;
makeBillService({
orderId: row.orderId,
zgDate: bookSeaInfo.sailTime,
}).then((res) => {
const { data } = res; const { data } = res;
const { titleZh = "", contentZh = "" } = data?.ladingTemplate ?? {}; const { titleZh = "", contentZh = "" } = data?.ladingTemplate ?? {};
let billContent = `${titleZh}${contentZh}`, let billContent = `${titleZh}${contentZh}`,
......
<template> <template>
<div class="app-container"> <div class="app-container shipping-split-order">
<!-- 搜索工作栏 -->
<el-card> <el-card>
<div slot="header" class="card-title">拆单申请-{{orderData.orderNo||''}}</div> <div slot="header" class="card-title">拆单申请-{{orderData.orderNo||''}}</div>
<div class="btn-header"> <div class="btn-header">
<span class="card-title">原单信息</span> <span class="card-title">原单信息</span>
<div>
<span v-if="orderData.status==99" class="red">异常无法拆单</span>
<el-button v-else type="primary" @click="addSplit">新建拆单 </el-button>
</div>
</div> </div>
<el-descriptions :column="4"> <el-descriptions :column="4">
<el-descriptions-item label="唛头"> <el-descriptions-item label="唛头">
{{orderData.marks?orderData.marks:''}} {{orderData.marks?orderData.marks:''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="已箱数/总箱数"> <el-descriptions-item label="已实装箱数/总箱数">
<span>{{orderData.sumNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span> <span>{{currRow.installNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="订单状态"> <el-descriptions-item label="订单状态">
<!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="orderData.status" /> -->
{{orderData.status==99?'异常':'正常'}} {{orderData.status==99?'异常':'正常'}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="送货日期"> <el-descriptions-item label="送货日期">
...@@ -55,11 +49,11 @@ ...@@ -55,11 +49,11 @@
{{orderData.consigneeVO?orderData.consigneeVO.company||'':''}} {{orderData.consigneeVO?orderData.consigneeVO.company||'':''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="收货电话"> <el-descriptions-item label="收货电话">
{{orderData.consigneeVO?(orderData.consigneeVO.phone?(orderData.consigneeVo.countryCode+orderData.consigneeVO.phone):''):''}} {{orderData.consigneeVO?orderData.consigneeVO.phone?orderData.consigneeVO.countryCode+orderData.consigneeVO.phone :'':''}}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="card"> <el-card class="card">
<!-- 列表 --> <!-- 列表 -->
<div slot="header" class="card-title">货物信息</div> <div slot="header" class="card-title">货物信息</div>
...@@ -77,16 +71,21 @@ ...@@ -77,16 +71,21 @@
</el-table-column> </el-table-column>
<el-table-column label="装柜货物属性" align="center" width="600"> <el-table-column label="装柜货物属性" align="center" width="600">
<template slot-scope="scope"> <template slot-scope="scope">
<el-row> <el-row style="text-align:left;">
<span>规格:{{scope.row.boxGauge}}</span> <el-row>
</el-row> <span>规格:{{scope.row.boxGauge}}</span>
<el-row> </el-row>
<span>品牌: <el-row>
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" /> <span>品牌:
</span> <dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
<span style="margin-left: 10px;">箱数:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.cartonsNum : 0 }}</span> </span>
<span style="margin-left: 10px;">体积:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.volume : 0 }}</span> <span style="margin-left: 10px;">箱数:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.cartonsNum : 0 }}</span>
<span style="margin-left: 10px;">重量:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.weight : 0 }}kg</span> <span style="margin-left: 10px;">体积:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.volume : 0 }}</span>
<span style="margin-left: 10px;">重量:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.weight : 0 }}kg</span>
</el-row>
<el-row>
<span>计划装柜:无返回</span>
</el-row>
</el-row> </el-row>
</template> </template>
</el-table-column> </el-table-column>
...@@ -102,27 +101,26 @@ ...@@ -102,27 +101,26 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<el-card class="card" v-if="splitData.length>0">
<el-card class="card" v-if="splitData">
<!-- 列表 --> <!-- 列表 -->
<div slot="header" class="card-title">拆单信息</div> <div slot="header" class="card-title">拆单信息</div>
<div v-for="(item, index) in splitData" :key="index"> <div>
<div class="btn-header"> <div class="btn-header">
<div> <div>
<p class="card-info"> <p class="card-info">
<span class="card-title"> <span class="card-title">
{{item.orderNo}} {{splitData.orderNo}}
</span> </span>
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportId" /> <span>{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:'无'}}</span>
<span>发往:{{importCityName(item.dstWarehouseId)}}</span> <span>发往:{{splitData.dstWarehouseName}}</span>
</p> </p>
</div> </div>
<div> <div>
<el-button v-if="index==0" disabled type="primary" @click="addShop(index)">放入</el-button> <el-button type="primary" @click="addShop">放入</el-button>
<el-button v-if="index!=0" type="primary" @click="addShop(index)">放入</el-button>
<el-button type="primary" plain @click="deleteSplit(item.id)">删除</el-button>
</div> </div>
</div> </div>
<el-table border :data="item.orderSplitItemBackVOList"> <el-table border :data="splitData.orderSplitItemBackVOList">
<el-table-column label="序号" align="center" prop="id" type="index"> <el-table-column label="序号" align="center" prop="id" type="index">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.$index + 1}}</span> <span>{{scope.$index + 1}}</span>
...@@ -155,71 +153,49 @@ ...@@ -155,71 +153,49 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="计划装柜" align="center"> <el-table-column label="计划装柜" align="center">
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="index==0" disabled size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</el-card> </el-card>
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
<el-row style="marginTop:15px;">
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
</el-row>
<div slot="footer" class="card footer_btn" v-if="orderData.status!=99"> <div slot="footer" class="card footer_btn" v-if="orderData.status!=99">
<el-button v-if="orderData.status!=19" type="primary" @click="submitForm">提交申请</el-button> <el-button v-if="orderData.status!=19" type="primary" @click="submitForm">提交申请</el-button>
<el-button v-if="orderData.status!=19" plain type="primary" @click="$emit('closeDialog')">取消</el-button> <el-button v-if="orderData.status!=19" plain type="primary" @click="$emit('closeDialog')">取消</el-button>
<el-button v-if="orderData.status==19" type="primary" disabled>审核中</el-button> <el-button v-if="orderData.status==19" type="primary">审核中</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="cancelSplit">取消审核</el-button> <el-button v-if="orderData.status==19" plain type="primary" @click="cancelSplit">取消审核</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="$emit('closeDialog')">返回</el-button> <el-button v-if="orderData.status==19" plain type="primary" @click="$emit('closeDialog')">返回</el-button>
</div> </div>
<!-- 对话框(添加 / 修改) -->
<el-dialog title="新建拆单" :visible.sync="open" width="400px" append-to-body>
<el-form ref="formSplit" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-form-item label="运输方式">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" formatter="number" />
</el-form-item>
</el-row>
<el-row>
<el-form-item label="目的仓库:">
<el-select v-model="form.destWarehouseId" placeholder="请选择目的仓库">
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出货渠道" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<el-select v-model="form.channelId" placeholder="请选择出货渠道">
<el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="item.nameZh" :value="item.channelId" />
</el-select>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="haddleAdd">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog title="放入品名" :visible.sync="shopOpen" width="400px" append-to-body> <el-dialog title="放入品名" :visible.sync="shopOpen" width="400px" append-to-body>
<el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="80px"> <el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="100px">
<el-row> <el-row>
<el-form-item label="中文品名:"> <el-form-item label="中文品名:" prop="prodTitleZh">
<el-select v-model="shopForm.prodTitleZh" placeholder="请选择中文品名" @change="changeProdTitleZh"> <el-select v-model="shopForm.prodTitleZh" placeholder="请选择中文品名" @change="changeProdTitleZh">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleZh" :value="item.prodTitleZh" :key="item.prodTitleZh"></el-option> <el-option v-for="item in orderItems" :label="item.prodTitleZh" :value="item.prodTitleZh" :key="item.prodTitleZh"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<el-form-item label="英文品名:"> <el-form-item label="英文品名:" prop="prodTitleEn">
<el-select v-model="shopForm.prodTitleEn" placeholder="请选择英文品名" @change="changeProdTitleEn"> <el-select v-model="shopForm.prodTitleEn" placeholder="请选择英文品名" @change="changeProdTitleEn">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleEn" :value="item.prodTitleEn" :key="item.prodTitleEn"></el-option> <el-option v-for="item in orderItems" :label="item.prodTitleEn" :value="item.prodTitleEn" :key="item.prodTitleEn"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="剩余箱数:"> <el-form-item label="剩余箱数:">
{{shopForm.sum||0}} {{shopForm.sum||0}}
</el-form-item> </el-form-item>
<el-form-item label="放入箱数:"> <el-form-item label="放入箱数:" prop="num">
<el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum"></el-input-number> <el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="备注信息:"> <el-form-item label="备注信息:">
...@@ -236,23 +212,22 @@ ...@@ -236,23 +212,22 @@
</template> </template>
<script> <script>
import { getDictData, getDictDatas } from "@/utils/dict";
import { import {
getSplitList, getSplitList,
splitApply,
createSplit, createSplit,
cancelApply, cancelApply,
createSplitItem, createSplitItem,
deleteSplitItem, deleteSplitItem,
deleteSplit,
} from "@/api/ecw/orderHandle"; } from "@/api/ecw/orderHandle";
import { getTradeCityList } from "@/api/ecw/region"; import { getTradeCityList } from "@/api/ecw/region";
import { getChannelList } from "@/api/ecw/channel";
import WorkFlow from "@/components/WorkFlow"; import WorkFlow from "@/components/WorkFlow";
import { getOrder } from "@/api/ecw/order"; import { getOrder } from "@/api/ecw/order";
import { serviceMsg } from "../../utils";
import { createApproval } from "@/api/ecw/boxSea";
export default { export default {
name: "splitOrder", name: "splitOrder",
inheritAttrs: false,
components: { components: {
WorkFlow, WorkFlow,
}, },
...@@ -261,33 +236,17 @@ export default { ...@@ -261,33 +236,17 @@ export default {
}, },
data() { data() {
return { return {
checked: false,
orderData: {}, orderData: {},
splitData: [], splitData: {},
splitIndex: 0, detail: {},
channelData: [],
tradeCityList: [],
multipleSelection: [],
loading: false, loading: false,
open: false,
form: {},
selectedUsers: [], selectedUsers: [],
shopOpen: false, tradeCityList: [],
shopOpen: false,
orderItems: [],
shopForm: {}, shopForm: {},
// 表单校验 // 表单校验
rules: {
transportId: [
{ required: true, message: "请选择运输方式", trigger: "change" },
],
warehouseIds: [
{ required: true, message: "请选择目的仓库", trigger: "change" },
],
channelId: [
{ required: true, message: "请选择出货渠道", trigger: "change" },
],
},
// 表单校验
shopRules: { shopRules: {
prodTitleZh: [ prodTitleZh: [
{ required: true, message: "请选择中文品名", trigger: "change" }, { required: true, message: "请选择中文品名", trigger: "change" },
...@@ -295,24 +254,19 @@ export default { ...@@ -295,24 +254,19 @@ export default {
prodTitleEn: [ prodTitleEn: [
{ required: true, message: "请选择英文品名", trigger: "change" }, { required: true, message: "请选择英文品名", trigger: "change" },
], ],
num: [{ required: true, message: "请输入箱数", trigger: "change" }],
}, },
queryParams: { queryParams: {
orderId: 96, orderId: 0,
lang: 0, lang: 0,
}, },
query: {
page: 1,
rows: 20,
},
splitItemIndex: 0,
}; };
}, },
created() { created() {
this.getChannel();
getTradeCityList().then((res) => (this.tradeCityList = res.data)); getTradeCityList().then((res) => (this.tradeCityList = res.data));
this.queryParams.orderId = this.currRow.orderId; this.queryParams.orderId = this.currRow.orderId;
this.getList(); this.getOrderDetail();
this.getOrder(); this.getSplit();
}, },
watch: { watch: {
//监听table这个对象 //监听table这个对象
...@@ -334,51 +288,64 @@ export default { ...@@ -334,51 +288,64 @@ export default {
}, },
}, },
}, },
computed: { methods: {
getDictData() { /* 拆箱总数 */
return (type, value) => getDictData(type, value) || {}; totalSplitNum() {
let _total = 0;
const { orderSplitItemBackVOList = [] } = this.splitData;
orderSplitItemBackVOList.forEach((v) => {
_total += Number(v.splitNum);
});
return _total;
}, },
getDictDatas() { /* 打开拆单 */
return getDictDatas; getSplit() {
this.querySplitGoods().then((res) => {
if (res) {
if (this.currRow.goodsList && this.currRow.goodsList.length) {
const [orderItem] = this.currRow.goodsList;
createSplit({
parentOrderId: this.currRow.orderId,
parentOrderNo: this.currRow.orderNo,
dstWarehouseId: orderItem.destWarehouseId,
transportId: orderItem.transportId,
shipmentType: 1,
}).then((res) => {
this.querySplitGoods();
});
}
}
});
}, },
importCityList() { /* 查询拆单项 */
return this.tradeCityList.filter((item) => item.type == 1); querySplitGoods() {
return new Promise((resolve, reject) => {
getSplitList({
lang: 0,
orderId: this.currRow.orderId,
shipmentType: 1,
}).then((res) => {
const { orderSplitBackVOList } = res.data;
if (orderSplitBackVOList && orderSplitBackVOList.length) {
this.orderItems = this.currRow.goodsList ?? [];
// 取拆单项
this.splitData = orderSplitBackVOList.filter(
(item) => !item.isMaster
)[0];
resolve(false);
} else {
resolve(true);
}
});
});
}, },
}, getOrderDetail() {
methods: {
getOrder() {
this.loading = true; this.loading = true;
getOrder(this.queryParams.orderId).then((response) => { getOrder(this.queryParams.orderId).then((response) => {
this.orderData = response.data; this.orderData = response.data;
this.query.destWarehouseId =
response.data.logisticsInfoDto.startWarehouseId;
this.loading = false; this.loading = false;
}); });
}, },
/** 查询列表 */
getList() {
this.loading = true;
// 执行查询
getSplitList(this.queryParams).then((response) => {
this.splitData = response.data;
this.loading = false;
});
},
getChannel() {
getChannelList().then((res) => (this.channelData = res.data));
},
changeDest() {
this.query.warehouseIds = this.form.destWarehouseId;
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex == this.orderData.orderItemVOList.length) {
if (columnIndex === 1) {
return [2, 3];
} else if (columnIndex > 1) {
return [0, 0];
}
}
},
getSummaries() { getSummaries() {
const sums = []; const sums = [];
...@@ -390,12 +357,12 @@ export default { ...@@ -390,12 +357,12 @@ export default {
) { ) {
return sums; return sums;
} }
var orderSum = 0; let orderSum = 0;
var orderV = 0; let orderV = 0;
var orderW = 0; let orderW = 0;
var leviteSum = 0; let leviteSum = 0;
var leviteV = 0; let leviteV = 0;
var leviteW = 0; let leviteW = 0;
this.orderData.orderItemVOList.forEach((column, index) => { this.orderData.orderItemVOList.forEach((column, index) => {
orderSum += column.num ?? 0; orderSum += column.num ?? 0;
orderV += column.volume ?? 0; orderV += column.volume ?? 0;
...@@ -422,31 +389,32 @@ export default { ...@@ -422,31 +389,32 @@ export default {
return sums; return sums;
}, },
importCityName(id) { importCityName(id) {
var arr = this.tradeCityList.filter((item) => item.id == id); let arr = this.tradeCityList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : ""; return arr.length > 0 ? arr[0].titleZh : "";
}, },
submitForm() { submitForm() {
var params = { const { shipmentObj } = this.$attrs;
orderId: this.queryParams.orderId, // 创建拆单审核
createApproval({
applyReason: "拆单审核",
approvalStatus: 0,
approvalType: 8,
copyUserId: this.selectedUsers, copyUserId: this.selectedUsers,
}; orderId: this.currRow.orderId,
splitApply(params).then((res) => { shipmentId: shipmentObj.id,
this.$modal.msgSuccess("申请成功"); }).then((res) => {
that.getList(); serviceMsg(res, this).then((res) => {
this.getSplit();
});
}); });
}, },
addShop(index) { addShop() {
this.splitItemIndex = index;
this.shopOpen = true; this.shopOpen = true;
}, },
addSplit() {
this.open = true;
},
changeProdTitleZh() { changeProdTitleZh() {
var list = []; let list = [];
list = this.orderData.orderItemVOList.filter( list = this.currRow.goodsList.filter(
(item) => item.prodTitleZh == this.shopForm.prodTitleZh (item) => item.prodTitleZh == this.shopForm.prodTitleZh
); );
this.shopForm.sum = list[0].num; this.shopForm.sum = list[0].num;
...@@ -454,73 +422,58 @@ export default { ...@@ -454,73 +422,58 @@ export default {
this.shopForm.prodTitleEn = list[0].prodTitleEn; this.shopForm.prodTitleEn = list[0].prodTitleEn;
}, },
changeProdTitleEn() { changeProdTitleEn() {
var list = []; let list = [];
list = this.orderData.orderItemVOList.filter( list = this.orderData.orderItemVOList.filter(
(item) => item.prodTitleEn == this.shopForm.prodTitleEn (item) => item.prodTitleEn == this.shopForm.prodTitleEn
); );
this.shopForm.sum = list[0].num; this.shopForm.sum = list[0].num;
this.shopForm.prodTitleZh = list[0].prodTitleZh; this.shopForm.prodTitleZh = list[0].prodTitleZh;
}, },
haddleAdd() {
let that = this;
if (!that.form.transportId) {
that.$message.error("请选择运输方式");
}
if (!that.form.destWarehouseId) {
that.$message.error("请选择目的仓库");
}
// if(!this.form.channelId){
// this.$modal.msgError("请选择出货渠道");
// }
var params = {
dstWarehouseId: that.form.destWarehouseId,
parentOrderId: that.orderData.orderId,
parentOrderNo: that.orderData.orderNo,
transportId: that.form.transportId,
};
createSplit(params).then((res) => {
that.getList();
});
that.open = false;
},
cancel() {
this.open = false;
this.form = {};
},
shopAdd() { shopAdd() {
this.$refs["shopForm"].validate((valid) => { this.$refs["shopForm"].validate((valid) => {
if (!valid) { if (valid) {
return; // 输入箱数大于实装箱数
const total = this.totalSplitNum();
const canSplitNum = this.currRow.num - this.currRow.installNum;
const remain = canSplitNum - total;
if (this.shopForm.num > remain) {
this.$message.error("放入箱数不能大于总箱数");
return;
}
let params = {
num: this.shopForm.num,
orderItemId: this.shopForm.orderItemId,
orderSplitId: this.splitData.id,
remarks: this.shopForm.remarks,
};
createSplitItem(params).then((res) => {
this.$message.success("放入成功");
this.getSplit();
this.shopForm = {};
});
this.shopOpen = false;
} }
}); });
var params = {
num: this.shopForm.num,
orderItemId: this.shopForm.orderItemId,
orderSplitId: this.splitData[this.splitItemIndex].id,
remarks: this.shopForm.remarks,
};
createSplitItem(params).then((res) => {
this.$message.success("放入成功");
this.getList();
this.shopForm = {};
});
this.shopOpen = false;
}, },
removeShop(id) { removeShop(id) {
let that = this; let that = this;
that.$confirm("是否移除货物吗?").then(function () { that.$confirm("是否移除货物吗?").then(function () {
deleteSplitItem(id).then((res) => { deleteSplitItem(id).then((res) => {
that.$message.success("移除成功"); that.$message.success("移除成功");
that.getList(); that.getSplit();
}); });
}); });
}, },
cancelSplit() { cancelSplit() {
let that = this; const { shipmentObj } = this.$attrs;
that.$confirm("是否取消审核吗?").then(function () { approvalCancel({
cancelApply({ orderId: that.queryParams.orderId }).then((res) => { applyReason: "取消审核",
that.$message.success("取消成功"); id: shipmentObj["cabinetApprovalInfo"].id,
that.getList(); shipmentId: shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog");
}); });
}); });
}, },
...@@ -528,43 +481,39 @@ export default { ...@@ -528,43 +481,39 @@ export default {
this.shopOpen = false; this.shopOpen = false;
this.shopForm = {}; this.shopForm = {};
}, },
/** 删除按钮操作 */
deleteSplit(id) {
let that = this;
that.$confirm("是否确认删除新拆的订单吗?").then(function () {
deleteSplit(id).then((res) => {
that.$message.success("删除成功");
that.getList();
});
});
},
}, },
}; };
</script> </script>
<style>
.card-title { <style lang="scss">
font-size: 18px; .shipping-split-order {
font-weight: bold; .card-title {
margin-top: 10px; font-size: 18px;
} font-weight: bold;
.card-info { margin-top: 10px;
font-size: 16px; }
} .card-info {
.card { font-size: 16px;
margin-top: 20px; > span {
} margin-right: 10px;
.btn-header { }
width: 90%; }
display: flex; .card {
align-items: center; margin-top: 20px;
justify-content: space-between; }
margin: 20px 0; .btn-header {
} width: 90%;
.red { display: flex;
color: #ff3430; align-items: center;
font-size: 15px; justify-content: space-between;
} margin: 20px 0;
.footer_btn { }
padding-bottom: 60px; .red {
color: #ff3430;
font-size: 15px;
}
.footer_btn {
padding-bottom: 60px;
}
} }
</style> </style>
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview && scope.row.installNum === 0">移出</el-button> <el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview && scope.row.installNum === 0">移出</el-button>
<!-- <el-button type="text" size="small" v-if="isShowSplitOrder(scope.row)" @click="handlerSplitOrder(scope.row, 'splitOrder','拆单')">拆单</el-button> --> <el-button type="text" size="small" v-if="isShowSplitOrder(scope.row)" @click="handlerSplitOrder(scope.row, 'splitOrder','拆单')">拆单</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
</el-row> </el-row>
</template> </template>
<!-- 拆单 --> <!-- 拆单 -->
<splitOrder v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog="closeDialog" /> <splitOrder v-bind="$attrs" :shipmentObj="shipmentObj" v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog="closeDialog" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
......
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
<div> <div>
<el-form ref="reviewForm" :model="reviewObj" label-width="120px"> <el-form ref="reviewForm" :model="reviewObj" label-width="120px">
<el-form-item label="申请理由"> <el-form-item label="申请理由">
<el-input v-model="reviewObj.applyReason" type="textarea" rows="2" placeholder="请输入申请理由"></el-input> <el-input v-model="reviewObj.applyReason" type="textarea" rows="2" placeholder="请输入申请理由" :disabled="isReview"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="success" @click="onSubmit">发起申请</el-button> <el-button type="success" @click="onSubmit" :disabled="isReview">发起申请</el-button>
<el-button type="primary" @click="jumpReviewDetail" :disabled="!isReview">审核中</el-button>
<el-button @click="cancel">关闭</el-button> <el-button @click="cancel">关闭</el-button>
</el-row> </el-row>
</div> </div>
...@@ -14,7 +15,7 @@ ...@@ -14,7 +15,7 @@
<script> <script>
import { approvalCreate } from "@/api/ecw/boxSea"; import { approvalCreate } from "@/api/ecw/boxSea";
import { serviceMsg } from "../utils"; import { serviceMsg, toReviewDetail } from "../utils";
/** /**
* 反审 * 反审
...@@ -26,9 +27,29 @@ export default { ...@@ -26,9 +27,29 @@ export default {
return { return {
// 反审对象 // 反审对象
reviewObj: {}, reviewObj: {},
isReview: false,
bpmProcessId: "",
}; };
}, },
created() {
const { currNode, shipmentObj } = this.$attrs;
if (currNode.type === "preinstall") {
this.isReview = shipmentObj["preInstallBackInfo"] ? true : false;
this.bpmProcessId = shipmentObj["preInstallBackInfo"]?.bpmProcessId;
}
if (currNode.type === "unloading") {
this.isReview = shipmentObj["cabinetUnloadBackApprovalInfo"]
? true
: false;
this.bpmProcessId =
shipmentObj["cabinetUnloadBackApprovalInfo"]?.bpmProcessId;
}
},
methods: { methods: {
jumpReviewDetail() {
toReviewDetail.apply(this, [this.bpmProcessId]);
this.$emit("closeDialog");
},
/** 提交 */ /** 提交 */
onSubmit() { onSubmit() {
this.$refs["reviewForm"].validate((valid) => { this.$refs["reviewForm"].validate((valid) => {
......
...@@ -229,21 +229,11 @@ export default { ...@@ -229,21 +229,11 @@ export default {
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
return this.$router.push('edit') return this.$router.push('create_channel')
this.reset();
this.open = true;
this.title = "添加渠道管理";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
return this.$router.push('edit?id=' + row.channelId) return this.$router.push('edit_channel?id=' + row.channelId)
this.reset();
const channelId = row.channelId;
getChannel(channelId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改渠道管理";
});
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
......
...@@ -10,36 +10,50 @@ ...@@ -10,36 +10,50 @@
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="客户等级" prop="level"> <el-form-item label="客户等级" prop="level">
<el-select v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small"> <el-select clearable v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="联系方式">
<el-input placeholder="请输入联系方式" v-model="queryParams.defaultContactPhone"></el-input>
</el-form-item>
<el-form-item label="客户类别" prop="level">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" multiple v-model="queryParams.type"></dict-selector>
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select clearable v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item label="客户来源" prop="source"> <el-form-item label="客户来源" prop="source">
<el-select v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small"> <el-select clearable v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="客户经理" prop="customerService"> <el-form-item label="国家" prop="source">
<el-select v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small"> <el-select clearable v-model="form.country" placeholder="请选择国家">
<el-option v-for="dict in customerServiceList" <el-option v-for="dict in countryList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/> :key="dict.id" :label="dict.nameZh" :value="parseInt(dict.id)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="客户状态" prop="status"> <el-form-item label="客户状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small"> <el-select clearable v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="部门" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="信用等级" prop="department">
<el-select clearable v-model="form.level" >
<el-option v-for="(item,index) in creditList" :label="item.nameZh" :key="index" :value="item.id" ></el-option>
</el-select>
</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>
...@@ -56,36 +70,42 @@ ...@@ -56,36 +70,42 @@
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">导出</el-button> v-hasPermi="['ecw:customer:export']">导出</el-button>
</el-col> </el-col>
<el-col :span="1.5" >
<el-button :disabled="selectCustomerList.length === 0" type="warning" plain icon="el-icon-download" size="mini" @click="transferShow = true;" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">批量移交</el-button>
</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 ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column label="客户编号" align="center" prop="number" /> <el-table-column label="客户编号" align="center" prop="number" />
<el-table-column label="客户名称" align="center" prop="name" /> <el-table-column label="客户名称" align="center" prop="name" />
<el-table-column label="客户等级" align="center" prop="level"> <el-table-column label="客户等级" align="center" prop="vipLevelNameZh">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" /> <dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="国家" align="center" prop="country" :formatter="countryFormatter"></el-table-column> <el-table-column label="信用等级" prop="creditLevelNameZh"></el-table-column>
<el-table-column label="客户经理" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="客户状态" align="center" prop="status"> <el-table-column label="客户状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="部门" align="center" prop="department"> <el-table-column label="主联系人" prop="defaultContactName"></el-table-column>
<template v-slot:default="scope"> <el-table-column label="主联系方式" prop="defaultContactPhone"></el-table-column>
{{scope.row.department}}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="客户经理" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="国家" align="center" prop="country" :formatter="countryFormatter"></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">
<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)"
...@@ -451,6 +471,7 @@ ...@@ -451,6 +471,7 @@
</el-dialog> </el-dialog>
<customer-follow-list :customer-id="customerId" :id="customerId" ref="CustomerFollowList"></customer-follow-list> <customer-follow-list :customer-id="customerId" :id="customerId" ref="CustomerFollowList"></customer-follow-list>
<customer-complaints :customer-id="customerId" ref="customerComplaints"></customer-complaints> <customer-complaints :customer-id="customerId" ref="customerComplaints"></customer-complaints>
<transfer-customer :show.sync="transferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
</div> </div>
</template> </template>
...@@ -467,13 +488,16 @@ import CustomerFollowList from "@/components/CustomerFollowList" ...@@ -467,13 +488,16 @@ import CustomerFollowList from "@/components/CustomerFollowList"
import customerComplaints from "@/components/customerComplaints" import customerComplaints from "@/components/customerComplaints"
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
import { getCountryListAll } from '@/api/ecw/country' import { getCountryListAll } from '@/api/ecw/country'
import {getCreditPage} from "@/api/customer/credit";
import transferCustomer from "@/views/ecw/customer/transferCustomer";
export default { export default {
name: "Customer", name: "Customer",
components: { components: {
upload, upload,
CustomerFollowList, CustomerFollowList,
customerComplaints customerComplaints,
transferCustomer
}, },
data() { data() {
return { return {
...@@ -525,11 +549,16 @@ export default { ...@@ -525,11 +549,16 @@ export default {
showLine: false, showLine: false,
customerId:undefined, customerId:undefined,
customerServiceList:[], customerServiceList:[],
countryList: [],
countryList: [] creditList:[],
selectCustomerList:[],
transferShow:false
}; };
}, },
created() { created() {
getCreditPage({page:1,rows:999}).then(r => {
this.creditList = r.data.list
})
this.getList(); this.getList();
// getNodeList().then(r => { // getNodeList().then(r => {
// this.nodeList = r.data // this.nodeList = r.data
...@@ -682,7 +711,6 @@ export default { ...@@ -682,7 +711,6 @@ export default {
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams}; let params = {...this.queryParams};
params.pageNo = undefined; params.pageNo = undefined;
params.pageSize = undefined; params.pageSize = undefined;
...@@ -693,6 +721,8 @@ export default { ...@@ -693,6 +721,8 @@ export default {
return exportCustomerExcel(params); return exportCustomerExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '客户信息.xls'); this.$download.excel(response, '客户信息.xls');
console.log(response,'response')
this.$download.excel(response, '全部客户信息.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
}, },
...@@ -707,7 +737,19 @@ export default { ...@@ -707,7 +737,19 @@ export default {
this.$nextTick(()=>{ this.$nextTick(()=>{
this.$refs.customerComplaints.handleAdd(); this.$refs.customerComplaints.handleAdd();
}) })
},
handleSelectionChange(val){
this.selectCustomerList = val.map(i => i.id);
} }
},
watch:{
selectCustomerList(val){
if(val.length === 0){
this.getList()
this.$refs.multipleTable.clearSelection();
}
},
} }
}; };
</script> </script>
<template>
<el-dialog
center
title="客服"
:visible.sync="show"
width="30%">
<div style="width: 100%;min-height: 200px;text-align: center">
<el-select filterable v-model="service">
<el-option v-for="(item,index) in customerServiceList" :key="index" :label="item.nickname" :value="item.id"></el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button >取 消</el-button>
<el-button type="primary" @click="submit">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
import {listServiceUser} from "@/api/system/user";
import {handOverCustomer} from "@/api/ecw/customer";
export default {
name: "transferCustomer",
props:{
show:{
type:Boolean ,
default:false
},
customerIds:[Array,String],
tableName:String
},
created() {
listServiceUser().then(r=>{
this.customerServiceList = r.data;
})
},
computed:{
getCustomerIds(){
if(this.customerIds instanceof Array) return this.customerIds
else return this.customerIds.split(',')
}
},
data(){
return {
customerServiceList:[],
service:'',
}
},
methods:{
submit(){
if(!this.service){
return this.$message.warning('请选择客户经理!');
}
handOverCustomer({
customerServiceId:this.service,
customerIdList:this.getCustomerIds
}).then(r=>{
if(r.code === 0){
this.$emit('update:show',false)
this.$emit('update:customerIds',[])
this.$message.success('用户批量转移成功!')
}
})
},
}
}
</script>
<style scoped>
</style>
...@@ -315,8 +315,8 @@ ...@@ -315,8 +315,8 @@
setTime(item) { setTime(item) {
this.targetPeriod.forEach((i, index) => { this.targetPeriod.forEach((i, index) => {
if (i.name === item) { if (i.name === item) {
this.form.startTime = i.startDate; this.form.startTime = i.startDate + " 00:00:00";
this.form.endTime = i.endDate; this.form.endTime = i.endDate + " 23:59:59";
} }
}) })
}, },
......
...@@ -11,30 +11,50 @@ ...@@ -11,30 +11,50 @@
<el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.name" placeholder="请输入客户名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="客户等级" prop="level"> <el-form-item label="客户等级" prop="level">
<el-select v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small"> <el-select clearable v-model="queryParams.level" placeholder="请选择客户等级" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="联系方式">
<el-input placeholder="请输入联系方式" v-model="queryParams.defaultContactPhone"></el-input>
</el-form-item>
<el-form-item label="客户类别" prop="level">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" multiple v-model="queryParams.type"></dict-selector>
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select clearable v-model="queryParams.customerService" placeholder="请选择客户经理" clearable size="small">
<el-option v-for="dict in customerServiceList"
:key="dict.id" :label="dict.nickname" :value="dict.id"/>
</el-select>
</el-form-item>
<el-form-item label="客户来源" prop="source"> <el-form-item label="客户来源" prop="source">
<el-select v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small"> <el-select clearable v-model="queryParams.source" placeholder="请选择客户来源" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="国家" prop="source">
<el-select clearable v-model="form.country" placeholder="请选择国家">
<el-option v-for="dict in countryList"
:key="dict.id" :label="dict.nameZh" :value="parseInt(dict.id)" />
</el-select>
</el-form-item>
<el-form-item label="客户状态" prop="status"> <el-form-item label="客户状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small"> <el-select clearable v-model="queryParams.status" placeholder="请选择客户状态" clearable size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="部门" prop="department">
<el-input v-model="queryParams.department" placeholder="请输入部门" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="信用等级" prop="department">
<el-select clearable v-model="form.level" >
<el-option v-for="(item,index) in creditList" :label="item.nameZh" :key="index" :value="item.id" ></el-option>
</el-select>
</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>
...@@ -51,34 +71,42 @@ ...@@ -51,34 +71,42 @@
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">导出</el-button> v-hasPermi="['ecw:customer:export']">导出</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button :disabled="selectCustomerList.length === 0" type="warning" plain icon="el-icon-download" size="mini" @click="show = true;" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">批量移交</el-button>
</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 ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column label="客户编号" align="center" prop="number" /> <el-table-column label="客户编号" align="center" prop="number" />
<el-table-column label="客户名称" align="center" prop="name" /> <el-table-column label="客户名称" align="center" prop="name" />
<el-table-column label="客户等级" align="center" prop="level"> <el-table-column label="客户等级" align="center" prop="vipLevelNameZh">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" /> <dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="国家" align="center" prop="country"> <el-table-column label="信用等级" prop="creditLevelNameZh"></el-table-column>
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.COUNTRY" :value="scope.row.country" />
</template>
</el-table-column>
<el-table-column label="客户状态" align="center" prop="status"> <el-table-column label="客户状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" /> <dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="部门" align="center" prop="department" /> <el-table-column label="主联系人" prop="defaultContactName"></el-table-column>
<el-table-column label="主联系方式" prop="defaultContactPhone"></el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="客户经理" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="国家" align="center" prop="country" :formatter="countryFormatter"></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">
<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)"
...@@ -98,6 +126,7 @@ ...@@ -98,6 +126,7 @@
@pagination="getList"/> @pagination="getList"/>
<customer-follow-list ref="customerFollowList" :customer-id="customerId" :id="customerId"></customer-follow-list> <customer-follow-list ref="customerFollowList" :customer-id="customerId" :id="customerId"></customer-follow-list>
<customer-complaints ref="customerComplaint" :customer-id.sync="customerId"></customer-complaints> <customer-complaints ref="customerComplaint" :customer-id.sync="customerId"></customer-complaints>
<transfer-customer :show.sync="show" :customer-ids.sync="selectCustomerList"></transfer-customer>
</div> </div>
</template> </template>
...@@ -108,15 +137,24 @@ import { getDictDatas, DICT_TYPE } from '@/utils/dict'; ...@@ -108,15 +137,24 @@ import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload' import upload from '@/components/ImageUpload'
import customerFollowList from "@/components/CustomerFollowList"; import customerFollowList from "@/components/CustomerFollowList";
import customerComplaints from "@/components/customerComplaints"; import customerComplaints from "@/components/customerComplaints";
import {listServiceUser} from "@/api/system/user";
import {getCountryListAll} from "@/api/ecw/country";
import {getCreditPage} from "@/api/customer/credit";
import transferCustomer from "@/views/ecw/customer/transferCustomer";
export default { export default {
name: "myCustomerService", name: "myCustomerService",
components: { components: {
upload, upload,
customerFollowList, customerFollowList,
customerComplaints customerComplaints,
transferCustomer
}, },
data() { data() {
return { return {
show:false,
creditList:[],
countryList:[],
customerServiceList:[],
getDictDatas, getDictDatas,
DICT_TYPE, DICT_TYPE,
// 遮罩层 // 遮罩层
...@@ -163,6 +201,7 @@ export default { ...@@ -163,6 +201,7 @@ export default {
nodeList: [], nodeList: [],
showLine: false, showLine: false,
customerId:undefined, customerId:undefined,
selectCustomerList:[],
}; };
}, },
created() { created() {
...@@ -170,8 +209,32 @@ export default { ...@@ -170,8 +209,32 @@ export default {
// getNodeList().then(r => { // getNodeList().then(r => {
// this.nodeList = r.data // this.nodeList = r.data
// }) // })
getCreditPage({page:1,rows:999}).then(r => {
this.creditList = r.data.list
})
listServiceUser().then(r=>{
this.customerServiceList = r.data;
})
getCountryListAll().then(r => {
this.countryList = r.data
})
}, },
methods: { methods: {
handleSelectionChange(val){
this.selectCustomerList = val.map(i => i.id);
},
countryFormatter(row, column, cellValue) {
const country = this.countryList.find((e) => e.id === cellValue)
return country?.nameZh
},
customerServiceFn(val){
if(this.customerServiceList.length > 0){
let index =this.customerServiceList.findIndex(item => item.id === val.customerService);
return index !== -1 ? this.customerServiceList[index]?.nickname :''
}else {
return ''
}
},
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
...@@ -323,6 +386,15 @@ export default { ...@@ -323,6 +386,15 @@ export default {
this.$refs['customerComplaint'].handleAdd() this.$refs['customerComplaint'].handleAdd()
}) })
} }
},
watch:{
selectCustomerList(val){
if(val.length === 0){
this.getList()
this.$refs.multipleTable.clearSelection();
}
},
} }
}; };
</script> </script>
...@@ -499,7 +499,7 @@ import ChooseContactDialog from '@/components/ChooseContactDialog' ...@@ -499,7 +499,7 @@ import ChooseContactDialog from '@/components/ChooseContactDialog'
import QuickCreateCustomer from '@/components/QuickCreateCustomer' import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts' import {getCustomerContactsSelect} from '@/api/ecw/customerContacts'
import Decimal from 'decimal.js' import Decimal from 'decimal.js'
window.Decimal= Decimal
export default { export default {
name: "EcwOfferEdit", name: "EcwOfferEdit",
components: { components: {
...@@ -657,26 +657,61 @@ export default { ...@@ -657,26 +657,61 @@ export default {
originalFeeList(){ originalFeeList(){
let arr = [] let arr = []
this.clearanceFeeList.forEach(item => { this.clearanceFeeList.forEach(item => {
let it = {...item} let it = {
src: '清关费',
currencyId: item.currencyId,
amount: Decimal(item.amount)
}
let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId) let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId)
if(freight){ if(freight){
it.amount += freight.amount it.amount = it.amount.plus(freight.amount)
} }
arr.push(it) arr.push(it)
}) })
// 判断是否有运费单位不在清关费里的
this.freightFeeList.forEach(item => {
if(!arr.find(arrItem => arrItem.currencyId == item.currencyId)){
arr.push({
src: '未计算的运费',
currencyId: item.currencyId,
amount: Decimal(item.amount)
})
}
})
return arr return arr
}, },
// 预计费用(原价 - 优惠金额) // 预计费用(原价 - 优惠金额 + 其他费用 + 保价费)
estimatedCosts(){ estimatedCosts(){
let arr = [] let arr = []
let withInsuranceFee = false
this.originalFeeList.forEach(item => { this.originalFeeList.forEach(item => {
let it = {...item} let it = {
currencyId: item.currencyId,
amount: Decimal(item.amount)
}
let coupon = this.couponList.find(coupon => coupon.reduceCurrencyId == item.currencyId) let coupon = this.couponList.find(coupon => coupon.reduceCurrencyId == item.currencyId)
if(coupon){ if(coupon){
it.amount -= coupon.reduceAmount it.amount = it.amount.minus(coupon.reduceAmount)
}
if(this.form.otherFee && this.form.otherFeeCurrencyId == item.currencyId){
it.amount = it.amount.plus(this.form.otherFee)
}
// 保价费(美元)
if(item.currencyId == 1 && this.fee && this.fee.insuranceFee){
it.amount = it.amount.plus(this.fee.insuranceFee)
withInsuranceFee = true
} }
arr.push(it) arr.push(it)
}) })
// 没有累加保价费(没有美元计价)但是有保价费则需要加上去
if(!withInsuranceFee && this.fee && this.fee.insuranceFee){
arr.push({
currencyId: 1,
amount: Decimal(this.fee.insuranceFee)
})
}
return arr return arr
}, },
// 路线开通的服务 // 路线开通的服务
...@@ -935,8 +970,11 @@ export default { ...@@ -935,8 +970,11 @@ export default {
orderType: this.form.orderType, orderType: this.form.orderType,
}).then(res => { }).then(res => {
this.$set(this, 'fee', res.data.costDto) this.$set(this, 'fee', res.data.costDto)
this.$set(this, 'couponTotalAmountList', res.data.availableDto.couponTotalAmountList) if(res.data.availableDto){
this.$set(this, 'couponAvailableGroupDtoList', res.data.availableDto.couponAvailableGroupDtoList) this.$set(this, 'couponTotalAmountList', res.data.availableDto.couponTotalAmountList)
this.$set(this, 'couponAvailableGroupDtoList', res.data.availableDto.couponAvailableGroupDtoList)
}
this.form.prodCreateReqVOList.map((item, index) => { this.form.prodCreateReqVOList.map((item, index) => {
this.$set(item, 'fee', res.data.prodCostDtoList[index] || null) this.$set(item, 'fee', res.data.prodCostDtoList[index] || null)
......
...@@ -18,33 +18,33 @@ ...@@ -18,33 +18,33 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发地')" prop="departureId"> <el-form-item :label="$t('始发地')" prop="departureId">
<el-select v-model="queryParams.departureId" :placeholder="$t('请选择始发地')"> <el-select v-model="queryParams.departureId" :placeholder="$t('请选择始发地')" clearable>
<el-option v-for="item in exportCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in exportCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的地')" prop="objectiveId"> <el-form-item :label="$t('目的地')" prop="objectiveId">
<el-select v-model="queryParams.objectiveId" :placeholder="$t('请选择目的地')"> <el-select v-model="queryParams.objectiveId" :placeholder="$t('请选择目的地')" clearable>
<el-option v-for="item in importCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('运输方式')" prop="transportId"> <el-form-item :label="$t('运输方式')" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('商品')" prop="prodTitle"> <el-form-item :label="$t('商品')" prop="prodTitle">
<el-input v-model="queryParams.prodTitle" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.prodTitle" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货')" prop="control"> <el-form-item :label="$t('控货')" prop="control">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.control" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.control" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')" prop="followUpSalesmanId"> <el-form-item :label="$t('客户经理')" prop="followUpSalesmanId">
<user-selector v-model="queryParams.followUpSalesmanId" /> <user-selector v-model="queryParams.followUpSalesmanId" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('销售阶段')" prop="status"> <el-form-item :label="$t('销售阶段')" prop="status">
<dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" v-model="queryParams.status" /> <dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" v-model="queryParams.status" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('报关方式')" prop="customsType"> <el-form-item :label="$t('报关方式')" prop="customsType">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" /> <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable />
</el-form-item> </el-form-item>
<div> <div>
...@@ -164,44 +164,10 @@ export default { ...@@ -164,44 +164,10 @@ export default {
total: 0, total: 0,
// 报价单管理列表 // 报价单管理列表
list: [], list: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
dateRangeStopTime: [],
dateRangeStartTime: [],
dateRangeEndTime: [],
dateRangeCreateTime: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
number: null,
orderIds: null,
orderNo: null,
consignorId: null,
consigneeId: null,
marks: null,
customsType: null,
departureId: null,
departure: null,
objectiveId: null,
objective: null,
control: null,
competitor: null,
importance: null,
tradeType: null,
tradeAdress: null,
remarks: null,
status: null,
oldStatus: null,
relation: null,
relationId: null,
commissionType: null,
warehousingType: null,
reason: null,
estCost: null,
sendstatus: null,
}, },
currencyList: [], currencyList: [],
tradeCityList:[] tradeCityList:[]
...@@ -236,14 +202,8 @@ export default { ...@@ -236,14 +202,8 @@ export default {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
// 处理查询参数
let params = {...this.queryParams};
this.addBeginAndEndTime(params, this.dateRangeStopTime, 'stopTime');
this.addBeginAndEndTime(params, this.dateRangeStartTime, 'startTime');
this.addBeginAndEndTime(params, this.dateRangeEndTime, 'endTime');
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询 // 执行查询
getOfferPage(params).then(response => { getOfferPage(this.queryParams).then(response => {
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
...@@ -257,16 +217,15 @@ export default { ...@@ -257,16 +217,15 @@ export default {
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRangeStopTime = []; this.queryParams = {
this.dateRangeStartTime = []; pageNo: 1,
this.dateRangeEndTime = []; pageSize: 10
this.dateRangeCreateTime = []; }
this.resetForm("queryForm");
this.handleQuery(); this.handleQuery();
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
return this.$router.push('edit') return this.$router.push('create')
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
...@@ -289,16 +248,12 @@ export default { ...@@ -289,16 +248,12 @@ export default {
let params = {...this.queryParams}; let params = {...this.queryParams};
params.pageNo = undefined; params.pageNo = undefined;
params.pageSize = undefined; params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeStopTime, 'stopTime');
this.addBeginAndEndTime(params, this.dateRangeStartTime, 'startTime');
this.addBeginAndEndTime(params, this.dateRangeEndTime, 'endTime');
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出所有报价单管理数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出所有报价单管理数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportOfferExcel(params); return exportOfferExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '报价列表.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
}, },
......
...@@ -87,11 +87,12 @@ export default { ...@@ -87,11 +87,12 @@ export default {
} }
let data = Object.assign({}, this.form) let data = Object.assign({}, this.form)
updateOfferResult(data).then(response => { updateOfferResult(data).then(response => {
this.$modal.msgSuccess(this.$t("赢单成功"));
if(response.data > 0){ if(response.data > 0){
this.$message.success(this.$t('赢单成功'))
this.$redirect('../order/edit?id=' + response.data) this.$redirect('../order/edit?id=' + response.data)
return return
} }
this.$message.success(this.$t('输单成功'))
this.$router.back(); this.$router.back();
}); });
}); });
......
编辑
abnormalState != 1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
status != 20,21
shipmentState != 320,322,323
inWarehouseState != 212, 218, 213, 214, 215 && status != 5,8
取消
status = 0,2
费用申请
status != 0,
abnormalState != 1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
shipmentState != 320,322,323
特需,关联,互斥
status != 0,
abnormalState != 1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
status > 5
inWarehouseState == 204
特价
status !=0
abnormalState != 1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
shipmentState != 320,322,323
确认提货
status != 0,2
abnormalState != 1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
shipmentState != 320,322,323
合单,拆单
status != 0,2
abnormalState != 1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
shipmentState > 320
入仓操作
status == 0,2
abnormalState == 1
入仓补充
inWarehouseState == 201,202, 208, 202, 210, 202, 211, 202, 213, 214, 215, 216
abnormalState != 99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14
入仓修改
inWarehouseState == 202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216, 204, 205, 206
退仓
inWarehouseState == 201, 202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216
abnormalState != 1
调仓
inWarehouseState == 201, 202, 208, 202, 210, 202, 211, 202, 213, 215, 216
取消调仓
inWarehouseState == 212,213,214
调拨出仓
inWarehouseState == 213
调拨到仓
inWarehouseState= 214
打印标签
status != 0
shipmentState != 320,322,323
abnormalState !=5,6,7,8
打印入仓单
status != 0,2
abnormalState != 1,5,6,7,8
shipmentState != 320,322,323
打印提单
...@@ -8,29 +8,29 @@ ...@@ -8,29 +8,29 @@
<el-date-picker v-model="dateFilter" type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker v-model="dateFilter" type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发地')" prop="startWarehouseId"> <el-form-item :label="$t('始发地')" prop="startWarehouseId">
<el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')"> <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')" clearable>
<el-option v-for="item in expoerCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in expoerCityList" :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="$t('目的地')" prop="destWarehouseId"> <el-form-item :label="$t('目的地')" prop="destWarehouseId">
<el-select v-model="queryParams.destWarehouseId" :placeholder="$t('请选择目的地')"> <el-select v-model="queryParams.destWarehouseId" :placeholder="$t('请选择目的地')" clearable>
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importCityList" :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="$t('运输方式')" prop="transportId"> <el-form-item :label="$t('运输方式')" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单编号')" prop="orderNo"> <el-form-item :label="$t('订单编号')" prop="orderNo">
<el-input v-model="queryParams.orderNo" :placeholder="$t('订单编号')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.orderNo" :placeholder="$t('订单编号')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('品名')" prop="prodId"> <el-form-item :label="$t('品名')" prop="prodId">
<product-selector v-model="queryParams.prodId" @keyup.enter.native="handleQuery" /> <product-selector v-model="queryParams.prodId" @keyup.enter.native="handleQuery" clearable/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货')" prop="isCargoControl"> <el-form-item :label="$t('控货')" prop="isCargoControl">
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" /> <dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单状态')" prop="status"> <el-form-item :label="$t('订单状态')" prop="status">
<dict-selector :type="DICT_TYPE.PAY_ORDER_STATUS" v-model="queryParams.status" <dict-selector :type="DICT_TYPE.PAY_ORDER_STATUS" v-model="queryParams.status" clearable
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('提单号')" prop="tidanNo"> <el-form-item :label="$t('提单号')" prop="tidanNo">
......
...@@ -409,7 +409,7 @@ ...@@ -409,7 +409,7 @@
<div v-if="[2,3,4].indexOf(+form.transportId) > -1"> <div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('是否双清')"> <el-form-item :label="$t('是否双清')">
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" /> <dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" defaultable />
</el-form-item> </el-form-item>
</div> </div>
...@@ -425,7 +425,7 @@ ...@@ -425,7 +425,7 @@
</div> </div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1"> <div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('清关证书')"> <el-form-item :label="$t('清关证书')">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" /> <dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" defaultable />
</el-form-item> </el-form-item>
<el-form-item label="清关证书备注" > <el-form-item label="清关证书备注" >
<el-input v-model="form.remarks" ></el-input> <el-input v-model="form.remarks" ></el-input>
...@@ -433,18 +433,18 @@ ...@@ -433,18 +433,18 @@
</div> </div>
<div v-if="[3,4].indexOf(+form.transportId) > -1"> <div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item label="是否拆包"> <el-form-item label="是否拆包">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" /> <dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" defaultable />
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1"> <el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" /> <dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" defaultable />
<span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span> <span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('特殊要求')" > <el-form-item :label="$t('特殊要求')" >
<dict-selector v-model="form.packageType" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple /> <dict-selector v-model="form.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple />
</el-form-item> </el-form-item>
</div> </div>
<el-form-item :label="$t('特殊要求备注')"> <el-form-item :label="$t('特殊要求备注')">
...@@ -462,7 +462,7 @@ ...@@ -462,7 +462,7 @@
<el-dialog :title="$t('批量导入')" :visible.sync="showBatchImportDialog" width="1000px" :close-on-click-modal="false"> <el-dialog :title="$t('批量导入')" :visible.sync="showBatchImportDialog" width="1000px" :close-on-click-modal="false">
<el-steps :active="importList.length > 0 ? 1 : 0" finish-status="success" class="w-500" style="margin: 20px auto"> <el-steps :active="importList.length > 0 ? 1 : 0" finish-status="success" class="w-500" style="margin: 20px auto">
<el-step :title="$t('上传集装箱')"></el-step> <el-step :title="$t('上传装箱单')"></el-step>
<el-step :title="$t('开始导入')"></el-step> <el-step :title="$t('开始导入')"></el-step>
<el-step :title="$t('完成')"></el-step> <el-step :title="$t('完成')"></el-step>
</el-steps> </el-steps>
...@@ -718,6 +718,9 @@ export default { ...@@ -718,6 +718,9 @@ export default {
this.$set(this.form, 'departureId', router.startCityId) this.$set(this.form, 'departureId', router.startCityId)
this.$set(this.form, 'objectiveId', router.destCityId) this.$set(this.form, 'objectiveId', router.destCityId)
}, },
'form.packageTypeArr'(val){
this.$set(this.form, 'form.packageType', val.join(','))
},
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择 // 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter(val){ selectedRouter(val){
if(!val) return if(!val) return
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<!-- <el-form-item label="唛头" prop="marks"> <!-- <el-form-item label="唛头" prop="marks">
<el-input v-model="queryParams.marks" placeholder="唛头" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.marks" placeholder="唛头" clearable @keyup.enter.native="handleQuery" />
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('发货人')" prop="consignorId"> <el-form-item :label="$t('发货人')" prop="consignorId">
<el-input v-model="queryParams.consignorId" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.consignorId" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
...@@ -21,18 +21,18 @@ ...@@ -21,18 +21,18 @@
<el-date-picker v-model="dateFilter" type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker v-model="dateFilter" type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发地')" prop="startWarehouseId"> <el-form-item :label="$t('始发地')" prop="startWarehouseId">
<el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')"> <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')" clearable>
<el-option v-for="item in exportCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in exportCityList" :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="$t('目的地')" prop="destWarehouseId"> <el-form-item :label="$t('目的地')" prop="destWarehouseId">
<el-select v-model="queryParams.destWarehouseId" :placeholder="$t('请选择目的地')"> <el-select v-model="queryParams.destWarehouseId" :placeholder="$t('请选择目的地')" clearable>
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importCityList" :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="$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="queryParams.transportId" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="商品分类" prop="goodsType"> <!-- <el-form-item label="商品分类" prop="goodsType">
...@@ -52,17 +52,17 @@ ...@@ -52,17 +52,17 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货')" prop="isCargoControl"> <el-form-item :label="$t('控货')" prop="isCargoControl">
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" /> <dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('入仓类型')" prop="warehouseType"> <el-form-item :label="$t('入仓类型')" prop="warehouseType">
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehousingType" /> <dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehousingType" clearable/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')" > <el-form-item :label="$t('客户经理')" >
<user-selector v-model="queryParams.salesmanId" /> <user-selector v-model="queryParams.salesmanId" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单状态')" prop="status"> <el-form-item :label="$t('订单状态')" prop="status">
<dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status" <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"
@keyup.enter.native="handleQuery" /> @keyup.enter.native="handleQuery" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('报关方式')" prop="customsType"> <el-form-item :label="$t('报关方式')" prop="customsType">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('是否齐货')" > <el-form-item :label="$t('是否齐货')" >
<!--// 字段存疑--> <!--// 字段存疑-->
<dict-selector v-model="queryParams.isNeat" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" /> <dict-selector v-model="queryParams.isNeat" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable/>
</el-form-item> </el-form-item>
<!-- <el-form-item label="重货比" prop="weightRatio"> <!-- <el-form-item label="重货比" prop="weightRatio">
<el-input style="width: 100px;" v-model="molecule" placeholder="" clearable @change="moleculeChange" <el-input style="width: 100px;" v-model="molecule" placeholder="" clearable @change="moleculeChange"
...@@ -162,20 +162,80 @@ ...@@ -162,20 +162,80 @@
<el-dropdown> <el-dropdown>
<el-button type="text">{{$t('操作')}}</el-button> <el-button type="text">{{$t('操作')}}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:update']" >{{$t('编辑')}}</el-dropdown-item> <!-- 编辑 -->
<el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'deleteOrder')" v-hasPermi="['ecw:order:delete']" >{{$t('删除')}}</el-dropdown-item> <template v-if="
<el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'cancelOrder')" >{{$t('取消订单')}}</el-dropdown-item> exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
<el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'recoveryOrder')" >{{$t('恢复订单')}}</el-dropdown-item> exclude(scope.row.status, [20,21]) &&
<el-dropdown-item @click.native="feeApplicationBol = true; orderId = scope.row.orderId" >{{$t('费用申请')}}</el-dropdown-item> exclude(scope.row.shipmentState, [320,322,323]) &&
<el-dropdown-item @click.native="orderId = scope.row.orderId;orderNo = scope.row.orderNo;isShow = true" >{{$t('特需')}}</el-dropdown-item> (exclude(scope.row.inWarehouseState, [ 212, 218, 213, 214, 215]) && exclude(scope.row.status, [5,8]) )
<el-dropdown-item @click.native="$router.push(`/order/associated-order/${scope.row.orderId}`)" >{{$t('关联')}}</el-dropdown-item> ">
<el-dropdown-item @click.native="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >{{$t('互斥')}}</el-dropdown-item> <el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:update']" >{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('/order/special/' + scope.row.orderId)" v-hasPermi="['ecw:order:update']" >{{$t('特价')}}</el-dropdown-item> </template>
<el-dropdown-item @click.native="$router.push(`/order/release?orderId=${scope.row.orderId}`)" >{{$t('确认放货')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`/order/singleApply?orderNo=${scope.row.orderNo}`)" >{{$t('合单申请')}}</el-dropdown-item> <!-- 删除 -->
<el-dropdown-item @click.native="$router.push(`/order/splitApply?orderId=${scope.row.orderId}`)" >{{$t('拆单申请')}}</el-dropdown-item> <template v-if="include(scope.row.status, [0,2])">
<el-dropdown-item @click.native="showMergedLogOrderNo=scope.row.orderNo" >{{$t('合单日志')}}</el-dropdown-item> <el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'deleteOrder')" v-hasPermi="['ecw:order:delete']" >{{$t('删除')}}</el-dropdown-item>
<el-dropdown-item @click.native="showPickupLogOrderNo=scope.row.orderNo" >{{$t('提货日志')}}</el-dropdown-item> </template>
<!-- 取消 -->
<template v-if="include(scope.row.status, [2])">
<el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'cancelOrder')" >{{$t('取消订单')}}</el-dropdown-item>
</template>
<!-- 恢复 -->
<!-- <el-dropdown-item @click.native="oprateOrder(scope.row.orderId, 'recoveryOrder')" >{{$t('恢复订单')}}</el-dropdown-item>-->
<!-- 费用申请 -->
<template v-if="
exclude(scope.row.status, [0]) &&
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
exclude(scope.row.shipmentState, [320,322,323])
">
<el-dropdown-item @click.native="feeApplicationBol = true; orderId = scope.row.orderId" >{{$t('费用申请')}}</el-dropdown-item>
</template>
<!-- 特需,互斥,关联 -->
<template v-if="
exclude(scope.row.status, [0]) &&
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
exclude(scope.row.inWarehouseState, [204])
">
<el-dropdown-item @click.native="orderId = scope.row.orderId;orderNo = scope.row.orderNo;isShow = true" >{{$t('特需')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`/order/associated-order/${scope.row.orderId}`)" >{{$t('关联')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`/order/mutex-order/${scope.row.orderId}`)" >{{$t('互斥')}}</el-dropdown-item>
</template>
<!-- 特价 -->
<template v-if="
exclude(scope.row.status, [0]) &&
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
exclude(scope.row.shipmentState, [320,322,323])
">
<el-dropdown-item @click.native="$router.push('/order/special/' + scope.row.orderId)" v-hasPermi="['ecw:order:update']" >{{$t('特价')}}</el-dropdown-item>
</template>
<!-- 确认放货 -->
<template v-if="
exclude(scope.row.status, [0,2]) &&
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
exclude(scope.row.shipmentState, [320,322,323])
">
<el-dropdown-item @click.native="$router.push(`/order/release?orderId=${scope.row.orderId}`)" >{{$t('确认放货')}}</el-dropdown-item>
</template>
<!-- 合单,拆单 -->
<template v-if="
exclude(scope.row.status, [0,2]) &&
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
scope.row.shipmentState > 320
">
<el-dropdown-item @click.native="$router.push(`/order/singleApply?orderNo=${scope.row.orderNo}`)" >{{$t('合单申请')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`/order/splitApply?orderId=${scope.row.orderId}`)" >{{$t('拆单申请')}}</el-dropdown-item>
</template>
<!-- 合单日志,提货日志 -->
<el-dropdown-item @click.native="showMergedLogOrderNo=scope.row.orderNo" >{{$t('合单日志')}}</el-dropdown-item>
<el-dropdown-item @click.native="showPickupLogOrderNo=scope.row.orderNo" >{{$t('提货日志')}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
...@@ -185,11 +245,61 @@ ...@@ -185,11 +245,61 @@
<el-dropdown> <el-dropdown>
<el-button type="text">{{$t('仓库')}}</el-button> <el-button type="text">{{$t('仓库')}}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓')}}</el-dropdown-item> <!-- 入仓操作 -->
<el-dropdown-item @click.native="show = true;orderId = scope.row.orderId; " v-hasPermi="['ecw:order:update']">{{$t('退仓')}}</el-dropdown-item> <template v-if="include(scope.row.status, [0,2]) || include(scope.row.abnormalState, [1])">
<el-dropdown-item @click.native="orderId = scope.row.orderId;warehouseBol=true;" >{{$t('调仓')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓操作')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >{{$t('调拨出仓')}}</el-dropdown-item> </template>
<el-dropdown-item @click.native="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >{{$t('调拨到仓')}}</el-dropdown-item> <!-- 入仓补充 -->
<template v-if="
include(scope.row.inWarehouseState, [201,202, 208, 202, 210, 202, 211, 202, 213, 214, 215, 216]) ||
include(scope.row.abnormalState, [99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14])
">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓补充')}}</el-dropdown-item>
</template>
<!-- 入仓修改 -->
<template v-if="
include(scope.row.inWarehouseState, [202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216, 204, 205, 206])
">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓修改')}}</el-dropdown-item>
</template>
<!-- 退仓 -->
<template v-if="
include(scope.row.inWarehouseState, [201, 202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216]) &&
exclude(scope.row.abnormalState, [1])
">
<el-dropdown-item @click.native="show = true;orderId = scope.row.orderId; " v-hasPermi="['ecw:order:update']">{{$t('退仓')}}</el-dropdown-item>
</template>
<!-- 调仓 -->
<template v-if="
include(scope.row.inWarehouseState, [201, 202, 208, 202, 210, 202, 211, 202, 213, 215, 216])
">
<el-dropdown-item @click.native="orderId = scope.row.orderId;warehouseBol=true;" >{{$t('调仓')}}</el-dropdown-item>
</template>
<!-- 取消调仓 -->
<!-- <template v-if="
include(scope.row.inWarehouseState, [212,213,214])
">
<el-dropdown-item @click.native="$alert('// TODO')" >{{$t('取消调仓')}}</el-dropdown-item>
</template> -->
<!-- 调拨出仓 -->
<template v-if="
include(scope.row.inWarehouseState, [213])
">
<el-dropdown-item @click.native="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >{{$t('调拨出仓')}}</el-dropdown-item>
</template>
<!-- 调拨到仓 -->
<template v-if="
include(scope.row.inWarehouseState, [214])
">
<el-dropdown-item @click.native="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >{{$t('调拨到仓')}}</el-dropdown-item>
</template>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
...@@ -199,8 +309,25 @@ ...@@ -199,8 +309,25 @@
<el-dropdown> <el-dropdown>
<el-button type="text">{{$t('操作')}}</el-button> <el-button type="text">{{$t('操作')}}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="printTagOrderId=scope.row.orderId">{{$t('打印标签')}}</el-dropdown-item> <!-- 打印标签 -->
<el-dropdown-item @click.native="printWarehouseReceiptOrderId=scope.row.orderId">{{$t('打印入仓单')}}</el-dropdown-item> <template v-if="
exclude(scope.row.status, [0]) &&
exclude(scope.row.shipmentState, [320,322,323]) &&
exclude(scope.row.abnormalState, [5,6,7,8])
">
<el-dropdown-item @click.native="printTagOrderId=scope.row.orderId">{{$t('打印标签')}}</el-dropdown-item>
</template>
<!-- 打印入仓单 -->
<template v-if="
exclude(scope.row.status, [0, 2]) &&
exclude(scope.row.shipmentState, [320,322,323]) &&
exclude(scope.row.abnormalState, [1, 5,6,7,8])
">
<el-dropdown-item @click.native="printWarehouseReceiptOrderId=scope.row.orderId">{{$t('打印入仓单')}}</el-dropdown-item>
</template>
<!-- 打印提单 -->
<el-dropdown-item @click.native="printLadingBillInfo={tidanNO: scope.row.tidanNo, transportType: scope.row.transportId}" :disabled="!scope.row.tidanNo">{{$t('打印提单')}}</el-dropdown-item> <el-dropdown-item @click.native="printLadingBillInfo={tidanNO: scope.row.tidanNo, transportType: scope.row.transportId}" :disabled="!scope.row.tidanNo">{{$t('打印提单')}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
...@@ -340,7 +467,16 @@ export default { ...@@ -340,7 +467,16 @@ export default {
batchWarehouseAdjustment(){ batchWarehouseAdjustment(){
return this.multipleSelection.length > 0 && this.multipleSelection.every(e => e.status === 5) return this.multipleSelection.length > 0 && this.multipleSelection.every(e => e.status === 5)
}, },
include(){
return (state, arr) => {
return arr.indexOf(state) > -1
}
},
exclude(){
return (state, arr) => {
return arr.indexOf(state) == -1
}
}
}, },
created() { created() {
this.getTransportFromRoute() this.getTransportFromRoute()
......
...@@ -214,6 +214,8 @@ export default { ...@@ -214,6 +214,8 @@ export default {
getOrderSpecial(){ getOrderSpecial(){
getOrderSpecial(this.form.orderItemId).then(r => { getOrderSpecial(this.form.orderItemId).then(r => {
this.form = r.data this.form = r.data
this.form.freight = ''
this.form.clearanceFreight = ''
}) })
}, },
getOrderSpecialByApproveId(){ getOrderSpecialByApproveId(){
......
...@@ -79,9 +79,11 @@ ...@@ -79,9 +79,11 @@
prop="address" prop="address"
label="操作"> label="操作">
<template v-slot="{row}"> <template v-slot="{row}">
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount/${row.orderItemId}?orderId=${row.orderId}`)">优惠申请</el-button> <template v-if="row.originalSeaFreight !== 0 && row.originalClearanceFreight !== 0">
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/specialCommission/${row.orderItemId}`)">佣金规则</el-button> <el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount/${row.orderItemId}?orderId=${row.orderId}`)">优惠申请</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount1/${row.orderItemId}?orderId=${row.orderId}&discount=1`)">管理折扣</el-button> <el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/specialCommission/${row.orderItemId}`)">佣金规则</el-button>
<el-button size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="$router.push(`/order/discount1/${row.orderItemId}?orderId=${row.orderId}&discount=1`)">管理折扣</el-button>
</template>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -76,11 +76,12 @@ ...@@ -76,11 +76,12 @@
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button> <el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button>
<template v-else> <template v-else>
<el-button v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0" size="mini" type="text" @click="handleWarehousing($index)">追加</el-button> <template v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0">
<el-button size="mini" type="text" @click="handleWarehousing($index)">追加</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
</template>
<el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button> <el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
...@@ -29,27 +29,27 @@ ...@@ -29,27 +29,27 @@
// TODO // TODO
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('运输方式')" prop="transportType"> <el-form-item :label="$t('运输方式')" prop="transportType">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportType" formatter="number" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('出货渠道')" prop="shippingChannelId"> <el-form-item :label="$t('出货渠道')" prop="shippingChannelId">
<el-select v-model="queryParams.shippingChannelId" clearable> <el-select v-model="queryParams.shippingChannelId" clearable>
<el-option v-for="item in channelList" :key="item.id" :label="item.nameZh" :value="item.channelId" /> <el-option v-for="item in channelList" :key="item.id" :label="$l(item, 'name')" :value="item.channelId" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发地')" prop="startCityId"> <el-form-item :label="$t('始发地')" prop="startCityId">
<el-select v-model="queryParams.startCityId" clearable> <el-select v-model="queryParams.startCityId" clearable>
<el-option v-for="city in startCityList" :key="city.id" :label="city.titleZh" :value="city.id" /> <el-option v-for="city in startCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的地')" prop="destCityId"> <el-form-item :label="$t('目的地')" prop="destCityId">
<el-select v-model="queryParams.destCityId" clearable> <el-select v-model="queryParams.destCityId" clearable>
<el-option v-for="city in destCityList" :key="city.id" :label="city.titleZh" :value="city.id" /> <el-option v-for="city in destCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('审核状态')" prop="auditStatus"> <el-form-item :label="$t('审核状态')" prop="auditStatus">
<dict-selector :type="DICT_TYPE.ECW_PRICE_AUDIT_STATUS" v-model="queryParams.auditStatus" /> <dict-selector :type="DICT_TYPE.ECW_PRICE_AUDIT_STATUS" v-model="queryParams.auditStatus" clearable/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('状态')" prop="status"> <el-form-item :label="$t('状态')" prop="status">
// TODO // TODO
......
...@@ -44,10 +44,10 @@ ...@@ -44,10 +44,10 @@
<el-option v-for="dict in this.getDictDatas('company_type')" <el-option v-for="dict in this.getDictDatas('company_type')"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select--> </el-select-->
<dict-selector :type="DICT_TYPE.ECW_COMPANY_TYPE" v-model="queryParams.companyType" /> <dict-selector :type="DICT_TYPE.ECW_COMPANY_TYPE" v-model="queryParams.companyType" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('合作类型')" prop="cooperationType"> <el-form-item :label="$t('合作类型')" prop="cooperationType">
<dict-selector :type="DICT_TYPE.ECW_COOPERATION_TYPE" v-model="queryParams.cooperationType" /> <dict-selector :type="DICT_TYPE.ECW_COOPERATION_TYPE" v-model="queryParams.cooperationType" clearable/>
<!--el-select v-model="queryParams.cooperationType" placeholder="请选择合作类型" clearable size="small"> <!--el-select v-model="queryParams.cooperationType" placeholder="请选择合作类型" clearable size="small">
<el-option label="请选择字典生成" value="" /> <el-option label="请选择字典生成" value="" />
</el-select--> </el-select-->
......
...@@ -318,7 +318,7 @@ export default { ...@@ -318,7 +318,7 @@ export default {
|| this.form.type === SystemMenuTypeEnum.MENU) { || this.form.type === SystemMenuTypeEnum.MENU) {
// 如果是外链,则不进行校验 // 如果是外链,则不进行校验
const path = this.form.path const path = this.form.path
if (path.indexOf('http://') === -1 || path.indexOf('https://') === -1) { if (path && path.indexOf('http://') === -1 || path.indexOf('https://') === -1) {
// 父权限为根节点,path 必须以 / 开头 // 父权限为根节点,path 必须以 / 开头
if (this.form.parentId === 0 && path.charAt(0) !== '/') { if (this.form.parentId === 0 && path.charAt(0) !== '/') {
this.$modal.msgSuccess('前端必须以 / 开头') this.$modal.msgSuccess('前端必须以 / 开头')
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<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="fromId"> <!-- <el-form-item label="来源" prop="fromId">
<el-input v-model="queryParams.fromId" placeholder="请输入站内信来源" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.fromId" placeholder="请输入站内信来源" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>-->
<el-form-item label="发送时间"> <el-form-item label="发送时间">
<el-date-picker v-model="dateRangeSendTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker v-model="dateRangeSendTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="" align="center" prop="id" /> <el-table-column label="" align="center" prop="id" />
<el-table-column label="来源" align="center" prop="fromId" /> <!-- <el-table-column label="来源" align="center" prop="fromId" />-->
<el-table-column label="发送时间" align="center" prop="sendTime" width="180"> <el-table-column label="发送时间" align="center" prop="sendTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.sendTime) }}</span> <span>{{ parseTime(scope.row.sendTime) }}</span>
......
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