<template> <div> <el-row type="flex" style="margin-top: 15px;margin-bottom: 15px" justify="center"> <el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="16"> <div style="display: flex;justify-content: space-between;align-items: flex-end;"> <h2>{{$t('查看')}}</h2> <div> <el-button type="primary" size="small" v-has-permi="['ecw:customer:query-edit']" @click="$router.push('/customer/edit/' + id)">{{$t('编辑')}}</el-button> <el-button v-has-permi="['ecw:customer:query-quoted-price']" @click="$router.push('/offer/create')" type="primary" size="small">{{$t('报价')}}</el-button> <el-button v-has-permi="['ecw:customer:query-follow-up']" type="primary" size="small" @click="$refs['customerFollow'].customerFollow.dialogVisible = true">{{$t('跟进')}}</el-button> <el-button v-has-permi="['ecw:customer:query-customer-complaint']" type="primary" size="small" @click="$refs['customerComplaint'].handleAdd()">{{$t('客诉')}}</el-button> <el-button v-hasPermi="['ecw:customer:query-delete']" type="danger" size="small" @click="deleteCustomerFn()">{{$t('删除')}}</el-button> </div> </div> <el-card style="margin-top: 15px;"> <el-descriptions :column="4" border> <el-descriptions-item :label="$t('客户编号')">{{ customer.number }}</el-descriptions-item> <el-descriptions-item :label="$t('客户名称')">{{ customer.name}}</el-descriptions-item> <el-descriptions-item :label="$t('客户英文名称')">{{customer.nameEn }}</el-descriptions-item> <el-descriptions-item :label="$t('结算方式')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_BALANCE, customer.balance) }}</el-descriptions-item> <el-descriptions-item :label="$t('客户生日')">{{ parseTime(customer.birthday, '{y}-{m}-{d}') }}</el-descriptions-item> <el-descriptions-item :label="$t('出货渠道')"> {{ getDictDatas2(DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE, (customer.transportType||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ') }} <!-- <dict-tag v-if="customer.transportType" v-for="item in (customer.transportType || '').split(',')" :type="DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE" :value="item"></dict-tag>--> </el-descriptions-item> <el-descriptions-item :label="$t('资源类型')"> <dict-tag :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" :value="customer.resourceType"></dict-tag> </el-descriptions-item> <el-descriptions-item :label="$t('客户等级')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_LEVEL, customer.level) }}</el-descriptions-item> <el-descriptions-item :label="$t('信用等级')">{{isChinese ? customer.creditLevelNameZh :customer.creditLevelNameEn }}</el-descriptions-item> <el-descriptions-item :label="$t('国家')">{{ isChinese ? country.nameZh : country.nameEn }}</el-descriptions-item> <!-- <el-descriptions-item :label="$t('业务员')">{{ customer }}</el-descriptions-item>--> <el-descriptions-item :label="$t('客户来源')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_SOURCE, customer.source) }}</el-descriptions-item> <el-descriptions-item :label="$t('客户类别')"> {{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, (customer.type||'').split(',')).map(e => isChinese ? e.label : e.labelEn).join(', ')}} </el-descriptions-item> <!-- <el-descriptions-item :label="$t('联系方式')">{{ customer }}</el-descriptions-item>--> <el-descriptions-item :label="$t('推介人')">{{ customer.promoterName }}</el-descriptions-item> <el-descriptions-item :label="$t('客户经理')">{{customerService }}</el-descriptions-item> <el-descriptions-item :label="$t('公司名称')">{{ customer.company }}</el-descriptions-item> <el-descriptions-item :label="$t('公司英文名称')">{{ customer.companyEn }}</el-descriptions-item> <el-descriptions-item :label="$t('联系地址')">{{ customer.address }}</el-descriptions-item> <el-descriptions-item :label="$t('创建时间')">{{ parseTime(customer.createTime) }}</el-descriptions-item> <el-descriptions-item :label="$t('创建人')">{{ customer.founderName }}</el-descriptions-item> <el-descriptions-item :label="$t('状态')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_STATUS, customer.status) }}</el-descriptions-item> <el-descriptions-item :label="$t('主营类别')">{{ productType }}</el-descriptions-item> <el-descriptions-item :label="$t('常提货网点')">{{ pickupPoint }}</el-descriptions-item> <el-descriptions-item :label="$t('图片')"> <el-image v-show="!!customer.picture" :src="customer.picture" style="width: 100px;height: 100px"></el-image> </el-descriptions-item> <el-descriptions-item :label="$t('备注')">{{ customer.remarks }}</el-descriptions-item> <el-descriptions-item :label="$t('业绩类型')">{{ customer.isNew ?$t('新客户') : $t('老客户') }}</el-descriptions-item> <el-descriptions-item :label="$t('付款人姓名')">{{ customer.payerName }}</el-descriptions-item> <el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证姓名')">{{ customer.carName }}</el-descriptions-item> <el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证号码')">{{ customer.carNo }}</el-descriptions-item> <!-- <el-descriptions-item :label="$t('信用等级')">{{ customer }}</el-descriptions-item>--> </el-descriptions> </el-card> <el-card style="margin-top: 15px"> <h3>{{$t('联系人')}}</h3> <el-table :data="customerContacts" style="width: 100%" border > <el-table-column prop="department" :label="$t('部门')" > </el-table-column> <el-table-column prop="position" :label="$t('职位')" > </el-table-column> <el-table-column prop="name" :label="$t('联系人')" > </el-table-column> <el-table-column prop="nameEn" :label="$t('联系人英文名称')" > </el-table-column> <el-table-column prop="phoneNew" :label="$t('联系方式')" > <template v-slot="{row}"> {{ row.areaCode + row.phoneNew }} </template> </el-table-column> <el-table-column prop="userid" :label="$t('关联账号')" :formatter="userIdFormatter" > </el-table-column> <el-table-column prop="social" :label="$t('社交软件')" :formatter="(row, column, cellValue) => getDictDataLabel(DICT_TYPE.SOCIAL, cellValue)" > </el-table-column> <el-table-column prop="socialNumber" :label="$t('社交软件号码')" > </el-table-column> <el-table-column prop="email" :label="$t('邮箱')" > </el-table-column> </el-table> </el-card> <el-card style="margin-top: 15px;"> <h3>{{$t('银行账户')}}</h3> <el-table :data="customer.customerBankBackVOList" border> <el-table-column :label="$t('编号')" type="index"></el-table-column> <el-table-column :label="$t('账户名称')" prop="accountName"></el-table-column> <el-table-column :label="$t('币别')"> <template v-slot="{row}"> {{$l(currecyList.find(i => row.currency == i.id),'title')}} </template> </el-table-column> <el-table-column :label="$t('银行名称')" prop="bankName"></el-table-column> <el-table-column :label="$t('银行账户')" prop="bankAccount"></el-table-column> <el-table-column :label="$t('银行代码')" prop="bankCode"></el-table-column> <el-table-column :label="$t('账户类型')"> <template v-slot="{row}"> {{Number(row.accountType) === 1 ? $t('公账') : $t('私账')}} </template> </el-table-column> <el-table-column :label="$t('状态')"> <template v-slot="{row}"> {{row.status ? $t('正常') : $t('停用')}} </template> </el-table-column> <el-table-column :label="$t('银行地址')" prop="bankAddress"></el-table-column> </el-table> </el-card> <el-tabs v-model="activeName" style="margin-top: 15px" type="border-card"> <el-tab-pane name="order" :label="$t('订单')"> <el-card class="box-card"> <div slot="header" class="clearfix"> <el-form :inline="true"> <el-form-item :label="$t('运输方式:')"> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" /> </el-form-item> <el-form-item :label="$t('订单状态:')"> <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"/> </el-form-item> <el-form-item :label="$t('报关方式:')"> <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" /> </el-form-item> <el-form-item :label="$t('控货')"> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.isCargoControl" /> </el-form-item> <el-form-item :label="$t('入仓时间:')"> <el-date-picker v-model="rucangtime" @change="changeDate" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" /> </el-form-item> <el-form-item> <el-button type="primary" @click="getorderList">{{$t('搜索')}}</el-button> <el-button type="primary" @click="()=>{ queryParams = { rows:10,page:1}; getorderList();rucangtime = []; }">{{$t('重置')}}</el-button> </el-form-item> </el-form> </div> <el-table :data="orderList"> <el-table-column :label="$t('订单编号')" width="120px" align="center" prop="orderNo" > <template slot-scope="scope"> <router-link :to="{path: '/order/detail',query: {orderId: scope.row.orderId}}" class="link-type"> <span>{{ scope.row.orderNo }}</span> </router-link> </template> </el-table-column> <el-table-column :label="$t('唛头')" align="center" prop="marks" /> <el-table-column :label="$t('总箱数/入仓箱数')" align="center" prop="sumNum"> <template slot-scope="{row}"> {{row.totalNum}}{{$t('箱')}}/{{row.sumNum}}{{$t('箱')}} </template> </el-table-column> <el-table-column :label="$t('体积/重量')" align="center" prop="sumWeight"> <template slot-scope="{row}"> <!--入仓前是填单数据,入仓后是入仓数据--> <!-- <template v-if="row.inWarehouseState <= 1">{{row.costVO.totalVolume}}m³ /{{row.costVO.totalWeight}}Kg</template>--> <!-- <template v-else>{{row.sumVolume}}m³ /{{row.sumWeight}}Kg</template>--> <component :is="row.orderType == 2 ? 'el-tooltip' : 'div'" class="item" :style="{ color: row.orderType == 2 ? 'red' : null }" effect="dark" :content="(row.wvolume||0)+'m³'" placement="bottom"> <div v-if="row.sumNum > 0">{{row.sumVolume}}m³ /{{row.sumWeight}}Kg</div> <div v-else>{{row.costVO.totalVolume}}m³ /{{row.costVO.totalWeight}}Kg</div> </component> </template> </el-table-column> <el-table-column :label="$t('始发仓')" align="center" prop="startWarehouseName"> <template slot-scope="{row}"> {{row.startWarehouseName}} <span style="color:red" v-if="row.isExternalWarehouse">({{$t('外部仓')}})</span> </template> </el-table-column> <el-table-column :label="$t('运输方式/目的地')" align="center" prop="transportId"> <template slot-scope="{row}"> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" /> / {{row.objectiveName}} </template> </el-table-column> <el-table-column :label="$t('控货')" align="center" prop="transportId"> <template slot-scope="{row}"> <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.isCargoControl" /> </template> </el-table-column> <el-table-column :label="$t('订单状态')" align="center" prop="statusMsg"> <!-- <template slot-scope="scope">--> <!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" />--> <!-- </template>--> </el-table-column> <el-table-column :label="$t('入仓时间')"> <template v-slot="{row}"> {{parseTime(row.rucangTime)}} </template> </el-table-column> </el-table> <pagination @pagination="getorderList" :page.sync="queryParams.page" :limit.sync="queryParams.rows" :total="orderTotal" ></pagination> </el-card> </el-tab-pane> <el-tab-pane name="quote" :label="$t('报价')"> <el-table :data="infoListOfferList" style="width: 100%" > <el-table-column type="index" :label="$t('序号')" > </el-table-column> <el-table-column prop="number" :label="$t('报价单号')" > </el-table-column> <el-table-column prop="orderNo" :label="$t('订单号')" > </el-table-column> <el-table-column prop="consignorName" :label="$t('客户名称')" > <template v-slot> {{customer.name}} </template> </el-table-column> <el-table-column prop="objectiveName" :label="$t('目的地')" > </el-table-column> <el-table-column :label="$t('销售阶段')" > <template v-slot="{row}"> {{STATUS[row.status]}} </template> </el-table-column> <el-table-column prop="stopTime" :label="$t('预计结束时间')" > </el-table-column> <el-table-column prop="businessManagerName" :label="$t('负责人')" > </el-table-column> </el-table> <pagination @pagination="getInfoListOfferPage" :page.sync="infoListOfferFrom.pageNo" :limit.sync="infoListOfferFrom.pageSize" :total="infoListOfferTotal" ></pagination> </el-tab-pane> <el-tab-pane name="follow" :label="$t('跟进')"> <customer-follow customerQuery ref="customerFollow" :id="id" :customer-id="id"></customer-follow> </el-tab-pane> <el-tab-pane name="complain" :label="$t('客户投诉')"> <customer-complaint ref="customerComplaint" :customer-id="id" hidden-search></customer-complaint> </el-tab-pane> <el-tab-pane name="bill" :label="$t('账单')"> <el-table style="width: 100%" :data="infoListReceiptList"> <el-table-column :label="$t('序号')" type="index"></el-table-column> <el-table-column :label="$t('账单')" prop="receiptNo"></el-table-column> <el-table-column :label="$t('订单号')" prop="orderNo"></el-table-column> <el-table-column :label="$t('箱数')" prop="num"></el-table-column> <el-table-column :label="$t('方数')" prop="volume" ></el-table-column> <el-table-column :label="$t('重量')" prop="weight" ></el-table-column> <el-table-column :label="$t('类型')"> <template v-slot="{row}"> <dict-tag :type="DICT_TYPE.PAYMENT_TYPE" :value="row.collectionType" /> </template> </el-table-column> <el-table-column :label="$t('费用类型')"> <template v-slot="{row}"> <dict-tag :type="DICT_TYPE.FEE_TYPE" :value="row.feeType" /> </template> </el-table-column> <el-table-column :label="$t('金额')" prop="totalAmount"> </el-table-column> <el-table-column :label="$t('已核销比例')" prop="writeOffScale"></el-table-column> <el-table-column :label="$t('实收日期')"> <template v-slot="{row}"> {{parseTime(row.writeOffAt)}} </template> </el-table-column> <el-table-column :label="$t('业务员')" prop="salesmanName"></el-table-column> </el-table> <pagination v-show="infoListReceiptList.length" :total="infoListReceiptTotal" :page.sync="infoListReceiptFrom.pageNo" :limit.sync="infoListReceiptFrom.pageSize" @pagination="infoListReceiptFn"/> </el-tab-pane> <el-tab-pane name="data" :label="$t('数据')"> <el-descriptions :column="2"> <el-descriptions-item :label="$t('海空联运/海运拼柜/海运整柜/专线空运')">{{orderStatisticsObj.hklyTotal || 0}}/{{orderStatisticsObj.hypgTotal || 0 }}/{{orderStatisticsObj.hyzgTotal || 0}}/{{orderStatisticsObj.zxkyTotal || 0}}</el-descriptions-item> <el-descriptions-item :label="$t('最后交易日期')">{{orderStatisticsObj.lastBusinessDate}}</el-descriptions-item> <el-descriptions-item :label="$t('全部订单/控货订单')">{{orderStatisticsObj.allOrderTotal || 0}}/{{orderStatisticsObj.controlOrderTotal || 0}}</el-descriptions-item> <el-descriptions-item :label="$t('最后交易单号')">{{orderStatisticsObj.lastBusinessOrderNo}}</el-descriptions-item> <el-descriptions-item :label="$t('报价/下单/入仓')">{{orderStatisticsObj.offerOrderTotal || 0}}/{{orderStatisticsObj.pickOrderTotal || 0}}/{{orderStatisticsObj.wareHousingTotal || 0}}</el-descriptions-item> <el-descriptions-item :label="$t('储存量')">{{orderStatisticsObj.stock || 0}}</el-descriptions-item> <el-descriptions-item :label="$t('已出货订单')">{{orderStatisticsObj.shipmentTotal || 0}}</el-descriptions-item> </el-descriptions> </el-tab-pane> <el-tab-pane name="empower" :label="$t('品牌授权')"> <el-table border style="width:100%" :data="brandAuthorizationList"> <el-table-column type="index" :prop="$t('序号')"></el-table-column> <el-table-column :label="$t('中文标题')" prop="titleZh" ></el-table-column> <el-table-column prop="titleEn" :label="$t('英文标题')"></el-table-column> <el-table-column :label="$t('有无备案')"> <template v-slot="{row}"> <dict-tag :type="DICT_TYPE.BRAND_REG_TYPE" :value="row.filing" /> </template> </el-table-column> <el-table-column :label="$t('授权开始')"> <template v-slot="{row}"> {{parseTime(row.startTime)}} </template> </el-table-column> <el-table-column :label="$t('授权结束')"> <template v-slot="{row}"> {{parseTime(row.endTime)}} </template> </el-table-column> <el-table-column :label="$t('授权证明')"> <template v-slot="{row}"> <div v-if="!!row.fileUrl && row.fileUrl.length > 0"> <span v-for="(item, index) in (row.fileUrl||'').split(',')"> <a :href="item" target="_blank">{{$t('附件')}}{{ index + 1 }}</a>, </span> </div> </template> </el-table-column> <el-table-column prop="feeScale" :formatter="(row) => getDictDataLabel(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL, row.feeScale)" :label="$t('收费标准')"> </el-table-column> <el-table-column prop="createUsername" :label="$t('添加人')"> </el-table-column> <el-table-column :label="$t('创建时间')"> <template v-slot="{row}"> {{parseTime(row.createTime)}} </template> </el-table-column> </el-table> <pagination v-show="brandAuthorizationTotal.length" :total="brandAuthorizationTotal" :page.sync="brandAuthorizationFrom.pageNo" :limit.sync="brandAuthorizationFrom.pageSize" @pagination="getBrankByCustomerList"/> </el-tab-pane> <el-tab-pane name="credit" :label="$t('信用日志')"> <el-card class="box-card"> <div slot="header" class="clearfix"> <el-button style="float: right;" type="primary" @click="dialogVisible = true" >{{$t('添加信用日志')}}</el-button> <el-descriptions :column="5" border> <el-descriptions-item v-for="(item,index) in creditScoreStatisticObj" :key="index" :label="creditScoreCalculation(item.type)">{{item.score}}</el-descriptions-item> </el-descriptions> </div> <el-table :data="customerCreditLogList"> <el-table-column :label="$t('序号')" type="index"></el-table-column> <el-table-column :label="$t('规则名称')"> <template v-slot="{row}"> {{ isChinese ? row.name : row.nameEn}} </template> </el-table-column> <el-table-column prop="type" :label="$t('规则分类')"> <template v-slot="{row}"> <dict-tag :type="DICT_TYPE.CUSTOMER_CREDIT_RULE_TYPE" :value="row.type" /> </template> </el-table-column> <el-table-column prop="score" :label="$t('规则得分')"></el-table-column> <el-table-column prop="remark" :label="$t('备注')"></el-table-column> <el-table-column :label="$t('添加人')" prop="createName"></el-table-column> <el-table-column :label="$t('时间')"> <template v-slot="{row}"> {{parseTime(row.createTime)}} </template> </el-table-column> </el-table> <pagination @pagination="creditLogPage" :page.sync="customerCreditLogFrom.pageNo" :limit.sync="customerCreditLogFrom.pageSize" :total="customerCreditLogFrom.total" ></pagination> </el-card> </el-tab-pane> <el-tab-pane name="grade" :label="$t('等级日志')"> <el-table style="width: 100%" :data="getCustomerGradeList"> <el-table-column :label="$t('序号')" type="index"></el-table-column> <el-table-column :label="$t('规则名称')" prop="name"></el-table-column> <el-table-column :label="$t('规则分类')" prop="type"> <template v-slot="{row}"> <dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL_RULE_TYPE" :value="row.type" /> </template> </el-table-column> <el-table-column :label="$t('规则得分')" prop="score"></el-table-column> <el-table-column :label="$t('备注')" prop="remark"></el-table-column> <el-table-column :label="$t('时间')"> <template v-slot="{row}"> {{parseTime(row.createTime)}} </template> </el-table-column> </el-table> <pagination @pagination="getCustomerGrade" :page.sync="getCustomerGradeFrom.pageNo" :limit.sync="getCustomerGradeFrom.pageSize" :total="getCustomerGradeFrom.total" ></pagination> </el-tab-pane> <el-tab-pane name="operationLog" v-if="checkPermi(['customer:operate-log:query'])" :label="$t('操作日志')" > <customer-log :customerId="id" v-if="'operationLog' === activeName"></customer-log> </el-tab-pane> </el-tabs> </el-col> </el-row> <el-dialog :visible.sync="dialogVisible" width="30%" > <h1 slot="title"> {{$t('给客户')}}【{{customer.name}}】{{$t('添加信用日志')}} </h1> <el-form label-width="100"> <el-form-item :label="$t('客户编号:')">{{customer.number}}</el-form-item> <el-form-item :label="$t('信用类别')"> <el-select v-model="creditFrom.ruleId"> <el-option v-for="(item,index) in creditTypeList" :key="index" :value="item.id" :label="isChinese ? item.name : item.nameEn"></el-option> </el-select> </el-form-item> <el-form-item v-if="creditTypeList.length > 0" :label="$t('信用分')">{{(creditTypeList.find(r=>creditFrom.ruleId === r.id) || {}).score }}{{$t('分')}}</el-form-item> <el-form-item :label="$t('备注')"> <el-input type="textarea" v-model="creditFrom.remark"> </el-input> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="submit">{{$t('提交')}}</el-button> <el-button @click="dialogVisible = false" >{{$t('取消')}}</el-button> </span> </el-dialog> </div> </template> <script> import { getCustomer, getCustomerSelect, getBrankByCustomer, levelLogPage, customerCreditLogPage, infoListOrderPage, infoListOfferPage, orderStatistics, creditLogCreate, creditScoreStatistic, infoListReceiptPage, memberUserList, deleteCustomer, } from '@/api/ecw/customer' import { DICT_TYPE, getDictDataLabel, getDictDatas2 } from '@/utils/dict' import { getProductTypeList } from '@/api/ecw/productType' import { getNodeList } from '@/api/ecw/node' import CustomerFollow from "@/components/CustomerFollow" import { parseTime } from '@/utils/ruoyi' import CustomerComplaint from '@/views/ecw/customerComplaint' import { listServiceUser } from '@/api/system/user' import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts' import {getOrderPage} from "@/api/ecw/order"; import Template from "@/views/cms/template"; import {getCreditRulePage} from "@/api/customer/creditRule"; import {getCountry} from "@/api/ecw/country" import {getCurrencyList} from "@/api/ecw/currency"; import customerLog from "@/views/ecw/customer/customerLog.vue"; import {checkPermi} from "@/utils/permission"; export default { name: 'query', components: { Template, CustomerFollow, CustomerComplaint, customerLog, }, created() { // 获取币种 getCurrencyList().then(response => { this.currecyList = response.data; }) //获取信用类型 getCreditRulePage({page:1,rows:999,type:2}).then(r => { this.creditTypeList = r.data.list }) getNodeList().then(r => { this.nodeList = r.data }) getCustomer(this.id).then(response => { this.customer = { ...this.customer, ...response.data } console.log( this.customer,'this.customer') getCustomerContactsListByCustomer({customerId: this.id}).then(r => { this.customerContacts = r.data let list = this.customerContacts.map(r => r.userid) memberUserList({ids:list.join(',')}).then(r => { this.memberList = r.data }) }) getCountry(this.customer.country ? this.customer.country : 0 ).then(r => { this.country = r.data }) }) getProductTypeList().then(r => { this.productTypeList = r.data }) getCustomerSelect({pageSize:1000,pageNo:1}).then(r => { this.customerSelect = r.data.list }) listServiceUser().then(r => { this.serviceUserList = r.data }) // this.getBrankByCustomerList()//品牌授权 this.getCustomerGrade() // this.creditLogPage()//等级日志 this.getorderList()//订单 // this.getInfoListOfferPage()//报价 // this.getOrderStatistics()//数据 // this.creditScoreStatisticFn() //信用日志 // this.infoListReceiptFn()//账单 }, watch:{ activeName(val){ switch (val) { case 'order': this.getorderList()//订单 break case 'quote': this.getInfoListOfferPage()//报价 break case 'bill': this.infoListReceiptFn()//账单 break case 'data': this.getOrderStatistics()//数据 break case 'empower': this.getBrankByCustomerList()//品牌授权 break case 'credit': this.creditScoreStatisticFn() //信用日志 this.creditLogPage() break case 'grade': this.getCustomerGrade() //等级日志 break } } }, data() { return { activeName:'order', currecyList:[], STATUS:{ 0:this.$t('取消报价'), 1:this.$t('特价审批中'), 2:this.$t('需求确认'), 3:this.$t('跟进中'), 4:this.$t('赢单'), 5:this.$t('输单'), 6:this.$t('报价完成'), 7:this.$t('跟进中') }, dialogVisible:false, DICT_TYPE, getDictDataLabel, getDictDatas2, parseTime, nodeList: [], productTypeList: [], customerSelect: [], serviceUserList: [], customerContacts: [], memberList: [], customer: { id: undefined, number: undefined, name: undefined, level: undefined, country: undefined, type: undefined, agentId: undefined, company: undefined, address: undefined, productType: undefined, productId: undefined, pickupPoint: undefined, memberId: undefined, birthday: undefined, balance: undefined, source: undefined, picture: undefined, customerService: undefined, customerLines: [], promoter: undefined, status: undefined, founder: undefined, department: undefined, invoiceTitle: undefined, licenseNumber: undefined, bank: undefined, bankNumber: undefined, project: undefined, billingAddress: undefined, billingTell: undefined, taxRate: undefined, remarks: undefined, arrivalConfirm: undefined, weightUnit: undefined, createTime: undefined }, brandAuthorizationFrom:{ pageNo:1, pageSize:10, }, brandAuthorizationList:[], brandAuthorizationTotal:0, getCustomerGradeFrom:{ pageNo:1, pageSize:10, total:0 }, getCustomerGradeList:[], customerCreditLogFrom:{ pageNo:1, pageSize:10, total:0 }, customerCreditLogList:[], rucangtime:[], queryParams:{ rows:10, page:1 }, orderList:[], orderTotal:0, infoListOfferFrom:{ pageNo:1, pageSize:10, }, infoListOfferTotal:0, infoListOfferList:[], orderStatisticsObj:{}, creditTypeList:[], creditFrom:{},//添加信用 日志 creditScoreStatisticObj:[], infoListReceiptList:[], infoListReceiptFrom:{ pageNo:1, pageSize:10, }, infoListReceiptTotal:0, country: '' } }, computed: { permissions(){ return this.$store.state.user.permissions }, customerId(){ return this.$route.params.customerId; }, isChinese(){ return this.$i18n.locale === 'zh_CN' }, productType(){ const productType = this.productTypeList.find(p => p.id === parseInt(this.customer.productType)) return productType ? productType.titleZh : '' }, pickupPoint(){ const pickupPoint = this.nodeList.find(p => p.id === parseInt(this.customer.pickupPoint)) return pickupPoint ? pickupPoint.titleZh : '' }, promoter() { return this.customerSelect.find(e => e.id === this.customer.promoter)?.name || '' }, customerService() { return this.serviceUserList.find(e => e.id === this.customer.customerService)?.nickname || '' }, id() { return this.customerId ? parseInt(this.customerId) : undefined }, creditScoreCalculation(){ return (val)=>{ if(val === 'all'){ return this.$t('信用分') }else{ if(this.isChinese) return (this.getDictDatas(DICT_TYPE.CUSTOMER_CREDIT_RULE_TYPE).find(i => i.value === val)||{}).label else return (this.getDictDatas(DICT_TYPE.CUSTOMER_CREDIT_RULE_TYPE).find(i => i.value === val)||{}).labelEn } } } }, methods:{ checkPermi, userIdFormatter(row, column, cellValue){ const member = this.memberList.find(e => e.id === cellValue) if (member) { return member.nickname + '(' + member.mobile + ')' } else { return '' } }, changeDate(val){ if(val){ this.queryParams.beginRucangTime = val[0]; this.queryParams. endRucangTime = val[1]; }else { this.queryParams.beginRucangTime = undefined; this.queryParams.endRucangTime = undefined; } }, //品牌授权 getBrankByCustomerList(){ getBrankByCustomer({...this.brandAuthorizationFrom,customerId:this.id}).then(r => {this.brandAuthorizationList = r.data.list; this.brandAuthorizationTotal = r.data.total}) }, // 信用等级日志 getCustomerGrade(){ levelLogPage({...this.getCustomerGradeFrom,customerId:this.id,total:undefined}).then(r => { if(r.code === 0){ this.getCustomerGradeList = r.data.list; this.getCustomerGradeFrom.total = r.data.total; } }) }, // 信用日志 creditLogPage(){ customerCreditLogPage({...this.customerCreditLogFrom,customerId:this.id}).then(r => { if(r.code === 0){ this.customerCreditLogList = r.data.list; this.customerCreditLogFrom.total = r.data.total; } }) }, //订单 getorderList(){ infoListOrderPage({customerDetailId:this.id,...this.queryParams}).then(r => { if(r.code === 0){ this.orderList = r.data.list this.orderTotal = r.data.total } }) }, // 客户报价 getInfoListOfferPage(){ infoListOfferPage({...this.infoListOfferFrom,customerId:this.id}).then(r => { this.infoListOfferList = r.data.list; this.infoListOfferTotal = r.data.total; }).catch(r => { }) }, // 数据 getOrderStatistics(){ orderStatistics({customerId:this.id}).then(r => { if(r.code === 0){ this.orderStatisticsObj = r.data } }) }, submit(){ creditLogCreate({customerId:this.id,...this.creditFrom}).then(r => { if(r.code === 0){ this.creditLogPage(); this.creditFrom = {}; this.creditScoreStatisticFn() this.dialogVisible = false; } }) }, //获得信用客户统计 creditScoreStatisticFn(){ creditScoreStatistic({customerId:this.id}).then(r => { if(r.code === 0) this.creditScoreStatisticObj = r.data }) }, // 获取账单数据 infoListReceiptFn(){ infoListReceiptPage({...this.infoListReceiptFrom,customerId:this.id}).then(r => { if(r.code === 0){ this.infoListReceiptList = r.data.list; this.infoListReceiptTotal = r.data.total; } }) }, deleteCustomerFn(){ this.$confirm(`${this.$t('是否要删除当前客户')}《${this.customer.name}》?`, `${this.$t('提示')}`, { confirmButtonText: this.$t('确定'), cancelButtonText: this.$t('取消'), type: 'warning' }).then(() => { deleteCustomer(this.customerId).then(r => { this.$modal.msgSuccess(this.$t('删除成功')); this.$router.back() }) }) } }, } </script> <style scoped> </style>