人员库修改
This commit is contained in:
parent
f3003a9a06
commit
4f841d1ca1
|
|
@ -123,7 +123,56 @@ export default {
|
|||
{ required: true, message: '请选择注册日期', trigger: 'change' }
|
||||
],
|
||||
businessTerm: [
|
||||
{ required: true, message: '请输入营业期限', trigger: 'blur' }
|
||||
{ required: true, message: '请输入营业期限', trigger: 'blur' },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (!value) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
const trimmedValue = value.trim();
|
||||
// 检查是否为"永久"或"长期"
|
||||
if (trimmedValue === '永久' || trimmedValue === '长期') {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
// 检查是否为日期格式
|
||||
// 支持格式:yyyy-MM-dd, yyyy/MM/dd, yyyy年MM月dd日, yyyy.MM.dd
|
||||
const datePatterns = [
|
||||
/^\d{4}-\d{2}-\d{2}$/, // yyyy-MM-dd
|
||||
/^\d{4}\/\d{2}\/\d{2}$/, // yyyy/MM/dd
|
||||
/^\d{4}\.\d{2}\.\d{2}$/, // yyyy.MM.dd
|
||||
/^\d{4}年\d{1,2}月\d{1,2}日$/, // yyyy年MM月dd日
|
||||
/^\d{4}-\d{1,2}-\d{1,2}$/, // yyyy-M-d
|
||||
/^\d{4}\/\d{1,2}\/\d{1,2}$/ // yyyy/M/d
|
||||
];
|
||||
const isDate = datePatterns.some(pattern => pattern.test(trimmedValue));
|
||||
if (isDate) {
|
||||
// 进一步验证日期是否有效
|
||||
let dateStr = trimmedValue;
|
||||
// 转换中文日期格式为标准格式
|
||||
if (dateStr.includes('年')) {
|
||||
dateStr = dateStr.replace(/年/g, '-').replace(/月/g, '-').replace(/日/g, '');
|
||||
}
|
||||
dateStr = dateStr.replace(/\//g, '-').replace(/\./g, '-');
|
||||
const dateParts = dateStr.split('-');
|
||||
if (dateParts.length === 3) {
|
||||
const year = parseInt(dateParts[0]);
|
||||
const month = parseInt(dateParts[1]);
|
||||
const day = parseInt(dateParts[2]);
|
||||
const date = new Date(year, month - 1, day);
|
||||
if (date.getFullYear() === year &&
|
||||
date.getMonth() === month - 1 &&
|
||||
date.getDate() === day) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
callback(new Error('营业期限只能输入"永久"、"长期"或有效的日期格式(如:2024-01-01)'));
|
||||
},
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
residence: [
|
||||
{ required: true, message: '请输入住所', trigger: 'blur' }
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ export default {
|
|||
methods: {
|
||||
// 身份证号校验
|
||||
validateIdCard(rule, value, callback) {
|
||||
if (!validIdCard(value)) {
|
||||
if (!validIdCard(value) && value) {
|
||||
callback(new Error('请输入合法的身份证号码'))
|
||||
} else {
|
||||
callback()
|
||||
|
|
@ -133,7 +133,7 @@ export default {
|
|||
},
|
||||
// 联系方式校验
|
||||
validateMobile(rule, value, callback) {
|
||||
if (!validMobile(value)) {
|
||||
if (!validMobile(value) && value) {
|
||||
callback(new Error('请输入合法的联系方式'))
|
||||
} else {
|
||||
callback()
|
||||
|
|
|
|||
|
|
@ -31,66 +31,68 @@
|
|||
</div>
|
||||
|
||||
<!-- 企业信息卡片 -->
|
||||
<div class="enterprise-card" v-for="item in enterpriseList" :key="item.enterpriseId">
|
||||
<div class="enterprise-header">
|
||||
<h3 class="enterprise-name">{{ item.enterpriseName }}</h3>
|
||||
</div>
|
||||
|
||||
<div class="enterprise-info">
|
||||
<div class="info-item">
|
||||
<span class="label">法定代表人:</span>
|
||||
<span class="value">{{ item.legalPersonName }}</span>
|
||||
<div class="enterprise-card-wrapper" v-for="item in enterpriseList" :key="item.enterpriseId">
|
||||
<div class="enterprise-card">
|
||||
<div class="enterprise-header">
|
||||
<h3 class="enterprise-name">{{ item.enterpriseName }}</h3>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">统一信用代码:</span>
|
||||
<span class="value">{{ item.enterpriseCode }}</span>
|
||||
|
||||
<div class="enterprise-info">
|
||||
<div class="info-item">
|
||||
<span class="label">法定代表人:</span>
|
||||
<span class="value">{{ item.legalPersonName }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="label">统一信用代码:</span>
|
||||
<span class="value">{{ item.enterpriseCode }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 数据统计 -->
|
||||
<div class="data-stats">
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">资质库</span>
|
||||
<span class="stat-value">{{ item.qualificationNum }}</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">业绩库</span>
|
||||
<span class="stat-value">{{ item.performanceNum }}</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">人员库</span>
|
||||
<span class="stat-value">{{ item.personnelNum }}</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">财务库</span>
|
||||
<span class="stat-value">{{ item.financeNum }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="enterprise-actions">
|
||||
<div @click="handleEnterpriseKnowledge(item)">
|
||||
<img :src="EnterpriseKnowledge" alt="企业知识库" />
|
||||
<span>企业知识库</span>
|
||||
</div>
|
||||
<div v-hasPermi="['enterpriseLibrary:enterprise:detail']" @click="handleDetail(item)">
|
||||
<img :src="EnterpriseDetail" alt="详情" />
|
||||
<span>详情</span>
|
||||
</div>
|
||||
<div v-hasPermi="['enterpriseLibrary:enterprise:edit']" @click="handleEdit(item)">
|
||||
<img :src="EnterpriseEdit" alt="编辑" />
|
||||
<span>编辑</span>
|
||||
</div>
|
||||
<div v-hasPermi="['enterpriseLibrary:enterprise:del']" @click="handleDel(item)">
|
||||
<img :src="EnterpriseDelete" alt="删除" />
|
||||
<span>删除</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 过期文档标签 -->
|
||||
<!-- 过期证件标签 - 独立于卡片之外 -->
|
||||
<div class="expired-tags" v-if="item.errorInfos && item.errorInfos.length > 0">
|
||||
<span class="expired-tag" v-for="doc in item.errorInfos" :key="doc">{{ doc }}</span>
|
||||
</div>
|
||||
|
||||
<!-- 数据统计 -->
|
||||
<div class="data-stats">
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">资质库</span>
|
||||
<span class="stat-value">{{ item.qualificationNum }}</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">业绩库</span>
|
||||
<span class="stat-value">{{ item.performanceNum }}</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">人员库</span>
|
||||
<span class="stat-value">{{ item.personnelNum }}</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label">财务库</span>
|
||||
<span class="stat-value">{{ item.financeNum }}</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="enterprise-actions">
|
||||
<div @click="handleEnterpriseKnowledge(item)">
|
||||
<img :src="EnterpriseKnowledge" alt="企业知识库" />
|
||||
<span>企业知识库</span>
|
||||
</div>
|
||||
<div v-hasPermi="['enterpriseLibrary:enterprise:detail']" @click="handleDetail(item)">
|
||||
<img :src="EnterpriseDetail" alt="详情" />
|
||||
<span>详情</span>
|
||||
</div>
|
||||
<div v-hasPermi="['enterpriseLibrary:enterprise:edit']" @click="handleEdit(item)">
|
||||
<img :src="EnterpriseEdit" alt="编辑" />
|
||||
<span>编辑</span>
|
||||
</div>
|
||||
<div v-hasPermi="['enterpriseLibrary:enterprise:del']" @click="handleDel(item)">
|
||||
<img :src="EnterpriseDelete" alt="删除" />
|
||||
<span>删除</span>
|
||||
</div>
|
||||
<span class="expired-text">{{ item.errorInfos.join(',') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -352,6 +354,11 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
.enterprise-card-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.enterprise-card {
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
|
|
@ -447,17 +454,15 @@ export default {
|
|||
}
|
||||
|
||||
.expired-tags {
|
||||
margin-bottom: 15px;
|
||||
padding: 8px 12px;
|
||||
flex-shrink: 0;
|
||||
|
||||
.expired-tag {
|
||||
display: inline-block;
|
||||
background: #ff4d4f;
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
margin-right: 8px;
|
||||
margin-bottom: 4px;
|
||||
.expired-text {
|
||||
display: block;
|
||||
color: #db3e29;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,28 +7,59 @@
|
|||
|
||||
<div class="detail-content">
|
||||
<template v-if="isProjectManager">
|
||||
<!-- 建造师证书 -->
|
||||
<FileOrImageDisplay label="建造师证书" :file="form.fileList[0]" :image-url="form.url" />
|
||||
<!-- 专业类型 -->
|
||||
<DetailItem label="专业类型" :value="form.professionalType" />
|
||||
<!-- 证书编号 -->
|
||||
<DetailItem label="证书编号" :value="form.certificateCode" />
|
||||
<!-- 级别 -->
|
||||
<DetailItem label="级别" :value="form.certificateLevel" />
|
||||
<!-- 证书有效期 -->
|
||||
<DetailItem label="证书有效期" :value="form.certificateValidityPeriod" />
|
||||
<!-- 使用有效期 -->
|
||||
<DetailItem label="使用有效期" :value="form.useValidityPeriod" />
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<!-- 建造师证书 -->
|
||||
<FileOrImageDisplay label="建造师证书" :file="form.fileList[0]" :image-url="form.url" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<!-- 专业类型 -->
|
||||
<DetailItem label="专业类型" :value="form.professionalType" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- 证书编号 -->
|
||||
<DetailItem label="证书编号" :value="form.certificateCode" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- 级别 -->
|
||||
<DetailItem label="级别" :value="form.certificateLevel" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<!-- 证书有效期 -->
|
||||
<DetailItem label="证书有效期" :value="form.certificateValidityPeriod" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- 使用有效期 -->
|
||||
<DetailItem label="使用有效期" :value="form.useValidityPeriod" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</template>
|
||||
<template>
|
||||
<!-- 安全考核B证、安全考核C证、其他人员证书 -->
|
||||
<FileOrImageDisplay :label="certificateName" :file="form.fileList2[0]" :image-url="form.url2" />
|
||||
<!-- 证书编号 -->
|
||||
<DetailItem label="证书编号" :value="form.certificateCode2" />
|
||||
<!-- 证书有效期 -->
|
||||
<DetailItem label="证书有效期" :value="form.certificateValidityPeriod2" />
|
||||
<!-- 注册专业 -->
|
||||
<DetailItem label="注册专业" :value="form.registerProfessional" />
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<FileOrImageDisplay :label="certificateName" :file="form.fileList2[0]" :image-url="form.url2" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<!-- 证书编号 -->
|
||||
<DetailItem label="证书编号" :value="form.certificateCode2" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- 证书有效期 -->
|
||||
<DetailItem label="证书有效期" :value="form.certificateValidityPeriod2" />
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<!-- 注册专业 -->
|
||||
<DetailItem label="注册专业" :value="form.registerProfessional" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue