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) {
return request({
url: '/ecw/offer/create',
method: 'post',
url: "/ecw/offer/create",
method: "post",
data: data
})
}
......@@ -12,8 +12,8 @@ export function createOffer(data) {
// 更新报价单管理
export function updateOffer(data) {
return request({
url: '/ecw/offer/update',
method: 'put',
url: "/ecw/offer/update",
method: "put",
data: data
})
}
......@@ -21,24 +21,24 @@ export function updateOffer(data) {
// 删除报价单管理
export function deleteOffer(id) {
return request({
url: '/ecw/offer/delete?id=' + id,
method: 'delete'
url: "/ecw/offer/delete?id=" + id,
method: "delete"
})
}
// 获得报价单管理
export function getOffer(id) {
return request({
url: '/ecw/offer/get?offerId=' + id,
method: 'get'
url: "/ecw/offer/get?offerId=" + id,
method: "get"
})
}
// 获得报价单管理分页
export function getOfferPage(query) {
return request({
url: '/ecw/offer/page',
method: 'get',
url: "/ecw/offer/page",
method: "get",
params: query
})
}
......@@ -46,36 +46,36 @@ export function getOfferPage(query) {
// 导出报价单管理 Excel
export function exportOfferExcel(query) {
return request({
url: '/ecw/offer/export-excel',
method: 'get',
url: "/ecw/offer/export-excel",
method: "get",
params: query,
responseType: 'blob'
responseType: "blob"
})
}
// 更新报价单结果
export function updateOfferResult(data) {
return request({
url: '/ecw/offer/update/result',
method: 'put',
url: "/ecw/offer/update/result",
method: "put",
data: data
})
}
// 获取费用清单列表
export function getProductFeeList(prodCreateReqVO){
export function getProductFeeList(prodCreateReqVO) {
return request({
url: '/ecw/offer/calculation/prod-fee-List',
method: 'post',
url: "/ecw/offer/calculation/prod-fee-List",
method: "post",
data: prodCreateReqVO
})
}
// 获取费用清单
export function getProductFee(calculationFeeParamVO){
export function getProductFee(calculationFeeParamVO) {
return request({
url: '/ecw/offer/calculation/fee-List',
method: 'post',
url: "/ecw/offer/calculation/fee-List",
method: "post",
data: calculationFeeParamVO
})
}
......@@ -83,8 +83,8 @@ export function getProductFee(calculationFeeParamVO){
// 特价申请
export function createOfferSpecial(data) {
return request({
url: '/ecw/offer/special/apply',
method: 'put',
url: "/ecw/offer/special/apply",
method: "put",
data: data
})
}
......@@ -92,8 +92,8 @@ export function createOfferSpecial(data) {
// 特价详情
export function getOfferSpecial(offerProdId, params) {
return request({
url: '/ecw/offer/special/info/' + offerProdId,
method: 'get',
url: "/ecw/offer/special/info/" + offerProdId,
method: "get",
params
})
}
......@@ -101,35 +101,34 @@ export function getOfferSpecial(offerProdId, params) {
// 特价详情
export function getOfferSpecialByApproveId(approveId) {
return request({
url: '/ecw/offer/special/info?approveId=' + approveId,
method: 'get'
url: "/ecw/offer/special/info?approveId=" + approveId,
method: "get"
})
}
// 取消报价管理
export function cancel(id) {
return request({
url: '/ecw/offer/cancel',
method: 'delete',
params: {id}
url: "/ecw/offer/cancel",
method: "delete",
params: { id }
})
}
// 恢复取消的报价管理
export function recovery(id) {
return request({
url: '/ecw/offer/recovery',
method: 'delete',
params: {id}
url: "/ecw/offer/recovery",
method: "delete",
params: { id }
})
}
// 获取部门报价单列表
export function offerDeptPage(params) {
return request({
url: '/ecw/offer/dept/page',
method: 'get',
url: "/ecw/offer/dept/page",
method: "get",
params
})
}
......@@ -137,25 +136,33 @@ export function offerDeptPage(params) {
// 导出部分报价单 exportDeptOfferExcel
export function exportDeptOfferExcel(query) {
return request({
url: '/ecw/offer/dept/export-excel',
method: 'get',
url: "/ecw/offer/dept/export-excel",
method: "get",
params: query,
responseType: 'blob'
responseType: "blob"
})
}
// 报价单
export function getOfferSelect(params) {
return request({
url: '/ecw/offer/select',
method: 'get',
url: "/ecw/offer/select",
method: "get",
params
})
}
// 报价单
export function getOfferCheck(params) {
return request({
url: '/ecw/offer/check',
method: 'get',
url: "/ecw/offer/check",
method: "get",
params
})
}
\ No newline at end of file
}
// 特价详情
export function getOfferNumber(offerId) {
return request({
url: "/ecw/offer/getNumber/" + offerId,
method: "get"
})
}
......@@ -150,3 +150,21 @@ export function getGuojiaAndShiAndWarehouseList(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 @@
</el-select>
{{$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-select>
......@@ -21,11 +24,17 @@
<el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
</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-select>
{{$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-select>
......@@ -134,10 +143,10 @@ export default {
countryList: [], //目的国
AddressCity: [], //目的地
AddressTown: [], //目的仓
destCountryId: null,
destCityId: null,
destWarehouseId: null,
destCountryIds: null,
destCityIds: null,
destWarehouseIds: null,
}
},
computed:{
......@@ -283,17 +292,17 @@ export default {
//每当值省份值改变时其下地区值进行清空
this.AddressCity = [];
this.AddressTown = [];
this.destWarehouseId = "";
this.destCityId = "";
this.destWarehouseIds = "";
this.destCityIds = "";
this.findByprovinceCode();
if (this.destCountryId == "") {
if (this.destCountryIds == "") {
//1 是所有区域,2 国家,3是市,
this.getAddressCity()
this.getAddressTown()
} else if (
this.destCountryId != "" &&
this.destCityId == "" &&
this.destWarehouseId == ""
this.destCountryIds != "" &&
this.destCityIds == "" &&
this.destWarehouseIds == ""
) {
this.getAddressTown()
}
......@@ -304,35 +313,35 @@ export default {
deep: true, //深度监听 目的仓
handler() {
this.AddressTown = [];
this.destWarehouseId = "";
this.destWarehouseIds = "";
this.findBycityCode();
if (
this.destCityId != "" &&
this.destCountryId != "" &&
this.destWarehouseId == ""
this.destCityIds != "" &&
this.destCountryIds != "" &&
this.destWarehouseIds == ""
) {
//获取当前城市值id,获取该城市下区域
} else if (
this.destCountryId == "" &&
this.destCityId == "" &&
this.destWarehouseId == ""
this.destCountryIds == "" &&
this.destCityIds == "" &&
this.destWarehouseIds == ""
) {
this.getAddressTown()
} else if (
this.destCountryId != "" &&
this.destCityId == "" &&
this.destWarehouseId == ""
this.destCountryIds != "" &&
this.destCityIds == "" &&
this.destWarehouseIds == ""
) {
this.findByprovinceCode()
this.getAddressTown()
} else if (
this.destCountryId == "" &&
this.destCityId != "" &&
this.destWarehouseId == ""
this.destCountryIds == "" &&
this.destCityIds != "" &&
this.destWarehouseIds == ""
) {
//获取当前城市值id,获取该城市下区域
}
this.getOpenedRouterList()
this.getChannelList()
......@@ -342,22 +351,22 @@ export default {
deep: true, //深度监听
handler() {
if (
this.destCountryId != "" &&
this.destCityId != "" &&
this.destWarehouseId == ""
this.destCountryIds != "" &&
this.destCityIds != "" &&
this.destWarehouseIds == ""
) {
//获取当前城市值id,获取该城市下区域
this.findBycityCode()
} else if (
this.destCountryId != "" &&
this.destCityId == "" &&
this.destWarehouseId == ""
this.destCountryIds != "" &&
this.destCityIds == "" &&
this.destWarehouseIds == ""
) {
this.getAddressTown()
} else if (
this.destCountryId == "" &&
this.destCityId != "" &&
this.destWarehouseId == ""
this.destCountryIds == "" &&
this.destCityIds != "" &&
this.destWarehouseIds == ""
) {
this.findBycityCode()
}
......@@ -394,7 +403,7 @@ export default {
if (this.type == 'sea') return
let query = {
// cityId: this.importCity
cityId: this.destCityId
cityId: this.destCityIds
}
getChannelList(query).then(res => {
this.channelList = res.data
......@@ -407,9 +416,9 @@ export default {
},
changeOption(){
if(!this.option) return
this.destCountryId = +this.option.destCountryId || null
this.destCityId = +this.option.destCityId || null
this.destWarehouseId = +this.option.destWarehouseId || null
this.destCountryIds = +this.option.destCountryId || null
this.destCityIds = +this.option.destCityId || null
this.destWarehouseIds = +this.option.destWarehouseId || null
// this.importCity = +this.option.importCity || null
this.exportCity = +this.option.exportCity || null
this.transportType = this.option.transportId || null
......@@ -428,14 +437,14 @@ export default {
if(this.exportCity){
params.startCityId = this.exportCity
}
if(this.destCountryId){
params.destCountryId = this.destCountryId
if(this.destCountryIds){
params.destCountryIds = this.destCountryId
}
if(this.destCityId){
params.destCityId = this.destCityId
if(this.destCityIds){
params.destCityIds = this.destCityIds
}
if(this.destWarehouseId){
params.destWarehouseId = this.destWarehouseId
if(this.destWarehouseIds){
params.destWarehouseIds = this.destWarehouseIds
}
const res = await openedRouterList(params)
this.openedRouterList = res.data.filter(item => {
......@@ -511,18 +520,18 @@ export default {
})
},
findByprovinceCode() {
if (this.destCountryId != null && this.destCountryId != '') {
if (this.destCountryIds != null && this.destCountryIds != '') {
//获取当前省份值id,获取该省份下城市 destCountryId provinceCode
getRegionList(2, this.destCountryId).then(({ data }) => {
getRegionList(2, this.destCountryIds).then(({ data }) => {
this.AddressCity = data;
})
}
},
findBycityCode() {
if (this.destCityId != null && this.destCityId != '') {
if (this.destCityIds != null && this.destCityIds != '') {
//获取当前城市值id,获取该城市下区域
getRegionList(3, this.destCityId).then(({ data }) => {
getRegionList(3, this.destCityIds).then(({ data }) => {
this.AddressTown = data;
})
}
......
......@@ -15,3 +15,13 @@
justify-content: center;
align-items: center;
}
.custom-form-1 {
padding-right: 40px;
.el-textarea,
.dict-selector,
.el-select {
width: 100%;
}
}
......@@ -145,7 +145,7 @@
<div class="btns">
<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 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="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button>
</div>
......@@ -619,6 +619,11 @@ export default {
const { currNode, shipmentObj } = this.$attrs
return shipmentObj[currNode.keyName] === 183 ? true : false
},
/* 是否卸柜审核成功 */
isSuccessReview() {
const { currNode, shipmentObj } = this.$attrs
return shipmentObj[currNode.keyName] === 185 ? true : false
},
// 部分信息
getSectionInfo() {
const { totalStatistics, secStatistics } = this.pageData
......
......@@ -135,7 +135,7 @@
<template slot-scope="scope">
<div class="btns">
<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="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button>
</div>
......
......@@ -34,14 +34,15 @@
</el-form-item>
<el-form-item :label="$t('有效期')" prop="validDays">
<el-input
v-model.trim="queryParams.validDays"
:placeholder="$t('请输入有效期')"
clearable
@keyup.enter.native="handleQuery"
onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
<el-form-item :label="$t('结束时间')">
<el-date-picker
v-model="dateRangeEndTime"
type="daterange"
:start-placeholder="$t('开始日期')"
value-format="yyyy-MM-dd"
:end-placeholder="$t('结束日期')"
>
</el-date-picker>
</el-form-item>
<el-form-item :label="$t('创建时间')">
......@@ -103,7 +104,6 @@
<div>{{ parseTime(scope.row.createTime) }}</div>
</template>
</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">
<template slot-scope="scope">
......
<template>
<div class="customer-follow">
<el-dialog append-to-body :title="$t('客户跟进')" :visible.sync="customerFollow.dialogVisible" :before-close="customerFollowClose" width="900px">
<el-form ref="customerFollowForm" :model="form" label-width="120px">
<el-dialog append-to-body :title="$t('客户跟进')" :visible.sync="customerFollow.dialogVisible" :before-close="customerFollowClose" width="1200px">
<el-form class="custom-form-1" ref="customerFollowForm" :model="form" label-width="120px">
<el-row :gutter="10">
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('编号')" prop="number">
<el-input v-model="form.number" :placeholder="$t('请输入编号')" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('跟进状态')">
<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-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('客户编号')">
<el-input v-model="form.customerNumber" :placeholder="$t('请输入客户编号')" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('跟进类型')" required>
<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-select>
</el-form-item>
</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-date-picker v-model="form.followTime" clearable type="datetime" :placeholder="$t('请选择')" :disabled="isView" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="customerId">
<el-col :span="8" v-if="customerId">
<el-form-item :label="$t('联系人')" required>
<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-select>
</el-form-item>
</el-col>
<el-col :span="12" v-else>
<el-col :span="8" v-else>
<el-form-item :label="$t('联系人')" required>
<div class="contact">
<el-input v-model="form.contactName" :value="form.customerContactsId" placeholder="" disabled />
......@@ -48,47 +55,47 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('联系方式')">
<el-input v-model="form.contactPhone" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('客户经理')" required>
<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-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<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>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('上一级跟进单')" prop="parentNumber">
<el-input v-model="form.parentNumber" :placeholder="$t('请输入上一级跟进单')" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('跟进结果')" prop="followMethod">
<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-select>
</el-form-item>
</el-col>
<el-col :span="20">
<el-col :span="24">
<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-col>
<el-col :span="20">
<el-col :span="24">
<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-form-item>
</el-col>
<el-col :span="20">
<el-col :span="24">
<el-form-item :label="$t('附件')" prop="attatchment">
<FileUpload :limit="5" :isShowTip="true" v-model="form.attatchment" :fileType="fileType" :disabled="isView" />
</el-form-item>
......@@ -98,12 +105,12 @@
<el-date-picker v-model="form.nextTime" type="datetime" :placeholder="$t('请选择')" :disabled="isView" @change="changeNextTime"> </el-date-picker>
</el-form-item>
</el-col>
<el-col :span="20">
<el-col :span="24">
<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-form-item>
</el-col>
<el-col :span="20" v-if="isView">
<el-col :span="24" v-if="isView">
<el-form-item>
<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>-->
......@@ -111,26 +118,26 @@
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('创建人')" prop="founder">
<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-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('创建时间')" prop="createTime">
<el-date-picker v-model="form.createTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('最后更新人')">
<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-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('最后更新时间')">
<el-date-picker v-model="form.updateTime" type="datetime" disabled :placeholder="$t('请选择')"> </el-date-picker>
</el-form-item>
......@@ -166,7 +173,7 @@
<script>
import { createCustomerFollow, getCustomerFollowPage, getCustomerFollowPage2, addCustomerFollow, getCustomerFollowList, editCustomerFollow, getFollowupNewNumber } from "@/api/ecw/customerFollow"
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 { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts"
import { listAllSimpl, listServiceUser, listSimpleUsers } from "@/api/system/user"
......@@ -213,7 +220,9 @@ export default {
}
},
offerDialogVisible: true,
form: {},
form: {
offerId: undefined
},
pageNo: 1,
pageSize: 10,
total: 10,
......@@ -247,6 +256,17 @@ export default {
this.allSimplList = r.data
})
},
watch: {
"form.offerId"(v) {
if (v) {
getOfferNumber(v).then((r) => {
this.form.offerNumber = r.data
})
} else {
this.form.offerNumber = ""
}
}
},
methods: {
selectOffer(offerId) {
this.form.offerId = offerId
......@@ -317,7 +337,6 @@ export default {
handleFollowType(val) {
console.log(val)
if (val == 2) {
this.CustomerFollowSelectOffer = true
} else {
this.form.offerId = undefined
}
......@@ -339,6 +358,7 @@ export default {
nextTime: undefined,
number: undefined,
offerId: this.offerId,
offerNumber: undefined,
parentId: undefined,
parentNumber: undefined,
purpose: undefined,
......@@ -386,6 +406,10 @@ export default {
this.$modal.msgError(this.$t("请选择跟进方式"))
return
}
if (!this.form.offerId && this.form.followType == 2) {
this.$modal.msgError(this.$t("请选择报价单"))
return
}
if (status === 0) {
this.saveSubmitData(status)
......@@ -457,6 +481,7 @@ export default {
...row,
id: null,
parentNumber: row.number,
purpose: row.nextPlan,
followTime: row.nextTime,
nextTime: "",
number: r.data.number,
......
......@@ -61,7 +61,7 @@ export default {
},
methods: {
submit() {
if (!this.status) {
if (this.status == null || this.status == undefined) {
return this.$message.warning(this.$t('请选择修改的状态!'));
}
console.log(this.followupIds, 'this.followupIds')
......
......@@ -854,7 +854,7 @@ export default {
currecyList: [],
enterOpenSeaTime: undefined,
showBaseFlag: false,
showShippingFlag: false,
showShippingFlag: true,
showSettingFlag: false,
showFinanceFlag: false,
competitorList: []
......
......@@ -228,21 +228,21 @@
-->
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<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) }}
</template>
</el-table-column>
<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>
</template>
</el-table-column>
......@@ -667,7 +667,7 @@
</div>
</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 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>
<transfer-customer :show.sync="transferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
<add-potential-custom ref="potentialCustom" @change="getList"></add-potential-custom>
......@@ -719,10 +719,10 @@ import { getCustomerSelect } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product"
import { listMySimpleDepts } from "@/api/system/dept"
import UserSelector from "@/components/UserSelector/index.vue";
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue";
import ProductSelector from "@/components/ProductSelector/index.vue";
import CompetitorSelector from "@/components/CompetitorSelector/index.vue";
import UserSelector from "@/components/UserSelector/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import ProductSelector from "@/components/ProductSelector/index.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default {
name: "EcwCustomerIndex",
components: {
......@@ -1011,15 +1011,14 @@ export default {
this.getList()
},
methods: {
onCompetitorChange(row, competitor) {
// row.goodsType = product ? product.typeId : null
row.id = !competitor
? []
: competitor.id
.split(",")
.filter((item) => item !== "")
.map((item) => +item)
.split(",")
.filter((item) => item !== "")
.map((item) => +item)
if (competitor) {
this.$set(this.names, competitor.id, {
name: competitor.name
......
......@@ -672,7 +672,7 @@
</div>
</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>
</template>
......
......@@ -168,12 +168,10 @@
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<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,}})"
v-hasPermi="['ecw:customer: treat-create']">{{$t('新增')}}</el-button>
<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>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:treat-export']">{{$t('导出')}}</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:customer:treat-export']">{{ $t("导出") }}</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
......@@ -182,15 +180,15 @@
<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 :label="$t('客户编号')" align="center" fixed>
<template v-slot="{row}">
<template v-slot="{ row }">
<router-link :to="`/customer/query/${row.id}`" class="link-type">
{{ row.number }}
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" fixed>
<template v-slot="{row}">
<p style="display:inline-block;white-space: pre-wrap;">{{$l(row, 'name')}}</p>
<template v-slot="{ row }">
<p style="display: inline-block; white-space: pre-wrap">{{ $l(row, "name") }}</p>
</template>
</el-table-column>
<!--
......@@ -207,41 +205,49 @@
</template>
</el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<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) }}
</template>
</el-table-column>
<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>
</template>
</el-table-column>
<el-table-column :label="$t('客户类别')" align="center" prop="status">
<template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
{{
getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type || "").split(","))
.map((e) => (isChinese ? e.label : e.labelEn))
.join(", ")
}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</template>
</el-table-column>
<el-table-column :label="$t('角色')" align="center" prop="status">
<template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
{{
getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles || "").split(","))
.map((e) => (isChinese ? e.label : e.labelEn))
.join(", ")
}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</template>
</el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column>
......@@ -253,10 +259,7 @@
</el-table-column>
<el-table-column :label="$t('客户来源')">
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.CUSTOMER_SOURCE"
:value="scope.row.source"
/>
<dict-tag :type="DICT_TYPE.CUSTOMER_SOURCE" :value="scope.row.source" />
</template>
</el-table-column>
<el-table-column :label="$t('业务国家')">
......@@ -279,8 +282,7 @@
{{ getProductTypeNames(row.productTypes) }}
</template>
</el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames">
</el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> </el-table-column>
<el-table-column :label="$t('年度发货次数')" align="center">
<template slot-scope="{ row }">
{{ row.numYearly }}
......@@ -293,13 +295,13 @@
</el-table-column>
<el-table-column :label="$t('入公海时间')" align="center" width="160">
<template v-slot="{ row }">
{{ parseTime( row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime)}}
{{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime) }}
</template>
</el-table-column>
<el-table-column :label="$t('入仓确认')" align="center">
<template slot-scope="scope">
<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="success" v-if="scope.row.arrivalConfirm == 1">{{ $t("") }}</el-tag>
<el-tag type="info" v-else>{{ $t("") }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('控货无收货人')" align="center">
......@@ -324,14 +326,10 @@
</el-table-column>
<el-table-column :label="$t('获取方式')" align="center">
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.CUSTOMER_GET_METHOD"
:value="scope.row.getMethod"
/>
<dict-tag :type="DICT_TYPE.CUSTOMER_GET_METHOD" :value="scope.row.getMethod" />
</template>
</el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center">
</el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center"> </el-table-column>
<el-table-column :label="$t('创建时间')" align="center" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
......@@ -339,51 +337,38 @@
</el-table-column>
<el-table-column :label="$t('最后更新时间')" align="center" width="160">
<template slot-scope="scope">
<span >{{ parseTime(scope.row.updateTime) }}</span>
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('分配时间')" align="center" width="180">
<template v-slot="{row}">
<span>{{ parseTime(row.customerServiceAssignedTime ) }}</span>
<template v-slot="{ row }">
<span>{{ parseTime(row.customerServiceAssignedTime) }}</span>
</template>
</el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<template slot-scope="scope">
<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>
<el-button size="mini" type="text" @click="handleConfirmService(scope.row)" 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>
<router-link style="margin: 0 10px" to="/offer/create">
<el-button v-has-permi="['ecw:customer:treat-quoted-price']" size="mini" type="text">
{{ $t("报价") }}
</el-button>
</router-link>
<el-button size="mini" type="text" @click="handleConfirmService(scope.row)"
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>
<router-link style="margin: 0 10px;" to="/offer/create">
<el-button v-has-permi="['ecw:customer:treat-quoted-price']" size="mini" type="text">
{{$t('报价')}}
</el-button>
</router-link>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:customer:treat-perfect']">{{$t('完善')}}</el-button>
<el-button size="mini" type="text" @click="handleUpdate(scope.row)" 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:setting']"
size="mini"
type="text"
icon="el-icon-user"
@click="handleSetting(scope.row)"
>{{ $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>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-col :span="12">
<el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="form.name" :placeholder="$t('请输入客户名称')" />
......@@ -392,24 +377,21 @@
<el-col :span="12">
<el-form-item :label="$t('国家')" prop="country">
<el-select v-model="form.country" :placeholder="$t('请选择国家')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户等级')" prop="level">
<el-select v-model="form.level" :placeholder="$t('请选择客户等级')">
<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)" />
<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)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('所属代理')" prop="agentId">
<el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')">
<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)" />
<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)" />
</el-select>
</el-form-item>
</el-col>
......@@ -421,8 +403,7 @@
<el-col :span="12">
<el-form-item :label="$t('客户类别')" prop="type">
<el-select v-model="form.type" :placeholder="$t('请选择客户类别')">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.CUSTOMER_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
......@@ -434,13 +415,11 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('公司名称')" prop="company">
<el-input v-model="form.company" :placeholder="$t('请输入公司名称')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户生日')" prop="birthday">
<el-input v-model="form.birthday" :placeholder="$t('请输入客户生日')" />
</el-form-item>
......@@ -456,44 +435,35 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户来源')" prop="source">
<el-select v-model="form.source" :placeholder="$t('请选择客户来源')">
<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)" />
<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)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('结算方式')" prop="balance">
<el-select v-model="form.balance" :placeholder="$t('请选择结算方式')">
<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)" />
<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)" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')">
<el-option v-for="dict in serviceStaffOptions"
:key="dict.id" :label="dict.nickname" :value="dict.id" />
<el-option v-for="dict in serviceStaffOptions" :key="dict.id" :label="dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('图片')" prop="picture">
<el-input v-model="form.picture" :placeholder="$t('请输入图片')" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户状态')" prop="status">
<el-select v-model="form.status" :placeholder="$t('请选择客户状态')">
<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)" />
<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)" />
</el-select>
</el-form-item>
</el-col>
......@@ -528,9 +498,6 @@
</el-form-item>
</el-col>
<el-form-item :label="$t('关联会员账号')" prop="memberId">
<el-input v-model="form.memberId" :placeholder="$t('请输入关联会员账号')" />
</el-form-item>
......@@ -564,8 +531,8 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{$t('确 定')}}</el-button>
<el-button @click="cancel">{{$t('取 消')}}</el-button>
<el-button type="primary" @click="submitForm">{{ $t("确 定") }}</el-button>
<el-button @click="cancel">{{ $t("取 消") }}</el-button>
</div>
</el-dialog>
......@@ -575,65 +542,52 @@
<el-form ref="handOverForm" :model="handOverForm" :rules="rules" label-width="80px">
<el-form-item :label="$t('客户经理')" prop="customerServiceId">
<el-select v-model="handOverForm.customerServiceId" :placeholder="$t('请选择客户经理')" clearable filterable>
<el-option v-for="user in serviceStaffOptions"
:key="user.id" :value="user.id"
:label="user.nickname" />
<el-option v-for="user in serviceStaffOptions" :key="user.id" :value="user.id" :label="user.nickname" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitHandOverForm">{{$t('确 定')}}</el-button>
<el-button @click="cancelHandOver">{{$t('取 消')}}</el-button>
<el-button type="primary" @click="submitHandOverForm">{{ $t("确 定") }}</el-button>
<el-button @click="cancelHandOver">{{ $t("取 消") }}</el-button>
</div>
</el-dialog>
<transfer-customer :show.sync="openHandOver" :customer-ids.sync="handOverForm.customerIdList"></transfer-customer>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/>
<customer-setting
ref="customerSetting"
@refresh="getList"
></customer-setting>
<customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
</div>
</template>
<script>
import {
updateCustomer,
getCustomer,
exportCustomerExcel,
getWaitForConfirmList,
confirm,
waiteConfirmExportExcel, waiteConfirEexportExcel, recycleUnconfirmedCustomer,
competitorListAll
} from "@/api/ecw/customer";
import { updateCustomer, getCustomer, exportCustomerExcel, getWaitForConfirmList, confirm, waiteConfirmExportExcel, waiteConfirEexportExcel, recycleUnconfirmedCustomer, competitorListAll } from "@/api/ecw/customer"
import { listServiceUser, listAllSimpl } from "@/api/system/user"
import {getDictDatas, DICT_TYPE, getDictDatas2} from '@/utils/dict'
import {CommonStatusEnum} from '@/utils/constants'
import {handOverCustomer} from "../../../api/ecw/customer";
import {getCountryListAll} from "@/api/ecw/country";
import {getCreditPage} from "@/api/customer/credit";
import transferCustomer from "@/views/ecw/customer/transferCustomer.vue";
import Contacts from "@/views/ecw/customer/components/contacts.vue";
import CustomerSetting from "../customer/components/customerSetting.vue";
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue";
import { getNodeList } from "@/api/ecw/node";
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";
import Template from "@/views/cms/template/index.vue";
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue";
import CompetitorSelector from "@/components/CompetitorSelector/index.vue";
import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import { CommonStatusEnum } from "@/utils/constants"
import { handOverCustomer } from "../../../api/ecw/customer"
import { getCountryListAll } from "@/api/ecw/country"
import { getCreditPage } from "@/api/customer/credit"
import transferCustomer from "@/views/ecw/customer/transferCustomer.vue"
import Contacts from "@/views/ecw/customer/components/contacts.vue"
import CustomerSetting from "../customer/components/customerSetting.vue"
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"
import { getNodeList } from "@/api/ecw/node"
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"
import Template from "@/views/cms/template/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default {
name: "EcwCustomerconfirmIndex",
activated() {
this.getList();
this.getList()
},
computed:{
computed: {
DICT_TYPE() {
return DICT_TYPE
},
isChinese(){
return this.$i18n.locale === 'zh_CN'
isChinese() {
return this.$i18n.locale === "zh_CN"
},
channel() {
return (val) => {
......@@ -642,20 +596,18 @@ export default {
.filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn))
.join("")
: "";
};
: ""
}
},
customerSelectFn() {
if (this.recommended.length > 0) {
let i = this.customerSelect.find(
(item) => item.id === this.recommended[0].id
);
let i = this.customerSelect.find((item) => item.id === this.recommended[0].id)
if (!i) {
this.customerSelect.push(this.recommended[0]);
this.customerSelect.push(this.recommended[0])
}
return this.customerSelect;
return this.customerSelect
} else {
return this.customerSelect;
return this.customerSelect
}
},
combinedQueryParams() {
......@@ -677,26 +629,26 @@ export default {
queryParams.endFirstDealTime = this.firstDealTime[1]
}
if (this.weightYearly.value) {
let key = 'eqWeightYearly'
if (this.weightYearly.key == 'leNumberKey') {
key = 'leWeightYearly'
} else if (this.weightYearly.key == 'geNumberKey') {
key = 'geWeightYearly'
let key = "eqWeightYearly"
if (this.weightYearly.key == "leNumberKey") {
key = "leWeightYearly"
} else if (this.weightYearly.key == "geNumberKey") {
key = "geWeightYearly"
}
queryParams[key] = this.weightYearly.value;
queryParams[key] = this.weightYearly.value
}
if (this.numYearly.value) {
let key = 'eqNumYearly'
if (this.numYearly.key == 'leNumberKey') {
key = 'leNumYearly'
} else if (this.numYearly.key == 'geNumberKey') {
key = 'geNumYearly'
let key = "eqNumYearly"
if (this.numYearly.key == "leNumberKey") {
key = "leNumYearly"
} else if (this.numYearly.key == "geNumberKey") {
key = "geNumYearly"
}
queryParams[key] = this.numYearly.value;
queryParams[key] = this.numYearly.value
}
return queryParams;
},
return queryParams
}
},
components: {
CompetitorSelector,
......@@ -730,7 +682,7 @@ export default {
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 10
/*number: null,
name: null,
level: null,
......@@ -751,14 +703,14 @@ export default {
handOverForm: {},
// 表单校验
rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }],
weightUnit: [{ required: true, message: this.$t('重货标准(CBM)不能为空'), trigger: "blur" }],
name: [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
weightUnit: [{ required: true, message: this.$t("重货标准(CBM)不能为空"), trigger: "blur" }]
},
serviceStaffOptions: [],
customerServiceList:[],
countryList:[],
creditList:[],
customerServiceList: [],
countryList: [],
creditList: [],
selectCustomerList: [],
enterOpenSeaTime: [],
customerServiceConfirmedTime: [],
......@@ -769,47 +721,47 @@ export default {
allSimplList: [],
weightYearly: {
key: "eqNumberKey",
value: "",
value: ""
},
numYearly: {
key: "eqNumberKey",
value: "",
value: ""
},
productTypeList: [],
productList: [],
competitorList: [],
deptList: [],
};
deptList: []
}
},
created() {
this.getList();
getCreditPage({page:1,rows:999}).then(r => {
this.getList()
getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list
})
// 获得客服人员列表
listServiceUser().then(response => {
this.serviceStaffOptions = response.data;
listServiceUser().then((response) => {
this.serviceStaffOptions = response.data
})
listServiceUser().then(r=>{
this.customerServiceList = r.data;
listServiceUser().then((r) => {
this.customerServiceList = r.data
})
getCountryListAll().then(r => {
getCountryListAll().then((r) => {
this.countryList = r.data
})
this.getCustomerSelect();
this.getCustomerSelect()
getNodeList().then((r) => {
this.getNodeLists = r.data;
});
this.getNodeLists = r.data
})
listAllSimpl().then((r) => {
this.allSimplList = r.data;
});
this.allSimplList = r.data
})
getProductTypeList().then((r) => {
this.productTypeList = r.data;
});
this.productTypeList = r.data
})
competitorListAll().then((r) => {
this.competitorList = r.data;
this.competitorList = r.data
})
listMySimpleDepts().then(response => {
listMySimpleDepts().then((response) => {
this.deptList = response.data
})
},
......@@ -839,38 +791,36 @@ export default {
const country = this.countryList.find((e) => e.id === cellValue)
return this.isChinese ? country?.nameZh : country?.nameEn
},
handleSelectionChange(val){
this.selectCustomerList = val.map(i => i.id);
handleSelectionChange(val) {
this.selectCustomerList = val.map((i) => i.id)
},
/** 查询列表 */
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);
// 执行查询
getWaitForConfirmList(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
getWaitForConfirmList(params).then((response) => {
this.list = response.data.list
this.total = response.data.total
this.loading = false
})
},
remoteMethod(val) {
this.getCustomerSelect(val);
this.getCustomerSelect(val)
},
getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then(
(res) => {
this.customerSelect = res.data.list;
}
);
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then((res) => {
this.customerSelect = res.data.list
})
},
handleSelectProductType(val) {
if (val && val.length >= 1) {
this.queryParams.productIds = []
getProductList({ typeIds: val }).then((r) => {
this.productList = r.data
});
})
} else {
this.queryParams.productIds = []
this.productList = []
......@@ -878,8 +828,8 @@ export default {
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
this.open = false
this.reset()
},
/** 表单重置 */
reset() {
......@@ -916,49 +866,49 @@ export default {
taxRate: undefined,
remarks: undefined,
arrivalConfirm: undefined,
weightUnit: undefined,
};
this.resetForm("form");
weightUnit: undefined
}
this.resetForm("form")
},
/** 表单重置 */
resetHandOverForm() {
this.form = {
customerIdList: undefined,
customerServiceId: undefined
};
this.resetForm("handOverForm");
}
this.resetForm("handOverForm")
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
this.queryParams.pageNo = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.dateRangeCreateTime = []
this.enterOpenSeaTime = []
this.customerServiceConfirmedTime = []
this.firstDealTime = []
this.resetForm("queryForm");
this.resetForm("queryForm")
this.queryParams = {
pageNo: 1,
pageSize: 10,
};
this.weightYearly.value = "";
this.numYearly.value = "";
this.handleQuery();
pageSize: 10
}
this.weightYearly.value = ""
this.numYearly.value = ""
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = this.$t('添加客户');
this.reset()
this.open = true
this.title = this.$t("添加客户")
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
this.$router.push({path:'/customer/perfect/'+id,query:{isCustomerServiceConfirmed:true,}});
this.reset()
const id = row.id
this.$router.push({ path: "/customer/perfect/" + id, query: { isCustomerServiceConfirmed: true } })
// getCustomer(id).then(response => {
// this.form = response.data;
// this.open = true;
......@@ -967,49 +917,56 @@ export default {
},
/** 修改按钮操作 */
handleConfirmService(row) {
const id = row.id;
this.$modal.confirm(this.$t('是否确认接收客户')+'["' + row.name + '"]?').then(function() {
return confirm({"customerId": id});
}).then(() => {
this.getList();
this.$modal.msgSuccess(this.$t('接收成功'));
}).catch(() => {});
const id = row.id
this.$modal
.confirm(this.$t("是否确认接收客户") + '["' + row.name + '"]?')
.then(function () {
return confirm({ customerId: id })
})
.then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("接收成功"))
})
.catch(() => {})
},
/** 修改按钮操作 */
handOver(row) {
// this.resetHandOverForm();
this.openHandOver = true;
this.openHandOver = true
this.handOverForm.customerIdList = [row.id];
this.handOverForm.customerIdList = [row.id]
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
return
}
// 修改的提交
if (this.form.id != null) {
updateCustomer(this.form).then(response => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.open = false;
this.getList();
});
return;
updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t("修改成功"))
this.open = false
this.getList()
})
return
}
});
})
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + id + this.$t('"的数据项?')).then(function() {
return deleteCustomer(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess(this.$t('删除成功'));
}).catch(() => {});
const id = row.id
this.$modal
.confirm(this.$t('是否确认删除客户编号为"') + id + this.$t('"的数据项?'))
.then(function () {
return deleteCustomer(id)
})
.then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("删除成功"))
})
.catch(() => {})
},
/** 导出按钮操作 */
handleExport() {
......@@ -1019,85 +976,86 @@ export default {
// params.pageSize = undefined;
// this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this.$modal.confirm(this.$t('是否确认导出我的待接受客户数据项?')).then(() => {
waiteConfirEexportExcel().then(()=>{
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
this.$modal
.confirm(this.$t("是否确认导出我的待接受客户数据项?"))
.then(() => {
waiteConfirEexportExcel().then(() => {
this.$message.success(this.$t("已加入导出队列,请稍后在下载日志中下载"))
})
})
}).catch(() => {});
.catch(() => {})
},
/** 提交按钮 */
submitHandOverForm() {
// 移交的提交
handOverCustomer(this.handOverForm).then(response => {
this.$modal.msgSuccess(this.$t('移交成功'));
this.openHandOver = false;
this.getList();
});
handOverCustomer(this.handOverForm).then((response) => {
this.$modal.msgSuccess(this.$t("移交成功"))
this.openHandOver = false
this.getList()
})
},
/** 取消按钮 */
cancelHandOver() {
this.openHandOver = false;
this.openHandOver = false
this.handOverForm = {
customerId: undefined,
customerIdList : undefined
};
customerIdList: undefined
}
},
handleSetting(row) {
this.$refs['customerSetting'].dialogVisible = true
this.$nextTick(_ => {
this.$refs['customerSetting'].init(row.id)
this.$refs["customerSetting"].dialogVisible = true
this.$nextTick((_) => {
this.$refs["customerSetting"].init(row.id)
})
},
getBusiCountryNames(ids) {
if (ids) {
const idsArr = ids.split(',')
const idsArr = ids.split(",")
const strArr = []
this.countryList.forEach(item => {
this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn)
}
})
return strArr.length > 0 ? strArr.join(',') : null
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
}
},
getPickupPointNames(ids) {
if (ids) {
const idsArr = ids.split(',')
const idsArr = ids.split(",")
const strArr = []
this.getNodeLists.forEach(item => {
this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn)
}
})
return strArr.length > 0 ? strArr.join(',') : null
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
}
},
getProductTypeNames(ids) {
if (ids) {
const idsArr = ids.toString().split(',')
const idsArr = ids.toString().split(",")
const strArr = []
this.productTypeList.forEach(item => {
this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn)
}
})
return strArr.length > 0 ? strArr.join(',') : null
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
}
},
getPromoterName(id) {
if (id) {
let strName = ''
for(const item of this.customerSelectFn) {
let strName = ""
for (const item of this.customerSelectFn) {
if (item.id == id) {
strName = item.name
break
......@@ -1109,5 +1067,5 @@ export default {
}
}
}
};
}
</script>
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
......@@ -169,17 +168,14 @@
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['ecw:customer:distribution-create']">{{$t('新增')}}</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:customer:distribution-create']">{{ $t("新增") }}</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:distribution-export']">{{$t('导出')}}</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:customer:distribution-export']">{{ $t("导出") }}</el-button>
</el-col>
<el-col :span="1.5">
<el-col :span="1.5" >
<el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="batchTransferShow = true;"
v-hasPermi="['ecw:customer:distribution-transfer']">{{$t('批量移交')}}</el-button>
<el-col :span="1.5">
<el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="batchTransferShow = true" v-hasPermi="['ecw:customer:distribution-transfer']">{{ $t("批量移交") }}</el-button>
</el-col>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
......@@ -189,13 +185,13 @@
<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 :label="$t('客户编号')" align="center" prop="number">
<template v-slot="{row}">
{{row.number}}
<template v-slot="{ row }">
{{ row.number }}
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" >
<template v-slot="{row}">
<p style="display:inline-block;white-space: pre-wrap;">{{$l(row, 'name')}}</p>
<el-table-column :label="$t('客户名称')" align="center" prop="name">
<template v-slot="{ row }">
<p style="display: inline-block; white-space: pre-wrap">{{ $l(row, "name") }}</p>
</template>
</el-table-column>
<el-table-column :label="$t('客户状态')" align="center" prop="status">
......@@ -204,41 +200,49 @@
</template>
</el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{row}">-->
<!-- +{{row.defaultContactPhone}} <br/>-->
<!-- <contacts :id="row.id" >-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<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) }}
</template>
</el-table-column>
<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>
</template>
</el-table-column>
<el-table-column :label="$t('客户类别')" align="center" prop="status">
<template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
{{
getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (row.type || "").split(","))
.map((e) => (isChinese ? e.label : e.labelEn))
.join(", ")
}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_TYPE"-->
<!-- :value="scope.row.type"-->
<!-- />-->
</template>
</el-table-column>
<el-table-column :label="$t('角色')" align="center" prop="status">
<template slot-scope="{ row }">
{{ getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
{{
getDictDatas2(DICT_TYPE.CUSTOMER_ROLE, (row.roles || "").split(","))
.map((e) => (isChinese ? e.label : e.labelEn))
.join(", ")
}}
<!-- <dict-tag-->
<!-- :type="DICT_TYPE.CUSTOMER_ROLE"-->
<!-- :value="scope.row.roles"-->
<!-- />-->
</template>
</el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></el-table-column>
......@@ -250,10 +254,7 @@
</el-table-column>
<el-table-column :label="$t('客户来源')">
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.CUSTOMER_SOURCE"
:value="scope.row.source"
/>
<dict-tag :type="DICT_TYPE.CUSTOMER_SOURCE" :value="scope.row.source" />
</template>
</el-table-column>
<el-table-column :label="$t('业务国家')">
......@@ -276,8 +277,7 @@
{{ getProductTypeNames(row.productTypes) }}
</template>
</el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames">
</el-table-column>
<el-table-column :label="$t('主要竞争对手')" prop="competitorNames"> </el-table-column>
<el-table-column :label="$t('年度发货次数')" align="center">
<template slot-scope="{ row }">
{{ row.numYearly }}
......@@ -290,13 +290,13 @@
</el-table-column>
<el-table-column :label="$t('入公海时间')" align="center" width="160">
<template v-slot="{ row }">
{{ parseTime( row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime)}}
{{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime) }}
</template>
</el-table-column>
<el-table-column :label="$t('入仓确认')" align="center">
<template slot-scope="scope">
<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="success" v-if="scope.row.arrivalConfirm == 1">{{ $t("") }}</el-tag>
<el-tag type="info" v-else>{{ $t("") }}</el-tag>
</template>
</el-table-column>
<el-table-column :label="$t('控货无收货人')" align="center">
......@@ -321,14 +321,10 @@
</el-table-column>
<el-table-column :label="$t('获取方式')" align="center">
<template slot-scope="scope">
<dict-tag
:type="DICT_TYPE.CUSTOMER_GET_METHOD"
:value="scope.row.getMethod"
/>
<dict-tag :type="DICT_TYPE.CUSTOMER_GET_METHOD" :value="scope.row.getMethod" />
</template>
</el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center">
</el-table-column>
<el-table-column :label="$t('创建人')" prop="createUsername" align="center"> </el-table-column>
<el-table-column :label="$t('创建时间')" align="center" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
......@@ -336,91 +332,69 @@
</el-table-column>
<el-table-column :label="$t('最后更新时间')" align="center" width="160">
<template slot-scope="scope">
<span >{{ parseTime(scope.row.updateTime) }}</span>
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<template slot-scope="scope">
<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>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
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="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
>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" 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="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>
</el-table-column>
</el-table>
<!-- 移交 -->
<el-dialog
center
:title="$t('客服')"
:visible.sync="transferShow"
width="30%">
<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-dialog center :title="$t('客服')" :visible.sync="transferShow" width="30%">
<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-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>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="transferShow = false">{{$t('取 消')}}</el-button>
<el-button type="primary" @click="transferFn">{{$t('确 定')}}</el-button>
</span>
<el-button @click="transferShow = false">{{ $t("取 消") }}</el-button>
<el-button type="primary" @click="transferFn">{{ $t("确 定") }}</el-button>
</span>
</el-dialog>
<!-- 分页组件 -->
<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" />
<transfer-customer :show.sync="batchTransferShow" :customer-ids.sync="selectCustomerList"></transfer-customer>
<customer-follow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible"/>
<customer-setting
ref="customerSetting"
@refresh="getList"
></customer-setting>
<customer-follow ref="customerFollow" @close="customerFollowVisible = false" @refresh="handleQuery" v-if="customerFollowVisible" />
<customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
</div>
</template>
<script>
import {
createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer,
exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel,
competitorListAll
} from "@/api/ecw/customer";
import { getDictDatas, DICT_TYPE, getDictDatas2 } from '@/utils/dict';
import upload from '@/components/ImageUpload'
import {listServiceUser, listAllSimpl} from "@/api/system/user";
import {getCountryListAll} from "@/api/ecw/country";
import {getCreditPage} from "@/api/customer/credit";
import transferCustomer from "@/views/ecw/customer/transferCustomer";
import Template from "@/views/cms/template/index.vue";
import Contacts from "@/views/ecw/customer/components/contacts.vue";
import CustomerSetting from "../customer/components/customerSetting.vue";
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue";
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue";
import CompetitorSelector from "@/components/CompetitorSelector/index.vue";
import { getNodeList } from "@/api/ecw/node";
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";
import { createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer, exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel, competitorListAll } from "@/api/ecw/customer"
import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import upload from "@/components/ImageUpload"
import { listServiceUser, listAllSimpl } from "@/api/system/user"
import { getCountryListAll } from "@/api/ecw/country"
import { getCreditPage } from "@/api/customer/credit"
import transferCustomer from "@/views/ecw/customer/transferCustomer"
import Template from "@/views/cms/template/index.vue"
import Contacts from "@/views/ecw/customer/components/contacts.vue"
import CustomerSetting from "../customer/components/customerSetting.vue"
import AreaCodeSelector from "@/components/AreaCodeSelector/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow.vue"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
import { getNodeList } from "@/api/ecw/node"
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 {
name: "EcwCustomertobeassignedIndex",
activated() {
this.getList()
},
this.getList()
},
components: {
CompetitorSelector,
Contacts,
......@@ -434,7 +408,7 @@ export default {
data() {
return {
customerFollowVisible: false,
batchTransferShow:false,
batchTransferShow: false,
getDictDatas,
getDictDatas2,
DICT_TYPE,
......@@ -453,11 +427,11 @@ export default {
// 是否显示弹出层
open: false,
dateRangeCreateTime: [],
customerServiceList:[],
customerServiceList: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
pageSize: 10
/*number: null,
name: null,
level: null,
......@@ -477,25 +451,25 @@ export default {
form: {},
// 表单校验
rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }],
country: [{ required: true, message: this.$t('国家不能为空'), trigger: "blur" }],
level: [{ required: true, message: this.$t('客户等级不能为空'), trigger: "blur" }],
type: [{ required: true, message: this.$t('客户类别不能为空'), trigger: "blur" }],
name: [{ required: true, message: this.$t("客户名称不能为空"), trigger: "blur" }],
country: [{ required: true, message: this.$t("国家不能为空"), trigger: "blur" }],
level: [{ required: true, message: this.$t("客户等级不能为空"), trigger: "blur" }],
type: [{ required: true, message: this.$t("客户类别不能为空"), trigger: "blur" }],
// createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }],
customerService: [{ required: true, message: this.$t('客户经理不能为空'), trigger: "blur" }],
status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }],
founder: [{ required: true, message: this.$t('创建人不能为空'), trigger: "blur" }],
source: [{ required: true, message: this.$t("客户来源不能为空"), trigger: "blur" }],
customerService: [{ required: true, message: this.$t("客户经理不能为空"), trigger: "blur" }],
status: [{ required: true, message: this.$t("客户状态不能为空"), trigger: "blur" }],
founder: [{ required: true, message: this.$t("创建人不能为空"), trigger: "blur" }]
},
// 网点
nodeList: [],
showLine: false,
service:undefined,//客服
transferData:undefined,//移交数据
transferShow:false,
creditList:[],
selectCustomerList:[],
countryList:[],
service: undefined, //客服
transferData: undefined, //移交数据
transferShow: false,
creditList: [],
selectCustomerList: [],
countryList: [],
enterOpenSeaTime: [],
customerServiceConfirmedTime: [],
firstDealTime: [],
......@@ -505,48 +479,48 @@ export default {
allSimplList: [],
weightYearly: {
key: "eqNumberKey",
value: "",
value: ""
},
numYearly: {
key: "eqNumberKey",
value: "",
value: ""
},
productTypeList: [],
productList: [],
competitorList: [],
deptList: [],
};
deptList: []
}
},
created() {
getCountryListAll().then(r => {
console.log(r,'国家')
getCountryListAll().then((r) => {
console.log(r, "国家")
this.countryList = r.data
})
getCreditPage({page:1,rows:999}).then(r => {
getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list
})
this.getList();
listServiceUser().then(r=>{
console.log(r,'客服');
this.customerServiceList = r.data;
this.getList()
listServiceUser().then((r) => {
console.log(r, "客服")
this.customerServiceList = r.data
})
// getNodeList().then(r => {
// this.nodeList = r.data
// })
this.getCustomerSelect();
this.getCustomerSelect()
getNodeList().then((r) => {
this.getNodeLists = r.data;
});
this.getNodeLists = r.data
})
listAllSimpl().then((r) => {
this.allSimplList = r.data;
});
this.allSimplList = r.data
})
getProductTypeList().then((r) => {
this.productTypeList = r.data;
});
this.productTypeList = r.data
})
competitorListAll().then((r) => {
this.competitorList = r.data;
this.competitorList = r.data
})
listMySimpleDepts().then(response => {
listMySimpleDepts().then((response) => {
this.deptList = response.data
})
},
......@@ -560,8 +534,8 @@ export default {
const country = this.countryList.find((e) => e.id === cellValue)
return this.isChinese ? country?.nameZh : country?.nameEn
},
handleSelectionChange(val){
this.selectCustomerList = val.map(i => i.id);
handleSelectionChange(val) {
this.selectCustomerList = val.map((i) => i.id)
},
handleCustomerFollowLink(row) {
this.customerFollowVisible = true
......@@ -571,33 +545,31 @@ export default {
},
/** 查询列表 */
getList() {
this.loading = true;
this.loading = true
// 处理查询参数
let params = {...this.queryParams, ...this.combinedQueryParams};
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false);
let params = { ...this.queryParams, ...this.combinedQueryParams }
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime", false)
// 执行查询
getCustomerToBeAssigned(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
getCustomerToBeAssigned(params).then((response) => {
this.list = response.data.list
this.total = response.data.total
this.loading = false
})
},
remoteMethod(val) {
this.getCustomerSelect(val);
this.getCustomerSelect(val)
},
getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then(
(res) => {
this.customerSelect = res.data.list;
}
);
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then((res) => {
this.customerSelect = res.data.list
})
},
handleSelectProductType(val) {
if (val && val.length >= 1) {
this.queryParams.productIds = []
getProductList({ typeIds: val }).then((r) => {
this.productList = r.data
});
})
} else {
this.queryParams.productIds = []
this.productList = []
......@@ -605,8 +577,8 @@ export default {
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
this.open = false
this.reset()
},
/** 表单重置 */
reset() {
......@@ -645,44 +617,44 @@ export default {
taxRate: undefined,
remarks: undefined,
arrivalConfirm: undefined,
weightUnit: undefined,
};
this.resetForm("form");
weightUnit: undefined
}
this.resetForm("form")
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
this.queryParams.pageNo = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.dateRangeCreateTime = []
this.enterOpenSeaTime = []
this.customerServiceConfirmedTime = []
this.firstDealTime = []
this.resetForm("queryForm");
this.resetForm("queryForm")
this.queryParams = {
pageNo: 1,
pageSize: 10,
};
this.weightYearly.value = "";
this.numYearly.value = "";
this.handleQuery();
pageSize: 10
}
this.weightYearly.value = ""
this.numYearly.value = ""
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push('/customer/add-edit/0')
this.$router.push("/customer/add-edit/0")
// this.reset();
// this.open = true;
// this.title = this.$t("添加客户");
},
/** 查看按钮操作 */
handleView(row) {
this.$router.push('/customer/query/' + row.id)
this.$router.push("/customer/query/" + row.id)
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$router.push('/customer/edit-distribution/' + row.id)
this.$router.push("/customer/edit-distribution/" + row.id)
// this.reset();
// const id = row.id;
// getCustomer(id).then(response => {
......@@ -693,120 +665,127 @@ export default {
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
this.$refs["form"].validate((valid) => {
if (!valid) {
// return;
}
// 修改的提交
if (this.form.id != null) {
updateCustomer(this.form).then(response => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.open = false;
this.getList();
});
return;
updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t("修改成功"))
this.open = false
this.getList()
})
return
}
// 添加的提交
createCustomer(this.form).then(response => {
this.$modal.msgSuccess(this.$t('新增成功'));
this.open = false;
this.getList();
});
});
createCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t("新增成功"))
this.open = false
this.getList()
})
})
},
/** 移交按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + row.number + this.$t('"的数据项?')).then(function() {
return deleteCustomer(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess(this.$t('删除成功'));
}).catch(() => {});
const id = row.id
this.$modal
.confirm(this.$t('是否确认删除客户编号为"') + row.number + this.$t('"的数据项?'))
.then(function () {
return deleteCustomer(id)
})
.then(() => {
this.getList()
this.$modal.msgSuccess(this.$t("删除成功"))
})
.catch(() => {})
},
//分配客服
distribution(row){
distribution(row) {
// this.service = row.customerService;
// this.transferData = row;
this.selectCustomerList = [row.id]
this.batchTransferShow =true;
this.batchTransferShow = true
},
transferFn(){
if(!this.service){
return this.$message.warning(this.$t('请选择客户经理!'));
transferFn() {
if (!this.service) {
return this.$message.warning(this.$t("请选择客户经理!"))
}
handOverCustomer({
customerServiceId:this.service,
customerIdList :[this.transferData.id]
}).then(r=>{
if(r.code === 0){
this.transferShow = false;
this.service = '';
this.getList();
this.$message.success(this.$t('移交成功!'));
customerServiceId: this.service,
customerIdList: [this.transferData.id]
}).then((r) => {
if (r.code === 0) {
this.transferShow = false
this.service = ""
this.getList()
this.$message.success(this.$t("移交成功!"))
}
})
},
/** 导出按钮操作 */
handleExport() {
this.$modal.confirm(this.$t('是否确认导出待分配客户数据项?')).then(response => {
waitDistributionExportExcel().then(()=>{
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
this.$modal
.confirm(this.$t("是否确认导出待分配客户数据项?"))
.then((response) => {
waitDistributionExportExcel().then(() => {
this.$message.success(this.$t("已加入导出队列,请稍后在下载日志中下载"))
})
})
}).catch(() => {});
.catch(() => {})
},
handleSetting(row) {
this.$refs['customerSetting'].dialogVisible = true
this.$nextTick(_ => {
this.$refs['customerSetting'].init(row.id)
this.$refs["customerSetting"].dialogVisible = true
this.$nextTick((_) => {
this.$refs["customerSetting"].init(row.id)
})
},
getBusiCountryNames(ids) {
if (ids) {
const idsArr = ids.split(',')
const idsArr = ids.split(",")
const strArr = []
this.countryList.forEach(item => {
this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn)
}
})
return strArr.length > 0 ? strArr.join(',') : null
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
}
},
getPickupPointNames(ids) {
if (ids) {
const idsArr = ids.split(',')
const idsArr = ids.split(",")
const strArr = []
this.getNodeLists.forEach(item => {
this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn)
}
})
return strArr.length > 0 ? strArr.join(',') : null
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
}
},
getProductTypeNames(ids) {
if (ids) {
const idsArr = ids.toString().split(',')
const idsArr = ids.toString().split(",")
const strArr = []
this.productTypeList.forEach(item => {
this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn)
}
})
return strArr.length > 0 ? strArr.join(',') : null
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
}
},
getPromoterName(id) {
if (id) {
let strName = ''
for(const item of this.customerSelectFn) {
let strName = ""
for (const item of this.customerSelectFn) {
if (item.id == id) {
strName = item.name
break
......@@ -821,7 +800,7 @@ export default {
changeCustomerDefaultPay({
customerIdList: this.selectCustomerList,
defaultPay: true
}).then(_ => {
}).then((_) => {
this.$message.success(this.$t("操作成功"))
this.getList()
})
......@@ -830,7 +809,7 @@ export default {
changeCustomerNoConsignee({
customerIdList: this.selectCustomerList,
noConsigee: true
}).then(_ => {
}).then((_) => {
this.$message.success(this.$t("操作成功"))
this.getList()
})
......@@ -839,23 +818,23 @@ export default {
changeCustomerDefaultBilling({
customerIdList: this.selectCustomerList,
defaultBilling: true
}).then(_ => {
}).then((_) => {
this.$message.success(this.$t("操作成功"))
this.getList()
})
},
}
},
watch:{
selectCustomerList(val){
if(val.length === 0){
watch: {
selectCustomerList(val) {
if (val.length === 0) {
this.getList()
this.$refs.multipleTable.clearSelection();
this.$refs.multipleTable.clearSelection()
}
},
}
},
computed:{
isChinese(){
return this.$i18n.locale === 'zh_CN'
computed: {
isChinese() {
return this.$i18n.locale === "zh_CN"
},
channel() {
return (val) => {
......@@ -864,20 +843,18 @@ export default {
.filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn))
.join("")
: "";
};
: ""
}
},
customerSelectFn() {
if (this.recommended.length > 0) {
let i = this.customerSelect.find(
(item) => item.id === this.recommended[0].id
);
let i = this.customerSelect.find((item) => item.id === this.recommended[0].id)
if (!i) {
this.customerSelect.push(this.recommended[0]);
this.customerSelect.push(this.recommended[0])
}
return this.customerSelect;
return this.customerSelect
} else {
return this.customerSelect;
return this.customerSelect
}
},
combinedQueryParams() {
......@@ -899,26 +876,26 @@ export default {
queryParams.endFirstDealTime = this.firstDealTime[1]
}
if (this.weightYearly.value) {
let key = 'eqWeightYearly'
if (this.weightYearly.key == 'leNumberKey') {
key = 'leWeightYearly'
} else if (this.weightYearly.key == 'geNumberKey') {
key = 'geWeightYearly'
let key = "eqWeightYearly"
if (this.weightYearly.key == "leNumberKey") {
key = "leWeightYearly"
} else if (this.weightYearly.key == "geNumberKey") {
key = "geWeightYearly"
}
queryParams[key] = this.weightYearly.value;
queryParams[key] = this.weightYearly.value
}
if (this.numYearly.value) {
let key = 'eqNumYearly'
if (this.numYearly.key == 'leNumberKey') {
key = 'leNumYearly'
} else if (this.numYearly.key == 'geNumberKey') {
key = 'geNumYearly'
let key = "eqNumYearly"
if (this.numYearly.key == "leNumberKey") {
key = "leNumYearly"
} else if (this.numYearly.key == "geNumberKey") {
key = "geNumYearly"
}
queryParams[key] = this.numYearly.value;
queryParams[key] = this.numYearly.value
}
return queryParams;
},
return queryParams
}
}
};
}
</script>
......@@ -17,16 +17,16 @@
<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-form-item>
<!-- <el-form-item :label="$t('部门')" v-if="path != '/customer/department-customers'">-->
<!-- <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-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('客户经理')" prop="customerService">-->
<!-- <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-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('部门')" v-if="path != '/customer/department-customers'">-->
<!-- <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-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('客户经理')" prop="customerService">-->
<!-- <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-select>-->
<!-- </el-form-item>-->
<el-form-item :label="$t('客户来源')" prop="source">
<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" />
......@@ -91,9 +91,9 @@
</el-select>
</el-form-item>
<el-form-item :label="$t('主要竞争对手')" v-show="showSearch">
<el-select multiple filterable clearable v-model="queryParams.competitorIds" :placeholder="$t('请选择竞争对手')" size="small" @change="handleQuery">
<el-option v-for="item in competitorList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
</el-select>
<el-select multiple filterable clearable v-model="queryParams.competitorIds" :placeholder="$t('请选择竞争对手')" size="small" @change="handleQuery">
<el-option v-for="item in competitorList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('年度发货次数')" v-show="showSearch">
<el-input v-model.trim="numYearly.value" :placeholder="$t('请输入数字')" clearable @keyup.enter.native="handleQuery" @input="numYearly.value = numYearly.value.replace(/\s+/g, '')">
......@@ -222,21 +222,21 @@
</template>
</el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column>
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">-->
<!-- <template v-slot="{ row }">-->
<!-- +{{ row.defaultContactPhone }} <br />-->
<!-- <contacts :id="row.id">-->
<!-- <el-button type="text">更多</el-button>-->
<!-- </contacts>-->
<!-- </template>-->
<!-- </el-table-column>-->
<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) }}
</template>
</el-table-column>
<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>
</template>
</el-table-column>
......@@ -373,7 +373,7 @@
<!-- 分页组件 -->
<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 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>
<transfer-customer :show.sync="show" :customer-ids.sync="selectCustomerList"></transfer-customer>
<customer-setting ref="customerSetting" @refresh="getList"></customer-setting>
......@@ -399,7 +399,7 @@ import { getNodeList } from "@/api/ecw/node"
import { getCustomerSelect, changeCustomerDefaultPay, changeCustomerNoConsignee, changeCustomerDefaultBilling } from "@/api/ecw/customer"
import { getProductTypeList } from "@/api/ecw/productType"
import { getProductList } from "@/api/ecw/product"
import CompetitorSelector from "@/components/CompetitorSelector/index.vue";
import CompetitorSelector from "@/components/CompetitorSelector/index.vue"
export default {
name: "EcwMyCustomerServiceIndex",
components: {
......
......@@ -7,7 +7,7 @@
<span style="font-size: 15px"></span>
<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: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: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>
......@@ -74,10 +74,10 @@
</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-tag v-if="list.type && list.type.indexOf('1') > -1">
<el-tag v-if="list.serviceType && list.serviceType.indexOf('1') > -1">
{{ $t("集运") }}
</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("海外仓") }}
</el-tag>
</el-descriptions-item>
......@@ -313,7 +313,7 @@
</el-descriptions-item>
</el-descriptions>
</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>
</template>
......@@ -521,14 +521,13 @@ export default {
getTradeCityList().then((res) => (this.tradeCityList = res.data))
getProductAttrList().then((res) => (this.productAttrList = res.data))
if (this.$route.query.offerId) {
this.offerId = this.$route.query.offerId
this.offerId = parseInt(this.$route.query.offerId)
this.getList()
}
},
methods: {
handleAddOffer(row) {
console.log(row)
this.curData = row
handleAddOffer() {
this.curData = this.list
this.customerFollowVisible = true
this.$nextTick(() => {
this.$refs["customerFollow"].handleAdd()
......@@ -784,4 +783,13 @@ export default {
.card {
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>
......@@ -143,7 +143,7 @@
</div>
<div class="form-section">
<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="2" v-if="routeOtherServices.indexOf('4') > -1">{{ $t("海外仓") }}</el-checkbox>
</el-checkbox-group>
......@@ -576,7 +576,8 @@ const createDefaultForm = () => {
control: false,
isCargoControl: false,
prodCreateReqVOList: [],
transportVO: {}
transportVO: {},
serviceType: []
}
}
export default {
......@@ -742,6 +743,8 @@ export default {
startTime: [{ required: true, message: this.$t("有效期开始时间不能为空") }],
endTime: [{ 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("选择出货渠道") }],
stopTime: [{ required: true, message: this.$t("不能为空") }],
relation: [{ required: true, message: this.$t("请选择所属人") }],
......@@ -1074,9 +1077,9 @@ export default {
selectedRouter(val) {
if (!val) return
;["1", "4"].forEach((service) => {
if (this.routeOtherServices.indexOf(service) < 0 && this.form.type.indexOf(service) > -1) {
this.form.type.splice(
this.form.type.findIndex((item) => item == service),
if (this.routeOtherServices.indexOf(service) < 0 && this.form.serviceType.indexOf(service == 4 ? 2 : service) > -1) {
this.form.serviceType.splice(
this.form.serviceType.findIndex((item) => item == (service == 4 ? 2 : service)),
1
)
}
......@@ -1084,10 +1087,10 @@ export default {
}
},
activated() {
if (this.form.offerId != this.$route.query.id) {
if (this.$route.query.id && this.form.offerId !== this.$route.query.id) {
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()
}
},
......@@ -1102,14 +1105,14 @@ export default {
getRegionList(4, 4).then((res) => (this.AddressCity = 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()
} else {
// alert(this.$route.query.customer.defaultContactPhone)
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) })
this.customer = res.data.find((item) => item.isDefault)
......@@ -1143,10 +1146,12 @@ export default {
},
getOffer() {
//加了是否从全部客户列表中报价按钮进来的判断
if (this.$route.query !== 1) {
if (this.$route.query.type !== 1) {
getOffer(this.$route.query.id || this.$route.query.copyId).then((res) => {
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 = []
if (formData.transportVO && formData.transportVO.packageType) {
formData.transportVO.packageTypeArr = formData.transportVO.packageType.split(",").filter((item) => item && item != "")
......@@ -1179,10 +1184,12 @@ export default {
}
if (this.$route.query.copyId) {
formData.offerId = ""
formData.offerId = null
formData.startTime = ""
formData.endTime = ""
formData.stopTime = ""
// 复制报价单状态重置为草稿
formData.status = 2
}
formData.channelId = formData.channelId || null
......@@ -1327,7 +1334,8 @@ export default {
if (this.form.offerId != null) {
let data = Object.assign({}, this.form, {
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
prodUpdateReqVOList: this.getProductListWithDefaultValue()
prodUpdateReqVOList: this.getProductListWithDefaultValue(),
serviceType: this.form.serviceType.join(",")
})
if (data.status < 3) {
data.status = status
......@@ -1343,12 +1351,14 @@ export default {
console.log(JSON.stringify(this.contactsList))
data = Object.assign({}, this.form, {
prodCreateReqVOList: this.getProductListWithDefaultValue(),
status
status,
serviceType: this.form.serviceType.join(",")
})
} else {
data = Object.assign({}, this.form, {
prodCreateReqVOList: this.getProductListWithDefaultValue(),
status
status,
serviceType: this.form.serviceType.join(",")
})
}
......
......@@ -52,10 +52,8 @@
</el-form-item>
</div>
</el-form>
</div>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
......@@ -70,7 +68,7 @@
</el-button>
</el-col>
</el-row>
<el-table ref="multipleTable" :data="customerFollowList" v-loading="loading" @selection-change="handleSelectionChange" style="width: 100%">
<el-table ref="multipleTable" :data="customerFollowList" v-loading="loading" @selection-change="handleSelectionChange" style="width: 100%">
<el-table-column type="selection" width="55" fixed></el-table-column>
<el-table-column prop="number" :label="$t('编号')" align="center" fixed>
<template slot-scope="scope">
......@@ -125,8 +123,8 @@
</el-table>
<pagination :total="customerFollowTotal" :page.sync="followForm.pageNo" :limit.sync="followForm.pageSize" @pagination="getCustomerFollowList" />
</el-card>
<customer-follow ref="customerFollow" @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 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>
</div>
</template>
......@@ -135,10 +133,10 @@ import { getCustomerFollowList, exportCustomerFollow } from "@/api/ecw/customerF
import { getDictDatas, DICT_TYPE, getDictDatas2 } from "@/utils/dict"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow"
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 {
name: "logListCommon",
components: {customerFollowUpdateStatus, UserSelector, CustomerFollow },
components: { customerFollowUpdateStatus, UserSelector, CustomerFollow },
props: ["customerId", "offerId", "customerService", "customerNumber"],
data() {
return {
......
......@@ -10,10 +10,10 @@
</el-input>
</el-form-item>
<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 :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 :label="$t('控货状态')" prop="isCargoControl">
<dict-selector v-model="queryParams.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" />
......@@ -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-form-item>-->
<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">
<dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" />
</template>
......
<template>
<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-row>
<el-col :span="6">
<el-form-item :label="$t('订单号')">
{{detail.orderNo}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('总箱数')">
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('体积')">
{{detail.sumVolume}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('重量')">
{{detail.sumWeight}}kg
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('总控货箱数')">
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('剩余放货箱数')">
{{detail.sumNum - detail.releaseNum }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('到仓日期/卸柜日期')" label-width="200px">
{{detail.unloadTime}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('放货锁定收货人到期')" label-width="200px">
{{detail.lockConsigneeTime || '-'}}
</el-form-item>
</el-col>
</el-row>
<div class="title">{{$t('请填写放货信息')}}</div>
<div class="flex">
<el-form-item :label="$t('收货人')" prop="consigneeName">
<el-input v-model="formData.consigneeName" :placeholder="$t('请输入收货人')" clearable class="w-150" ></el-input>
<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-row>
<el-col :span="6">
<el-form-item :label="$t('订单号')">
{{ detail.orderNo }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('总箱数')">
{{ detail.sumNum }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('体积')">
{{ detail.sumVolume }}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('重量')">
{{ detail.sumWeight }}kg
</el-form-item>
<el-form-item :label="$t('收货人电话')" prop="consigneePhone">
<!-- <el-input v-model="formData.field109" :placeholder="$t('区号')" clearable class="w-150"></el-input> -->
<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-col>
<el-col :span="6">
<el-form-item :label="$t('总控货箱数')">
{{ detail.sumNum }}
</el-form-item>
<el-form-item :label="$t('收货人邮箱')" prop="consigneeEmail">
<el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable class="w-150" ></el-input>
</el-col>
<el-col :span="6">
<el-form-item :label="$t('剩余放货箱数')">
{{ detail.sumNum - detail.releaseNum }}
</el-form-item>
</div>
<el-table :data="[formData]" border class="release-table">
<el-table-column :label="$t('控货箱数')">
{{detail.sumNum - detail.releaseNum }}
</el-table-column>
<el-table-column :label="$t('放货箱数')">
<template slot-scope="{row}">
<el-form-item prop="pickNum" label-width="0" class="mb-0">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('体积') + '(m³)'">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('重量') + '(kg)'">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('备注')">
<template slot-scope="{row}">
<el-input v-model="row.remarks" placeholder="" clearable></el-input>
</template>
</el-table-column>
</el-table>
<el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px">
<el-input :value="'+' + detail.dialCode + detail.phone" readonly :placeholder="$t('请输入控货手机号')" >
</el-input>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :label="$t('到仓日期/卸柜日期')" label-width="200px">
{{ detail.unloadTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('放货锁定收货人到期')" label-width="200px">
{{ detail.lockConsigneeTime || '-' }}
</el-form-item>
</el-col>
</el-row>
<div class="title">{{ $t('请填写放货信息') }}</div>
<div class="flex">
<el-form-item :label="$t('收货人')" prop="consigneeName">
<el-input v-model="formData.consigneeName" :placeholder="$t('请输入收货人')" clearable
class="w-150"></el-input>
</el-form-item>
<el-form-item :label="$t('手机验证码')" prop="code">
<el-input v-model="formData.code" :placeholder="$t('请输入手机验证码')" clearable class="w-150 mr-10"></el-input>
<!-- <el-button type="success">{{ $t('获取验证码') }}</el-button> -->
<send-sms-code :order-id="detail.orderId" scene="5" />
<el-form-item :label="$t('收货人电话')" prop="consigneePhone">
<!-- <el-input v-model="formData.field109" :placeholder="$t('区号')" clearable class="w-150"></el-input> -->
<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-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">{{$t('确认提货')}}</el-button>
<el-button type="default" @click="closeDialog">{{$t('关闭')}}</el-button>
<el-form-item :label="$t('收货人邮箱')" prop="consigneeEmail">
<el-input v-model="formData.consigneeEmail" :placeholder="$t('请输入收货人邮箱')" clearable
class="w-150"></el-input>
</el-form-item>
</el-form>
</div>
<el-table :data="[formData]" border class="release-table">
<el-table-column :label="$t('控货箱数')">
{{ detail.sumNum - detail.releaseNum }}
</el-table-column>
<el-table-column :label="$t('放货箱数')">
<template slot-scope="{row}">
<el-form-item prop="pickNum" label-width="0" class="mb-0">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('体积') + '(m³)'">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('重量') + '(kg)'">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column :label="$t('备注')">
<template slot-scope="{row}">
<el-input v-model="row.remarks" placeholder="" clearable></el-input>
</template>
</el-table-column>
</el-table>
<el-form-item :label="$t('控货手机号')" prop="field117" style="margin-top:20px">
<el-input :value="'+' + detail.dialCode + detail.phone" readonly :placeholder="$t('请输入控货手机号')">
</el-input>
</el-form-item>
<el-form-item :label="$t('手机验证码')" prop="code">
<el-input v-model="formData.code" :placeholder="$t('请输入手机验证码')" clearable
class="w-150 mr-10"></el-input>
<!-- <el-button type="success">{{ $t('获取验证码') }}</el-button> -->
<send-sms-code :order-id="detail.orderId" scene="5"/>
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">{{ $t('确认提货') }}</el-button>
<el-button type="default" @click="closeDialog">{{ $t('关闭') }}</el-button>
</el-form-item>
</el-form>
<div v-else>
<!-- <release-agreement /> -->
<need-know ref="needKnow" keyname="control" />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">{{$t('我同意')}}</el-button>
<!-- <el-button type="primary" @click="$refs.needKnow.download()">{{ $t('保存协议') }}</el-button> -->
<el-button @click="closeDialog">{{$t('关闭')}}</el-button>
</div>
<div v-else>
<!-- <release-agreement /> -->
<need-know ref="needKnow" keyname="control"/>
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">{{ $t('我同意') }}</el-button>
<!-- <el-button type="primary" @click="$refs.needKnow.download()">{{ $t('保存协议') }}</el-button> -->
<el-button @click="closeDialog">{{ $t('关闭') }}</el-button>
</div>
</el-dialog>
</div>
</el-dialog>
</template>
<script>
import {getOrder} from '@/api/ecw/order'
......@@ -119,102 +123,105 @@ import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import NeedKnow from '@/components/NeedKnow'
import Decimal from 'decimal.js'
export default {
props:{
orderId: [String, Number]
},
components: {AreaCodeSelector, SendSmsCode, NeedKnow},
data(){
return {
show: false,
detail: null,
formData:{
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
},
agreement: false, // 是否同意协议
props: {
orderId: [String, Number]
},
components: {AreaCodeSelector, SendSmsCode, NeedKnow},
data() {
return {
show: false,
detail: null,
formData: {
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
},
agreement: false, // 是否同意协议
}
},
watch: {
'formData.pickNum'(pickNum) {
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))
}
},
computed: {
rules() {
return {
consigneeName: {required: true, message: this.$t('请填写收货人')},
code: {required: true, message: this.$t('请填写验证码')},
pickNum: {
type: 'number',
max: this.detail.sumNum - this.detail.releaseNum,
message: this.$t("不能超过剩余箱数"),
trigger: 'change'
}
},
watch:{
'formData.pickNum'(pickNum){
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))
}
},
computed:{
rules(){
return {
consigneeName: {required: true, message: this.$t('请填写收货人')},
code: {required: true, message: this.$t('请填写验证码')},
pickNum: {
type: 'number',
max: this.detail.sumNum - this.detail.releaseNum,
message: this.$t("不能超过剩余箱数"),
trigger: 'change'
}
}
},
title(){
let t = this.$t('放货')
if(this.detail){
t += '-' + this.detail.orderNo
}
return t
}
title() {
let t = this.$t('放货')
if (this.detail) {
t += '-' + this.detail.orderNo
}
return t
}
},
created() {
this.show = true
this.loadData()
},
methods: {
loadData() {
getReleaseInfo(this.orderId).then(res => {
this.detail = res.data
this.$set(this.formData, 'consigneeName', res.data.consigneeName)
this.$set(this.formData, 'consigneeCountryCode', res.data.consigneeCountryCode ? ('+' + res.data.consigneeCountryCode) : null)
this.$set(this.formData, 'consigneePhone', res.data.consigneePhone)
this.$set(this.formData, 'consigneeEmail', res.data.consigneeEmail)
})
},
created(){
this.show = true
this.loadData()
closeDialog() {
this.show = false
this.$emit('close')
},
methods:{
loadData(){
getReleaseInfo(this.orderId).then(res => {
this.detail = res.data
this.$set(this.formData, 'consigneeName', res.data.consigneeName)
this.$set(this.formData, 'consigneeCountryCode', '+' + res.data.consigneeCountryCode)
this.$set(this.formData, 'consigneePhone', res.data.consigneePhone)
this.$set(this.formData, 'consigneeEmail', res.data.consigneeEmail)
})
},
closeDialog(){
submit() {
this.$refs.form.validate(valid => {
if (!valid) {
return false
}
createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => {
this.$message.success(res.msg || this.$t('操作成功'))
this.show = false
this.$emit('close')
},
submit(){
this.$refs.form.validate(valid => {
if(!valid){
return false
}
createPick(Object.assign({orderId: this.orderId}, this.formData)).then(res => {
this.$message.success(res.msg || this.$t('操作成功'))
this.show = false
this.$emit('success')
})
})
this.$emit('success')
})
})
}
}
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
.title {
font-size: 16px;
margin: 20px 0;
display: flex;
align-items: center;
&:before {
content: '';
width:5px;
width: 5px;
height: 15px;
background:#666;
margin-right:10px;
background: #666;
margin-right: 10px;
}
}
::v-deep .release-table .el-form-item__error{
position: static;
::v-deep .release-table .el-form-item__error {
position: static;
}
</style>
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -31,7 +31,6 @@
:placeholder="$t('发货人')"
clearable
@keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consignorText')"
/>
</el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeText">
......@@ -40,7 +39,6 @@
:placeholder="$t('收货人')"
clearable
@keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consigneeText')"
/>
</el-form-item>
<el-form-item :label="$t('运输方式') + ':'" v-show="showSearch">
......@@ -211,7 +209,7 @@
v-model="queryParams.goodsNameKey"
/>
<product-selector
v-model="queryParams.goodsName"
v-model.trim="queryParams.goodsName"
style="flex: 1"
:clearable="true"
@keyup.enter.native="handleQuery"
......
......@@ -33,7 +33,7 @@
>
<el-form-item>
<el-button
:disabled="!!processInstanceId || editMode"
:disabled="!!processInstanceId "
@click="addCost"
>{{ $t("添加申请") }}
</el-button
......@@ -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="modifable(scope.$index)"
v-if="scope.row.id && modifable(scope.row)"
@click="modify(scope.row)"
>{{ $t("修改") }}
</el-button
......@@ -225,7 +225,8 @@ export default {
return this.$i18n.locale === "zh_CN";
},
feeList() {
return this.list.filter((item) => item.status === 0);
// return this.list.filter((item) => item.status === 0);
return this.list;
},
// 正在编辑的费用申请
currentItem() {
......@@ -236,13 +237,13 @@ export default {
return !!this.currentItem;
},
modifable() {
return (index) => {
return (item) => {
// 审核中不允许修改
if (this.processInstanceId) return false;
// 有未提交的不允许修改
if (this.feeList.length) return false;
// 修改中的不允许修改
if (this.list.findIndex((item) => item.editMode) > -1) return false;
// if (this.feeList.length) return false;
// 修改中的不允许修改
if (item.editMode) return false;
return true;
}
}
......@@ -263,7 +264,7 @@ export default {
// 查询是否有审核中的费用申请
getFeeApplicationApproveByOrderId(this.orderId).then((res) => {
if (res.data.formId) {
if (res.data) {
this.processInstanceId = res.data.formId;
/*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data
......@@ -306,10 +307,11 @@ export default {
},
submit() {
// 判断费用申请是否有未填项
// console.log("提交的费用信息列表", this.feeList)
const errList = this.feeList.filter((item) => {
return (
!item["feeType"] ||
!item["applicationFee"] ||
item.applicationFee == null || item.applicationFee == undefined ||
!item["applicationFeeCurrency"] ||
!item["payType"]
);
......@@ -317,18 +319,18 @@ export default {
if (errList.length) {
return this.$message.error("请填写完整费用申请信息");
}
if (this.editMode) {
// 要提交status=1,否则保持原状态
const data = {
...this.currentItem,
status: 1,
copyUserId: this.selectedUsers,
};
return applicationUpdate(data).then((r) => {
this.$message.success(this.$t("修改成功"));
this.$emit("update:dialogVisible", false);
});
}
// if (this.editMode) {
// // 要提交status=1,否则保持原状态
// const data = {
// ...this.currentItem,
// status: 1,
// copyUserId: this.selectedUsers,
// };
// return applicationUpdate(data).then((r) => {
// this.$message.success(this.$t("修改成功"));
// this.$emit("update:dialogVisible", false);
// });
// }
feeApplicationCreateBatch({
orderFeeApplicationCreateReqVOList: this.feeList,
......@@ -339,6 +341,7 @@ export default {
this.$emit("update:dialogVisible", false);
this.$message.success(this.$t("添加成功"));
this.selectedUsers = [];
this.$emit("refresh")
}
});
},
......
......@@ -13,10 +13,10 @@
</el-form-item> -->
<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 :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 :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
......@@ -63,7 +63,7 @@
</el-form-item> -->
<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">
<dict-selector :type="DICT_TYPE.ORDER_QUERY_PROD_FIELD" defaultable v-model="prodParam.key" class="w-50" />
</template>
......@@ -289,7 +289,7 @@
<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="consigneeFollowCustomerService" />
<el-table-column :label="$t('到仓箱数/方数重量')" align="center" prop="status">
<el-table-column :label="$t('到仓箱数/方数/重量')" align="center" prop="status">
<template slot-scope="{ row }">
{{ row.checkNum }}{{ $t("") }} / {{ row.checkVolume }}m³ /{{ row.checkWeight }}Kg
</template>
......@@ -449,10 +449,28 @@
</el-dropdown-menu>
</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-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-dropdown-menu slot="dropdown">
<!-- 入仓操作 -->
......@@ -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>
</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])">
<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
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 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])">
<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
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>
<!-- 退仓 -->
......@@ -589,7 +661,7 @@
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose" />
<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>
<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" />
<pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo = null" @delete="getList" />
<SplitRevoke
......
......@@ -4,14 +4,14 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
<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 :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 :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 :label="$t('客户经理')" >
<user-selector manage v-model="queryParams.salesmanIds" multiple clearable @change="handleQuery"
......@@ -89,7 +89,7 @@
</el-form-item>
<el-form-item :label="$t('商品')" prop="tidanNo" v-show="showSearch">
<el-input v-model.trim="queryParams.prodKey" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery" />
<el-input v-model.trim="queryParams.prodKey" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<!--根据需求文档 lanbm 2024-06-23 隐藏-->
......@@ -685,6 +685,10 @@ export default {
this.AddressTown = data;
})
}
},
// 自动去除空格
replaceSpace(obj, field) {
obj[field] = obj[field].replace(/\s+/g, "")
}
}
};
......
......@@ -19,7 +19,6 @@
:placeholder="$t('发货人')"
clearable
@keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consignorKey')"
/>
</el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey">
......@@ -28,7 +27,6 @@
:placeholder="$t('收货人')"
clearable
@keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'consigneeKey')"
/>
</el-form-item>
<el-form-item :label="$t('客户经理')">
......@@ -115,7 +113,6 @@
:placeholder="$t('请输入商品类型、品名或品牌')"
clearable
@keyup.enter.native="handleQuery"
@input="replaceSpace(queryParams, 'prodKey')"
/>
</el-form-item>
......
......@@ -407,9 +407,9 @@
</el-tab-pane>
</el-tabs>
<div v-if="edit && order.status !== 3">
<h2>{{ $t("审批流程") }}</h2>
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
<div v-if="(edit && order.status !== 3) || isShipment">
<h2>{{ $t('审批流程') }}</h2>
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
<!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div>
......@@ -471,6 +471,7 @@ import { getProductTypeList } from "@/api/ecw/productType"
import { addProduct } from "@/api/ecw/product"
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue"
import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue"
import { appendApplyWhenShipment, updateApplyWhenShipment } from '@/api/ecw/warehouse'
export default {
name: "Warehouse",
......@@ -520,6 +521,10 @@ export default {
orderWarehouseInBackItemDoList: []
}
}
},
isShipment:{
type: Boolean,
default: false
}
},
......@@ -803,7 +808,9 @@ export default {
return
}
this.submitting = true
return orderWarehouseIn({
const func = this.isShipment ? appendApplyWhenShipment : orderWarehouseIn
console.log("提交追加", this.isShipment, func)
return func({
...this.form1,
brandType: this.warehousing.brandType,
orderId: this.warehousing.orderId,
......@@ -849,7 +856,8 @@ export default {
if (this.edit) {
// 入仓修改
this.submitting = true
return orderWarehouseInUpdateApply({
const func = this.isShipment ? updateApplyWhenShipment : orderWarehouseInUpdateApply
return func({
...this.form,
brandType: this.warehousing.brandType,
orderId: this.warehousing.orderId,
......@@ -873,7 +881,7 @@ export default {
.then((r) => {
this.submitting = false
if (r.data) {
this.$message.success(r.msg || "入仓修改发起成功")
this.$message.success(this.$t("入仓修改发起成功"))
this.handleClose()
} else {
this.$message.success(r.msg || "入仓修改发起失败")
......@@ -885,7 +893,8 @@ export default {
} else {
// 首次入仓、入仓补充
this.submitting = true
return orderWarehouseIn({
const func = this.isShipment ? appendApplyWhenShipment : orderWarehouseIn
return func({
...this.form,
brandType: this.warehousing.brandType,
orderId: this.warehousing.orderId,
......@@ -905,7 +914,7 @@ export default {
.then((r) => {
this.submitting = false
if (r.data) {
this.$message.success("入仓成功")
this.$message.success(this.isShipment ? this.$t('入仓追加已提交审批') : this.$t("入仓成功"))
this.handleClose()
} else {
this.$message.success("入仓失败")
......
......@@ -103,6 +103,7 @@
:order-item-b="orderItemList[$index]"
:title="$t('修改')"
:order="order"
:is-shipment="isShipment"
@close="getList"
></warehouse>
<template
......@@ -120,9 +121,11 @@
:order-item-b="orderItemList[$index]"
:title="$t('追加')"
:order="order"
:is-shipment="isShipment"
@close="getList"
></warehouse>
<el-button
v-if="!isShipment"
size="mini"
type="text"
@click="handleWarehousingReturn(row)"
......@@ -254,7 +257,7 @@
</el-card>
<div
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">{{
$t("转异")
......@@ -696,6 +699,9 @@ export default {
warehouseId() {
return this.order?.logisticsInfoDto?.startWarehouseId;
},
isShipment(){
return this.$route.query?.shipment==1
}
},
};
</script>
......
......@@ -3,14 +3,14 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<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 :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 :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 :label="$t('控货状态')" prop="isCargoControl">
<dict-selector v-model="queryParams.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" />
......@@ -46,7 +46,7 @@
</el-form-item>
<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 :label="$t('订单状态')" prop="statusList" v-show="showSearch">
......@@ -351,7 +351,10 @@ export default {
this.loading = false
})
},
// 自动去除空格
replaceSpace(obj, field) {
obj[field] = obj[field].replace(/\s+/g, "")
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.page = 1
......
......@@ -921,7 +921,7 @@ export default {
cityList: [],
serviceGroup: [
{ id: "1", text: this.$t("集运服务") },
{ id: "1", 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