Commit 8681432d authored by honghy's avatar honghy

需求95 报价单页面和列表调整

parent 13598193
...@@ -43,6 +43,15 @@ export function getOfferPage(query) { ...@@ -43,6 +43,15 @@ export function getOfferPage(query) {
}) })
} }
// 汇总
export function statistics(query) {
return request({
url: "/ecw/offer/statistics",
method: "get",
params: query
})
}
// 导出报价单管理 Excel // 导出报价单管理 Excel
export function exportOfferExcel(query) { export function exportOfferExcel(query) {
return request({ return request({
......
...@@ -4941,6 +4941,10 @@ ...@@ -4941,6 +4941,10 @@
"标题(英文)": "Title (English)", "标题(英文)": "Title (English)",
"标题(法文)": "Title (French)", "标题(法文)": "Title (French)",
"是否确认删除广告设置编号为'{0}'的数据项?": "Are you sure you want to delete the advertisement setting with ID '{0}'?", "是否确认删除广告设置编号为'{0}'的数据项?": "Are you sure you want to delete the advertisement setting with ID '{0}'?",
"渠道已关闭,禁止下单": "The channel has been closed and orders are prohibited" "渠道已关闭,禁止下单": "The channel has been closed and orders are prohibited",
"询盘来源": "Inquiry Source",
"货物状态": "Goods Status",
"厂家": "Manufacturer",
"厂家电话": "Manufacturer Phone",
"预计发货时间": "Estimated Delivery Time"
} }
...@@ -170,6 +170,10 @@ export const DICT_TYPE = { ...@@ -170,6 +170,10 @@ export const DICT_TYPE = {
CUSTOMER_FOLLOWUP_TYPE: "customer_followup_type", //跟进类型 CUSTOMER_FOLLOWUP_TYPE: "customer_followup_type", //跟进类型
CUSTOMER_FOLLOWUP_METHOD: "customer_followup_method", //跟进方式 CUSTOMER_FOLLOWUP_METHOD: "customer_followup_method", //跟进方式
CUSTOMER_FOLLOWUP_SALE_STAGE: "sale_stage", //销售阶段 CUSTOMER_FOLLOWUP_SALE_STAGE: "sale_stage", //销售阶段
ECW_OFFER_CUSTOMER_STATUS: "ecw_offer_customer_status", //客户状态
ECW_OFFER_CARGO_STATUS: "ecw_offer_cargo_status", //货物状态
ECW_OFFER_INQUIRY_SOURCE: "ecw_offer_inquiry_source", //询盘来源
ECW_OFFER_REASON_DICT: "ecw_offer_reason_dict", //输单原因
CUSTOMER_FOLLOWUP_RESULT_TYPE: "customer_followup_result_type", //跟进结果 CUSTOMER_FOLLOWUP_RESULT_TYPE: "customer_followup_result_type", //跟进结果
CUSTOMER_FOLLOWUP_STATUS: "customer_followup_status", //跟进状态 CUSTOMER_FOLLOWUP_STATUS: "customer_followup_status", //跟进状态
CUSTOMER_QUERY_NUMBER_FIELD: "customer_query_number_field", //客户查询数字字段 CUSTOMER_QUERY_NUMBER_FIELD: "customer_query_number_field", //客户查询数字字段
......
...@@ -38,7 +38,20 @@ ...@@ -38,7 +38,20 @@
{{ consignorData.socialNumber ? "(" + consignorData.socialNumber + ")" : "" }} {{ consignorData.socialNumber ? "(" + consignorData.socialNumber + ")" : "" }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-descriptions :column="4" border class="card" v-if="list.consignorId" :labelStyle="{ width: '110px' }" style="margin-top: 0">
<el-descriptions-item :label="$t('销售阶段') + ':'">
<dict-tag :type="DICT_TYPE.CUSTOMER_FOLLOWUP_SALE_STAGE" :value="list.saleStage" />
</el-descriptions-item>
<el-descriptions-item :label="$t('客户状态') + ':'">
<dict-tag :type="DICT_TYPE.ECW_OFFER_CUSTOMER_STATUS" :value="list.customerStatus" />
</el-descriptions-item>
<el-descriptions-item :label="$t('货物状态') + ':'">
<dict-tag :type="DICT_TYPE.ECW_OFFER_CARGO_STATUS" :value="list.cargoStatus" />
</el-descriptions-item>
<el-descriptions-item :label="$t('询盘来源') + ':'">
<dict-tag :type="DICT_TYPE.ECW_OFFER_INQUIRY_SOURCE" :value="list.inquirySource" />
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" border class="card" v-if="list.consigneeId" :labelStyle="{ width: '110px' }"> <el-descriptions :column="3" border class="card" v-if="list.consigneeId" :labelStyle="{ width: '110px' }">
<el-descriptions-item :label="$t('收货人') + ':'"> <el-descriptions-item :label="$t('收货人') + ':'">
{{ consigneeData.contactsName || $t("") }} {{ consigneeData.contactsName || $t("") }}
...@@ -124,6 +137,26 @@ ...@@ -124,6 +137,26 @@
<template>{{ $t("全包价") }} {{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</template> <template>{{ $t("全包价") }} {{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</template>
</template> </template>
<template v-else-if="!row.oneSeaFreight && !row.oneClearanceFreight">{{ $t("未报价") }}</template> <template v-else-if="!row.oneSeaFreight && !row.oneClearanceFreight">{{ $t("未报价") }}</template>
<template v-else-if="row.specialPriceType">
<div style="color: red;font-weight: 700;">
{{ $t("原价") }}
</div>
<div>
{{ $t("运费") }}{{ row.originalSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}
</div>
<div>
{{ $t("清关费") }}{{ row.originalClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}
</div>
<div style="color: red;font-weight: 700;">
{{ $t("特价") }}
</div>
<div>
{{ $t("运费") }}{{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}
</div>
<div>
{{ $t("清关费") }}{{ row.oneClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}
</div>
</template>
<template v-else> <template v-else>
<div>{{ $t("运费") }}{{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</div> <div>{{ $t("运费") }}{{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</div>
<div v-if="row.oneClearanceFreight">{{ $t("清关费") }}{{ row.oneClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div> <div v-if="row.oneClearanceFreight">{{ $t("清关费") }}{{ row.oneClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
...@@ -159,12 +192,12 @@ ...@@ -159,12 +192,12 @@
</template> </template>
<template v-if="otherFeeList.length == 0"> 0 </template> <template v-if="otherFeeList.length == 0"> 0 </template>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('原价')" :span="2"> <!-- <el-descriptions-item :label="$t('原价')" :span="2">-->
<template v-if="originalFeeList.length > 0" v-for="item in originalFeeList"> <!-- <template v-if="originalFeeList.length > 0" v-for="item in originalFeeList">-->
<div :key="item.currencyId">{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</div> <!-- <div :key="item.currencyId">{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</div>-->
</template> <!-- </template>-->
<template v-if="originalFeeList.length == 0"> 0 </template> <!-- <template v-if="originalFeeList.length == 0"> 0 </template>-->
</el-descriptions-item> <!-- </el-descriptions-item>-->
</el-descriptions> </el-descriptions>
<div class="card-title" style="padding: 20px 0">{{ $t("优惠信息") }}</div> <div class="card-title" style="padding: 20px 0">{{ $t("优惠信息") }}</div>
...@@ -225,6 +258,9 @@ ...@@ -225,6 +258,9 @@
<el-descriptions-item :label="$t('预计结束时间')"> <el-descriptions-item :label="$t('预计结束时间')">
{{ list.stopTime || "/" }} {{ list.stopTime || "/" }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('预计发货时间')">
{{ list.estimatedShippingTime || "/" }}
</el-descriptions-item>
<el-descriptions-item :label="$t('控货')"> <el-descriptions-item :label="$t('控货')">
{{ list.control ? $t("是") : $t("否") }} {{ list.control ? $t("是") : $t("否") }}
</el-descriptions-item> </el-descriptions-item>
......
...@@ -5,6 +5,12 @@ ...@@ -5,6 +5,12 @@
<div slot="header" class="card-title"> <div slot="header" class="card-title">
{{ $route.path.indexOf("create") > -1 ? $t("新建报价单") : $t("编辑报价单") }} {{ $route.path.indexOf("create") > -1 ? $t("新建报价单") : $t("编辑报价单") }}
</div> </div>
<el-form-item :label="$t('销售阶段')" prop="saleStage">
<el-select v-model="form.saleStage" clearable :placeholder="$t('请选择')">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_SALE_STAGE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<br>
<el-form-item :label="$t('所属人')" prop="relation"> <el-form-item :label="$t('所属人')" prop="relation">
<!-- <el-radio-group v-model="form.relation" > --> <!-- <el-radio-group v-model="form.relation" > -->
<el-radio-group v-model="form.relation" id="relation" @change="handleChangeRelation"> <el-radio-group v-model="form.relation" id="relation" @change="handleChangeRelation">
...@@ -67,6 +73,22 @@ ...@@ -67,6 +73,22 @@
</el-form-item> </el-form-item>
</div> </div>
<el-form-item :label="$t('客户状态')" prop="customerStatus">
<el-select v-model="form.customerStatus" clearable :placeholder="$t('请选择')">
<el-option v-for="dict in getDictDatas(DICT_TYPE.ECW_OFFER_CUSTOMER_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<el-form-item :label="$t('货物状态')" prop="cargoStatus">
<el-select v-model="form.cargoStatus" clearable :placeholder="$t('请选择')">
<el-option v-for="dict in getDictDatas(DICT_TYPE.ECW_OFFER_CARGO_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<el-form-item :label="$t('询盘来源')" prop="inquirySource">
<el-select v-model="form.inquirySource" clearable :placeholder="$t('请选择')">
<el-option v-for="dict in getDictDatas(DICT_TYPE.ECW_OFFER_INQUIRY_SOURCE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<!-- <el-descriptions :column="3" border> <!-- <el-descriptions :column="3" border>
<el-descriptions-item :label="$t('*发货人')" :labelStyle="labelStyle" > <el-descriptions-item :label="$t('*发货人')" :labelStyle="labelStyle" >
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consignorId" required :error="$t('发货人不能为空')"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consignorId" required :error="$t('发货人不能为空')">
...@@ -153,7 +175,6 @@ ...@@ -153,7 +175,6 @@
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="card-title"> <div slot="header" class="card-title">
<div class="card-name">{{ $t("商品") }}</div> <div class="card-name">{{ $t("商品") }}</div>
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addProduct()" :disabled="!canAddProduct"></el-button>
</div> </div>
<el-table :data="form.prodCreateReqVOList" border class="product-list"> <el-table :data="form.prodCreateReqVOList" border class="product-list">
<el-table-column :label="$t('序号')" width="60px" fixed> <el-table-column :label="$t('序号')" width="60px" fixed>
...@@ -185,7 +206,7 @@ ...@@ -185,7 +206,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width="100px"> <el-table-column width="100px">
<template slot="header" slot-scope="scope"> {{ $t("品牌") }} <span class="red">*</span> </template> <template slot="header" slot-scope="scope"> {{ $t("品牌") }}</template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-form-item <el-form-item
label="" label=""
...@@ -203,13 +224,13 @@ ...@@ -203,13 +224,13 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('件数')" width="90px"> <el-table-column :label="$t('件数')" width="90px">
<template slot="header" slot-scope="scope"> {{ $t("件数") }} <span class="red">*</span> </template> <template slot="header" slot-scope="scope"> {{ $t("件数") }}</template>
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<el-input v-model.number="row.num" @input="calculationPrice" :disabled="!canAddProduct" /> <el-input v-model.number="row.num" @input="calculationPrice" :disabled="!canAddProduct" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装单位')" width="100px"> <el-table-column :label="$t('包装单位')" width="100px">
<template slot="header" slot-scope="scope"> {{ $t("包装单位") }} <span class="red">*</span> </template> <template slot="header" slot-scope="scope"> {{ $t("包装单位") }}</template>
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable @input="calculationPrice" :disabled="!canAddProduct" /> <dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable @input="calculationPrice" :disabled="!canAddProduct" />
</template> </template>
...@@ -219,14 +240,38 @@ ...@@ -219,14 +240,38 @@
<el-input v-model="row.quantity" @input="calculationPrice" :disabled="!canAddProduct" /> <el-input v-model="row.quantity" @input="calculationPrice" :disabled="!canAddProduct" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总体积') + '(m³)'" width="100px"> <el-table-column width="100px">
<template slot-scope="{ row }"> <template slot="header" slot-scope="scope"> {{ $t('总体积') + '(m³)' }} <span class="red">*</span> </template>
<el-input v-model="row.volume" @input="calculationPrice" :disabled="!canAddProduct" /> <template slot-scope="scope">
<el-form-item
style="margin-bottom: 0;"
label=""
:prop="`prodCreateReqVOList.${scope.$index}.volume`"
:rules="{
required: true,
message: $t('不能为空'),
trigger: 'blur'
}"
>
<el-input v-model="scope.row.volume" @input="calculationPrice" :disabled="!canAddProduct" />
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总重量') + '(kg)'" width="100px"> <el-table-column :label="$t('总重量') + '(kg)'" width="100px">
<template slot-scope="{ row }"> <template slot="header" slot-scope="scope"> {{ $t('总重量') + '(kg)' }} <span class="red">*</span> </template>
<el-input v-model="row.weight" @input="calculationPrice" :disabled="!canAddProduct" /> <template slot-scope="scope">
<el-form-item
style="margin-bottom: 0;"
label=""
:prop="`prodCreateReqVOList.${scope.$index}.weight`"
:rules="{
required: true,
message: $t('不能为空'),
trigger: 'blur'
}"
>
<el-input v-model="scope.row.weight" @input="calculationPrice" :disabled="!canAddProduct" />
</el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总货值') + '(RMB)'" width="120px"> <el-table-column :label="$t('总货值') + '(RMB)'" width="120px">
...@@ -261,6 +306,30 @@ ...@@ -261,6 +306,30 @@
</template> </template>
</template> </template>
<template v-else-if="!row.fee || (!row.fee.oneFreight && !row.fee.oneClearanceFee)">{{ $t("未报价") }}</template> <template v-else-if="!row.fee || (!row.fee.oneFreight && !row.fee.oneClearanceFee)">{{ $t("未报价") }}</template>
<template v-else-if="(row.fee.oneClearanceFee!=row.fee.groupDto.orgClearanceFeePrice)&&row.fee.specialPriceType">
<div style="color: red;font-weight: 700;">
{{ $t("原价") }}
</div>
<div>
{{ $t("运费") }}{{ row.fee.groupDto.orgClearanceFeePrice }} {{ currencyMap[row.fee.freightCurrency] }} /
{{ unitMap[row.fee.freightVolume] }}
</div>
<div>
{{ $t("清关费") }}{{ row.fee.groupDto.orgFreightPrice }} {{ currencyMap[row.fee.clearanceFeeCurrency] }} /
{{ unitMap[row.fee.clearanceFeeVolume] }}
</div>
<div style="color: red;font-weight: 700;">
{{ $t("特价") }}
</div>
<div>
{{ $t("运费") }}{{ row.fee.oneFreight }} {{ currencyMap[row.fee.freightCurrency] }} /
{{ unitMap[row.fee.freightVolume] }}
</div>
<div>
{{ $t("清关费") }}{{ row.fee.oneClearanceFee }} {{ currencyMap[row.fee.clearanceFeeCurrency] }} /
{{ unitMap[row.fee.clearanceFeeVolume] }}
</div>
</template>
<template v-else-if="row.fee"> <template v-else-if="row.fee">
<div> <div>
{{ $t("运费") }}{{ row.fee.oneFreight }} {{ currencyMap[row.fee.freightCurrency] }} / {{ $t("运费") }}{{ row.fee.oneFreight }} {{ currencyMap[row.fee.freightCurrency] }} /
...@@ -297,22 +366,33 @@ ...@@ -297,22 +366,33 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="card-title">
<div class="card-name">
<div class="card-title" style="float: left">{{ $t("合计") }}</div>
<div class="card-title" style="float: left;margin-left: 470px;">{{ sum.totalNum.toFixed() || 0 }}</div>
<div class="card-title" style="float: left;margin-left: 700px;position: absolute;">{{ sum.totalQuatity.toFixed() || 0 }}</div>
<div class="card-title" style="float: left;margin-left: 780px;position: absolute;">{{ sum.totalVolume.toFixed() || 0 }}</div>
<div class="card-title" style="float: left;margin-left: 870px;position: absolute;">{{ sum.totalWeight.toFixed() || 0 }}</div>
<div class="card-title" style="float: left;margin-left: 970px;position: absolute;">{{ sum.totalWorth.toFixed() || 0 }}</div>
</div>
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addProduct()" :disabled="!canAddProduct"></el-button>
</div>
<!-- <!--
</el-card> </el-card>
<el-card class="mt-10"> --> <el-card class="mt-10"> -->
<div class="card-title" style="padding: 20px 0">{{ $t("合计") }}</div> <!-- <div class="card-title" style="padding: 20px 0">{{ $t("合计") }}</div>-->
<el-descriptions :column="4" border> <!-- <el-descriptions :column="4" border>-->
<el-descriptions-item :label="$t('总件数')"> <!-- <el-descriptions-item :label="$t('总件数')">-->
{{ sum.totalNum.toFixed() || 0 }} <!-- {{ sum.totalNum.toFixed() || 0 }}-->
</el-descriptions-item> <!-- </el-descriptions-item>-->
<el-descriptions-item :label="$t('总体积')"> {{ sum.totalVolume.toFixed() || 0 }}m³ </el-descriptions-item> <!-- <el-descriptions-item :label="$t('总体积')"> {{ sum.totalVolume.toFixed() || 0 }}m³ </el-descriptions-item>-->
<el-descriptions-item :label="$t('总重量')"> {{ sum.totalWeight.toFixed() || 0 }}kg </el-descriptions-item> <!-- <el-descriptions-item :label="$t('总重量')"> {{ sum.totalWeight.toFixed() || 0 }}kg </el-descriptions-item>-->
<el-descriptions-item :label="$t('总数量')"> <!-- <el-descriptions-item :label="$t('总数量')">-->
{{ sum.totalQuatity.toFixed() || 0 }} <!-- {{ sum.totalQuatity.toFixed() || 0 }}-->
</el-descriptions-item> <!-- </el-descriptions-item>-->
<el-descriptions-item :label="$t('总货值') + '(RMB)'"> {{ sum.totalWorth.toFixed() || 0 }}{{ $t("元") }} </el-descriptions-item> <!-- <el-descriptions-item :label="$t('总货值') + '(RMB)'"> {{ sum.totalWorth.toFixed() || 0 }}{{ $t("元") }} </el-descriptions-item>-->
</el-descriptions> <!-- </el-descriptions>-->
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10">
...@@ -338,43 +418,43 @@ ...@@ -338,43 +418,43 @@
<el-input v-model="form.otherFee" placeholder="" class="w-100 mr-10"></el-input> <el-input v-model="form.otherFee" placeholder="" class="w-100 mr-10"></el-input>
<selector v-model="form.otherFeeCurrencyId" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable class="w-100" /> <selector v-model="form.otherFeeCurrencyId" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable class="w-100" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('原价')" :span="2"> <!-- <el-descriptions-item :label="$t('原价')" :span="2">-->
<template v-for="item in originalFeeList"> <!-- <template v-for="item in originalFeeList">-->
<div :key="item.currencyId">{{ item.amount || 0 }}{{ currencyMap[item.currencyId] }}</div> <!-- <div :key="item.currencyId">{{ item.amount || 0 }}{{ currencyMap[item.currencyId] }}</div>-->
</template> <!-- </template>-->
</el-descriptions-item> <!-- </el-descriptions-item>-->
</el-descriptions> </el-descriptions>
<div class="card-title" style="padding: 20px 0"> <!-- <div class="card-title" style="padding: 20px 0">-->
{{ $t("优惠信息") }} <!-- {{ $t("优惠信息") }}-->
</div> <!-- </div>-->
<el-table :data="couponList" :show-header="false" :empty-text="$t('暂无优惠')"> <!-- <el-table :data="couponList" :show-header="false" :empty-text="$t('暂无优惠')">-->
<el-table-column label=""> <!-- <el-table-column label="">-->
<template slot-scope="scope"> <!-- <template slot-scope="scope">-->
{{ scope.$index + 1 }}. <!-- {{ scope.$index + 1 }}.-->
{{ $l(productNames[scope.row.prodId], "title") || $t("未知") }} <!-- {{ $l(productNames[scope.row.prodId], "title") || $t("未知") }}-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column label=""> <!-- <el-table-column label="">-->
<template slot-scope="{ row }"> <!-- <template slot-scope="{ row }">-->
<dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" /> <!-- <dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" />-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column label=""> <!-- <el-table-column label="">-->
<template slot-scope="{ row }"> <!-- <template slot-scope="{ row }">-->
{{ $l(row, "title") }} <!-- {{ $l(row, "title") }}-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column label=""> <!-- <el-table-column label="">-->
<template slot-scope="{ row }"> <!-- <template slot-scope="{ row }">-->
-{{ row.reduceAmount }} <!-- -{{ row.reduceAmount }}-->
{{ currencyMap[row.reduceCurrencyId] }} <!-- {{ currencyMap[row.reduceCurrencyId] }}-->
</template> <!-- </template>-->
</el-table-column> <!-- </el-table-column>-->
<el-table-column label=""> <!-- <el-table-column label="">-->
<template slot-scope="{ row }"> {{ $t("有效期至") }}{{ row.endTime ? row.endTime : $t("永久有效") }} </template> <!-- <template slot-scope="{ row }"> {{ $t("有效期至") }}:{{ row.endTime ? row.endTime : $t("永久有效") }} </template>-->
</el-table-column> <!-- </el-table-column>-->
</el-table> <!-- </el-table>-->
<el-descriptions :column="1" class="mt-20"> <el-descriptions :column="1" class="mt-20">
<el-descriptions-item :label="$t('优惠费用')" v-if="couponTotalAmountList && couponTotalAmountList.length"> <el-descriptions-item :label="$t('优惠费用')" v-if="couponTotalAmountList && couponTotalAmountList.length">
...@@ -401,9 +481,13 @@ ...@@ -401,9 +481,13 @@
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('预计结束时间')" prop="stopTime"> <!-- <el-form-item :label="$t('预计结束时间')" prop="stopTime">-->
<!-- &lt;!&ndash; <el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker> &ndash;&gt;-->
<!-- <el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd" class="w-200" :picker-options="stopDate"></el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item :label="$t('预计发货时间')" prop="estimatedShippingTime">
<!-- <el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker> --> <!-- <el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker> -->
<el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd" class="w-200" :picker-options="stopDate"></el-date-picker> <el-date-picker v-model="form.estimatedShippingTime" value-format="yyyy-MM-dd" class="w-200" :picker-options="stopDate"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('是否控货')" prop="control" label-width="200px"> <el-form-item :label="$t('是否控货')" prop="control" label-width="200px">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" />
...@@ -439,38 +523,51 @@ ...@@ -439,38 +523,51 @@
<el-form-item :label="$t('交货地址')"> <el-form-item :label="$t('交货地址')">
<el-input v-model="form.tradeAdress" :placeholder="$t('港口或地点')"></el-input> <el-input v-model="form.tradeAdress" :placeholder="$t('港口或地点')"></el-input>
</el-form-item> </el-form-item>
<br>
<el-form-item :label="$t('厂家')" prop="manufacturer">
<el-input v-model="form.manufacturer" type="textarea" style="width: 1100px; height: 50px"></el-input>
</el-form-item>
<br>
<el-form-item :label="$t('厂家电话')" prop="manufacturerPhone">
<el-input v-model="form.manufacturerPhone" type="textarea" style="width: 1100px; height: 50px"></el-input>
</el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('备注')" :span="2"> <el-form-item :label="$t('备注')" :span="2" prop="remarks">
<el-input v-model="form.remarks" type="textarea" placeholder="" style="width: 410px; height: 100px"></el-input> <el-input v-model="form.remarks" type="textarea" placeholder="" style="width: 1100px; height: 100px"></el-input>
</el-form-item> </el-form-item>
</div> </div>
</el-card> </el-card>
<el-card class="mt-10" v-if="transport"> <el-card class="mt-10" v-if="transport">
<div class="card-title" slot="header">{{ $t("其他") }}</div> <div class="card-title" slot="header">
<div class="card-name">
{{ $t("其他") }}
</div>
<el-button type="primary" size="mini" icon="el-icon-plus" @click="qiTaTag=!qiTaTag"></el-button>
</div>
<!-- <el-form-item :label="$t('快递单号')"> <!-- <el-form-item :label="$t('快递单号')">
<el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')"></el-input> <el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')"></el-input>
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('特殊要求')"> <el-form-item :label="$t('特殊要求')" v-show="qiTaTag">
<dict-selector v-model="form.transportVO.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple /> <dict-selector v-model="form.transportVO.packageTypeArr" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple />
</el-form-item> </el-form-item>
<br /> <br />
<el-form-item :label="$t('特殊要求备注')"> <el-form-item :label="$t('特殊要求备注')" v-show="qiTaTag">
<el-input v-model="form.transportVO.packageRemarks"></el-input> <el-input v-model="form.transportVO.packageRemarks"></el-input>
</el-form-item> </el-form-item>
<br /> <br />
<el-form-item :label="$t('是否双清')" v-if="[2, 3, 4].indexOf(+form.transportId) > -1"> <el-form-item :label="$t('是否双清')" v-if="[2, 3, 4].indexOf(+form.transportId) > -1" v-show="qiTaTag">
<dict-selector v-model="form.transportVO.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" /> <dict-selector v-model="form.transportVO.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('航空公司')" v-if="[3, 4].indexOf(+form.transportId) > -1"> <el-form-item :label="$t('航空公司')" v-if="[3, 4].indexOf(+form.transportId) > -1" v-show="qiTaTag">
<!--待查询备选数据--> <!--待查询备选数据-->
<!-- <el-select placeholder="" v-model="form.airlineCompany"> <!-- <el-select placeholder="" v-model="form.airlineCompany">
</el-select> --> </el-select> -->
<supplier-selector v-model="form.transportVO.airlineCompany" companyType="10" /> <supplier-selector v-model="form.transportVO.airlineCompany" companyType="10" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('船公司')" v-if="[2].indexOf(+form.transportId) > -1"> <el-form-item :label="$t('船公司')" v-if="[2].indexOf(+form.transportId) > -1" v-show="qiTaTag">
<!-- <el-select placeholder="" v-model="form.shippingCompany"> <!-- <el-select placeholder="" v-model="form.shippingCompany">
</el-select> --> </el-select> -->
<supplier-selector v-model="form.transportVO.shippingCompany" companyType="9" /> <supplier-selector v-model="form.transportVO.shippingCompany" companyType="9" />
...@@ -577,7 +674,8 @@ const createDefaultForm = () => { ...@@ -577,7 +674,8 @@ const createDefaultForm = () => {
isCargoControl: false, isCargoControl: false,
prodCreateReqVOList: [], prodCreateReqVOList: [],
transportVO: {}, transportVO: {},
serviceType: [] serviceType: [],
saleStage: 3
} }
} }
export default { export default {
...@@ -653,7 +751,8 @@ export default { ...@@ -653,7 +751,8 @@ export default {
}, },
AddressProvince: [], AddressProvince: [],
AddressCity: [], AddressCity: [],
competitorList: [] competitorList: [],
qiTaTag: false
} }
}, },
computed: { computed: {
...@@ -723,7 +822,9 @@ export default { ...@@ -723,7 +822,9 @@ export default {
// } // }
// } // }
// }, // },
isChinese() {
return this.$i18n.locale === "zh_CN"
},
rules() { rules() {
let rules = { let rules = {
marks: [ marks: [
...@@ -746,12 +847,23 @@ export default { ...@@ -746,12 +847,23 @@ export default {
// departureId: [{required: true, message: this.$t('请选择始发城市')}], // departureId: [{required: true, message: this.$t('请选择始发城市')}],
destCountryId: [{ required: true, message: this.$t("请选择目的国家") }], destCountryId: [{ required: true, message: this.$t("请选择目的国家") }],
channelId: [{ required: true, message: this.$t("选择出货渠道") }], channelId: [{ required: true, message: this.$t("选择出货渠道") }],
stopTime: [{ required: true, message: this.$t("不能为空") }], // stopTime: [{ required: true, message: this.$t("不能为空") }],
estimatedShippingTime: [{ required: true, message: this.$t("不能为空") }],
relation: [{ required: true, message: this.$t("请选择所属人") }], relation: [{ required: true, message: this.$t("请选择所属人") }],
control: [{ required: true, message: this.$t("请选择是否控货") }], saleStage: [{ required: true, message: this.$t("销售阶段不能为空") }],
importance: [ // control: [{ required: true, message: this.$t("请选择是否控货") }],
{ required: true, message: this.$t("请选择重要程度") }, // importance: [
{ type: "number", min: 1, message: this.$t("请选择重要程度") } // { required: true, message: this.$t("请选择重要程度") },
// { type: "number", min: 1, message: this.$t("请选择重要程度") }
// ]
remarks: [
{ max: 500, message: '500max', trigger: 'blur' }
],
manufacturer: [
{ max: 100, message: '100max', trigger: 'blur' }
],
manufacturerPhone: [
{ max: 50, message: '50max', trigger: 'blur' }
] ]
} }
if (this.form.relation == 1) { if (this.form.relation == 1) {
...@@ -1142,6 +1254,7 @@ export default { ...@@ -1142,6 +1254,7 @@ export default {
formData.transportVO.packageTypeArr = formData.transportVO.packageType.split(",").filter((item) => item && item != "") formData.transportVO.packageTypeArr = formData.transportVO.packageType.split(",").filter((item) => item && item != "")
} }
if (res.data.offerProdRespVOList) { if (res.data.offerProdRespVOList) {
res.data.offerProdRespVOList.forEach((item) => { res.data.offerProdRespVOList.forEach((item) => {
formData.prodCreateReqVOList.push({ formData.prodCreateReqVOList.push({
goodsType: item.goodsType, goodsType: item.goodsType,
...@@ -1157,6 +1270,25 @@ export default { ...@@ -1157,6 +1270,25 @@ export default {
transportId: item.transportId, transportId: item.transportId,
weight: item.weight, weight: item.weight,
worth: item.worth, worth: item.worth,
specialPriceType: item.specialPriceType,
oneSeaFreight: item.oneSeaFreight,
orgFreightPrice: item.originalSeaFreight,
originalSeaFreight: item.originalSeaFreight,
oneClearanceFee: item.oneClearanceFreight,
oneClearanceFreight: item.oneClearanceFreight,
orgClearanceFeePrice: item.originalClearanceFreight,
originalClearanceFreight: item.originalClearanceFreight,
freightVolume: item.seaFreightVolume,
seaFreightVolume: item.seaFreightVolume,
clearanceFeeVolume: item.clearanceFreightVolume,
clearanceFreightVolume: item.clearanceFreightVolume,
charging: item.charging,
freightCurrency: item.seaFreightCurrency,
seaFreightCurrency: item.seaFreightCurrency,
freight: item.seaFreight,
clearanceFeeCurrency: item.clearanceFreightCurrency,
clearanceFreightCurrency: item.clearanceFreightCurrency,
clearanceFee: item.clearanceFreight,
prodAttrArr: prodAttrArr:
item.prodAttrIds && item.prodAttrIds != "" item.prodAttrIds && item.prodAttrIds != ""
? item.prodAttrIds ? item.prodAttrIds
...@@ -1173,6 +1305,7 @@ export default { ...@@ -1173,6 +1305,7 @@ export default {
formData.startTime = "" formData.startTime = ""
formData.endTime = "" formData.endTime = ""
formData.stopTime = "" formData.stopTime = ""
formData.estimatedShippingTime = ""
// 复制报价单状态重置为草稿 // 复制报价单状态重置为草稿
formData.status = 2 formData.status = 2
} }
...@@ -1420,7 +1553,15 @@ export default { ...@@ -1420,7 +1553,15 @@ export default {
} }
this.form.prodCreateReqVOList.map((item, index) => { this.form.prodCreateReqVOList.map((item, index) => {
this.$set(item, "fee", res.data.prodCostDtoList[index] || null) console.log("============================")
console.log(item)
console.log("============================")
var a = null
if(res.data.prodCostDtoList[index]) {
a = res.data.prodCostDtoList[index]
a['specialPriceType'] = item.specialPriceType
}
this.$set(item, "fee", a)
}) })
}) })
.finally(() => { .finally(() => {
......
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
<el-input v-model.trim="queryParams.searchNumber" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model.trim="queryParams.searchNumber" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户状态')" prop="customerStatusList">
<dict-selector :type="DICT_TYPE.ECW_OFFER_CUSTOMER_STATUS" multiple v-model="queryParams.customerStatusList" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('客户')" prop="searchCustomer"> <el-form-item :label="$t('客户')" prop="searchCustomer">
<el-input v-model.trim="queryParams.searchCustomer" clearable @keyup.enter.native="handleQuery" /> <el-input v-model.trim="queryParams.searchCustomer" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
...@@ -14,8 +18,24 @@ ...@@ -14,8 +18,24 @@
<el-input v-model.trim="queryParams.relationPhone" clearable @keyup.enter.native="handleQuery" @input="queryParams.relationPhone = queryParams.relationPhone.replace(/\s+/g, '')" /> <el-input v-model.trim="queryParams.relationPhone" clearable @keyup.enter.native="handleQuery" @input="queryParams.relationPhone = queryParams.relationPhone.replace(/\s+/g, '')" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('区号')" prop="relationAreaCode"> <el-form-item :label="$t('客户经理')" prop="salesmanIds">
<el-input v-model.trim="queryParams.relationAreaCode" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery" @input="queryParams.relationAreaCode = queryParams.relationAreaCode.replace(/\s+/g, '')" /> <user-selector v-model="queryParams.salesmanIds" multiple clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('询盘来源')" prop="inquirySourceList">
<dict-selector :type="DICT_TYPE.ECW_OFFER_INQUIRY_SOURCE" multiple v-model="queryParams.inquirySourceList" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('销售阶段')" prop="saleStageList">
<dict-selector :type="DICT_TYPE.CUSTOMER_FOLLOWUP_SALE_STAGE" multiple v-model="queryParams.saleStageList" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('货物状态')" prop="cargoStatusList">
<dict-selector :type="DICT_TYPE.ECW_OFFER_CARGO_STATUS" multiple v-model="queryParams.cargoStatusList" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('运输方式')" prop="transportId" v-show="showSearch">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" multiple formatter="number" clearable @change="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('始发仓')" prop="startWarehouseId"> <el-form-item :label="$t('始发仓')" prop="startWarehouseId">
...@@ -40,21 +60,22 @@ ...@@ -40,21 +60,22 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')" prop="salesmanIds"> <el-form-item :label="$t('创建时间')">
<user-selector v-model="queryParams.salesmanIds" multiple clearable @change="handleQuery" /> <el-date-picker v-model="queryTmp.createTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('销售阶段')" prop="statusList">
<dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" multiple v-model="queryParams.statusList" clearable @change="handleQuery" /> <el-form-item :label="$t('客户来源')" prop="sourceIds" v-show="showSearch">
<dict-selector :type="DICT_TYPE.CUSTOMER_SOURCE" multiple v-model="queryParams.sourceIds" clearable @change="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('重要程度')" prop="importances">
<el-select v-model="queryParams.importances" multiple :placeholder="$t('请选择')" clearable @change="handleQuery"> <el-form-item :label="$t('输单原因')" prop="reasonDictList" v-show="showSearch">
<el-option v-for="item in [1, 2, 3, 4, 5]" :label="item" :value="item" :key="item"></el-option> <dict-selector :type="DICT_TYPE.ECW_OFFER_REASON_DICT" multiple v-model="queryParams.reasonDictList" clearable @change="handleQuery" />
</el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('运输方式')" prop="transportId" v-show="showSearch"> <el-form-item :label="$t('区号')" prop="relationAreaCode" v-show="showSearch">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" multiple formatter="number" clearable @change="handleQuery" /> <el-input v-model.trim="queryParams.relationAreaCode" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery" @input="queryParams.relationAreaCode = queryParams.relationAreaCode.replace(/\s+/g, '')" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('出货渠道')" prop="channelIds" v-show="showSearch"> <el-form-item :label="$t('出货渠道')" prop="channelIds" v-show="showSearch">
<selector :clearable="true" :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelIds" multiple @change="handleQuery"></selector> <selector :clearable="true" :options="channelList" :label-field="$l('name')" value-field="channelId" v-model="queryParams.channelIds" multiple @change="handleQuery"></selector>
</el-form-item> </el-form-item>
...@@ -75,27 +96,29 @@ ...@@ -75,27 +96,29 @@
<el-option :label="$t('海外仓')" :value="2"></el-option> <el-option :label="$t('海外仓')" :value="2"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户来源')" prop="sourceIds" v-show="showSearch">
<dict-selector :type="DICT_TYPE.CUSTOMER_SOURCE" multiple v-model="queryParams.sourceIds" clearable @change="handleQuery" /> <el-form-item :label="$t('厂家')" prop="manufacturer" v-show="showSearch">
<el-input v-model.trim="queryParams.manufacturer" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('创建人')" prop="creatorIds"> <el-form-item :label="$t('厂家电话')" prop="manufacturerPhone" v-show="showSearch">
<user-selector v-model="queryParams.creatorIds" multiple clearable @change="handleQuery" /> <el-input v-model.trim="queryParams.manufacturerPhone" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('创建时间')"> <el-form-item :label="$t('预计发货时间')">
<el-date-picker v-model="queryTmp.createTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker> <el-date-picker v-model="queryTmp.estimatedShippingTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item :label="$t('创建人')" prop="creatorIds" v-show="showSearch">
<user-selector v-model="queryParams.creatorIds" multiple clearable @change="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('有效期开始')" v-show="showSearch"> <el-form-item :label="$t('有效期开始')" v-show="showSearch">
<el-date-picker v-model="queryTmp.startTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker> <el-date-picker v-model="queryTmp.startTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('有效期结束')" v-show="showSearch"> <el-form-item :label="$t('有效期结束')" v-show="showSearch">
<el-date-picker v-model="queryTmp.endTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker> <el-date-picker v-model="queryTmp.endTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('预计结束时间')" v-show="showSearch">
<el-date-picker v-model="queryTmp.stopTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</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>
...@@ -110,35 +133,45 @@ ...@@ -110,35 +133,45 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:offer:export']">{{ $t("导出") }}</el-button> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:offer:export']">{{ $t("导出") }}</el-button>
</el-col> </el-col>
<el-col :span="15">
<!-- 订单列表显示搜索条件对应箱数、仓库实测、收款方数、重量 -->
汇总:{{statistics.volume}}CBM/{{statistics.weight}}KG
</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" border ref="dataTable" id="dataTable" :height="autoHeight"> <el-table v-loading="loading" :data="list" border ref="dataTable" id="dataTable" :height="autoHeight">
<el-table-column :label="$t('报价单号')" align="left" prop="number" width="150" fixed> <el-table-column :label="$t('创建时间')" align="left" width="120" fixed>
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<el-link type="primary" @click.native="$router.push('detail?offerId=' + row.offerId)">{{ row.number }}</el-link> <span>{{ parseTime(row.createTime, "{y}-{m}-{d} {h}:{i}:{s}") }}</span>
<div style="display: flex; flex-wrap: wrap" v-if="row.specialPriceType">
<el-button size="mini" style="margin-left: 20px" type="danger" circle></el-button>
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('订单编号')" align="left" width="120" fixed> <el-table-column :label="$t('客户状态')" align="left" width="100" fixed>
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<a class="el-link el-link--primary is-underline" href="javascript:;" @click="$router.push(`/order/detail?orderId=${row.orderId}`)">{{ row.orderNo }}</a> <dict-tag :type="DICT_TYPE.ECW_OFFER_CUSTOMER_STATUS" :value="row.customerStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进时间')" width="180"> <el-table-column :label="$t('客户编号')" align="left" width="100" fixed>
<template slot-scope="scope" v-if="scope.row.followupBackVO"> <template slot-scope="{ row }">
{{ parseTime(scope.row.followupBackVO.followTime) }} {{ row.customerNumber }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('最新跟进记录')" width="120"> <el-table-column :label="$t('客户名称')" align="left" prop="customerName" fixed> </el-table-column>
<template slot-scope="scope" v-if="scope.row.followupBackVO"> <el-table-column :label="$t('客户经理')" align="left" prop="followUpSalesmanName"> </el-table-column>
<a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">{{ scope.row.followupBackVO.number }}</a> <el-table-column :label="$t('询盘来源')" align="left" width="100">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_OFFER_INQUIRY_SOURCE" :value="row.inquirySource" />
</template>
</el-table-column>
<el-table-column :label="$t('掉入公海时间')" align="left" width="120">
<template slot-scope="{ row }">
{{ row.estimateEnterOpenSeaTime || row.enterOpenSeaTime }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('联系人')" align="left" prop="relationName" width="120" />
<el-table-column :label="$t('联系电话')" align="left" prop="relationPhone" width="150" />
<el-table-column :label="$t('重要程序')" align="center" prop="importance" />
<el-table-column :label="$t('始发仓')" align="left" prop="startWarehouseName" />
<el-table-column :label="$t('运输方式-渠道/目的仓')" width="200"> <el-table-column :label="$t('运输方式-渠道/目的仓')" width="200">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" /> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" />
...@@ -148,33 +181,100 @@ ...@@ -148,33 +181,100 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('销售阶段')" align="left" width="100"> <el-table-column :label="$t('销售阶段')" align="left" width="100">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="row.status" /> <dict-tag :type="DICT_TYPE.CUSTOMER_FOLLOWUP_SALE_STAGE" :value="row.saleStage" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('预计结束时间')" align="left" width="100"> <el-table-column :label="$t('上次跟进类型')" width="120">
<template slot-scope="scope"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<span>{{ parseTime(scope.row.stopTime, "{y}-{m}-{d}") }}</span> <a href="javascript:void(0)" @click="handleCustomerFollowLink(scope.row.followupBackVO)" class="link-type">
<dict-tag :type="DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE" :value="scope.row.followupBackVO.followType" />
</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('预计销售额')" align="left" prop="estCost" width="160"> <el-table-column :label="$t('上次跟进时间')" width="180">
<template slot-scope="{ row }"> <template slot-scope="scope" v-if="scope.row.followupBackVO">
<div class="" v-for="(item, feeIndex) in row.estCostVO.feeDtoList" :key="feeIndex"> {{ parseTime(scope.row.followupBackVO.followTime) }}
<dict-tag :type="DICT_TYPE.ECW_COST_FEE_TYPE" :value="item.feeType" /> </template>
{{ item.amount }} {{ currencyMap[item.currencyId] }} </el-table-column>
<el-table-column :label="$t('上次跟进内容')" width="180">
<template slot-scope="scope" v-if="scope.row.followupBackVO">
{{ scope.row.followupBackVO.feedback }}
</template>
</el-table-column>
<el-table-column :label="$t('所报价格')" width="180">
<template slot-scope="scope" v-if="scope.row.offerProds">
<template v-for="row1 in scope.row.offerProds">
{{row1.prodTitleZh}}:
<template v-if="row1.charging == 1">
<template v-if="!row1.oneSeaFreight">{{ $t("未报价") }}</template>
<template>{{ $t("全包价") }} {{ row1.oneSeaFreight }} {{ currencyMap[row1.seaFreightCurrency] }} / {{ unitMap[row1.seaFreightVolume] }}</template>
</template>
<template v-else-if="!row1.oneSeaFreight && !row1.oneClearanceFreight">{{ $t("未报价") }}</template>
<template v-else-if="row1.specialPriceType">
<div style="color: red;font-weight: 700;">
{{ $t("原价") }}
</div>
<div>
{{ $t("运费") }}{{ row1.originalSeaFreight }} {{ currencyMap[row1.seaFreightCurrency] }} / {{ unitMap[row1.seaFreightVolume] }}
</div>
<div>
{{ $t("清关费") }}{{ row1.originalClearanceFreight }} {{ currencyMap[row1.clearanceFreightCurrency] }} / {{ unitMap[row1.clearanceFreightVolume] }}
</div>
<div style="color: red;font-weight: 700;">
{{ $t("特价") }}
</div>
<div>
{{ $t("运费") }}{{ row1.oneSeaFreight }} {{ currencyMap[row1.seaFreightCurrency] }} / {{ unitMap[row1.seaFreightVolume] }}
</div> </div>
<div>
{{ $t("清关费") }}{{ row1.oneClearanceFreight }} {{ currencyMap[row1.clearanceFreightCurrency] }} / {{ unitMap[row1.clearanceFreightVolume] }}
</div>
</template>
<template v-else>
<div>{{ $t("运费") }}{{ row1.oneSeaFreight }} {{ currencyMap[row1.seaFreightCurrency] }} / {{ unitMap[row1.seaFreightVolume] }}</div>
<div v-if="row1.oneClearanceFreight">{{ $t("清关费") }}{{ row1.oneClearanceFreight }} {{ currencyMap[row1.clearanceFreightCurrency] }} / {{ unitMap[row1.clearanceFreightVolume] }}</div>
<div v-else>{{ $t("清关费未报价") }}</div>
</template>
</template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户经理')" align="left" prop="followUpSalesmanName"> </el-table-column> <el-table-column :label="$t('货物描述')" width="180">
<el-table-column :label="$t('创建人')" align="left" prop="creatorName"> </el-table-column> <template slot-scope="scope" v-if="scope.row.offerProds">
<el-table-column :label="$t('创建时间')" align="left" width="120"> <template v-for="row1 in scope.row.offerProds">
<div>
{{row1.prodTitleZh}}:<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row1.brand"></dict-tag>-
{{row1.volume}}CBM/{{row1.weight}}KG
</div>
</template>
</template>
</el-table-column>
<el-table-column :label="$t('总方数')" align="left" prop="volume" width="100" />
<el-table-column :label="$t('总重量')" align="left" prop="weight" width="100" />
<el-table-column :label="$t('货物状态')" align="left" width="100">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<span>{{ parseTime(row.createTime, "{y}-{m}-{d} {h}:{i}:{s}") }}</span> <dict-tag :type="DICT_TYPE.ECW_OFFER_CARGO_STATUS" :value="row.cargoStatus" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('有效期')" align="left" width="120"> <el-table-column :label="$t('预计发货时间')" align="left" prop="estimatedShippingTime" width="120" />
<el-table-column :label="$t('厂家/电话')" align="left" width="100">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<div>{{ parseTime(row.startTime, "{y}-{m}-{d}") }}</div> {{row.manufacturer}}/{{row.manufacturerPhone}}
{{ parseTime(row.endTime, "{y}-{m}-{d}") }} </template>
</el-table-column>
<el-table-column :label="$t('订单编号')" align="left" width="120">
<template slot-scope="{ row }">
<a class="el-link el-link--primary is-underline" href="javascript:;" @click="$router.push(`/order/detail?orderId=${row.orderId}`)">{{ row.orderNo }}</a>
</template>
</el-table-column>
<el-table-column :label="$t('输单原因')" align="left" width="100">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_OFFER_REASON_DICT" :value="row.reasonDict" />
</template>
</el-table-column>
<el-table-column :label="$t('输单备注')" align="left" prop="reason" width="120" />
<el-table-column :label="$t('报价单号')" align="left" prop="number" width="150">
<template slot-scope="{ row }">
<el-link type="primary" @click.native="$router.push('detail?offerId=' + row.offerId)">{{ row.number }}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" fixed="right"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" fixed="right">
...@@ -213,7 +313,7 @@ ...@@ -213,7 +313,7 @@
</template> </template>
<script> <script>
import { deleteOffer, getOfferPage, exportOfferExcel, cancel, recovery, offerDeptPage, exportDeptOfferExcel } from "@/api/ecw/offer" import { deleteOffer, getOfferPage, statistics, exportOfferExcel, cancel, recovery, offerDeptPage, exportDeptOfferExcel } from "@/api/ecw/offer"
import { getChannelList } from "@/api/ecw/channel" import { getChannelList } from "@/api/ecw/channel"
import { getRegionList } from "@/api/ecw/order" import { getRegionList } from "@/api/ecw/order"
import { getCurrencyList } from "@/api/ecw/currency" import { getCurrencyList } from "@/api/ecw/currency"
...@@ -223,6 +323,7 @@ import UserSelector from "@/components/UserSelector" ...@@ -223,6 +323,7 @@ import UserSelector from "@/components/UserSelector"
import Selector from "@/components/Selector" import Selector from "@/components/Selector"
import Template from "@/views/cms/template/index.vue" import Template from "@/views/cms/template/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow" import CustomerFollow from "@/views/ecw/customer/components/customerFollow"
import { getUnitList } from "@/api/ecw/unit"
export default { export default {
name: "EcwOfferIndex", name: "EcwOfferIndex",
components: { components: {
...@@ -246,8 +347,13 @@ export default { ...@@ -246,8 +347,13 @@ export default {
list: [], list: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
customerStatusList: [],
salesmanIds: [], salesmanIds: [],
statusList: [], statusList: [],
cargoStatusList: [],
saleStageList: [],
reasonDictList: [],
inquirySourceList: [],
importances: [], importances: [],
channelIds: [], channelIds: [],
sourceIds: [], sourceIds: [],
...@@ -257,6 +363,7 @@ export default { ...@@ -257,6 +363,7 @@ export default {
queryTmp: { queryTmp: {
createTime: ["", ""], createTime: ["", ""],
stopTime: ["", ""], stopTime: ["", ""],
estimatedShippingTime: ["", ""],
startTime: ["", ""], startTime: ["", ""],
endTime: ["", ""] endTime: ["", ""]
}, },
...@@ -280,10 +387,19 @@ export default { ...@@ -280,10 +387,19 @@ export default {
destWarehouseList: [], destWarehouseList: [],
curData: {}, curData: {},
dept: false, // 是否部门订单 dept: false, // 是否部门订单
autoHeight: 500 autoHeight: 500,
unitList: [],
statistics: {}
} }
}, },
computed: { computed: {
unitMap() {
let map = {}
this.unitList.forEach((item) => {
map[item.id] = this.$i18n.locale == "zh_CN" ? item.titleZh : item.titleEn
})
return map
},
isMobile() { isMobile() {
const userAgent = navigator.userAgent || navigator.vendor || window.opera; const userAgent = navigator.userAgent || navigator.vendor || window.opera;
// 匹配常见的移动设备标识 // 匹配常见的移动设备标识
...@@ -326,6 +442,7 @@ export default { ...@@ -326,6 +442,7 @@ export default {
if (this.$route.fullPath.indexOf("dept") > -1) { if (this.$route.fullPath.indexOf("dept") > -1) {
this.dept = true this.dept = true
} }
getUnitList().then((res) => (this.unitList = res.data))
// getTradeCityList().then((res) => (this.tradeCityList = res.data)) // getTradeCityList().then((res) => (this.tradeCityList = res.data))
getWarehouseList().then((res) => { getWarehouseList().then((res) => {
this.tradeCityList = res.data this.tradeCityList = res.data
...@@ -561,6 +678,8 @@ export default { ...@@ -561,6 +678,8 @@ export default {
obj.endCreateTime = this.queryTmp.createTime[1] obj.endCreateTime = this.queryTmp.createTime[1]
obj.beginStopTime = this.queryTmp.stopTime[0] obj.beginStopTime = this.queryTmp.stopTime[0]
obj.endStopTime = this.queryTmp.stopTime[1] obj.endStopTime = this.queryTmp.stopTime[1]
obj.beginEstimatedShippingTime = this.queryTmp.estimatedShippingTime[0]
obj.endEstimatedShippingTime = this.queryTmp.estimatedShippingTime[1]
obj.beginStartTime = this.queryTmp.startTime[0] obj.beginStartTime = this.queryTmp.startTime[0]
obj.endStartTime = this.queryTmp.startTime[1] obj.endStartTime = this.queryTmp.startTime[1]
obj.beginEndTime = this.queryTmp.endTime[0] obj.beginEndTime = this.queryTmp.endTime[0]
...@@ -571,7 +690,14 @@ export default { ...@@ -571,7 +690,14 @@ export default {
getList() { getList() {
this.loading = true this.loading = true
let func = this.dept ? offerDeptPage : getOfferPage let func = this.dept ? offerDeptPage : getOfferPage
if(!this.dept) {
statistics({
...this.queryParams,
...this.formatQuery()
}).then((response) => {
this.statistics = response.data
})
}
// 执行查询 // 执行查询
func({ func({
...this.queryParams, ...this.queryParams,
......
...@@ -35,7 +35,12 @@ ...@@ -35,7 +35,12 @@
</el-form-item> </el-form-item>
</template> </template>
<template v-else> <template v-else>
<el-form-item :label="$t('原因')" prop="reason"> <el-form-item :label="$t('原因')" prop="reasonDict">
<el-select v-model="form.reasonDict " clearable :placeholder="$t('请选择')">
<el-option v-for="dict in getDictDatas(DICT_TYPE.ECW_OFFER_REASON_DICT)" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<el-form-item :label="$t('备注')" prop="reason">
<el-input style="width: 500px;" type="textarea" placeholder="" v-model="form.reason"></el-input> <el-input style="width: 500px;" type="textarea" placeholder="" v-model="form.reason"></el-input>
</el-form-item> </el-form-item>
</template> </template>
......
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