|
|
@@ -35,12 +35,12 @@
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="客户名称" prop="customerName">
|
|
|
- <el-input v-model="form.customerName" placeholder="请输入客户名称" />
|
|
|
+ <el-input v-model="form.customerName" placeholder="请输入客户名称" maxlength="100" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="工商名称" prop="businessCustomerName">
|
|
|
- <el-input v-model="form.businessCustomerName" placeholder="请输入工商名称" />
|
|
|
+ <el-input v-model="form.businessCustomerName" placeholder="请输入工商名称" maxlength="100" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -73,7 +73,7 @@
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="客户类别" prop="customerTypeId">
|
|
|
<el-select v-model="form.customerTypeId" placeholder="请选择" class="w100">
|
|
|
- <el-option v-for="item in categoryOptions" :key="item.id" :label="item.customerTypeName || item.customerCategoryName || item.typeName || item.name" :value="item.id" />
|
|
|
+ <el-option v-for="item in categoryOptions" :key="String(item.id)" :label="item.customerTypeName || item.customerCategoryName || item.typeName || item.name" :value="String(item.id)" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -96,30 +96,30 @@
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="固定电话" prop="landline">
|
|
|
- <el-input v-model="form.landline" placeholder="请输入固定电话" />
|
|
|
+ <el-input v-model="form.landline" placeholder="请输入固定电话" maxlength="20" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="传真">
|
|
|
- <el-input v-model="form.fax" placeholder="请输入传真" />
|
|
|
+ <el-form-item label="传真" prop="fax">
|
|
|
+ <el-input v-model="form.fax" placeholder="请输入传真" maxlength="20" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="网址">
|
|
|
- <el-input v-model="form.url" placeholder="请输入网址" />
|
|
|
+ <el-form-item label="网址" prop="url">
|
|
|
+ <el-input v-model="form.url" placeholder="请输入网址" maxlength="100" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="邮政编码">
|
|
|
- <el-input v-model="form.postCode" placeholder="请输入邮政编码" />
|
|
|
+ <el-form-item label="邮政编码" prop="postCode">
|
|
|
+ <el-input v-model="form.postCode" placeholder="请输入邮政编码" maxlength="6" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="邮箱">
|
|
|
- <el-input v-model="form.email" placeholder="请输入邮箱" />
|
|
|
+ <el-form-item label="邮箱" prop="email">
|
|
|
+ <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -137,7 +137,7 @@
|
|
|
clearable
|
|
|
@change="handleAreaChange"
|
|
|
/>
|
|
|
- <el-input v-model="form.address" placeholder="请输入详细地址" style="flex: 1.5" />
|
|
|
+ <el-input v-model="form.address" placeholder="请输入详细地址" style="flex: 1.5" maxlength="200" show-word-limit />
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -148,31 +148,31 @@
|
|
|
<div class="form-section">
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="企业工商名称">
|
|
|
- <el-input v-model="form.customerBusinessBo.businessCustomerName" />
|
|
|
+ <el-form-item label="企业工商名称" prop="customerBusinessBo.businessCustomerName">
|
|
|
+ <el-input v-model="form.customerBusinessBo.businessCustomerName" maxlength="100" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="社会信用代码">
|
|
|
- <el-input v-model="form.customerBusinessBo.socialCreditCode" />
|
|
|
+ <el-form-item label="社会信用代码" prop="customerBusinessBo.socialCreditCode">
|
|
|
+ <el-input v-model="form.customerBusinessBo.socialCreditCode" maxlength="18" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="法人姓名">
|
|
|
- <el-input v-model="form.customerBusinessBo.legalPersonName" />
|
|
|
+ <el-form-item label="法人姓名" prop="customerBusinessBo.legalPersonName">
|
|
|
+ <el-input v-model="form.customerBusinessBo.legalPersonName" maxlength="50" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="注册资本">
|
|
|
- <el-input v-model="form.customerBusinessBo.registeredCapital" />
|
|
|
+ <el-form-item label="注册资本" prop="customerBusinessBo.registeredCapital">
|
|
|
+ <el-input v-model="form.customerBusinessBo.registeredCapital" maxlength="50" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="登记机关">
|
|
|
- <el-input v-model="form.customerBusinessBo.registrationAuthority" />
|
|
|
+ <el-form-item label="登记机关" prop="customerBusinessBo.registrationAuthority">
|
|
|
+ <el-input v-model="form.customerBusinessBo.registrationAuthority" maxlength="100" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
@@ -189,21 +189,21 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="登记状态">
|
|
|
- <el-input v-model="form.customerBusinessBo.registrationStatus" />
|
|
|
+ <el-form-item label="登记状态" prop="customerBusinessBo.registrationStatus">
|
|
|
+ <el-input v-model="form.customerBusinessBo.registrationStatus" maxlength="50" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="实缴资本">
|
|
|
- <el-input v-model="form.customerBusinessBo.paidInCapital" />
|
|
|
+ <el-form-item label="实缴资本" prop="customerBusinessBo.paidInCapital">
|
|
|
+ <el-input v-model="form.customerBusinessBo.paidInCapital" maxlength="50" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="详细地址">
|
|
|
- <el-input v-model="form.customerBusinessBo.businessAddress" placeholder="请输入详细地址" />
|
|
|
+ <el-form-item label="详细地址" prop="customerBusinessBo.businessAddress">
|
|
|
+ <el-input v-model="form.customerBusinessBo.businessAddress" placeholder="请输入详细地址" maxlength="200" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -233,14 +233,14 @@
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="负责人">
|
|
|
<el-select v-model="form.salesPersonId" placeholder="请选择" class="w100">
|
|
|
- <el-option v-for="item in staffOptions" :key="item.staffId" :label="item.staffName" :value="item.staffId" />
|
|
|
+ <el-option v-for="item in staffOptions" :key="item.staffId" :label="(item.staffCode ? '(' + item.staffCode + ') ' : '') + item.staffName" :value="item.staffId" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="客服支持">
|
|
|
<el-select v-model="form.serviceStaffId" placeholder="请选择" class="w100">
|
|
|
- <el-option v-for="item in staffOptions" :key="item.staffId" :label="item.staffName" :value="item.staffId" />
|
|
|
+ <el-option v-for="item in staffOptions" :key="item.staffId" :label="(item.staffCode ? '(' + item.staffCode + ') ' : '') + item.staffName" :value="item.staffId" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -280,7 +280,7 @@ import { listProvinceWithCities } from "@/api/customer/addressArea";
|
|
|
import { deptTreeSelect } from "@/api/system/dept";
|
|
|
|
|
|
const proxy = getCurrentInstance().proxy;
|
|
|
-const { customer_source: sourceOptions, Q0001: corpTypeOptions } = toRefs(reactive(proxy.useDict("customer_source", "Q0001")));
|
|
|
+const { K0001: sourceOptions, Q0001: corpTypeOptions } = toRefs(reactive(proxy.useDict("K0001", "Q0001")));
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|
|
|
|
|
|
@@ -328,16 +328,47 @@ const form = reactive({
|
|
|
|
|
|
const rules = reactive({
|
|
|
belongCompanyId: [{ required: true, message: "所属公司不能为空", trigger: "change" }],
|
|
|
- customerName: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
|
|
|
- businessCustomerName: [{ required: true, message: "工商名称不能为空", trigger: "blur" }],
|
|
|
+ customerName: [
|
|
|
+ { required: true, message: "客户名称不能为空", trigger: "blur" },
|
|
|
+ { max: 100, message: "客户名称不能超过100个字符", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ businessCustomerName: [
|
|
|
+ { required: true, message: "工商名称不能为空", trigger: "blur" },
|
|
|
+ { max: 100, message: "工商名称不能超过100个字符", trigger: "blur" }
|
|
|
+ ],
|
|
|
customerSourceId: [{ required: true, message: "客户来源不能为空", trigger: "change" }],
|
|
|
enterpriseTypeId: [{ required: true, message: "企业类型不能为空", trigger: "change" }],
|
|
|
enterpriseScaleId: [{ required: true, message: "企业规模不能为空", trigger: "change" }],
|
|
|
customerTypeId: [{ required: true, message: "客户类别不能为空", trigger: "change" }],
|
|
|
industryCategoryId: [{ required: true, message: "所属行业不能为空", trigger: "change" }],
|
|
|
customerLevelId: [{ required: true, message: "客户等级不能为空", trigger: "change" }],
|
|
|
- landline: [{ required: true, message: "固定电话不能为空", trigger: "blur" }],
|
|
|
- areaArray: [{ required: true, message: "详细地区不能为空", trigger: "change", type: 'array' }]
|
|
|
+ landline: [
|
|
|
+ { required: true, message: "固定电话不能为空", trigger: "blur" },
|
|
|
+ { pattern: /^([0-9-]{7,20})$/, message: "请输入正确的电话号码", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ fax: [
|
|
|
+ { pattern: /^([0-9-]{7,20})$/, message: "请输入正确的传真号码", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ url: [
|
|
|
+ { pattern: /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([\/\w .-]*)*\/?$/, message: "请输入正确的网址", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ postCode: [
|
|
|
+ { pattern: /^\d{6}$/, message: "请输入正确的6位邮政编码", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ email: [
|
|
|
+ { pattern: /^([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})$/, message: "请输入正确的邮箱地址", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ areaArray: [{ required: true, message: "详细地区不能为空", trigger: "change", type: 'array' }],
|
|
|
+ 'customerBusinessBo.businessCustomerName': [{ max: 100, message: "企业工商名称不能超过100个字符", trigger: "blur" }],
|
|
|
+ 'customerBusinessBo.socialCreditCode': [
|
|
|
+ { pattern: /^[A-Za-z0-9]{18}$/, message: "请输入正确的18位统一社会信用代码", trigger: "blur" }
|
|
|
+ ],
|
|
|
+ 'customerBusinessBo.legalPersonName': [{ max: 50, message: "法人姓名不能超过50个字符", trigger: "blur" }],
|
|
|
+ 'customerBusinessBo.registeredCapital': [{ max: 50, message: "注册资本不能超过50个字符", trigger: "blur" }],
|
|
|
+ 'customerBusinessBo.registrationAuthority': [{ max: 100, message: "登记机关不能超过100个字符", trigger: "blur" }],
|
|
|
+ 'customerBusinessBo.registrationStatus': [{ max: 50, message: "登记状态不能超过50个字符", trigger: "blur" }],
|
|
|
+ 'customerBusinessBo.paidInCapital': [{ max: 50, message: "实缴资本不能超过50个字符", trigger: "blur" }],
|
|
|
+ 'customerBusinessBo.businessAddress': [{ max: 200, message: "详细地址不能超过200个字符", trigger: "blur" }]
|
|
|
});
|
|
|
|
|
|
const companyOptions = ref([]);
|
|
|
@@ -351,10 +382,10 @@ const deptOptions = ref([]);
|
|
|
|
|
|
const initOptions = async () => {
|
|
|
listCompanyOption().then(res => companyOptions.value = res.data || []).catch(e => console.error("公司选项接口404或出错", e));
|
|
|
- listIndustryCategory().then(res => industryOptions.value = res.data || []).catch(e => console.error("行业类别接口404或出错", e));
|
|
|
+ listIndustryCategory().then(res => industryOptions.value = res.data || res.rows || []).catch(e => console.error("行业类别接口404或出错", e));
|
|
|
listLevel().then(res => levelOptions.value = res.rows || []).catch(e => console.error("客户等级接口404或出错", e));
|
|
|
listComStaff({ pageSize: 1000 }).then(res => staffOptions.value = res.rows || res.data || []).catch(e => console.error("员工选项接口404或出错", e));
|
|
|
- listEnterpriseScale().then(res => scaleOptions.value = res.data || []).catch(e => console.error("企业规模接口404或出错", e));
|
|
|
+ listEnterpriseScale().then(res => scaleOptions.value = res.data || res.rows || []).catch(e => console.error("企业规模接口404或出错", e));
|
|
|
listCustomerTypeOption().then(res => {
|
|
|
categoryOptions.value = res.data || res.rows || [];
|
|
|
}).catch(e => {
|
|
|
@@ -409,7 +440,7 @@ const loadData = (id) => {
|
|
|
|
|
|
// 显式处理字典项回显和类型转换
|
|
|
const sourceVal = data.customerSourceId || sales.customerSource || sales.customerSourceId;
|
|
|
- form.customerSourceId = sourceVal ? String(sourceVal) : undefined;
|
|
|
+ form.customerSourceId = sourceVal ? String(sourceVal).split(',')[0] : undefined;
|
|
|
|
|
|
const typeVal = data.enterpriseTypeId || data.enterpriseType;
|
|
|
form.enterpriseTypeId = typeVal ? String(typeVal) : undefined;
|
|
|
@@ -417,6 +448,8 @@ const loadData = (id) => {
|
|
|
const scaleVal = data.enterpriseScaleId || data.enterpriseScale || data.scaleId;
|
|
|
form.enterpriseScaleId = scaleVal ? String(scaleVal) : undefined;
|
|
|
|
|
|
+ form.customerTypeId = data.customerTypeId ? String(data.customerTypeId) : undefined;
|
|
|
+
|
|
|
const industryVal = data.industryCategoryId || data.industryId;
|
|
|
form.industryCategoryId = industryVal ? Number(industryVal) : undefined;
|
|
|
|
|
|
@@ -425,7 +458,7 @@ const loadData = (id) => {
|
|
|
|
|
|
// 地区回显处理
|
|
|
if (data.regProvincialNo && data.regCityNo && data.regCountyNo) {
|
|
|
- form.areaArray = [String(data.regProvincialNo), String(data.regCityNo), String(data.regCountyNo)];
|
|
|
+ form.areaArray = [Number(data.regProvincialNo), Number(data.regCityNo), Number(data.regCountyNo)];
|
|
|
} else {
|
|
|
form.areaArray = [];
|
|
|
}
|