Commit 8c4737f5 authored by 我在何方's avatar 我在何方
parents 46f81137 92740aec
...@@ -70,7 +70,7 @@ export function getCustomerList(query) { ...@@ -70,7 +70,7 @@ export function getCustomerList(query) {
}) })
} }
// 导出客户 Excel // 导出客户 Excel 全部
export function exportCustomerExcel(query) { export function exportCustomerExcel(query) {
return request({ return request({
url: '/ecw/customer/export-excel', url: '/ecw/customer/export-excel',
...@@ -79,7 +79,55 @@ export function exportCustomerExcel(query) { ...@@ -79,7 +79,55 @@ export function exportCustomerExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 我的客户导出
export function mineExporteExcel(query) {
return request({
url: '/ecw/customer/mine-export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 我的待接收客户列表导出
export function waiteConfirmExportExcel(query) {
return request({
url: '/ecw/customer/waite-confirm-export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
/**
* // 待分配客户列表导出
* @param query
* @return {*}
*/
export function waitDistributionExportExcel(query) {
return request({
url: '/ecw/customer/wait-distribution-export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 公海池客户列表导出
export function publicExportExcel(query) {
return request({
url: '/ecw/customer/public-export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
export function indirectCustomerExportExcel(query) {
return request({
url: '/ecw/indirect-customer/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 待接收客户列表 // 待接收客户列表
export function getWaitForConfirmList(query) { export function getWaitForConfirmList(query) {
return request({ return request({
......
...@@ -48,6 +48,7 @@ export function exportProductPriceExcel(query) { ...@@ -48,6 +48,7 @@ export function exportProductPriceExcel(query) {
return request({ return request({
url: '/ecw/product-price/export-excel', url: '/ecw/product-price/export-excel',
method: 'get', method: 'get',
timeout: 3*60*1000,
params: query, params: query,
responseType: 'blob' responseType: 'blob'
}) })
......
...@@ -30,14 +30,14 @@ ...@@ -30,14 +30,14 @@
{{scope.row.isCargoControl ? '' : '' }} {{scope.row.isCargoControl ? '' : '' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('计划箱数')" align="center" prop="loadNum"> <el-table-column :label="$t('计划箱数')" align="center" prop="num">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.loadNum }}{{$t('')}} {{ scope.row.num }}{{$t('')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('实装箱数')" align="center" prop="num"> <el-table-column :label="$t('实装箱数')" align="center" prop="loadNum">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.num }}{{$t('')}} {{ scope.row.loadNum }}{{$t('')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('提货点')" align="center" prop="destWarehouse" /> <el-table-column :label="$t('提货点')" align="center" prop="destWarehouse" />
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
<template v-if="scope.row.status === 3"> <template v-if="scope.row.status === 3">
{{$t('审核拒绝')}} {{$t('审核拒绝')}}
<el-button type="text" size="small" @click="handleCommand('queryBill',scope.row)">{{$t('重新制作')}}</el-button> <el-button type="text" size="small" @click="handleCommand('queryBill',scope.row)">{{$t('重新制作')}}</el-button>
<el-button type="text" size="small" @click="handleCommand('resetBill',scope.row)" style="color:#333333">{{$t('重置')}}</el-button>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<a href="javascript:void(0)" @click="jumpOrderDetail(scope.row)">{{ scope.row.orderNo }}</a> <a href="javascript:void(0)" @click="jumpOrderDetail(scope.row)">{{ scope.row.orderNo }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="goodsList" :label="$t('货物信息')" width="250px" align="center"> <el-table-column prop="goodsList" :label="$t('货物信息')" width="230px" align="center">
<template v-slot="{row}"> <template v-slot="{row}">
<section> <section>
<div v-for="(item, index) in row.goodsList" :key="index"> <div v-for="(item, index) in row.goodsList" :key="index">
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="customsFee" :label="$t('报关费用')" align="center"></el-table-column> <el-table-column prop="customsFee" :label="$t('报关费用')" align="center"></el-table-column>
<el-table-column prop="" :label="$t('操作')" align="center"> <el-table-column prop="" :label="$t('操作')" align="center" width="120px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="small" :disabled="scope.row.abnormalDealStatus === 1" @click="()=>updateStatus('single', scope.row)">{{$t('更新状态')}}</el-button> <el-button type="primary" size="small" :disabled="scope.row.abnormalDealStatus === 1" @click="()=>updateStatus('single', scope.row)">{{$t('更新状态')}}</el-button>
</template> </template>
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="billAbnId" :label="$t('异常')" align="center"> <el-table-column prop="billAbnId" :label="$t('异常')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_TICKET_EXCEPTION" :value="scope.row.opStep" /> <dict-tag :type="DICT_TYPE.BOX_SHIPPING_TICKET_EXCEPTION" :value="scope.row.billAbnId" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="abnDetail" :label="$t('异常描述')" align="center" width="700"></el-table-column> <el-table-column prop="abnDetail" :label="$t('异常描述')" align="center" width="700"></el-table-column>
...@@ -363,17 +363,17 @@ export default { ...@@ -363,17 +363,17 @@ export default {
getErrorType() { getErrorType() {
for (const [key, value] of Object.entries(this.shipmentObj)) { for (const [key, value] of Object.entries(this.shipmentObj)) {
// 报关异常 customsInfo // 报关异常 customsInfo
if (key === "customsInfo" && value.hasAbnormal) { if (key === "customsInfo" && value && value.hasAbnormal) {
this.$set(this.errorInfo, "errorType", "customs"); this.$set(this.errorInfo, "errorType", "customs");
this.$set(this.dialogConfig, "title", this.$t("更新报关异常状态")); this.$set(this.dialogConfig, "title", this.$t("更新报关异常状态"));
} }
// 起运异常 shippingInfo // 起运异常 shippingInfo
if (key === "shippingInfo" && value.hasAbnormal) { if (key === "shippingInfo" && value && value.hasAbnormal) {
this.$set(this.errorInfo, "errorType", "shipping"); this.$set(this.errorInfo, "errorType", "shipping");
this.$set(this.dialogConfig, "title", this.$t("更新起运异常状态")); this.$set(this.dialogConfig, "title", this.$t("更新起运异常状态"));
} }
// 到港异常 arrivalInfo // 到港异常 arrivalInfo
if (key === "arrivalInfo" && value.hasAbnormal) { if (key === "arrivalInfo" && value && value.hasAbnormal) {
this.$set(this.errorInfo, "errorType", "arrival"); this.$set(this.errorInfo, "errorType", "arrival");
this.$set(this.dialogConfig, "title", this.$t("更新到港异常状态")); this.$set(this.dialogConfig, "title", this.$t("更新到港异常状态"));
} }
...@@ -605,13 +605,11 @@ export default { ...@@ -605,13 +605,11 @@ export default {
getBoxSum() { getBoxSum() {
return (boxStatistics) => { return (boxStatistics) => {
if (boxStatistics) { if (boxStatistics) {
return this.$t("{num}箱 {volum}m³", { return this.$t("{num}箱 {volume}m³ {weight}kg", {
num: boxStatistics.num ?? 0, num: boxStatistics.num ?? 0,
volume: boxStatistics.weight ?? 0, volume: boxStatistics.volume ?? 0,
weight: boxStatistics.weight ?? 0,
}); });
/* `${boxStatistics.num ?? 0} ${boxStatistics.volume ?? 0}m3 ${
boxStatistics.weight ?? 0
}kg`; */
} }
return; return;
}; };
......
...@@ -53,9 +53,8 @@ ...@@ -53,9 +53,8 @@
<section class="table-goodList"> <section class="table-goodList">
<div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div"> <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
<p>{{$t('品名')}}{{item.prodTitleZh}}</p> <p>{{$t('品名')}}{{item.prodTitleZh}}</p>
<p>{{$t('品牌')}}:【 <p>{{$t('品牌')}}:【<template v-if="item.brandName">{{item.brandName}}</template>
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" /> <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="item.feeType" />
</p> </p>
<p>{{$t('其他')}}:{{getTotlContent(item)}}</p> <p>{{$t('其他')}}:{{getTotlContent(item)}}</p>
</div> </div>
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CUSTOMS_TYPE)" :key="type.value" :label="type.label" :value="type.value"></el-option> <el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CUSTOMS_TYPE)" :key="type.value" :label="type.label" :value="type.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('正常报关订单')"> <el-form-item :label="$t('正常报关订单')" v-show="isShowNormal">
<div v-for="item in normalOrderList" :key="item.orderId"> <div v-for="item in normalOrderList" :key="item.orderId">
<a href="javascript:void(0)" @click="jumpOrderDetail(item)">{{ item.orderNo }}</a> <a href="javascript:void(0)" @click="jumpOrderDetail(item)">{{ item.orderNo }}</a>
</div> </div>
...@@ -231,6 +231,7 @@ export default { ...@@ -231,6 +231,7 @@ export default {
)[0].value, )[0].value,
isDownload: false, isDownload: false,
normalOrderList: [], normalOrderList: [],
isShowNormal: false,
}; };
}, },
created() { created() {
...@@ -240,6 +241,7 @@ export default { ...@@ -240,6 +241,7 @@ export default {
...this.shipmentObj[voName], ...this.shipmentObj[voName],
documentInfo: this.shipmentObj.documentInfo?.split(",") ?? [], documentInfo: this.shipmentObj.documentInfo?.split(",") ?? [],
}; };
console.log(oldData)
if (!this.shipmentObj[voName]) { if (!this.shipmentObj[voName]) {
oldData.dcCustomsType = oldData.dcCustomsType oldData.dcCustomsType = oldData.dcCustomsType
...@@ -260,7 +262,6 @@ export default { ...@@ -260,7 +262,6 @@ export default {
]); ]);
this.cusDeclarationObj = oldData; this.cusDeclarationObj = oldData;
// this.getCustomsOrderList(oldData.dcCustomsType);
}, },
methods: { methods: {
getCustomsOrderList(dcCustomsType) { getCustomsOrderList(dcCustomsType) {
...@@ -269,6 +270,11 @@ export default { ...@@ -269,6 +270,11 @@ export default {
customsTypes: dcCustomsType === "3" ? "2,3" : dcCustomsType, customsTypes: dcCustomsType === "3" ? "2,3" : dcCustomsType,
}).then((res) => { }).then((res) => {
this.normalOrderList = res.data ?? []; this.normalOrderList = res.data ?? [];
if (dcCustomsType === "1") {
this.isShowNormal = false;
} else {
this.isShowNormal = true;
}
}); });
}, },
regCloseDialog(type) { regCloseDialog(type) {
...@@ -520,12 +526,9 @@ export default { ...@@ -520,12 +526,9 @@ export default {
}, },
/* 判断查验选择是否禁用 */ /* 判断查验选择是否禁用 */
disabledRadio(item) { disabledRadio(item) {
const { const { checkExamineStatus, checkDealStatus, customsInfo } =
checkExamineStatus, this.shipmentObj;
checkDealStatus, const { dcCheckStatus } = customsInfo ?? {}; // 部分退场状态并且审核通过,退场不可选择
customsInfo,
} = this.shipmentObj;
const { dcCheckStatus } = customsInfo ?? {}; // 部分退场状态并且审核通过,退场不可选择
if ( if (
checkExamineStatus === 2 && checkExamineStatus === 2 &&
dcCheckStatus === 2 && dcCheckStatus === 2 &&
...@@ -562,7 +565,7 @@ export default { ...@@ -562,7 +565,7 @@ export default {
"cusDeclarationObj.dcCustomsStatus"(val) { "cusDeclarationObj.dcCustomsStatus"(val) {
if (val !== "3") { if (val !== "3") {
this.$set(this.cusDeclarationObj, "dcCheckStatus", ""); this.$set(this.cusDeclarationObj, "dcCheckStatus", "");
this.$set(this.cusDeclarationObj, "dcPassTime", ""); // this.$set(this.cusDeclarationObj, "dcPassTime", "");
} else { } else {
const { customsInfo } = this.shipmentObj; const { customsInfo } = this.shipmentObj;
this.$set( this.$set(
...@@ -604,11 +607,8 @@ export default { ...@@ -604,11 +607,8 @@ export default {
computed: { computed: {
/* 获取报关审核退场状态文字 */ /* 获取报关审核退场状态文字 */
getCheckExamineStatus() { getCheckExamineStatus() {
const { const { checkExamineStatus, checkDealStatus, customsInfo } =
checkExamineStatus, this.shipmentObj;
checkDealStatus,
customsInfo,
} = this.shipmentObj;
const { dcCheckStatus } = customsInfo ?? {}; const { dcCheckStatus } = customsInfo ?? {};
if (checkExamineStatus === 1) { if (checkExamineStatus === 1) {
return dcCheckStatus === 1 return dcCheckStatus === 1
...@@ -625,11 +625,8 @@ export default { ...@@ -625,11 +625,8 @@ export default {
/* 判断是否已处理 */ /* 判断是否已处理 */
isCheckDeal() { isCheckDeal() {
return (type) => { return (type) => {
const { const { checkExamineStatus, checkDealStatus, customsInfo } =
checkExamineStatus, this.shipmentObj;
checkDealStatus,
customsInfo,
} = this.shipmentObj;
const { dcCheckStatus } = customsInfo ?? {}; const { dcCheckStatus } = customsInfo ?? {};
// 状态 // 状态
......
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
<el-option v-for="item in declarationMethodOps" :label="item.label" :value="item.value" :key="item.value"></el-option> <el-option v-for="item in declarationMethodOps" :label="item.label" :value="item.value" :key="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('订单号')" prop="toBePreOrderNo"> <el-form-item :label="$t('待预装订单')" prop="toBePreOrderNo">
<el-input v-model="queryParams.toBePreOrderNo" :placeholder="$t('请输入订单号码')" clearable /> <el-input v-model="queryParams.toBePreOrderNo" :placeholder="$t('请输入待预装订单')" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('已预装单号')" prop="preOrderNo"> <el-form-item :label="$t('已预装单号')" prop="preOrderNo">
<el-input v-model="queryParams.preOrderNo" :placeholder="$t('请输入已预装单号')" clearable /> <el-input v-model="queryParams.preOrderNo" :placeholder="$t('请输入已预装单号')" clearable />
...@@ -153,8 +153,9 @@ ...@@ -153,8 +153,9 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100"> <el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100">
<template slot-scope="scope"> <template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" :value="scope.row.productRecord" /> <template v-if="row.brandName">{{row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right"> <el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right">
...@@ -236,9 +237,10 @@ ...@@ -236,9 +237,10 @@
<el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries"> <el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries">
<el-table-column type="index" align="center" :label="$t('序号')" width="50" /> <el-table-column type="index" align="center" :label="$t('序号')" width="50" />
<el-table-column :label="$t('品名')" align="center" prop="prodTitleZh" /> <el-table-column :label="$t('品名')" align="center" prop="prodTitleZh" />
<el-table-column :label="$t('备案')" align="center" prop="brandType"> <el-table-column :label="$t('备案')" align="center" prop="feeType">
<template slot-scope="scope"> <template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" :value="scope.row.brandType" /> <template v-if="row.brandName">{{row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('箱数')" align="center" prop="num" /> <el-table-column :label="$t('箱数')" align="center" prop="num" />
......
...@@ -41,8 +41,9 @@ ...@@ -41,8 +41,9 @@
<el-table-column :label="$t('商品信息')" width="250px" align="center" prop="prodTitleZh"> <el-table-column :label="$t('商品信息')" width="250px" align="center" prop="prodTitleZh">
</el-table-column> </el-table-column>
<el-table-column :label="$t('备案')" align="center" prop="feeType"> <el-table-column :label="$t('备案')" align="center" prop="feeType">
<template v-slot="{row}"> <template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" /> <template v-if="row.brandName">{{row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('报关方式')" align="center" prop="customsType"> <el-table-column :label="$t('报关方式')" align="center" prop="customsType">
......
...@@ -34,11 +34,14 @@ ...@@ -34,11 +34,14 @@
{{ scope.row.orderNo }} {{ scope.row.orderNo }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('商品信息')" align="center" prop="goodsList"> <el-table-column :label="$t('商品信息')" align="center" prop="goodsList" width="200px">
<template slot-scope="scope"> <template slot-scope="scope">
<section class="table-goodList"> <section class="table-goodList">
<div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div"> <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
<p>{{index+1}}{{$l(item, 'prodTitle')}}</p> <p>{{$t('品名')}}{{item.prodTitleZh}}</p>
<p>{{$t('品牌')}}:【<template v-if="item.brandName">{{item.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="item.feeType" />
</p>
</div> </div>
</section> </section>
</template> </template>
...@@ -392,15 +395,17 @@ export default { ...@@ -392,15 +395,17 @@ export default {
.table-area { .table-area {
.table-goodList { .table-goodList {
.goodList-div { .goodList-div {
border-bottom: 1px solid #e6ebf5;
> p { > p {
text-align: left; text-align: left;
}
> p:last-child {
> span { > span {
margin-right: 5px; margin-right: 0px;
} }
} }
} }
> div:last-child {
border-bottom: none;
}
} }
} }
} }
......
...@@ -509,7 +509,7 @@ export default { ...@@ -509,7 +509,7 @@ export default {
currencyId = this.currencyList[0].id currencyId = this.currencyList[0].id
} }
this.$set(item, 'reduceCurrencyId', currencyId) this.$set(item, 'reduceCurrencyId', currencyId)
} }else this.$set(item, 'reduceCurrencyDisabled', false)
return return
} }
......
...@@ -446,7 +446,7 @@ export default { ...@@ -446,7 +446,7 @@ export default {
CustomerLineTable, CustomerLineTable,
MemberSelector MemberSelector
}, },
created() { created() {
this.isCustomerServiceConfirmed = this.$route.query.isCustomerServiceConfirmed ? true : false this.isCustomerServiceConfirmed = this.$route.query.isCustomerServiceConfirmed ? true : false
this.getCustomerSelect() this.getCustomerSelect()
this.reset() this.reset()
...@@ -479,7 +479,6 @@ export default { ...@@ -479,7 +479,6 @@ export default {
// 获取重泡货路线 // 获取重泡货路线
getCustomerLines(this.customerId).then(res => { getCustomerLines(this.customerId).then(res => {
console.log({getCustomerLines: res})
this.zhongLines = res.data.filter(item => item.zhongPaoType == 1) this.zhongLines = res.data.filter(item => item.zhongPaoType == 1)
this.paoLines = res.data.filter(item => item.zhongPaoType == 2) this.paoLines = res.data.filter(item => item.zhongPaoType == 2)
if(this.zhongLines.length)this.showZhong1 = true if(this.zhongLines.length)this.showZhong1 = true
...@@ -489,6 +488,7 @@ export default { ...@@ -489,6 +488,7 @@ export default {
}) })
}) })
} else { } else {
this.getZhongPao()
// 新建客户 // 新建客户
this.handleAddContact() this.handleAddContact()
if(this.isCustomerServiceConfirmed){ if(this.isCustomerServiceConfirmed){
...@@ -517,7 +517,6 @@ export default { ...@@ -517,7 +517,6 @@ export default {
getCountryListAll().then(r => { getCountryListAll().then(r => {
this.countryList = r.data this.countryList = r.data
}) })
this.getZhongPao()
}, },
data(){ data(){
return { return {
...@@ -535,7 +534,7 @@ export default { ...@@ -535,7 +534,7 @@ export default {
type: [{ required: true, message: this.$t('客户类别不能为空'), trigger: "blur" }], type: [{ required: true, message: this.$t('客户类别不能为空'), trigger: "blur" }],
createTime: [{ required: true, message: this.$t('创建时间不能为空'), trigger: "blur" }], createTime: [{ required: true, message: this.$t('创建时间不能为空'), trigger: "blur" }],
source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }], source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }],
customerService: [{ required: true, message: this.$t('客户经理不能为空'), trigger: "blur" }], customerService: [{ required:this.customerId === '0', message: this.$t('客户经理不能为空'), trigger: "blur" }],
status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }], status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }],
...@@ -761,6 +760,7 @@ export default { ...@@ -761,6 +760,7 @@ export default {
this.form = { ...this.form, ...response.data, id: this.customerId }; this.form = { ...this.form, ...response.data, id: this.customerId };
this.open = true; this.open = true;
this.title = this.$t('修改客户'); this.title = this.$t('修改客户');
this.getZhongPao()
}); });
}, },
updateCustomerLines() { updateCustomerLines() {
...@@ -805,8 +805,8 @@ export default { ...@@ -805,8 +805,8 @@ export default {
// departureId: this.departureId, // departureId: this.departureId,
// objectiveId: this.objectiveId // objectiveId: this.objectiveId
}).then(r => { }).then(r => {
this.form.weightUnit = r.data.zhongEdge if(!this.form.weightUnit) this.form.weightUnit = r.data.zhongEdge
this.form.lightUnit = r.data.paoEdge if(!this.form.lightUnit) this.form.lightUnit = r.data.paoEdge
}) })
} }
}, },
......
...@@ -66,14 +66,14 @@ ...@@ -66,14 +66,14 @@
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['ecw:customer:create']">{{$t('新增')}}</el-button> v-hasPermi="['ecw:customer:create']">{{$t('新增')}}</el-button>
</el-col> </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: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="transferShow = true;" <el-button :disabled="selectCustomerList.length === 0" type="primary" size="mini" @click="transferShow = true;"
v-hasPermi="['ecw:customer:export']">{{$t('批量移交')}}</el-button> v-hasPermi="['ecw:customer:export']">{{$t('批量移交')}}</el-button>
</el-col> </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:export']">{{$t('导出')}}</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
...@@ -83,7 +83,13 @@ ...@@ -83,7 +83,13 @@
type="selection" type="selection"
width="55"> width="55">
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户编号')" align="center" prop="number" /> <el-table-column :label="$t('客户编号')" align="center" prop="number" >
<template v-slot="{row}">
<router-link :to="'/customer/query/' + row.id">
{{row.number}}
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name"> <el-table-column :label="$t('客户名称')" align="center" prop="name">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{row.name}} <el-tag v-if="row.isInOpenSea" size="mini"></el-tag> {{row.name}} <el-tag v-if="row.isInOpenSea" size="mini"></el-tag>
...@@ -514,6 +520,7 @@ import {listServiceUser} from "@/api/system/user"; ...@@ -514,6 +520,7 @@ import {listServiceUser} from "@/api/system/user";
import { getCountryListAll } from '@/api/ecw/country' import { getCountryListAll } from '@/api/ecw/country'
import {getCreditPage} from "@/api/customer/credit"; import {getCreditPage} from "@/api/customer/credit";
import transferCustomer from "@/views/ecw/customer/transferCustomer"; import transferCustomer from "@/views/ecw/customer/transferCustomer";
import Template from "@/views/cms/template/index.vue";
export default { export default {
name: "Customer", name: "Customer",
...@@ -525,6 +532,7 @@ export default { ...@@ -525,6 +532,7 @@ export default {
} }
}, },
components: { components: {
Template,
upload, upload,
CustomerFollowList, CustomerFollowList,
customerComplaints, customerComplaints,
......
...@@ -25,8 +25,11 @@ ...@@ -25,8 +25,11 @@
<el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" /> type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item> </el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">{{$t('导出')}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -90,11 +93,14 @@ import {updateCustomer, getCustomer, ...@@ -90,11 +93,14 @@ import {updateCustomer, getCustomer,
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
import {exportCustomerComplaintExcel} from "@/api/ecw/customerComplaint";
import {indirectCustomerExportExcel} from "@/api/ecw/customer";
export default { export default {
name: "IndirectCustomer", name: "IndirectCustomer",
data() { data() {
return { return {
exportLoading:false,
getDictDatas, getDictDatas,
DICT_TYPE, DICT_TYPE,
// 遮罩层 // 遮罩层
...@@ -132,6 +138,22 @@ export default { ...@@ -132,6 +138,22 @@ export default {
}) })
}, },
methods: { methods: {
// 导出
handleExport() {
// 处理查询参数
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this.$modal.confirm(this.$t('是否确认导出间接客户数据项?')).then(() => {
this.exportLoading = true;
return indirectCustomerExportExcel(params);
}).then(response => {
this.$download.excel(response, '间接客户列表.xls');
this.exportLoading = false;
}).catch(() => {});
},
customerServiceFn(val){ customerServiceFn(val){
if(this.customerServiceList.length > 0){ if(this.customerServiceList.length > 0){
let index =this.customerServiceList.findIndex(item => item.id === val.customerService); let index =this.customerServiceList.findIndex(item => item.id === val.customerService);
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<el-button @click="$router.push('/offer/create')" type="primary" size="small">{{$t('报价')}}</el-button> <el-button @click="$router.push('/offer/create')" type="primary" size="small">{{$t('报价')}}</el-button>
<el-button type="primary" size="small" @click="$refs['customerFollow'].customerFollow.dialogVisible = true">{{$t('跟进')}}</el-button> <el-button type="primary" size="small" @click="$refs['customerFollow'].customerFollow.dialogVisible = true">{{$t('跟进')}}</el-button>
<el-button type="primary" size="small" @click="$refs['customerComplaint'].handleAdd()">{{$t('客诉')}}</el-button> <el-button type="primary" size="small" @click="$refs['customerComplaint'].handleAdd()">{{$t('客诉')}}</el-button>
<el-button type="danger" size="small">{{$t('删除')}}</el-button> <el-button v-hasPermi="['ecw:customer:delete']" type="danger" size="small" @click="deleteCustomerFn()">{{$t('删除')}}</el-button>
</div> </div>
</div> </div>
<el-card style="margin-top: 15px;"> <el-card style="margin-top: 15px;">
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<el-descriptions-item :label="$t('结算方式')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_BALANCE, customer.balance) }}</el-descriptions-item> <el-descriptions-item :label="$t('结算方式')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_BALANCE, customer.balance) }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户生日')">{{ parseTime(customer.birthday, '{y}-{m}-{d}') }}</el-descriptions-item> <el-descriptions-item :label="$t('客户生日')">{{ parseTime(customer.birthday, '{y}-{m}-{d}') }}</el-descriptions-item>
<el-descriptions-item :label="$t('出货渠道')"> <el-descriptions-item :label="$t('出货渠道')">
<dict-tag v-if="customer.transportType" v-for="item in customer.transportType.split(',')" :type="DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE" :value="item"></dict-tag> <dict-tag v-if="customer.transportType" v-for="item in (customer.transportType || '').split(',')" :type="DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE" :value="item"></dict-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('资源类型')"> <el-descriptions-item :label="$t('资源类型')">
<dict-tag :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" :value="customer.resourceType"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" :value="customer.resourceType"></dict-tag>
...@@ -414,7 +414,8 @@ import { ...@@ -414,7 +414,8 @@ import {
orderStatistics, orderStatistics,
creditLogCreate, creditLogCreate,
creditScoreStatistic, creditScoreStatistic,
infoListReceiptPage, userMemberUserList, memberUserList infoListReceiptPage, userMemberUserList, memberUserList, deleteCustomer,
} from '@/api/ecw/customer' } from '@/api/ecw/customer'
import { DICT_TYPE, getDictDataLabel, getDictDatas2 } from '@/utils/dict' import { DICT_TYPE, getDictDataLabel, getDictDatas2 } from '@/utils/dict'
import { getProductTypeList } from '@/api/ecw/productType' import { getProductTypeList } from '@/api/ecw/productType'
...@@ -710,8 +711,21 @@ export default { ...@@ -710,8 +711,21 @@ export default {
this.infoListReceiptTotal = r.data.total; this.infoListReceiptTotal = r.data.total;
} }
}) })
},
deleteCustomerFn(){
this.$confirm(`${this.$t('是否要删除当前客户')}《${this.customer.name}》?`, `${this.$t('提示')}`, {
confirmButtonText: this.$t('确定'),
cancelButtonText: this.$t('取消'),
type: 'warning'
}).then(() => {
deleteCustomer(this.customerId).then(r => {
this.$modal.msgSuccess(this.$t('删除成功'));
this.$router.back()
})
})
} }
} },
} }
</script> </script>
......
...@@ -62,21 +62,26 @@ ...@@ -62,21 +62,26 @@
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:customer:export']">{{$t('导出')}}</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="$router.push({path:'/customer/add-edit/0',query:{isCustomerServiceConfirmed:true,}})" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="$router.push({path:'/customer/add-edit/0',query:{isCustomerServiceConfirmed:true,}})"
v-hasPermi="['ecw:customer:create']">{{$t('新增')}}</el-button> v-hasPermi="['ecw:customer:create']">{{$t('新增')}}</el-button>
</el-col> </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:export']">{{$t('导出')}}</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column :label="$t('客户编号')" align="center" prop="number" /> <el-table-column :label="$t('客户编号')" align="center" prop="number" >
<template v-slot="{row}">
<router-link :to="'/customer/query/' + row.id">
{{row.number}}
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" /> <el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh"> <el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -98,6 +103,11 @@ ...@@ -98,6 +103,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('预计入公海时间')" align="center" prop="createTime" width="180">
<template v-slot = {row}>
<span>{{ parseTime(row.estimateEnterOpenSeaTime ) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"> <el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName">
</el-table-column> </el-table-column>
<el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column> <el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column>
...@@ -332,7 +342,14 @@ ...@@ -332,7 +342,14 @@
</template> </template>
<script> <script>
import { updateCustomer, getCustomer, exportCustomerExcel, getWaitForConfirmList, confirm } from "@/api/ecw/customer"; import {
updateCustomer,
getCustomer,
exportCustomerExcel,
getWaitForConfirmList,
confirm,
waiteConfirmExportExcel
} from "@/api/ecw/customer";
import { listServiceUser } from "@/api/system/user" import { listServiceUser } from "@/api/system/user"
import { getDictDatas, DICT_TYPE } from '@/utils/dict' import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import {CommonStatusEnum} from '@/utils/constants' import {CommonStatusEnum} from '@/utils/constants'
...@@ -573,11 +590,11 @@ export default { ...@@ -573,11 +590,11 @@ export default {
params.pageSize = undefined; params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出所有客户数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出我的待接受客户数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportCustomerExcel(params); return waiteConfirmExportExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, `${this.$t('我的待接收客户')}.xls`);
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
}, },
......
...@@ -86,7 +86,13 @@ ...@@ -86,7 +86,13 @@
type="selection" type="selection"
width="55"> width="55">
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户编号')" align="center" prop="number" /> <el-table-column :label="$t('客户编号')" align="center" prop="number" >
<template v-slot="{row}">
<router-link :to="'/customer/query/' + row.id">
{{row.number}}
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" /> <el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh"> <el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -151,8 +157,10 @@ ...@@ -151,8 +157,10 @@
</template> </template>
<script> <script>
import { createCustomer, updateCustomer, deleteCustomer, getCustomer,handOverCustomer, import {
exportCustomerExcel,getCustomerToBeAssigned } from "@/api/ecw/customer"; createCustomer, updateCustomer, deleteCustomer, getCustomer, handOverCustomer,
exportCustomerExcel, getCustomerToBeAssigned, waitDistributionExportExcel
} from "@/api/ecw/customer";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload' import upload from '@/components/ImageUpload'
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
...@@ -420,9 +428,9 @@ export default { ...@@ -420,9 +428,9 @@ export default {
params.pageSize = undefined; params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出所有客户数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出待分配客户数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportCustomerExcel(params); return waitDistributionExportExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, `${this.$t('待分配客户')}.xls`); this.$download.excel(response, `${this.$t('待分配客户')}.xls`);
this.exportLoading = false; this.exportLoading = false;
......
...@@ -516,6 +516,7 @@ export default { ...@@ -516,6 +516,7 @@ export default {
}, },
WriteOffProportion(){ WriteOffProportion(){
let total = 0 let total = 0
if(!this.form.receiptAccountList) return 0
let amountTotal = this.form.receiptAccountList.find(item=>item.type=='total').writeOffAmount let amountTotal = this.form.receiptAccountList.find(item=>item.type=='total').writeOffAmount
this.detailed.forEach(item => { this.detailed.forEach(item => {
...@@ -609,23 +610,23 @@ export default { ...@@ -609,23 +610,23 @@ export default {
var n
// 收款总计 // 收款总计
var amountList =[] var amountList =[]
this.currencyList.forEach((item,index)=>{ this.currencyList.forEach((item,index)=>{
var nairaListByList = this.list.filter(v => v.currencyId === item.id) var nairaListByList = this.list.filter(v => v.currencyId === item.id)
if(nairaListByList.length>0){ if(nairaListByList.length>0){
var discountNaira = nairaListByList.reduce((total, currentValue) => NP.plus(total, currentValue.discountTotal || 0), 0) var discountNaira = nairaListByList.reduce((total, currentValue) => NP.plus(total, currentValue.discountTotal || 0), 0)
var n = res.data.find(v => v.currencyId == item.id) n = res.data.find(v => v.currencyId == item.id)
n && (n.discountTotal = discountNaira) n && (n.discountTotal = discountNaira)
} }
var dollarList = this.form.receiptAccountList.filter(v => v.collectionCurrencyId == item.id) var dollarList = this.form.receiptAccountList.filter(v => v.collectionCurrencyId == item.id)
if(dollarList.length>0){ if(dollarList.length>0){
var dollar = dollarList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0).toFixed(2) var dollar = dollarList.reduce((total, currentValue) => NP.plus(total, currentValue.collectionAmount), 0).toFixed(2)
if(n.discountTotal&&n.discountTotal>0){ if(n && n.discountTotal&&n.discountTotal>0){
amountList.push({currencyName:item.titleZh,amount:(dollar-n.discountTotal).toFixed(2)}) amountList.push({currencyName:item.titleZh, currencyId: item.id, amount:(dollar-n.discountTotal).toFixed(2)})
}else{ }else{
amountList.push({currencyName:item.titleZh,amount:dollar}) amountList.push({currencyName:item.titleZh, currencyId: item.id, amount:dollar})
} }
} }
...@@ -910,6 +911,8 @@ export default { ...@@ -910,6 +911,8 @@ export default {
}, },
handleAddReceiptItem() { handleAddReceiptItem() {
this.surplusData = [] this.surplusData = []
// 已收
let recepted = [] let recepted = []
this.detailed.forEach(item => { this.detailed.forEach(item => {
...@@ -918,13 +921,19 @@ export default { ...@@ -918,13 +921,19 @@ export default {
}else recepted[item.currencyId] = NP.plus(recepted[item.currencyId], item.amount) }else recepted[item.currencyId] = NP.plus(recepted[item.currencyId], item.amount)
}) })
console.log('rece',recepted) console.log('rece',recepted)
// 应收
let collom = [] let collom = []
this.form.receiptAccountList.forEach(item => { /* this.form.receiptAccountList.forEach(item => {
if(item.type!='total'){ if(item.type!='total'){
if(!collom[item.currencyId]){ if(!collom[item.currencyId]){
collom[item.currencyId] = item.receivableAmount-item.discountTotal collom[item.currencyId] = item.receivableAmount-item.discountTotal
}else collom[item.currencyId] = NP.plus(collom[item.currencyId], item.receivableAmount) }else collom[item.currencyId] = NP.plus(collom[item.currencyId], item.receivableAmount)
} }
}) */
// 从期望收费金额中提取应收币种和金额
this.form.receiptAccountList.find(item => item.type == 'total').collectionAmount.forEach(item => {
collom[item.currencyId] = item.amount
}) })
console.log('collom',collom) console.log('collom',collom)
// if(recepted.length>collom.length){ // if(recepted.length>collom.length){
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
<el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd" <el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" /> type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('信用等级')" prop="department"> <el-form-item :label="$t('信用等级')" prop="department">
<el-select clearable v-model="queryParams.creditLevel" > <el-select clearable v-model="queryParams.creditLevel" >
<el-option v-for="(item,index) in creditList" :label="item.nameZh" :key="index" :value="item.id" ></el-option> <el-option v-for="(item,index) in creditList" :label="item.nameZh" :key="index" :value="item.id" ></el-option>
...@@ -74,7 +75,13 @@ ...@@ -74,7 +75,13 @@
type="selection" type="selection"
width="55"> width="55">
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户编号')" align="center" prop="number" /> <el-table-column :label="$t('客户编号')" align="center" prop="number" >
<template v-slot="{row}">
<router-link :to="'/customer/query/' + row.id">
{{row.number}}
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" /> <el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh"> <el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -98,6 +105,11 @@ ...@@ -98,6 +105,11 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('预计入公海时间')" align="center" prop="createTime" width="180">
<template v-slot = {row}>
<span>{{ parseTime(row.estimateEnterOpenSeaTime ) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"> <el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName">
</el-table-column> </el-table-column>
<el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column> <el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column>
...@@ -127,7 +139,13 @@ ...@@ -127,7 +139,13 @@
</template> </template>
<script> <script>
import { createCustomer, updateCustomer, deleteCustomer, getCustomer, exportCustomerExcel,getMyCustomerService } from "@/api/ecw/customer"; import {
createCustomer,
updateCustomer,
deleteCustomer,
getMyCustomerService,
mineExporteExcel
} from "@/api/ecw/customer";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload' import upload from '@/components/ImageUpload'
import customerFollowList from "@/components/CustomerFollowList"; import customerFollowList from "@/components/CustomerFollowList";
...@@ -373,9 +391,9 @@ export default { ...@@ -373,9 +391,9 @@ export default {
params.pageSize = undefined; params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出所有客户数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出我的客户数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportCustomerExcel(params); return mineExporteExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, `${this.$t('我的客户列表')}.xls`); this.$download.excel(response, `${this.$t('我的客户列表')}.xls`);
this.exportLoading = false; this.exportLoading = false;
......
...@@ -80,7 +80,13 @@ ...@@ -80,7 +80,13 @@
type="selection" type="selection"
width="55"> width="55">
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户编号')" align="center" prop="number" /> <el-table-column :label="$t('客户编号')" align="center" prop="number" >
<template v-slot="{row}">
<router-link :to="'/customer/query/' + row.id">
{{row.number}}
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" /> <el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh"> <el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -114,8 +120,8 @@ ...@@ -114,8 +120,8 @@
<el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column> <el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column>
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-folder-add" @click="distribution(scope.row)">{{$t('移交')}}</el-button> <!-- <el-button size="mini" type="text" @click="distribution(scope.row)">{{$t('移交')}}</el-button>-->
<el-button size="mini" type="text" icon="el-icon-crop" @click="fishingFn(scope.row)">{{$t('捞取')}}</el-button> <el-button size="mini" type="text" @click="fishingFn(scope.row)">{{$t('捞取')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -146,7 +152,15 @@ ...@@ -146,7 +152,15 @@
</template> </template>
<script> <script>
import { createCustomer, updateCustomer, deleteCustomer,handOverCustomer,getPublicList,exportCustomerExcel, setFishing } from "@/api/ecw/customer"; import {
createCustomer,
updateCustomer,
deleteCustomer,
handOverCustomer,
getPublicList,
setFishing,
publicExportExcel
} from "@/api/ecw/customer";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload' import upload from '@/components/ImageUpload'
import {listServiceUser} from "@/api/system/user"; import {listServiceUser} from "@/api/system/user";
...@@ -382,9 +396,9 @@ export default { ...@@ -382,9 +396,9 @@ export default {
params.pageSize = undefined; params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // 执行导出
this.$modal.confirm(this.$t('是否确认导出所有客户数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出公海池客户数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportCustomerExcel(params); return publicExportExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, `${this.$t('公海池客户')}.xls`); this.$download.excel(response, `${this.$t('公海池客户')}.xls`);
this.exportLoading = false; this.exportLoading = false;
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('集运仓库')"> <el-descriptions-item :label="$t('集运仓库')">
{{order.isExternalWarehouse ? $t('外部仓') : $t('自有仓') }} {{order.isExternalWarehouse ? $t('外部仓') : $t('自有仓') }}
<template v-for="(item, index) in order.externalWarehouseDtoList" > <template v-if="order.isExternalWarehouse" v-for="(item, index) in order.externalWarehouseDtoList" >
<div v-if="item.estLoadingTime || item.loadingAddress" :key="index"> <div v-if="item.estLoadingTime || item.loadingAddress" :key="index">
{{$t('装柜时间')}}{{item.estLoadingTime}} {{$t('装柜时间')}}{{item.estLoadingTime}}
{{$t('装柜地址')}}{{item.loadingAddress}} {{$t('装柜地址')}}{{item.loadingAddress}}
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('运单资料/提货单')" name="three"> <el-tab-pane :label="$t('运单资料/提货单')" name="three">
<!--inWarehouseState 1待入库,2多了,3少了,4到齐--> <!--inWarehouseState 1待入库,2多了,3少了,4到齐-->
<el-button type="text" @click="showWarehouseReceipt=true" :disabled="order.inWarehouseState <= 1">{{$t('查看入仓单')}}</el-button> <el-button type="text" @click="showWarehouseReceipt=true" :disabled="order.inWarehouseState == 0 && order.shipmentState == 0">{{$t('查看入仓单')}}</el-button>
<el-button type="text" @click.native="showLadingBill=true" :disabled="!order.ladingState">{{$t('查看提货单')}}</el-button> <el-button type="text" @click.native="showLadingBill=true" :disabled="!order.ladingState">{{$t('查看提货单')}}</el-button>
<el-button :disabled="!order.packingListUrl" type="text" @click="downloadPackingList">{{$t('装箱单')}}</el-button> <el-button :disabled="!order.packingListUrl" type="text" @click="downloadPackingList">{{$t('装箱单')}}</el-button>
</el-tab-pane> </el-tab-pane>
...@@ -418,66 +418,66 @@ export default { ...@@ -418,66 +418,66 @@ export default {
const brandType = row.warehouseInInfoVO ? row.feeType : row.brandType const brandType = row.warehouseInInfoVO ? row.feeType : row.brandType
// 不是特价则显示其他字段 // 不是特价则显示其他字段
if(!row.specialPriceType){ freightFields = [
freightFields = [ // {field: 'oneSeaFreight', label: '成交单价'},
// {field: 'oneSeaFreight', label: '成交单价'}, {field: 'originalSeaFreight', label: this.$t('默认单价(无牌无液无电)')},
{field: 'originalSeaFreight', label: this.$t('默认单价(无牌无液无电)')}, // {field: 'brandFreightPrice', label: this.$t('品牌加价')},
// {field: 'brandFreightPrice', label: this.$t('品牌加价')}, {field: 'liquidFreightPrice', label: this.$t('液体加价')},
{field: 'liquidFreightPrice', label: this.$t('液体加价')}, {field: 'electrifiedFreightPrice', label: this.$t('带电加价')},
{field: 'electrifiedFreightPrice', label: this.$t('带电加价')}, {field: 'discountFreightPrice', label: this.$t('优惠活动减免')},
{field: 'discountFreightPrice', label: this.$t('优惠活动减免')}, {field: 'plainCommission', label: this.$t('明佣')}
{field: 'plainCommission', label: this.$t('明佣')} ]
]
// 品牌加价 // 品牌加价
if(row['brandFreightPrice'] && row['brandFreightPrice'] > 0){ if(row['brandFreightPrice'] && row['brandFreightPrice'] > 0){
freightFields.push({field: 'brandFreightPrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')}) freightFields.push({field: 'brandFreightPrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
} }
// 有减免金额才显示优惠后单价 // 有减免金额才显示优惠后单价
if(row['discountFreightPrice'] && row['discountFreightPrice'] > 0){ if(row['discountFreightPrice'] && row['discountFreightPrice'] > 0){
freightFields.push({field: 'afterDiscountSeaFreight', label: this.$t('优惠后单价')}) freightFields.push({field: 'afterDiscountSeaFreight', label: this.$t('优惠后单价')})
}
freightFields.push({field: 'oneSeaFreight', label: this.$t('成交单价')})
console.log({freightFields})
freightFields.forEach(item => {
if(row[item.field]){
freight.push({
label: item.label,
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
remark: row.specialPriceType && item.field == 'oneSeaFreight' ? this.$t('特价') : null
})
} }
freightFields.push({field: 'oneSeaFreight', label: this.$t('成交单价')}) })
freightFields.forEach(item => {
if(row[item.field]){
freight.push({
label: item.label,
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
remark: row.specialPriceType && item.field == 'oneSeaFreight' ? this.$t('特价') : null
})
}
})
clearanceFields = [ clearanceFields = [
{field: 'originalClearanceFreight', label: this.$t('默认单价(无牌无液无电)')}, {field: 'originalClearanceFreight', label: this.$t('默认单价(无牌无液无电)')},
// {field: 'brandClearanceFeePrice', label: this.$t('品牌加价')}, // {field: 'brandClearanceFeePrice', label: this.$t('品牌加价')},
{field: 'liquidClearanceFeePrice', label: this.$t('液体加价')}, {field: 'liquidClearanceFeePrice', label: this.$t('液体加价')},
{field: 'electrifiedClearanceFeePrice', label: this.$t('带电加价')}, {field: 'electrifiedClearanceFeePrice', label: this.$t('带电加价')},
{field: 'discountClearanceFeePrice', label: this.$t('优惠活动减免')} {field: 'discountClearanceFeePrice', label: this.$t('优惠活动减免')}
] ]
// 品牌加价 // 品牌加价
if(row['brandClearanceFeePrice'] && row['brandClearanceFeePrice'] > 0){ if(row['brandClearanceFeePrice'] && row['brandClearanceFeePrice'] > 0){
freightFields.push({field: 'brandClearanceFeePrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')}) clearanceFields.push({field: 'brandClearanceFeePrice', label: brandType == 1 ? this.$t('有品牌加价') : this.$t('中性品牌加价')})
} }
if(row['discountClearanceFeePrice'] && row['discountClearanceFeePrice'] > 0){ if(row['discountClearanceFeePrice'] && row['discountClearanceFeePrice'] > 0){
clearanceFields.push({field: 'afterDiscountClearanceFreight', label: this.$t('优惠后单价')}) clearanceFields.push({field: 'afterDiscountClearanceFreight', label: this.$t('优惠后单价')})
}
clearanceFields.push({field: 'oneClearanceFreight', label: this.$t('成交单价')})
clearanceFields.forEach(item => {
if(row[item.field]){
clearance.push({
label: item.label,
value: row[item.field],
currency: row.clearanceFreightCurrency,
volume: row.clearanceFreightVolume,
remark: row.specialPriceType && item.field == 'oneClearanceFreight' ? this.$t('特价') : null
})
}
})
} }
clearanceFields.push({field: 'oneClearanceFreight', label: this.$t('成交单价')})
clearanceFields.forEach(item => {
if(row[item.field]){
clearance.push({
label: item.label,
value: row[item.field],
currency: row.clearanceFreightCurrency,
volume: row.clearanceFreightVolume,
remark: row.specialPriceType && item.field == 'oneClearanceFreight' ? this.$t('特价') : null
})
}
})
freight.push({ freight.push({
label: '价格更新时间', label: '价格更新时间',
......
...@@ -498,6 +498,8 @@ export default { ...@@ -498,6 +498,8 @@ export default {
this.form.material = this.warehousing.material this.form.material = this.warehousing.material
if (this.warehousing.brand && this.warehousing.brand !== 0){ if (this.warehousing.brand && this.warehousing.brand !== 0){
this.form.brand = this.warehousing.brand.toString() || '' this.form.brand = this.warehousing.brand.toString() || ''
} else {
this.form.brand = ''
} }
this.handleBrandChange(this.form.brand) this.handleBrandChange(this.form.brand)
getWarehouseLastUpdateApprovalInfo({ getWarehouseLastUpdateApprovalInfo({
......
...@@ -54,6 +54,10 @@ ...@@ -54,6 +54,10 @@
<el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" v-hasPermi="['ecw:product:attr']">{{$t('批量设置商品属性')}}</el-button> <el-button type="primary" plain icon="el-icon-setting" size="mini" @click="handleEdit" v-hasPermi="['ecw:product:attr']">{{$t('批量设置商品属性')}}</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" >{{$t('导出')}}</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
...@@ -92,14 +96,11 @@ ...@@ -92,14 +96,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" align="center" :label="$t('状态')" width="120"> <!-- <el-table-column prop="status" align="center" :label="$t('状态')" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/> <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
<!-- <el-select v-model="scope.row.status" @change="handleStatusChange(scope.row, 'status')">
<el-option v-for="statusItem in statusDictDatas" :key="statusItem.id" :label="statusItem.value == CommonStatusEnum.ENABLE + '' ? '已上架' : '已下架'" :value="parseInt(statusItem.value)" />
</el-select> -->
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -385,6 +386,7 @@ export default { ...@@ -385,6 +386,7 @@ export default {
this.loading = true; this.loading = true;
// 处理查询参数 // 处理查询参数
let params = { ...this.queryParams }; let params = { ...this.queryParams };
params.filter=false;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询 // 执行查询
getProductPage(params).then(response => { getProductPage(params).then(response => {
...@@ -502,7 +504,7 @@ export default { ...@@ -502,7 +504,7 @@ export default {
this.exportLoading = true; this.exportLoading = true;
return exportProductExcel(params); return exportProductExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '商品.xlsx');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => { }); }).catch(() => { });
}, },
......
...@@ -77,6 +77,9 @@ ...@@ -77,6 +77,9 @@
<el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchBlock" :disabled="multiple">{{$t('批量加入黑名单')}}</el-button> <el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchBlock" :disabled="multiple">{{$t('批量加入黑名单')}}</el-button>
<el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchOff" :disabled="multiple">{{$t('批量下架')}}</el-button> <el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchOff" :disabled="multiple">{{$t('批量下架')}}</el-button>
<el-button v-if="!$route.query.product_id" type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" >{{$t('导出')}}</el-button>
</el-col>
<!--指定商品--> <!--指定商品-->
<el-button v-if="$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchSetSingleProductPrice">{{$t('批量设置单个商品的路线')}}</el-button> <el-button v-if="$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="batchSetSingleProductPrice">{{$t('批量设置单个商品的路线')}}</el-button>
</el-col> </el-col>
...@@ -711,14 +714,16 @@ export default { ...@@ -711,14 +714,16 @@ export default {
params.pageNo = undefined; params.pageNo = undefined;
params.pageSize = undefined; params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出 // c
this.$modal.confirm(this.$t('是否确认导出所有产品价格数据项?')).then(() => { this.$modal.confirm(this.$t('是否确认导出所有数据项?')).then(() => {
this.exportLoading = true; this.exportLoading = true;
return exportProductPriceExcel(params); return exportProductPriceExcel(params);
}).then(response => { }).then(response => {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '路线价格.xlsx');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {
this.exportLoading = false;
});
}, },
// 表格多选 // 表格多选
handleSelectionChange(selection) { handleSelectionChange(selection) {
......
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