Commit ca65a30e authored by Administrator's avatar Administrator

Merge branch 'pre-release' into 'jd_dev'

Pre Release最新代码合并入捷道研发分支20241115

See merge request !98
parents f0e4a1a4 e1e318a5
import request from '@/utils/request' import request from "@/utils/request"
// 创建报价单管理 // 创建报价单管理
export function createOffer(data) { export function createOffer(data) {
return request({ return request({
url: '/ecw/offer/create', url: "/ecw/offer/create",
method: 'post', method: "post",
data: data data: data
}) })
} }
...@@ -12,8 +12,8 @@ export function createOffer(data) { ...@@ -12,8 +12,8 @@ export function createOffer(data) {
// 更新报价单管理 // 更新报价单管理
export function updateOffer(data) { export function updateOffer(data) {
return request({ return request({
url: '/ecw/offer/update', url: "/ecw/offer/update",
method: 'put', method: "put",
data: data data: data
}) })
} }
...@@ -21,24 +21,24 @@ export function updateOffer(data) { ...@@ -21,24 +21,24 @@ export function updateOffer(data) {
// 删除报价单管理 // 删除报价单管理
export function deleteOffer(id) { export function deleteOffer(id) {
return request({ return request({
url: '/ecw/offer/delete?id=' + id, url: "/ecw/offer/delete?id=" + id,
method: 'delete' method: "delete"
}) })
} }
// 获得报价单管理 // 获得报价单管理
export function getOffer(id) { export function getOffer(id) {
return request({ return request({
url: '/ecw/offer/get?offerId=' + id, url: "/ecw/offer/get?offerId=" + id,
method: 'get' method: "get"
}) })
} }
// 获得报价单管理分页 // 获得报价单管理分页
export function getOfferPage(query) { export function getOfferPage(query) {
return request({ return request({
url: '/ecw/offer/page', url: "/ecw/offer/page",
method: 'get', method: "get",
params: query params: query
}) })
} }
...@@ -46,36 +46,36 @@ export function getOfferPage(query) { ...@@ -46,36 +46,36 @@ export function getOfferPage(query) {
// 导出报价单管理 Excel // 导出报价单管理 Excel
export function exportOfferExcel(query) { export function exportOfferExcel(query) {
return request({ return request({
url: '/ecw/offer/export-excel', url: "/ecw/offer/export-excel",
method: 'get', method: "get",
params: query, params: query,
responseType: 'blob' responseType: "blob"
}) })
} }
// 更新报价单结果 // 更新报价单结果
export function updateOfferResult(data) { export function updateOfferResult(data) {
return request({ return request({
url: '/ecw/offer/update/result', url: "/ecw/offer/update/result",
method: 'put', method: "put",
data: data data: data
}) })
} }
// 获取费用清单列表 // 获取费用清单列表
export function getProductFeeList(prodCreateReqVO){ export function getProductFeeList(prodCreateReqVO) {
return request({ return request({
url: '/ecw/offer/calculation/prod-fee-List', url: "/ecw/offer/calculation/prod-fee-List",
method: 'post', method: "post",
data: prodCreateReqVO data: prodCreateReqVO
}) })
} }
// 获取费用清单 // 获取费用清单
export function getProductFee(calculationFeeParamVO){ export function getProductFee(calculationFeeParamVO) {
return request({ return request({
url: '/ecw/offer/calculation/fee-List', url: "/ecw/offer/calculation/fee-List",
method: 'post', method: "post",
data: calculationFeeParamVO data: calculationFeeParamVO
}) })
} }
...@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){ ...@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){
// 特价申请 // 特价申请
export function createOfferSpecial(data) { export function createOfferSpecial(data) {
return request({ return request({
url: '/ecw/offer/special/apply', url: "/ecw/offer/special/apply",
method: 'put', method: "put",
data: data data: data
}) })
} }
...@@ -92,8 +92,8 @@ export function createOfferSpecial(data) { ...@@ -92,8 +92,8 @@ export function createOfferSpecial(data) {
// 特价详情 // 特价详情
export function getOfferSpecial(offerProdId, params) { export function getOfferSpecial(offerProdId, params) {
return request({ return request({
url: '/ecw/offer/special/info/' + offerProdId, url: "/ecw/offer/special/info/" + offerProdId,
method: 'get', method: "get",
params params
}) })
} }
...@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) { ...@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) {
// 特价详情 // 特价详情
export function getOfferSpecialByApproveId(approveId) { export function getOfferSpecialByApproveId(approveId) {
return request({ return request({
url: '/ecw/offer/special/info?approveId=' + approveId, url: "/ecw/offer/special/info?approveId=" + approveId,
method: 'get' method: "get"
}) })
} }
// 取消报价管理 // 取消报价管理
export function cancel(id) { export function cancel(id) {
return request({ return request({
url: '/ecw/offer/cancel', url: "/ecw/offer/cancel",
method: 'delete', method: "delete",
params: {id} params: { id }
}) })
} }
// 恢复取消的报价管理 // 恢复取消的报价管理
export function recovery(id) { export function recovery(id) {
return request({ return request({
url: '/ecw/offer/recovery', url: "/ecw/offer/recovery",
method: 'delete', method: "delete",
params: {id} params: { id }
}) })
} }
// 获取部门报价单列表 // 获取部门报价单列表
export function offerDeptPage(params) { export function offerDeptPage(params) {
return request({ return request({
url: '/ecw/offer/dept/page', url: "/ecw/offer/dept/page",
method: 'get', method: "get",
params params
}) })
} }
...@@ -137,25 +136,33 @@ export function offerDeptPage(params) { ...@@ -137,25 +136,33 @@ export function offerDeptPage(params) {
// 导出部分报价单 exportDeptOfferExcel // 导出部分报价单 exportDeptOfferExcel
export function exportDeptOfferExcel(query) { export function exportDeptOfferExcel(query) {
return request({ return request({
url: '/ecw/offer/dept/export-excel', url: "/ecw/offer/dept/export-excel",
method: 'get', method: "get",
params: query, params: query,
responseType: 'blob' responseType: "blob"
}) })
} }
// 报价单 // 报价单
export function getOfferSelect(params) { export function getOfferSelect(params) {
return request({ return request({
url: '/ecw/offer/select', url: "/ecw/offer/select",
method: 'get', method: "get",
params params
}) })
} }
// 报价单 // 报价单
export function getOfferCheck(params) { export function getOfferCheck(params) {
return request({ return request({
url: '/ecw/offer/check', url: "/ecw/offer/check",
method: 'get', method: "get",
params params
}) })
} }
// 特价详情
export function getOfferNumber(offerId) {
return request({
url: "/ecw/offer/getNumber/" + offerId,
method: "get"
})
}
...@@ -150,3 +150,21 @@ export function getGuojiaAndShiAndWarehouseList(params = {}) { ...@@ -150,3 +150,21 @@ export function getGuojiaAndShiAndWarehouseList(params = {}) {
params params
}) })
} }
// 出货阶段-追加申请
export function appendApplyWhenShipment(data) {
return request({
url: '/order/order-warehouse-in/append-apply-when-shipment',
method: 'post',
data
})
}
// 出货阶段-入仓修改申请
export function updateApplyWhenShipment(data) {
return request({
url: '/order/order-warehouse-in/update-apply-when-shipment',
method: 'put',
data
})
}
...@@ -11,7 +11,10 @@ ...@@ -11,7 +11,10 @@
</el-select> </el-select>
{{$t('目的国')}}: {{$t('目的国')}}:
<el-select :placeholder="$t('请选择目的国')" v-model="destCountryId" clearable> <el-select :placeholder="$t('请选择目的国')"
v-model="destCountryIds"
multiple
clearable>
<el-option v-for="item in countryList" :key="item.id" :label="$l(item, 'title')" :value="item.id" /> <el-option v-for="item in countryList" :key="item.id" :label="$l(item, 'title')" :value="item.id" />
</el-select> </el-select>
...@@ -21,11 +24,17 @@ ...@@ -21,11 +24,17 @@
<el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> </el-select>
--> -->
<el-select :placeholder="$t('请选择目的城市')" v-model="destCityId" clearable> <el-select :placeholder="$t('请选择目的城市')"
v-model="destCityIds"
multiple
clearable>
<el-option v-for="item in AddressCity" :key="item.shi" :label="item.shiName" :value="item.shi" /> <el-option v-for="item in AddressCity" :key="item.shi" :label="item.shiName" :value="item.shi" />
</el-select> </el-select>
{{$t('目的仓')}}: {{$t('目的仓')}}:
<el-select :placeholder="$t('请选择目的仓')" v-model="destWarehouseId" clearable> <el-select :placeholder="$t('请选择目的仓')"
v-model="destWarehouseIds"
multiple
clearable>
<el-option v-for="item in AddressTown" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in AddressTown" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> </el-select>
...@@ -134,9 +143,9 @@ export default { ...@@ -134,9 +143,9 @@ export default {
countryList: [], //目的国 countryList: [], //目的国
AddressCity: [], //目的地 AddressCity: [], //目的地
AddressTown: [], //目的仓 AddressTown: [], //目的仓
destCountryId: null, destCountryIds: null,
destCityId: null, destCityIds: null,
destWarehouseId: null, destWarehouseIds: null,
} }
}, },
...@@ -283,17 +292,17 @@ export default { ...@@ -283,17 +292,17 @@ export default {
//每当值省份值改变时其下地区值进行清空 //每当值省份值改变时其下地区值进行清空
this.AddressCity = []; this.AddressCity = [];
this.AddressTown = []; this.AddressTown = [];
this.destWarehouseId = ""; this.destWarehouseIds = "";
this.destCityId = ""; this.destCityIds = "";
this.findByprovinceCode(); this.findByprovinceCode();
if (this.destCountryId == "") { if (this.destCountryIds == "") {
//1 是所有区域,2 国家,3是市, //1 是所有区域,2 国家,3是市,
this.getAddressCity() this.getAddressCity()
this.getAddressTown() this.getAddressTown()
} else if ( } else if (
this.destCountryId != "" && this.destCountryIds != "" &&
this.destCityId == "" && this.destCityIds == "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
this.getAddressTown() this.getAddressTown()
} }
...@@ -304,32 +313,32 @@ export default { ...@@ -304,32 +313,32 @@ export default {
deep: true, //深度监听 目的仓 deep: true, //深度监听 目的仓
handler() { handler() {
this.AddressTown = []; this.AddressTown = [];
this.destWarehouseId = ""; this.destWarehouseIds = "";
this.findBycityCode(); this.findBycityCode();
if ( if (
this.destCityId != "" && this.destCityIds != "" &&
this.destCountryId != "" && this.destCountryIds != "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
//获取当前城市值id,获取该城市下区域 //获取当前城市值id,获取该城市下区域
} else if ( } else if (
this.destCountryId == "" && this.destCountryIds == "" &&
this.destCityId == "" && this.destCityIds == "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
this.getAddressTown() this.getAddressTown()
} else if ( } else if (
this.destCountryId != "" && this.destCountryIds != "" &&
this.destCityId == "" && this.destCityIds == "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
this.findByprovinceCode() this.findByprovinceCode()
this.getAddressTown() this.getAddressTown()
} else if ( } else if (
this.destCountryId == "" && this.destCountryIds == "" &&
this.destCityId != "" && this.destCityIds != "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
//获取当前城市值id,获取该城市下区域 //获取当前城市值id,获取该城市下区域
...@@ -342,22 +351,22 @@ export default { ...@@ -342,22 +351,22 @@ export default {
deep: true, //深度监听 deep: true, //深度监听
handler() { handler() {
if ( if (
this.destCountryId != "" && this.destCountryIds != "" &&
this.destCityId != "" && this.destCityIds != "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
//获取当前城市值id,获取该城市下区域 //获取当前城市值id,获取该城市下区域
this.findBycityCode() this.findBycityCode()
} else if ( } else if (
this.destCountryId != "" && this.destCountryIds != "" &&
this.destCityId == "" && this.destCityIds == "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
this.getAddressTown() this.getAddressTown()
} else if ( } else if (
this.destCountryId == "" && this.destCountryIds == "" &&
this.destCityId != "" && this.destCityIds != "" &&
this.destWarehouseId == "" this.destWarehouseIds == ""
) { ) {
this.findBycityCode() this.findBycityCode()
} }
...@@ -394,7 +403,7 @@ export default { ...@@ -394,7 +403,7 @@ export default {
if (this.type == 'sea') return if (this.type == 'sea') return
let query = { let query = {
// cityId: this.importCity // cityId: this.importCity
cityId: this.destCityId cityId: this.destCityIds
} }
getChannelList(query).then(res => { getChannelList(query).then(res => {
this.channelList = res.data this.channelList = res.data
...@@ -407,9 +416,9 @@ export default { ...@@ -407,9 +416,9 @@ export default {
}, },
changeOption(){ changeOption(){
if(!this.option) return if(!this.option) return
this.destCountryId = +this.option.destCountryId || null this.destCountryIds = +this.option.destCountryId || null
this.destCityId = +this.option.destCityId || null this.destCityIds = +this.option.destCityId || null
this.destWarehouseId = +this.option.destWarehouseId || null this.destWarehouseIds = +this.option.destWarehouseId || null
// this.importCity = +this.option.importCity || null // this.importCity = +this.option.importCity || null
this.exportCity = +this.option.exportCity || null this.exportCity = +this.option.exportCity || null
this.transportType = this.option.transportId || null this.transportType = this.option.transportId || null
...@@ -428,14 +437,14 @@ export default { ...@@ -428,14 +437,14 @@ export default {
if(this.exportCity){ if(this.exportCity){
params.startCityId = this.exportCity params.startCityId = this.exportCity
} }
if(this.destCountryId){ if(this.destCountryIds){
params.destCountryId = this.destCountryId params.destCountryIds = this.destCountryId
} }
if(this.destCityId){ if(this.destCityIds){
params.destCityId = this.destCityId params.destCityIds = this.destCityIds
} }
if(this.destWarehouseId){ if(this.destWarehouseIds){
params.destWarehouseId = this.destWarehouseId params.destWarehouseIds = this.destWarehouseIds
} }
const res = await openedRouterList(params) const res = await openedRouterList(params)
this.openedRouterList = res.data.filter(item => { this.openedRouterList = res.data.filter(item => {
...@@ -511,18 +520,18 @@ export default { ...@@ -511,18 +520,18 @@ export default {
}) })
}, },
findByprovinceCode() { findByprovinceCode() {
if (this.destCountryId != null && this.destCountryId != '') { if (this.destCountryIds != null && this.destCountryIds != '') {
//获取当前省份值id,获取该省份下城市 destCountryId provinceCode //获取当前省份值id,获取该省份下城市 destCountryId provinceCode
getRegionList(2, this.destCountryId).then(({ data }) => { getRegionList(2, this.destCountryIds).then(({ data }) => {
this.AddressCity = data; this.AddressCity = data;
}) })
} }
}, },
findBycityCode() { findBycityCode() {
if (this.destCityId != null && this.destCityId != '') { if (this.destCityIds != null && this.destCityIds != '') {
//获取当前城市值id,获取该城市下区域 //获取当前城市值id,获取该城市下区域
getRegionList(3, this.destCityId).then(({ data }) => { getRegionList(3, this.destCityIds).then(({ data }) => {
this.AddressTown = data; this.AddressTown = data;
}) })
} }
......
...@@ -15,3 +15,13 @@ ...@@ -15,3 +15,13 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.custom-form-1 {
padding-right: 40px;
.el-textarea,
.dict-selector,
.el-select {
width: 100%;
}
}
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
<div class="btns"> <div class="btns">
<el-button type="danger" size="small" @click="openError(scope.row)">{{ $t("异常") }}</el-button> <el-button type="danger" size="small" @click="openError(scope.row)">{{ $t("异常") }}</el-button>
<el-button v-if="pageData.boxCustomsBackVO && pageData.boxCustomsBackVO.overMachineStatus == 2 && pageData.boxCustomsBackVO.overMachineAbnormalStatus == 2" plain type="primary" size="small" @click="$router.push('/order/warehousing-update?id=' + scope.row.orderId)">{{ $t("入仓修改 ") }}</el-button> <el-button v-if="pageData.boxCustomsBackVO && pageData.boxCustomsBackVO.overMachineStatus == 2 && pageData.boxCustomsBackVO.overMachineAbnormalStatus == 2" plain type="primary" size="small" @click="$router.push('/order/warehousing-update?id=' + scope.row.orderId)">{{ $t("入仓修改 ") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_revoke(scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("撤销到仓") }}</el-button> <el-button type="primary" size="small" @click="order_warehouse_check_revoke(scope.row.orderId)" v-if="scope.row.inWarehouseState == 218 && !isSuccessReview && !isUnderReview">{{ $t("撤销到仓") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button> <el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button>
<el-button type="primary" size="small" @click="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button> <el-button type="primary" size="small" @click="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button>
</div> </div>
...@@ -619,6 +619,11 @@ export default { ...@@ -619,6 +619,11 @@ export default {
const { currNode, shipmentObj } = this.$attrs const { currNode, shipmentObj } = this.$attrs
return shipmentObj[currNode.keyName] === 183 ? true : false return shipmentObj[currNode.keyName] === 183 ? true : false
}, },
/* 是否卸柜审核成功 */
isSuccessReview() {
const { currNode, shipmentObj } = this.$attrs
return shipmentObj[currNode.keyName] === 185 ? true : false
},
// 部分信息 // 部分信息
getSectionInfo() { getSectionInfo() {
const { totalStatistics, secStatistics } = this.pageData const { totalStatistics, secStatistics } = this.pageData
......
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<div class="btns"> <div class="btns">
<el-button type="danger" size="small" @click="openError(scope.row)">{{ $t("异常") }}</el-button> <el-button type="danger" size="small" @click="openError(scope.row)">{{ $t("异常") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_revoke(scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("撤销到仓") }}</el-button> <el-button type="primary" size="small" @click="order_warehouse_check_revoke(scope.row.orderId)" v-if="scope.row.inWarehouseState == 218 && !isSuccessReview && !isUnderReview">{{ $t("撤销到仓") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button> <el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button>
<el-button type="primary" size="small" @click="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button> <el-button type="primary" size="small" @click="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button>
</div> </div>
......
...@@ -34,14 +34,15 @@ ...@@ -34,14 +34,15 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('有效期')" prop="validDays"> <el-form-item :label="$t('结束时间')">
<el-input <el-date-picker
v-model.trim="queryParams.validDays" v-model="dateRangeEndTime"
:placeholder="$t('请输入有效期')" type="daterange"
clearable :start-placeholder="$t('开始日期')"
@keyup.enter.native="handleQuery" value-format="yyyy-MM-dd"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" :end-placeholder="$t('结束日期')"
/> >
</el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('创建时间')"> <el-form-item :label="$t('创建时间')">
...@@ -103,7 +104,6 @@ ...@@ -103,7 +104,6 @@
<div>{{ parseTime(scope.row.createTime) }}</div> <div>{{ parseTime(scope.row.createTime) }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('有效期(天)')" align="center" prop="validDays" width="90"/>
<el-table-column :label="$t('开始时间')" align="center" prop="startTime" width="100"> <el-table-column :label="$t('开始时间')" align="center" prop="startTime" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
......
<template> <template>
<div class="customer-follow"> <div class="customer-follow">
<el-dialog append-to-body :title="$t('客户跟进')" :visible.sync="customerFollow.dialogVisible" :before-close="customerFollowClose" width="900px"> <el-dialog append-to-body :title="$t('客户跟进')" :visible.sync="customerFollow.dialogVisible" :before-close="customerFollowClose" width="1200px">
<el-form ref="customerFollowForm" :model="form" label-width="120px"> <el-form class="custom-form-1" ref="customerFollowForm" :model="form" label-width="120px">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('编号')" prop="number"> <el-form-item :label="$t('编号')" prop="number">
<el-input v-model="form.number" :placeholder="$t('请输入编号')" disabled /> <el-input v-model="form.number" :placeholder="$t('请输入编号')" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进状态')"> <el-form-item :label="$t('跟进状态')">
<el-select v-model="form.status" :placeholder="$t('请选择')" disabled> <el-select v-model="form.status" :placeholder="$t('请选择')" disabled>
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('客户编号')"> <el-form-item :label="$t('客户编号')">
<el-input v-model="form.customerNumber" :placeholder="$t('请输入客户编号')" disabled /> <el-input v-model="form.customerNumber" :placeholder="$t('请输入客户编号')" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进类型')" required> <el-form-item :label="$t('跟进类型')" required>
<el-select v-model="form.followType" clearable :placeholder="$t('请选择')" @change="handleFollowType" :disabled="isView || !!offerId"> <el-select v-model="form.followType" clearable :placeholder="$t('请选择')" @change="handleFollowType" :disabled="isView || !!offerId">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8" v-if="form.followType == 2">
<el-form-item :label="$t('报价单')" required prop="offerId">
<el-input :value="form.offerNumber" readonly>
<el-button slot="append" icon="el-icon-search" @click="CustomerFollowSelectOffer = true" v-if="!(isView || offerId)"></el-button>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('跟进时间')" required> <el-form-item :label="$t('跟进时间')" required>
<el-date-picker v-model="form.followTime" clearable type="datetime" :placeholder="$t('请选择')" :disabled="isView" /> <el-date-picker v-model="form.followTime" clearable type="datetime" :placeholder="$t('请选择')" :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="customerId"> <el-col :span="8" v-if="customerId">
<el-form-item :label="$t('联系人')" required> <el-form-item :label="$t('联系人')" required>
<el-select v-model="form.contactId" clearable :placeholder="$t('请选择')" :disabled="isView" @change="changeContactUser"> <el-select v-model="form.contactId" clearable :placeholder="$t('请选择')" :disabled="isView" @change="changeContactUser">
<el-option v-for="(item, index) in customerContactsList" :key="index" :label="item.name" :value="item.id"> </el-option> <el-option v-for="(item, index) in customerContactsList" :key="index" :label="item.name" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-else> <el-col :span="8" v-else>
<el-form-item :label="$t('联系人')" required> <el-form-item :label="$t('联系人')" required>
<div class="contact"> <div class="contact">
<el-input v-model="form.contactName" :value="form.customerContactsId" placeholder="" disabled /> <el-input v-model="form.contactName" :value="form.customerContactsId" placeholder="" disabled />
...@@ -48,47 +55,47 @@ ...@@ -48,47 +55,47 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('联系方式')"> <el-form-item :label="$t('联系方式')">
<el-input v-model="form.contactPhone" disabled /> <el-input v-model="form.contactPhone" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('客户经理')" required> <el-form-item :label="$t('客户经理')" required>
<el-select v-model="form.followUserId" clearable :placeholder="$t('请选择')" :disabled="isView"> <el-select v-model="form.followUserId" clearable :placeholder="$t('请选择')" :disabled="isView">
<el-option v-for="item in serviceUserList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option> <el-option v-for="item in serviceUserList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进方式')" required> <el-form-item :label="$t('跟进方式')" required>
<dict-selector ref="dictMethod" v-model="form.followMethod" clearable :disabled="isView" :type="DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"></dict-selector> <dict-selector ref="dictMethod" v-model="form.followMethod" clearable :disabled="isView" :type="DICT_TYPE.CUSTOMER_FOLLOWUP_METHOD"></dict-selector>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('上一级跟进单')" prop="parentNumber"> <el-form-item :label="$t('上一级跟进单')" prop="parentNumber">
<el-input v-model="form.parentNumber" :placeholder="$t('请输入上一级跟进单')" disabled /> <el-input v-model="form.parentNumber" :placeholder="$t('请输入上一级跟进单')" disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('跟进结果')" prop="followMethod"> <el-form-item :label="$t('跟进结果')" prop="followMethod">
<el-select v-model="form.resultType" clearable :placeholder="$t('请选择')" :disabled="isView"> <el-select v-model="form.resultType" clearable :placeholder="$t('请选择')" :disabled="isView">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_RESULT_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('目的')" prop="purpose"> <el-form-item :label="$t('目的')" prop="purpose">
<el-input type="textarea" :rows="2" v-model="form.purpose" :placeholder="$t('请输入目的')" maxlength="200" show-word-limit :disabled="isView" /> <el-input type="textarea" :rows="3" v-model="form.purpose" :placeholder="$t('请输入目的')" maxlength="200" show-word-limit :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('跟进情况')"> <el-form-item :label="$t('跟进情况')">
<el-input rows="3" class="text_style" type="textarea" v-model="form.feedback" maxlength="500" show-word-limit :disabled="isView" /> <el-input rows="3" class="text_style" type="textarea" v-model="form.feedback" maxlength="500" show-word-limit :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('附件')" prop="attatchment"> <el-form-item :label="$t('附件')" prop="attatchment">
<FileUpload :limit="5" :isShowTip="true" v-model="form.attatchment" :fileType="fileType" :disabled="isView" /> <FileUpload :limit="5" :isShowTip="true" v-model="form.attatchment" :fileType="fileType" :disabled="isView" />
</el-form-item> </el-form-item>
...@@ -98,12 +105,12 @@ ...@@ -98,12 +105,12 @@
<el-date-picker v-model="form.nextTime" type="datetime" :placeholder="$t('请选择')" :disabled="isView" @change="changeNextTime"> </el-date-picker> <el-date-picker v-model="form.nextTime" type="datetime" :placeholder="$t('请选择')" :disabled="isView" @change="changeNextTime"> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="24">
<el-form-item :label="$t('下一步计划')" prop="nextPlan"> <el-form-item :label="$t('下一步计划')" prop="nextPlan">
<el-input type="textarea" :rows="3" v-model="form.nextPlan" :placeholder="$t('请输入下一步计划')" maxlength="500" show-word-limit :disabled="isView" /> <el-input type="textarea" :rows="3" v-model="form.nextPlan" :placeholder="$t('请输入下一步计划')" maxlength="500" show-word-limit :disabled="isView" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20" v-if="isView"> <el-col :span="24" v-if="isView">
<el-form-item> <el-form-item>
<div style="text-align: right"> <div style="text-align: right">
<!-- <el-button size="mini" icon="el-icon-collection" type="primary" @click="$emit('handleCustomerFollowAdd', form)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>--> <!-- <el-button size="mini" icon="el-icon-collection" type="primary" @click="$emit('handleCustomerFollowAdd', form)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>-->
...@@ -111,26 +118,26 @@ ...@@ -111,26 +118,26 @@
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('创建人')" prop="founder"> <el-form-item :label="$t('创建人')" prop="founder">
<el-select v-model="form.creatorName" disabled :placeholder="$t('请选择')"> <el-select v-model="form.creatorName" disabled :placeholder="$t('请选择')">
<el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option> <el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('创建时间')" prop="createTime"> <el-form-item :label="$t('创建时间')" prop="createTime">
<el-date-picker v-model="form.createTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker> <el-date-picker v-model="form.createTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('最后更新人')"> <el-form-item :label="$t('最后更新人')">
<el-select v-model="form.updaterName" disabled> <el-select v-model="form.updaterName" disabled>
<el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option> <el-option v-for="item in allSimplList" :key="item.id" :label="item.nickname" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item :label="$t('最后更新时间')"> <el-form-item :label="$t('最后更新时间')">
<el-date-picker v-model="form.updateTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker> <el-date-picker v-model="form.updateTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker>
</el-form-item> </el-form-item>
...@@ -166,7 +173,7 @@ ...@@ -166,7 +173,7 @@
<script> <script>
import { createCustomerFollow, getCustomerFollowPage, getCustomerFollowPage2, addCustomerFollow, getCustomerFollowList, editCustomerFollow, getFollowupNewNumber } from "@/api/ecw/customerFollow" import { createCustomerFollow, getCustomerFollowPage, getCustomerFollowPage2, addCustomerFollow, getCustomerFollowList, editCustomerFollow, getFollowupNewNumber } from "@/api/ecw/customerFollow"
import { getCustomerContactsSelect } from "@/api/ecw/customerContacts" import { getCustomerContactsSelect } from "@/api/ecw/customerContacts"
import { getOfferPage } from "@/api/ecw/offer" import { getOfferPage, getOfferNumber } from "@/api/ecw/offer"
import { DICT_TYPE, getDictDataLabel } from "@/utils/dict" import { DICT_TYPE, getDictDataLabel } from "@/utils/dict"
import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts" import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts"
import { listAllSimpl, listServiceUser, listSimpleUsers } from "@/api/system/user" import { listAllSimpl, listServiceUser, listSimpleUsers } from "@/api/system/user"
...@@ -213,7 +220,9 @@ export default { ...@@ -213,7 +220,9 @@ export default {
} }
}, },
offerDialogVisible: true, offerDialogVisible: true,
form: {}, form: {
offerId: undefined
},
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
total: 10, total: 10,
...@@ -247,6 +256,17 @@ export default { ...@@ -247,6 +256,17 @@ export default {
this.allSimplList = r.data this.allSimplList = r.data
}) })
}, },
watch: {
"form.offerId"(v) {
if (v) {
getOfferNumber(v).then((r) => {
this.form.offerNumber = r.data
})
} else {
this.form.offerNumber = ""
}
}
},
methods: { methods: {
selectOffer(offerId) { selectOffer(offerId) {
this.form.offerId = offerId this.form.offerId = offerId
...@@ -317,7 +337,6 @@ export default { ...@@ -317,7 +337,6 @@ export default {
handleFollowType(val) { handleFollowType(val) {
console.log(val) console.log(val)
if (val == 2) { if (val == 2) {
this.CustomerFollowSelectOffer = true
} else { } else {
this.form.offerId = undefined this.form.offerId = undefined
} }
...@@ -339,6 +358,7 @@ export default { ...@@ -339,6 +358,7 @@ export default {
nextTime: undefined, nextTime: undefined,
number: undefined, number: undefined,
offerId: this.offerId, offerId: this.offerId,
offerNumber: undefined,
parentId: undefined, parentId: undefined,
parentNumber: undefined, parentNumber: undefined,
purpose: undefined, purpose: undefined,
...@@ -386,6 +406,10 @@ export default { ...@@ -386,6 +406,10 @@ export default {
this.$modal.msgError(this.$t("请选择跟进方式")) this.$modal.msgError(this.$t("请选择跟进方式"))
return return
} }
if (!this.form.offerId && this.form.followType == 2) {
this.$modal.msgError(this.$t("请选择报价单"))
return
}
if (status === 0) { if (status === 0) {
this.saveSubmitData(status) this.saveSubmitData(status)
...@@ -457,6 +481,7 @@ export default { ...@@ -457,6 +481,7 @@ export default {
...row, ...row,
id: null, id: null,
parentNumber: row.number, parentNumber: row.number,
purpose: row.nextPlan,
followTime: row.nextTime, followTime: row.nextTime,
nextTime: "", nextTime: "",
number: r.data.number, number: r.data.number,
......
...@@ -61,7 +61,7 @@ export default { ...@@ -61,7 +61,7 @@ export default {
}, },
methods: { methods: {
submit() { submit() {
if (!this.status) { if (this.status == null || this.status == undefined) {
return this.$message.warning(this.$t('请选择修改的状态!')); return this.$message.warning(this.$t('请选择修改的状态!'));
} }
console.log(this.followupIds, 'this.followupIds') console.log(this.followupIds, 'this.followupIds')
......
...@@ -854,7 +854,7 @@ export default { ...@@ -854,7 +854,7 @@ export default {
currecyList: [], currecyList: [],
enterOpenSeaTime: undefined, enterOpenSeaTime: undefined,
showBaseFlag: false, showBaseFlag: false,
showShippingFlag: false, showShippingFlag: true,
showSettingFlag: false, showSettingFlag: false,
showFinanceFlag: false, showFinanceFlag: false,
competitorList: [] competitorList: []
......
...@@ -228,21 +228,21 @@ ...@@ -228,21 +228,21 @@
--> -->
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">--> <!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />--> <!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">--> <!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
...@@ -667,7 +667,7 @@ ...@@ -667,7 +667,7 @@
</div> </div>
</el-dialog> </el-dialog>
<customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list> <customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @refresh="handleQuery" @close="customerFollowVisible = false" v-if="customerFollowVisible" />
<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> <transfer-customer :show.sync="transferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
<add-potential-custom ref="potentialCustom" @change="getList"></add-potential-custom> <add-potential-custom ref="potentialCustom" @change="getList"></add-potential-custom>
...@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer" ...@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType" import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product" import { getProductList } from "@/api/ecw/product"
import { listMySimpleDepts } from "@/api/system/dept" import { listMySimpleDepts } from "@/api/system/dept"
import UserSelector from "@/components/UserSelector/index.vue"; import UserSelector from "@/components/UserSelector/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"; import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import ProductSelector from "@/components/ProductSelector/index.vue"; import ProductSelector from "@/components/ProductSelector/index.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default { export default {
name: "EcwCustomerIndex", name: "EcwCustomerIndex",
components: { components: {
...@@ -1011,7 +1011,6 @@ export default { ...@@ -1011,7 +1011,6 @@ export default {
this.getList() this.getList()
}, },
methods: { methods: {
onCompetitorChange(row, competitor) { onCompetitorChange(row, competitor) {
// row.goodsType = product ? product.typeId : null // row.goodsType = product ? product.typeId : null
row.id = !competitor row.id = !competitor
......
...@@ -672,7 +672,7 @@ ...@@ -672,7 +672,7 @@
</div> </div>
</el-dialog> </el-dialog>
<customer-follow ref="customerFollow" v-if="customerFollowVisible" :customer-id="id" :customer-service="customer.customerService" :customer-number="customer.number" @refresh="logListCommonRefresh" /> <customer-follow ref="customerFollow" v-if="customerFollowVisible" @close="customerFollowVisible = false" :customer-id="id" :customer-service="customer.customerService" :customer-number="customer.number" @refresh="logListCommonRefresh" />
</div> </div>
</template> </template>
......
...@@ -168,12 +168,10 @@ ...@@ -168,12 +168,10 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="$router.push({path:'/customer/add-edit/0',query:{isCustomerServiceConfirmed:true,}})" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="$router.push({ path: '/customer/add-edit/0', query: { isCustomerServiceConfirmed: true } })" v-hasPermi="['ecw:customer: treat-create']">{{ $t("新增") }}</el-button>
v-hasPermi="['ecw:customer: treat-create']">{{$t('新增')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:customer:treat-export']">{{ $t("导出") }}</el-button>
v-hasPermi="['ecw:customer:treat-export']">{{$t('导出')}}</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
...@@ -182,15 +180,15 @@ ...@@ -182,15 +180,15 @@
<el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange"> <el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" fixed></el-table-column> <el-table-column type="selection" width="55" fixed></el-table-column>
<el-table-column :label="$t('客户编号')" align="center" fixed> <el-table-column :label="$t('客户编号')" align="center" fixed>
<template v-slot="{row}"> <template v-slot="{ row }">
<router-link :to="`/customer/query/${row.id}`" class="link-type"> <router-link :to="`/customer/query/${row.id}`" class="link-type">
{{ row.number }} {{ row.number }}
</router-link> </router-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户名称')" align="center" fixed> <el-table-column :label="$t('客户名称')" align="center" fixed>
<template v-slot="{row}"> <template v-slot="{ row }">
<p style="display:inline-block;white-space: pre-wrap;">{{$l(row, 'name')}}</p> <p style="display: inline-block; white-space: pre-wrap">{{ $l(row, "name") }}</p>
</template> </template>
</el-table-column> </el-table-column>
<!-- <!--
...@@ -207,41 +205,49 @@ ...@@ -207,41 +205,49 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">--> <!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>--> <!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >--> <!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户类别')" align="center" prop="status"> <el-table-column :label="$t('客户类别')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.type"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('角色')" align="center" prop="status"> <el-table-column :label="$t('角色')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.roles"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column> <el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column>
...@@ -253,10 +259,7 @@ ...@@ -253,10 +259,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户来源')"> <el-table-column :label="$t('客户来源')">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_SOURCE" :value="scope.row.source" />
:type="DICT_TYPE.CUSTOMER_SOURCE"
:value="scope.row.source"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('业务国家')"> <el-table-column :label="$t('业务国家')">
...@@ -279,8 +282,7 @@ ...@@ -279,8 +282,7 @@
{{ getProductTypeNames(row.productTypes) }} {{ getProductTypeNames(row.productTypes) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> <el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('年度发货次数')" align="center"> <el-table-column :label="$t('年度发货次数')" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ row.numYearly }} {{ row.numYearly }}
...@@ -293,13 +295,13 @@ ...@@ -293,13 +295,13 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('入公海时间')" align="center" width="160"> <el-table-column :label="$t('入公海时间')" align="center" width="160">
<template v-slot="{ row }"> <template v-slot="{ row }">
{{ parseTime( row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime)}} {{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('入仓确认')" align="center"> <el-table-column :label="$t('入仓确认')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t('') }}</el-tag> <el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t("") }}</el-tag>
<el-tag type="info" v-else>{{ $t('') }}</el-tag> <el-tag type="info" v-else>{{ $t("") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('控货无收货人')" align="center"> <el-table-column :label="$t('控货无收货人')" align="center">
...@@ -324,14 +326,10 @@ ...@@ -324,14 +326,10 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('获取方式')" align="center"> <el-table-column :label="$t('获取方式')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_GET_METHOD" :value="scope.row.getMethod" />
:type="DICT_TYPE.CUSTOMER_GET_METHOD"
:value="scope.row.getMethod"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center"> <el-table-column :label="$t('创建人')" prop="createUsername" align="center"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('创建时间')" align="center" width="160"> <el-table-column :label="$t('创建时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
...@@ -339,51 +337,38 @@ ...@@ -339,51 +337,38 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('最后更新时间')" align="center" width="160"> <el-table-column :label="$t('最后更新时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span >{{ parseTime(scope.row.updateTime) }}</span> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('分配时间')" align="center" width="180"> <el-table-column :label="$t('分配时间')" align="center" width="180">
<template v-slot="{row}"> <template v-slot="{ row }">
<span>{{ parseTime(row.customerServiceAssignedTime ) }}</span> <span>{{ parseTime(row.customerServiceAssignedTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right"> <el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="'/customer/query/' + scope.row.id"> <router-link :to="'/customer/query/' + scope.row.id">
<el-button v-has-permi="['ecw:customer:treat-view']" size="mini" style="margin-right: 10px" type="text" >查看</el-button> <el-button v-has-permi="['ecw:customer:treat-view']" size="mini" style="margin-right: 10px" type="text">查看</el-button>
</router-link> </router-link>
<el-button size="mini" type="text" @click="handleConfirmService(scope.row)" <el-button size="mini" type="text" @click="handleConfirmService(scope.row)" v-hasPermi="['ecw:customer:treat-accept']">{{ $t("确认接收") }}</el-button>
v-hasPermi="['ecw:customer:treat-accept']">{{$t('确认接收')}}</el-button> <el-button size="mini" type="text" @click="handOver(scope.row)" v-hasPermi="['ecw:customer:treat-transfer']">{{ $t("移交") }}</el-button>
<el-button size="mini" type="text" @click="handOver(scope.row)" <router-link style="margin: 0 10px" to="/offer/create">
v-hasPermi="['ecw:customer:treat-transfer']">{{$t('移交')}}</el-button>
<router-link style="margin: 0 10px;" to="/offer/create">
<el-button v-has-permi="['ecw:customer:treat-quoted-price']" size="mini" type="text"> <el-button v-has-permi="['ecw:customer:treat-quoted-price']" size="mini" type="text">
{{$t('报价')}} {{ $t("报价") }}
</el-button> </el-button>
</router-link> </router-link>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:customer:treat-perfect']">{{ $t("完善") }}</el-button>
v-hasPermi="['ecw:customer:treat-perfect']">{{$t('完善')}}</el-button>
<!-- <el-button v-has-permi="['ecw:customer:treat-recovery']" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button>--> <!-- <el-button v-has-permi="['ecw:customer:treat-recovery']" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button>-->
<el-button <el-button v-has-permi="['ecw:customer:setting']" size="mini" type="text" icon="el-icon-user" @click="handleSetting(scope.row)">{{ $t("设置") }}</el-button>
v-has-permi="['ecw:customer:setting']"
size="mini"
type="text"
icon="el-icon-user"
@click="handleSetting(scope.row)"
>{{ $t("设置") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
@pagination="getList"/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户名称')" prop="name"> <el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="form.name" :placeholder="$t('请输入客户名称')" /> <el-input v-model="form.name" :placeholder="$t('请输入客户名称')" />
...@@ -392,24 +377,21 @@ ...@@ -392,24 +377,21 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('国家')" prop="country"> <el-form-item :label="$t('国家')" prop="country">
<el-select v-model="form.country" :placeholder="$t('请选择国家')"> <el-select v-model="form.country" :placeholder="$t('请选择国家')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户等级')" prop="level"> <el-form-item :label="$t('客户等级')" prop="level">
<el-select v-model="form.level" :placeholder="$t('请选择客户等级')"> <el-select v-model="form.level" :placeholder="$t('请选择客户等级')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('所属代理')" prop="agentId"> <el-form-item :label="$t('所属代理')" prop="agentId">
<el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')"> <el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -421,8 +403,7 @@ ...@@ -421,8 +403,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户类别')" prop="type"> <el-form-item :label="$t('客户类别')" prop="type">
<el-select v-model="form.type" :placeholder="$t('请选择客户类别')"> <el-select v-model="form.type" :placeholder="$t('请选择客户类别')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -434,13 +415,11 @@ ...@@ -434,13 +415,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('公司名称')" prop="company"> <el-form-item :label="$t('公司名称')" prop="company">
<el-input v-model="form.company" :placeholder="$t('请输入公司名称')" /> <el-input v-model="form.company" :placeholder="$t('请输入公司名称')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户生日')" prop="birthday"> <el-form-item :label="$t('客户生日')" prop="birthday">
<el-input v-model="form.birthday" :placeholder="$t('请输入客户生日')" /> <el-input v-model="form.birthday" :placeholder="$t('请输入客户生日')" />
</el-form-item> </el-form-item>
...@@ -456,44 +435,35 @@ ...@@ -456,44 +435,35 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户来源')" prop="source"> <el-form-item :label="$t('客户来源')" prop="source">
<el-select v-model="form.source" :placeholder="$t('请选择客户来源')"> <el-select v-model="form.source" :placeholder="$t('请选择客户来源')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('结算方式')" prop="balance"> <el-form-item :label="$t('结算方式')" prop="balance">
<el-select v-model="form.balance" :placeholder="$t('请选择结算方式')"> <el-select v-model="form.balance" :placeholder="$t('请选择结算方式')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户经理')" prop="customerService"> <el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')"> <el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')">
<el-option v-for="dict in serviceStaffOptions" <el-option v-for="dict in serviceStaffOptions" :key="dict.id" :label="dict.nickname" :value="dict.id" />
:key="dict.id" :label="dict.nickname" :value="dict.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('图片')" prop="picture"> <el-form-item :label="$t('图片')" prop="picture">
<el-input v-model="form.picture" :placeholder="$t('请输入图片')" /> <el-input v-model="form.picture" :placeholder="$t('请输入图片')" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户状态')" prop="status"> <el-form-item :label="$t('客户状态')" prop="status">
<el-select v-model="form.status" :placeholder="$t('请选择客户状态')"> <el-select v-model="form.status" :placeholder="$t('请选择客户状态')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -528,9 +498,6 @@ ...@@ -528,9 +498,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-form-item :label="$t('关联会员账号')" prop="memberId"> <el-form-item :label="$t('关联会员账号')" prop="memberId">
<el-input v-model="form.memberId" :placeholder="$t('请输入关联会员账号')" /> <el-input v-model="form.memberId" :placeholder="$t('请输入关联会员账号')" />
</el-form-item> </el-form-item>
...@@ -564,8 +531,8 @@ ...@@ -564,8 +531,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{$t('确 定')}}</el-button> <el-button type="primary" @click="submitForm">{{ $t("确 定") }}</el-button>
<el-button @click="cancel">{{$t('取 消')}}</el-button> <el-button @click="cancel">{{ $t("取 消") }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
...@@ -575,65 +542,52 @@ ...@@ -575,65 +542,52 @@
<el-form ref="handOverForm" :model="handOverForm" :rules="rules" label-width="80px"> <el-form ref="handOverForm" :model="handOverForm" :rules="rules" label-width="80px">
<el-form-item :label="$t('客户经理')" prop="customerServiceId"> <el-form-item :label="$t('客户经理')" prop="customerServiceId">
<el-select v-model="handOverForm.customerServiceId" :placeholder="$t('请选择客户经理')" clearable filterable> <el-select v-model="handOverForm.customerServiceId" :placeholder="$t('请选择客户经理')" clearable filterable>
<el-option v-for="user in serviceStaffOptions" <el-option v-for="user in serviceStaffOptions" :key="user.id" :value="user.id" :label="user.nickname" />
:key="user.id" :value="user.id"
:label="user.nickname" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitHandOverForm">{{$t('确 定')}}</el-button> <el-button type="primary" @click="submitHandOverForm">{{ $t("确 定") }}</el-button>
<el-button @click="cancelHandOver">{{$t('取 消')}}</el-button> <el-button @click="cancelHandOver">{{ $t("取 消") }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<transfer-customer :show.sync="openHandOver" :customer-ids.sync="handOverForm.customerIdList"></transfer-customer> <transfer-customer :show.sync="openHandOver" :customer-ids.sync="handOverForm.customerIdList"></transfer-customer>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-setting <customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
ref="customerSetting"
@refresh="getList"
></customer-setting>
</div> </div>
</template> </template>
<script> <script>
import { import { updateCustomer, getCustomer, exportCustomerExcel, getWaitForConfirmList, confirm, waiteConfirmExportExcel, waiteConfirEexportExcel, recycleUnconfirmedCustomer, competitorListAll } from "@/api/ecw/customer"
updateCustomer,
getCustomer,
exportCustomerExcel,
getWaitForConfirmList,
confirm,
waiteConfirmExportExcel, waiteConfirEexportExcel, recycleUnconfirmedCustomer,
competitorListAll
} from "@/api/ecw/customer";
import { listServiceUser, listAllSimpl } from "@/api/system/user" import { listServiceUser, listAllSimpl } from "@/api/system/user"
import {getDictDatas, DICT_TYPE, getDictDatas2} from '@/utils/dict' import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import {CommonStatusEnum} from '@/utils/constants' import { CommonStatusEnum } from "@/utils/constants"
import {handOverCustomer} from "../../../api/ecw/customer"; import { handOverCustomer } from "../../../api/ecw/customer"
import {getCountryListAll} from "@/api/ecw/country"; import { getCountryListAll } from "@/api/ecw/country"
import {getCreditPage} from "@/api/customer/credit"; import { getCreditPage } from "@/api/customer/credit"
import transferCustomer from "@/views/ecw/customer/transferCustomer.vue"; import transferCustomer from "@/views/ecw/customer/transferCustomer.vue"
import Contacts from "@/views/ecw/customer/components/contacts.vue"; import Contacts from "@/views/ecw/customer/components/contacts.vue"
import CustomerSetting from "../customer/components/customerSetting.vue"; import CustomerSetting from "../customer/components/customerSetting.vue"
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"; import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"
import { getNodeList } from "@/api/ecw/node"; import { getNodeList } from "@/api/ecw/node"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee,changeCustomerDefaultBilling } from "@/api/ecw/customer"; import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType"; import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product"; import { getProductList } from "@/api/ecw/product"
import { listMySimpleDepts } from "@/api/system/dept"; import { listMySimpleDepts } from "@/api/system/dept"
import Template from "@/views/cms/template/index.vue"; import Template from "@/views/cms/template/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"; import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default { export default {
name: "EcwCustomerconfirmIndex", name: "EcwCustomerconfirmIndex",
activated() { activated() {
this.getList(); this.getList()
}, },
computed:{ computed: {
DICT_TYPE() { DICT_TYPE() {
return DICT_TYPE return DICT_TYPE
}, },
isChinese(){ isChinese() {
return this.$i18n.locale === 'zh_CN' return this.$i18n.locale === "zh_CN"
}, },
channel() { channel() {
return (val) => { return (val) => {
...@@ -642,20 +596,18 @@ export default { ...@@ -642,20 +596,18 @@ export default {
.filter((i) => (val.split(",") || []).includes(i.value)) .filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn)) .map((i) => (this.isChinese ? i.label : i.labelEn))
.join("") .join("")
: ""; : ""
}; }
}, },
customerSelectFn() { customerSelectFn() {
if (this.recommended.length > 0) { if (this.recommended.length > 0) {
let i = this.customerSelect.find( let i = this.customerSelect.find((item) => item.id === this.recommended[0].id)
(item) => item.id === this.recommended[0].id
);
if (!i) { if (!i) {
this.customerSelect.push(this.recommended[0]); this.customerSelect.push(this.recommended[0])
} }
return this.customerSelect; return this.customerSelect
} else { } else {
return this.customerSelect; return this.customerSelect
} }
}, },
combinedQueryParams() { combinedQueryParams() {
...@@ -677,26 +629,26 @@ export default { ...@@ -677,26 +629,26 @@ export default {
queryParams.endFirstDealTime = this.firstDealTime[1] queryParams.endFirstDealTime = this.firstDealTime[1]
} }
if (this.weightYearly.value) { if (this.weightYearly.value) {
let key = 'eqWeightYearly' let key = "eqWeightYearly"
if (this.weightYearly.key == 'leNumberKey') { if (this.weightYearly.key == "leNumberKey") {
key = 'leWeightYearly' key = "leWeightYearly"
} else if (this.weightYearly.key == 'geNumberKey') { } else if (this.weightYearly.key == "geNumberKey") {
key = 'geWeightYearly' key = "geWeightYearly"
} }
queryParams[key] = this.weightYearly.value; queryParams[key] = this.weightYearly.value
} }
if (this.numYearly.value) { if (this.numYearly.value) {
let key = 'eqNumYearly' let key = "eqNumYearly"
if (this.numYearly.key == 'leNumberKey') { if (this.numYearly.key == "leNumberKey") {
key = 'leNumYearly' key = "leNumYearly"
} else if (this.numYearly.key == 'geNumberKey') { } else if (this.numYearly.key == "geNumberKey") {
key = 'geNumYearly' key = "geNumYearly"
} }
queryParams[key] = this.numYearly.value; queryParams[key] = this.numYearly.value
} }
return queryParams; return queryParams
}, }
}, },
components: { components: {
CompetitorSelector, CompetitorSelector,
...@@ -730,7 +682,7 @@ export default { ...@@ -730,7 +682,7 @@ export default {
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
/*number: null, /*number: null,
name: null, name: null,
level: null, level: null,
...@@ -751,14 +703,14 @@ export default { ...@@ -751,14 +703,14 @@ export default {
handOverForm: {}, handOverForm: {},
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }], name: [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
weightUnit: [{ required: true, message: this.$t('重货标准(CBM)不能为空'), trigger: "blur" }], weightUnit: [{ required: true, message: this.$t("重货标准(CBM)不能为空"), trigger: "blur" }]
}, },
serviceStaffOptions: [], serviceStaffOptions: [],
customerServiceList:[], customerServiceList: [],
countryList:[], countryList: [],
creditList:[], creditList: [],
selectCustomerList: [], selectCustomerList: [],
enterOpenSeaTime: [], enterOpenSeaTime: [],
customerServiceConfirmedTime: [], customerServiceConfirmedTime: [],
...@@ -769,47 +721,47 @@ export default { ...@@ -769,47 +721,47 @@ export default {
allSimplList: [], allSimplList: [],
weightYearly: { weightYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
numYearly: { numYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
productTypeList: [], productTypeList: [],
productList: [], productList: [],
competitorList: [], competitorList: [],
deptList: [], deptList: []
}; }
}, },
created() { created() {
this.getList(); this.getList()
getCreditPage({page:1,rows:999}).then(r => { getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list this.creditList = r.data.list
}) })
// 获得客服人员列表 // 获得客服人员列表
listServiceUser().then(response => { listServiceUser().then((response) => {
this.serviceStaffOptions = response.data; this.serviceStaffOptions = response.data
}) })
listServiceUser().then(r=>{ listServiceUser().then((r) => {
this.customerServiceList = r.data; this.customerServiceList = r.data
}) })
getCountryListAll().then(r => { getCountryListAll().then((r) => {
this.countryList = r.data this.countryList = r.data
}) })
this.getCustomerSelect(); this.getCustomerSelect()
getNodeList().then((r) => { getNodeList().then((r) => {
this.getNodeLists = r.data; this.getNodeLists = r.data
}); })
listAllSimpl().then((r) => { listAllSimpl().then((r) => {
this.allSimplList = r.data; this.allSimplList = r.data
}); })
getProductTypeList().then((r) => { getProductTypeList().then((r) => {
this.productTypeList = r.data; this.productTypeList = r.data
}); })
competitorListAll().then((r) => { competitorListAll().then((r) => {
this.competitorList = r.data; this.competitorList = r.data
}) })
listMySimpleDepts().then(response => { listMySimpleDepts().then((response) => {
this.deptList = response.data this.deptList = response.data
}) })
}, },
...@@ -839,38 +791,36 @@ export default { ...@@ -839,38 +791,36 @@ export default {
const country = this.countryList.find((e) => e.id === cellValue) const country = this.countryList.find((e) => e.id === cellValue)
return this.isChinese ? country?.nameZh : country?.nameEn return this.isChinese ? country?.nameZh : country?.nameEn
}, },
handleSelectionChange(val){ handleSelectionChange(val) {
this.selectCustomerList = val.map(i => i.id); this.selectCustomerList = val.map((i) => i.id)
}, },
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams, ...this.combinedQueryParams}; let params = { ...this.queryParams, ...this.combinedQueryParams }
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false); // this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false);
// 执行查询 // 执行查询
getWaitForConfirmList(params).then(response => { getWaitForConfirmList(params).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
}); })
}, },
remoteMethod(val) { remoteMethod(val) {
this.getCustomerSelect(val); this.getCustomerSelect(val)
}, },
getCustomerSelect(val = "") { getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then( getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then((res) => {
(res) => { this.customerSelect = res.data.list
this.customerSelect = res.data.list; })
}
);
}, },
handleSelectProductType(val) { handleSelectProductType(val) {
if (val && val.length >= 1) { if (val && val.length >= 1) {
this.queryParams.productIds = [] this.queryParams.productIds = []
getProductList({ typeIds: val }).then((r) => { getProductList({ typeIds: val }).then((r) => {
this.productList = r.data this.productList = r.data
}); })
} else { } else {
this.queryParams.productIds = [] this.queryParams.productIds = []
this.productList = [] this.productList = []
...@@ -878,8 +828,8 @@ export default { ...@@ -878,8 +828,8 @@ export default {
}, },
/** 取消按钮 */ /** 取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false
this.reset(); this.reset()
}, },
/** 表单重置 */ /** 表单重置 */
reset() { reset() {
...@@ -916,49 +866,49 @@ export default { ...@@ -916,49 +866,49 @@ export default {
taxRate: undefined, taxRate: undefined,
remarks: undefined, remarks: undefined,
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined
}; }
this.resetForm("form"); this.resetForm("form")
}, },
/** 表单重置 */ /** 表单重置 */
resetHandOverForm() { resetHandOverForm() {
this.form = { this.form = {
customerIdList: undefined, customerIdList: undefined,
customerServiceId: undefined customerServiceId: undefined
}; }
this.resetForm("handOverForm"); this.resetForm("handOverForm")
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNo = 1; this.queryParams.pageNo = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRangeCreateTime = []; this.dateRangeCreateTime = []
this.enterOpenSeaTime = [] this.enterOpenSeaTime = []
this.customerServiceConfirmedTime = [] this.customerServiceConfirmedTime = []
this.firstDealTime = [] this.firstDealTime = []
this.resetForm("queryForm"); this.resetForm("queryForm")
this.queryParams = { this.queryParams = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
}; }
this.weightYearly.value = ""; this.weightYearly.value = ""
this.numYearly.value = ""; this.numYearly.value = ""
this.handleQuery(); this.handleQuery()
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset()
this.open = true; this.open = true
this.title = this.$t('添加客户'); this.title = this.$t("添加客户")
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset()
const id = row.id; const id = row.id
this.$router.push({path:'/customer/perfect/'+id,query:{isCustomerServiceConfirmed:true,}}); this.$router.push({ path: "/customer/perfect/" + id, query: { isCustomerServiceConfirmed: true } })
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
// this.form = response.data; // this.form = response.data;
// this.open = true; // this.open = true;
...@@ -967,49 +917,56 @@ export default { ...@@ -967,49 +917,56 @@ export default {
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleConfirmService(row) { handleConfirmService(row) {
const id = row.id; const id = row.id
this.$modal.confirm(this.$t('是否确认接收客户')+'["' + row.name + '"]?').then(function() { this.$modal
return confirm({"customerId": id}); .confirm(this.$t("是否确认接收客户") + '["' + row.name + '"]?')
}).then(() => { .then(function () {
this.getList(); return confirm({ customerId: id })
this.$modal.msgSuccess(this.$t('接收成功')); })
}).catch(() => {}); .then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("接收成功"))
})
.catch(() => {})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handOver(row) { handOver(row) {
// this.resetHandOverForm(); // this.resetHandOverForm();
this.openHandOver = true; this.openHandOver = true
this.handOverForm.customerIdList = [row.id]; this.handOverForm.customerIdList = [row.id]
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (!valid) { if (!valid) {
return; return
} }
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
updateCustomer(this.form).then(response => { updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('修改成功')); this.$modal.msgSuccess(this.$t("修改成功"))
this.open = false; this.open = false
this.getList(); this.getList()
}); })
return; return
} }
}); })
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + id + this.$t('"的数据项?')).then(function() { this.$modal
return deleteCustomer(id); .confirm(this.$t('是否确认删除客户编号为"') + id + this.$t('"的数据项?'))
}).then(() => { .then(function () {
this.getList(); return deleteCustomer(id)
this.$modal.msgSuccess(this.$t('删除成功')); })
}).catch(() => {}); .then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("删除成功"))
})
.catch(() => {})
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
...@@ -1019,85 +976,86 @@ export default { ...@@ -1019,85 +976,86 @@ export default {
// params.pageSize = undefined; // params.pageSize = undefined;
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); // this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出我的待接受客户数据项?')).then(() => { this.$modal
waiteConfirEexportExcel().then(()=>{ .confirm(this.$t("是否确认导出我的待接受客户数据项?"))
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载')) .then(() => {
waiteConfirEexportExcel().then(() => {
this.$message.success(this.$t("已加入导出队列,请稍后在下载日志中下载"))
})
}) })
}).catch(() => {}); .catch(() => {})
}, },
/** 提交按钮 */ /** 提交按钮 */
submitHandOverForm() { submitHandOverForm() {
// 移交的提交 // 移交的提交
handOverCustomer(this.handOverForm).then(response => { handOverCustomer(this.handOverForm).then((response) => {
this.$modal.msgSuccess(this.$t('移交成功')); this.$modal.msgSuccess(this.$t("移交成功"))
this.openHandOver = false; this.openHandOver = false
this.getList(); this.getList()
}); })
}, },
/** 取消按钮 */ /** 取消按钮 */
cancelHandOver() { cancelHandOver() {
this.openHandOver = false; this.openHandOver = false
this.handOverForm = { this.handOverForm = {
customerId: undefined, customerId: undefined,
customerIdList : undefined customerIdList: undefined
}; }
}, },
handleSetting(row) { handleSetting(row) {
this.$refs['customerSetting'].dialogVisible = true this.$refs["customerSetting"].dialogVisible = true
this.$nextTick(_ => { this.$nextTick((_) => {
this.$refs['customerSetting'].init(row.id) this.$refs["customerSetting"].init(row.id)
}) })
}, },
getBusiCountryNames(ids) { getBusiCountryNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.countryList.forEach(item => { this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn) strArr.push(this.isChinese ? item.nameZh : item.nameEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPickupPointNames(ids) { getPickupPointNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.getNodeLists.forEach(item => { this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getProductTypeNames(ids) { getProductTypeNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.toString().split(',') const idsArr = ids.toString().split(",")
const strArr = [] const strArr = []
this.productTypeList.forEach(item => { this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPromoterName(id) { getPromoterName(id) {
if (id) { if (id) {
let strName = '' let strName = ""
for(const item of this.customerSelectFn) { for (const item of this.customerSelectFn) {
if (item.id == id) { if (item.id == id) {
strName = item.name strName = item.name
break break
...@@ -1109,5 +1067,5 @@ export default { ...@@ -1109,5 +1067,5 @@ export default {
} }
} }
} }
}; }
</script> </script>
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
...@@ -169,17 +168,14 @@ ...@@ -169,17 +168,14 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:customer:distribution-create']">{{ $t("新增") }}</el-button>
v-hasPermi="['ecw:customer:distribution-create']">{{$t('新增')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:customer:distribution-export']">{{ $t("导出") }}</el-button>
v-hasPermi="['ecw:customer:distribution-export']">{{$t('导出')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-col :span="1.5" > <el-col :span="1.5">
<el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="batchTransferShow = true;" <el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="batchTransferShow = true" v-hasPermi="['ecw:customer:distribution-transfer']">{{ $t("批量移交") }}</el-button>
v-hasPermi="['ecw:customer:distribution-transfer']">{{$t('批量移交')}}</el-button>
</el-col> </el-col>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
...@@ -189,13 +185,13 @@ ...@@ -189,13 +185,13 @@
<el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange"> <el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" fixed></el-table-column> <el-table-column type="selection" width="55" fixed></el-table-column>
<el-table-column :label="$t('客户编号')" align="center" prop="number"> <el-table-column :label="$t('客户编号')" align="center" prop="number">
<template v-slot="{row}"> <template v-slot="{ row }">
{{row.number}} {{ row.number }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" > <el-table-column :label="$t('客户名称')" align="center" prop="name">
<template v-slot="{row}"> <template v-slot="{ row }">
<p style="display:inline-block;white-space: pre-wrap;">{{$l(row, 'name')}}</p> <p style="display: inline-block; white-space: pre-wrap">{{ $l(row, "name") }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户状态')" align="center" prop="status"> <el-table-column :label="$t('客户状态')" align="center" prop="status">
...@@ -204,41 +200,49 @@ ...@@ -204,41 +200,49 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">--> <!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>--> <!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >--> <!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户类别')" align="center" prop="status"> <el-table-column :label="$t('客户类别')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.type"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('角色')" align="center" prop="status"> <el-table-column :label="$t('角色')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} {{
<!-- <dict-tag--> getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles || "").split(","))
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"--> .map((e) => (isChinese ? e.label : e.labelEn))
<!-- :value="scope.row.roles"--> .join(", ")
<!-- />--> }}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column> <el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column>
...@@ -250,10 +254,7 @@ ...@@ -250,10 +254,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户来源')"> <el-table-column :label="$t('客户来源')">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_SOURCE" :value="scope.row.source" />
:type="DICT_TYPE.CUSTOMER_SOURCE"
:value="scope.row.source"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('业务国家')"> <el-table-column :label="$t('业务国家')">
...@@ -276,8 +277,7 @@ ...@@ -276,8 +277,7 @@
{{ getProductTypeNames(row.productTypes) }} {{ getProductTypeNames(row.productTypes) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> <el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('年度发货次数')" align="center"> <el-table-column :label="$t('年度发货次数')" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ row.numYearly }} {{ row.numYearly }}
...@@ -290,13 +290,13 @@ ...@@ -290,13 +290,13 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('入公海时间')" align="center" width="160"> <el-table-column :label="$t('入公海时间')" align="center" width="160">
<template v-slot="{ row }"> <template v-slot="{ row }">
{{ parseTime( row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime)}} {{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('入仓确认')" align="center"> <el-table-column :label="$t('入仓确认')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t('') }}</el-tag> <el-tag type="success" v-if="scope.row.arrivalConfirm == 1">{{ $t("") }}</el-tag>
<el-tag type="info" v-else>{{ $t('') }}</el-tag> <el-tag type="info" v-else>{{ $t("") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('控货无收货人')" align="center"> <el-table-column :label="$t('控货无收货人')" align="center">
...@@ -321,14 +321,10 @@ ...@@ -321,14 +321,10 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('获取方式')" align="center"> <el-table-column :label="$t('获取方式')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag <dict-tag :type="DICT_TYPE.CUSTOMER_GET_METHOD" :value="scope.row.getMethod" />
:type="DICT_TYPE.CUSTOMER_GET_METHOD"
:value="scope.row.getMethod"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center"> <el-table-column :label="$t('创建人')" prop="createUsername" align="center"> </el-table-column>
</el-table-column>
<el-table-column :label="$t('创建时间')" align="center" width="160"> <el-table-column :label="$t('创建时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
...@@ -336,85 +332,63 @@ ...@@ -336,85 +332,63 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('最后更新时间')" align="center" width="160"> <el-table-column :label="$t('最后更新时间')" align="center" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span >{{ parseTime(scope.row.updateTime) }}</span> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right"> <el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<router-link :to="'/customer/query/' + scope.row.id"> <router-link :to="'/customer/query/' + scope.row.id">
<el-button v-has-permi="['ecw:customer:distribution-view']" size="mini" style="margin-right: 10px" type="text" >查看</el-button> <el-button v-has-permi="['ecw:customer:distribution-view']" size="mini" style="margin-right: 10px" type="text">查看</el-button>
</router-link> </router-link>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['ecw:customer:distribution-update']">{{ $t("编辑") }}</el-button>
v-hasPermi="['ecw:customer:distribution-update']">{{$t('编辑')}}</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['ecw:customer:distribution-delete']">{{ $t("删除") }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="distribution(scope.row)" v-hasPermi="['ecw:customer:distribution-customer-service']">{{ $t("分配客服") }}</el-button>
v-hasPermi="['ecw:customer:distribution-delete']">{{$t('删除')}}</el-button> <el-button v-has-permi="['ecw:customer:setting']" size="mini" type="text" icon="el-icon-user" @click="handleSetting(scope.row)">{{ $t("设置") }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="distribution(scope.row)"
v-hasPermi="['ecw:customer:distribution-customer-service']">{{$t('分配客服')}}</el-button>
<el-button
v-has-permi="['ecw:customer:setting']"
size="mini"
type="text"
icon="el-icon-user"
@click="handleSetting(scope.row)"
>{{ $t("设置") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 移交 --> <!-- 移交 -->
<el-dialog <el-dialog center :title="$t('客服')" :visible.sync="transferShow" width="30%">
center <div style="width: 100%; min-height: 200px; text-align: center">
:title="$t('客服')" <!-- <el-radio-group v-model="service">-->
:visible.sync="transferShow" <!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
width="30%"> <!-- </el-radio-group>-->
<div style="width: 100%;min-height: 200px;text-align: center;">
<!-- <el-radio-group v-model="service">-->
<!-- <el-radio style="margin: 5px;" v-for="(item,index) in customerServiceList" :key="index" :label="item.id">{{item.nickname}}</el-radio>-->
<!-- </el-radio-group>-->
<el-select filterable v-model="service"> <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-option v-for="(item, index) in customerServiceList" :key="index" :label="item.nickname" :value="item.id"></el-option>
</el-select> </el-select>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="transferShow = false">{{$t('取 消')}}</el-button> <el-button @click="transferShow = false">{{ $t("取 消") }}</el-button>
<el-button type="primary" @click="transferFn">{{$t('确 定')}}</el-button> <el-button type="primary" @click="transferFn">{{ $t("确 定") }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
@pagination="getList"/>
<transfer-customer :show.sync="batchTransferShow" :customer-ids.sync="selectCustomerList"></transfer-customer> <transfer-customer :show.sync="batchTransferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-setting <customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
ref="customerSetting"
@refresh="getList"
></customer-setting>
</div> </div>
</template> </template>
<script> <script>
import { import { createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer, exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel, competitorListAll } from "@/api/ecw/customer"
createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer, import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel, import upload from "@/components/ImageUpload"
competitorListAll import { listServiceUser, listAllSimpl } from "@/api/system/user"
} from "@/api/ecw/customer"; import { getCountryListAll } from "@/api/ecw/country"
import { getDictDatas, DICT_TYPE, getDictDatas2 } from '@/utils/dict'; import { getCreditPage } from "@/api/customer/credit"
import upload from '@/components/ImageUpload' import transferCustomer from "@/views/ecw/customer/transferCustomer"
import {listServiceUser, listAllSimpl} from "@/api/system/user"; import Template from "@/views/cms/template/index.vue"
import {getCountryListAll} from "@/api/ecw/country"; import Contacts from "@/views/ecw/customer/components/contacts.vue"
import {getCreditPage} from "@/api/customer/credit"; import CustomerSetting from "../customer/components/customerSetting.vue"
import transferCustomer from "@/views/ecw/customer/transferCustomer"; import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"
import Template from "@/views/cms/template/index.vue"; import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import Contacts from "@/views/ecw/customer/components/contacts.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
import CustomerSetting from "../customer/components/customerSetting.vue"; import { getNodeList } from "@/api/ecw/node"
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"; import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"; import { getProductTypeList } from "@/api/ecw/productType"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import { getProductList } from "@/api/ecw/product"
import { getNodeList } from "@/api/ecw/node"; import { listMySimpleDepts } from "@/api/system/dept"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee,changeCustomerDefaultBilling } from "@/api/ecw/customer";
import { getProductTypeList } from "@/api/ecw/productType";
import { getProductList } from "@/api/ecw/product";
import { listMySimpleDepts } from "@/api/system/dept";
export default { export default {
name: "EcwCustomertobeassignedIndex", name: "EcwCustomertobeassignedIndex",
...@@ -434,7 +408,7 @@ export default { ...@@ -434,7 +408,7 @@ export default {
data() { data() {
return { return {
customerFollowVisible: false, customerFollowVisible: false,
batchTransferShow:false, batchTransferShow: false,
getDictDatas, getDictDatas,
getDictDatas2, getDictDatas2,
DICT_TYPE, DICT_TYPE,
...@@ -453,11 +427,11 @@ export default { ...@@ -453,11 +427,11 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
dateRangeCreateTime: [], dateRangeCreateTime: [],
customerServiceList:[], customerServiceList: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
/*number: null, /*number: null,
name: null, name: null,
level: null, level: null,
...@@ -477,25 +451,25 @@ export default { ...@@ -477,25 +451,25 @@ export default {
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }], name: [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
country: [{ required: true, message: this.$t('国家不能为空'), trigger: "blur" }], country: [{ required: true, message: this.$t("国家不能为空"), trigger: "blur" }],
level: [{ required: true, message: this.$t('客户等级不能为空'), trigger: "blur" }], level: [{ required: true, message: this.$t("客户等级不能为空"), trigger: "blur" }],
type: [{ required: true, message: this.$t('客户类别不能为空'), trigger: "blur" }], type: [{ required: true, message: this.$t("客户类别不能为空"), trigger: "blur" }],
// createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }], // createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }], source: [{ required: true, message: this.$t("客户来源不能为空"), trigger: "blur" }],
customerService: [{ required: true, message: this.$t('客户经理不能为空'), trigger: "blur" }], customerService: [{ required: true, message: this.$t("客户经理不能为空"), trigger: "blur" }],
status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }], status: [{ required: true, message: this.$t("客户状态不能为空"), trigger: "blur" }],
founder: [{ required: true, message: this.$t('创建人不能为空'), trigger: "blur" }], founder: [{ required: true, message: this.$t("创建人不能为空"), trigger: "blur" }]
}, },
// 网点 // 网点
nodeList: [], nodeList: [],
showLine: false, showLine: false,
service:undefined,//客服 service: undefined, //客服
transferData:undefined,//移交数据 transferData: undefined, //移交数据
transferShow:false, transferShow: false,
creditList:[], creditList: [],
selectCustomerList:[], selectCustomerList: [],
countryList:[], countryList: [],
enterOpenSeaTime: [], enterOpenSeaTime: [],
customerServiceConfirmedTime: [], customerServiceConfirmedTime: [],
firstDealTime: [], firstDealTime: [],
...@@ -505,48 +479,48 @@ export default { ...@@ -505,48 +479,48 @@ export default {
allSimplList: [], allSimplList: [],
weightYearly: { weightYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
numYearly: { numYearly: {
key: "eqNumberKey", key: "eqNumberKey",
value: "", value: ""
}, },
productTypeList: [], productTypeList: [],
productList: [], productList: [],
competitorList: [], competitorList: [],
deptList: [], deptList: []
}; }
}, },
created() { created() {
getCountryListAll().then(r => { getCountryListAll().then((r) => {
console.log(r,'国家') console.log(r, "国家")
this.countryList = r.data this.countryList = r.data
}) })
getCreditPage({page:1,rows:999}).then(r => { getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list this.creditList = r.data.list
}) })
this.getList(); this.getList()
listServiceUser().then(r=>{ listServiceUser().then((r) => {
console.log(r,'客服'); console.log(r, "客服")
this.customerServiceList = r.data; this.customerServiceList = r.data
}) })
// getNodeList().then(r => { // getNodeList().then(r => {
// this.nodeList = r.data // this.nodeList = r.data
// }) // })
this.getCustomerSelect(); this.getCustomerSelect()
getNodeList().then((r) => { getNodeList().then((r) => {
this.getNodeLists = r.data; this.getNodeLists = r.data
}); })
listAllSimpl().then((r) => { listAllSimpl().then((r) => {
this.allSimplList = r.data; this.allSimplList = r.data
}); })
getProductTypeList().then((r) => { getProductTypeList().then((r) => {
this.productTypeList = r.data; this.productTypeList = r.data
}); })
competitorListAll().then((r) => { competitorListAll().then((r) => {
this.competitorList = r.data; this.competitorList = r.data
}) })
listMySimpleDepts().then(response => { listMySimpleDepts().then((response) => {
this.deptList = response.data this.deptList = response.data
}) })
}, },
...@@ -560,8 +534,8 @@ export default { ...@@ -560,8 +534,8 @@ export default {
const country = this.countryList.find((e) => e.id === cellValue) const country = this.countryList.find((e) => e.id === cellValue)
return this.isChinese ? country?.nameZh : country?.nameEn return this.isChinese ? country?.nameZh : country?.nameEn
}, },
handleSelectionChange(val){ handleSelectionChange(val) {
this.selectCustomerList = val.map(i => i.id); this.selectCustomerList = val.map((i) => i.id)
}, },
handleCustomerFollowLink(row) { handleCustomerFollowLink(row) {
this.customerFollowVisible = true this.customerFollowVisible = true
...@@ -571,33 +545,31 @@ export default { ...@@ -571,33 +545,31 @@ export default {
}, },
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams, ...this.combinedQueryParams}; let params = { ...this.queryParams, ...this.combinedQueryParams }
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false); this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime", false)
// 执行查询 // 执行查询
getCustomerToBeAssigned(params).then(response => { getCustomerToBeAssigned(params).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
}); })
}, },
remoteMethod(val) { remoteMethod(val) {
this.getCustomerSelect(val); this.getCustomerSelect(val)
}, },
getCustomerSelect(val = "") { getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then( getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then((res) => {
(res) => { this.customerSelect = res.data.list
this.customerSelect = res.data.list; })
}
);
}, },
handleSelectProductType(val) { handleSelectProductType(val) {
if (val && val.length >= 1) { if (val && val.length >= 1) {
this.queryParams.productIds = [] this.queryParams.productIds = []
getProductList({ typeIds: val }).then((r) => { getProductList({ typeIds: val }).then((r) => {
this.productList = r.data this.productList = r.data
}); })
} else { } else {
this.queryParams.productIds = [] this.queryParams.productIds = []
this.productList = [] this.productList = []
...@@ -605,8 +577,8 @@ export default { ...@@ -605,8 +577,8 @@ export default {
}, },
/** 取消按钮 */ /** 取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false
this.reset(); this.reset()
}, },
/** 表单重置 */ /** 表单重置 */
reset() { reset() {
...@@ -645,44 +617,44 @@ export default { ...@@ -645,44 +617,44 @@ export default {
taxRate: undefined, taxRate: undefined,
remarks: undefined, remarks: undefined,
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined
}; }
this.resetForm("form"); this.resetForm("form")
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNo = 1; this.queryParams.pageNo = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.dateRangeCreateTime = []; this.dateRangeCreateTime = []
this.enterOpenSeaTime = [] this.enterOpenSeaTime = []
this.customerServiceConfirmedTime = [] this.customerServiceConfirmedTime = []
this.firstDealTime = [] this.firstDealTime = []
this.resetForm("queryForm"); this.resetForm("queryForm")
this.queryParams = { this.queryParams = {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10
}; }
this.weightYearly.value = ""; this.weightYearly.value = ""
this.numYearly.value = ""; this.numYearly.value = ""
this.handleQuery(); this.handleQuery()
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.$router.push('/customer/add-edit/0') this.$router.push("/customer/add-edit/0")
// this.reset(); // this.reset();
// this.open = true; // this.open = true;
// this.title = this.$t("添加客户"); // this.title = this.$t("添加客户");
}, },
/** 查看按钮操作 */ /** 查看按钮操作 */
handleView(row) { handleView(row) {
this.$router.push('/customer/query/' + row.id) this.$router.push("/customer/query/" + row.id)
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.$router.push('/customer/edit-distribution/' + row.id) this.$router.push("/customer/edit-distribution/" + row.id)
// this.reset(); // this.reset();
// const id = row.id; // const id = row.id;
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
...@@ -693,120 +665,127 @@ export default { ...@@ -693,120 +665,127 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (!valid) { if (!valid) {
// return; // return;
} }
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
updateCustomer(this.form).then(response => { updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('修改成功')); this.$modal.msgSuccess(this.$t("修改成功"))
this.open = false; this.open = false
this.getList(); this.getList()
}); })
return; return
} }
// 添加的提交 // 添加的提交
createCustomer(this.form).then(response => { createCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('新增成功')); this.$modal.msgSuccess(this.$t("新增成功"))
this.open = false; this.open = false
this.getList(); this.getList()
}); })
}); })
}, },
/** 移交按钮操作 */ /** 移交按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + row.number + this.$t('"的数据项?')).then(function() { this.$modal
return deleteCustomer(id); .confirm(this.$t('是否确认删除客户编号为"') + row.number + this.$t('"的数据项?'))
}).then(() => { .then(function () {
this.getList(); return deleteCustomer(id)
this.$modal.msgSuccess(this.$t('删除成功')); })
}).catch(() => {}); .then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("删除成功"))
})
.catch(() => {})
}, },
//分配客服 //分配客服
distribution(row){ distribution(row) {
// this.service = row.customerService; // this.service = row.customerService;
// this.transferData = row; // this.transferData = row;
this.selectCustomerList = [row.id] this.selectCustomerList = [row.id]
this.batchTransferShow =true; this.batchTransferShow = true
}, },
transferFn(){ transferFn() {
if(!this.service){ if (!this.service) {
return this.$message.warning(this.$t('请选择客户经理!')); return this.$message.warning(this.$t("请选择客户经理!"))
} }
handOverCustomer({ handOverCustomer({
customerServiceId:this.service, customerServiceId: this.service,
customerIdList :[this.transferData.id] customerIdList: [this.transferData.id]
}).then(r=>{ }).then((r) => {
if(r.code === 0){ if (r.code === 0) {
this.transferShow = false; this.transferShow = false
this.service = ''; this.service = ""
this.getList(); this.getList()
this.$message.success(this.$t('移交成功!')); this.$message.success(this.$t("移交成功!"))
} }
}) })
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.$modal.confirm(this.$t('是否确认导出待分配客户数据项?')).then(response => { this.$modal
waitDistributionExportExcel().then(()=>{ .confirm(this.$t("是否确认导出待分配客户数据项?"))
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载')) .then((response) => {
waitDistributionExportExcel().then(() => {
this.$message.success(this.$t("已加入导出队列,请稍后在下载日志中下载"))
}) })
}).catch(() => {}); })
.catch(() => {})
}, },
handleSetting(row) { handleSetting(row) {
this.$refs['customerSetting'].dialogVisible = true this.$refs["customerSetting"].dialogVisible = true
this.$nextTick(_ => { this.$nextTick((_) => {
this.$refs['customerSetting'].init(row.id) this.$refs["customerSetting"].init(row.id)
}) })
}, },
getBusiCountryNames(ids) { getBusiCountryNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.countryList.forEach(item => { this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn) strArr.push(this.isChinese ? item.nameZh : item.nameEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPickupPointNames(ids) { getPickupPointNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.split(',') const idsArr = ids.split(",")
const strArr = [] const strArr = []
this.getNodeLists.forEach(item => { this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getProductTypeNames(ids) { getProductTypeNames(ids) {
if (ids) { if (ids) {
const idsArr = ids.toString().split(',') const idsArr = ids.toString().split(",")
const strArr = [] const strArr = []
this.productTypeList.forEach(item => { this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) { if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn) strArr.push(this.isChinese ? item.titleZh : item.titleEn)
} }
}) })
return strArr.length > 0 ? strArr.join(',') : null return strArr.length > 0 ? strArr.join(",") : null
} else { } else {
return null return null
} }
}, },
getPromoterName(id) { getPromoterName(id) {
if (id) { if (id) {
let strName = '' let strName = ""
for(const item of this.customerSelectFn) { for (const item of this.customerSelectFn) {
if (item.id == id) { if (item.id == id) {
strName = item.name strName = item.name
break break
...@@ -821,7 +800,7 @@ export default { ...@@ -821,7 +800,7 @@ export default {
changeCustomerDefaultPay({ changeCustomerDefaultPay({
customerIdList: this.selectCustomerList, customerIdList: this.selectCustomerList,
defaultPay: true defaultPay: true
}).then(_ => { }).then((_) => {
this.$message.success(this.$t("操作成功")) this.$message.success(this.$t("操作成功"))
this.getList() this.getList()
}) })
...@@ -830,7 +809,7 @@ export default { ...@@ -830,7 +809,7 @@ export default {
changeCustomerNoConsignee({ changeCustomerNoConsignee({
customerIdList: this.selectCustomerList, customerIdList: this.selectCustomerList,
noConsigee: true noConsigee: true
}).then(_ => { }).then((_) => {
this.$message.success(this.$t("操作成功")) this.$message.success(this.$t("操作成功"))
this.getList() this.getList()
}) })
...@@ -839,23 +818,23 @@ export default { ...@@ -839,23 +818,23 @@ export default {
changeCustomerDefaultBilling({ changeCustomerDefaultBilling({
customerIdList: this.selectCustomerList, customerIdList: this.selectCustomerList,
defaultBilling: true defaultBilling: true
}).then(_ => { }).then((_) => {
this.$message.success(this.$t("操作成功")) this.$message.success(this.$t("操作成功"))
this.getList() this.getList()
}) })
}
}, },
}, watch: {
watch:{ selectCustomerList(val) {
selectCustomerList(val){ if (val.length === 0) {
if(val.length === 0){
this.getList() this.getList()
this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.clearSelection()
}
} }
}, },
}, computed: {
computed:{ isChinese() {
isChinese(){ return this.$i18n.locale === "zh_CN"
return this.$i18n.locale === 'zh_CN'
}, },
channel() { channel() {
return (val) => { return (val) => {
...@@ -864,20 +843,18 @@ export default { ...@@ -864,20 +843,18 @@ export default {
.filter((i) => (val.split(",") || []).includes(i.value)) .filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn)) .map((i) => (this.isChinese ? i.label : i.labelEn))
.join("") .join("")
: ""; : ""
}; }
}, },
customerSelectFn() { customerSelectFn() {
if (this.recommended.length > 0) { if (this.recommended.length > 0) {
let i = this.customerSelect.find( let i = this.customerSelect.find((item) => item.id === this.recommended[0].id)
(item) => item.id === this.recommended[0].id
);
if (!i) { if (!i) {
this.customerSelect.push(this.recommended[0]); this.customerSelect.push(this.recommended[0])
} }
return this.customerSelect; return this.customerSelect
} else { } else {
return this.customerSelect; return this.customerSelect
} }
}, },
combinedQueryParams() { combinedQueryParams() {
...@@ -899,26 +876,26 @@ export default { ...@@ -899,26 +876,26 @@ export default {
queryParams.endFirstDealTime = this.firstDealTime[1] queryParams.endFirstDealTime = this.firstDealTime[1]
} }
if (this.weightYearly.value) { if (this.weightYearly.value) {
let key = 'eqWeightYearly' let key = "eqWeightYearly"
if (this.weightYearly.key == 'leNumberKey') { if (this.weightYearly.key == "leNumberKey") {
key = 'leWeightYearly' key = "leWeightYearly"
} else if (this.weightYearly.key == 'geNumberKey') { } else if (this.weightYearly.key == "geNumberKey") {
key = 'geWeightYearly' key = "geWeightYearly"
} }
queryParams[key] = this.weightYearly.value; queryParams[key] = this.weightYearly.value
} }
if (this.numYearly.value) { if (this.numYearly.value) {
let key = 'eqNumYearly' let key = "eqNumYearly"
if (this.numYearly.key == 'leNumberKey') { if (this.numYearly.key == "leNumberKey") {
key = 'leNumYearly' key = "leNumYearly"
} else if (this.numYearly.key == 'geNumberKey') { } else if (this.numYearly.key == "geNumberKey") {
key = 'geNumYearly' key = "geNumYearly"
} }
queryParams[key] = this.numYearly.value; queryParams[key] = this.numYearly.value
} }
return queryParams; return queryParams
}, }
} }
}; }
</script> </script>
...@@ -17,16 +17,16 @@ ...@@ -17,16 +17,16 @@
<el-form-item :label="$t('联系方式')"> <el-form-item :label="$t('联系方式')">
<el-input :placeholder="$t('请输入联系方式')" clearable v-model.trim="queryParams.defaultContactPhone" @input="queryParams.defaultContactPhone = queryParams.defaultContactPhone.replace(/\s+/g, '')"></el-input> <el-input :placeholder="$t('请输入联系方式')" clearable v-model.trim="queryParams.defaultContactPhone" @input="queryParams.defaultContactPhone = queryParams.defaultContactPhone.replace(/\s+/g, '')"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form-item :label="$t('部门')" v-if="path != '/customer/department-customers'">--> <!-- <el-form-item :label="$t('部门')" v-if="path != '/customer/department-customers'">-->
<!-- <el-select v-model="queryParams.deptIds" :placeholder="$t('请选择部门')">--> <!-- <el-select v-model="queryParams.deptIds" :placeholder="$t('请选择部门')">-->
<!-- <el-option v-for="item in deptList" :key="item.id" :label="item.name" :value="item.id" />--> <!-- <el-option v-for="item in deptList" :key="item.id" :label="item.name" :value="item.id" />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item :label="$t('客户经理')" prop="customerService">--> <!-- <el-form-item :label="$t('客户经理')" prop="customerService">-->
<!-- <el-select multiple clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" size="small" @change="handleQuery">--> <!-- <el-select multiple clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" size="small" @change="handleQuery">-->
<!-- <el-option v-for="dict in customerServiceList" :key="dict.id" :label="dict.nickname" :value="dict.id" />--> <!-- <el-option v-for="dict in customerServiceList" :key="dict.id" :label="dict.nickname" :value="dict.id" />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<el-form-item :label="$t('客户来源')" prop="source"> <el-form-item :label="$t('客户来源')" prop="source">
<el-select multiple clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" size="small" @change="handleQuery"> <el-select multiple clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" size="small" @change="handleQuery">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" /> <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
...@@ -222,21 +222,21 @@ ...@@ -222,21 +222,21 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">--> <!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">--> <!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />--> <!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">--> <!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>--> <!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>--> <!-- </contacts>-->
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<el-table-column :label="$t('最新跟进时间')" width="120"> <el-table-column :label="$t('最新跟进时间')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ parseTime(scope.row.followupBackVO.followTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('最新跟进记录')" width="120">
<template slot-scope="scope" v-if= "scope.row.followupBackVO"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a>
</template> </template>
</el-table-column> </el-table-column>
...@@ -373,7 +373,7 @@ ...@@ -373,7 +373,7 @@
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
<customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list> <customer-follow-list :customer-id="customerId" :id="customerId" :customer-service="customerService" :customer-number="customerNumber" ref="CustomerFollowList" v-if="customerFollowVisible"></customer-follow-list>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<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> <transfer-customer :show.sync="show" :customer-ids.sync="selectCustomerList"></transfer-customer>
<customer-setting ref="customerSetting" @refresh="getList"></customer-setting> <customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
...@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node" ...@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer" import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType" import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product" import { getProductList } from "@/api/ecw/product"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"; import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default { export default {
name: "EcwMyCustomerServiceIndex", name: "EcwMyCustomerServiceIndex",
components: { components: {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<span style="font-size: 15px"></span> <span style="font-size: 15px"></span>
<div class="btns"> <div class="btns">
<el-button v-hasPermi="['ecw:offer:update']" size="mini" type="primary" v-if="[4, 5, 6].indexOf(list.status) == -1" @click="$router.push('edit?id=' + offerId)">{{ $t("编辑") }}</el-button> <el-button v-hasPermi="['ecw:offer:update']" size="mini" type="primary" v-if="[4, 5, 6].indexOf(list.status) == -1" @click="$router.push('edit?id=' + offerId)">{{ $t("编辑") }}</el-button>
<el-button v-hasPermi="['ecw:offer:loglist']" type="primary" v-if="[1, 3, 7].indexOf(list.status) > -1" size="mini" @click="handleAdd">{{ $t("跟进") }}</el-button> <el-button v-hasPermi="['ecw:offer:loglist']" type="primary" v-if="[1, 3, 7].indexOf(list.status) > -1" size="mini" @click="handleAddOffer">{{ $t("跟进") }}</el-button>
<el-button v-hasPermi="['ecw:offer:result']" type="primary" v-if="[3, 7].indexOf(list.status) > -1" size="mini" @click="toResult">{{ $t("结果") }}</el-button> <el-button v-hasPermi="['ecw:offer:result']" type="primary" v-if="[3, 7].indexOf(list.status) > -1" size="mini" @click="toResult">{{ $t("结果") }}</el-button>
<el-button v-hasPermi="['ecw:offer:discount', 'ecw:offer:commission']" size="mini" v-if="[1, 3, 7].indexOf(list.status) > -1" type="primary" @click.native="$router.push('/offer/special?offerId=' + offerId)">{{ $t("特价") }}</el-button> <el-button v-hasPermi="['ecw:offer:discount', 'ecw:offer:commission']" size="mini" v-if="[1, 3, 7].indexOf(list.status) > -1" type="primary" @click.native="$router.push('/offer/special?offerId=' + offerId)">{{ $t("特价") }}</el-button>
<el-button v-hasPermi="['ecw:offer:delete']" type="danger" size="mini" @click="handleDelete">{{ $t("删除") }}</el-button> <el-button v-hasPermi="['ecw:offer:delete']" type="danger" size="mini" @click="handleDelete">{{ $t("删除") }}</el-button>
...@@ -74,10 +74,10 @@ ...@@ -74,10 +74,10 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, list.transportId).cssClass == 'channel'" :label="$t('出货渠道')">{{ list.channelName }}</el-descriptions-item> <el-descriptions-item v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, list.transportId).cssClass == 'channel'" :label="$t('出货渠道')">{{ list.channelName }}</el-descriptions-item>
<el-descriptions-item :label="$t('服务')"> <el-descriptions-item :label="$t('服务')">
<el-tag v-if="list.type && list.type.indexOf('1') > -1"> <el-tag v-if="list.serviceType && list.serviceType.indexOf('1') > -1">
{{ $t("集运") }} {{ $t("集运") }}
</el-tag> </el-tag>
<el-tag v-if="list.type && list.type.indexOf('2') > -1"> <el-tag v-if="list.serviceType && list.serviceType.indexOf('2') > -1">
{{ $t("海外仓") }} {{ $t("海外仓") }}
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item>
...@@ -313,7 +313,7 @@ ...@@ -313,7 +313,7 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<customer-follow ref="customerFollow" v-if="customerFollowVisible" :customerService="curData.salesmanId" :customerNumber="curData.customerNumber" :offerId="offerId" /> <customer-follow ref="customerFollow" v-if="customerFollowVisible" @close="customerFollowVisible = false" :customerService="curData.salesmanId" :customerNumber="curData.customerNumber" :offerId="offerId" />
</div> </div>
</template> </template>
...@@ -521,14 +521,13 @@ export default { ...@@ -521,14 +521,13 @@ export default {
getTradeCityList().then((res) => (this.tradeCityList = res.data)) getTradeCityList().then((res) => (this.tradeCityList = res.data))
getProductAttrList().then((res) => (this.productAttrList = res.data)) getProductAttrList().then((res) => (this.productAttrList = res.data))
if (this.$route.query.offerId) { if (this.$route.query.offerId) {
this.offerId = this.$route.query.offerId this.offerId = parseInt(this.$route.query.offerId)
this.getList() this.getList()
} }
}, },
methods: { methods: {
handleAddOffer(row) { handleAddOffer() {
console.log(row) this.curData = this.list
this.curData = row
this.customerFollowVisible = true this.customerFollowVisible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs["customerFollow"].handleAdd() this.$refs["customerFollow"].handleAdd()
...@@ -784,4 +783,13 @@ export default { ...@@ -784,4 +783,13 @@ export default {
.card { .card {
margin-top: 20px; margin-top: 20px;
} }
/deep/.el-table__fixed-footer-wrapper tbody td.el-table__cell {
font-size: 16px;
font-weight: bold;
}
/deep/.el-table__footer-wrapper tbody td.el-table__cell {
font-size: 20px;
font-weight: bold;
}
</style> </style>
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('增值服务')" v-if="routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"> <el-form-item :label="$t('增值服务')" v-if="routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1">
<el-checkbox-group v-model="form.type"> <el-checkbox-group v-model="form.serviceType">
<el-checkbox label="1" v-if="routeOtherServices.indexOf('1') > -1">{{ $t("集运服务") }}</el-checkbox> <el-checkbox label="1" v-if="routeOtherServices.indexOf('1') > -1">{{ $t("集运服务") }}</el-checkbox>
<el-checkbox label="2" v-if="routeOtherServices.indexOf('4') > -1">{{ $t("海外仓") }}</el-checkbox> <el-checkbox label="2" v-if="routeOtherServices.indexOf('4') > -1">{{ $t("海外仓") }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
...@@ -576,7 +576,8 @@ const createDefaultForm = () => { ...@@ -576,7 +576,8 @@ const createDefaultForm = () => {
control: false, control: false,
isCargoControl: false, isCargoControl: false,
prodCreateReqVOList: [], prodCreateReqVOList: [],
transportVO: {} transportVO: {},
serviceType: []
} }
} }
export default { export default {
...@@ -742,6 +743,8 @@ export default { ...@@ -742,6 +743,8 @@ export default {
startTime: [{ required: true, message: this.$t("有效期开始时间不能为空") }], startTime: [{ required: true, message: this.$t("有效期开始时间不能为空") }],
endTime: [{ required: true, message: this.$t("有效期结束时间不能为空") }], endTime: [{ required: true, message: this.$t("有效期结束时间不能为空") }],
transportId: [{ required: true, message: this.$t("选择运输方式") }], transportId: [{ required: true, message: this.$t("选择运输方式") }],
// departureId: [{required: true, message: this.$t('请选择始发城市')}],
destCountryId: [{ required: true, message: this.$t("请选择目的国家") }],
channelId: [{ required: true, message: this.$t("选择出货渠道") }], channelId: [{ required: true, message: this.$t("选择出货渠道") }],
stopTime: [{ required: true, message: this.$t("不能为空") }], stopTime: [{ required: true, message: this.$t("不能为空") }],
relation: [{ required: true, message: this.$t("请选择所属人") }], relation: [{ required: true, message: this.$t("请选择所属人") }],
...@@ -1074,9 +1077,9 @@ export default { ...@@ -1074,9 +1077,9 @@ export default {
selectedRouter(val) { selectedRouter(val) {
if (!val) return if (!val) return
;["1", "4"].forEach((service) => { ;["1", "4"].forEach((service) => {
if (this.routeOtherServices.indexOf(service) < 0 && this.form.type.indexOf(service) > -1) { if (this.routeOtherServices.indexOf(service) < 0 && this.form.serviceType.indexOf(service == 4 ? 2 : service) > -1) {
this.form.type.splice( this.form.serviceType.splice(
this.form.type.findIndex((item) => item == service), this.form.serviceType.findIndex((item) => item == (service == 4 ? 2 : service)),
1 1
) )
} }
...@@ -1084,10 +1087,10 @@ export default { ...@@ -1084,10 +1087,10 @@ export default {
} }
}, },
activated() { activated() {
if (this.form.offerId != this.$route.query.id) { if (this.$route.query.id && this.form.offerId !== this.$route.query.id) {
this.getOffer() this.getOffer()
} }
if (this.$route.query.copyId && this.form.copyId != this.$route.query.copyId) { if (this.$route.query.copyId && this.form.copyId !== this.$route.query.copyId) {
this.getOffer() this.getOffer()
} }
}, },
...@@ -1102,14 +1105,14 @@ export default { ...@@ -1102,14 +1105,14 @@ export default {
getRegionList(4, 4).then((res) => (this.AddressCity = res.data)) getRegionList(4, 4).then((res) => (this.AddressCity = res.data))
competitorListAll().then((res) => (this.competitorList = res.data)) competitorListAll().then((res) => (this.competitorList = res.data))
if (this.$route.query.id) { if (this.$route.query.id && this.$route.query.copyId) {
this.getOffer() this.getOffer()
} else { } else {
// alert(this.$route.query.customer.defaultContactPhone) // alert(this.$route.query.customer.defaultContactPhone)
this.addProduct() this.addProduct()
} }
if (this.$route.query.type == 1) { if (this.$route.query.type && this.$route.query.type === 1) {
let res = await getCustomerContactsListByCustomer({ customerId: parseInt(this.$route.query.customerId || 0) }) let res = await getCustomerContactsListByCustomer({ customerId: parseInt(this.$route.query.customerId || 0) })
this.customer = res.data.find((item) => item.isDefault) this.customer = res.data.find((item) => item.isDefault)
...@@ -1143,10 +1146,12 @@ export default { ...@@ -1143,10 +1146,12 @@ export default {
}, },
getOffer() { getOffer() {
//加了是否从全部客户列表中报价按钮进来的判断 //加了是否从全部客户列表中报价按钮进来的判断
if (this.$route.query !== 1) { if (this.$route.query.type !== 1) {
getOffer(this.$route.query.id || this.$route.query.copyId).then((res) => { getOffer(this.$route.query.id || this.$route.query.copyId).then((res) => {
let formData = res.data let formData = res.data
formData.type = formData.type ? formData.type.split(",").filter((item) => item != "") : [] formData.serviceType = formData.serviceType ? formData.serviceType.split(",").filter((item) => item != "") : []
console.log(formData.serviceType)
formData.prodCreateReqVOList = [] formData.prodCreateReqVOList = []
if (formData.transportVO && formData.transportVO.packageType) { if (formData.transportVO && formData.transportVO.packageType) {
formData.transportVO.packageTypeArr = formData.transportVO.packageType.split(",").filter((item) => item && item != "") formData.transportVO.packageTypeArr = formData.transportVO.packageType.split(",").filter((item) => item && item != "")
...@@ -1179,10 +1184,12 @@ export default { ...@@ -1179,10 +1184,12 @@ export default {
} }
if (this.$route.query.copyId) { if (this.$route.query.copyId) {
formData.offerId = "" formData.offerId = null
formData.startTime = "" formData.startTime = ""
formData.endTime = "" formData.endTime = ""
formData.stopTime = "" formData.stopTime = ""
// 复制报价单状态重置为草稿
formData.status = 2
} }
formData.channelId = formData.channelId || null formData.channelId = formData.channelId || null
...@@ -1327,7 +1334,8 @@ export default { ...@@ -1327,7 +1334,8 @@ export default {
if (this.form.offerId != null) { if (this.form.offerId != null) {
let data = Object.assign({}, this.form, { let data = Object.assign({}, this.form, {
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled), // transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
prodUpdateReqVOList: this.getProductListWithDefaultValue() prodUpdateReqVOList: this.getProductListWithDefaultValue(),
serviceType: this.form.serviceType.join(",")
}) })
if (data.status < 3) { if (data.status < 3) {
data.status = status data.status = status
...@@ -1343,12 +1351,14 @@ export default { ...@@ -1343,12 +1351,14 @@ export default {
console.log(JSON.stringify(this.contactsList)) console.log(JSON.stringify(this.contactsList))
data = Object.assign({}, this.form, { data = Object.assign({}, this.form, {
prodCreateReqVOList: this.getProductListWithDefaultValue(), prodCreateReqVOList: this.getProductListWithDefaultValue(),
status status,
serviceType: this.form.serviceType.join(",")
}) })
} else { } else {
data = Object.assign({}, this.form, { data = Object.assign({}, this.form, {
prodCreateReqVOList: this.getProductListWithDefaultValue(), prodCreateReqVOList: this.getProductListWithDefaultValue(),
status status,
serviceType: this.form.serviceType.join(",")
}) })
} }
......
...@@ -52,10 +52,8 @@ ...@@ -52,10 +52,8 @@
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
</div> </div>
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
...@@ -125,8 +123,8 @@ ...@@ -125,8 +123,8 @@
</el-table> </el-table>
<pagination :total="customerFollowTotal" :page.sync="followForm.pageNo" :limit.sync="followForm.pageSize" @pagination="getCustomerFollowList" /> <pagination :total="customerFollowTotal" :page.sync="followForm.pageNo" :limit.sync="followForm.pageSize" @pagination="getCustomerFollowList" />
</el-card> </el-card>
<customer-follow ref="customerFollow" @handleCustomerFollowAdd="handleCustomerFollowAdd" @refresh="handleQuery" v-if="customerFollowVisible" :customer-id="customerId" :customerService="customerService" :customerNumber="customerNumber" /> <customer-follow ref="customerFollow" @close="customerFollowVisible = false" @handleCustomerFollowAdd="handleCustomerFollowAdd" @refresh="handleQuery" v-if="customerFollowVisible" :customer-id="customerId" :customerService="customerService" :customerNumber="customerNumber" />
<customer-follow-update-status :show.sync="updateStatus" :followup-ids.sync="selectCustomerFollowList" @refresh="handleQuery" /> <customer-follow-update-status :show.sync="updateStatus" :followup-ids.sync="selectCustomerFollowList" @refresh="handleQuery"></customer-follow-update-status>
</div> </div>
</template> </template>
...@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF ...@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF
import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict" import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow" import CustomerFollow from "@/views/ecw/customer/components/customerFollow"
import UserSelector from "@/components/UserSelector" import UserSelector from "@/components/UserSelector"
import customerFollowUpdateStatus from "@/views/ecw/customer/components/customerFollowUpdateStatus.vue"; import customerFollowUpdateStatus from "@/views/ecw/customer/components/customerFollowUpdateStatus.vue"
export default { export default {
name: "logListCommon", name: "logListCommon",
components: {customerFollowUpdateStatus, UserSelector, CustomerFollow }, components: { customerFollowUpdateStatus, UserSelector, CustomerFollow },
props: ["customerId", "offerId", "customerService", "customerNumber"], props: ["customerId", "offerId", "customerService", "customerNumber"],
data() { data() {
return { return {
......
...@@ -10,10 +10,10 @@ ...@@ -10,10 +10,10 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('发货人')" prop="consignorKey"> <el-form-item :label="$t('发货人')" prop="consignorKey">
<el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consignorKey')" /> <el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey"> <el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consigneeKey')" /> <el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery"/>
</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.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" /> <dict-selector v-model="queryParams.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" />
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<el-input v-model="queryParams.orderNo" :placeholder="$t('订单编号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/\s+/g, '')" /> <el-input v-model="queryParams.orderNo" :placeholder="$t('订单编号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/\s+/g, '')" />
</el-form-item>--> </el-form-item>-->
<el-form-item :label="$t('商品') + ':'" v-show="showSearch"> <el-form-item :label="$t('商品') + ':'" v-show="showSearch">
<el-input v-model.trim="prodParam.value" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(prodParam, 'value')"> <el-input v-model.trim="prodParam.value" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery">
<template slot="prepend"> <template slot="prepend">
<dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" /> <dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" />
</template> </template>
......
<template> <template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1000px"> <el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1000px">
<el-form v-if="agreement" ref="form" :model="formData" :rules="rules" size="small" label-width="100px" > <el-form v-if="agreement" ref="form" :model="formData" :rules="rules" size="small" label-width="100px">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('订单号')"> <el-form-item :label="$t('订单号')">
{{detail.orderNo}} {{ detail.orderNo }}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('总箱数')"> <el-form-item :label="$t('总箱数')">
{{detail.sumNum}} {{ detail.sumNum }}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('体积')"> <el-form-item :label="$t('体积')">
{{detail.sumVolume}} {{ detail.sumVolume }}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('重量')"> <el-form-item :label="$t('重量')">
{{detail.sumWeight}}kg {{ detail.sumWeight }}kg
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('总控货箱数')"> <el-form-item :label="$t('总控货箱数')">
{{detail.sumNum}} {{ detail.sumNum }}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('剩余放货箱数')"> <el-form-item :label="$t('剩余放货箱数')">
{{detail.sumNum - detail.releaseNum }} {{ detail.sumNum - detail.releaseNum }}
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('到仓日期/卸柜日期')" label-width="200px"> <el-form-item :label="$t('到仓日期/卸柜日期')" label-width="200px">
{{detail.unloadTime}} {{ detail.unloadTime }}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('放货锁定收货人到期')" label-width="200px"> <el-form-item :label="$t('放货锁定收货人到期')" label-width="200px">
{{detail.lockConsigneeTime || '-'}} {{ detail.lockConsigneeTime || '-' }}
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div class="title">{{$t('请填写放货信息')}}</div> <div class="title">{{ $t('请填写放货信息') }}</div>
<div class="flex"> <div class="flex">
<el-form-item :label="$t('收货人')" prop="consigneeName"> <el-form-item :label="$t('收货人')" prop="consigneeName">
<el-input v-model="formData.consigneeName" :placeholder="$t('请输入收货人')" clearable class="w-150" ></el-input> <el-input v-model="formData.consigneeName" :placeholder="$t('请输入收货人')" clearable
class="w-150"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人电话')" prop="consigneePhone"> <el-form-item :label="$t('收货人电话')" prop="consigneePhone">
<!-- <el-input v-model="formData.field109" :placeholder="$t('区号')" clearable class="w-150"></el-input> --> <!-- <el-input v-model="formData.field109" :placeholder="$t('区号')" clearable class="w-150"></el-input> -->
<area-code-selector v-model="formData.consigneeCountryCode" class="w-150" /> <area-code-selector v-model="formData.consigneeCountryCode" class="w-150"/>
<el-input v-model="formData.consigneePhone" :placeholder="$t('请输入收货人电话')" clearable class="w-150 ml-10"></el-input> <el-input v-model="formData.consigneePhone" :placeholder="$t('请输入收货人电话')" clearable
class="w-150 ml-10"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人邮箱')" prop="consigneeEmail"> <el-form-item :label="$t('收货人邮箱')" prop="consigneeEmail">
<el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable class="w-150" ></el-input> <el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable
class="w-150"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<el-table :data="[formData]" border class="release-table"> <el-table :data="[formData]" border class="release-table">
<el-table-column :label="$t('控货箱数')"> <el-table-column :label="$t('控货箱数')">
{{detail.sumNum - detail.releaseNum }} {{ detail.sumNum - detail.releaseNum }}
</el-table-column> </el-table-column>
<el-table-column :label="$t('放货箱数')"> <el-table-column :label="$t('放货箱数')">
<template slot-scope="{row}"> <template slot-scope="{row}">
...@@ -87,27 +90,28 @@ ...@@ -87,27 +90,28 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px"> <el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px">
<el-input :value="'+' + detail.dialCode + detail.phone" readonly :placeholder="$t('请输入控货手机号')" > <el-input :value="'+' + detail.dialCode + detail.phone" readonly :placeholder="$t('请输入控货手机号')">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('手机验证码')" prop="code"> <el-form-item :label="$t('手机验证码')" prop="code">
<el-input v-model="formData.code" :placeholder="$t('请输入手机验证码')" clearable class="w-150 mr-10"></el-input> <el-input v-model="formData.code" :placeholder="$t('请输入手机验证码')" clearable
class="w-150 mr-10"></el-input>
<!-- <el-button type="success">{{ $t('获取验证码') }}</el-button> --> <!-- <el-button type="success">{{ $t('获取验证码') }}</el-button> -->
<send-sms-code :order-id="detail.orderId" scene="5" /> <send-sms-code :order-id="detail.orderId" scene="5"/>
</el-form-item> </el-form-item>
<el-form-item label="" style="margin-top:20px"> <el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">{{$t('确认提货')}}</el-button> <el-button type="success" @click="submit">{{ $t('确认提货') }}</el-button>
<el-button type="default" @click="closeDialog">{{$t('关闭')}}</el-button> <el-button type="default" @click="closeDialog">{{ $t('关闭') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div v-else> <div v-else>
<!-- <release-agreement /> --> <!-- <release-agreement /> -->
<need-know ref="needKnow" keyname="control" /> <need-know ref="needKnow" keyname="control"/>
<div style="margin-top:30px"> <div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">{{$t('我同意')}}</el-button> <el-button type="primary" @click="agreement=true">{{ $t('我同意') }}</el-button>
<!-- <el-button type="primary" @click="$refs.needKnow.download()">{{ $t('保存协议') }}</el-button> --> <!-- <el-button type="primary" @click="$refs.needKnow.download()">{{ $t('保存协议') }}</el-button> -->
<el-button @click="closeDialog">{{$t('关闭')}}</el-button> <el-button @click="closeDialog">{{ $t('关闭') }}</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
...@@ -119,16 +123,17 @@ import AreaCodeSelector from '@/components/AreaCodeSelector' ...@@ -119,16 +123,17 @@ import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode' import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import NeedKnow from '@/components/NeedKnow' import NeedKnow from '@/components/NeedKnow'
import Decimal from 'decimal.js' import Decimal from 'decimal.js'
export default { export default {
props:{ props: {
orderId: [String, Number] orderId: [String, Number]
}, },
components: {AreaCodeSelector, SendSmsCode, NeedKnow}, components: {AreaCodeSelector, SendSmsCode, NeedKnow},
data(){ data() {
return { return {
show: false, show: false,
detail: null, detail: null,
formData:{ formData: {
"pickNum": 0, "pickNum": 0,
"pickQuantity": 0, "pickQuantity": 0,
"pickVolume": 0, "pickVolume": 0,
...@@ -138,14 +143,14 @@ export default { ...@@ -138,14 +143,14 @@ export default {
agreement: false, // 是否同意协议 agreement: false, // 是否同意协议
} }
}, },
watch:{ watch: {
'formData.pickNum'(pickNum){ 'formData.pickNum'(pickNum) {
this.$set(this.formData, 'pickVolume', Decimal(this.detail.sumVolume).mul(pickNum).div(this.detail.sumNum).toFixed(2)) this.$set(this.formData, 'pickVolume', Decimal(this.detail.sumVolume).mul(pickNum).div(this.detail.sumNum).toFixed(2))
this.$set(this.formData, 'pickWeight', Decimal(this.detail.sumWeight).mul(pickNum).div(this.detail.sumNum).toFixed(2)) this.$set(this.formData, 'pickWeight', Decimal(this.detail.sumWeight).mul(pickNum).div(this.detail.sumNum).toFixed(2))
} }
}, },
computed:{ computed: {
rules(){ rules() {
return { return {
consigneeName: {required: true, message: this.$t('请填写收货人')}, consigneeName: {required: true, message: this.$t('请填写收货人')},
code: {required: true, message: this.$t('请填写验证码')}, code: {required: true, message: this.$t('请填写验证码')},
...@@ -157,35 +162,35 @@ export default { ...@@ -157,35 +162,35 @@ export default {
} }
} }
}, },
title(){ title() {
let t = this.$t('放货') let t = this.$t('放货')
if(this.detail){ if (this.detail) {
t += '-' + this.detail.orderNo t += '-' + this.detail.orderNo
} }
return t return t
} }
}, },
created(){ created() {
this.show = true this.show = true
this.loadData() this.loadData()
}, },
methods:{ methods: {
loadData(){ loadData() {
getReleaseInfo(this.orderId).then(res => { getReleaseInfo(this.orderId).then(res => {
this.detail = res.data this.detail = res.data
this.$set(this.formData, 'consigneeName', res.data.consigneeName) this.$set(this.formData, 'consigneeName', res.data.consigneeName)
this.$set(this.formData, 'consigneeCountryCode', '+' + res.data.consigneeCountryCode) this.$set(this.formData, 'consigneeCountryCode', res.data.consigneeCountryCode ? ('+' + res.data.consigneeCountryCode) : null)
this.$set(this.formData, 'consigneePhone', res.data.consigneePhone) this.$set(this.formData, 'consigneePhone', res.data.consigneePhone)
this.$set(this.formData, 'consigneeEmail', res.data.consigneeEmail) this.$set(this.formData, 'consigneeEmail', res.data.consigneeEmail)
}) })
}, },
closeDialog(){ closeDialog() {
this.show = false this.show = false
this.$emit('close') this.$emit('close')
}, },
submit(){ submit() {
this.$refs.form.validate(valid => { this.$refs.form.validate(valid => {
if(!valid){ if (!valid) {
return false return false
} }
createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => { createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => {
...@@ -201,20 +206,22 @@ export default { ...@@ -201,20 +206,22 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.title{ .title {
font-size:16px; font-size: 16px;
margin:20px 0; margin: 20px 0;
display:flex; display: flex;
align-items:center; align-items: center;
&:before{
&:before {
content: ''; content: '';
width:5px; width: 5px;
height: 15px; height: 15px;
background:#666; background: #666;
margin-right:10px; margin-right: 10px;
} }
} }
::v-deep .release-table .el-form-item__error{
::v-deep .release-table .el-form-item__error {
position: static; position: static;
} }
</style> </style>
...@@ -11,51 +11,55 @@ ...@@ -11,51 +11,55 @@
:validate-on-rule-change="false" :validate-on-rule-change="false"
> >
<el-card v-if="form.applyStatus == 1" class="mb-10"> <el-card v-if="form.applyStatus == 1" class="mb-10">
<div slot="header" class="card-title">{{$t('以下信息修改审核中')}}</div> <div slot="header" class="card-title">{{ $t('以下信息修改审核中') }}</div>
<el-table :data="form.applyInfoList"> <el-table :data="form.applyInfoList">
<el-table-column label="字段" prop="name"></el-table-column> <el-table-column label="字段" prop="name"></el-table-column>
<el-table-column label="旧内容" prop="orgValue"></el-table-column> <el-table-column label="旧内容" prop="orgValue"></el-table-column>
<el-table-column label="新内容" prop="newValue"></el-table-column> <el-table-column label="新内容" prop="newValue"></el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<div class="page-title">{{ editMode ? $t('编辑订单') + '-' + (form.orderNo || $t('草稿')) : $t('新建订单')}}</div> <div class="page-title">{{ editMode ? $t('编辑订单') + '-' + (form.orderNo || $t('草稿')) : $t('新建订单') }}
</div>
<el-card class="form-section mt-10"> <el-card class="form-section mt-10">
<template #header> <template #header>
<div slot="header" class="card-title">发货人</div> <div slot="header" class="card-title">发货人</div>
</template> </template>
<el-form-item :label="$t('名称')" prop="consignorContactsId" > <el-form-item :label="$t('名称')" prop="consignorContactsId">
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> --> <!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div class="contact"> <div class="contact">
<el-input v-model="form.consignorName" placeholder="" :disabled2="inWarehouse"/> <el-input v-model="form.consignorName" placeholder="" :disabled2="inWarehouse"/>
<img v-if="!updateChannel" src="@/assets/svg/contacts.svg" class="phonebook" @click="contactChooseType='consignor'" /> <img v-if="!updateChannel" src="@/assets/svg/contacts.svg" class="phonebook"
<img v-if="!updateChannel" src="@/assets/svg/contact_create.svg" class="phonebook" @click="quickCreateType='0'" /> @click="contactChooseType='consignor'"/>
<img v-if="!updateChannel" src="@/assets/svg/contact_create.svg" class="phonebook"
@click="quickCreateType='0'"/>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('电话')" prop="consignorPhone"> <el-form-item :label="$t('电话')" prop="consignorPhone">
<area-code-selector v-model="form.consignorCountryCode" class="w-200 mr-10" disabled /> <area-code-selector v-model="form.consignorCountryCode" class="w-200 mr-10" disabled/>
<el-input v-model="form.consignorPhone" class="w-200" disabled /> <el-input v-model="form.consignorPhone" class="w-200" disabled/>
</el-form-item> </el-form-item>
<el-button circle icon="el-icon-circle-plus" v-if="!showFullConsignor" @click="showFullConsignor=true"></el-button> <el-button circle icon="el-icon-circle-plus" v-if="!showFullConsignor"
@click="showFullConsignor=true"></el-button>
<el-button circle icon="el-icon-remove" v-else @click="showFullConsignor=false"></el-button> <el-button circle icon="el-icon-remove" v-else @click="showFullConsignor=false"></el-button>
<div v-if="showFullConsignor"> <div v-if="showFullConsignor">
<el-form-item :label="$t('英文名称')" prop="consignorNameEn" > <el-form-item :label="$t('英文名称')" prop="consignorNameEn">
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> --> <!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div class="contact"> <div class="contact">
<el-input v-model="form.consignorNameEn" placeholder="" :disabled2="inWarehouse"/> <el-input v-model="form.consignorNameEn" placeholder="" :disabled2="inWarehouse"/>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('公司中文名称')" prop="consignorPhone"> <el-form-item :label="$t('公司中文名称')" prop="consignorPhone">
<el-input v-model="form.consignorCompany" :disabled2="inWarehouse" /> <el-input v-model="form.consignorCompany" :disabled2="inWarehouse"/>
</el-form-item> </el-form-item>
<!-- v1.7新增 --> <!-- v1.7新增 -->
<el-form-item :label="$t('公司英文名称')" prop="consignorPhone"> <el-form-item :label="$t('公司英文名称')" prop="consignorPhone">
<el-input v-model="form.consignorCompanyEn" :disabled2="inWarehouse" /> <el-input v-model="form.consignorCompanyEn" :disabled2="inWarehouse"/>
</el-form-item> </el-form-item>
<el-form-item label="Email" prop="consignorPhone"> <el-form-item label="Email" prop="consignorPhone">
<el-input v-model="form.consignorEmail" :disabled2="inWarehouse" /> <el-input v-model="form.consignorEmail" :disabled2="inWarehouse"/>
</el-form-item> </el-form-item>
</div> </div>
</el-card> </el-card>
...@@ -64,87 +68,103 @@ ...@@ -64,87 +68,103 @@
<div class="flex items-center"> <div class="flex items-center">
<div slot="header" class="card-title mr-20">收货人</div> <div slot="header" class="card-title mr-20">收货人</div>
<el-radio-group v-if="noConsignee" v-model="hasConsignee"> <el-radio-group v-if="noConsignee" v-model="hasConsignee">
<el-radio :label="true">{{$t('')}}</el-radio> <el-radio :label="true">{{ $t('') }}</el-radio>
<el-radio :label="false">{{$t('')}}</el-radio> <el-radio :label="false">{{ $t('') }}</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
</template> </template>
<el-form-item :label="$t('名称')" prop="consigneeContactsId"> <el-form-item v-if="hasConsignee" :label="$t('名称')" prop="consigneeContactsId">
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> --> <!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div class="contact"> <div class="contact">
<el-input v-model="form.consigneeName" placeholder="" :disabled="!hasConsignee"/> <el-input v-model="form.consigneeName" placeholder="" :disabled="!hasConsignee"/>
<img v-if="!updateChannel && hasConsignee" src="@/assets/svg/contacts.svg" class="phonebook" @click="contactChooseType='consignee'" /> <img v-if="!updateChannel && hasConsignee" src="@/assets/svg/contacts.svg" class="phonebook"
<img v-if="!updateChannel && hasConsignee" src="@/assets/svg/contact_create.svg" class="phonebook" @click="quickCreateType='1'" /> @click="contactChooseType='consignee'"/>
<img v-if="!updateChannel && hasConsignee" src="@/assets/svg/contact_create.svg" class="phonebook"
@click="quickCreateType='1'"/>
</div> </div>
</el-form-item> </el-form-item>
<!-- v1.7新增 --> <!-- v1.7新增 -->
<el-form-item :label="$t('电话')" prop="consigneePhone"> <el-form-item v-if="hasConsignee" :label="$t('电话')" prop="consigneePhone">
<area-code-selector v-model="form.consigneeCountryCode" class="w-200 mr-10" disabled/> <area-code-selector v-model="form.consigneeCountryCode" class="w-200 mr-10" disabled/>
<el-input v-model="form.consigneePhone" class="w-200" disabled/> <el-input v-model="form.consigneePhone" class="w-200" disabled/>
</el-form-item> </el-form-item>
<el-button circle icon="el-icon-circle-plus" v-if="!showFullConsignee" @click="showFullConsignee=true"></el-button> <el-button circle icon="el-icon-circle-plus" v-if="hasConsignee && !showFullConsignee"
<el-button circle icon="el-icon-remove" v-else @click="showFullConsignee=false"></el-button> @click="showFullConsignee=true"></el-button>
<el-button circle icon="el-icon-remove" v-if="hasConsignee && showFullConsignee"
@click="showFullConsignee=false"></el-button>
<div v-if="showFullConsignee"> <div v-if="showFullConsignee">
<el-form-item :label="$t('英文名称')" prop="consigneeNameEn"> <el-form-item v-if="hasConsignee" :label="$t('英文名称')" prop="consigneeNameEn">
<!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> --> <!-- <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" type="1" /> -->
<div class="contact"> <div class="contact">
<el-input v-model="form.consigneeNameEn" placeholder="" :disabled="!hasConsignee"/> <el-input v-model="form.consigneeNameEn" placeholder="" :disabled="!hasConsignee"/>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('公司中文名称')" prop="consigneePhone"> <el-form-item v-if="hasConsignee" :label="$t('公司中文名称')" prop="consigneePhone">
<el-input v-model="form.consigneeCompany" :disabled="!hasConsignee" /> <el-input v-model="form.consigneeCompany" :disabled="!hasConsignee"/>
</el-form-item> </el-form-item>
<!-- v1.7新增 --> <!-- v1.7新增 -->
<el-form-item :label="$t('公司英文名称')" prop="consigneePhone"> <el-form-item v-if="hasConsignee" :label="$t('公司英文名称')" prop="consigneePhone">
<el-input v-model="form.consigneeCompanyEn" :disabled="!hasConsignee" /> <el-input v-model="form.consigneeCompanyEn" :disabled="!hasConsignee"/>
</el-form-item> </el-form-item>
<el-form-item label="Email" prop="consigneePhone"> <el-form-item v-if="hasConsignee" label="Email" prop="consigneePhone">
<el-input v-model="form.consigneeEmail" :disabled="!hasConsignee"/> <el-input v-model="form.consigneeEmail" :disabled="!hasConsignee"/>
</el-form-item> </el-form-item>
</div> </div>
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="card-title">{{$t('运输')}}</div> <div slot="header" class="card-title">{{ $t('运输') }}</div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('运输方式')" prop="transportId"> <el-form-item :label="$t('运输方式')" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" formatter="number" <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" formatter="number"
clearable @input="updateRoutes('transportId')" :disabled="form.shipmentState"/> clearable @input="updateRoutes('transportId')" :disabled="form.shipmentState > 0"/>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('始发城市')" prop="departureId" :disabled="false"> <el-form-item :label="$t('始发城市')" prop="departureId" :disabled="false">
<el-select v-model="form.departureId" :placeholder="$t('请选择始发地')" :disabled="form.shipmentState" clearable @input="updateRoutes('departureId')"> <el-select v-model="form.departureId" :placeholder="$t('请选择始发地')" :disabled="form.shipmentState > 0"
<el-option v-for="item in exportCityList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> clearable @input="updateRoutes('departureId')">
<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="destCountryId"> <el-form-item :label="$t('目的国家')" prop="destCountryId">
<el-select v-model="form.destCountryId" :placeholder="$t('请选择目的国家')" @change="handleChangeDestCountry" clearable :disabled="form.shipmentState"> <el-select v-model="form.destCountryId" :placeholder="$t('请选择目的国家')"
<el-option v-for="item in showDestCountryList" :label="$l(item, 'guojiaName')" :value="item.guojia" :key="item.guojia"></el-option> @change="handleChangeDestCountry" clearable :disabled="form.shipmentState > 0">
<el-option v-for="item in showDestCountryList" :label="$l(item, 'guojiaName')" :value="item.guojia"
:key="item.guojia"></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="form.objectiveId" :placeholder="$t('请选择目的地')" @change="handleChangeDestCity" clearable> <el-select v-model="form.objectiveId" :placeholder="$t('请选择目的地')" @change="handleChangeDestCity"
<el-option v-for="item in showDestCityList" :label="$l(item, 'shiName')" :value="item.shi" :key="item.shi"></el-option> clearable>
<el-option v-for="item in showDestCityList" :label="$l(item, 'shiName')" :value="item.shi"
:key="item.shi"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('选择线路')" prop="lineId"> <el-form-item :label="$t('选择线路')" prop="lineId">
<el-input :value="selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''" disabled :placeholder="$t('请在右侧选择线路')"></el-input> <el-input
:value="selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''"
disabled :placeholder="$t('请在右侧选择线路')"></el-input>
</el-form-item> </el-form-item>
<!--select是原生组件,不受el-form的disabled控制--> <!--select是原生组件,不受el-form的disabled控制-->
<select size="5" v-model="form.lineId" style="min-width: 300px; border:1px solid #DCDFE6; border-radius:4px" @change="handleChangeLineId"> <select size="5" v-model="form.lineId" style="min-width: 300px; border:1px solid #DCDFE6; border-radius:4px"
@change="handleChangeLineId">
<option v-for="item in routerList" :value="item.id" :key="item.id"> <option v-for="item in routerList" :value="item.id" :key="item.id">
{{$l(item, 'startTitle')}} >> {{$l(item, 'destTitle')}} {{ $l(item, 'startTitle') }} >> {{ $l(item, 'destTitle') }}
(<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportType"></dict-tag>) (
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportType"></dict-tag>
)
</option> </option>
</select> </select>
</div> </div>
<div class="form-section mt-10"> <div class="form-section mt-10">
<el-form-item :label="$t('出货渠道')" prop="channelId" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'"> <el-form-item :label="$t('出货渠道')" prop="channelId"
v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<!--嵌套一个form来脱离disabled控制--> <!--嵌套一个form来脱离disabled控制-->
<el-form> <el-form>
<selector <selector
...@@ -159,10 +179,13 @@ ...@@ -159,10 +179,13 @@
</div> </div>
<div> <div>
<!--默认显示类型(selectedRouter==null),如果选择路线后没开通则隐藏--> <!--默认显示类型(selectedRouter==null),如果选择路线后没开通则隐藏-->
<el-form-item :label="$t('增值服务')" v-if="routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1"> <el-form-item :label="$t('增值服务')"
v-if="routeOtherServices.indexOf('1') > -1 || routeOtherServices.indexOf('4') > -1">
<el-checkbox-group v-model="form.type"> <el-checkbox-group v-model="form.type">
<el-checkbox label="1" v-if="routeOtherServices.indexOf('1') > -1">{{$t('集运')}}</el-checkbox> <el-checkbox label="1" v-if="routeOtherServices.indexOf('1') > -1">{{ $t('集运') }}</el-checkbox>
<el-checkbox label="2" v-if="routeOtherServices.indexOf('4') > -1" :disabled="form.shipmentState">{{$t('海外仓')}}</el-checkbox> <el-checkbox label="2" v-if="routeOtherServices.indexOf('4') > -1" :disabled="form.shipmentState > 0">
{{ $t('海外仓') }}
</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
</div> </div>
...@@ -170,19 +193,23 @@ ...@@ -170,19 +193,23 @@
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="card-title"> <div slot="header" class="card-title">
<!--lanbm 根据需求文档改 商品信息 为 商品 --> <!--lanbm 根据需求文档改 商品信息 为 商品 -->
<div class="card-name">{{$t('商品')}}</div> <div class="card-name">{{ $t('商品') }}</div>
<el-button type="primary" size="mini" @click="addProduct(null)" :disabled="!canAddProduct || !productEditable || updateChannel">{{$t('添加')}}</el-button> <el-button type="primary" size="mini" @click="addProduct(null)"
<el-button type="primary" size="mini" @click="showBatchImportDialog=true" :disabled="!canAddProduct || !productEditable || updateChannel">{{$t('批量添加')}}</el-button> :disabled="!canAddProduct || !productEditable || updateChannel">{{ $t('添加') }}
</el-button>
<el-button type="primary" size="mini" @click="showBatchImportDialog=true"
:disabled="!canAddProduct || !productEditable || updateChannel">{{ $t('批量添加') }}
</el-button>
</div> </div>
<el-table :data="form.orderItemVOList" border class="product-list" v-if="!initing"> <el-table :data="form.orderItemVOList" border class="product-list" v-if="!initing">
<el-table-column :label="$t('序号')" width="60px" fixed> <el-table-column :label="$t('序号')" width="60px" fixed>
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.$index + 1}} {{ scope.$index + 1 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('中文品名')" width="160px"> <el-table-column :label="$t('中文品名')" width="160px">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
{{$t('中文品名')}} <span class="red">*</span> {{ $t('中文品名') }} <span class="red">*</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item label="" <el-form-item label=""
...@@ -204,7 +231,7 @@ ...@@ -204,7 +231,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('英文品名')" width="160px"> <el-table-column :label="$t('英文品名')" width="160px">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
{{$t('英文品名')}} <span class="red">*</span> {{ $t('英文品名') }} <span class="red">*</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<product-selector <product-selector
...@@ -212,13 +239,13 @@ ...@@ -212,13 +239,13 @@
v-model="scope.row.prodId" v-model="scope.row.prodId"
@change="onProductChange(scope.row, $event)" @change="onProductChange(scope.row, $event)"
@focus="scope.row.updated = true" @focus="scope.row.updated = true"
:disabled="!canAddProduct || !productEditable" /> :disabled="!canAddProduct || !productEditable"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('品牌')" width="100px"> <el-table-column :label="$t('品牌')" width="100px">
<template slot="header"> <template slot="header">
{{$t('品牌')}} <span class="red">*</span> {{ $t('品牌') }} <span class="red">*</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item label="" <el-form-item label=""
...@@ -228,29 +255,33 @@ ...@@ -228,29 +255,33 @@
}" }"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<dict-selector v-model="scope.row.brandType" :type="DICT_TYPE.ECW_IS_BRAND" defaultable :disabled="!canAddProduct || !productEditable" /> <dict-selector v-model="scope.row.brandType" :type="DICT_TYPE.ECW_IS_BRAND" defaultable
:disabled="!canAddProduct || !productEditable"/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('件数')" width="90px"> <el-table-column :label="$t('件数')" width="90px">
<template slot="header"> <template slot="header">
{{$t('件数')}} <span class="red">*</span> {{ $t('件数') }} <span class="red">*</span>
</template> </template>
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input-number :min="0" :controls="false" style="width: 65px" v-model.number="row.num" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="0" :controls="false" style="width: 65px" v-model.number="row.num"
:disabled="!canAddProduct || !productEditable"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装单位')" width="100px"> <el-table-column :label="$t('包装单位')" width="100px">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
{{$t('包装单位')}} <span class="red">*</span> {{ $t('包装单位') }} <span class="red">*</span>
</template> </template>
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable :disabled="!canAddProduct || !productEditable" /> <dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable
:disabled="!canAddProduct || !productEditable"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="`${$t('数量')}(${$t('个')})`" width="120px"> <el-table-column :label="`${$t('数量')}(${$t('个')})`" width="120px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input-number :min="1" :step="1" style="width: 80px;" :controls="false" v-model="row.quantity" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="1" :step="1" style="width: 80px;" :controls="false" v-model="row.quantity"
:disabled="!canAddProduct || !productEditable"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总体积') + '(m³)'" width="120px"> <el-table-column :label="$t('总体积') + '(m³)'" width="120px">
...@@ -262,7 +293,8 @@ ...@@ -262,7 +293,8 @@
]" ]"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<el-input-number :min="0" v-model="scope.row.volume" :disabled="!canAddProduct || !productEditable" :controls="false" style="width: 80px" /> <el-input-number :min="0" v-model="scope.row.volume" :disabled="!canAddProduct || !productEditable"
:controls="false" style="width: 80px"/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
...@@ -275,13 +307,14 @@ ...@@ -275,13 +307,14 @@
]" ]"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<el-input-number :min="0" :controls="false" style="width: 80px" v-model="scope.row.weight" :disabled="!canAddProduct || !productEditable" /> <el-input-number :min="0" :controls="false" style="width: 80px" v-model="scope.row.weight"
:disabled="!canAddProduct || !productEditable"/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总货值') + '(RMB)'" width="100px"> <el-table-column :label="$t('总货值') + '(RMB)'" width="100px">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
{{$t('货值')}}(RMB) <span class="red">*</span> {{ $t('货值') }}(RMB) <span class="red">*</span>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item label="" <el-form-item label=""
...@@ -293,39 +326,45 @@ ...@@ -293,39 +326,45 @@
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<!--input事件在快速输入的时候,可能最后拿到的结果不是最后输入的参数,所以改成在blur的时候计算--> <!--input事件在快速输入的时候,可能最后拿到的结果不是最后输入的参数,所以改成在blur的时候计算-->
<el-input-number :min="0" :controls="false" style="width: 80px" v-model.number="scope.row.worth" :disabled="!canAddProduct" @blur="calculationPrice" /> <el-input-number :min="0" :controls="false" style="width: 80px" v-model.number="scope.row.worth"
:disabled="!canAddProduct" @blur="calculationPrice"/>
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('商品特性')" width="250px"> <el-table-column :label="$t('商品特性')" width="250px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-checkbox-group v-model="row.prodAttrArr" @change="onProductAttrChange(row, $event)" :disabled="row.prodAttrArr.indexOf(4)!=-1||!canAddProduct || !productEditable"> <el-checkbox-group v-model="row.prodAttrArr" @change="onProductAttrChange(row, $event)"
<el-checkbox v-for="item in productAttrList" :label="item.id" :key="item.id">{{$l(item, 'attrName')}}</el-checkbox> :disabled="row.prodAttrArr.indexOf(4)!=-1||!canAddProduct || !productEditable">
<el-checkbox v-for="item in productAttrList" :label="item.id" :key="item.id">
{{ $l(item, 'attrName') }}
</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('是否预付')"> <el-table-column :label="$t('是否预付')">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-tag v-if="row.fee" :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.fee.isPayAdvance" /> <dict-tag v-if="row.fee" :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.fee.isPayAdvance"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('商品链接')" width="200px" align="center"> <el-table-column :label="$t('商品链接')" width="200px" align="center">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-link type="primary" :href="row.link" target="_blank" style="display:block">{{row.link}}</el-link> <el-link type="primary" :href="row.link" target="_blank" style="display:block">{{ row.link }}</el-link>
<el-button type="primary" size="mini" @click="setLink(row)" v-if="productEditable"> <el-button type="primary" size="mini" @click="setLink(row)" v-if="productEditable">
{{row.link ? $t('编辑商品链接') : $t('添加商品链接')}} {{ row.link ? $t('编辑商品链接') : $t('添加商品链接') }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('快递单号')" width="100px"> <el-table-column :label="$t('快递单号')" width="100px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.expressNo" placeholder="" :disabled="!productEditable" /> <el-input v-model="row.expressNo" placeholder="" :disabled="!productEditable"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')" width="80px" fixed="right"> <el-table-column :label="$t('操作')" width="80px" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="danger" @click="delProduct(scope.$index)" :disabled="!productEditable || updateChannel">{{$t('删除')}}</el-button> <el-button size="mini" type="danger" @click="delProduct(scope.$index)"
:disabled="!productEditable || updateChannel">{{ $t('删除') }}
</el-button>
</template> </template>
</el-table-column> </el-table-column>
...@@ -333,85 +372,86 @@ ...@@ -333,85 +372,86 @@
<!-- <!--
</el-card> </el-card>
<el-card class="mt-10"> --> <el-card class="mt-10"> -->
<div class="card-title" style="padding:20px 0;">{{$t('合计')}}</div> <div class="card-title" style="padding:20px 0;">{{ $t('合计') }}</div>
<el-descriptions :column="6" border> <el-descriptions :column="6" border>
<el-descriptions-item :label="$t('总件数')"> <el-descriptions-item :label="$t('总件数')">
{{sum.totalNum.toFixed()}} {{ sum.totalNum.toFixed() }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('总体积')"> <el-descriptions-item :label="$t('总体积')">
{{sum.totalVolume.toFixed()}}m³ {{ sum.totalVolume.toFixed() }}m³
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('总重量')"> <el-descriptions-item :label="$t('总重量')">
{{sum.totalWeight.toFixed()}}kg {{ sum.totalWeight.toFixed() }}kg
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('总数量')"> <el-descriptions-item :label="$t('总数量')">
{{sum.totalQuatity.toFixed() || 0}} {{ sum.totalQuatity.toFixed() || 0 }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('总货值') + '(RMB)'"> <el-descriptions-item :label="$t('总货值') + '(RMB)'">
{{sum.totalWorth.toFixed() || 0}}元 {{ sum.totalWorth.toFixed() || 0 }}元
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('保价费')"> <el-descriptions-item :label="$t('保价费')">
{{fee.insuranceFee || 0}} {{ fee.insuranceFee || 0 }}
{{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : '' }} {{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : '' }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10 right-label">
<div class="card-title" slot="header">{{$t('通用')}}</div> <div class="card-title" slot="header">{{ $t('通用') }}</div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('唛头')" prop="marks" class="w-500" > <el-form-item :label="$t('唛头')" prop="marks" class="w-500">
<el-input v-model="form.marks" ></el-input> <el-input v-model="form.marks"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('单证报关')" :span="2" prop="customsType"> <el-form-item :label="$t('单证报关')" :span="2" prop="customsType">
<template #label> <template #label>
{{$t('单证报关')}} {{ $t('单证报关') }}
<el-tooltip effect="dark" :content="$t('我司全代 : 该货物的出口手续由我司代为办理 ; 自单代报: 该货物由发货人提供相关出口单证并委托我司代为办理 ;混单代报该货物有以上两种情况出现')" placement="top"> <el-tooltip effect="dark"
:content="$t('我司全代 : 该货物的出口手续由我司代为办理 ; 自单代报: 该货物由发货人提供相关出口单证并委托我司代为办理 ;混单代报该货物有以上两种情况出现')"
placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</template> </template>
<!--241023 已起运不让修改报关方式--> <!--241023 已起运不让修改报关方式-->
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" defaultable :disabled="isShipment" /> <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" defaultable
:disabled="isShipment"/>
<!--自单代报显示提示--> <!--自单代报显示提示-->
<div v-if="+form.customsType === 2" style="color:red;font-size:14px">{{$t('报关退税,请备齐资料。')}}</div> <div v-if="+form.customsType === 2" style="color:red;font-size:14px">{{ $t('报关退税,请备齐资料。') }}</div>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section" v-if="form.transportId == 3"> <div class="form-section" v-if="form.transportId == 3">
<!--目的港清关:选择专线空运才显示,默认选中我司 <!--目的港清关:选择专线空运才显示,默认选中我司
我司选中后,按钮下方显示“多票”和“单票”的操作,默认选中多票。 我司选中后,按钮下方显示“多票”和“单票”的操作,默认选中多票。
客户选中后,按钮下方显示“单票”的操作,默认选中,无需点击--> 客户选中后,按钮下方显示“单票”的操作,默认选中,无需点击-->
<div class="form-section w-500"> <el-form-item :label="$t('目的港清关')" class="w-500">
<el-form-item :label="$t('目的港清关')">
<el-radio-group v-model="form.portDestCustomsClear"> <el-radio-group v-model="form.portDestCustomsClear">
<el-radio :label="1"> <el-radio :label="1">
{{$t('我司')}} {{ $t('我司') }}
<el-tooltip effect="dark" :content="$t('我司承接')" placement="top"> <el-tooltip effect="dark" :content="$t('我司承接')" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</el-radio> </el-radio>
<el-radio :label="2"> <el-radio :label="2">
{{$t('客户')}} {{ $t('客户') }}
<el-tooltip effect="dark" :content="$t('客户自清')" placement="top"> <el-tooltip effect="dark" :content="$t('客户自清')" placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('发货方式')"> <el-form-item :label="$t('发货方式')">
<el-radio-group v-model="form.deliveryWay"> <el-radio-group v-model="form.deliveryWay">
<el-radio :label="1" v-if="form.portDestCustomsClear == 1">{{$t('多票')}}</el-radio> <el-radio :label="1" v-if="form.portDestCustomsClear == 1">{{ $t('多票') }}</el-radio>
<el-radio :label="2">{{$t('单票')}}</el-radio> <el-radio :label="2">{{ $t('单票') }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</div> </div>
</div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('是否控货')" prop="isCargoControl" class="w-500"> <el-form-item :label="$t('是否控货')" prop="isCargoControl" class="w-500">
<template #label> <template #label>
{{$t('是否控货')}} {{ $t('是否控货') }}
<el-tooltip effect="dark" :content="$t('是指由发货人与收货人约定在货物的国际运输过程中,我司作为第三方对该货物货权的控制;需由发货人授权我司放货的情况下收货人才能提取该票货物的一种交易方式')" placement="top"> <el-tooltip effect="dark"
:content="$t('是指由发货人与收货人约定在货物的国际运输过程中,我司作为第三方对该货物货权的控制;需由发货人授权我司放货的情况下收货人才能提取该票货物的一种交易方式')"
placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</template> </template>
...@@ -427,41 +467,47 @@ ...@@ -427,41 +467,47 @@
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('付款人')" prop="drawee" class="w-500"> <el-form-item :label="$t('付款人')" prop="drawee" class="w-500">
<dict-selector :formatter="Number" :type="DICT_TYPE.DRAWEE" v-model="form.drawee" defaultable form-type="radio" :disabled="false"/> <dict-selector :formatter="Number" :type="DICT_TYPE.DRAWEE" v-model="form.drawee" defaultable
<el-table :data="customDraweeList" v-if="form.drawee==3" > form-type="radio" :disabled="false"/>
<el-table :data="customDraweeList" v-if="form.drawee==3">
<el-table-column :label="$t('费用类型')" prop="label" width="200px"></el-table-column> <el-table-column :label="$t('费用类型')" prop="label" width="200px"></el-table-column>
<el-table-column :label="$t('付款人')" width="300px"> <el-table-column :label="$t('付款人')" width="300px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-selector :formatter="Number" :type="DICT_TYPE.DRAWEE" :filter="(e) => e.value == 1 || e.value == 2" v-model="row.value" form-type="radio" :disabled="false"/> <dict-selector :formatter="Number" :type="DICT_TYPE.DRAWEE"
:filter="(e) => e.value == 1 || e.value == 2" v-model="row.value" form-type="radio"
:disabled="false"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
<el-form-item :label="$t('提单是否显示价格')" prop="displayBillLadingPrice"> <el-form-item :label="$t('提单是否显示价格')" prop="displayBillLadingPrice">
<el-radio-group v-model="form.displayBillLadingPrice"> <el-radio-group v-model="form.displayBillLadingPrice">
<el-radio :label="true">{{$t('显示')}}</el-radio> <el-radio :label="true">{{ $t('显示') }}</el-radio>
<el-radio :label="false">{{$t('不显示')}}</el-radio> <el-radio :label="false">{{ $t('不显示') }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section flex"> <div class="form-section flex">
<el-form-item :label="$t('入仓类型')" prop="warehouseType" class="w-500"> <el-form-item :label="$t('入仓类型')" prop="warehouseType" class="w-500">
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="form.warehouseType" defaultable :disabled="false" /> <dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="form.warehouseType" defaultable
:disabled="false"/>
</el-form-item> </el-form-item>
<div> <div>
<el-form-item :label="$t('外部仓库')" prop="isExternalWarehouse"> <el-form-item :label="$t('外部仓库')" prop="isExternalWarehouse">
<el-checkbox label="" v-model="form.isExternalWarehouse" @change="form.isExternalWarehouse=$event" :disabled="false"></el-checkbox> <el-checkbox label="" v-model="form.isExternalWarehouse" @change="form.isExternalWarehouse=$event"
:disabled="false"></el-checkbox>
</el-form-item> </el-form-item>
<div v-if="form.isExternalWarehouse"> <div v-if="form.isExternalWarehouse">
<div v-for="(item, index) in form.externalWarehouseDtoList" class="flex" :key="index"> <div v-for="(item, index) in form.externalWarehouseDtoList" class="flex" :key="index">
<div class="w-300"> <div class="w-380">
<el-form-item :label="$t('装货时间')" <el-form-item :label="$t('装货时间')"
:prop="'externalWarehouseDtoList.' + index + '.estLoadingTime'" :prop="'externalWarehouseDtoList.' + index + '.estLoadingTime'"
:rules="{ :rules="{
required: true, message: '装货时间不能为空', trigger: 'blur' required: true, message: '装货时间不能为空', trigger: 'blur'
}" }"
> >
<el-date-picker v-model="item.estLoadingTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker> <el-date-picker v-model="item.estLoadingTime" value-format="yyyy-MM-dd HH:mm:ss"
class="w-200"></el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
<div class="w-500"> <div class="w-500">
...@@ -473,8 +519,11 @@ ...@@ -473,8 +519,11 @@
> >
<el-input v-model="item.loadingAddress" placeholder="" class="w-200"></el-input> <el-input v-model="item.loadingAddress" placeholder="" class="w-200"></el-input>
</el-form-item> </el-form-item>
<el-button type="primary" icon="el-icon-plus" v-if="index==0" @click="form.externalWarehouseDtoList.push({})"></el-button> <el-button type="primary" icon="el-icon-plus" v-if="index==0"
<el-button type="danger" icon="el-icon-delete" v-else-if="index == form.externalWarehouseDtoList.length-1" @click="form.externalWarehouseDtoList.splice(index, 1)"></el-button> @click="form.externalWarehouseDtoList.push({})"></el-button>
<el-button type="danger" icon="el-icon-delete"
v-else-if="index == form.externalWarehouseDtoList.length-1"
@click="form.externalWarehouseDtoList.splice(index, 1)"></el-button>
</div> </div>
</div> </div>
</div> </div>
...@@ -485,30 +534,32 @@ ...@@ -485,30 +534,32 @@
<el-date-picker v-model="form.deliveryDate" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker v-model="form.deliveryDate" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('是否代收货款')" prop="isCollection" v-if="collectionProxy" class="w-500"> <el-form-item :label="$t('是否代收货款')" prop="isCollection" v-if="collectionProxy" class="w-500">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCollection" form-type="radio" :disabled="false" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCollection"
form-type="radio" :disabled="false"/>
</el-form-item> </el-form-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项--> <!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-form-item :label="$t('代收货款金额')" v-if="collectionProxy && form.isCollection" prop="collectionProxy"> <el-form-item :label="$t('代收货款金额')" v-if="collectionProxy && form.isCollection" prop="collectionProxy">
<el-input type="number" v-model="form.collectionProxy" class="w-200 mr-10" :disabled="false"></el-input> <el-input type="number" v-model="form.collectionProxy" class="w-200 mr-10" :disabled="false"></el-input>
<selector v-model="form.collectionProxyCurrency" :options="currencyList" label-field="titleZh" value-field="id" defaultable class="w-100" :disabled="false"/> <selector v-model="form.collectionProxyCurrency" :options="currencyList" label-field="titleZh"
value-field="id" defaultable class="w-100" :disabled="false"/>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section flex"> <div class="form-section flex">
<el-form-item :label="$t('收货方式')" prop="harvestMethod" class="w-500"> <el-form-item :label="$t('收货方式')" prop="harvestMethod" class="w-500">
<el-select v-model="form.harvestMethod" @change="handleChange"> <el-select v-model="form.harvestMethod" @change="handleChange">
<el-option :label="$t('自提')" :value="1" ></el-option> <el-option :label="$t('自提')" :value="1"></el-option>
<el-option v-if="homeDeliveryService" :label="$t('送货上门')" :value="2" ></el-option> <el-option v-if="homeDeliveryService" :label="$t('送货上门')" :value="2"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('关联报价单')" prop="offerId"> <el-form-item :label="$t('关联报价单')" prop="offerId">
<span v-if="offerIdNochange&&offerNumber">{{offerNumber}}</span> <span v-if="offerIdNochange&&offerNumber">{{ offerNumber }}</span>
<el-select <el-select
v-else v-else
v-model="form.offerId" v-model="form.offerId"
filterable filterable
clearable clearable
reserve-keyword reserve-keyword
:disabled = "offerIdNochange" :disabled="offerIdNochange"
:placeholder="$t('请选择')" :placeholder="$t('请选择')"
> >
<el-option <el-option
...@@ -543,41 +594,50 @@ ...@@ -543,41 +594,50 @@
<div class="card-title">其他</div> <div class="card-title">其他</div>
</template> </template>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('特殊要求')" > <el-form-item :label="$t('特殊要求')">
<template #label> <template #label>
{{$t('特殊要求')}} {{ $t('特殊要求') }}
<el-tooltip effect="dark" :content="$t('如需我司打包,请勾选相应选项,费用付款人及打包要求可备注补充')" placement="top"> <el-tooltip effect="dark" :content="$t('如需我司打包,请勾选相应选项,费用付款人及打包要求可备注补充')"
placement="top">
<i class="el-icon-question"></i> <i class="el-icon-question"></i>
</el-tooltip> </el-tooltip>
</template> </template>
<dict-selector v-model="form.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple :disabled="false"/> <dict-selector v-model="form.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS"
multiple :disabled="false"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('特殊要求备注')"> <el-form-item :label="$t('特殊要求备注')">
<el-input v-model="form.packageRemarks" :disabled="false" ></el-input> <el-input v-model="form.packageRemarks" :disabled="false"></el-input>
</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('快递单号')">
<el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')" :disabled="false"> <el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')" :disabled="false">
<el-button type="primary" slot="append" @click="getOrderCourierNumber" :disabled="false">{{$t('生成单号')}}</el-button> <el-button type="primary" slot="append" @click="getOrderCourierNumber" :disabled="false">
{{ $t('生成单号') }}
</el-button>
</el-input> </el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section" v-if="[2,3,4].indexOf(+form.transportId) > -1"> <div class="form-section" 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" formatter="bool" :defaultable="!editMode" :disabled="false" /> <dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter="bool" :defaultable="!editMode" :disabled="false"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('清关证书备注')" > <el-form-item :label="$t('清关证书备注')">
<el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input> <el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input>
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"v-if="[3,4].indexOf(+form.transportId) > -1"> <div class="form-section" v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('是否拆包')"> <el-form-item :label="$t('是否拆包')">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" /> <dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING"
formatter="bool" :defaultable="!editMode" :disabled="false"/>
</el-form-item> </el-form-item>
<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" formatter="bool" :defaultable="!editMode" :disabled="false" /> <dict-selector v-model="form.isSingleTicketTransport" form-type="radio"
<span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span> :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode"
:disabled="false"/>
<span
style="margin-left:10px">{{ $t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”') }}</span>
</el-form-item> </el-form-item>
</div> </div>
<!-- 20240823 新需求改动:屏蔽出单方式 和 是否双清字段 <!-- 20240823 新需求改动:屏蔽出单方式 和 是否双清字段
...@@ -600,52 +660,58 @@ ...@@ -600,52 +660,58 @@
</el-card> </el-card>
<el-card class="mt-10" v-if="showWorkFlow"> <el-card class="mt-10" v-if="showWorkFlow">
<div class="card-title" slot="header">{{$t('审批流程')}}</div> <div class="card-title" slot="header">{{ $t('审批流程') }}</div>
<work-flow :xmlkey="updateChannel ? 'shipment_channel_change' : 'order_modify'" v-model="ccIdArr" /> <work-flow :xmlkey="updateChannel ? 'shipment_channel_change' : 'order_modify'" v-model="ccIdArr"/>
</el-card> </el-card>
<div style="margin: 30px 0; display: flex"> <div style="margin: 30px 0; display: flex">
<!--返回按钮应该在表单被禁用的情况下也可以点击,所以需要用一个form来包裹以脱离原form的disabled控制--> <!--返回按钮应该在表单被禁用的情况下也可以点击,所以需要用一个form来包裹以脱离原form的disabled控制-->
<el-form inline class="mr-10"> <el-form inline class="mr-10">
<el-button @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button> <el-button @click="$store.dispatch('tagsView/delCurrentView')">{{ $t('返回') }}</el-button>
</el-form> </el-form>
<template v-if="form.applyStatus == 1"> <template v-if="form.applyStatus == 1">
<el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + form.formId)">{{$t('审核中')}}</el-button> <el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + form.formId)">
{{ $t('审核中') }}
</el-button>
</template> </template>
<!--更新渠道的时候用一个form包裹按钮,脱离原form的disabled控制--> <!--更新渠道的时候用一个form包裹按钮,脱离原form的disabled控制-->
<el-form v-else-if="updateChannel" inline> <el-form v-else-if="updateChannel" inline>
<el-button type="primary" @click="submitForm(2)">{{$t('编辑订单')}}</el-button> <!--修改--> <el-button type="primary" @click="submitForm(2)">{{ $t('编辑订单') }}</el-button> <!--修改-->
</el-form> </el-form>
<template v-else> <template v-else>
<el-button type="primary" @click="submitForm(0)" v-if="!form.status">{{$t('保存草稿')}}</el-button> <!--草稿--> <el-button type="primary" @click="submitForm(0)" v-if="!form.status">{{ $t('保存草稿') }}</el-button><!--草稿-->
<el-button type="primary" @click="submitForm(2)" v-if="!form.orderId || !form.status">{{$t('新建订单')}}</el-button> <!--待入仓--> <el-button type="primary" @click="submitForm(2)" v-if="!form.orderId || !form.status">{{ $t('新建订单') }}
<el-button type="primary" @click="submitForm(2)" v-else>{{$t('编辑订单')}}</el-button> <!--修改--> </el-button> <!--待入仓-->
<el-button type="primary" @click="submitForm(2)" v-else>{{ $t('编辑订单') }}</el-button> <!--修改-->
</template> </template>
</div> </div>
</el-form> </el-form>
<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>
<div class="mt-20"> <div class="mt-20">
<el-upload :http-request="upload" :show-file-list="false" action="" class="mr-10" style="display:inline-block; "> <el-upload :http-request="upload" :show-file-list="false" action="" class="mr-10"
<el-button size="small" type="primary">{{$t('点击上传')}}</el-button> style="display:inline-block; ">
<el-button size="small" type="primary">{{ $t('点击上传') }}</el-button>
</el-upload> </el-upload>
<el-button type="info" @click="downloadTpl" size="small" :loading="exportLoading">{{$t('装箱单模板')}}</el-button> <el-button type="info" @click="downloadTpl" size="small" :loading="exportLoading">{{ $t('装箱单模板') }}
</el-button>
</div> </div>
<el-table :data="importList" class="mt-10" height="300"> <el-table :data="importList" class="mt-10" height="300">
<el-table-column :label="$t('序号')"> <el-table-column :label="$t('序号')">
<template slot-scope="scope">{{scope.$index + 1}}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('中文品名')" prop="prodTitleZh"></el-table-column> <el-table-column :label="$t('中文品名')" prop="prodTitleZh"></el-table-column>
<el-table-column :label="$t('英文品名')" prop="prodTitleEn"></el-table-column> <el-table-column :label="$t('英文品名')" prop="prodTitleEn"></el-table-column>
<el-table-column :label="$t('品牌')" prop="brand"> <el-table-column :label="$t('品牌')" prop="brand">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /> <dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('件数')" prop="num"></el-table-column> <el-table-column :label="$t('件数')" prop="num"></el-table-column>
...@@ -658,13 +724,15 @@ ...@@ -658,13 +724,15 @@
</el-table> </el-table>
<div class="mt-10 center"> <div class="mt-10 center">
<el-button type="primary" @click="addToProductList">{{$t('下一步')}}</el-button> <el-button type="primary" @click="addToProductList">{{ $t('下一步') }}</el-button>
<el-button type="default" @click="showBatchImportDialog=false">{{$t('取消')}}</el-button> <el-button type="default" @click="showBatchImportDialog=false">{{ $t('取消') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<choose-contact-dialog v-if="!!contactChooseType" :type="2" @choose="onContactChoose" @close="contactChooseType=null" /> <choose-contact-dialog v-if="!!contactChooseType" :type="2" @choose="onContactChoose"
<quick-create-customer v-if="quickCreateType" :type="quickCreateType" @success="onContactChoose" @close="quickCreateType=null" /> @close="contactChooseType=null"/>
<quick-create-customer v-if="quickCreateType" :type="quickCreateType" @success="onContactChoose"
@close="quickCreateType=null"/>
</div> </div>
</template> </template>
...@@ -684,8 +752,8 @@ import {getProductAttrList} from '@/api/ecw/productAttr' ...@@ -684,8 +752,8 @@ import {getProductAttrList} from '@/api/ecw/productAttr'
import {getChannelList} from '@/api/ecw/channel' import {getChannelList} from '@/api/ecw/channel'
import Selector from '@/components/Selector' import Selector from '@/components/Selector'
import CustomerContactSelector from '@/components/CustomerContactSelector' import CustomerContactSelector from '@/components/CustomerContactSelector'
import { getGuojiaAndShiAndWarehouseList, openedRouterList as getOpenedRouterList } from '@/api/ecw/warehouse' import {getGuojiaAndShiAndWarehouseList, openedRouterList as getOpenedRouterList} from '@/api/ecw/warehouse'
import { checkCountryCode, getTradeCityList } from '@/api/ecw/region' import {checkCountryCode, getTradeCityList} from '@/api/ecw/region'
import {getDictData, getDictDatas} from '@/utils/dict' import {getDictData, getDictDatas} from '@/utils/dict'
import {getCurrencyList} from '@/api/ecw/currency' import {getCurrencyList} from '@/api/ecw/currency'
import {getUnitList} from '@/api/ecw/unit' import {getUnitList} from '@/api/ecw/unit'
...@@ -698,9 +766,9 @@ import {calculationPrice} from '@/api/ecw/product' ...@@ -698,9 +766,9 @@ import {calculationPrice} from '@/api/ecw/product'
import SupplierSelector from '@/components/SupplierSelector' import SupplierSelector from '@/components/SupplierSelector'
import Decimal from 'decimal.js' import Decimal from 'decimal.js'
import WorkFlow from '@/components/WorkFlow' import WorkFlow from '@/components/WorkFlow'
import { getCustomer } from "@/api/ecw/customer"; import {getCustomer} from "@/api/ecw/customer";
import {debounce} from "@/utils"; import {debounce} from "@/utils";
import { getOfferSelect, getOfferCheck } from "@/api/ecw/offer" import {getOfferSelect, getOfferCheck} from "@/api/ecw/offer"
import Template from '@/views/cms/template/index.vue' import Template from '@/views/cms/template/index.vue'
// 缓存默认的表单数据 // 缓存默认的表单数据
...@@ -710,14 +778,14 @@ let makeDefaultFormData = () => { ...@@ -710,14 +778,14 @@ let makeDefaultFormData = () => {
lineId: null, lineId: null,
objectiveId: null, objectiveId: null,
departureId: null, departureId: null,
status:0, status: 0,
sendstatus:0, sendstatus: 0,
isCargoControl: false, isCargoControl: false,
isCollection: false, isCollection: false,
type:[], type: [],
isExternalWarehouse: false, isExternalWarehouse: false,
externalWarehouseDtoList:[], externalWarehouseDtoList: [],
orderItemVOList:[], orderItemVOList: [],
drawee: 2, drawee: 2,
harvestMethod: 1, harvestMethod: 1,
displayBillLadingPrice: true displayBillLadingPrice: true
...@@ -729,11 +797,20 @@ export default { ...@@ -729,11 +797,20 @@ export default {
name: "EcwOrderEdit", name: "EcwOrderEdit",
components: { components: {
Template, Template,
ProductSelector, Selector, CustomerContactSelector, AreaSelector, FileUpload, AreaCodeSelector, ChooseContactDialog, QuickCreateCustomer, SupplierSelector, WorkFlow ProductSelector,
Selector,
CustomerContactSelector,
AreaSelector,
FileUpload,
AreaCodeSelector,
ChooseContactDialog,
QuickCreateCustomer,
SupplierSelector,
WorkFlow
}, },
data() { data() {
let validatorPositiveNumber = (rule, value, callback) => { let validatorPositiveNumber = (rule, value, callback) => {
if(!value || value == '')return callback(); if (!value || value == '') return callback();
if (!value) return callback(new Error('请输入数字')) if (!value) return callback(new Error('请输入数字'))
if (!Number(value)) return callback(new Error('请输入有效数字')) if (!Number(value)) return callback(new Error('请输入有效数字'))
let reg = /((^[1-9]\d*)|^0)(\.\d*){0,1}$/; let reg = /((^[1-9]\d*)|^0)(\.\d*){0,1}$/;
...@@ -747,18 +824,18 @@ export default { ...@@ -747,18 +824,18 @@ export default {
// 遮罩层 // 遮罩层
loading: true, loading: true,
//productList:[], // 商品信息 //productList:[], // 商品信息
productAttrList:[], // 商品属性 productAttrList: [], // 商品属性
channelList: [], // 出货取到 channelList: [], // 出货取到
routerList: [], routerList: [],
tradeCityList: [], tradeCityList: [],
treeList: [], treeList: [],
consignorContact: {}, // 发货联系人 consignorContact: {}, // 发货联系人
consigneeContact:{}, // 收货联系人 consigneeContact: {}, // 收货联系人
/* consignee: null, /* consignee: null,
consignor: null, */ consignor: null, */
transportList: [], transportList: [],
currencyList:[], currencyList: [],
unitList:[], unitList: [],
couponList: [], couponList: [],
couponTypeList: [], couponTypeList: [],
fee: {}, // 费用 fee: {}, // 费用
...@@ -768,7 +845,7 @@ export default { ...@@ -768,7 +845,7 @@ export default {
// 表单校验 // 表单校验
labelStyle: 'width:120px', labelStyle: 'width:120px',
showBatchImportDialog: false, // 显示批量导入弹窗 showBatchImportDialog: false, // 显示批量导入弹窗
importList:[], importList: [],
exportLoading: false, // 装下单模板下载状态 exportLoading: false, // 装下单模板下载状态
contactChooseType: null, // 联系人选择对象consignor(发货人) 或者 consignee(收货人) contactChooseType: null, // 联系人选择对象consignor(发货人) 或者 consignee(收货人)
quickCreateType: null, // 快速新建客户类型,1发货人,2收货人 quickCreateType: null, // 快速新建客户类型,1发货人,2收货人
...@@ -777,14 +854,16 @@ export default { ...@@ -777,14 +854,16 @@ export default {
initing: true, // 初始化中, initing: true, // 初始化中,
updateChannel: false, // 是否更新渠道 updateChannel: false, // 是否更新渠道
offerData: [],// 关联报价单 offerData: [],// 关联报价单
offerIdNochange:false, offerIdNochange: false,
offerNumber:null, offerNumber: null,
showAdress: false, showAdress: false,
// harvestMethod2: null, // harvestMethod2: null,
/* lunchList: [ /* lunchList: [
{ label: "自提", value: 1 }, { label: "自提", value: 1 },
{ label: "送货上门", value: 2 }, { label: "送货上门", value: 2 },
], */ ], */
// 发货人客户最新信息
consignorCustomer: null,
// 发货人是否允许控货无收货人 // 发货人是否允许控货无收货人
noConsignee: false, noConsignee: false,
// 是否有收货人 // 是否有收货人
...@@ -793,13 +872,13 @@ export default { ...@@ -793,13 +872,13 @@ export default {
showFullConsignor: false, showFullConsignor: false,
// 是否展示全部收货人信息 // 是否展示全部收货人信息
showFullConsignee: false, showFullConsignee: false,
destCountryList:[], destCountryList: [],
destCityList: [], destCityList: [],
selectedRouter: null selectedRouter: null
}; };
}, },
computed:{ computed: {
rules(){ rules() {
const rules = { const rules = {
marks: [ marks: [
{required: true, message: this.$t('请填写唛头')}, {required: true, message: this.$t('请填写唛头')},
...@@ -815,56 +894,63 @@ export default { ...@@ -815,56 +894,63 @@ export default {
trigger: 'blur' trigger: 'blur'
} }
], ],
consignorContactsId : [{required: true, message: this.$t('发货人不能为空')}], consignorContactsId: [{required: true, message: this.$t('发货人不能为空')}],
transportId : [{required: true, message: this.$t('请选择运输方式')}], transportId: [{required: true, message: this.$t('请选择运输方式')}],
departureId : [{required: true, message: this.$t('请选择始发城市')}], departureId: [{required: true, message: this.$t('请选择始发城市')}],
objectiveId : [{required: true, message: this.$t('请选择目的城市')}], destCountryId: [{required: true, message: this.$t('请选择目的国家')}],
lineId : [{required: true, message: this.$t('请选择路线')}], lineId: [{required: true, message: this.$t('请选择路线')}],
channelId : [{required: true, message: this.$t('请选择出货渠道')}], channelId: [{required: true, message: this.$t('请选择出货渠道')}],
deliveryDate : [{required: true, message: this.$t('请选择预计送货日期')}], deliveryDate: [{required: true, message: this.$t('请选择预计送货日期')}],
consigneeAddress : [{required: true, message: this.$t('请填写详细地址')}], consigneeAddress: [{required: true, message: this.$t('请填写详细地址')}],
country : [{required: true, message: this.$t('收货地区填写不完整')}], country: [{required: true, message: this.$t('收货地区填写不完整')}],
isCargoControl : [{required: true, message: this.$t('请选择是否控货')}], isCargoControl: [{required: true, message: this.$t('请选择是否控货')}],
isCollection : [{required: true, message: this.$t('请选择代收货款')}], isCollection: [{required: true, message: this.$t('请选择代收货款')}],
collectionProxy : [{required: true, message: this.$t('代收货款不能为空')}], collectionProxy: [{required: true, message: this.$t('代收货款不能为空')}],
customsType : [{required: true, message: this.$t('请选择单证报关')}], customsType: [{required: true, message: this.$t('请选择单证报关')}],
warehouseType : [{required: true, message: this.$t('请选择入仓类型')}], warehouseType: [{required: true, message: this.$t('请选择入仓类型')}],
harvestMethod : [{required: true, message: this.$t('请选择收货方式')}] harvestMethod: [{required: true, message: this.$t('请选择收货方式')}]
} }
// 有收货人则添加收货人校验 // 有收货人则添加收货人校验
if(this.hasConsignee){ if (this.hasConsignee) {
rules.consigneeContactsId = [{required: true, message: this.$t('收货人不能为空')}] rules.consigneeContactsId = [{required: true, message: this.$t('收货人不能为空')}]
} }
return rules return rules
}, },
// 是否已完成入仓 // 是否已完成入仓
inWarehouse(){ inWarehouse() {
return (!!this.form.inWarehouseState && this.form.inWarehouseState > 201) || this.form.shipmentState > 0 return (!!this.form.inWarehouseState && this.form.inWarehouseState > 201) || this.form.shipmentState > 0
}, },
exportCityList(){ exportCityList() {
return this.tradeCityList.filter(item => item.type == 2 || item.type == 3) return this.tradeCityList.filter(item => item.type == 2 || item.type == 3)
}, },
importCityList(){ importCityList() {
return this.tradeCityList.filter(item => item.type == 1 || item.type == 3) return this.tradeCityList.filter(item => item.type == 1 || item.type == 3)
}, },
exportCityIds(){ exportCityIds() {
let ids = [] let ids = []
this.exportCityList.forEach(item => { this.exportCityList.forEach(item => {
ids.push(item.id) ids.push(item.id)
}) })
return ids return ids
}, },
importCityIds(){ importCountryIds() {
let ids = [] let ids = []
this.importCityList.forEach(item => { this.destCountryList.forEach(item => {
ids.push(item.id) ids.push(item.guojia)
}) })
return ids return ids
}, },
getDictData(){ importCityIds() {
let ids = []
this.destCityList.forEach(item => {
ids.push(item.shi)
})
return ids
},
getDictData() {
return (type, value) => getDictData(type, value) || {} return (type, value) => getDictData(type, value) || {}
}, },
getDictDatas(){ getDictDatas() {
return getDictDatas return getDictDatas
}, },
/* selectedRouter(){ /* selectedRouter(){
...@@ -873,45 +959,45 @@ export default { ...@@ -873,45 +959,45 @@ export default {
return this.routerList.find(item => item.id == this.form.lineId) return this.routerList.find(item => item.id == this.form.lineId)
}, */ }, */
// 送货上门 // 送货上门
homeDeliveryService(){ homeDeliveryService() {
return this.selectedRouter && this.selectedRouter.otherService && this.selectedRouter.otherService.indexOf('2') > -1 return this.selectedRouter && this.selectedRouter.otherService && this.selectedRouter.otherService.indexOf('2') > -1
}, },
// 代收货款(非控货订单,且路线开通了代收服务) // 代收货款(非控货订单,且路线开通了代收服务)
collectionProxy(){ collectionProxy() {
return !this.form.isCargoControl && this.selectedRouter && this.selectedRouter.otherService && this.selectedRouter.otherService.indexOf('3') > -1 return !this.form.isCargoControl && this.selectedRouter && this.selectedRouter.otherService && this.selectedRouter.otherService.indexOf('3') > -1
}, },
// 根据渠道id显示渠道名 // 根据渠道id显示渠道名
getChannelNameById(){ getChannelNameById() {
return channelId => { return channelId => {
return this.channelList.find(item => item.channelId == channelId) ?. nameZh return this.channelList.find(item => item.channelId == channelId)?.nameZh
} }
}, },
// 当前运输方式 // 当前运输方式
transport(){ transport() {
return this.transportList.find(item => item.value == this.form.transportId) return this.transportList.find(item => item.value == this.form.transportId)
}, },
// 根据id获取优惠券 // 根据id获取优惠券
getCoupon(){ getCoupon() {
return couponId => { return couponId => {
if(!couponId) return null if (!couponId) return null
return this.couponList.find(item => item.couponId == couponId) return this.couponList.find(item => item.couponId == couponId)
} }
}, },
currentcyMap(){ currentcyMap() {
let map = {} let map = {}
this.currencyList.forEach(item => { this.currencyList.forEach(item => {
map[item.id] = item.titleZh map[item.id] = item.titleZh
}) })
return map return map
}, },
unitMap(){ unitMap() {
let map = {} let map = {}
this.unitList.forEach(item => { this.unitList.forEach(item => {
map[item.id] = item.titleZh map[item.id] = item.titleZh
}) })
return map return map
}, },
sum(){ sum() {
let sum = { let sum = {
totalNum: new Decimal(0), totalNum: new Decimal(0),
totalVolume: new Decimal(0), totalVolume: new Decimal(0),
...@@ -919,7 +1005,7 @@ export default { ...@@ -919,7 +1005,7 @@ export default {
totalWorth: new Decimal(0), totalWorth: new Decimal(0),
totalQuatity: new Decimal(0) totalQuatity: new Decimal(0)
} }
if(!this.form || !this.form.orderItemVOList) return sum if (!this.form || !this.form.orderItemVOList) return sum
this.form.orderItemVOList.forEach(item => { this.form.orderItemVOList.forEach(item => {
sum.totalNum = sum.totalNum.plus(item.num || 0) sum.totalNum = sum.totalNum.plus(item.num || 0)
sum.totalVolume = sum.totalVolume.plus(item.volume || 0) sum.totalVolume = sum.totalVolume.plus(item.volume || 0)
...@@ -930,51 +1016,51 @@ export default { ...@@ -930,51 +1016,51 @@ export default {
return sum return sum
}, },
// 总优惠金额 // 总优惠金额
discount(){ discount() {
return 0 return 0
}, },
// 是否编辑 // 是否编辑
editMode(){ editMode() {
return this.$route.path.indexOf('create') == -1 return this.$route.path.indexOf('create') == -1
}, },
// 是否可以编辑商品基本信息(货值除外) // 是否可以编辑商品基本信息(货值除外)
productEditable(){ productEditable() {
// 非编辑模式 或者 未完成入仓 // 非编辑模式 或者 未完成入仓
return !this.editMode || !this.inWarehouse return !this.editMode || !this.inWarehouse
}, },
// 路线开通的服务 // 路线开通的服务
routeOtherServices(){ routeOtherServices() {
if(!this.selectedRouter || !this.selectedRouter.otherService) return [] if (!this.selectedRouter || !this.selectedRouter.otherService) return []
return this.selectedRouter.otherService.split(',') return this.selectedRouter.otherService.split(',')
}, },
// 是否可以添加商品 // 是否可以添加商品
canAddProduct(){ canAddProduct() {
if(!this.form.lineId){ if (!this.form.lineId) {
return false return false
} }
// 如果是海空联运或者空运专线则必须选择渠道 // 如果是海空联运或者空运专线则必须选择渠道
if(this.transport && this.transport.cssClass == 'channel' && !this.form.channelId ){ if (this.transport && this.transport.cssClass == 'channel' && !this.form.channelId) {
return false return false
} }
return true return true
}, },
// 显示的目的国 // 显示的目的国
showDestCountryList(){ showDestCountryList() {
return this.destCountryList return this.destCountryList
}, },
showDestCityList(){ showDestCityList() {
if(!this.form.destCountryId) return this.destCityList if (!this.form.destCountryId) return this.destCityList
return this.destCityList.filter(item => item.guojia === this.form.destCountryId) || [] return this.destCityList.filter(item => item.guojia === this.form.destCountryId) || []
}, },
// 是否已起运(已起运不让修改报关方式) // 是否已起运(已起运不让修改报关方式)
isShipment(){ isShipment() {
return [326,328,329,330,332,391,392,426,428,432].indexOf(this.form.shipmentState) > -1 return [326, 328, 329, 330, 332, 391, 392, 426, 428, 432].indexOf(this.form.shipmentState) > -1
} }
}, },
watch:{ watch: {
// 如果无收货人则必须控货 // 如果无收货人则必须控货
hasConsignee(val){ hasConsignee(val) {
if(!val){ if (!val) {
this.$set(this.form, 'isCargoControl', true) this.$set(this.form, 'isCargoControl', true)
// 无收货人且控货则默认发货人付款 // 无收货人且控货则默认发货人付款
this.$set(this.form, 'drawee', 1) this.$set(this.form, 'drawee', 1)
...@@ -982,24 +1068,24 @@ export default { ...@@ -982,24 +1068,24 @@ export default {
this.$refs.form?.clearValidate("consigneeContactsId") this.$refs.form?.clearValidate("consigneeContactsId")
} }
}, },
ccIdArr(arr){ ccIdArr(arr) {
this.$set(this.form, 'ccIds', arr.join(",")) this.$set(this.form, 'ccIds', arr.join(","))
}, },
// 始发地 // 始发地
'form.departureId'(departureId, oldDepartureId){ 'form.departureId'(departureId, oldDepartureId) {
console.log('departureId', departureId) console.log('departureId', departureId)
// this.getOpenedRouterList() // this.getOpenedRouterList()
}, },
// 目的地 // 目的地
async 'form.objectiveId'(objectiveId, oldObjectiveId){ async 'form.objectiveId'(objectiveId, oldObjectiveId) {
// 重新获取路线 // 重新获取路线
// await this.getOpenedRouterList() // await this.getOpenedRouterList()
// 重新获取渠道 // 重新获取渠道
await this.getChannelList() await this.getChannelList()
}, },
'form.transportId'(transportId, oldTransportId){ 'form.transportId'(transportId, oldTransportId) {
// 空运 // 空运
if(!this.initing && (this.form.transportId == 4 || this.form.transportId == 3)){ if (!this.initing && (this.form.transportId == 4 || this.form.transportId == 3)) {
this.$nextTick(() => { this.$nextTick(() => {
console.log('切换空运,修改默认值') console.log('切换空运,修改默认值')
this.$set(this, 'form', Object.assign(this.form, { this.$set(this, 'form', Object.assign(this.form, {
...@@ -1017,28 +1103,28 @@ export default { ...@@ -1017,28 +1103,28 @@ export default {
} */ } */
// 选择海运拼柜和海运整柜清空渠道值 // 选择海运拼柜和海运整柜清空渠道值
if(transportId == 1 || transportId == 2){ if (transportId == 1 || transportId == 2) {
this.$set(this.form, 'channelId', null) this.$set(this.form, 'channelId', null)
} }
console.log('form.transportId', this.form.transportId, this.initing) console.log('form.transportId', this.form.transportId, this.initing)
if(!this.initing && transportId == 3){ if (!this.initing && transportId == 3) {
// 如果是专线空运默认目的港清关选择我司 // 如果是专线空运默认目的港清关选择我司
this.$set(this.form, 'portDestCustomsClear', 1) this.$set(this.form, 'portDestCustomsClear', 1)
} }
// this.getOpenedRouterList() // this.getOpenedRouterList()
}, },
'form.channelId'(){ 'form.channelId'() {
this.calculationPrice() this.calculationPrice()
if(this.form.lineId) this.getOfferData() if (this.form.lineId) this.getOfferData()
// 选择渠道后需要筛选目的城市和线路 // 选择渠道后需要筛选目的城市和线路
// 有点卡,改异步 // 有点卡,改异步
this.$nextTick(async () => { this.$nextTick(async () => {
// 更新目的城市备选 // 更新目的城市备选
await this.getTradeCity() await this.getTradeCity()
// 如果已选择城市,在切换后不可用则重置 // 如果已选择城市,在切换后不可用则重置
if(this.form.objectiveId && !this.importCityList.find(item => item.id == this.form.objectiveId)){ if (this.form.objectiveId && !this.importCityList.find(item => item.id == this.form.objectiveId)) {
this.$set(this.form, 'objectiveId', null) this.$set(this.form, 'objectiveId', null)
} }
// 更新线路备选 // 更新线路备选
...@@ -1049,22 +1135,22 @@ export default { ...@@ -1049,22 +1135,22 @@ export default {
} */ } */
}) })
}, },
'form.consigneeCountryCode'(){ 'form.consigneeCountryCode'() {
if(this.form.lineId) this.getOfferData() if (this.form.lineId) this.getOfferData()
}, },
'form.consignorCountryCode'(){ 'form.consignorCountryCode'() {
if(this.form.lineId) this.getOfferData() if (this.form.lineId) this.getOfferData()
}, },
'form.consigneePhone'(){ 'form.consigneePhone'() {
if(this.form.lineId) this.getOfferData() if (this.form.lineId) this.getOfferData()
}, },
'form.consignorPhone'(){ 'form.consignorPhone'() {
if(this.form.lineId) this.getOfferData() if (this.form.lineId) this.getOfferData()
}, },
async 'form.lineId'(lineId){ async 'form.lineId'(lineId) {
console.log("路线修改", lineId) console.log("路线修改", lineId)
let router = this.routerList.find(item => item.id == lineId) let router = this.routerList.find(item => item.id == lineId)
if(!router){ if (!router) {
return return
} }
/* this.$set(this.form, 'departureId', router.startCityId) /* this.$set(this.form, 'departureId', router.startCityId)
...@@ -1088,56 +1174,56 @@ export default { ...@@ -1088,56 +1174,56 @@ export default {
console.log('packageType', val, val.length) console.log('packageType', val, val.length)
this.$set(this.form, 'packageType', val ? val.join(',') : '') this.$set(this.form, 'packageType', val ? val.join(',') : '')
}, */ }, */
'form.isExternalWarehouse'(isExternalWarehouse){ 'form.isExternalWarehouse'(isExternalWarehouse) {
// 勾选外部仓则添加一个默认的,取消则删除默认的空的 // 勾选外部仓则添加一个默认的,取消则删除默认的空的
if(!isExternalWarehouse){ if (!isExternalWarehouse) {
this.$set(this.form, 'externalWarehouseDtoList', []) this.$set(this.form, 'externalWarehouseDtoList', [])
}else if(!this.form.externalWarehouseDtoList || !this.form.externalWarehouseDtoList.length){ } else if (!this.form.externalWarehouseDtoList || !this.form.externalWarehouseDtoList.length) {
this.$set(this.form, 'externalWarehouseDtoList', [{}]) this.$set(this.form, 'externalWarehouseDtoList', [{}])
} }
}, },
// 选择送货上门需要查询并填充默认地址 // 选择送货上门需要查询并填充默认地址
'form.harvestMethod'(harvestMethod){ 'form.harvestMethod'(harvestMethod) {
if(harvestMethod == 2 && !this.form.address && this.form.consigneeId){ if (harvestMethod == 2 && !this.form.address && this.form.consigneeId) {
getCustomer(this.form.consigneeId).then(res => { getCustomer(this.form.consigneeId).then(res => {
if(res.data.address){ if (res.data.address) {
this.$set(this.form, 'consigneeAddress', res.data.address) this.$set(this.form, 'consigneeAddress', res.data.address)
} }
}) })
} }
}, },
'form.isCargoControl'(isCargoControl){ 'form.isCargoControl'(isCargoControl) {
console.log('form.isCargoControl', this.form.isCargoControl, this.initing) console.log('form.isCargoControl', this.form.isCargoControl, this.initing)
if(!this.initing){ if (!this.initing) {
this.$set(this.form, 'drawee', isCargoControl && !this.hasConsignee ? 1 : 2) this.$set(this.form, 'drawee', isCargoControl && !this.hasConsignee ? 1 : 2)
} }
this.setBllLandingPrice('form.isCargoControl') this.setBllLandingPrice('form.isCargoControl')
}, },
'form.type'(newVal, oldVal){ 'form.type'(newVal, oldVal) {
// 在选择预计送货日期后这里会触发,暂不清楚原因,所以加一个判断 // 在选择预计送货日期后这里会触发,暂不清楚原因,所以加一个判断
/* if(newVal?.join(",") == oldVal?.join(",")){ /* if(newVal?.join(",") == oldVal?.join(",")){
return return
} */ } */
this.setBllLandingPrice('form.type') this.setBllLandingPrice('form.type')
}, },
'form.drawee'(old, newVal){ 'form.drawee'(old, newVal) {
this.setBllLandingPrice('form.drawee') this.setBllLandingPrice('form.drawee')
}, },
'form.consigneeId'(){ 'form.consigneeId'() {
this.setBllLandingPrice('form.consigneeId') this.setBllLandingPrice('form.consigneeId')
}, },
'form.consignorId'(){ 'form.consignorId'() {
this.setBllLandingPrice('form.consignorId') this.setBllLandingPrice('form.consignorId')
}, },
// 目的港清关,1我司,2客户 // 目的港清关,1我司,2客户
'form.portDestCustomsClear'(portDestCustomsClear){ 'form.portDestCustomsClear'(portDestCustomsClear) {
// 我司默认多票 // 我司默认多票
if(portDestCustomsClear == 1){ if (portDestCustomsClear == 1) {
this.$set(this.form, 'deliveryWay', 1) this.$set(this.form, 'deliveryWay', 1)
} }
// 客户默认单票 // 客户默认单票
if(portDestCustomsClear == 2){ if (portDestCustomsClear == 2) {
this.$set(this.form, 'deliveryWay', 2) this.$set(this.form, 'deliveryWay', 2)
} }
}, },
...@@ -1145,26 +1231,27 @@ export default { ...@@ -1145,26 +1231,27 @@ export default {
console.log('form.orderItemVOList', this.form.orderItemVOList.length, this.form.orderItemVOList) console.log('form.orderItemVOList', this.form.orderItemVOList.length, this.form.orderItemVOList)
}, */ }, */
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择 // 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter(val){ selectedRouter(val) {
if(!val){ if (!val) {
return return
} }
['1', '4'].forEach(service => { ['1', '4'].forEach(service => {
if(this.routeOtherServices.indexOf(service) < 0 && this.form.type.indexOf(service) > -1){ if (this.routeOtherServices.indexOf(service) < 0 && this.form.type.indexOf(service == 4 ? 2 : service) > -1) {
this.form.type.splice(this.form.type.findIndex(item => item == service), 1) console.log("当前集运服务选择", this.form.type)
this.form.type.splice(this.form.type.findIndex(item => item == (service == 4 ? 2 : service)), 1)
} }
}) })
}, },
// 送货上门变化后需要判断当前选择的收货方式,如果选择了送货上门但是当前不支持送货上门则需要重置 // 送货上门变化后需要判断当前选择的收货方式,如果选择了送货上门但是当前不支持送货上门则需要重置
homeDeliveryService(enable){ homeDeliveryService(enable) {
if(!enable && this.form.harvestMethod != 1){ if (!enable && this.form.harvestMethod != 1) {
this.form.harvestMethod = 1 this.form.harvestMethod = 1
} }
}, },
// 变更渠道需要显示工作流组件 // 变更渠道需要显示工作流组件
updateChannel(updateChannel){ updateChannel(updateChannel) {
if(updateChannel){ if (updateChannel) {
this.$set(this, 'showWorkFlow', true) this.$set(this, 'showWorkFlow', true)
} }
}, },
...@@ -1172,17 +1259,17 @@ export default { ...@@ -1172,17 +1259,17 @@ export default {
this.$set(this.form, 'transportId', transportType ? +transportType : undefined) this.$set(this.form, 'transportId', transportType ? +transportType : undefined)
}*/ }*/
}, },
activated(){ activated() {
console.log("%c activated", "color: red") console.log("%c activated", "color: red")
if(this.$route.query.id != this.form.id){ if (this.$route.query.id != this.form.id) {
console.log("activated 加载订单数据") console.log("activated 加载订单数据")
this.getOrder() this.getOrder()
} }
let transportType = undefined let transportType = undefined
if(this.$route.query.transportType){ if (this.$route.query.transportType) {
transportType = +this.$route.query.transportType transportType = +this.$route.query.transportType
} }
if(transportType != this.transportId){ if (transportType != this.transportId) {
this.$set(this.form, 'transportId', transportType) this.$set(this.form, 'transportId', transportType)
} }
...@@ -1210,17 +1297,17 @@ export default { ...@@ -1210,17 +1297,17 @@ export default {
this.unitList = (await getUnitList()).data this.unitList = (await getUnitList()).data
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE) this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
if(this.$route.query.transportType){ if (this.$route.query.transportType) {
this.$set(this.form, 'transportId', +this.$route.query.transportType) this.$set(this.form, 'transportId', +this.$route.query.transportType)
} }
// 变更出货渠道 // 变更出货渠道
if(this.$route.query.updateChannel){ if (this.$route.query.updateChannel) {
this.updateChannel = true this.updateChannel = true
} }
if(this.$route.query.id){ if (this.$route.query.id) {
console.log('created 加载订单数据') console.log('created 加载订单数据')
this.getOrder() this.getOrder()
}else{ } else {
await this.getTradeCity() await this.getTradeCity()
this.addProduct() this.addProduct()
this.$nextTick(() => { this.$nextTick(() => {
...@@ -1229,25 +1316,47 @@ export default { ...@@ -1229,25 +1316,47 @@ export default {
} }
}, },
methods: { methods: {
async getTradeCity(a){ async getTradeCity(a) {
let query = {} let query = {}
if(this.form.channelId){ if (this.form.channelId) {
query.channelId = this.form.channelId query.channelId = this.form.channelId
} }
this.tradeCityList = (await getTradeCityList(query)).data this.tradeCityList = (await getTradeCityList(query)).data
}, },
async getChannelList(){ async getChannelList() {
let query = { let query = {
cityId: this.form.objectiveId, cityId: this.form.objectiveId,
lineId: this.form.lineId lineId: this.form.lineId
} }
this.channelList = (await getChannelList(query)).data this.channelList = (await getChannelList(query)).data
}, },
onTableMounted(e){ onTableMounted(e) {
// console.warn('onTableMounted', e) // console.warn('onTableMounted', e)
}, },
async getOrder(){ getCustomer(id) {
if(this.form.orderId == this.$route.query.id){ getCustomer(id).then((response) => {
console.log(response.data, "response")
this.consignorCustomer = {
...this.consignorCustomer,
...response.data
}
if (this.consignorCustomer) {
// 最新的客户设置信息,是否允许控货无收货人
this.noConsignee = this.consignorCustomer.noConsignee
} else {
// 默认不允许控货无收货人
this.noConsignee = false
}
// 如果订单无收货人,但是最新的发货人允许无收货人则重置状态
if (this.noConsignee && !this.hasConsignee) {
// 最新的发货人允许无收货人,则重置为有收货人
this.hasConsignee = true
}
})
},
async getOrder() {
console.log('是否加载编辑订单数据')
if (this.form.orderId == this.$route.query.id) {
console.log('加载中或者已加载此订单数据,不重复加载', this.initing, this.form.orderId, this.$route.query.id) console.log('加载中或者已加载此订单数据,不重复加载', this.initing, this.form.orderId, this.$route.query.id)
return return
} }
...@@ -1261,9 +1370,9 @@ export default { ...@@ -1261,9 +1370,9 @@ export default {
await this.getTradeCity() await this.getTradeCity()
await this.getOpenedRouterList() await this.getOpenedRouterList()
this.selectedRouter = this.routerList.find(item => item.id === this.form.lineId) this.selectedRouter = this.routerList.find(item => item.id === this.form.lineId)
if(this.selectedRouter){ if (this.selectedRouter) {
this.form.destCountryId = this.selectedRouter.destCountryId this.form.destCountryId = this.selectedRouter.destCountryId
}else console.log("未找到选择的路线", this.routerList, this.selectedRouter) } else console.log("未找到选择的路线", this.routerList, this.selectedRouter)
console.log("国家ID", this.form.destCountryId) console.log("国家ID", this.form.destCountryId)
...@@ -1272,10 +1381,11 @@ export default { ...@@ -1272,10 +1381,11 @@ export default {
isUnpack: this.form.isUnpack, isUnpack: this.form.isUnpack,
isSingleTicketTransport: this.form.isSingleTicketTransport, isSingleTicketTransport: this.form.isSingleTicketTransport,
}) */ }) */
console.log("集运服务类型", this.form.type)
this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : [] this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : []
this.form.packageTypeArr = this.form.packageType ? this.form.packageType.split(',').filter(item => item != '') : [] this.form.packageTypeArr = this.form.packageType ? this.form.packageType.split(',').filter(item => item != '') : []
if(res.data.consignorVO){ // 每次编辑订单详情需要实时获取发货人当前信息
if (res.data.consignorVO) {
this.$set(this.form, 'consignorCompany', res.data.consignorVO.company) this.$set(this.form, 'consignorCompany', res.data.consignorVO.company)
this.$set(this.form, 'consignorCompanyEn', res.data.consignorVO.companyEn) this.$set(this.form, 'consignorCompanyEn', res.data.consignorVO.companyEn)
this.$set(this.form, 'consignorContactsId', res.data.consignorVO.customerContactsId) this.$set(this.form, 'consignorContactsId', res.data.consignorVO.customerContactsId)
...@@ -1285,9 +1395,10 @@ export default { ...@@ -1285,9 +1395,10 @@ export default {
this.$set(this.form, 'consignorName', res.data.consignorVO.name) this.$set(this.form, 'consignorName', res.data.consignorVO.name)
this.$set(this.form, 'consignorNameEn', res.data.consignorVO.nameEn) this.$set(this.form, 'consignorNameEn', res.data.consignorVO.nameEn)
this.$set(this.form, 'consignorPhone', res.data.consignorVO.phone) this.$set(this.form, 'consignorPhone', res.data.consignorVO.phone)
this.getCustomer(res.data.consignorVO.customerId)
} }
if(res.data.consigneeVO){ if (res.data.consigneeVO) {
this.$set(this.form, 'consigneeCompany', res.data.consigneeVO.company) this.$set(this.form, 'consigneeCompany', res.data.consigneeVO.company)
this.$set(this.form, 'consigneeCompanyEn', res.data.consigneeVO.companyEn) this.$set(this.form, 'consigneeCompanyEn', res.data.consigneeVO.companyEn)
this.$set(this.form, 'consigneeContactsId', res.data.consigneeVO.customerContactsId) this.$set(this.form, 'consigneeContactsId', res.data.consigneeVO.customerContactsId)
...@@ -1301,37 +1412,28 @@ export default { ...@@ -1301,37 +1412,28 @@ export default {
// res.data.hasConsignee 订单冗余的发货人是否允许无收货人 // res.data.hasConsignee 订单冗余的发货人是否允许无收货人
// res.data.noConsignee 当前订单发货人是否允许无收货 // res.data.noConsignee 当前订单发货人是否允许无收货
// 回显冗余数据
this.noConsignee = res.data.hasConsignee
// 是否有收货人 // 是否有收货人
this.hasConsignee = !!res.data.consigneeVO this.hasConsignee = !!res.data.consigneeVO
// 如果订单无收货人,但是最新的发货人不允许无收货人则重置状态 if (this.form.channelId == 0) {
if(!res.data.noConsignee && !this.hasConsignee){
// 最新的发货人不允许无收货人,则重置为有收货人
this.hasConsignee = true
// 如果发货人不允许无收货人,则更新是否允许无收货人状态
this.noConsignee = false
}
if(this.form.channelId == 0){
delete this.form.channelId delete this.form.channelId
} }
if(res.data.ccIds){ if (res.data.ccIds) {
this.ccIdArr = res.data.ccIds.split(",").filter(item => item && item != '') this.ccIdArr = res.data.ccIds.split(",").filter(item => item && item != '')
} }
// 审核中需要显示流程表单 // 审核中需要显示流程表单
if(this.form.applyStaus == 1){ if (this.form.applyStaus == 1) {
this.showWorkFlow = true this.showWorkFlow = true
} }
// 如果是自定义付款人,则需要同步具体发货人信息 // 如果是自定义付款人,则需要同步具体发货人信息
if(this.form.drawee == 3){ if (this.form.drawee == 3) {
console.log('同步自定义付款人信息', JSON.stringify(this.customDraweeList)) console.log('同步自定义付款人信息', JSON.stringify(this.customDraweeList))
this.customDraweeList.forEach(item => { this.customDraweeList.forEach(item => {
console.log(item.name, this.form.customDraweeVOList.find(it => it.name == item.name)?.value , item.value) console.log(item.name, this.form.customDraweeVOList.find(it => it.name == item.name)?.value, item.value)
item.value = this.form.customDraweeVOList.find(it => it.name == item.name)?.value || item.value item.value = this.form.customDraweeVOList.find(it => it.name == item.name)?.value || item.value
}) })
console.log('同步自定义付款人信息', this.customDraweeList, this.form.customDraweeVOList) console.log('同步自定义付款人信息', this.customDraweeList, this.form.customDraweeVOList)
...@@ -1346,7 +1448,7 @@ export default { ...@@ -1346,7 +1448,7 @@ export default {
}) })
// 已入仓后,必填字段修改则需要显示审批流 // 已入仓后,必填字段修改则需要显示审批流
if(this.inWarehouse){ if (this.inWarehouse) {
Object.keys(this.rules).forEach(field => { Object.keys(this.rules).forEach(field => {
console.log("watch", field) console.log("watch", field)
this.$watch(`form.${field}`, () => { this.$watch(`form.${field}`, () => {
...@@ -1356,13 +1458,13 @@ export default { ...@@ -1356,13 +1458,13 @@ export default {
} }
// 在初始化结束后transportId还会发生一次变化导致目的港清关被重置,所以需要延迟一下。暂不清楚原因 // 在初始化结束后transportId还会发生一次变化导致目的港清关被重置,所以需要延迟一下。暂不清楚原因
setTimeout(() =>{ setTimeout(() => {
console.log('transportId', this.form.transportId) console.log('transportId', this.form.transportId)
console.log('portDestCustomsClear', this.form.portDestCustomsClear, res.data.portDestCustomsClear) console.log('portDestCustomsClear', this.form.portDestCustomsClear, res.data.portDestCustomsClear)
if(res.data.portDestCustomsClear){ if (res.data.portDestCustomsClear) {
this.$set(this.form, 'portDestCustomsClear', res.data.portDestCustomsClear) this.$set(this.form, 'portDestCustomsClear', res.data.portDestCustomsClear)
} }
if(res.data.deliveryWay){ if (res.data.deliveryWay) {
this.$set(this.form, 'deliveryWay', res.data.deliveryWay) this.$set(this.form, 'deliveryWay', res.data.deliveryWay)
} }
this.$nextTick(() => { this.$nextTick(() => {
...@@ -1388,23 +1490,24 @@ export default { ...@@ -1388,23 +1490,24 @@ export default {
this.initing = false this.initing = false
}) })
}, },
onContactChoose(contact){ onContactChoose(contact) {
console.log('选择联系人', contact) console.log('选择联系人', contact)
if(!this.contactChooseType && !this.quickCreateType) return if (!this.contactChooseType && !this.quickCreateType) return
if(!this.contactChooseType && this.quickCreateType){ if (!this.contactChooseType && this.quickCreateType) {
this.contactChooseType = this.quickCreateType == 0 ? 'consignor' : 'consignee' this.contactChooseType = this.quickCreateType == 0 ? 'consignor' : 'consignee'
} }
this.$set(this.form, this.contactChooseType + 'Company', contact.company) this.$set(this.form, this.contactChooseType + 'Company', contact.company)
this.$set(this.form, this.contactChooseType + 'CompanyEn', contact.companyEn||'') this.$set(this.form, this.contactChooseType + 'CompanyEn', contact.companyEn || '')
this.$set(this.form, this.contactChooseType + 'ContactsId', contact.customerContactsId) this.$set(this.form, this.contactChooseType + 'ContactsId', contact.customerContactsId)
this.$set(this.form, this.contactChooseType + 'CountryCode', contact.areaCode.replace('+', '')) this.$set(this.form, this.contactChooseType + 'CountryCode', contact.areaCode.replace('+', ''))
this.$set(this.form, this.contactChooseType + 'Email', contact.email) this.$set(this.form, this.contactChooseType + 'Email', contact.email)
this.$set(this.form, this.contactChooseType + 'Id', contact.customerId) this.$set(this.form, this.contactChooseType + 'Id', contact.customerId)
this.$set(this.form, this.contactChooseType + 'Name', contact.contactsName) this.$set(this.form, this.contactChooseType + 'Name', contact.contactsName)
this.$set(this.form, this.contactChooseType + 'NameEn', contact.contactsNameEn||'') this.$set(this.form, this.contactChooseType + 'NameEn', contact.contactsNameEn || '')
this.$set(this.form, this.contactChooseType + 'Phone', contact.phoneNew) this.$set(this.form, this.contactChooseType + 'Phone', contact.phoneNew)
if(this.contactChooseType == 'consignor'){ if (this.contactChooseType == 'consignor') {
this.noConsignee = contact.noConsignee this.noConsignee = contact.noConsignee
// 如果允许无收货人,则默认无收货人、控货 // 如果允许无收货人,则默认无收货人、控货
// 241023 根据最新的原型,默认有收货人 // 241023 根据最新的原型,默认有收货人
...@@ -1412,25 +1515,25 @@ export default { ...@@ -1412,25 +1515,25 @@ export default {
this.hasConsignee = false this.hasConsignee = false
}*/ }*/
// 如果发货人不允许无收货人,则重置为有收货人 // 如果发货人不允许无收货人,则重置为有收货人
if(!this.noConsignee && !this.hasConsignee){ if (!this.noConsignee && !this.hasConsignee) {
this.$set(this, 'hasConsignee', true) this.$set(this, 'hasConsignee', true)
} }
// 如果默认付款则设置为发货人付款 // 如果默认付款则设置为发货人付款
if(contact.defaultPay){ if (contact.defaultPay) {
this.$set(this.form, 'drawee', 1) this.$set(this.form, 'drawee', 1)
} }
} }
this.contactChooseType = null this.contactChooseType = null
this.quickCreateType = null this.quickCreateType = null
if(this.form.lineId) this.getOfferData() if (this.form.lineId) this.getOfferData()
}, },
upload(e){ upload(e) {
console.log({upload: e}) console.log({upload: e})
let form = new FormData() let form = new FormData()
form.append('file', e.file) form.append('file', e.file)
orderImport(form).then(res => { orderImport(form).then(res => {
if(!res.data.list.length){ if (!res.data.list.length) {
return this.$message.error('无有效数据') return this.$message.error('无有效数据')
} }
...@@ -1439,7 +1542,7 @@ export default { ...@@ -1439,7 +1542,7 @@ export default {
}) })
}, },
addToProductList(){ addToProductList() {
console.log('addToProductList') console.log('addToProductList')
this.importList.forEach(item => { this.importList.forEach(item => {
this.form.orderItemVOList.push({ this.form.orderItemVOList.push({
...@@ -1449,63 +1552,64 @@ export default { ...@@ -1449,63 +1552,64 @@ export default {
quantity: item.quantity, quantity: item.quantity,
volume: item.volume, volume: item.volume,
weight: item.weight, weight: item.weight,
prodAttrArr:[] prodAttrArr: []
}) })
}) })
// 重置 // 重置
this.importList = [] this.importList = []
this.showBatchImportDialog = false this.showBatchImportDialog = false
}, },
downloadTpl(){ downloadTpl() {
this.exportLoading = true; this.exportLoading = true;
exportPackingList().then(response => { exportPackingList().then(response => {
this.$download.excel(response, this.$t('装箱单模板') + '.xls'); this.$download.excel(response, this.$t('装箱单模板') + '.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => { }); }).catch(() => {
});
}, },
setLink(row){ setLink(row) {
this.$prompt(this.$t('请输入商品链接'), {inputValue: row.link}).then(({value}) => { this.$prompt(this.$t('请输入商品链接'), {inputValue: row.link}).then(({value}) => {
this.$set(row, 'link', value) this.$set(row, 'link', value)
}) })
}, },
// 检查正整数 // 检查正整数
checkPositiveInterge(row, field){ checkPositiveInterge(row, field) {
console.log('checkPositiveInterge', field, row[field]) console.log('checkPositiveInterge', field, row[field])
row[field] = row[field].toString().replace(/[^\d]/g, '') row[field] = row[field].toString().replace(/[^\d]/g, '')
}, },
onProductChange(row, product){ onProductChange(row, product) {
console.log(product) console.log(product)
// 如果是清除商品 // 如果是清除商品
if(!product){ if (!product) {
row.fee = null row.fee = null
row.prodAttrArr = [] row.prodAttrArr = []
return false return false
} }
// 没有orderItemId则表示新增的,否则就是编辑回显的 // 没有orderItemId则表示新增的,否则就是编辑回显的
// row.updated 表示用户操作了,用来区分是自动回显还是用户选择商品 // row.updated 表示用户操作了,用来区分是自动回显还是用户选择商品
if(!row.orderItemId || row.updated){ if (!row.orderItemId || row.updated) {
row.prodAttrArr = !product ? [] : product.attrId.split(',').filter(item => item !== '').map(item => +item) row.prodAttrArr = !product ? [] : product.attrId.split(',').filter(item => item !== '').map(item => +item)
} }
row.prodTitleEn = product.titleEn row.prodTitleEn = product.titleEn
row.prodTitleZh = product.titleZh row.prodTitleZh = product.titleZh
this.calculationPrice() this.calculationPrice()
}, },
onAreaChange(type, val){ onAreaChange(type, val) {
this.$set(this.form, type, val) this.$set(this.form, type, val)
}, },
// 生成快递单号 // 生成快递单号
getOrderCourierNumber(){ getOrderCourierNumber() {
getOrderCourierNumber().then(res => { getOrderCourierNumber().then(res => {
this.$set(this.form, 'number', res.data) this.$set(this.form, 'number', res.data)
}) })
}, },
onProductAttrChange(row, attr){ onProductAttrChange(row, attr) {
console.log(attr) console.log(attr)
}, },
addProduct(data){ addProduct(data) {
this.form.orderItemVOList.push(data || { this.form.orderItemVOList.push(data || {
prodAttrArr:[], prodAttrArr: [],
prodId: null, prodId: null,
worth: '', worth: '',
volume: '', volume: '',
...@@ -1514,31 +1618,34 @@ export default { ...@@ -1514,31 +1618,34 @@ export default {
}) })
}, },
// 更新路线并打印来源 // 更新路线并打印来源
updateRoutes(fr){ updateRoutes(fr) {
console.log("%cupdateRotutes", "color: blue", fr) console.log("%cupdateRotutes", "color: blue", fr)
return this.getOpenedRouterList() return this.getOpenedRouterList()
}, },
// 获取路线 // 获取路线
async getOpenedRouterList(){ async getOpenedRouterList() {
let params = {} let params = {}
if(this.form.departureId){ if (this.form.departureId) {
params.startCityId = this.form.departureId params.startCityId = this.form.departureId
} }
if(this.form.objectiveId){ if (this.form.destCountryId) {
params.destCountryId = this.form.destCountryId
}
if (this.form.objectiveId) {
params.destCityId = this.form.objectiveId params.destCityId = this.form.objectiveId
} }
if(this.form.transportId){ if (this.form.transportId) {
params.transportType = this.form.transportId params.transportType = this.form.transportId
} }
if(this.form.channelId){ if (this.form.channelId) {
params.channelId = this.form.channelId params.channelId = this.form.channelId
} }
console.log("获取路线,参数", params) console.log("获取路线,参数", params)
// 始发,目的和运输方式都没有的时候不获取 // 始发,目的和运输方式都没有的时候不获取
if(!params.startCityId && !params.destCityId && !params.transportType) return false if (!params.startCityId && !params.destCountryId && !params.destCityId && !params.transportType) return false
return getOpenedRouterList(params).then(res => { return getOpenedRouterList(params).then(res => {
this.routerList = res.data.filter(item => { this.routerList = res.data.filter(item => {
return this.exportCityIds.indexOf(item.startCityId) > -1 && this.importCityIds.indexOf(item.destCityId) > -1 return this.exportCityIds.indexOf(item.startCityId) > -1 && this.importCountryIds.indexOf(item.destCountryId) > -1 && (this.importCityIds && this.importCityIds.indexOf(item.destCityId) > -1)
}) })
console.log(`已获取到路线${res.data?.length}条,有效路线${this.routerList.length},参数:${JSON.stringify(params)}`) console.log(`已获取到路线${res.data?.length}条,有效路线${this.routerList.length},参数:${JSON.stringify(params)}`)
console.table([ console.table([
...@@ -1548,9 +1655,9 @@ export default { ...@@ -1548,9 +1655,9 @@ export default {
} }
]) ])
// 如果已选择的线路ID不在上述路线列表里则重置 // 如果已选择的线路ID不在上述路线列表里则重置
if(this.form.lineId) { if (this.form.lineId) {
this.selectedRouter = this.routerList.find(item => item.id == this.form.lineId) this.selectedRouter = this.routerList.find(item => item.id == this.form.lineId)
if(!this.selectedRouter){ if (!this.selectedRouter) {
console.log(`获取到的路线未找到原路线lineId: ${this.form.lineId},重置为null`) console.log(`获取到的路线未找到原路线lineId: ${this.form.lineId},重置为null`)
this.$set(this.form, 'lineId', null) this.$set(this.form, 'lineId', null)
} }
...@@ -1558,16 +1665,16 @@ export default { ...@@ -1558,16 +1665,16 @@ export default {
}) })
}, },
// 计算体积 // 计算体积
calcVolume(row){ calcVolume(row) {
if(!row.boxGauge || !row.num) return false if (!row.boxGauge || !row.num) return false
try{ try {
row.volume = (eval(row.boxGauge) * row.num).toFixed(2) row.volume = (eval(row.boxGauge) * row.num).toFixed(2)
}catch(e){ } catch (e) {
row.volume = '' row.volume = ''
} }
}, },
// 删除一条产品 // 删除一条产品
delProduct(index){ delProduct(index) {
this.$confirm(this.$t('确定删除此条内容么?')) this.$confirm(this.$t('确定删除此条内容么?'))
.then(res => { .then(res => {
this.form.orderItemVOList.splice(index, 1) this.form.orderItemVOList.splice(index, 1)
...@@ -1604,8 +1711,8 @@ export default { ...@@ -1604,8 +1711,8 @@ export default {
return this.$showFormValidateErrors(errors) return this.$showFormValidateErrors(errors)
} }
if(this.form.harvestMethod == 2){ if (this.form.harvestMethod == 2) {
if(!this.form.country || !this.form.province || !this.form.city){ if (!this.form.country || !this.form.province || !this.form.city) {
return this.$notify({ return this.$notify({
title: this.$t('提示'), title: this.$t('提示'),
message: this.$t("收货地区填写不完整"), message: this.$t("收货地区填写不完整"),
...@@ -1616,12 +1723,12 @@ export default { ...@@ -1616,12 +1723,12 @@ export default {
let isInclude = false let isInclude = false
this.form.orderItemVOList.map(item => { this.form.orderItemVOList.map(item => {
//如果商品特性包含不接受货物,不能创建订单或修改订单 //如果商品特性包含不接受货物,不能创建订单或修改订单
if(item.prodAttrArr.indexOf(4)!=-1){ if (item.prodAttrArr.indexOf(4) != -1) {
isInclude = true isInclude = true
} }
item.prodAttrIds = item.prodAttrArr.join(',') item.prodAttrIds = item.prodAttrArr.join(',')
}) })
if(isInclude){ if (isInclude) {
return this.$notify({ return this.$notify({
title: this.$t('提示'), title: this.$t('提示'),
message: this.$t("订单包含不接受货物,请检查"), message: this.$t("订单包含不接受货物,请检查"),
...@@ -1629,17 +1736,17 @@ export default { ...@@ -1629,17 +1736,17 @@ export default {
}); });
} }
this.transportList.map(item => { this.transportList.map(item => {
if(item._enabled){ if (item._enabled) {
item.lineIds = Array.from(item.lineIdSet).join(',') item.lineIds = Array.from(item.lineIdSet).join(',')
item.channelIds = Array.from(item.channelIdSet).join(',') item.channelIds = Array.from(item.channelIdSet).join(',')
} }
}) })
this.form.packageType = this.form.packageTypeArr.join(',') this.form.packageType = this.form.packageTypeArr.join(',')
for(const i in this.form.orderItemVOList){ for (const i in this.form.orderItemVOList) {
const item = this.form.orderItemVOList[i] const item = this.form.orderItemVOList[i]
if(!item.prodId){ if (!item.prodId) {
return this.$message.error(this.$t(`第${Number(i) + 1}行未选择商品`, i+1)) return this.$message.error(this.$t(`第${Number(i) + 1}行未选择商品`, i + 1))
} }
} }
...@@ -1649,25 +1756,29 @@ export default { ...@@ -1649,25 +1756,29 @@ export default {
} }
// 24-02-08 新需求 当付款人=发货人且提单显示价格,需要弹出提示,付款人=发货人,请再次确认提单是否显示价格明细,是则允许提交订单,否则留在当前页面 // 24-02-08 新需求 当付款人=发货人且提单显示价格,需要弹出提示,付款人=发货人,请再次确认提单是否显示价格明细,是则允许提交订单,否则留在当前页面
// https://zentao.test.jdshangmen.com/task-view-3442.html // https://zentao.test.jdshangmen.com/task-view-3442.html
if(+this.form.drawee === 1 && this.form.displayBillLadingPrice && !this.updateChannel){ if (+this.form.drawee === 1 && this.form.displayBillLadingPrice && !this.updateChannel) {
await this.$confirm(this.$t('付款人=发货人,请再次确认提单是否显示价格明细')) await this.$confirm(this.$t('付款人=发货人,请再次确认提单是否显示价格明细'))
} }
// 校验手机号跟目的国是否匹配 // 校验手机号跟目的国是否匹配
if(this.hasConsignee && this.form.consigneeCountryCode && this.form.consigneePhone){ if (this.hasConsignee && this.form.consigneeCountryCode && this.form.consigneePhone) {
if (this.form.isCargoControl && (this.form.consigneeCountryCode == "86" || this.form.consigneeCountryCode == "+86")) {
this.$message.error(this.$t("控货订单的收货人手机号不能是国内号码"))
return
}
const res = await checkCountryCode({ const res = await checkCountryCode({
areaCode: this.form.consigneeCountryCode, areaCode: this.form.consigneeCountryCode,
currencyId: this.form.destCountryId currencyId: this.form.destCountryId
}) })
// 并不一致则提示 // 并不一致则提示
if(!res.data){ if (!res.data) {
await this.$confirm(this.$t('电话所在国与目的国不一致,请检查')) await this.$confirm(this.$t('电话所在国与目的国不一致,请检查'))
} }
} }
// 修改的提交 // 修改的提交
if (this.form.orderId) { if (this.form.orderId) {
if(this.form.tidanNo){ if (this.form.tidanNo) {
await this.$confirm(this.$t('提单已制作,如需修改请联系客服')) await this.$confirm(this.$t('提单已制作,如需修改请联系客服'))
} }
let data = Object.assign({}, this.form, { let data = Object.assign({}, this.form, {
...@@ -1688,7 +1799,7 @@ export default { ...@@ -1688,7 +1799,7 @@ export default {
let data = Object.assign({ let data = Object.assign({
consigneeId: this.consigneeContact.customerId, consigneeId: this.consigneeContact.customerId,
consignorId: this.consignorContact.customerId, consignorId: this.consignorContact.customerId,
customerId : this.consignorContact.customerId, customerId: this.consignorContact.customerId,
// couponIds: coupons.join(","), // couponIds: coupons.join(","),
}, this.form, { }, this.form, {
customDraweeVOList: this.customDraweeList, customDraweeVOList: this.customDraweeList,
...@@ -1707,7 +1818,7 @@ export default { ...@@ -1707,7 +1818,7 @@ export default {
this.form = {...makeDefaultFormData()} this.form = {...makeDefaultFormData()}
this.routerList = [] this.routerList = []
this.addProduct() this.addProduct()
this.$nextTick(() =>{ this.$nextTick(() => {
this.initing = false this.initing = false
this.$nextTick(() => { this.$nextTick(() => {
this.$redirect('success?orderId=' + response.data) this.$redirect('success?orderId=' + response.data)
...@@ -1717,26 +1828,26 @@ export default { ...@@ -1717,26 +1828,26 @@ export default {
}); });
}, },
// 计算商品运费(根据货值计算保费) // 计算商品运费(根据货值计算保费)
calculationPrice(){ calculationPrice() {
let calcable = true let calcable = true
if(!this.form.orderItemVOList.length) return false if (!this.form.orderItemVOList.length) return false
this.form.orderItemVOList.forEach(item => { this.form.orderItemVOList.forEach(item => {
if(!item.prodId){ if (!item.prodId) {
calcable = false calcable = false
} }
}) })
console.log('calculationPrice', calcable) console.log('calculationPrice', calcable)
if(this.calculating || !calcable) return false if (this.calculating || !calcable) return false
this.calculating = true this.calculating = true
console.log('calculating ---> ') console.log('calculating ---> ')
const data = { const data = {
lineId: this.form.lineId, lineId: this.form.lineId,
transportId: this.form.transportId, transportId: this.form.transportId,
channelId: [3,4].indexOf(this.form.transportId) > -1 ? this.form.channelId : undefined, channelId: [3, 4].indexOf(this.form.transportId) > -1 ? this.form.channelId : undefined,
prodConditionParamList: this.getProductListWithDefaultValue(), prodConditionParamList: this.getProductListWithDefaultValue(),
orderType: this.form.orderType orderType: this.form.orderType
} }
if(this.form.channelId){ if (this.form.channelId) {
data.channelId = this.form.channelId data.channelId = this.form.channelId
} }
calculationPrice(data).then(res => { calculationPrice(data).then(res => {
...@@ -1749,7 +1860,7 @@ export default { ...@@ -1749,7 +1860,7 @@ export default {
}) })
}, },
// 体积。件数,数量,重量为选填,但是接口确实必填,所以生成一个副本并赋予默认值 // 体积。件数,数量,重量为选填,但是接口确实必填,所以生成一个副本并赋予默认值
getProductListWithDefaultValue(){ getProductListWithDefaultValue() {
let arr = [] let arr = []
this.form.orderItemVOList.forEach(item => { this.form.orderItemVOList.forEach(item => {
// 商品信息只要商品id、品牌收费模式、件数、数量、体积、重量、货值、包装类型即可 // 商品信息只要商品id、品牌收费模式、件数、数量、体积、重量、货值、包装类型即可
...@@ -1766,10 +1877,10 @@ export default { ...@@ -1766,10 +1877,10 @@ export default {
packageType: item.packageType, packageType: item.packageType,
unit: item.unit unit: item.unit
} */ } */
if(!tmp.volume)tmp.volume = 0 if (!tmp.volume) tmp.volume = 0
if(!tmp.weight)tmp.weight = 0 if (!tmp.weight) tmp.weight = 0
if(!tmp.quantity)tmp.quantity = 0 if (!tmp.quantity) tmp.quantity = 0
if(!tmp.num)tmp.num = 0 if (!tmp.num) tmp.num = 0
tmp.orderType = item.orderItemType tmp.orderType = item.orderItemType
delete tmp.fee delete tmp.fee
delete tmp.couponInfo delete tmp.couponInfo
...@@ -1811,9 +1922,9 @@ export default { ...@@ -1811,9 +1922,9 @@ export default {
getOfferNumber(id) { getOfferNumber(id) {
const that = this const that = this
that.offerIdNochange = false that.offerIdNochange = false
getOfferCheck({ orderId: id }).then(response => { getOfferCheck({orderId: id}).then(response => {
if(!response.data) return if (!response.data) return
if(that.offerData.length==0){ if (that.offerData.length == 0) {
that.offerData.push(response.data) that.offerData.push(response.data)
} }
that.offerIdNochange = true that.offerIdNochange = true
...@@ -1822,17 +1933,17 @@ export default { ...@@ -1822,17 +1933,17 @@ export default {
}) })
}, },
// 设置默认的提货单是否显示价格 // 设置默认的提货单是否显示价格
setBllLandingPrice(src){ setBllLandingPrice(src) {
console.log("更新默认的提单是否显示价格:src" + src, this.initing, {...this.form}); console.log("更新默认的提单是否显示价格:src" + src, this.initing, {...this.form});
if(this.form.orderId && this.initing) return if (this.form.orderId && this.initing) return
// 240224 微信反馈 // 240224 微信反馈
// 不好意思,这写错了,付款人=发货人----提单价格默认否;付款人=收货人,提交价格默认是 // 不好意思,这写错了,付款人=发货人----提单价格默认否;付款人=收货人,提交价格默认是
if(this.form.drawee == 1){ if (this.form.drawee == 1) {
this.form.displayBillLadingPrice = false this.form.displayBillLadingPrice = false
return return
} }
if(this.form.drawee == 2){ if (this.form.drawee == 2) {
this.form.displayBillLadingPrice = true this.form.displayBillLadingPrice = true
return return
} }
...@@ -1841,17 +1952,17 @@ export default { ...@@ -1841,17 +1952,17 @@ export default {
// 控货订单归属发货人 // 控货订单归属发货人
// 非控货订单 + 付款人为发货人 归属发货人, 其他归属收货人 // 非控货订单 + 付款人为发货人 归属发货人, 其他归属收货人
let customerId = null let customerId = null
if(this.form.type == 2 || this.form.isCargoControl == 1 || this.form.drawee == 2 ){ if (this.form.type == 2 || this.form.isCargoControl == 1 || this.form.drawee == 2) {
customerId = this.form.consignorId customerId = this.form.consignorId
}else{ } else {
customerId = this.form.consigneeId customerId = this.form.consigneeId
} }
if(!customerId) return if (!customerId) return
console.log('原归属人',this.displayBillLadingPriceFrom, '新归属人', customerId) console.log('原归属人', this.displayBillLadingPriceFrom, '新归属人', customerId)
// 如果当前的提单价格设置来自同一个客户则不在查询 // 如果当前的提单价格设置来自同一个客户则不在查询
if(this.displayBillLadingPriceFrom == customerId) return; if (this.displayBillLadingPriceFrom == customerId) return;
this.displayBillLadingPriceFrom = customerId this.displayBillLadingPriceFrom = customerId
// 获取客户信息 // 获取客户信息
...@@ -1864,7 +1975,7 @@ export default { ...@@ -1864,7 +1975,7 @@ export default {
handleChangeDestCountry(val) { handleChangeDestCountry(val) {
console.log("handleChangeDestCountry", val) console.log("handleChangeDestCountry", val)
this.form.destCountryId = val this.form.destCountryId = val
if(this.form.destCountryId){ if (this.form.destCountryId) {
this.form.objectiveId = null this.form.objectiveId = null
this.form.lineId = null this.form.lineId = null
this.selectedRouter = null this.selectedRouter = null
...@@ -1872,9 +1983,9 @@ export default { ...@@ -1872,9 +1983,9 @@ export default {
} }
}, },
// 切换目的城市 // 切换目的城市
async handleChangeDestCity(val){ async handleChangeDestCity(val) {
this.form.objectiveId = val this.form.objectiveId = val
if(this.form.objectiveId){ if (this.form.objectiveId) {
this.form.lineId = null this.form.lineId = null
this.selectedRouter = null this.selectedRouter = null
this.form.destCountryId = this.destCityList.find(item => item.shi === val)?.guojia this.form.destCountryId = this.destCityList.find(item => item.shi === val)?.guojia
...@@ -1883,12 +1994,12 @@ export default { ...@@ -1883,12 +1994,12 @@ export default {
await this.updateRoutes('handleChangeDestCity') await this.updateRoutes('handleChangeDestCity')
}, },
// 切换路线 // 切换路线
setLineId(lineId){ setLineId(lineId) {
this.form.lineId = lineId this.form.lineId = lineId
this.handleChangeLineId() this.handleChangeLineId()
}, },
// 切换线路回调 // 切换线路回调
async handleChangeLineId(){ async handleChangeLineId() {
await this.$nextTick() await this.$nextTick()
this.selectedRouter = this.routerList.find(item => item.id === this.form.lineId) this.selectedRouter = this.routerList.find(item => item.id === this.form.lineId)
console.log("handleChangeLineId", console.log("handleChangeLineId",
...@@ -1896,7 +2007,7 @@ export default { ...@@ -1896,7 +2007,7 @@ export default {
"目的市", this.selectedRouter?.destCityId, "目的市", this.selectedRouter?.destCityId,
"目的国", this.selectedRouter?.destCountryId, "目的国", this.selectedRouter?.destCountryId,
"始发市", this.selectedRouter?.startCityId) "始发市", this.selectedRouter?.startCityId)
if(this.form.lineId){ if (this.form.lineId) {
this.form.objectiveId = this.selectedRouter?.destCityId this.form.objectiveId = this.selectedRouter?.destCityId
this.form.destCountryId = this.selectedRouter?.destCountryId this.form.destCountryId = this.selectedRouter?.destCountryId
this.form.departureId = this.selectedRouter?.startCityId this.form.departureId = this.selectedRouter?.startCityId
...@@ -1906,18 +2017,25 @@ export default { ...@@ -1906,18 +2017,25 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card-title{ .w-380 {
width: 380px;
}
.card-title {
font-size: 18px; font-size: 18px;
display: flex; display: flex;
.card-name{
.card-name {
flex: 1; flex: 1;
} }
} }
.form-section{
.contact{ .form-section {
.contact {
display: flex; display: flex;
align-items: center; align-items: center;
img.phonebook{
img.phonebook {
width: 30px; width: 30px;
height: 30px; height: 30px;
margin-left: 10px; margin-left: 10px;
...@@ -1926,13 +2044,25 @@ export default { ...@@ -1926,13 +2044,25 @@ export default {
} }
} }
::v-deep .product-list .el-form-item__error{
::v-deep .product-list .el-form-item__error {
position: static; position: static;
} }
::v-deep th.el-table__cell .cell{
::v-deep th.el-table__cell .cell {
white-space: nowrap; white-space: nowrap;
.red{
.red {
color: red; color: red;
} }
} }
::v-deep .right-label {
.el-form-item__label {
width: 150px;
display: inline-flex;
justify-content: flex-end;
align-items: center;
}
}
</style> </style>
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
:placeholder="$t('发货人')" :placeholder="$t('发货人')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consignorText')"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeText"> <el-form-item :label="$t('收货人')" prop="consigneeText">
...@@ -40,7 +39,6 @@ ...@@ -40,7 +39,6 @@
:placeholder="$t('收货人')" :placeholder="$t('收货人')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consigneeText')"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('运输方式') + ':'" v-show="showSearch"> <el-form-item :label="$t('运输方式') + ':'" v-show="showSearch">
...@@ -211,7 +209,7 @@ ...@@ -211,7 +209,7 @@
v-model="queryParams.goodsNameKey" v-model="queryParams.goodsNameKey"
/> />
<product-selector <product-selector
v-model="queryParams.goodsName" v-model.trim="queryParams.goodsName"
style="flex: 1" style="flex: 1"
:clearable="true" :clearable="true"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
> >
<el-form-item> <el-form-item>
<el-button <el-button
:disabled="!!processInstanceId || editMode" :disabled="!!processInstanceId "
@click="addCost" @click="addCost"
>{{ $t("添加申请") }} >{{ $t("添加申请") }}
</el-button </el-button
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
<!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button--> <!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button-->
<el-button <el-button
type="text" type="text"
v-if="modifable(scope.$index)" v-if="scope.row.id && modifable(scope.row)"
@click="modify(scope.row)" @click="modify(scope.row)"
>{{ $t("修改") }} >{{ $t("修改") }}
</el-button </el-button
...@@ -225,7 +225,8 @@ export default { ...@@ -225,7 +225,8 @@ export default {
return this.$i18n.locale === "zh_CN"; return this.$i18n.locale === "zh_CN";
}, },
feeList() { feeList() {
return this.list.filter((item) => item.status === 0); // return this.list.filter((item) => item.status === 0);
return this.list;
}, },
// 正在编辑的费用申请 // 正在编辑的费用申请
currentItem() { currentItem() {
...@@ -236,13 +237,13 @@ export default { ...@@ -236,13 +237,13 @@ export default {
return !!this.currentItem; return !!this.currentItem;
}, },
modifable() { modifable() {
return (index) => { return (item) => {
// 审核中不允许修改 // 审核中不允许修改
if (this.processInstanceId) return false; if (this.processInstanceId) return false;
// 有未提交的不允许修改 // 有未提交的不允许修改
if (this.feeList.length) return false; // if (this.feeList.length) return false;
// 修改中的不允许修改 // 修改中的不允许修改
if (this.list.findIndex((item) => item.editMode) > -1) return false; if (item.editMode) return false;
return true; return true;
} }
} }
...@@ -263,7 +264,7 @@ export default { ...@@ -263,7 +264,7 @@ export default {
// 查询是否有审核中的费用申请 // 查询是否有审核中的费用申请
getFeeApplicationApproveByOrderId(this.orderId).then((res) => { getFeeApplicationApproveByOrderId(this.orderId).then((res) => {
if (res.data.formId) { if (res.data) {
this.processInstanceId = res.data.formId; this.processInstanceId = res.data.formId;
/*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => { /*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data this.list = res.data
...@@ -306,10 +307,11 @@ export default { ...@@ -306,10 +307,11 @@ export default {
}, },
submit() { submit() {
// 判断费用申请是否有未填项 // 判断费用申请是否有未填项
// console.log("提交的费用信息列表", this.feeList)
const errList = this.feeList.filter((item) => { const errList = this.feeList.filter((item) => {
return ( return (
!item["feeType"] || !item["feeType"] ||
!item["applicationFee"] || item.applicationFee == null || item.applicationFee == undefined ||
!item["applicationFeeCurrency"] || !item["applicationFeeCurrency"] ||
!item["payType"] !item["payType"]
); );
...@@ -317,18 +319,18 @@ export default { ...@@ -317,18 +319,18 @@ export default {
if (errList.length) { if (errList.length) {
return this.$message.error("请填写完整费用申请信息"); return this.$message.error("请填写完整费用申请信息");
} }
if (this.editMode) { // if (this.editMode) {
// 要提交status=1,否则保持原状态 // // 要提交status=1,否则保持原状态
const data = { // const data = {
...this.currentItem, // ...this.currentItem,
status: 1, // status: 1,
copyUserId: this.selectedUsers, // copyUserId: this.selectedUsers,
}; // };
return applicationUpdate(data).then((r) => { // return applicationUpdate(data).then((r) => {
this.$message.success(this.$t("修改成功")); // this.$message.success(this.$t("修改成功"));
this.$emit("update:dialogVisible", false); // this.$emit("update:dialogVisible", false);
}); // });
} // }
feeApplicationCreateBatch({ feeApplicationCreateBatch({
orderFeeApplicationCreateReqVOList: this.feeList, orderFeeApplicationCreateReqVOList: this.feeList,
...@@ -339,6 +341,7 @@ export default { ...@@ -339,6 +341,7 @@ export default {
this.$emit("update:dialogVisible", false); this.$emit("update:dialogVisible", false);
this.$message.success(this.$t("添加成功")); this.$message.success(this.$t("添加成功"));
this.selectedUsers = []; this.selectedUsers = [];
this.$emit("refresh")
} }
}); });
}, },
......
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('发货人')" prop="consignorKey"> <el-form-item :label="$t('发货人')" prop="consignorKey">
<el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consignorKey')" /> <el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey"> <el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consigneeKey')" /> <el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch"> <el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('商品')" prop="tidanNo" v-show="showSearch"> <el-form-item :label="$t('商品')" prop="tidanNo" v-show="showSearch">
<el-input v-model.trim="prodParam.value" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(prodParam, 'value')"> <el-input v-model.trim="prodParam.value" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery">
<template slot="prepend"> <template slot="prepend">
<dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" /> <dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" />
</template> </template>
...@@ -289,7 +289,7 @@ ...@@ -289,7 +289,7 @@
<el-table-column v-if="dept" :label="$t('客户经理')" align="center" prop="salesmanName" /> <el-table-column v-if="dept" :label="$t('客户经理')" align="center" prop="salesmanName" />
<el-table-column :label="$t('发货人客服')" align="center" prop="consignorFollowCustomerService" /> <el-table-column :label="$t('发货人客服')" align="center" prop="consignorFollowCustomerService" />
<el-table-column :label="$t('收货人客服')" align="center" prop="consigneeFollowCustomerService" /> <el-table-column :label="$t('收货人客服')" align="center" prop="consigneeFollowCustomerService" />
<el-table-column :label="$t('到仓箱数/方数重量')" align="center" prop="status"> <el-table-column :label="$t('到仓箱数/方数/重量')" align="center" prop="status">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
{{ row.checkNum }}{{ $t("") }} / {{ row.checkVolume }}m³ /{{ row.checkWeight }}Kg {{ row.checkNum }}{{ $t("") }} / {{ row.checkVolume }}m³ /{{ row.checkWeight }}Kg
</template> </template>
...@@ -449,10 +449,28 @@ ...@@ -449,10 +449,28 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<template v-if="exclude(scope.row.status, [0, 11, 12, 13, 14, 15, 17, 18, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206])"> <template
v-if="
(exclude(scope.row.status,[0, 11, 12, 13, 14, 15, 17, 18, 32]) && exclude(scope.row.inWarehouseState, [204, 205, 206]))
||
(scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0)
"
>
<!-- <el-divider direction="vertical"></el-divider> --> <!-- <el-divider direction="vertical"></el-divider> -->
<!--仓库相关的--> <!--仓库相关的-->
<el-dropdown v-hasPermi="['ecw:order:warehouse_add', 'ecw:order:warehouse_update', 'ecw:order:warehouse_exit', 'ecw:order:warehouse_adjustment', 'ecw:order:warehouse_transfer', 'ecw:order:warehouse_arrive', 'ecw:order:stocking']"> <el-dropdown
v-hasPermi="[
'ecw:order:warehouse_add',
'ecw:order:warehouse_update',
'ecw:order:warehouse_exit',
'ecw:order:warehouse_adjustment',
'ecw:order:warehouse_transfer',
'ecw:order:warehouse_arrive',
'ecw:order:stocking',
'ecw:order:shipment:warehouse_replenish',
'ecw:order:shipment:warehouse_update',
]"
>
<el-button type="text">{{ $t("仓库") }}</el-button> <el-button type="text">{{ $t("仓库") }}</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- 入仓操作 --> <!-- 入仓操作 -->
...@@ -460,12 +478,66 @@ ...@@ -460,12 +478,66 @@
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{ $t("入仓操作") }}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_add']">{{ $t("入仓操作") }}</el-dropdown-item>
</template> </template>
<!-- 入仓补充 --> <!-- 入仓补充 -->
<template v-if="include(scope.row.inWarehouseState, [201, 202, 202, 210, 202, 211, 202, 214, 215, 216]) && include(scope.row.status, [2, 3, 5, 10, 9, 8])"> <template
<el-dropdown-item @click.native="$router.push('/order/warehousing-add?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_replenish']">{{ $t("入仓补充") }}</el-dropdown-item> v-if="scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0"
>
<el-dropdown-item
@click.native="$router.push('/order/warehousing-add?shipment=1&id=' + scope.row.orderId)"
v-hasPermi="['ecw:order:shipment:warehouse_replenish']"
>{{ $t("入仓补充") }}</el-dropdown-item
>
</template>
<template
v-else-if="
include(
scope.row.inWarehouseState,
[201, 202, 202, 210, 202, 211, 202, 214, 215, 216]
) && include(scope.row.status, [2, 3, 5, 10, 9, 8])
"
>
<el-dropdown-item
@click.native="
$router.push(
'/order/warehousing-add?id=' + scope.row.orderId
)
"
v-hasPermi="['ecw:order:warehouse_replenish']"
>{{ $t("入仓补充") }}</el-dropdown-item
>
</template> </template>
<!-- 入仓修改 --> <!-- 入仓修改 -->
<template v-if="include(scope.row.inWarehouseState, [201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215, 216, 204, 205]) && scope.row.status != 11 && exclude(scope.row.shipmentState, [314, 315, 317, 318])"> <template
<el-dropdown-item @click.native="$router.push('/order/warehousing-update?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:warehouse_update']" :disabled2="scope.row.parentOrderId">{{ $t("入仓修改") }}</el-dropdown-item> v-if="scope.row.shipmentState > 0 && scope.row.inWarehouseState == 0"
>
<el-dropdown-item
@click.native="$router.push('/order/warehousing-update?shipment=1&id=' + scope.row.orderId)"
v-hasPermi="['ecw:order:shipment:warehouse_update']"
>{{ $t("入仓修改") }}</el-dropdown-item
>
</template>
<template
v-else-if="
include(
scope.row.inWarehouseState,
[
201, 202, 207, 202, 209, 210, 202, 211, 202, 214, 215,
216, 204, 205,
]
) &&
scope.row.status != 11 &&
exclude(scope.row.shipmentState, [305, 307, 407])
"
>
<el-dropdown-item
@click.native="
$router.push(
'/order/warehousing-update?id=' + scope.row.orderId
)
"
v-hasPermi="['ecw:order:warehouse_update']"
:disabled2="scope.row.parentOrderId"
>{{ $t("入仓修改") }}</el-dropdown-item
>
</template> </template>
<!-- 退仓 --> <!-- 退仓 -->
...@@ -589,7 +661,7 @@ ...@@ -589,7 +661,7 @@
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose" /> <batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose" />
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId"></withdrawal> <withdrawal v-if="show" :dialog-visible="show" :orderId="orderId"></withdrawal>
<batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application> <batch-single-application @getList="getList" :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
<fee-application v-if="feeApplicationBol" :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol"></fee-application> <fee-application v-if="feeApplicationBol" :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol "@refresh="getList"></fee-application>
<merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo = null" /> <merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo = null" />
<pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo = null" @delete="getList" /> <pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo = null" @delete="getList" />
<SplitRevoke <SplitRevoke
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
<el-form-item :label="$t('编号')" prop="orderNo"> <el-form-item :label="$t('编号')" prop="orderNo">
<el-input v-model="queryParams.numberKey" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/\s+/g, '')" /> <el-input v-model="queryParams.numberKey" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'numberKey')" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('发货人')" prop="consignorKey"> <el-form-item :label="$t('发货人')" prop="consignorKey">
<el-input v-model="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> <el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey"> <el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> <el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')" > <el-form-item :label="$t('客户经理')" >
<user-selector manage v-model="queryParams.salesmanIds" multiple clearable @change="handleQuery" <user-selector manage v-model="queryParams.salesmanIds" multiple clearable @change="handleQuery"
...@@ -685,6 +685,10 @@ export default { ...@@ -685,6 +685,10 @@ export default {
this.AddressTown = data; this.AddressTown = data;
}) })
} }
},
// 自动去除空格
replaceSpace(obj, field) {
obj[field] = obj[field].replace(/\s+/g, "")
} }
} }
}; };
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
:placeholder="$t('发货人')" :placeholder="$t('发货人')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consignorKey')"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey"> <el-form-item :label="$t('收货人')" prop="consigneeKey">
...@@ -28,7 +27,6 @@ ...@@ -28,7 +27,6 @@
:placeholder="$t('收货人')" :placeholder="$t('收货人')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consigneeKey')"
/> />
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')"> <el-form-item :label="$t('客户经理')">
...@@ -115,7 +113,6 @@ ...@@ -115,7 +113,6 @@
:placeholder="$t('请输入商品类型、品名或品牌')" :placeholder="$t('请输入商品类型、品名或品牌')"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'prodKey')"
/> />
</el-form-item> </el-form-item>
......
...@@ -407,8 +407,8 @@ ...@@ -407,8 +407,8 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<div v-if="edit && order.status !== 3"> <div v-if="(edit && order.status !== 3) || isShipment">
<h2>{{ $t("审批流程") }}</h2> <h2>{{ $t('审批流程') }}</h2>
<work-flow xmlkey="free_apply" v-model="selectedUsers" /> <work-flow xmlkey="free_apply" v-model="selectedUsers" />
<!-- <div>选择的用户:{{selectedUsers}}</div>--> <!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div> </div>
...@@ -471,6 +471,7 @@ import { getProductTypeList } from "@/api/ecw/productType" ...@@ -471,6 +471,7 @@ import { getProductTypeList } from "@/api/ecw/productType"
import { addProduct } from "@/api/ecw/product" import { addProduct } from "@/api/ecw/product"
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue" import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue"
import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue" import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue"
import { appendApplyWhenShipment, updateApplyWhenShipment } from '@/api/ecw/warehouse'
export default { export default {
name: "Warehouse", name: "Warehouse",
...@@ -520,6 +521,10 @@ export default { ...@@ -520,6 +521,10 @@ export default {
orderWarehouseInBackItemDoList: [] orderWarehouseInBackItemDoList: []
} }
} }
},
isShipment:{
type: Boolean,
default: false
} }
}, },
...@@ -803,7 +808,9 @@ export default { ...@@ -803,7 +808,9 @@ export default {
return return
} }
this.submitting = true this.submitting = true
return orderWarehouseIn({ const func = this.isShipment ? appendApplyWhenShipment : orderWarehouseIn
console.log("提交追加", this.isShipment, func)
return func({
...this.form1, ...this.form1,
brandType: this.warehousing.brandType, brandType: this.warehousing.brandType,
orderId: this.warehousing.orderId, orderId: this.warehousing.orderId,
...@@ -849,7 +856,8 @@ export default { ...@@ -849,7 +856,8 @@ export default {
if (this.edit) { if (this.edit) {
// 入仓修改 // 入仓修改
this.submitting = true this.submitting = true
return orderWarehouseInUpdateApply({ const func = this.isShipment ? updateApplyWhenShipment : orderWarehouseInUpdateApply
return func({
...this.form, ...this.form,
brandType: this.warehousing.brandType, brandType: this.warehousing.brandType,
orderId: this.warehousing.orderId, orderId: this.warehousing.orderId,
...@@ -873,7 +881,7 @@ export default { ...@@ -873,7 +881,7 @@ export default {
.then((r) => { .then((r) => {
this.submitting = false this.submitting = false
if (r.data) { if (r.data) {
this.$message.success(r.msg || "入仓修改发起成功") this.$message.success(this.$t("入仓修改发起成功"))
this.handleClose() this.handleClose()
} else { } else {
this.$message.success(r.msg || "入仓修改发起失败") this.$message.success(r.msg || "入仓修改发起失败")
...@@ -885,7 +893,8 @@ export default { ...@@ -885,7 +893,8 @@ export default {
} else { } else {
// 首次入仓、入仓补充 // 首次入仓、入仓补充
this.submitting = true this.submitting = true
return orderWarehouseIn({ const func = this.isShipment ? appendApplyWhenShipment : orderWarehouseIn
return func({
...this.form, ...this.form,
brandType: this.warehousing.brandType, brandType: this.warehousing.brandType,
orderId: this.warehousing.orderId, orderId: this.warehousing.orderId,
...@@ -905,7 +914,7 @@ export default { ...@@ -905,7 +914,7 @@ export default {
.then((r) => { .then((r) => {
this.submitting = false this.submitting = false
if (r.data) { if (r.data) {
this.$message.success("入仓成功") this.$message.success(this.isShipment ? this.$t('入仓追加已提交审批') : this.$t("入仓成功"))
this.handleClose() this.handleClose()
} else { } else {
this.$message.success("入仓失败") this.$message.success("入仓失败")
......
...@@ -103,6 +103,7 @@ ...@@ -103,6 +103,7 @@
:order-item-b="orderItemList[$index]" :order-item-b="orderItemList[$index]"
:title="$t('修改')" :title="$t('修改')"
:order="order" :order="order"
:is-shipment="isShipment"
@close="getList" @close="getList"
></warehouse> ></warehouse>
<template <template
...@@ -120,9 +121,11 @@ ...@@ -120,9 +121,11 @@
:order-item-b="orderItemList[$index]" :order-item-b="orderItemList[$index]"
:title="$t('追加')" :title="$t('追加')"
:order="order" :order="order"
:is-shipment="isShipment"
@close="getList" @close="getList"
></warehouse> ></warehouse>
<el-button <el-button
v-if="!isShipment"
size="mini" size="mini"
type="text" type="text"
@click="handleWarehousingReturn(row)" @click="handleWarehousingReturn(row)"
...@@ -254,7 +257,7 @@ ...@@ -254,7 +257,7 @@
</el-card> </el-card>
<div <div
style="text-align: center; margin-top: 15px" style="text-align: center; margin-top: 15px"
v-if="!(order.status !== 3 && isEdit)" v-if="!(order.status !== 3 && isEdit) && !isShipment"
> >
<el-button @click="escapeBol = true" type="primary">{{ <el-button @click="escapeBol = true" type="primary">{{
$t("转异") $t("转异")
...@@ -696,6 +699,9 @@ export default { ...@@ -696,6 +699,9 @@ export default {
warehouseId() { warehouseId() {
return this.order?.logisticsInfoDto?.startWarehouseId; return this.order?.logisticsInfoDto?.startWarehouseId;
}, },
isShipment(){
return this.$route.query?.shipment==1
}
}, },
}; };
</script> </script>
......
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<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" onkeyup="this.value=this.value.replace(/\s+/g, '')" /> <el-input v-model.trim="queryParams.orderNo" :placeholder="$t('订单编号')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'orderNo')" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('发货人')" prop="consignorKey"> <el-form-item :label="$t('发货人')" prop="consignorKey">
<el-input v-model="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> <el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey"> <el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> <el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" />
</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.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" /> <dict-selector v-model="queryParams.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" />
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('商品')" prop="prodId" v-show="showSearch"> <el-form-item :label="$t('商品')" prop="prodId" v-show="showSearch">
<product-selector v-model="queryParams.prodId" @keyup.enter.native="handleQuery" clearable @change="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" /> <product-selector v-model.trim="queryParams.prodId" @keyup.enter.native="handleQuery" clearable @change="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单状态')" prop="statusList" v-show="showSearch"> <el-form-item :label="$t('订单状态')" prop="statusList" v-show="showSearch">
...@@ -351,7 +351,10 @@ export default { ...@@ -351,7 +351,10 @@ export default {
this.loading = false this.loading = false
}) })
}, },
// 自动去除空格
replaceSpace(obj, field) {
obj[field] = obj[field].replace(/\s+/g, "")
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.page = 1 this.queryParams.page = 1
......
...@@ -921,7 +921,7 @@ export default { ...@@ -921,7 +921,7 @@ export default {
cityList: [], cityList: [],
serviceGroup: [ serviceGroup: [
{ id: "1", text: this.$t("集运服务") }, { id: "1", text: this.$t("集运") },
{ id: "6", text: this.$t("数量(个)是否必填") }, { id: "6", text: this.$t("数量(个)是否必填") },
], ],
......
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