Commit c9a5acdb authored by lanbaoming's avatar lanbaoming

2024-06-04提交

parent db9bb0e6
......@@ -117,6 +117,8 @@ export function getLogList(params) {
}
// 获得费用登记列表
//先登记费用入表 ecw_box_cost 同时进应付款表,ecw_payable,
//用户在应收款列表中点击收款,生成付款单,入表 ecw_payment
export function getCostList(params) {
return request({
url: "/ecw/box-cost/list",
......@@ -124,8 +126,8 @@ export function getCostList(params) {
params,
});
}
// 付款单主表 SELECT * from ecw_payment
// 付款单费用明细 SELECT * from ecw_payable
// 收款单表 SELECT * from ecw_payment
// 应付款表 SELECT * from ecw_payable
// 根据明细获取主表ID
export function getPaymentId(id) {
return request({
......
......@@ -392,7 +392,7 @@
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button
type="primary"
type="primary" :disabled="scope.row.paymentId!='-1'"
size="small"
@click="editCostClick(scope.row)"
style="marginright: 10px"
......@@ -404,7 +404,7 @@
@confirm="deleteCostClick(scope.row)"
>
<el-button
type="danger"
type="danger" :disabled="scope.row.paymentId!='-1'"
size="small"
slot="reference"
v-hasPermi="['ecw:box-cost:delete']"
......
......@@ -456,7 +456,7 @@
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-button
type="primary"
type="primary" :disabled="scope.row.paymentId!='-1'"
size="small"
@click="editCostClick(scope.row)"
style="marginright: 10px"
......@@ -468,7 +468,7 @@
@confirm="deleteCostClick(scope.row)"
>
<el-button
type="danger"
type="danger" :disabled="scope.row.paymentId!='-1'"
size="small"
slot="reference"
v-hasPermi="['ecw:box-cost:delete']"
......
<template xmlns="">
<div>
<el-row type="flex" style="margin-top: 15px;margin-bottom: 15px" justify="center">
<el-row
type="flex"
style="margin-top: 15px; margin-bottom: 15px"
justify="center"
>
<el-col :xs="24" :sm="24" :md="24" :lg="22" :xl="20">
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-row :gutter="10">
<el-col :span="12">
<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-col>
<el-col :span="12">
<el-form-item :label="$t('国家')" prop="country">
<el-select filterable clearable v-model="form.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
filterable
clearable
v-model="form.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-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户英文名称')">
<el-input v-model="form.nameEn" :placeholder="$t('请输入客户英文名称')"></el-input>
<el-input
v-model="form.nameEn"
:placeholder="$t('请输入客户英文名称')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('付款人姓名')">
<el-input v-model="form.payerName" :placeholder="$t('请输入付款人姓名')"></el-input>
<el-input
v-model="form.payerName"
:placeholder="$t('请输入付款人姓名')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户等级')" prop="level">
<el-select v-model="form.level" :placeholder="$t('请选择客户等级')" disabled>
<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
v-model="form.level"
:placeholder="$t('请选择客户等级')"
disabled
>
<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-form-item>
</el-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<el-form-item :label="$t('出货渠道')" prop="transportType">
<!-- <dict-selector :type="DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE" form-type="checkbox" multiple v-model="form.transportType"></dict-selector>-->
<!-- <dict-selector :type="DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE" form-type="checkbox" multiple v-model="form.transportType"></dict-selector>-->
<el-checkbox-group v-model="form.transportType">
<el-checkbox v-for="item in getDictDatas(DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE)" :key="item.value" :label="item.value" :disabled="[3].includes(+item.value)">{{item.label}}</el-checkbox>
<el-checkbox
v-for="item in getDictDatas(
DICT_TYPE.ECW_CUSTOMER_TRANSPORT_TYPE
)"
:key="item.value"
:label="item.value"
:disabled="[3].includes(+item.value)"
>{{ item.label }}</el-checkbox
>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户类别')" prop="type">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" form-type="checkbox" multiple v-model="form.type"></dict-selector>
<dict-selector
:type="DICT_TYPE.CUSTOMER_TYPE"
form-type="checkbox"
multiple
v-model="form.type"
></dict-selector>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-form-item :label="$t('资源类型')" prop="remarks">-->
<!-- <dict-selector :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="form.resourceType" formatter="number"></dict-selector>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('资源类型')" prop="remarks">-->
<!-- <dict-selector :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="form.resourceType" formatter="number"></dict-selector>-->
<!-- </el-form-item>-->
<el-form-item :label="$t('常用提货网点')" prop="remarks">
<el-select v-model="form.pickupPoint">
<el-option v-for="item in getNodeLists " :value="item.id" :label="isChinese ? item.titleZh : item.titleEn "></el-option>
</el-select>
<el-select v-model="form.pickupPoint">
<el-option
v-for="item in getNodeLists"
:value="item.id"
:label="isChinese ? item.titleZh : item.titleEn"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="13" v-show="form.type && form.type.indexOf('2') !== -1">
<el-col
:span="13"
v-show="form.type && form.type.indexOf('2') !== -1"
>
<el-form-item :label="$t('所属代理')" prop="agentId">
<el-select filterable clearable v-model="form.agentId" :placeholder="$t('请选择所属代理')">
<el-option v-for="item in serviceUserList"
:key="item.id" :label="item.nickname" :value="item.id" />
<el-select
filterable
clearable
v-model="form.agentId"
:placeholder="$t('请选择所属代理')"
>
<el-option
v-for="item in serviceUserList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
......@@ -85,26 +148,47 @@
v-model="form.birthday"
type="date"
value-format="timestamp"
:placeholder="$t('请输入客户生日')">
:placeholder="$t('请输入客户生日')"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('公司英文名称')">
<el-input v-model="form.companyEn" :placeholder="$t('请输入客户英文名称')"></el-input>
<el-input
v-model="form.companyEn"
:placeholder="$t('请输入客户英文名称')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('主营类别')" prop="productType">
<el-row :gutter="10">
<el-col :span="11">
<el-select @change="change" v-model="form.productType" :placeholder="$t('请选择产品类别')">
<el-option :label="item.titleZh" :value="item.id" v-for="(item) in productTypeList" :key="item.id"/>
<el-select
@change="change"
v-model="form.productType"
:placeholder="$t('请选择产品类别')"
>
<el-option
:label="item.titleZh"
:value="item.id"
v-for="item in productTypeList"
:key="item.id"
/>
</el-select>
</el-col>
<el-col :span="11">
<el-select v-model="form.productId" :placeholder="$t('请选择')">
<el-option :label="item.titleZh" :value="parseInt(item.id)" v-for="(item) in productList" :key="item.id"/>
<el-select
v-model="form.productId"
:placeholder="$t('请选择')"
>
<el-option
:label="item.titleZh"
:value="parseInt(item.id)"
v-for="item in productList"
:key="item.id"
/>
</el-select>
</el-col>
</el-row>
......@@ -112,25 +196,57 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户来源')" prop="source">
<el-select v-model="form.source" :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
v-model="form.source"
: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-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('结算方式')" prop="balance">
<el-select v-model="form.balance" :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
v-model="form.balance"
: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-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')" :disabled="((customerId !== '0' && $route.name !== 'allocatedCustomerEdit')) || isCustomerServiceConfirmed">
<el-option v-for="item in !(((customerId !== '0' && $route.name !== 'allocatedCustomerEdit')) || isCustomerServiceConfirmed) ? serviceUserList : allSimplList"
:key="item.id" :label="item.nickname" :value="item.id" />
<el-select
v-model="form.customerService"
:placeholder="$t('请选择客户经理')"
:disabled="
(customerId !== '0' &&
$route.name !== 'allocatedCustomerEdit') ||
isCustomerServiceConfirmed
"
>
<el-option
v-for="item in !(
(customerId !== '0' &&
$route.name !== 'allocatedCustomerEdit') ||
isCustomerServiceConfirmed
)
? serviceUserList
: allSimplList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
......@@ -138,24 +254,39 @@
<el-form-item :label="$t('图片')" prop="picture">
<upload v-model="form.picture" :limit="1"></upload>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户状态')" prop="status">
<el-select v-model="form.status" :placeholder="$t('请选择客户状态')" disabled>
<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
v-model="form.status"
:placeholder="$t('请选择客户状态')"
disabled
>
<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-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('推介人')" prop="promoter">
<el-select clearable remote :remote-method="remoteMethod" v-model="form.promoter" :placeholder="$t('请输入推介人')" filterable>
<el-select
clearable
remote
:remote-method="remoteMethod"
v-model="form.promoter"
:placeholder="$t('请输入推介人')"
filterable
>
<el-option
v-for="item in customerSelectFn"
:key="item.id"
:label="item.name"
:value="item.id">
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
......@@ -167,7 +298,8 @@
v-for="item in allSimplList"
:key="item.id"
:label="item.nickname"
:value="item.id">
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
......@@ -179,34 +311,52 @@
type="datetime"
value-format="timestamp"
disabled
:placeholder="$t('选择创建时间')">
:placeholder="$t('选择创建时间')"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<el-form-item :label="$t('是否显示提单价格')" prop="remarks">
<el-switch v-model="form.isShowTidanPrice"></el-switch>
<el-switch v-model="form.isShowTidanPrice"></el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('询盘信息')">
<el-input
show-word-limit
v-model="form.inquiry"
:rows="3"
type="textarea"
:maxlength="500"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('询盘信息')">
<el-input show-word-limit v-model="form.inquiry" :rows="3" type="textarea" :maxlength="500"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item :label="$t('到仓确认')" prop="arrivalConfirm">
<el-switch v-model="form.arrivalConfirm" :active-value="1" :inactive-value="0" />
<el-switch
v-model="form.arrivalConfirm"
:active-value="1"
:inactive-value="0"
/>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item :label="$t('重货标准')" prop="weightUnit">
<el-switch v-model="showZhong"/>
<el-input v-model="form.weightUnit" :placeholder="$t('请输入重货标准')" v-show="showZhong">
<el-switch v-model="showZhong" />
<el-input
v-model="form.weightUnit"
:placeholder="$t('请输入重货标准')"
v-show="showZhong"
>
<template slot="append">kg/cbm</template>
</el-input>
</el-form-item>
......@@ -214,13 +364,23 @@
<el-col :span="24" v-show="showZhong">
<el-form-item :label="$t('指定线路')" prop="line">
<el-switch v-model="showZhong1"></el-switch>
<customer-line-table v-if="showZhong1" :warehouse-list="warehouseList" :import-city-list="importCityList" v-model="zhongLines" :zhong-pao-type="1"></customer-line-table>
<customer-line-table
v-if="showZhong1"
:warehouse-list="warehouseList"
:import-city-list="importCityList"
v-model="zhongLines"
:zhong-pao-type="1"
></customer-line-table>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item :label="$t('泡货标准')" prop="lightUnit">
<el-switch v-model="showPao"/>
<el-input v-model="form.lightUnit" :placeholder="$t('请输入泡货标准')" v-show="showPao">
<el-switch v-model="showPao" />
<el-input
v-model="form.lightUnit"
:placeholder="$t('请输入泡货标准')"
v-show="showPao"
>
<template slot="append">kg/cbm</template>
</el-input>
</el-form-item>
......@@ -228,295 +388,424 @@
<el-col :span="24" v-show="showPao">
<el-form-item :label="$t('指定线路')" prop="line">
<el-switch v-model="showPao1"></el-switch>
<customer-line-table v-if="showPao1" :warehouse-list="warehouseList" :import-city-list="importCityList" v-model="paoLines" :zhong-pao-type="2"></customer-line-table>
<customer-line-table
v-if="showPao1"
:warehouse-list="warehouseList"
:import-city-list="importCityList"
v-model="paoLines"
:zhong-pao-type="2"
></customer-line-table>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-hasPermi="['ecw:customer:edit-card']" :label="$t('身份证姓名')">
<el-form-item
v-hasPermi="['ecw:customer:edit-card']"
:label="$t('身份证姓名')"
>
<el-input v-model="form.carName"></el-input>
</el-form-item>
<el-form-item v-hasPermi="['ecw:customer:edit-card']" :label="$t('身份证号码')">
<el-input v-model="form.carNo" ></el-input>
<el-form-item
v-hasPermi="['ecw:customer:edit-card']"
:label="$t('身份证号码')"
>
<el-input v-model="form.carNo"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>{{$t('联系人')}}</span>
<el-button style="float: right;" size="small" type="primary" @click="handleAddContact">+</el-button>
<span>{{ $t("联系人") }}</span>
<el-button
style="float: right"
size="small"
type="primary"
@click="handleAddContact"
>+</el-button
>
</div>
<el-form ref="contactForm" :rules="contactRules" :model="form">
<el-table
:data="form.customerContacts"
style="width: 100%"
>
<el-table-column
prop="department"
:label="$t('部门')"
width=""
>
<template v-slot="{ row }">
<el-form-item label="">
<el-input v-model="row.department" :placeholder="$t('请输入部门')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="position"
:label="$t('职位')"
width=""
>
<template v-slot="{row}">
<el-form-item label="">
<el-input v-model="row.position" :placeholder="$t('请输入职位')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="name"
:label="$t('联系人')"
>
<template slot="header">
{{$t('联系人')}} <span style="color: #ff0000">*</span>
</template>
<template v-slot="{row, cellValue, $index}">
<el-form-item :rules="contactRules.name" :prop="'customerContacts.' + $index + '.name'" label="">
<el-input v-model="row.name" :placeholder="$t('请输入联系人')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column>
<template slot="header">
{{$t('联系人英文名称')}}
</template>
<template v-slot="{row, cellValue, $index}">
<el-form-item label="">
<el-input v-model="row.nameEn" :placeholder="$t('请输入联系人英文名称')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="areaCode"
:label="$t('区号')"
>
<template slot="header">
{{$t('区号')}} <span style="color: #ff0000">*</span>
</template>
<template v-slot="{row, cellValue, $index}">
<el-form-item :rules="contactRules.areaCode" :prop="'customerContacts.' + $index + '.areaCode'" label="">
<el-select v-model="row.areaCode" :placeholder="$t('请选择区号')" filterable size="mini">
<el-option v-for="(item, index) in countryList"
:key="index" :label="item.nameShort + (isChinese ? item.nameZh : item.nameEn) + '(' + item.tel + ')'" :value="item.tel" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="phoneNew"
:label="$t('联系方式')"
>
<template slot="header">
{{$t('联系方式')}} <span style="color: #ff0000">*</span>
</template>
<template v-slot="{row, cellValue, $index}">
<el-form-item :rules="contactRules.phoneNew" :prop="'customerContacts.' + $index + '.phoneNew'" label="">
<el-input v-model="row.phoneNew" :placeholder="$t('请输入联系方式')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop=""
:label="$t('关联账号')"
>
<template v-slot = "{row}">
<el-form-item label="">
<!-- <el-select v-model="row.userid" clearable remote :remote-method="getUserMemberUserFn" @change="selectBD" size="mini" filterable>
<el-table :data="form.customerContacts" style="width: 100%">
<el-table-column prop="department" :label="$t('部门')" width="">
<template v-slot="{ row }">
<el-form-item label="">
<el-input
v-model="row.department"
:placeholder="$t('请输入部门')"
size="mini"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="position" :label="$t('职位')" width="">
<template v-slot="{ row }">
<el-form-item label="">
<el-input
v-model="row.position"
:placeholder="$t('请输入职位')"
size="mini"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="name" :label="$t('联系人')">
<template slot="header">
{{ $t("联系人") }} <span style="color: #ff0000">*</span>
</template>
<template v-slot="{ row, cellValue, $index }">
<el-form-item
:rules="contactRules.name"
:prop="'customerContacts.' + $index + '.name'"
label=""
>
<el-input
v-model="row.name"
:placeholder="$t('请输入联系人')"
size="mini"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column>
<template slot="header">
{{ $t("联系人英文名称") }}
</template>
<template v-slot="{ row, cellValue, $index }">
<el-form-item label="">
<el-input
v-model="row.nameEn"
:placeholder="$t('请输入联系人英文名称')"
size="mini"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="areaCode" :label="$t('区号')">
<template slot="header">
{{ $t("区号") }} <span style="color: #ff0000">*</span>
</template>
<template v-slot="{ row, cellValue, $index }">
<el-form-item
:rules="contactRules.areaCode"
:prop="'customerContacts.' + $index + '.areaCode'"
label=""
>
<el-select
v-model="row.areaCode"
:placeholder="$t('请选择区号')"
filterable
size="mini"
>
<el-option
v-for="(item, index) in countryList"
:key="index"
:label="
item.nameShort +
(isChinese ? item.nameZh : item.nameEn) +
'(' +
item.tel +
')'
"
:value="item.tel"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="phoneNew" :label="$t('联系方式')">
<template slot="header">
{{ $t("联系方式") }} <span style="color: #ff0000">*</span>
</template>
<template v-slot="{ row, cellValue, $index }">
<el-form-item
:rules="contactRules.phoneNew"
:prop="'customerContacts.' + $index + '.phoneNew'"
label=""
>
<el-input
v-model="row.phoneNew"
:placeholder="$t('请输入联系方式')"
size="mini"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="" :label="$t('关联账号')">
<template v-slot="{ row }">
<el-form-item label="">
<!-- <el-select v-model="row.userid" clearable remote :remote-method="getUserMemberUserFn" @change="selectBD" size="mini" filterable>
<el-option v-for="(item,index) in userMemberUser" :value="item.id" :key="index" :label="item.nickname + '(' + item.mobile + ')'" ></el-option>
</el-select> -->
<MemberSelector v-model="row.userid" size="mini" />
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="social"
:label="$t('社交软件')"
>
<template v-slot="{row}">
<el-form-item label="">
<el-select v-model="row.social" :placeholder="$t('请选择社交软件')" size="mini">
<el-option v-for="dict in getDictDatas(DICT_TYPE.SOCIAL)"
:key="dict.value" :label=" isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="socialNumber"
:label="$t('社交软件号码')"
>
<template v-slot="{row}">
<el-form-item label="">
<el-input v-model="row.socialNumber" :placeholder="$t('请输入社交软件号码')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column
width="260px"
prop="email"
:label="$t('邮箱')"
>
<template v-slot="{row}">
<el-form-item v-for="(item, index) in row.email" :key="index" label="">
<div style="display: flex;align-items: center;">
<el-input v-model="row.email[index]" :placeholder="$t('请输入邮箱')" size="mini"/>
<el-button @click="deleteEmail(row.email,index)" v-if="row.email.length !== 1" style="height:25px;margin-left: 5px" type="danger" size="mini">删除</el-button>
<el-button @click="addEmail(row.email)" style="height: 25px;margin-left: 5px" v-if="index === row.email.length -1 && row.email.length < 5" size="mini" type="primary">添加</el-button>
</div>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="isDefault"
:label="$t('设为默认')"
>
<template v-slot="{ row, column, $index }">
<el-form-item label="">
<el-select v-model="row.isDefault" :placeholder="$t('设为默认')" @change="handleDefaultChange($index)" size="mini">
<el-option v-for="dict in getDictDatas(DICT_TYPE.IS_DEFAULT)"
:key="dict.value" :label=" isChinese ? dict.label : dict.labelEn" :value="Number(dict.value)" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="name"
:label="$t('操作')"
>
<template v-slot="{ row, column, $index }">
<el-form-item label="">
<el-button type="danger" @click="handleDeleteContact($index)" size="mini">{{$t('删除')}}</el-button>
</el-form-item>
</template>
</el-table-column>
</el-table>
<MemberSelector v-model="row.userid" size="mini" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="social" :label="$t('社交软件')">
<template v-slot="{ row }">
<el-form-item label="">
<el-select
v-model="row.social"
:placeholder="$t('请选择社交软件')"
size="mini"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.SOCIAL)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="parseInt(dict.value)"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="socialNumber"
:label="$t('社交软件号码')"
>
<template v-slot="{ row }">
<el-form-item label="">
<el-input
v-model="row.socialNumber"
:placeholder="$t('请输入社交软件号码')"
size="mini"
/>
</el-form-item>
</template>
</el-table-column>
<el-table-column width="260px" prop="email" :label="$t('邮箱')">
<template v-slot="{ row }">
<el-form-item
v-for="(item, index) in row.email"
:key="index"
label=""
>
<div style="display: flex; align-items: center">
<el-input
v-model="row.email[index]"
:placeholder="$t('请输入邮箱')"
size="mini"
/>
<el-button
@click="deleteEmail(row.email, index)"
v-if="row.email.length !== 1"
style="height: 25px; margin-left: 5px"
type="danger"
size="mini"
>删除</el-button
>
<el-button
@click="addEmail(row.email)"
style="height: 25px; margin-left: 5px"
v-if="
index === row.email.length - 1 &&
row.email.length < 5
"
size="mini"
type="primary"
>添加</el-button
>
</div>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="isDefault" :label="$t('设为默认')">
<template v-slot="{ row, column, $index }">
<el-form-item label="">
<el-select
v-model="row.isDefault"
:placeholder="$t('设为默认')"
@change="handleDefaultChange($index)"
size="mini"
>
<el-option
v-for="dict in getDictDatas(DICT_TYPE.IS_DEFAULT)"
:key="dict.value"
:label="isChinese ? dict.label : dict.labelEn"
:value="Number(dict.value)"
/>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="name" :label="$t('操作')">
<template v-slot="{ row, column, $index }">
<el-form-item label="">
<el-button
type="danger"
@click="handleDeleteContact($index)"
size="mini"
>{{ $t("删除") }}</el-button
>
</el-form-item>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<el-row :gutter="10" style="margin-top: 15px">
<el-col :span="12">
<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-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<el-form-item :label="$t('开户行')" prop="bank">
<el-input v-model="form.bank" :placeholder="$t('请输入开户行')" />
<el-input
v-model="form.bank"
:placeholder="$t('请输入开户行')"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<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-col>
<el-col :span="12">
<el-form-item :label="$t('开票电话')" prop="billingTell">
<el-input v-model="form.billingTell" :placeholder="$t('请输入开票电话')" maxlength="50" />
<el-input
v-model="form.billingTell"
:placeholder="$t('请输入开票电话')"
maxlength="50"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<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-col>
</el-row>
</el-form>
<el-card>
<div slot="header" class="clearfix">
<span>{{$t('银行信息')}}</span>
<el-button style="float: right;" size="small" type="primary" @click="addBankData">+</el-button>
<span>{{ $t("银行信息") }}</span>
<el-button
style="float: right"
size="small"
type="primary"
@click="addBankData"
>+</el-button
>
</div>
<el-form ref="bankForm" :model="form">
<el-table border :data="form.customerBanks">
<el-table-column :label="$t('序号')" type="index"></el-table-column>
<el-table-column
:label="$t('序号')"
type="index"
></el-table-column>
<el-table-column>
<div slot="header">
{{$t('账户名称')}} <span style="color: red;">*</span>
{{ $t("账户名称") }} <span style="color: red">*</span>
</div>
<template v-slot="{row,$index}">
<el-form-item :rules="{required:true,message:$t('请输入账户名称')}" :prop="'customerBanks.'+ $index +'.accountName'">
<el-input size="mini" v-model="row.accountName"></el-input>
</el-form-item>
</template>
<template v-slot="{ row, $index }">
<el-form-item
:rules="{ required: true, message: $t('请输入账户名称') }"
:prop="'customerBanks.' + $index + '.accountName'"
>
<el-input size="mini" v-model="row.accountName"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('币别')">
<div slot="header">
{{$t('币别')}} <span style="color: red;">*</span>
{{ $t("币别") }} <span style="color: red">*</span>
</div>
<template v-slot="{row,$index}">
<el-form-item :prop="'customerBanks.'+ $index +'.currency'" :rules="{required:true,message:$t('请输入币别')}" >
<template v-slot="{ row, $index }">
<el-form-item
:prop="'customerBanks.' + $index + '.currency'"
:rules="{ required: true, message: $t('请输入币别') }"
>
<el-select v-model="row.currency">
<el-option v-for="(item) in currecyList" :label="$l(item,'title')" :value="item.id.toString()" :key="item.id"></el-option>
<el-option
v-for="item in currecyList"
:label="$l(item, 'title')"
:value="item.id.toString()"
:key="item.id"
></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('银行名称')">
<div slot="header">
{{$t('银行名称')}} <span style="color: red;">*</span>
{{ $t("银行名称") }} <span style="color: red">*</span>
</div>
<template v-slot="{row,$index}">
<el-form-item :prop="'customerBanks.'+ $index +'.bankName'" :rules="{required:true,message:$t('银行名称')}">
<el-input v-model="row.bankName" size="mini"></el-input>
<template v-slot="{ row, $index }">
<el-form-item
:prop="'customerBanks.' + $index + '.bankName'"
:rules="{ required: true, message: $t('银行名称') }"
>
<el-input v-model="row.bankName" size="mini"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('银行账户')">
<div slot="header">
{{$t('银行账户')}} <span style="color: red;">*</span>
{{ $t("银行账户") }} <span style="color: red">*</span>
</div>
<template v-slot="{row,$index}">
<el-form-item :prop="`customerBanks.${$index}.bankAccount`" :rules="{required:true,message:$t('请输入银行账户')}">
<el-input v-model="row.bankAccount" size="mini"></el-input>
<template v-slot="{ row, $index }">
<el-form-item
:prop="`customerBanks.${$index}.bankAccount`"
:rules="{ required: true, message: $t('请输入银行账户') }"
>
<el-input v-model="row.bankAccount" size="mini"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('银行代码')">
<template v-slot="{row}">
<template v-slot="{ row }">
<el-form-item prop="bankCode">
<el-input v-model="row.bankCode" size="mini"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('账户类型')">
<template v-slot="{row}">
<template v-slot="{ row }">
<el-form-item>
<el-select v-model="row.accountType">
<el-option value="1" :label="$t('公账')"></el-option>
<el-option value="2" :label="$t('私账')" ></el-option>
<el-option value="2" :label="$t('私账')"></el-option>
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('状态')">
<template v-slot="{row}">
<template v-slot="{ row }">
<el-form-item>
<el-select v-model="row.status">
<el-option :value="0" :label="$t('停用')"></el-option>
......@@ -526,58 +815,68 @@
</template>
</el-table-column>
<el-table-column :label="$t('银行地址')">
<template v-slot="{row}">
<template v-slot="{ row }">
<el-form-item prop="baBankAdd">
<el-input v-model="row.bankAddress" size="mini"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot="{$index}">
<el-button @click="deleteBankData($index)">{{$t('删除')}}</el-button>
<template v-slot="{ $index }">
<el-button @click="deleteBankData($index)">{{
$t("删除")
}}</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<div style="text-align: center">
<el-button type="primary" @click="submitForm">{{$t('确 定')}}</el-button>
<el-button @click="cancel">{{$t('取 消')}}</el-button>
<el-button type="primary" @click="submitForm">{{
$t("确 定")
}}</el-button>
<el-button @click="cancel">{{ $t("取 消") }}</el-button>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload'
import { getDictDatas, DICT_TYPE } from "@/utils/dict";
import upload from "@/components/ImageUpload";
import {
createCustomer,
getCustomer,
getCustomerList,
getCustomerPage, memberUserList,
getCustomerPage,
memberUserList,
updateCustomer,
userMemberUserList,
getCustomerLines, fillupCustomeInfo, getServiceNetwork
} from '@/api/ecw/customer'
import {getNodeList} from "@/api/ecw/node"
import { getProductTypeList } from '@/api/ecw/productType'
import { getProductList } from '@/api/ecw/product'
import {getTradeCityList} from "@/api/ecw/region"
import {getWarehouseList} from "@/api/ecw/warehouse"
import CustomerLineTable from '@/components/CustomerLineTable'
import {getCustomerSelect} from "@/api/ecw/customer"
import {listAllSimpl, listServiceUser, listSimpleUsers} from "@/api/system/user"
import { getZhongPaoBest, getZhongPaoPage } from '@/api/ecw/zhongPao'
import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts'
import { getCountryListAll } from '@/api/ecw/country'
getCustomerLines,
fillupCustomeInfo,
getServiceNetwork,
} from "@/api/ecw/customer";
import { getNodeList } from "@/api/ecw/node";
import { getProductTypeList } from "@/api/ecw/productType";
import { getProductList } from "@/api/ecw/product";
import { getTradeCityList } from "@/api/ecw/region";
import { getWarehouseList } from "@/api/ecw/warehouse";
import CustomerLineTable from "@/components/CustomerLineTable";
import { getCustomerSelect } from "@/api/ecw/customer";
import {
listAllSimpl,
listServiceUser,
listSimpleUsers,
} from "@/api/system/user";
import { getZhongPaoBest, getZhongPaoPage } from "@/api/ecw/zhongPao";
import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts";
import { getCountryListAll } from "@/api/ecw/country";
import Template from "@/views/cms/template";
import {validatorMobile} from "@/api/ecw/validate"
import { validatorMobile } from "@/api/ecw/validate";
// import {customerDropDownList} from "@/api/ecw/customerCommissionInfo";
import MemberSelector from '@/components/MemberSelector'
import {getCurrencyList} from "@/api/ecw/currency";
import MemberSelector from "@/components/MemberSelector";
import { getCurrencyList } from "@/api/ecw/currency";
export default {
name: "EcwCustomerEdit",
......@@ -586,90 +885,95 @@ export default {
Template,
upload,
CustomerLineTable,
MemberSelector
MemberSelector,
},
created() {
getCurrencyList().then(response => {
this.currecyList = response.data;
})
this.isCustomerServiceConfirmed = this.$route.query.isCustomerServiceConfirmed ? true : false
this.getCustomerSelect()
this.reset()
created() {
getCurrencyList().then((response) => {
this.currecyList = response.data;
});
this.isCustomerServiceConfirmed = this.$route.query
.isCustomerServiceConfirmed
? true
: false;
this.getCustomerSelect();
this.reset();
// this.getUserMemberUserFn()
if(this.customerId !== '0') {
let customerId = this.customerId
if (this.customerId !== "0") {
let customerId = this.customerId;
// 编辑客户
this.getCustomer(this.customerId).then(() => {
getCustomerContactsListByCustomer({customerId: customerId}).then(r => {
this.form.customerContacts = r.data
this.form.customerContacts.forEach(item => {
if(item.email){
item.email = item.email.split(',')
}else {
item.email = [""]
}
})
})
if(this.form.promoter){
getCustomerList({ids:this.form.promoter}).then(r => {
getCustomerContactsListByCustomer({ customerId: customerId }).then(
(r) => {
this.form.customerContacts = r.data;
this.form.customerContacts.forEach((item) => {
if (item.email) {
item.email = item.email.split(",");
} else {
item.email = [""];
}
});
}
);
if (this.form.promoter) {
getCustomerList({ ids: this.form.promoter }).then((r) => {
this.recommended = r.data;
})
});
}
// 打开重泡货开关
if(this.form.weightUnit){
this.showZhong = true
}
if(this.form.lightUnit){
this.showPao = true
}
if(customerId){
// 获取重泡货路线
getCustomerLines(customerId).then(res => {
this.zhongLines = res.data.filter(item => item.zhongPaoType == 1)
this.paoLines = res.data.filter(item => item.zhongPaoType == 2)
if(this.zhongLines.length)this.showZhong1 = true
if(this.paoLines.length) this.showPao1 = true
// /admin-api/customer-line/get-by-customer
// /admin-api/customer-line/get-by-customer?customerId=29564
})
}
})
// 打开重泡货开关
if (this.form.weightUnit) {
this.showZhong = true;
}
if (this.form.lightUnit) {
this.showPao = true;
}
if (customerId) {
// 获取重泡货路线
getCustomerLines(customerId).then((res) => {
this.zhongLines = res.data.filter((item) => item.zhongPaoType == 1);
this.paoLines = res.data.filter((item) => item.zhongPaoType == 2);
if (this.zhongLines.length) this.showZhong1 = true;
if (this.paoLines.length) this.showPao1 = true;
// /admin-api/customer-line/get-by-customer
// /admin-api/customer-line/get-by-customer?customerId=29564
});
}
});
} else {
this.getZhongPao()
this.getZhongPao();
// 新建客户
this.handleAddContact()
if(this.isCustomerServiceConfirmed){
this.form.customerService = this.userId
this.handleAddContact();
if (this.isCustomerServiceConfirmed) {
this.form.customerService = this.userId;
}
}
getNodeList().then(r => {
this.getNodeLists = r.data
})
getProductTypeList().then(r => {
this.productTypeList = r.data
})
getNodeList().then((r) => {
this.getNodeLists = r.data;
});
getProductTypeList().then((r) => {
this.productTypeList = r.data;
});
getTradeCityList({type: 1}).then(r => {
this.importCityList = r.data.filter(item => item.type === '1')
})
getWarehouseList().then(r => {
this.warehouseList = r.data
})
listServiceUser().then(r => {
this.serviceUserList = r.data
})
listAllSimpl().then(r => {
this.allSimplList = r.data
})
getCountryListAll().then(r => {
this.countryList = r.data
})
getTradeCityList({ type: 1 }).then((r) => {
this.importCityList = r.data.filter((item) => item.type === "1");
});
getWarehouseList().then((r) => {
this.warehouseList = r.data;
});
listServiceUser().then((r) => {
this.serviceUserList = r.data;
});
listAllSimpl().then((r) => {
this.allSimplList = r.data;
});
getCountryListAll().then((r) => {
this.countryList = r.data;
});
},
data(){
data() {
return {
getNodeLists:[],
isCustomerServiceConfirmed:false,
getNodeLists: [],
isCustomerServiceConfirmed: false,
getDictDatas,
DICT_TYPE,
......@@ -677,29 +981,78 @@ export default {
form: {},
// 表单校验
rules: {
name: [{ required: true, 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" }],
source: [{ required: true, message: this.$t('客户来源不能为空'), trigger: "blur" }],
customerService: [{ required:this.customerId === '0', message: this.$t('客户经理不能为空'), trigger: "blur" }],
status: [{ required: true, message: this.$t('客户状态不能为空'), trigger: "blur" }],
name: [
{
required: true,
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",
},
],
source: [
{
required: true,
message: this.$t("客户来源不能为空"),
trigger: "blur",
},
],
customerService: [
{
required: this.customerId === "0",
message: this.$t("客户经理不能为空"),
trigger: "blur",
},
],
status: [
{
required: true,
message: this.$t("客户状态不能为空"),
trigger: "blur",
},
],
},
contactRules: {
name: [{ required: true, message: this.$t('请输入联系人'), trigger: "blur" }],
areaCode: [{ required: true, message: this.$t('请选择区号'), trigger: "change" },{
required: true,
trigger: 'change',
validator:this.codeValidator
}],
phoneNew: [{
required: true,
trigger: "blur",
validator: this.phoneValidator
}],
name: [
{ required: true, message: this.$t("请输入联系人"), trigger: "blur" },
],
areaCode: [
{ required: true, message: this.$t("请选择区号"), trigger: "change" },
{
required: true,
trigger: "change",
validator: this.codeValidator,
},
],
phoneNew: [
{
required: true,
trigger: "blur",
validator: this.phoneValidator,
},
],
},
// 网点
nodeList: [],
......@@ -712,41 +1065,41 @@ export default {
warehouseList: [], // 仓库列表
importCityList: [], // 进口地址
customerSelect: [],
recommended:[],
recommended: [],
serviceUserList: [],
countryList: [],
zhongLines: [], // 重货线路
paoLines: [], // 泡货线路
memberList:[],//会员列表
selectMemberList:[],//选中会员列表
serviceNetworkList:[], //网点列表
allSimplList:[],
currecyList:[]
}
memberList: [], //会员列表
selectMemberList: [], //选中会员列表
serviceNetworkList: [], //网点列表
allSimplList: [],
currecyList: [],
};
},
methods: {
addEmail(row){
row.push('')
addEmail(row) {
row.push("");
},
deleteEmail(row, index){
row.splice(index, 1)
deleteEmail(row, index) {
row.splice(index, 1);
},
change(val){
this.form.productId = '';
change(val) {
this.form.productId = "";
this.getProductListFn(val);
},
getProductListFn(val){
getProductList({typeId:val}).then(r => {
this.productList = r.data
})
getProductListFn(val) {
getProductList({ typeId: val }).then((r) => {
this.productList = r.data;
});
},
deleteBankData(index){
deleteBankData(index) {
this.form.customerBanks.splice(index, 1);
},
//添加银行卡
addBankData(){
addBankData() {
let p = {
bankName: "",
bankAccount: "",
......@@ -754,89 +1107,99 @@ export default {
bankCode: "",
accountType: null,
status: null,
currency:'',
accountName:''
currency: "",
accountName: "",
};
this.form.customerBanks = [...this.form.customerBanks,p]
this.form.customerBanks = [...this.form.customerBanks, p];
},
/* getUserMemberUserFn(val){
userMemberUserList({pageNo:1,pageSize:100,searchKey:val}).then(r => {
this.memberList = r.data.list
})
}, */
remoteMethod(val){
remoteMethod(val) {
this.getCustomerSelect(val);
},
getCustomerSelect(val = ''){
getCustomerSelect({pageNo:1,pageSize:30,searchKey:val}).then(res => {
this.customerSelect = res.data.list
})
getCustomerSelect(val = "") {
getCustomerSelect({ pageNo: 1, pageSize: 30, searchKey: val }).then(
(res) => {
this.customerSelect = res.data.list;
}
);
},
phoneValidator(rule, value, callback){
phoneValidator(rule, value, callback) {
if (!value) {
return callback(new Error(this.$t('请输入联系方式')));
return callback(new Error(this.$t("请输入联系方式")));
}
let areaCode = this.form.customerContacts.find(e => e.phoneNew === value).areaCode
if(areaCode){
let areaCode = this.form.customerContacts.find(
(e) => e.phoneNew === value
).areaCode;
if (areaCode) {
validatorMobile({
code: areaCode,
mobile: value
}).then(r => {
if (r.data){
callback()
} else {
callback(new Error(r.msg || this.$t('手机号验证失败')))
}
}).catch(e => {
console.error(e)
callback(new Error(this.$t('手机号验证失败')))
mobile: value,
})
.then((r) => {
if (r.data) {
callback();
} else {
callback(new Error(r.msg || this.$t("手机号验证失败")));
}
})
.catch((e) => {
console.error(e);
callback(new Error(this.$t("手机号验证失败")));
});
}
},
codeValidator(rule, value, callback){
let index = +(rule.field.split('.')[1])
let phone = this.form.customerContacts[index].phoneNew
if(phone){
codeValidator(rule, value, callback) {
let index = +rule.field.split(".")[1];
let phone = this.form.customerContacts[index].phoneNew;
if (phone) {
validatorMobile({
code:value,
mobile: phone
}).then(r => {
if (r.data){
callback()
} else {
callback()
this.$message.error(r.msg || this.$t('手机号验证失败'))
}
}).catch(e => {
console.error(e)
callback()
this.$message.error(this.$t('手机号验证失败'))
code: value,
mobile: phone,
})
.then((r) => {
if (r.data) {
callback();
} else {
callback();
this.$message.error(r.msg || this.$t("手机号验证失败"));
}
})
.catch((e) => {
console.error(e);
callback();
this.$message.error(this.$t("手机号验证失败"));
});
}
},
handleDefaultChange($index){
handleDefaultChange($index) {
// 只有一个联系人,设置成非默认
if (this.form.customerContacts.length === 1 && this.form.customerContacts[0].isDefault === 0){
this.$modal.msgWarning(this.$t('至少拥有一个默认联系人'))
this.form.customerContacts[0].isDefault = 1
return
if (
this.form.customerContacts.length === 1 &&
this.form.customerContacts[0].isDefault === 0
) {
this.$modal.msgWarning(this.$t("至少拥有一个默认联系人"));
this.form.customerContacts[0].isDefault = 1;
return;
}
// 设置默认联系人
if (this.form.customerContacts[$index].isDefault === 1) {
// 其他的置否
let i = 0
this.form.customerContacts.forEach(e => {
if (i !== $index){
e.isDefault = 0
let i = 0;
this.form.customerContacts.forEach((e) => {
if (i !== $index) {
e.isDefault = 0;
}
i++
})
i++;
});
} else {
// 第一个置是
this.form.customerContacts[0].isDefault = 1
this.form.customerContacts[0].isDefault = 1;
}
},
/* selectBD(val){
......@@ -851,104 +1214,111 @@ export default {
}, */
/** 取消按钮 */
cancel() {
this.$tab.closePage()
this.$tab.closePage();
this.open = false;
this.reset();
},
/** 提交按钮 */
submitForm() {
if(this.form.customerContacts.length === 0){
this.$modal.alert(this.$t('至少添加一位联系人'))
return
if (this.form.customerContacts.length === 0) {
this.$modal.alert(this.$t("至少添加一位联系人"));
return;
}
this.$refs["contactForm"].validate((valid1,err1) => {
this.$refs["form"].validate((valid2,err2) => {
this.$refs.bankForm.validate((valid3,err3)=>{
console.log(valid3,'valid3')
if (!valid1 || !valid2 || !valid3) {
this.$showFormValidateErrors({...err1,...err2,...err3})
return;
}
if (this.form.customerContacts.length === 0){
this.$modal.msgError(this.$t('至少填写一个联系人信息'));
return
}
this.$refs["contactForm"].validate((valid1, err1) => {
this.$refs["form"].validate((valid2, err2) => {
this.$refs.bankForm.validate((valid3, err3) => {
console.log(valid3, "valid3");
if (!valid1 || !valid2 || !valid3) {
this.$showFormValidateErrors({ ...err1, ...err2, ...err3 });
return;
}
if (this.form.customerContacts.length === 0) {
this.$modal.msgError(this.$t("至少填写一个联系人信息"));
return;
}
// 重货标准和泡货标准,未打开就不传,提交前清空一下
if(!this.showZhong) {
this.form.weightUnit = null
this.zhongLines = []
if (!this.showZhong) {
this.form.weightUnit = null;
this.zhongLines = [];
}
if (!this.showZhong1) {
this.zhongLines = []
this.zhongLines = [];
}
if(!this.showPao) {
this.form.lightUnit = null
this.paoLines = []
if (!this.showPao) {
this.form.lightUnit = null;
this.paoLines = [];
}
if (!this.showPao1) {
this.paoLines = []
this.paoLines = [];
}
this.updateCustomerLines()
const form = {...this.form, type: this.form.type?.join(','), transportType: (this.form.transportType || [])?.join(','), taxRate: Number(this.form.taxRate)}
form.customerContacts = JSON.parse(JSON.stringify(this.form.customerContacts))
form.customerContacts.forEach(e =>{
e.email = [...e.email].filter(i => i !== '').join(',')
})
// 检查路线是否启用了但是没选择目的仓
let errors = 0
form.customerLines.forEach(line => {
if(!line.objectiveIds || line.objectiveIds == ''){
errors ++
this.updateCustomerLines();
const form = {
...this.form,
type: this.form.type?.join(","),
transportType: (this.form.transportType || [])?.join(","),
taxRate: Number(this.form.taxRate),
};
form.customerContacts = JSON.parse(
JSON.stringify(this.form.customerContacts)
);
form.customerContacts.forEach((e) => {
e.email = [...e.email].filter((i) => i !== "").join(",");
});
// 检查路线是否启用了但是没选择目的仓
let errors = 0;
form.customerLines.forEach((line) => {
if (!line.objectiveIds || line.objectiveIds == "") {
errors++;
}
});
if (errors) {
return this.$message.error("有两条路线未选择目的地");
}
})
if(errors){
return this.$message.error('有两条路线未选择目的地')
}
//我的客户页面跳转直接,完善客户
if(this.isCustomerServiceConfirmed){
form.isCustomerServiceConfirmed = this.isCustomerServiceConfirmed;
}
// 修改的提交
if (this.form.id != null) {
this.form.customerContacts.forEach(e => {
e.customerId = this.customerId
})
if(this.$route.name === 'perfect'){
fillupCustomeInfo(form).then(r => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.open = false;
const obj = { path: "/customer/customer" };
this.$tab.closeOpenPage(obj);
})
}else {
updateCustomer(form).then(response => {
this.$modal.msgSuccess(this.$t('修改成功'));
this.open = false;
// this.getList();
const obj = { path: "/customer/customer" };
this.$tab.closeOpenPage(obj);
})
}
//我的客户页面跳转直接,完善客户
if (this.isCustomerServiceConfirmed) {
form.isCustomerServiceConfirmed = this.isCustomerServiceConfirmed;
}
// 修改的提交
if (this.form.id != null) {
this.form.customerContacts.forEach((e) => {
e.customerId = this.customerId;
});
if (this.$route.name === "perfect") {
fillupCustomeInfo(form).then((r) => {
this.$modal.msgSuccess(this.$t("修改成功"));
this.open = false;
const obj = { path: "/customer/customer" };
this.$tab.closeOpenPage(obj);
});
} else {
updateCustomer(form).then((response) => {
this.$modal.msgSuccess(this.$t("修改成功"));
this.open = false;
// this.getList();
const obj = { path: "/customer/customer" };
this.$tab.closeOpenPage(obj);
});
}
return;
}
// 添加的提交
createCustomer(form).then(response => {
this.$modal.msgSuccess(this.$t('新增成功'));
this.open = false;
// this.getList();
const obj = { path: "/customer/customer" };
this.$tab.closeOpenPage(obj);
})
return;
}
// 添加的提交
createCustomer(form).then((response) => {
this.$modal.msgSuccess(this.$t("新增成功"));
this.open = false;
// this.getList();
const obj = { path: "/customer/customer" };
this.$tab.closeOpenPage(obj);
});
});
});
})
})
});
},
/** 表单重置 */
reset() {
this.form = {
inquiry:undefined,
inquiry: undefined,
id: undefined,
number: undefined,
name: undefined,
......@@ -956,11 +1326,11 @@ export default {
level: 1,
country: undefined,
type: undefined,
transportType:[],
transportType: [],
agentId: undefined,
company: undefined,
companyEn: undefined,
payerName:undefined,
payerName: undefined,
address: undefined,
productType: undefined,
productId: undefined,
......@@ -990,84 +1360,94 @@ export default {
arrivalConfirm: undefined,
weightUnit: undefined,
createTime: undefined,
isShowTidanPrice:true,
carName:undefined,
carNo:undefined,
customerBanks:[]
isShowTidanPrice: true,
carName: undefined,
carNo: undefined,
customerBanks: [],
};
this.form.createTime = (new Date()).getTime()
this.form.createTime = new Date().getTime();
this.resetForm("form");
},
getCustomer(id) {
return getCustomer(id).then(response => {
console.log(response,'response')
this.form = { ...this.form, ...response.data, id: this.customerId,transportType: response.data.transportType && response.data.transportType !== '' ? response.data.transportType.split(',') : [],customerBanks:response.data.customerBankBackVOList };
if(this.form.productType){
console.log('1231',this.form.productType)
this.getProductListFn(this.form.productType)
return getCustomer(id).then((response) => {
console.log(response, "response");
this.form = {
...this.form,
...response.data,
id: this.customerId,
transportType:
response.data.transportType && response.data.transportType !== ""
? response.data.transportType.split(",")
: [],
customerBanks: response.data.customerBankBackVOList,
};
if (this.form.productType) {
console.log("1231", this.form.productType);
this.getProductListFn(this.form.productType);
}
this.open = true;
this.title = this.$t('修改客户');
this.getZhongPao()
this.title = this.$t("修改客户");
this.getZhongPao();
});
},
updateCustomerLines() {
let zhongLines = [], paoLines = []
let zhongLines = [],
paoLines = [];
if (this.zhongLines.length > 0) {
zhongLines = this.zhongLines
zhongLines = this.zhongLines;
}
if (this.paoLines.length > 0) {
paoLines = this.paoLines
paoLines = this.paoLines;
}
this.form.customerLines = [...zhongLines, ...paoLines]
this.form.customerLines = [...zhongLines, ...paoLines];
},
handleAddContact() {
this.form.customerContacts.push({
"areaCode": "",
areaCode: "",
// "customerId": 0,q
"department": "",
"email": [''],
"isDefault": this.form.customerContacts.length === 0 ? 1 : 0,
"name": "",
"phoneNew": "",
"position": "",
"social": undefined,
"socialNumber": "",
"userid": undefined,
"nameEn":"",
department: "",
email: [""],
isDefault: this.form.customerContacts.length === 0 ? 1 : 0,
name: "",
phoneNew: "",
position: "",
social: undefined,
socialNumber: "",
userid: undefined,
nameEn: "",
// "username": ""
})
});
},
handleDeleteContact($index){
this.form.customerContacts.splice($index, 1)
handleDeleteContact($index) {
this.form.customerContacts.splice($index, 1);
if (this.form.customerContacts.length > 0) {
this.$refs['contactForm'].clearValidate()
this.$refs["contactForm"].clearValidate();
if (!this.form.customerContacts.find(e => e.isDefault)){
this.form.customerContacts[0].isDefault = 1
if (!this.form.customerContacts.find((e) => e.isDefault)) {
this.form.customerContacts[0].isDefault = 1;
}
}
},
getZhongPao(){
getZhongPao() {
getZhongPaoBest({
customerId: this.customerId,
// departureId: this.departureId,
// objectiveId: this.objectiveId
}).then(r => {
if(!this.form.weightUnit) this.form.weightUnit = r.data.zhongEdge
if(!this.form.lightUnit) this.form.lightUnit = r.data.paoEdge
})
}
}).then((r) => {
if (!this.form.weightUnit) this.form.weightUnit = r.data.zhongEdge;
if (!this.form.lightUnit) this.form.lightUnit = r.data.paoEdge;
});
},
},
computed: {
isChinese(){
return this.$i18n.locale === 'zh_CN'
isChinese() {
return this.$i18n.locale === "zh_CN";
},
userId(){
return this.$store.state.user.id
userId() {
return this.$store.state.user.id;
},
customerId(){
customerId() {
return this.$route.params.customerId;
},
/* userMemberUser(){
......@@ -1076,32 +1456,34 @@ export default {
})
return [...this.selectMemberList,...list]
}, */
productListFilter(){
return this.productList.filter((p) => p.typeId === this.form.productType)
productListFilter() {
return this.productList.filter((p) => p.typeId === this.form.productType);
},
customerSelectFn() {
if (this.recommended.length > 0) {
let i = this.customerSelect.find(
(item) => item.id === this.recommended[0].id
);
if (!i) {
this.customerSelect.push(this.recommended[0]);
}
return this.customerSelect;
} else {
return this.customerSelect;
}
},
customerSelectFn(){
if(this.recommended.length > 0){
let i = this.customerSelect.find(item => item.id === this.recommended[0].id)
if(!i){
this.customerSelect.push(this.recommended[0])
}
return this.customerSelect
}else {
return this.customerSelect
}
}
},
watch: {
zhongLines() {
console.log('zhongLines', this.zhongLines)
this.updateCustomerLines()
console.log("zhongLines", this.zhongLines);
this.updateCustomerLines();
},
paoLines() {
console.log('paoLines', this.paoLines)
this.updateCustomerLines()
}
}
}
console.log("paoLines", this.paoLines);
this.updateCustomerLines();
},
},
};
</script>
<style scoped lang="scss">
......
......@@ -343,6 +343,9 @@ import { getSupplierPage } from "@/api/ecw/supplier";
import { getCurrencyPage } from "@/api/ecw/currency";
import { getWarehouseList } from "@/api/ecw/warehouse";
/*
应付款
*/
export default {
name: "EcwFinancialPayable",
components: {},
......
......@@ -6,8 +6,9 @@
<pdf-viewer id="pdfViewer" ref="viewer" v-if="pdfData" :url="pdfData" style="display:block; margin: 0 auto; max-height: 80vh; overflow:auto;" />
<!-- <div v-if="detail" class="billcontent" v-html="detail.billContent"></div> -->
<p class="subs" style="text-align:center">
<el-button type="primary" @click="download" :disabled="!detail">{{$t('下载')}}</el-button>
<el-button type="primary" @click="print" :disabled="!detail">{{$t('打印')}}</el-button>
<!--lanbm 2024-06-04 添加审批状态控制逻辑-->
<el-button type="primary" @click="download" :disabled="detail.bpmStatus!='2'">{{$t('下载')}}</el-button>
<el-button type="primary" @click="print" :disabled="detail.bpmStatus!='2'">{{$t('打印')}}</el-button>
</p>
</el-dialog>
</template>
......
......@@ -574,6 +574,7 @@
</el-card>
<print-warehouse-receipt v-if="showWarehouseReceipt" :order-id="order.orderId" @close="showWarehouseReceipt=false" />
<!--查看提货单 lanbm 2024-06-03-->
<print-lading-bill v-if="showLadingBill" :order-id="order.orderId" :transport-type="order.transportId" @close="showLadingBill=false" />
<warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" :type="type" @openPackHistory="openPackHistory" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<el-dialog :title="$t('付款人')" :visible.sync="showDarweeDialog" v-if="order && order.customDraweeVOList">
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -91,7 +91,6 @@
<el-table-column :label="$t('仓库编号')" align="center" prop="number" />
<el-table-column :label="$t('仓库名称')" align="center" prop="titleZh" />
<el-table-column :label="$t('英文名称')" align="center" prop="titleEn" />
<el-table-column :label="$t('贸易属性')" align="center" prop="tradeType">
<template slot-scope="scope">
<div>{{ tradeTypeName(scope.row.tradeType) }}</div>
......@@ -114,7 +113,18 @@
align="center"
:prop="$l('address')"
/>
<!--lanbm 2024-06-04 add-->
<el-table-column
:label="$t('仓库免租期')"
align="center"
prop="rentFreeDays"
/>
<el-table-column
:label="$t('锁定收货人天数')"
align="center"
prop="lockRecipientDays"
/>
<!--end lanbm 2024-06-04 add-->
<el-table-column prop="head" :label="$t('负责人')" align="center">
<template slot-scope="scope">
<div>
......@@ -315,7 +325,7 @@
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item :label="$t('所属网点')" prop="nodeId">
<el-select
v-model="form.nodeId"
......@@ -504,7 +514,25 @@
>
</el-radio-group>
</el-form-item>
<!--lanbm 2024-06-04 添加控货需要的逻辑字段-->
<el-form-item :label="$t('仓库免租期')" prop="rentFreeDays">
<el-input-number
v-model="form.rentFreeDays"
controls-position="right"
:min="0"
/>
</el-form-item>
<el-form-item :label="$t('锁定收货人天数')" prop="lockRecipientDays">
<el-input-number
v-model="form.lockRecipientDays"
controls-position="right"
:min="0"
/>
</el-form-item>
</el-form>
<!--end lanbm 2024-06-04 添加控货需要的逻辑字段-->
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{
$t("确定")
......@@ -609,7 +637,7 @@
</el-radio-group>
</el-form-item>
<!--lanbm 2024-05-25 把海运的相关配置信息也显示出来了,把空运文字提示出掉了-->
<template v-if="['3', '4','1'].includes(lineform.transportType)">
<template v-if="['3', '4', '1'].includes(lineform.transportType)">
<el-form-item :label="$t('模板中文标题')">
<el-input
v-model="lineform.tempTitleZh"
......
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