Commit 8ff9ac3d authored by lanbaoming's avatar lanbaoming

2024-05-23提交

parent d8e046a3
<template> <template>
<el-dialog :title="$t('选择联系人')" visible :before-close="closeDialog" :close-on-click-modal="false"> <el-dialog
<div class="header mb-10 flex-center"> :title="$t('选择联系人')"
<div class="flex-center">{{$t('关键字')}}</div> visible
<el-input v-model="form.searchKey" clearable class="w-200"></el-input> :before-close="closeDialog"
<el-button type="primary" class="ml-10" @click="handleQuery">{{$t('搜索')}}</el-button> :close-on-click-modal="false"
</div> >
<div class="list"> <div class="header mb-10 flex-center">
<div class="list-item" v-for="item in list" :key="item.customerContactsId" @click="choose(item)"> <div class="flex-center">{{ $t("关键字") }}</div>
<div class="item-box"> <el-input v-model="form.searchKey" clearable class="w-200"></el-input>
<div class="line"> <el-button type="primary" class="ml-10" @click="handleQuery">{{
<div class="label">{{$t('姓名')}}</div> $t("搜索")
<div class="value">{{item.contactsName}}</div> }}</el-button>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag> </div>
</div> <div class="list">
<!-- v1.7新增 --> <div
<div class="line"> class="list-item"
<div class="label">{{$t('姓名(英文)')}}</div> v-for="item in list"
<div class="value">{{item.contactsNameEn}}</div> :key="item.customerContactsId"
</div> @click="choose(item)"
<div class="line"> >
<div class="label">{{$t('电话')}}</div> <div class="item-box">
<div class="value">+{{item.areaCode}} {{item.phoneNew}}</div> <div class="line">
</div> <div class="label">{{ $t("姓名") }}</div>
<div class="line"> <div class="value">{{ item.contactsName }}</div>
<div class="label">{{$t('邮箱')}}</div> <el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{
<div class="value">{{item.email}}</div> $t("")
</div> }}</el-tag>
<div class="line"> </div>
<div class="label">{{$t('公司')}}</div> <!-- v1.7新增 -->
<div class="value">{{item.company}}</div> <div class="line">
</div> <div class="label">{{ $t("姓名(英文)") }}</div>
<!-- v1.7新增 --> <div class="value">{{ item.contactsNameEn }}</div>
<div class="line"> </div>
<div class="label">{{$t('公司(英文)')}}</div> <div class="line">
<div class="value">{{item.companyEn}}</div> <div class="label">{{ $t("电话") }}</div>
</div> <div class="value">+{{ item.areaCode }} {{ item.phoneNew }}</div>
</div> </div>
<div class="line">
<div class="label">{{ $t("邮箱") }}</div>
<div class="value">{{ item.email }}</div>
</div>
<div class="line">
<div class="label">{{ $t("公司") }}</div>
<div class="value">{{ item.company }}</div>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{ $t("公司(英文)") }}</div>
<div class="value">{{ item.companyEn }}</div>
</div>
</div> </div>
</div> </div>
<pagination v-show="total > 0" :total="total" :page.sync="form.pageNo" :limit.sync="form.pageSize" </div>
@pagination="loadList" /> <pagination
</el-dialog> v-show="total > 0"
:total="total"
:page.sync="form.pageNo"
:limit.sync="form.pageSize"
@pagination="loadList"
/>
</el-dialog>
</template> </template>
<script> <script>
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts' import { getCustomerContactsSelect } from "@/api/ecw/customerContacts";
export default { export default {
props:{ props: {
type: Number type: Number,
},
data() {
return {
show: true,
form: {
pageNo: 1,
pageSize: 10,
searchKey: "",
},
list: [],
total: 0,
};
},
created() {
this.show = true;
this.loadList();
},
methods: {
handleQuery() {
this.form.pageNo = 1;
this.loadList();
}, },
data(){ loadList() {
return { //加载联系人数据
show: true, getCustomerContactsSelect(this.form).then((res) => {
form:{ this.list = res.data.list;
pageNo: 1, this.total = res.data.total;
pageSize: 10, });
searchKey: ''
},
list:[],
total: 0
}
}, },
created(){ closeDialog() {
this.show = true this.show = false;
this.loadList() this.$emit("close");
}, },
methods:{ choose(contact) {
handleQuery(){ this.$emit("choose", contact);
this.form.pageNo = 1 },
this.loadList() },
}, };
loadList(){
getCustomerContactsSelect(this.form).then(res => {
this.list = res.data.list
this.total = res.data.total
})
},
closeDialog(){
this.show = false
this.$emit('close');
},
choose(contact){
this.$emit('choose', contact)
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.header{ .header {
display: flex; display: flex;
} }
.list{ .list {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: center; justify-content: center;
&-item{ &-item {
background: #eee; background: #eee;
width: 300px; width: 300px;
margin: 10px; margin: 10px;
padding: 5px; padding: 5px;
border-radius: 10px; border-radius: 10px;
border: 5px solid transparent; border: 5px solid transparent;
background: linear-gradient(white,white) padding-box,repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0/5em 5em; background: linear-gradient(white, white) padding-box,
.item-box{ repeating-linear-gradient(
/* background: #fbfaf5; */ -45deg,
padding: 20px; red 0,
} red 12.5%,
.line{ transparent 0,
display: flex; transparent 25%,
/* .label{ #58a 0,
#58a 37.5%,
transparent 0,
transparent 50%
)
0/5em 5em;
.item-box {
/* background: #fbfaf5; */
padding: 20px;
}
.line {
display: flex;
/* .label{
width: 100px; width: 100px;
} */ } */
.value{ .value {
flex: 1; flex: 1;
margin-left: 10px; margin-left: 10px;
} }
}
} }
}
} }
</style> </style>
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item :label="$t('客户编号')" prop="number"> <el-form-item :label="$t('客户编号')" prop="number">
<el-input v-model="queryParams.number" :placeholder="$t('请输入客户编号')" clearable @keyup.enter.native="handleQuery"/> <el-input
v-model="queryParams.number"
:placeholder="$t('请输入客户编号')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户名称')" prop="name"> <el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="queryParams.name" :placeholder="$t('请输入客户名称')" clearable @keyup.enter.native="handleQuery"/> <el-input
v-model="queryParams.name"
:placeholder="$t('请输入客户名称')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户等级')" prop="level"> <el-form-item :label="$t('客户等级')" prop="level">
<el-select clearable v-model="queryParams.level" :placeholder="$t('请选择客户等级')" clearable size="small"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" clearable
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/> v-model="queryParams.level"
:placeholder="$t('请选择客户等级')"
clearable
size="small"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('联系方式')"> <el-form-item :label="$t('联系方式')">
<el-input :placeholder="$t('请输入联系方式')" v-model="queryParams.defaultContactPhone"></el-input> <el-input
:placeholder="$t('请输入联系方式')"
v-model="queryParams.defaultContactPhone"
></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户类别')" prop="level"> <el-form-item :label="$t('客户类别')" prop="level">
<dict-selector clearable :type="DICT_TYPE.CUSTOMER_TYPE" v-model="queryParams.type" ></dict-selector> <dict-selector
clearable
:type="DICT_TYPE.CUSTOMER_TYPE"
v-model="queryParams.type"
></dict-selector>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')" prop="customerService"> <el-form-item :label="$t('客户经理')" prop="customerService">
<el-select clearable v-model="queryParams.customerService" :placeholder="$t('请选择客户经理')" clearable size="small"> <el-select
<el-option v-for="dict in customerServiceList" clearable
:key="dict.id" :label="dict.nickname" :value="dict.id"/> v-model="queryParams.customerService"
:placeholder="$t('请选择客户经理')"
clearable
size="small"
>
<el-option
v-for="dict in customerServiceList"
:key="dict.id"
:label="dict.nickname"
:value="dict.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户来源')" prop="source"> <el-form-item :label="$t('客户来源')" prop="source">
<el-select clearable v-model="queryParams.source" :placeholder="$t('请选择客户来源')" size="small"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" clearable
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/> v-model="queryParams.source"
:placeholder="$t('请选择客户来源')"
size="small"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('国家')" prop="source"> <el-form-item :label="$t('国家')" prop="source">
<el-select clearable v-model="queryParams.country" :placeholder="$t('请选择国家')"> <el-select
<el-option v-for="dict in countryList" clearable
:key="dict.id" :label=" isChinese ? dict.nameZh : dict.nameEn" :value="parseInt(dict.id)" /> v-model="queryParams.country"
:placeholder="$t('请选择国家')"
>
<el-option
v-for="dict in countryList"
:key="dict.id"
:label="isChinese ? dict.nameZh : dict.nameEn"
:value="parseInt(dict.id)"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户状态')" prop="status"> <el-form-item :label="$t('客户状态')" prop="status">
<el-select clearable v-model="queryParams.status" :placeholder="$t('请选择客户状态')" clearable size="small"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" clearable
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/> v-model="queryParams.status"
:placeholder="$t('请选择客户状态')"
clearable
size="small"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('创建时间')"> <el-form-item :label="$t('创建时间')">
<el-date-picker <el-date-picker
type="datetimerange" type="datetimerange"
clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" clearable
range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" /> v-model="dateRangeCreateTime"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
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="isChinese ? item.nameZh : item.nameEn" :key="index" :value="item.id" ></el-option> <el-option
v-for="(item, index) in creditList"
:label="isChinese ? item.nameZh : item.nameEn"
:key="index"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('市场获客')" prop="department"> <el-form-item :label="$t('市场获客')" prop="department">
<dict-selector clearable :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="queryParams.resourceType" formatter="number"></dict-selector> <dict-selector
clearable
:type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE"
v-model="queryParams.resourceType"
formatter="number"
></dict-selector>
</el-form-item> </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">{{
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> $t("搜索")
}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{
$t("重置")
}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<div v-if="path === '/customer/customer'" style="color: red;margin-bottom: 5px;"> <div
v-if="path === '/customer/customer'"
style="color: red; margin-bottom: 5px"
>
注意:创建的客户需接收 注意:创建的客户需接收
</div> </div>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button v-if="path === '/customer/potential'" type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddPotential">{{$t('新增潜在客户')}}</el-button> <el-button
<el-button v-else type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-if="path === '/customer/potential'"
v-hasPermi="[ selectAuthorityFn('ecw:customer:create')]">{{$t('新增')}} type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAddPotential"
>{{ $t("新增潜在客户") }}</el-button
>
<el-button
v-else
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="[selectAuthorityFn('ecw:customer:create')]"
>{{ $t("新增") }}
</el-button> </el-button>
</el-col> </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
v-hasPermi="[selectAuthorityFn('ecw:customer:batch-transfer')]">{{$t('批量移交')}}</el-button> :disabled="selectCustomerList.length === 0"
type="primary"
size="mini"
@click="transferShow = true"
v-hasPermi="[selectAuthorityFn('ecw:customer:batch-transfer')]"
>{{ $t("批量移交") }}</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" <el-button
v-hasPermi="[selectAuthorityFn('ecw:customer:export')]">{{$t('导出')}}</el-button> type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="[selectAuthorityFn('ecw:customer:export')]"
>{{ $t("导出") }}</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<!-- <el-button :disabled="!selectCustomerList.length" @click="setChangeCustomerAir(true)" v-if="$route.path === '/customer/customer'" type="primary" plain size="mini" :loading="exportLoading"--> <!-- <el-button :disabled="!selectCustomerList.length" @click="setChangeCustomerAir(true)" v-if="$route.path === '/customer/customer'" type="primary" plain size="mini" :loading="exportLoading"-->
<!-- v-hasPermi="['ecw:customer:transport']" >{{$t('设为空运客户')}}</el-button>--> <!-- v-hasPermi="['ecw:customer:transport']" >{{$t('设为空运客户')}}</el-button>-->
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<!-- <el-button :disabled="!selectCustomerList.length" @click="setChangeCustomerAir(false)" v-if="$route.path === '/customer/customer'" type="primary" plain size="mini" :loading="exportLoading"--> <!-- <el-button :disabled="!selectCustomerList.length" @click="setChangeCustomerAir(false)" v-if="$route.path === '/customer/customer'" type="primary" plain size="mini" :loading="exportLoading"-->
<!-- v-hasPermi="['ecw:customer:transport']">{{$t('设为非空运客户')}}</el-button>--> <!-- v-hasPermi="['ecw:customer:transport']">{{$t('设为非空运客户')}}</el-button>-->
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button v-hasPermi="['ecw:customer:fcl']" :disabled="!selectCustomerList.length" @click="setFullContainerLoad(true)" v-if="$route.path === '/customer/customer'" type="primary" plain size="mini" :loading="exportLoading">{{$t('设置海运整柜客户')}}</el-button> <el-button
v-hasPermi="['ecw:customer:fcl']"
:disabled="!selectCustomerList.length"
@click="setFullContainerLoad(true)"
v-if="$route.path === '/customer/customer'"
type="primary"
plain
size="mini"
:loading="exportLoading"
>{{ $t("设置海运整柜客户") }}</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button v-hasPermi="['ecw:customer:fcl-mistake']" :disabled="!selectCustomerList.length" @click="setFullContainerLoad(false)" v-if="$route.path === '/customer/customer'" type="primary" plain size="mini" :loading="exportLoading" <el-button
>{{$t('设置海运非整柜客户')}}</el-button> v-hasPermi="['ecw:customer:fcl-mistake']"
:disabled="!selectCustomerList.length"
@click="setFullContainerLoad(false)"
v-if="$route.path === '/customer/customer'"
type="primary"
plain
size="mini"
:loading="exportLoading"
>{{ $t("设置海运非整柜客户") }}</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button v-has-permi="[selectAuthorityFn('ecw:customer:create-potential')]" v-if="path === '/customer/customer'" type="primary" plain icon="el-icon-plus" size="mini" @click="handleAddPotential">{{$t('新增潜在客户')}}</el-button> <el-button
v-has-permi="[selectAuthorityFn('ecw:customer:create-potential')]"
v-if="path === '/customer/customer'"
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAddPotential"
>{{ $t("新增潜在客户") }}</el-button
>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<!-- 列表 --> <!-- 列表 -->
<el-table ref="multipleTable" v-loading="loading" :data="list" @selection-change="handleSelectionChange"> <el-table
<el-table-column ref="multipleTable"
type="selection" v-loading="loading"
width="55"> :data="list"
</el-table-column> @selection-change="handleSelectionChange"
<el-table-column :label="$t('客户编号')" align="center" prop="number" > >
<template v-slot="{row}"> <el-table-column type="selection" width="55"> </el-table-column>
{{row.number}} <el-table-column :label="$t('客户编号')" align="center" prop="number">
<template v-slot="{ row }">
{{ row.number }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name"> <el-table-column :label="$t('客户名称')" align="center" prop="name">
<template slot-scope="{row}"> <template slot-scope="{ row }">
<p style="display:inline-block;white-space:pre-wrap;">{{$l(row, 'name')}}</p> <p style="display: inline-block; white-space: pre-wrap">
<el-tag v-if="row.isInOpenSea" size="mini">{{ $t('') }}</el-tag> {{ $l(row, "name") }}
</p>
<el-tag v-if="row.isInOpenSea" size="mini">{{ $t("") }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<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">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" /> <dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('信用等级')" :prop="isChinese ? 'creditLevelNameZh' : 'creditLevelNameEn'"></el-table-column> <el-table-column
:label="$t('信用等级')"
:prop="isChinese ? 'creditLevelNameZh' : 'creditLevelNameEn'"
></el-table-column>
<el-table-column :label="$t('客户状态')" align="center" prop="status"> <el-table-column :label="$t('客户状态')" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_STATUS" :value="scope.row.status" /> <dict-tag
:type="DICT_TYPE.CUSTOMER_STATUS"
:value="scope.row.status"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('主联系人')" prop="defaultContactName"></el-table-column> <el-table-column
:label="$t('主联系人')"
prop="defaultContactName"
></el-table-column>
<el-table-column :label="$t('主联系方式')" prop="defaultContactPhone"> <el-table-column :label="$t('主联系方式')" prop="defaultContactPhone">
<template v-slot="{row}"> <template v-slot="{ row }">
+{{row.defaultContactPhone}} <br/> +{{ row.defaultContactPhone }} <br />
<contacts :id="row.id" > <contacts :id="row.id">
<el-button type="text">更多</el-button> <el-button type="text">更多</el-button>
</contacts> </contacts>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('创建时间')" align="center" prop="createTime" width="180"> <el-table-column
:label="$t('创建时间')"
align="center"
prop="createTime"
width="180"
>
<template slot-scope="scope"> <template slot-scope="scope">
<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"> <el-table-column
<template v-slot = {row}> :label="$t('入公海时间')"
<span>{{ parseTime(row.enterOpenSeaTime ? row.enterOpenSeaTime : row.estimateEnterOpenSeaTime ) }}</span> align="center"
prop="createTime"
width="180"
>
<template v-slot="{ row }">
<span>{{
parseTime(
row.enterOpenSeaTime
? row.enterOpenSeaTime
: row.estimateEnterOpenSeaTime
)
}}</span>
</template> </template>
</el-table-column> </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
:label="$t('客户经理ID')"
align="center"
prop="customerService"
>
</el-table-column> </el-table-column>
<el-table-column :label="$t('出货渠道')"> <el-table-column :label="$t('出货渠道')">
<template slot-scope="{row}"> <template slot-scope="{ row }">
{{channel(row.transportType)}} {{ channel(row.transportType) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('国家')" align="center" prop="country" :formatter="countryFormatter"></el-table-column> <el-table-column
<el-table-column width="200px" :label="$t('操作')" align="center" class-name="small-padding fixed-width"> :label="$t('国家')"
align="center"
prop="country"
:formatter="countryFormatter"
></el-table-column>
<el-table-column
width="200px"
:label="$t('操作')"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button size="mini" type="text" v-show="'development' === env && scope.row.isInOpenSea" @click="seasPond(scope.row)"--> <!-- <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>--> <!-- v-hasPermi="['ecw:customer:query']">{{$t('掉入公海池')}}</el-button>-->
<el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)" <el-button
v-hasPermi="[selectAuthorityFn('ecw:customer:index-query')]">{{$t('查看')}}</el-button> size="mini"
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" type="text"
v-hasPermi="[selectAuthorityFn('ecw:customer:update')]">{{$t('修改')}}</el-button> icon="el-icon-view"
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" @click="handleView(scope.row)"
v-hasPermi="[selectAuthorityFn('ecw:customer:delete')]">{{$t('删除')}}</el-button> v-hasPermi="[selectAuthorityFn('ecw:customer:index-query')]"
<el-button size="mini" v-has-permi="[selectAuthorityFn('ecw:customer:follow-up')]" type="text" icon="el-icon-collection" @click="followUp(scope.row)">{{$t('跟进')}}</el-button> >{{ $t("查看") }}</el-button
<el-button size="mini" v-has-permi="[selectAuthorityFn('ecw:customer:customer-complaint')]" type="text" icon="el-icon-user" @click="complaint(scope.row)">{{$t('客诉')}}</el-button> >
<el-button :disabled="scope.row.isInOpenSea" v-has-permi="[selectAuthorityFn('ecw:customer:postpone')]" size="mini" type="text" icon="el-icon-user" @click="delay(scope.row)">{{$t('延期')}}</el-button> <el-button
<el-button v-has-permi="['ecw:customer:treat-recovery']" v-if="scope.row.customerService !== null && scope.row.customerServiceAssignedTime !== null && !scope.row.isCustomerServiceConfirmed && !scope.row.isInOpenSea && path === '/customer/customer'" size="mini" type="text" @click="recovery(scope.row)" > {{$t('回收客户')}} </el-button> size="mini"
<el-button v-has-permi="['ecw:customer:performanceType']" v-if="path === '/customer/customer'" size="mini" type="text" @click="dialogVisible = true; customData = scope.row;currentisNew = scope.row.isNew" > {{$t('业绩类型')}} </el-button> type="text"
icon="el-icon-edit"
<el-button v-has-permi="[selectAuthorityFn('ecw:customer:treat-quoted-price')]" size="mini" type="text" icon="el-icon-user" @click="quote(scope.row)">{{$t('报价')}}</el-button> @click="handleUpdate(scope.row)"
v-hasPermi="[selectAuthorityFn('ecw:customer:update')]"
>{{ $t("修改") }}</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="[selectAuthorityFn('ecw:customer:delete')]"
>{{ $t("删除") }}</el-button
>
<el-button
size="mini"
v-has-permi="[selectAuthorityFn('ecw:customer:follow-up')]"
type="text"
icon="el-icon-collection"
@click="followUp(scope.row)"
>{{ $t("跟进") }}</el-button
>
<el-button
size="mini"
v-has-permi="[selectAuthorityFn('ecw:customer:customer-complaint')]"
type="text"
icon="el-icon-user"
@click="complaint(scope.row)"
>{{ $t("客诉") }}</el-button
>
<el-button
:disabled="scope.row.isInOpenSea"
v-has-permi="[selectAuthorityFn('ecw:customer:postpone')]"
size="mini"
type="text"
icon="el-icon-user"
@click="delay(scope.row)"
>{{ $t("延期") }}</el-button
>
<el-button
v-has-permi="['ecw:customer:treat-recovery']"
v-if="
scope.row.customerService !== null &&
scope.row.customerServiceAssignedTime !== null &&
!scope.row.isCustomerServiceConfirmed &&
!scope.row.isInOpenSea &&
path === '/customer/customer'
"
size="mini"
type="text"
@click="recovery(scope.row)"
>
{{ $t("回收客户") }}
</el-button>
<el-button
v-has-permi="['ecw:customer:performanceType']"
v-if="path === '/customer/customer'"
size="mini"
type="text"
@click="
dialogVisible = true;
customData = scope.row;
currentisNew = scope.row.isNew;
"
>
{{ $t("业绩类型") }}
</el-button>
<!--lanbm 2024-05-23 添加报价按钮逻辑控制-->
<el-button
v-has-permi="[selectAuthorityFn('ecw:customer:treat-quoted-price')]"
size="mini"
type="text"
icon="el-icon-user"
@click="quote(scope.row)"
>{{ $t("报价") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination
@pagination="getList"/> v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body :close-on-click-modal="false"> <el-dialog
:title="title"
:visible.sync="open"
width="90%"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="150px"> <el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户名称')" prop="name"> <el-form-item :label="$t('客户名称')" prop="name">
<el-input v-model="form.name" :placeholder="$t('请输入客户名称')" /> <el-input
v-model="form.name"
:placeholder="$t('请输入客户名称')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('国家')" prop="country"> <el-form-item :label="$t('国家')" prop="country">
<el-select v-model="form.country" :placeholder="$t('请选择国家')"> <el-select v-model="form.country" :placeholder="$t('请选择国家')">
<el-option v-for="dict in getDictDatas(DICT_TYPE.COUNTRY)" <el-option
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> v-for="dict in getDictDatas(DICT_TYPE.COUNTRY)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户等级')" prop="level"> <el-form-item :label="$t('客户等级')" prop="level">
<el-select v-model="form.level" :placeholder="$t('请选择客户等级')"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)" v-model="form.level"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> :placeholder="$t('请选择客户等级')"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_LEVEL)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('联系地址')" prop="address"> <el-form-item :label="$t('联系地址')" prop="address">
<el-input v-model="form.address" :placeholder="$t('请输入联系地址')" /> <el-input
v-model="form.address"
:placeholder="$t('请输入联系地址')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户类别')" prop="type"> <el-form-item :label="$t('客户类别')" prop="type">
<el-select v-model="form.type" :placeholder="$t('请选择客户类别')"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_TYPE)" v-model="form.type"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" /> :placeholder="$t('请选择客户类别')"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_TYPE)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="12">--> <!-- <el-col :span="12">-->
<!-- <el-form-item :label="$t('所属代理')" prop="agentId">--> <!-- <el-form-item :label="$t('所属代理')" prop="agentId">-->
<!-- <el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')">--> <!-- <el-select v-model="form.agentId" :placeholder="$t('请选择所属代理')">-->
<!-- <el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"--> <!-- <el-option v-for="dict in getDictDatas(DICT_TYPE.COMMON_STATUS)"-->
<!-- :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />--> <!-- :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />-->
<!-- </el-select>--> <!-- </el-select>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- </el-col>--> <!-- </el-col>-->
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('常用提货网点')" prop="pickupPoint"> <el-form-item :label="$t('常用提货网点')" prop="pickupPoint">
<el-select v-model="form.pickupPoint" :placeholder="$t('请输入常用提货网点')"> <el-select
<el-option v-for="node in nodeList" v-model="form.pickupPoint"
:key="node.value" :label="node.label" :value="node.value" /> :placeholder="$t('请输入常用提货网点')"
>
<el-option
v-for="node in nodeList"
:key="node.value"
:label="node.label"
:value="node.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('公司名称')" prop="company"> <el-form-item :label="$t('公司名称')" prop="company">
<el-input v-model="form.company" :placeholder="$t('请输入公司名称')" /> <el-input
v-model="form.company"
:placeholder="$t('请输入公司名称')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户生日')" prop="birthday"> <el-form-item :label="$t('客户生日')" prop="birthday">
<el-date-picker <el-date-picker
v-model="form.birthday" v-model="form.birthday"
type="date" type="date"
value-format="timestamp" value-format="timestamp"
:placeholder="$t('请输入客户生日')"> :placeholder="$t('请输入客户生日')"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('主营类别')" prop="productType"> <el-form-item :label="$t('主营类别')" prop="productType">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="11">
<el-select v-model="form.productType" :placeholder="$t('请选择产品类别')">
<!-- <el-option :label="$t('请选择字典生成')" value="" />-->
</el-select>
</el-col>
<el-col :span="11"> <el-col :span="11">
<el-select v-model="form.productType" :placeholder="$t('请选择主营类别')"> <el-select
<!-- <el-option :label="$t('请选择字典生成')" value="" />--> v-model="form.productType"
:placeholder="$t('请选择产品类别')"
>
<!-- <el-option :label="$t('请选择字典生成')" value="" />-->
</el-select>
</el-col>
<el-col :span="11">
<el-select
v-model="form.productType"
:placeholder="$t('请选择主营类别')"
>
<!-- <el-option :label="$t('请选择字典生成')" value="" />-->
</el-select> </el-select>
</el-col> </el-col>
</el-row> </el-row>
...@@ -274,25 +602,46 @@ ...@@ -274,25 +602,46 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户来源')" prop="source"> <el-form-item :label="$t('客户来源')" prop="source">
<el-select v-model="form.source" :placeholder="$t('请选择客户来源')"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)" v-model="form.source"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> :placeholder="$t('请选择客户来源')"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('结算方式')" prop="balance"> <el-form-item :label="$t('结算方式')" prop="balance">
<el-select v-model="form.balance" :placeholder="$t('请选择结算方式')"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)" v-model="form.balance"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> :placeholder="$t('请选择结算方式')"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_BALANCE)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户经理')" prop="customerService"> <el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')"> <el-select
<el-option v-for="dict in customerServiceList" v-model="form.customerService"
:key="dict.id" :label="dict.nickname" :value="dict.id" /> :placeholder="$t('请选择客户经理')"
>
<el-option
v-for="dict in customerServiceList"
:key="dict.id"
:label="dict.nickname"
:value="dict.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -300,25 +649,36 @@ ...@@ -300,25 +649,36 @@
<el-form-item :label="$t('图片')" prop="picture"> <el-form-item :label="$t('图片')" prop="picture">
<upload v-model="form.picture" :limit="1"></upload> <upload v-model="form.picture" :limit="1"></upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('客户状态')" prop="status"> <el-form-item :label="$t('客户状态')" prop="status">
<el-select
<el-select v-model="form.status" :placeholder="$t('请选择客户状态')"> v-model="form.status"
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)" :placeholder="$t('请选择客户状态')"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> >
<el-option
v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_STATUS)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('推介人')" prop="promoter"> <el-form-item :label="$t('推介人')" prop="promoter">
<el-input v-model="form.promoter" :placeholder="$t('请输入推介人')" /> <el-input
v-model="form.promoter"
:placeholder="$t('请输入推介人')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('创建人')" prop="founder"> <el-form-item :label="$t('创建人')" prop="founder">
<el-input v-model="form.founder" :placeholder="$t('请输入创建人')" /> <el-input
v-model="form.founder"
:placeholder="$t('请输入创建人')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -327,23 +687,34 @@ ...@@ -327,23 +687,34 @@
v-model="form.createTime" v-model="form.createTime"
type="datetime" type="datetime"
value-format="timestamp" value-format="timestamp"
:placeholder="$t('选择创建时间')"> :placeholder="$t('选择创建时间')"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('备注')" prop="remarks"> <el-form-item :label="$t('备注')" prop="remarks">
<el-input v-model="form.remarks" :placeholder="$t('请输入备注')" /> <el-input
v-model="form.remarks"
:placeholder="$t('请输入备注')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="$t('到仓确认')" prop="arrivalConfirm"> <el-form-item :label="$t('到仓确认')" prop="arrivalConfirm">
<el-switch v-model="form.arrivalConfirm" :active-value="0" :inactive-value="1" /> <el-switch
v-model="form.arrivalConfirm"
:active-value="0"
:inactive-value="1"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item :label="$t('重货标准(CBM)')" prop="weightUnit"> <el-form-item :label="$t('重货标准(CBM)')" prop="weightUnit">
<el-input v-model="form.weightUnit" :placeholder="$t('请输入重货标准(CBM)')" /> <el-input
v-model="form.weightUnit"
:placeholder="$t('请输入重货标准(CBM)')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
...@@ -353,14 +724,11 @@ ...@@ -353,14 +724,11 @@
v-show="showLine" v-show="showLine"
border border
:data="form.customerLines" :data="form.customerLines"
style="width: 500px"> style="width: 500px"
<el-table-column >
prop="departureId" <el-table-column prop="departureId" :label="$t('始发地')">
:label="$t('始发地')">
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="objectiveId" :label="$t('目的地')">
prop="objectiveId"
:label="$t('目的地')">
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-form-item> </el-form-item>
...@@ -369,113 +737,132 @@ ...@@ -369,113 +737,132 @@
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>{{ $t('联系人') }}</span> <span>{{ $t("联系人") }}</span>
<el-button style="float: right;" size="small" type="primary" @click="form.customerContacts.push({department: undefined})">+</el-button> <el-button
</div> style="float: right"
<el-table size="small"
:data="form.customerContacts" type="primary"
style="width: 100%" @click="form.customerContacts.push({ department: undefined })"
> >+</el-button
<el-table-column
prop="department"
:label="$t('部门')"
width=""
> >
</div>
<el-table :data="form.customerContacts" style="width: 100%">
<el-table-column prop="department" :label="$t('部门')" width="">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<el-input v-model="row.department" :placeholder="$t('请输入部门')" size="mini"/> <el-input
v-model="row.department"
:placeholder="$t('请输入部门')"
size="mini"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="position" :label="$t('职位')" width="">
prop="position" <template v-slot="{ row }">
:label="$t('职位')" <el-input
width="" v-model="row.position"
> :placeholder="$t('请输入职位')"
<template v-slot="{row}"> size="mini"
<el-input v-model="row.position" :placeholder="$t('请输入职位')" size="mini"/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="name" :label="$t('联系人')">
prop="name" <template v-slot:header
:label="$t('联系人')" >{{ $t("联系人") }}<span style="color: #ff0000">*</span>
>
<template v-slot:header>{{ $t('联系人') }}<span style="color: #ff0000">*</span>
</template> </template>
<template v-slot="{row}"> <template v-slot="{ row }">
<el-input v-model="row.name" :placeholder="$t('请输入联系人')" size="mini"/> <el-input
v-model="row.name"
:placeholder="$t('请输入联系人')"
size="mini"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="areaCode" :label="$t('区号')">
prop="areaCode" <template v-slot:header
:label="$t('区号')" >{{ $t("区号") }}<span style="color: #ff0000">*</span>
>
<template v-slot:header>{{ $t('区号') }}<span style="color: #ff0000">*</span>
</template> </template>
<template v-slot="{row}"> <template v-slot="{ row }">
<el-select v-model="row.areaCode" :placeholder="$t('请选择区号')"> <el-select
<el-option v-for="dict in getDictDatas(DICT_TYPE.AREA_CODE)" v-model="row.areaCode"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> :placeholder="$t('请选择区号')"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.AREA_CODE)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="phoneNew" :label="$t('联系方式')">
prop="phoneNew" <template v-slot:header
:label="$t('联系方式')" >{{ $t("联系方式") }}<span style="color: #ff0000">*</span>
>
<template v-slot:header>{{ $t('联系方式') }}<span style="color: #ff0000">*</span>
</template> </template>
<template v-slot="{row}"> <template v-slot="{ row }">
<el-input v-model="row.phoneNew" :placeholder="$t('请输入联系方式')" size="mini"/> <el-input
v-model="row.phoneNew"
:placeholder="$t('请输入联系方式')"
size="mini"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="" :label="$t('关联账号')"> </el-table-column>
prop="" <el-table-column prop="social" :label="$t('社交软件')">
:label="$t('关联账号')" <template v-slot="{ row }">
> <el-select
</el-table-column> v-model="row.social"
<el-table-column :placeholder="$t('请选择社交软件')"
prop="social" >
:label="$t('社交软件')" <el-option
> v-for="dict in getDictDatas(DICT_TYPE.SOCIAL)"
<template v-slot="{row}"> :key="dict.value"
<el-select v-model="row.social" :placeholder="$t('请选择社交软件')"> :label="isChinese ? dict.label : dict.labelEn"
<el-option v-for="dict in getDictDatas(DICT_TYPE.SOCIAL)" :value="parseInt(dict.value)"
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" /> />
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="socialNumber" :label="$t('社交软件号码')">
prop="socialNumber" <template v-slot="{ row }">
:label="$t('社交软件号码')" <el-input
> v-model="row.socialNumber"
<template v-slot="{row}"> :placeholder="$t('请输入社交软件号码')"
<el-input v-model="row.socialNumber" :placeholder="$t('请输入社交软件号码')" size="mini"/> size="mini"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="email" :label="$t('邮箱')">
prop="email" <template v-slot="{ row }">
:label="$t('邮箱')" <el-input
> v-model="row.email"
<template v-slot="{row}"> :placeholder="$t('请输入邮箱')"
<el-input v-model="row.email" :placeholder="$t('请输入邮箱')" size="mini"/> size="mini"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="isDefault" :label="$t('设为默认')">
prop="isDefault" <template v-slot="{ row }">
:label="$t('设为默认')" <el-select
> v-model="row.isDefault"
<template v-slot="{row}"> :placeholder="$t('设为默认')"
<el-select v-model="row.isDefault" :placeholder="$t('设为默认')"> >
<el-option v-for="dict in getDictDatas(DICT_TYPE.IS_DEFAULT)" <el-option
:key="dict.value" :label="dict.label" :value="parseInt(dict.isDefault)" /> v-for="dict in getDictDatas(DICT_TYPE.IS_DEFAULT)"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.isDefault)"
/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="name" :label="$t('操作')">
prop="name"
:label="$t('操作')"
>
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<el-button type="danger" @click="form.customerContacts.splice($index, 1)">{{ $t('删除') }}</el-button> <el-button
type="danger"
@click="form.customerContacts.splice($index, 1)"
>{{ $t("删除") }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -484,12 +871,18 @@ ...@@ -484,12 +871,18 @@
<el-row :gutter="10" style="margin-top: 15px"> <el-row :gutter="10" style="margin-top: 15px">
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('发票抬头')" prop="invoiceTitle"> <el-form-item :label="$t('发票抬头')" prop="invoiceTitle">
<el-input v-model="form.invoiceTitle" :placeholder="$t('请输入发票抬头')" /> <el-input
v-model="form.invoiceTitle"
:placeholder="$t('请输入发票抬头')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('纳税人识别号')" prop="licenseNumber"> <el-form-item :label="$t('纳税人识别号')" prop="licenseNumber">
<el-input v-model="form.licenseNumber" :placeholder="$t('请输入纳税人识别号')" /> <el-input
v-model="form.licenseNumber"
:placeholder="$t('请输入纳税人识别号')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -499,95 +892,131 @@ ...@@ -499,95 +892,131 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('账户')" prop="bankNumber"> <el-form-item :label="$t('账户')" prop="bankNumber">
<el-input v-model="form.bankNumber" :placeholder="$t('请输入账户')" /> <el-input
v-model="form.bankNumber"
:placeholder="$t('请输入账户')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('项目')" prop="project"> <el-form-item :label="$t('项目')" prop="project">
<el-input v-model="form.project" :placeholder="$t('请输入项目')" /> <el-input
v-model="form.project"
:placeholder="$t('请输入项目')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('开票地址')" prop="billingAddress"> <el-form-item :label="$t('开票地址')" prop="billingAddress">
<el-input v-model="form.billingAddress" :placeholder="$t('请输入开票地址')" /> <el-input
v-model="form.billingAddress"
:placeholder="$t('请输入开票地址')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('开票电话')" prop="billingTell"> <el-form-item :label="$t('开票电话')" prop="billingTell">
<el-input v-model="form.billingTell" :placeholder="$t('请输入开票电话')" /> <el-input
v-model="form.billingTell"
:placeholder="$t('请输入开票电话')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="$t('税率')" prop="taxRate"> <el-form-item :label="$t('税率')" prop="taxRate">
<el-input v-model="form.taxRate" :placeholder="$t('请输入税率')" /> <el-input
v-model="form.taxRate"
:placeholder="$t('请输入税率')"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{$t('确 定')}}</el-button> <el-button type="primary" @click="submitForm">{{
<el-button @click="cancel">{{$t('取 消')}}</el-button> $t("确 定")
}}</el-button>
<el-button @click="cancel">{{ $t("取 消") }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<customer-follow-list :customer-id="customerId" :id="customerId" ref="CustomerFollowList"></customer-follow-list> <customer-follow-list
<customer-complaints :customer-id="customerId" ref="customerComplaints"></customer-complaints> :customer-id="customerId"
<transfer-customer :show.sync="transferShow" :customer-ids.sync="selectCustomerList"></transfer-customer> :id="customerId"
<add-potential-custom ref="potentialCustom" @change="getList" ></add-potential-custom> ref="CustomerFollowList"
></customer-follow-list>
<customer-complaints
:customer-id="customerId"
ref="customerComplaints"
></customer-complaints>
<transfer-customer
:show.sync="transferShow"
:customer-ids.sync="selectCustomerList"
></transfer-customer>
<add-potential-custom
ref="potentialCustom"
@change="getList"
></add-potential-custom>
<!--业绩类型 --> <!--业绩类型 -->
<el-dialog <el-dialog title="业绩类型" :visible.sync="dialogVisible" width="30%">
title="业绩类型" <div>
:visible.sync="dialogVisible" <el-form>
width="30%"> <el-form-item label="客户编号">{{ customData.number }}</el-form-item>
<div> <el-form-item label="客户名称">{{ customData.name }}</el-form-item>
<el-form> <el-form-item label="业绩类型">
<el-form-item label="客户编号">{{customData.number}}</el-form-item> <el-radio-group v-model="currentisNew">
<el-form-item label="客户名称">{{customData.name}}</el-form-item> <el-radio :label="true">{{ $t("新客户") }}</el-radio>
<el-form-item label="业绩类型"> <el-radio :label="false">{{ $t("老客户") }}</el-radio>
<el-radio-group v-model="currentisNew"> </el-radio-group>
<el-radio :label="true" >{{$t('新客户')}}</el-radio> </el-form-item>
<el-radio :label="false" >{{$t('老客户')}}</el-radio> </el-form>
</el-radio-group> </div>
</el-form-item> <span slot="footer" class="dialog-footer">
</el-form> <el-button @click="dialogVisible = false">取 消</el-button>
</div> <el-button
<span slot="footer" class="dialog-footer"> :disabled="customData.isNew === currentisNew"
<el-button @click="dialogVisible = false">取 消</el-button> type="primary"
<el-button :disabled="customData.isNew === currentisNew" type="primary" @click="modifyCustomer">修改</el-button> @click="modifyCustomer"
</span> >修改</el-button
</el-dialog> >
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { import {
createCustomer, createCustomer,
updateCustomer, updateCustomer,
deleteCustomer, deleteCustomer,
getCustomer, getCustomer,
getCustomerPage, getCustomerPage,
exportCustomerExcel, exportCustomerExcel,
testEnterToOpenSea, testEnterToOpenSea,
getCustomerDeptPage, getCustomerDeptPage,
changeCustomerAir, changeCustomerAir,
getPotential, getPotential,
setChangeCustomerFcl, potentialExportExcel, deptExportExcel, recycleUnconfirmedCustomer, updatecustomerToOld setChangeCustomerFcl,
potentialExportExcel,
deptExportExcel,
recycleUnconfirmedCustomer,
updatecustomerToOld,
} from "@/api/ecw/customer"; } from "@/api/ecw/customer";
import { getDictDatas, DICT_TYPE } from '@/utils/dict'; import { getDictDatas, DICT_TYPE } from "@/utils/dict";
import {CommonStatusEnum} from '@/utils/constants' import { CommonStatusEnum } from "@/utils/constants";
import { uploadFile } from "@/api/infra/file"; import { uploadFile } from "@/api/infra/file";
import upload from "@/components/ImageUpload";
import upload from '@/components/ImageUpload' import { getNodeList } from "@/api/ecw/node";
import {getNodeList} from "@/api/ecw/node" import CustomerFollowList from "@/components/CustomerFollowList";
import CustomerFollowList from "@/components/CustomerFollowList" import customerComplaints from "@/components/customerComplaints";
import customerComplaints from "@/components/customerComplaints" import { listServiceUser } from "@/api/system/user";
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 { customerExportExcel } from "@/api/ecw/customer";
import {customerExportExcel} from "@/api/ecw/customer";
import transferCustomer from "@/views/ecw/customer/transferCustomer"; import transferCustomer from "@/views/ecw/customer/transferCustomer";
import Template from "@/views/cms/template/index.vue"; import Template from "@/views/cms/template/index.vue";
import AddPotentialCustom from "@/views/ecw/customer/addPotentialCustom.vue"; import AddPotentialCustom from "@/views/ecw/customer/addPotentialCustom.vue";
import Contacts from "@/views/ecw/customer/components/contacts.vue"; import Contacts from "@/views/ecw/customer/components/contacts.vue";
import { getUserProfile } from "@/api/system/user";
export default { export default {
name: "EcwCustomerIndex", name: "EcwCustomerIndex",
...@@ -598,11 +1027,11 @@ export default { ...@@ -598,11 +1027,11 @@ export default {
upload, upload,
CustomerFollowList, CustomerFollowList,
customerComplaints, customerComplaints,
transferCustomer transferCustomer,
}, },
data() { data() {
return { return {
env:process.env.NODE_ENV, env: process.env.NODE_ENV,
getDictDatas, getDictDatas,
DICT_TYPE, DICT_TYPE,
// 遮罩层 // 遮罩层
...@@ -631,254 +1060,330 @@ export default { ...@@ -631,254 +1060,330 @@ export default {
customerService: null, customerService: null,
status: null, status: null,
department: null, department: null,
creditLevel:null, creditLevel: null,
country:null, country: null,
resourceType:null, resourceType: null,
}, },
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
rules: { rules: {
name: [{ required: true, message: this.$t('客户名称不能为空'), trigger: "blur" }], name: [
country: [{ required: true, message: this.$t('国家不能为空'), trigger: "blur" }], {
level: [{ required: true, message: this.$t('客户等级不能为空'), trigger: "blur" }], required: true,
type: [{ required: true, message: this.$t('客户类别不能为空'), trigger: "blur" }], message: this.$t("客户名称不能为空"),
trigger: "blur",
},
],
country: [
{ required: true, message: this.$t("国家不能为空"), trigger: "blur" },
],
level: [
{
required: true,
message: this.$t("客户等级不能为空"),
trigger: "blur",
},
],
type: [
{
required: true,
message: this.$t("客户类别不能为空"),
trigger: "blur",
},
],
// createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }], // createTime: [{ required: true, message: this.$t("创建时间不能为空"), trigger: "blur" }],
source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }], source: [
customerService: [{ required: true, message: this.$t('客户经理不能为空'), trigger: "blur" }], {
status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }], required: true,
founder: [{ required: true, message: this.$t('创建人不能为空'), trigger: "blur" }], message: this.$t("客户来源不能为空"),
trigger: "blur",
},
],
customerService: [
{
required: true,
message: this.$t("客户经理不能为空"),
trigger: "blur",
},
],
status: [
{
required: true,
message: this.$t("客户状态不能为空"),
trigger: "blur",
},
],
founder: [
{
required: true,
message: this.$t("创建人不能为空"),
trigger: "blur",
},
],
}, },
// 网点 // 网点
nodeList: [], nodeList: [],
showLine: false, showLine: false,
customerId:undefined, customerId: undefined,
customerServiceList:[], customerServiceList: [],
countryList: [], countryList: [],
creditList:[], creditList: [],
selectCustomerList:[], selectCustomerList: [],
transferShow:false, transferShow: false,
dialogVisible:false, dialogVisible: false,
customData:{ customData: {},
currentisNew: false,
}, userId: undefined, //lanbm 2024-05-23 add
currentisNew:false
}; };
}, },
computed:{ computed: {
path(){ path() {
return this.$route.path return this.$route.path;
}, },
channel(){ channel() {
return (val)=>{ return (val) => {
return !!val ? this.getDictDatas(this.DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE).filter(i => (val.split(',') || []).includes(i.value)).map(i => this.isChinese ? i.label : i.labelEn ).join('') :'' return !!val
} ? this.getDictDatas(this.DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE)
.filter((i) => (val.split(",") || []).includes(i.value))
.map((i) => (this.isChinese ? i.label : i.labelEn))
.join("")
: "";
};
}, },
isChinese(){ isChinese() {
return this.$i18n.locale === 'zh_CN' return this.$i18n.locale === "zh_CN";
}, },
authorityFn(){ authorityFn() {
let i = '' let i = "";
switch (this.$route.path){ switch (this.$route.path) {
case '/customer/department-customers': case "/customer/department-customers":
i = 'dep-' i = "dep-";
break; break;
case '/customer/potential': case "/customer/potential":
i = 'pot-' i = "pot-";
break; break;
} }
return i return i;
},
selectAuthorityFn() {
return (val) => {
let t = val.split(":");
t[t.length - 1] = this.authorityFn + t[t.length - 1];
console.log(t.join(":"));
return t.join(":");
};
}, },
selectAuthorityFn(){
return (val)=>{
let t = val.split(":")
t[t.length - 1] = this.authorityFn + t[t.length - 1]
console.log( t.join(":"))
return t.join(":")
}
}
}, },
watch:{ watch: {
selectCustomerList(val){ selectCustomerList(val) {
if(val.length === 0){ if (val.length === 0) {
this.getList() this.getList();
this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.clearSelection();
} }
}, },
}, },
created() { created() {
getCreditPage({page:1,rows:999}).then(r => { getCreditPage({ page: 1, rows: 999 }).then((r) => {
this.creditList = r.data.list this.creditList = r.data.list;
}) });
this.getList(); this.getList();
listServiceUser().then(r=>{ listServiceUser().then((r) => {
this.customerServiceList = r.data; this.customerServiceList = r.data;
}) });
getCountryListAll().then(r => { getCountryListAll().then((r) => {
this.countryList = r.data this.countryList = r.data;
}) });
//获取用户id信息 lanbm 2024-05-23 add
getUserProfile().then((res) => {
this.userId = res.data.id;
});
}, },
activated(){ activated() {
this.getList(); this.getList();
}, },
methods: { methods: {
recovery(row){ recovery(row) {
this.$confirm(this.$t('是否要回收当前{name}',row), '提示', { this.$confirm(this.$t("是否要回收当前{name}", row), "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning' type: "warning",
}).then(() => { })
recycleUnconfirmedCustomer({customerId:row.id}).then(r =>{ .then(() => {
this.$message.success(this.$t('回收成功。')) recycleUnconfirmedCustomer({ customerId: row.id }).then((r) => {
this.getList() this.$message.success(this.$t("回收成功。"));
this.getList();
});
}) })
}).catch(() => { .catch(() => {
this.$message.info(this.$t('已取消')) this.$message.info(this.$t("已取消"));
}); });
}, },
// 设置整柜 // 设置整柜
setFullContainerLoad(isFcl){ setFullContainerLoad(isFcl) {
setChangeCustomerFcl({ setChangeCustomerFcl({
"customerIdList": this.selectCustomerList, customerIdList: this.selectCustomerList,
isFcl isFcl,
}).then(r =>{ }).then((r) => {
if(r.code === 0){ if (r.code === 0) {
this.$message.success(isFcl ? '设置客户为海运整柜成功!' : '设置客户为非海运整柜成功!') this.$message.success(
this.selectCustomerList = [] isFcl ? "设置客户为海运整柜成功!" : "设置客户为非海运整柜成功!"
this.getList() );
this.selectCustomerList = [];
this.getList();
} }
}) });
}, },
// 设置空运客户 // 设置空运客户
setChangeCustomerAir(isAir){ setChangeCustomerAir(isAir) {
changeCustomerAir({ changeCustomerAir({
customerIdList:this.selectCustomerList, customerIdList: this.selectCustomerList,
isAir isAir,
}).then(r =>{ }).then((r) => {
console.log(r) console.log(r);
if(r.code === 0){ if (r.code === 0) {
this.$message.success(isAir ? '设为空运客户成功!' : '设为非空运客户成功!') this.$message.success(
this.selectCustomerList = [] isAir ? "设为空运客户成功!" : "设为非空运客户成功!"
this.getList() );
this.selectCustomerList = [];
this.getList();
} }
}) });
}, },
/** 取消按钮 */ /** 取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
complaint(row){ complaint(row) {
this.customerId = row.id; this.customerId = row.id;
this.$nextTick(()=>{ this.$nextTick(() => {
this.$refs.customerComplaints.handleAdd(); this.$refs.customerComplaints.handleAdd();
}) });
}, },
countryFormatter(row, column, cellValue) { countryFormatter(row, column, cellValue) {
const country = this.countryList.find((e) => e.id === cellValue) const country = this.countryList.find((e) => e.id === cellValue);
return this.isChinese ? country?.nameZh : country?.nameEn return this.isChinese ? country?.nameZh : country?.nameEn;
}, },
delay(row){ delay(row) {
this.$router.push({ path: "/customer/delay", query: { id: row.id } });
this.$router.push({path:'/customer/delay',query:{id:row.id}})
}, },
followUp(row){ followUp(row) {
this.customerId = row.id; this.customerId = row.id;
this.$nextTick(()=>{ this.$nextTick(() => {
this.$refs.CustomerFollowList.customerFollow.dialogVisible = true; this.$refs.CustomerFollowList.customerFollow.dialogVisible = true;
}) });
}, },
//报价 //报价
quote(row){ quote(row) {
//lanbm 2024-05-23 添加报价是判断客户所属客户经理,不是就不能报价
if (row.customerService != this.userId) {
//this.$router.push({path:'/offer/create',query:{id:row.id}}) this.$message.error(this.$t("此客户属于其他客户经理名下的客户。"));
this.$router.push({path:'/offer/create' , query:{customer:row,type:1}}).then({ return;
//this.$refs.push({path:'/customer-contacts/select',query:{pageNo:1,pageSize:10,searchKey:row.defaultContactPhone}}) }
//this.$router.push({path:'/offer/create',query:{id:row.id}})
}) this.$router
.push({ path: "/offer/create", query: { customer: row, type: 1 } })
.then({
//this.$refs.push({path:'/customer-contacts/select',query:{pageNo:1,pageSize:10,searchKey:row.defaultContactPhone}})
});
}, },
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
// 处理查询参数 // 处理查询参数
let params = {...this.queryParams}; let params = { ...this.queryParams };
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime', false); this.addBeginAndEndTime(
params,
this.dateRangeCreateTime,
"createTime",
false
);
// 执行查询 // 执行查询
switch (this.$route.path){ switch (this.$route.path) {
case '/customer/customer' : case "/customer/customer":
getCustomerPage(params).then(this.setData); getCustomerPage(params).then(this.setData);
break; break;
case '/customer/department-customers': case "/customer/department-customers":
getCustomerDeptPage(params).then(this.setData); getCustomerDeptPage(params).then(this.setData);
break; break;
case '/customer/potential': case "/customer/potential":
getPotential(params).then(this.setData) getPotential(params).then(this.setData);
break; break;
} }
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.$router.push('/customer/add-edit/0') this.$router.push("/customer/add-edit/0");
// this.reset(); // this.reset();
// this.open = true; // this.open = true;
// this.title = this.$t("添加客户"); // this.title = this.$t("添加客户");
}, },
// 新增潜在客户 // 新增潜在客户
handleAddPotential(){ handleAddPotential() {
this.$refs.potentialCustom.dialogTableVisible = true; this.$refs.potentialCustom.dialogTableVisible = true;
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id;
const name = row.name; const name = row.name;
const number = row.number; const number = row.number;
this.$modal.confirm(this.$t('是否确认删除客户编号为"') + number + this.$t('"的数据项?')).then(function() { this.$modal
.confirm(
this.$t('是否确认删除客户编号为"') + number + this.$t('"的数据项?')
)
.then(function () {
return deleteCustomer(id); return deleteCustomer(id);
}).then(() => { })
.then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess(this.$t('删除成功')); this.$modal.msgSuccess(this.$t("删除成功"));
}).catch(() => {}); })
.catch(() => {});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
let func = null; let func = null;
let title = '' let title = "";
switch (this.$route.path){ switch (this.$route.path) {
case '/customer/customer' : case "/customer/customer":
func = customerExportExcel func = customerExportExcel;
title = '是否确认导出所有客户数据项?' title = "是否确认导出所有客户数据项?";
break; break;
case '/customer/department-customers': case "/customer/department-customers":
func = deptExportExcel func = deptExportExcel;
title = '是否确认导出部门客户数据项?' title = "是否确认导出部门客户数据项?";
break; break;
case '/customer/potential': case "/customer/potential":
func = potentialExportExcel func = potentialExportExcel;
title = '是否确认导出潜在客户数据项?' title = "是否确认导出潜在客户数据项?";
break; break;
} }
// // 执行导出 // // 执行导出
this.$modal.confirm(this.$t(title)).then(() => { this.$modal
func().then(r =>{ .confirm(this.$t(title))
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载')) .then(() => {
func().then((r) => {
this.$message.success(
this.$t("已加入导出队列,请稍后在下载日志中下载")
);
});
}) })
}).catch(() => {}); .catch(() => {});
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNo = 1; this.queryParams.pageNo = 1;
this.getList(); this.getList();
}, },
handleSelectionChange(val){ handleSelectionChange(val) {
this.selectCustomerList = val.map(i => i.id); this.selectCustomerList = val.map((i) => i.id);
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
console.log(row.id) console.log(row.id);
this.$router.push('/customer/add-edit/' + row.id) this.$router.push("/customer/add-edit/" + row.id);
// this.reset(); // this.reset();
// const id = row.id; // const id = row.id;
// getCustomer(id).then(response => { // getCustomer(id).then(response => {
...@@ -889,7 +1394,7 @@ export default { ...@@ -889,7 +1394,7 @@ export default {
}, },
/** 查看按钮操作 */ /** 查看按钮操作 */
handleView(row) { handleView(row) {
this.$router.push('/customer/query/' + row.id) this.$router.push("/customer/query/" + row.id);
}, },
/** 表单重置 */ /** 表单重置 */
reset() { reset() {
...@@ -946,66 +1451,72 @@ export default { ...@@ -946,66 +1451,72 @@ export default {
customerService: null, customerService: null,
status: null, status: null,
department: null, department: null,
creditLevel:null, creditLevel: null,
country:null, country: null,
} };
this.handleQuery(); this.handleQuery();
}, },
/** 调入公海池测试用 */ /** 调入公海池测试用 */
seasPond(row) { seasPond(row) {
testEnterToOpenSea(row.id).then(r => { testEnterToOpenSea(row.id).then((r) => {
if(r.code === 0){ if (r.code === 0) {
this.$t('调入公海池成功!') this.$t("调入公海池成功!");
this.getList(); this.getList();
} }
}) });
}, },
setData(response){ setData(response) {
console.log(response,'response') console.log(response, "response");
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (!valid) { if (!valid) {
// return; // return;
} }
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
updateCustomer(this.form).then(response => { updateCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('修改成功')); this.$modal.msgSuccess(this.$t("修改成功"));
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
return; return;
} }
// 添加的提交 // 添加的提交
createCustomer(this.form).then(response => { createCustomer(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('新增成功')); this.$modal.msgSuccess(this.$t("新增成功"));
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
}); });
}, },
// 修改客户类型 // 修改客户类型
modifyCustomer(){ modifyCustomer() {
this.$confirm(this.$t('修改业绩类型后,将会影响客户新订单业绩计算,请问确定吗?'), this.$t('提示'), { this.$confirm(
confirmButtonText: this.$t('确定'), this.$t("修改业绩类型后,将会影响客户新订单业绩计算,请问确定吗?"),
cancelButtonText: this.$t('取消'), this.$t("提示"),
type: 'warning' {
}).then(() => { confirmButtonText: this.$t("确定"),
updatecustomerToOld({customerId:this.customData.id,isNew:this.currentisNew}).then((r) =>{ cancelButtonText: this.$t("取消"),
this.$message.success(this.$t('修改成功')); type: "warning",
this.dialogVisible = false }
this.getList() )
}) .then(() => {
}).catch(() => { updatecustomerToOld({
customerId: this.customData.id,
isNew: this.currentisNew,
}).then((r) => {
this.$message.success(this.$t("修改成功"));
this.dialogVisible = false;
this.getList();
}); });
} })
} .catch(() => {});
},
},
}; };
</script> </script>
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
> >
{{ $t("新增") }}</el-button {{ $t("新增") }}</el-button
> >
<el-button type="primary" @click="test" v-show="true">测试</el-button> <el-button type="primary" @click="test" v-show="false">测试</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
...@@ -170,6 +170,7 @@ import "@/assets/styles/vue-treeselect.css"; ...@@ -170,6 +170,7 @@ import "@/assets/styles/vue-treeselect.css";
import { MessageBox } from "element-ui"; import { MessageBox } from "element-ui";
//日期库函数 //日期库函数
import dayjs from "dayjs"; import dayjs from "dayjs";
import { getToken } from "@/utils/auth";
//2024-05-01合并 //2024-05-01合并
export default { export default {
...@@ -356,10 +357,13 @@ export default { ...@@ -356,10 +357,13 @@ export default {
}, },
test() { test() {
//单元测试函数 //单元测试函数
/*
var p = 12; var p = 12;
test(p).then((response) => { test(p).then((response) => {
this.$modal.msgSuccess("测试成功"); this.$modal.msgSuccess("测试成功");
}); });*/
var s = getToken();
alert(s);
}, },
TestFun() { TestFun() {
var bR = dayjs("2024-05-11").isBefore(dayjs("2024-05-12")); var bR = dayjs("2024-05-11").isBefore(dayjs("2024-05-12"));
......
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