@@ -135,9 +135,9 @@ const queryFields: QueryField[] = [
] } ,
]
type CustomerForm = CreatePlatformTenantRequest & { unifiedSocialCreditCode : string }
type CustomerForm = CreatePlatformTenantRequest & { customerNickname : string ; unifiedSocialCreditCode : string }
const emptyForm = ( ) : CustomerForm => ( {
tenantName : '' , legalName : '' , legalRepresentative : '' , unifiedSocialCreditCode : '' , contactName : '' , contactPhone : '' ,
tenantName : '' , customerNickname : '' , legalName : '' , legalRepresentative : '' , unifiedSocialCreditCode : '' , contactName : '' , contactPhone : '' ,
contactEmail : '' , contactWechat : '' , servicePackage : '基础版' , salesOwnerName : '' , paymentTermDays : 30 ,
enterpriseType : '' , establishedDate : null , registeredCapital : 100000 , registeredCapitalCurrency : 'CNY' ,
registeredAddress : '' , internalRemark : '' ,
@@ -145,6 +145,16 @@ const emptyForm = (): CustomerForm => ({
const form = ref ( emptyForm ( ) )
const rules : FormRules = {
tenantName : [ { required : true , message : '请输入公司名称' , trigger : 'blur' } ] ,
customerNickname : [
{ max : 32 , message : '客户昵称最多 32 个字符' , trigger : 'blur' } ,
{
validator : ( _rule , value , callback ) => {
if ( ! editingId . value || ( typeof value === 'string' && value . trim ( ) ) ) callback ( )
else callback ( new Error ( '请输入客户昵称' ) )
} ,
trigger : [ 'blur' , 'change' ] ,
} ,
] ,
legalName : [ { required : true , message : '请输入营业执照上的企业名称' , trigger : 'blur' } ] ,
legalRepresentative : [ { max : 64 , message : '法定代表人最多 64 个字符' , trigger : 'blur' } ] ,
unifiedSocialCreditCode : [
@@ -199,6 +209,7 @@ const unifiedSocialCreditCodePattern = /^[0-9A-Z]{18}$/
const customerColumns : DataTableColumn [ ] = [
{ key : 'actions' , label : '操作' , width : 330 , slotName : 'actions' } ,
{ key : 'tenantCode' , prop : 'tenantCode' , label : '客户编号' , width : 220 , className : 'customer-code-column' } ,
{ key : 'customerNickname' , prop : 'customerNickname' , label : '客户昵称' , width : 120 , formatter : ( row : PlatformTenantResource ) => displayText ( row . customerNickname ) } ,
{ key : 'company' , label : '公司名称' , width : 250 , slotName : 'company' } ,
{ key : 'unifiedSocialCreditCode' , prop : 'unifiedSocialCreditCode' , label : '统一社会信用代码' , width : 220 , formatter : ( row : PlatformTenantResource ) => displayText ( row . unifiedSocialCreditCode ) } ,
{ key : 'contactName' , prop : 'contactName' , label : '联系人' , minWidth : 120 , formatter : ( row : PlatformTenantResource ) => displayText ( row . contactName ) } ,
@@ -394,7 +405,7 @@ function openCreate() {
}
function mapTenantToForm ( row : PlatformTenantResource ) : CustomerForm {
return {
tenantName : row . tenantName , legalName : row . legalName || '' , legalRepresentative : row . legalRepresentative || '' , unifiedSocialCreditCode : row . unifiedSocialCreditCode || '' ,
tenantName : row . tenantName , customerNickname : row . customerNickname || '' , legalName : row . legalName || '' , legalRepresentative : row . legalRepresentative || '' , unifiedSocialCreditCode : row . unifiedSocialCreditCode || '' ,
contactName : row . contactName || '' , contactPhone : row . contactPhone || '' , contactEmail : row . contactEmail || '' ,
contactWechat : row . contactWechat || '' , servicePackage : row . servicePackage || '基础版' , salesOwnerName : row . salesOwnerName || '' ,
paymentTermDays : Number ( row . paymentTermDays ? ? 0 ) , enterpriseType : row . enterpriseType || '' , establishedDate : row . establishedDate || null ,
@@ -574,7 +585,7 @@ async function saveCustomer() {
let saved : PlatformTenantResource
if ( editingId . value ) {
const { unifiedSocialCreditCode : _immutable , ... payload } = form . value
saved = await updatePlatformTenant ( editingId . value , payload )
saved = await updatePlatformTenant ( editingId . value , { ... payload , customerNickname : form . value . customerNickname . trim ( ) } )
} else {
const { unifiedSocialCreditCode : _qualificationCreditCode , ... payload } = form . value
const created = await createPlatformTenant ( payload )
@@ -1073,6 +1084,7 @@ onMounted(() => { void loadCustomers() })
< el-form ref = "formRef" v-loading = "editorLoading" :model="form" :rules="rules" label-position="top" class="drawer-form" :disabled="editorLoading || saving || submitting || uploadingQualifications" >
< FormSection title = "基础资料" description = "维护工商登记和企业主体信息。" > < div class = "form-grid two-cols" >
< el-form-item label = "公司名称" prop = "tenantName" required > < el-input v-model = "form.tenantName" placeholder="请输入工商登记公司名称" maxlength="128" / > < / el-form-item >
< el-form-item label = "客户昵称" prop = "customerNickname" > < el-input v-model = "form.customerNickname" placeholder="不填默认生成中文拼音大写首字母,如 SZWL" maxlength="32" /><small class="field-hint" > 用于非法定打印与简短展示 ; 报关 、 合同等法定单据仍使用公司全称 。 < / small > < / el -form -item >
< el-form-item label = "营业执照企业名称" prop = "legalName" required > < el-input v-model = "form.legalName" placeholder="请输入营业执照上的企业名称" maxlength="128" / > < / el-form-item >
< el-form-item label = "法定代表人" prop = "legalRepresentative" > < el-input v-model = "form.legalRepresentative" placeholder="请输入法定代表人姓名(选填)" maxlength="64" / > < / el-form-item >
< el-form-item label = "企业类型" prop = "enterpriseType" > < el-input v-model = "form.enterpriseType" placeholder="如:有限责任公司" maxlength="64" / > < / el-form-item >