Commit 1ccd9c22 authored by 332784038@qq.com's avatar 332784038@qq.com

Merge branch 'dev' into test

# Conflicts:
#	src/views/ecw/order/index.vue
parents 0b11ea75 39da2846
......@@ -6,7 +6,7 @@ VUE_APP_TITLE = 捷道管理系统-测试站
# 捷道管理系统/开发环境
VUE_APP_BASE_API = 'https://apitest.groupage.cn'
VUE_APP_BASE_API = 'https://devapi.jd.qipx.top'
# VUE_APP_BASE_API = 'http://110.41.143.128:48080'
# VUE_APP_BASE_API = 'http://127.0.0.1:48080'
......
import request from '@/utils/request'
import request from "@/utils/request"
// 创建跟进
export function createCustomerFollow(data) {
return request({
url: '/ecw/customer-follow/create',
method: 'post',
url: "/ecw/customer-follow/create",
method: "post",
data: data
})
}
......@@ -12,8 +12,8 @@ export function createCustomerFollow(data) {
// 更新跟进
export function updateCustomerFollow(data) {
return request({
url: '/ecw/customer-follow/update',
method: 'put',
url: "/ecw/customer-follow/update",
method: "put",
data: data
})
}
......@@ -21,31 +21,31 @@ export function updateCustomerFollow(data) {
// 删除跟进
export function deleteCustomerFollow(id) {
return request({
url: '/ecw/customer-follow/delete?id=' + id,
method: 'delete'
url: "/ecw/customer-follow/delete?id=" + id,
method: "delete"
})
}
// 获得跟进
export function getCustomerFollow(id) {
return request({
url: '/ecw/customer-follow/get?id=' + id,
method: 'get'
url: "/ecw/customer-follow/get?id=" + id,
method: "get"
})
}
// 获得跟进分页
export function getCustomerFollowPage(query) {
return request({
url: '/customer/detail/infoList/followPage',
method: 'get',
url: "/customer/detail/infoList/followPage",
method: "get",
params: query
})
}
export function getCustomerFollowPage2(query) {
return request({
url: '/ecw/customer-follow/page',
method: 'get',
url: "/ecw/customer-follow/page",
method: "get",
params: query
})
}
......@@ -53,50 +53,56 @@ export function getCustomerFollowPage2(query) {
// 导出跟进 Excel
export function exportCustomerFollowExcel(query) {
return request({
url: '/ecw/customer-follow/export-excel',
method: 'get',
url: "/ecw/customer-follow/export-excel",
method: "get",
params: query,
responseType: 'blob'
responseType: "blob"
})
}
export function getCustomerFollowList(params) {
return request({
url: '/customer/followup/page',
method: 'get',
url: "/customer/followup/page",
method: "get",
params
})
}
export function getCustomerFollowDetail(params) {
return request({
url: '/customer/followup/get',
method: 'get',
url: "/customer/followup/get",
method: "get",
params
})
}
export function addCustomerFollow(data) {
return request({
url: '/customer/followup/create',
method: 'post',
url: "/customer/followup/create",
method: "post",
data
})
}
export function editCustomerFollow(data) {
return request({
url: '/customer/followup/update',
method: 'put',
url: "/customer/followup/update",
method: "put",
data
})
}
export function exportCustomerFollow(params) {
return request({
url: '/customer/followup/export-excel',
method: 'get',
url: "/customer/followup/export-excel",
method: "get",
params
})
}
export function getFollowupNewNumber() {
return request({
url: "/customer/followup/getFollowupNewNumber",
method: "get"
})
}
This diff is collapsed.
......@@ -324,8 +324,17 @@
<!-- />-->
</template>
</el-table-column>
<el-table-column :label="$t('客户经理')" align="center" prop="customerServiceName"></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="customerServiceName"
></el-table-column>
<el-table-column
:label="$t('国籍')"
align="center"
prop="country"
:formatter="countryFormatter"
></el-table-column>
<el-table-column :label="$t('出货渠道')" align="center">
<template slot-scope="{ row }">
{{ channel(row.transportType) }}
......@@ -414,7 +423,12 @@
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column width="200px" :label="$t('操作')" align="center" fixed="right">
<el-table-column
width="200px"
:label="$t('操作')"
align="center"
fixed="right"
>
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" v-show="'development' === env && scope.row.isInOpenSea" @click="seasPond(scope.row)"-->
<!-- v-hasPermi="['ecw:customer:query']">{{$t('掉入公海池')}}</el-button>-->
......@@ -965,22 +979,22 @@ export default {
}
},
combinedQueryParams() {
let queryParams = {}
let queryParams = {};
if (this.enterOpenSeaTime && this.enterOpenSeaTime.length == 2) {
queryParams.beginEnterOpenSeaTime = this.enterOpenSeaTime[0]
queryParams.endEnterOpenSeaTime = this.enterOpenSeaTime[1]
queryParams.beginEnterOpenSeaTime = this.enterOpenSeaTime[0];
queryParams.endEnterOpenSeaTime = this.enterOpenSeaTime[1];
}
if (this.customerServiceConfirmedTime && this.customerServiceConfirmedTime.length == 2) {
queryParams.beginCustomerServiceConfirmedTime = this.customerServiceConfirmedTime[0]
queryParams.endCustomerServiceConfirmedTime = this.customerServiceConfirmedTime[1]
}
if (this.dateRangeCreateTime && this.dateRangeCreateTime.length == 2) {
queryParams.beginCreateTime = this.dateRangeCreateTime[0]
queryParams.endCreateTime = this.dateRangeCreateTime[1]
queryParams.beginCreateTime = this.dateRangeCreateTime[0];
queryParams.endCreateTime = this.dateRangeCreateTime[1];
}
if (this.firstDealTime && this.firstDealTime.length == 2) {
queryParams.beginFirstDealTime = this.firstDealTime[0]
queryParams.endFirstDealTime = this.firstDealTime[1]
queryParams.beginFirstDealTime = this.firstDealTime[0];
queryParams.endFirstDealTime = this.firstDealTime[1];
}
if (this.weightYearly.value) {
let key = "eqWeightYearly"
......@@ -1420,12 +1434,12 @@ export default {
const strArr = []
this.countryList.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.nameZh : item.nameEn)
strArr.push(this.isChinese ? item.nameZh : item.nameEn);
}
})
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
return null;
}
},
getPickupPointNames(ids) {
......@@ -1434,7 +1448,7 @@ export default {
const strArr = []
this.getNodeLists.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn)
strArr.push(this.isChinese ? item.titleZh : item.titleEn);
}
})
return strArr.length > 0 ? strArr.join(",") : null
......@@ -1453,7 +1467,7 @@ export default {
})
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
return null;
}
},
getProductTypeNames(ids) {
......@@ -1462,12 +1476,12 @@ export default {
const strArr = []
this.productTypeList.forEach((item) => {
if (idsArr.includes(item.id.toString())) {
strArr.push(this.isChinese ? item.titleZh : item.titleEn)
strArr.push(this.isChinese ? item.titleZh : item.titleEn);
}
})
return strArr.length > 0 ? strArr.join(",") : null
} else {
return null
return null;
}
},
getPromoterName(id) {
......@@ -1475,13 +1489,13 @@ export default {
let strName = ""
for (const item of this.customerSelectFn) {
if (item.id == id) {
strName = item.name
break
strName = item.name;
break;
}
}
return strName
return strName;
} else {
return null
return null;
}
}
}
......
This diff is collapsed.
......@@ -25,14 +25,15 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10" v-for="(item, index) in queryParams.nodeIds">
<el-row :gutter="10" v-for="(item, index) in queryParams.nodeIds" :key="item.id">
<el-col :span="6">
<el-form-item v-if="title == 3" :label="$t('提货点')" :prop="`nodeIds[${index}].wareHouses`" :rules="rules.nodeIds.wareHouses">
<el-select v-model="item.wareHouses" :placeholder="$t('请选择提货点')" :disabled="isDisable" clearable multiple filterable remote reserve-keyword :remote-method="handleWarehouseList" @visible-change="changeWarehouseList" :loading="loading" size="small">
<el-option v-for="nodeItem in warehouseList" :key="nodeItem.id" :label="isChinese ? nodeItem.titleZh : nodeItem.titleEn" :value="nodeItem.id" />
</el-select>
</el-form-item>
<el-form-item v-else :label="$t('提货点')" :prop="`nodeIds[${index}].wareHouses`" :rules="rules.nodeIds.wareHouses">
<!-- 编辑对应单个提货点 逻辑显示-->
<el-form-item v-else :label="$t('提货点')" :prop="`nodeId`">
<el-select v-model="queryParams.nodeId" :placeholder="$t('请选择提货点')" :disabled="isDisable" clearable filterable remote reserve-keyword :remote-method="handleWarehouseList" @visible-change="changeWarehouseList" :loading="loading" size="small">
<el-option v-for="nodeItem in warehouseList" :key="nodeItem.id" :label="isChinese ? nodeItem.titleZh : nodeItem.titleEn" :value="nodeItem.id" />
</el-select>
......@@ -175,9 +176,16 @@ export default {
this.queryParams = deepClone(newVal)
this.$set(this.queryParams, "dateRangeCreateTime", [parseTime(newVal.startTime), parseTime(newVal.endTime)])
this.queryParams.pickMethod = newVal.pickMethod.split(",")
this.$nextTick(() => {
this.$refs["queryForm"].clearValidate()
})
} else {
this.resetFormQuery()
this.$refs["queryForm"].resetFields()
this.$nextTick(() => {
this.$refs["queryForm"].resetFields()
this.$refs["queryForm"].clearValidate()
})
console.log("Prop is empty")
}
}
......@@ -190,11 +198,10 @@ export default {
endTime: null,
imgEn: null,
imgZh: null,
nodeIds: [{ wareHouses: "", points: "", quantityRemain: null }],
nodeIds: [{ wareHouses: [], points: "", quantityRemain: null, id: 0 }],
nodeId: null,
pickMethod: null,
pickMethod: [],
pointsRequire: null,
remarkEn: null,
remarkFr: null,
remarkZh: null,
......@@ -233,6 +240,13 @@ export default {
trigger: "blur"
}
],
nodeId: [
{
required: true,
message: this.$t("请选择提货点"),
trigger: "change"
}
],
nodeIds: {
wareHouses: [
{
......@@ -303,9 +317,7 @@ export default {
this.handleWarehouseList()
},
methods: {
dataTimeFunc(e) {
console.log("5555", e)
},
dataTimeFunc(e) {},
changeWarehouseList(e) {
if (e) {
this.handleWarehouseList()
......@@ -319,7 +331,7 @@ export default {
},
handleOrderVRule(item, index) {
if (index == "0") {
this.queryParams.nodeIds.push({ nodeId: "", points: "" })
this.queryParams.nodeIds.push({ wareHouses: [], quantityRemain: null, points: "", id: index + 1 })
} else {
this.queryParams.nodeIds.splice(index, 1)
}
......@@ -329,7 +341,9 @@ export default {
params.startTime = this.queryParams?.dateRangeCreateTime?.[0]
params.endTime = this.queryParams?.dateRangeCreateTime?.[1]
params.pickMethod = this.queryParams.pickMethod.toString()
params.nodeIds[0].wareHouses[0] = params.nodeId
if (this.title != 3) {
params.nodeIds[0].wareHouses[0] = params.nodeId
}
this.$refs["queryForm"].validate((valid) => {
if (valid) {
if (this.title == "2") {
......@@ -360,11 +374,11 @@ export default {
this.queryParams = {
allowCount: null,
endTime: null,
nodeIds: [{ wareHouses: "", points: "", quantityRemain: null }],
nodeIds: [{ wareHouses: [], points: "", quantityRemain: null, id: 0 }],
imgEn: null,
imgZh: null,
nodeId: null,
pickMethod: null,
pickMethod: [],
pointsRequire: null,
remarkEn: null,
remarkFr: null,
......
......@@ -1100,6 +1100,9 @@ export default {
if (this.form.offerId != this.$route.query.id) {
this.getOffer()
}
if (this.$route.query.copyId && this.form.copyId != this.$route.query.copyId) {
this.getOffer()
}
},
async created() {
await this.getChannelList()
......@@ -1154,7 +1157,7 @@ export default {
getOffer() {
//加了是否从全部客户列表中报价按钮进来的判断
if (this.$route.query !== 1) {
getOffer(this.$route.query.id).then((res) => {
getOffer(this.$route.query.id || this.$route.query.copyId).then((res) => {
let formData = res.data
formData.type = formData.type ? formData.type.split(",").filter((item) => item != "") : []
formData.prodCreateReqVOList = []
......@@ -1187,6 +1190,14 @@ export default {
})
})
}
if (this.$route.query.copyId) {
formData.offerId = ""
formData.startTime = ""
formData.endTime = ""
formData.stopTime = ""
}
this.$set(this, "form", formData)
// 接口只返回了发货人和收货人ID,还需要调用接口获取详细信息回显
getCustomerContactsSelect({
......
This diff is collapsed.
<template>
<div class="app-container">
<el-card>
<div slot="header" class="card-title">{{$t('跟进记录列表')}}</div>
<!-- 列表 -->
<div class="offer-header">
<span style="font-size: 15px;">{{$t('报价单号')}}{{number}}</span>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
>{{$t('新增')}}</el-button>
</div>
<el-table v-loading="loading" :data="list">
<el-table-column :label="$t('序号')" align="center" prop="id" type="index">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('跟进类型')" align="center" prop="type" >
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_OFFER_TYPE" :value="scope.row.type"></dict-tag>
</template>
</el-table-column>
<el-table-column :label="$t('联系人')" align="center" prop="contactName" />
<el-table-column :label="$t('跟进方式')" align="center" prop="followUpMethod">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_FOLLOW_METHOD" :value="scope.row.followUpMethod"></dict-tag>
</template>
</el-table-column>
<el-table-column :label="$t('跟进时间')" align="center" prop="followUpTime" width="180">
<template slot-scope="scope">
<span>{{ scope.row.followUpTime}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('客户反馈')" align="center" prop="customerFeedback" />
<el-table-column :label="$t('处理结果')" align="center" prop="processingResults" />
<el-table-column :label="$t('客户经理')" align="center" prop="followUpSalesmanName">
<template slot-scope="scope">
<span>{{getCustomerService(scope.row.followUpSalesmanId)}}</span>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="params.page" :limit.sync="params.rows"
@pagination="getList"/>
</el-card>
<logListCommon :offerId="offerId" />
</div>
</template>
<script>
import {getOfferLogPage} from "@/api/ecw/offerLog";
import {DICT_TYPE} from '@/utils/dict'
import {getOffer} from '@/api/ecw/offer'
import { userList } from "@/api/system/user"
import logListCommon from "@/views/ecw/offer/logListCommon"
export default {
name: "OfferLog",
components: {
},
name: "offerLogList",
components: { logListCommon },
data() {
return {
// 遮罩层
loading: true,
list: [],
total:0,
params:{
page:1,
rows:20,
offerId:0,
type:2
},
number:'',
relationId:0,
creatorName:'test',
creatorData:[]
};
return {}
},
created() {
if(this.$route.query.offerId){
this.params.offerId = this.$route.query.offerId
this.getList();
this.getRelationID()
computed: {
offerId() {
return parseInt(this.$route.query.offerId || 0)
}
userList('customer service').then(res =>this.creatorData = res.data)
},
methods: {
/** 查询列表 */
getList() {
this.loading = true;
let params = {...this.params};
// 执行查询
getOfferLogPage(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
getCustomerService(id){
var user = this.creatorData.find(item=>item.id==id)
if(user) return user.nickname
return ''
},
getRelationID(){
getOffer(this.params.offerId).then(response => {
this.relationId = response.data.consignorId;
this.number = response.data.number;
})
},
/** 新增按钮操作 */
handleAdd() {
this.$router.push({
path: "/offer/createLog",
query:{
offerId:this.params.offerId,
number:this.number
}
});
},
}
};
}
</script>
<style scoped>
.card-title{
font-size: 18px;
font-weight: bold;
}
.offer-header{
padding-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
.card-title {
font-size: 18px;
font-weight: bold;
}
.offer-header {
padding-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
}
</style>
This diff is collapsed.
This diff is collapsed.
......@@ -317,7 +317,6 @@ export default {
specialProducts: [],
// priceStepList: [{},{}], // 阶梯价格
// specialList:[], // 特殊需求,默认四个
rules() {},
product: null,
/* productType: null, */
currencyList: [],
......
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