|
|
@ -98,24 +98,24 @@ |
|
|
<!-- 表格部分 --> |
|
|
<!-- 表格部分 --> |
|
|
<el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange"> |
|
|
<el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange"> |
|
|
<el-table-column type="selection" width="55" align="center" /> |
|
|
<el-table-column type="selection" width="55" align="center" /> |
|
|
<el-table-column label="用户昵称" align="center" prop="nickName" /> |
|
|
|
|
|
<el-table-column label="真实姓名" align="center" prop="realName" /> |
|
|
|
|
|
<el-table-column label="性别" align="center" prop="gender" /> |
|
|
|
|
|
<el-table-column label="出生日期" align="center" prop="birthday"> |
|
|
|
|
|
|
|
|
<el-table-column label="用户昵称" align="center" prop="nickName" width="200px"/> |
|
|
|
|
|
<el-table-column label="真实姓名" align="center" prop="realName" width="200px"/> |
|
|
|
|
|
<el-table-column label="性别" align="center" prop="gender" width="100px"/> |
|
|
|
|
|
<el-table-column label="出生日期" align="center" prop="birthday" width="200px"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span> |
|
|
<span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column label="身份证号" align="center" prop="idCard" width="180"/> |
|
|
|
|
|
<el-table-column label="擅长领域" align="center" prop="specialty" /> |
|
|
|
|
|
<el-table-column label="工作经验" align="center" prop="workExperience"/> |
|
|
|
|
|
<el-table-column label="职称" align="center" prop="title"/> |
|
|
|
|
|
<el-table-column label="联系电话" align="center" prop="phone"/> |
|
|
|
|
|
<el-table-column label="电子邮箱" align="center" prop="email"/> |
|
|
|
|
|
<el-table-column label="专家类型" align="center" prop="expertType"/> |
|
|
|
|
|
<el-table-column label="所属医院" align="center" prop="hospital" /> |
|
|
|
|
|
<el-table-column label="联系地址" align="center" prop="address" /> |
|
|
|
|
|
<el-table-column label="个人简介" align="center" prop="introduction" /> |
|
|
|
|
|
|
|
|
<el-table-column label="身份证号" align="center" prop="idCard" width="200px"/> |
|
|
|
|
|
<!-- <el-table-column label="擅长领域" align="center" prop="specialty" width="300px" :show-overflow-tooltip="true"/>--> |
|
|
|
|
|
<!-- <el-table-column label="工作经验" align="center" prop="workExperience" width="100px"/>--> |
|
|
|
|
|
<el-table-column label="职称" align="center" prop="title" width="200px"/> |
|
|
|
|
|
<el-table-column label="联系电话" align="center" prop="phone" width="200px"/> |
|
|
|
|
|
<!-- <el-table-column label="电子邮箱" align="center" prop="email"/>--> |
|
|
|
|
|
<el-table-column label="专家类型" align="center" prop="expertType" width="200px"/> |
|
|
|
|
|
<el-table-column label="所属医院" align="center" prop="hospital" width="300px" :show-overflow-tooltip="true"/> |
|
|
|
|
|
<!-- <el-table-column label="联系地址" align="center" prop="address" />--> |
|
|
|
|
|
<!-- <el-table-column label="个人简介" align="center" prop="introduction" />--> |
|
|
<el-table-column label="审核状态" align="center" prop="auditStatus" width="100" class-name="audit-status-column"> |
|
|
<el-table-column label="审核状态" align="center" prop="auditStatus" width="100" class-name="audit-status-column"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-tag :type="getAuditStatusTagType(scope.row.auditStatus)" size="small"> |
|
|
<el-tag :type="getAuditStatusTagType(scope.row.auditStatus)" size="small"> |
|
|
@ -129,7 +129,6 @@ |
|
|
size="mini" |
|
|
size="mini" |
|
|
type="text" |
|
|
type="text" |
|
|
icon="el-icon-view" |
|
|
icon="el-icon-view" |
|
|
style="color: #e6a23c" |
|
|
|
|
|
class="info-btn view-btn" |
|
|
class="info-btn view-btn" |
|
|
@click="handleView(scope.row)" |
|
|
@click="handleView(scope.row)" |
|
|
v-hasPermi="['sys:vetAudit:view']" |
|
|
v-hasPermi="['sys:vetAudit:view']" |
|
|
@ -138,7 +137,7 @@ |
|
|
size="mini" |
|
|
size="mini" |
|
|
type="text" |
|
|
type="text" |
|
|
icon="el-icon-check" |
|
|
icon="el-icon-check" |
|
|
style="color: #409EFF" |
|
|
|
|
|
|
|
|
style="color: #072eed" |
|
|
class="info-btn audit-btn" |
|
|
class="info-btn audit-btn" |
|
|
@click="handleAudit(scope.row)" |
|
|
@click="handleAudit(scope.row)" |
|
|
v-hasPermi="['sys:vetAudit:auditVetPersonalInfo']" |
|
|
v-hasPermi="['sys:vetAudit:auditVetPersonalInfo']" |
|
|
@ -147,6 +146,7 @@ |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
|
|
|
|
|
|
|
|
|
<div class="pagestyle"> |
|
|
<pagination |
|
|
<pagination |
|
|
v-show="total>0" |
|
|
v-show="total>0" |
|
|
:total="total" |
|
|
:total="total" |
|
|
@ -154,12 +154,13 @@ |
|
|
:limit.sync="queryParams.pageSize" |
|
|
:limit.sync="queryParams.pageSize" |
|
|
@pagination="getList" |
|
|
@pagination="getList" |
|
|
/> |
|
|
/> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- 审核对话框 --> |
|
|
<!-- 审核对话框 --> |
|
|
<el-dialog |
|
|
<el-dialog |
|
|
:title="auditTitle" |
|
|
:title="auditTitle" |
|
|
:visible.sync="auditVisible" |
|
|
:visible.sync="auditVisible" |
|
|
width="1200px" |
|
|
|
|
|
|
|
|
width="80%" |
|
|
append-to-body |
|
|
append-to-body |
|
|
:close-on-click-modal="false" |
|
|
:close-on-click-modal="false" |
|
|
class="audit-dialog" |
|
|
class="audit-dialog" |
|
|
@ -267,9 +268,33 @@ |
|
|
<div class="cert-header"> |
|
|
<div class="cert-header"> |
|
|
<div class="cert-title"> |
|
|
<div class="cert-title"> |
|
|
<span>{{ cert.certName || cert.qualificationType || '未命名证书' }}</span> |
|
|
<span>{{ cert.certName || cert.qualificationType || '未命名证书' }}</span> |
|
|
<el-tag v-if="cert.auditStatus === '1'" type="success" size="mini">✓ 已通过</el-tag> |
|
|
|
|
|
<el-tag v-if="cert.auditStatus === '2'" type="danger" size="mini">✗ 未通过</el-tag> |
|
|
|
|
|
<el-tag v-if="!cert.auditStatus || cert.auditStatus === '0'" type="warning" size="mini">待审核</el-tag> |
|
|
|
|
|
|
|
|
<el-tag |
|
|
|
|
|
v-if="cert.auditStatus === '1'" |
|
|
|
|
|
type="success" |
|
|
|
|
|
size="small" |
|
|
|
|
|
class="cert-status-tag" |
|
|
|
|
|
effect="dark" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-success"></i> 已通过 |
|
|
|
|
|
</el-tag> |
|
|
|
|
|
<el-tag |
|
|
|
|
|
v-if="cert.auditStatus === '2'" |
|
|
|
|
|
type="danger" |
|
|
|
|
|
size="small" |
|
|
|
|
|
class="cert-status-tag" |
|
|
|
|
|
effect="dark" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-error"></i> 未通过 |
|
|
|
|
|
</el-tag> |
|
|
|
|
|
<el-tag |
|
|
|
|
|
v-if="!cert.auditStatus || cert.auditStatus === '0'" |
|
|
|
|
|
type="warning" |
|
|
|
|
|
size="small" |
|
|
|
|
|
class="cert-status-tag" |
|
|
|
|
|
effect="dark" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-time"></i> 待审核 |
|
|
|
|
|
</el-tag> |
|
|
</div> |
|
|
</div> |
|
|
<div class="cert-info"> |
|
|
<div class="cert-info"> |
|
|
<span><strong>证书编号:</strong>{{ cert.certificateNo || '-' }}</span> |
|
|
<span><strong>证书编号:</strong>{{ cert.certificateNo || '-' }}</span> |
|
|
@ -305,7 +330,14 @@ |
|
|
<strong>其他附件:</strong> |
|
|
<strong>其他附件:</strong> |
|
|
</div> |
|
|
</div> |
|
|
<div class="files-list"> |
|
|
<div class="files-list"> |
|
|
<span>{{ cert.certificateFiles }}</span> |
|
|
|
|
|
|
|
|
<el-button |
|
|
|
|
|
type="text" |
|
|
|
|
|
icon="el-icon-download" |
|
|
|
|
|
@click="downloadFile(cert.certificateFiles)" |
|
|
|
|
|
class="download-btn" |
|
|
|
|
|
> |
|
|
|
|
|
{{ getFileName(cert.certificateFiles) }} |
|
|
|
|
|
</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
@ -368,7 +400,7 @@ |
|
|
<el-dialog |
|
|
<el-dialog |
|
|
:title="detailTitle" |
|
|
:title="detailTitle" |
|
|
:visible.sync="detailVisible" |
|
|
:visible.sync="detailVisible" |
|
|
width="1100px" |
|
|
|
|
|
|
|
|
width="80%" |
|
|
append-to-body |
|
|
append-to-body |
|
|
> |
|
|
> |
|
|
<div v-if="loadingDetail" class="tab-loading"> |
|
|
<div v-if="loadingDetail" class="tab-loading"> |
|
|
@ -425,9 +457,33 @@ |
|
|
<div class="cert-header"> |
|
|
<div class="cert-header"> |
|
|
<div class="cert-title"> |
|
|
<div class="cert-title"> |
|
|
<span>{{ cert.certName || cert.qualificationType || '未命名证书' }}</span> |
|
|
<span>{{ cert.certName || cert.qualificationType || '未命名证书' }}</span> |
|
|
<el-tag v-if="cert.auditStatus === '1'" type="success" size="mini">✓ 已通过</el-tag> |
|
|
|
|
|
<el-tag v-if="cert.auditStatus === '2'" type="danger" size="mini">✗ 未通过</el-tag> |
|
|
|
|
|
<el-tag v-if="!cert.auditStatus || cert.auditStatus === '0'" type="warning" size="mini">待审核</el-tag> |
|
|
|
|
|
|
|
|
<el-tag |
|
|
|
|
|
v-if="cert.auditStatus === '1'" |
|
|
|
|
|
type="success" |
|
|
|
|
|
size="small" |
|
|
|
|
|
class="cert-status-tag" |
|
|
|
|
|
effect="dark" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-success"></i> 已通过 |
|
|
|
|
|
</el-tag> |
|
|
|
|
|
<el-tag |
|
|
|
|
|
v-if="cert.auditStatus === '2'" |
|
|
|
|
|
type="danger" |
|
|
|
|
|
size="small" |
|
|
|
|
|
class="cert-status-tag" |
|
|
|
|
|
effect="dark" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-error"></i> 未通过 |
|
|
|
|
|
</el-tag> |
|
|
|
|
|
<el-tag |
|
|
|
|
|
v-if="!cert.auditStatus || cert.auditStatus === '0'" |
|
|
|
|
|
type="warning" |
|
|
|
|
|
size="small" |
|
|
|
|
|
class="cert-status-tag" |
|
|
|
|
|
effect="dark" |
|
|
|
|
|
> |
|
|
|
|
|
<i class="el-icon-time"></i> 待审核 |
|
|
|
|
|
</el-tag> |
|
|
</div> |
|
|
</div> |
|
|
<div class="cert-info"> |
|
|
<div class="cert-info"> |
|
|
<span><strong>证书编号:</strong>{{ cert.certificateNo || '-' }}</span> |
|
|
<span><strong>证书编号:</strong>{{ cert.certificateNo || '-' }}</span> |
|
|
@ -470,7 +526,14 @@ |
|
|
<strong>其他附件:</strong> |
|
|
<strong>其他附件:</strong> |
|
|
</div> |
|
|
</div> |
|
|
<div class="files-list"> |
|
|
<div class="files-list"> |
|
|
<span>{{ cert.certificateFiles }}</span> |
|
|
|
|
|
|
|
|
<el-button |
|
|
|
|
|
type="text" |
|
|
|
|
|
icon="el-icon-download" |
|
|
|
|
|
@click="downloadFile(cert.certificateFiles)" |
|
|
|
|
|
class="download-btn" |
|
|
|
|
|
> |
|
|
|
|
|
{{ getFileName(cert.certificateFiles) }} |
|
|
|
|
|
</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
@ -491,6 +554,7 @@ |
|
|
|
|
|
|
|
|
<script> |
|
|
<script> |
|
|
import { listInfo, getInfo, auditBasicInfo, auditCertificate, listQualification } from "@/api/system/vetAduit" |
|
|
import { listInfo, getInfo, auditBasicInfo, auditCertificate, listQualification } from "@/api/system/vetAduit" |
|
|
|
|
|
import axios from 'axios' |
|
|
|
|
|
|
|
|
export default { |
|
|
export default { |
|
|
name: "Info", |
|
|
name: "Info", |
|
|
@ -851,7 +915,6 @@ export default { |
|
|
if (response.code === 200) { |
|
|
if (response.code === 200) { |
|
|
this.detailData = response.data |
|
|
this.detailData = response.data |
|
|
|
|
|
|
|
|
// 详情页使用和审核页相同的逻辑加载证书 |
|
|
|
|
|
if (response.data.userId) { |
|
|
if (response.data.userId) { |
|
|
const queryParams = { |
|
|
const queryParams = { |
|
|
userId: response.data.userId, |
|
|
userId: response.data.userId, |
|
|
@ -1001,11 +1064,68 @@ export default { |
|
|
expertType: null, |
|
|
expertType: null, |
|
|
} |
|
|
} |
|
|
this.resetForm("form") |
|
|
this.resetForm("form") |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 文件下载方法 |
|
|
|
|
|
downloadFile(filePath) { |
|
|
|
|
|
if (!filePath) { |
|
|
|
|
|
this.$message.warning('文件路径为空,无法下载') |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const loading = this.$loading({ |
|
|
|
|
|
lock: true, |
|
|
|
|
|
text: '正在下载文件...', |
|
|
|
|
|
spinner: 'el-icon-loading', |
|
|
|
|
|
background: 'rgba(0, 0, 0, 0.7)' |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
const fullUrl = this.baseUrl + filePath |
|
|
|
|
|
|
|
|
|
|
|
axios({ |
|
|
|
|
|
method: 'get', |
|
|
|
|
|
url: fullUrl, |
|
|
|
|
|
responseType: 'blob', // 关键:设置响应类型为blob |
|
|
|
|
|
headers: { |
|
|
|
|
|
} |
|
|
|
|
|
}).then(response => { |
|
|
|
|
|
const blob = new Blob([response.data]) |
|
|
|
|
|
const downloadUrl = window.URL.createObjectURL(blob) |
|
|
|
|
|
const a = document.createElement('a') |
|
|
|
|
|
|
|
|
|
|
|
a.download = this.getFileName(filePath) |
|
|
|
|
|
a.href = downloadUrl |
|
|
|
|
|
document.body.appendChild(a) |
|
|
|
|
|
a.click() |
|
|
|
|
|
|
|
|
|
|
|
window.URL.revokeObjectURL(downloadUrl) |
|
|
|
|
|
document.body.removeChild(a) |
|
|
|
|
|
|
|
|
|
|
|
this.$message.success('文件下载成功') |
|
|
|
|
|
}).catch(error => { |
|
|
|
|
|
console.error('文件下载失败:', error) |
|
|
|
|
|
this.$message.error('文件下载失败,请重试') |
|
|
|
|
|
}).finally(() => { |
|
|
|
|
|
loading.close() |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
getFileName(filePath) { |
|
|
|
|
|
if (!filePath) return '未知文件' |
|
|
|
|
|
const parts = filePath.split(/[\\/]/) |
|
|
|
|
|
const fileName = parts.pop() || '未知文件' |
|
|
|
|
|
return fileName |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<style scoped> |
|
|
|
|
|
::v-deep .pagestyle .el-input{ |
|
|
|
|
|
width: auto !important; |
|
|
|
|
|
} |
|
|
|
|
|
</style> |
|
|
|
|
|
|
|
|
<style scoped lang="scss"> |
|
|
<style scoped lang="scss"> |
|
|
.audit-dialog { |
|
|
.audit-dialog { |
|
|
:deep(.el-dialog__body) { |
|
|
:deep(.el-dialog__body) { |
|
|
@ -1133,30 +1253,30 @@ export default { |
|
|
margin-bottom: 15px; |
|
|
margin-bottom: 15px; |
|
|
|
|
|
|
|
|
span { |
|
|
span { |
|
|
font-size: 18px; |
|
|
|
|
|
|
|
|
font-size: 13px; |
|
|
font-weight: 600; |
|
|
font-weight: 600; |
|
|
color: #303133; |
|
|
color: #303133; |
|
|
flex: 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-tag { |
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
|
|
|
|
|
|
&.el-tag--success { |
|
|
|
|
|
background-color: rgba(103, 194, 58, 0.1); |
|
|
|
|
|
border-color: rgba(103, 194, 58, 0.2); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.el-tag--danger { |
|
|
|
|
|
background-color: rgba(245, 108, 108, 0.1); |
|
|
|
|
|
border-color: rgba(245, 108, 108, 0.2); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.el-tag--warning { |
|
|
|
|
|
background-color: rgba(230, 162, 60, 0.1); |
|
|
|
|
|
border-color: rgba(230, 162, 60, 0.2); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//flex: 1; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//.el-tag { |
|
|
|
|
|
// font-weight: 500; |
|
|
|
|
|
// |
|
|
|
|
|
// &.el-tag--success { |
|
|
|
|
|
// background-color: rgba(103, 194, 58, 0.1); |
|
|
|
|
|
// border-color: rgba(103, 194, 58, 0.2); |
|
|
|
|
|
// } |
|
|
|
|
|
// |
|
|
|
|
|
// &.el-tag--danger { |
|
|
|
|
|
// background-color: rgba(245, 108, 108, 0.1); |
|
|
|
|
|
// border-color: rgba(245, 108, 108, 0.2); |
|
|
|
|
|
// } |
|
|
|
|
|
// |
|
|
|
|
|
// &.el-tag--warning { |
|
|
|
|
|
// background-color: rgba(230, 162, 60, 0.1); |
|
|
|
|
|
// border-color: rgba(230, 162, 60, 0.2); |
|
|
|
|
|
// } |
|
|
|
|
|
//} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.cert-info { |
|
|
.cert-info { |
|
|
@ -1243,6 +1363,24 @@ export default { |
|
|
.files-list { |
|
|
.files-list { |
|
|
color: #606266; |
|
|
color: #606266; |
|
|
font-size: 13px; |
|
|
font-size: 13px; |
|
|
|
|
|
|
|
|
|
|
|
// 新增:下载按钮样式 |
|
|
|
|
|
.download-btn { |
|
|
|
|
|
color: #409EFF; |
|
|
|
|
|
padding: 0; |
|
|
|
|
|
height: auto; |
|
|
|
|
|
line-height: 1; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
color: #66b1ff; |
|
|
|
|
|
text-decoration: underline; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
i { |
|
|
|
|
|
margin-right: 5px; |
|
|
|
|
|
font-size: 12px; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -1280,30 +1418,30 @@ export default { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.info-btn { |
|
|
|
|
|
padding: 6px 12px; |
|
|
|
|
|
border-radius: 4px; |
|
|
|
|
|
margin: 0 4px; |
|
|
|
|
|
transition: all 0.3s ease; |
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
transform: translateY(-2px); |
|
|
|
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.view-btn:hover { |
|
|
|
|
|
background-color: rgba(243, 239, 231, 0.9); |
|
|
|
|
|
border-color: #e6a23c; |
|
|
|
|
|
color: #e6a23c; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.audit-btn:hover { |
|
|
|
|
|
background-color: rgba(64, 158, 255, 0.15); |
|
|
|
|
|
border-color: #409eff; |
|
|
|
|
|
color: #409eff; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//.info-btn { |
|
|
|
|
|
// padding: 6px 12px; |
|
|
|
|
|
// border-radius: 4px; |
|
|
|
|
|
// margin: 0 4px; |
|
|
|
|
|
// transition: all 0.3s ease; |
|
|
|
|
|
// font-weight: 500; |
|
|
|
|
|
// |
|
|
|
|
|
// &:hover { |
|
|
|
|
|
// transform: translateY(-2px); |
|
|
|
|
|
// box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); |
|
|
|
|
|
// } |
|
|
|
|
|
//} |
|
|
|
|
|
// |
|
|
|
|
|
//.view-btn:hover { |
|
|
|
|
|
// background-color: rgba(243, 239, 231, 0.9); |
|
|
|
|
|
// border-color: #e6a23c; |
|
|
|
|
|
// color: #e6a23c; |
|
|
|
|
|
//} |
|
|
|
|
|
// |
|
|
|
|
|
//.audit-btn:hover { |
|
|
|
|
|
// background-color: rgba(64, 158, 255, 0.15); |
|
|
|
|
|
// border-color: #409eff; |
|
|
|
|
|
// color: #409eff; |
|
|
|
|
|
//} |
|
|
|
|
|
|
|
|
:deep(.dialog-footer) { |
|
|
:deep(.dialog-footer) { |
|
|
.el-button { |
|
|
.el-button { |
|
|
@ -1344,4 +1482,142 @@ export default { |
|
|
border-color: rgba(230, 162, 60, 0.2); |
|
|
border-color: rgba(230, 162, 60, 0.2); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 操作按钮样式 |
|
|
|
|
|
.info-btn { |
|
|
|
|
|
padding: 6px 10px; |
|
|
|
|
|
border-radius: 4px; |
|
|
|
|
|
margin: 0 10px; |
|
|
|
|
|
transition: all 0.3s ease; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.view-btn:hover { |
|
|
|
|
|
background-color: rgb(216, 238, 248); |
|
|
|
|
|
transform: translateY(-1px); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.audit-btn:hover { |
|
|
|
|
|
background-color: rgb(215, 223, 246); |
|
|
|
|
|
transform: translateY(-1px); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 新增/修改的弹窗 |
|
|
|
|
|
::v-deep .el-dialog { |
|
|
|
|
|
border-radius: 12px; |
|
|
|
|
|
overflow: hidden; |
|
|
|
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.12); |
|
|
|
|
|
animation: dialogFadeIn 0.3s ease; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__header { |
|
|
|
|
|
background: linear-gradient(135deg, #2c7a4d 0%, #42b983 100%); |
|
|
|
|
|
padding: 18px 24px; |
|
|
|
|
|
border-bottom: none; |
|
|
|
|
|
position: relative; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__title { |
|
|
|
|
|
font-size: 17px; |
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
color: white; |
|
|
|
|
|
letter-spacing: 0.5px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__headerbtn:hover .el-dialog__close { |
|
|
|
|
|
color: #ffd04b; |
|
|
|
|
|
transform: rotate(90deg); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__body { |
|
|
|
|
|
padding: 28px 24px 20px; |
|
|
|
|
|
background-color: #f8fafc; |
|
|
|
|
|
max-height: 70vh; |
|
|
|
|
|
overflow-y: auto; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-form-item { |
|
|
|
|
|
margin-bottom: 20px; |
|
|
|
|
|
transition: all 0.3s; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-form-item__label { |
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
color: #2d3748; |
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
transition: color 0.3s; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input, |
|
|
|
|
|
::v-deep .el-textarea, |
|
|
|
|
|
::v-deep .el-select { |
|
|
|
|
|
width: 100%; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input__inner, |
|
|
|
|
|
::v-deep .el-textarea__inner { |
|
|
|
|
|
border-radius: 8px; |
|
|
|
|
|
border: 1px solid #dcdfe6; |
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
transition: all 0.3s; |
|
|
|
|
|
background-color: #fcfdfe; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-input__inner:focus, |
|
|
|
|
|
::v-deep .el-textarea__inner:focus { |
|
|
|
|
|
border-color: #42B983; |
|
|
|
|
|
box-shadow: 0 0 0 3px rgb(230, 255, 238); |
|
|
|
|
|
background-color: white; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-select .el-input__inner { |
|
|
|
|
|
padding-right: 35px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__footer { |
|
|
|
|
|
padding: 20px 24px; |
|
|
|
|
|
background-color: #f8fafc; |
|
|
|
|
|
border-top: 1px solid #eef2f7; |
|
|
|
|
|
border-radius: 0 0 12px 12px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 证书中的状态标签样式 |
|
|
|
|
|
.cert-status-tag { |
|
|
|
|
|
min-width: 70px; |
|
|
|
|
|
display: inline-flex; |
|
|
|
|
|
align-items: center; |
|
|
|
|
|
justify-content: center; |
|
|
|
|
|
border-radius: 16px; |
|
|
|
|
|
padding: 0 10px; |
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
letter-spacing: 0.3px; |
|
|
|
|
|
transition: all 0.3s ease; |
|
|
|
|
|
|
|
|
|
|
|
i { |
|
|
|
|
|
margin-right: 4px; |
|
|
|
|
|
font-size: 12px; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
|
transform: translateY(-1px); |
|
|
|
|
|
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.el-tag--success { |
|
|
|
|
|
background: linear-gradient(135deg, #2c7a4d 0%, #42b983 100%); |
|
|
|
|
|
border: none; |
|
|
|
|
|
color: white; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.el-tag--danger { |
|
|
|
|
|
background: linear-gradient(135deg, #d9534f 0%, #f56c6c 100%); |
|
|
|
|
|
border: none; |
|
|
|
|
|
color: white; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.el-tag--warning { |
|
|
|
|
|
background: linear-gradient(135deg, #ff8c00 0%, #ffb347 100%); |
|
|
|
|
|
border: none; |
|
|
|
|
|
color: white; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
</style> |
|
|
</style> |