抽取企业详情组件

This commit is contained in:
aixianling
2022-04-08 20:33:58 +08:00
parent 4b5d7459f4
commit dcfa2eeada
3 changed files with 285 additions and 473 deletions

View File

@@ -27,10 +27,7 @@
<el-form-item label="企业主体"> <el-form-item label="企业主体">
<el-row type="flex"> <el-row type="flex">
{{ detail.enterpriseName }} {{ detail.enterpriseName }}
<el-link type="primary" <el-link type="primary" @click="isShow=true">企业详情</el-link>
@click="isShow=true">
企业详情
</el-link>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="资金用途">{{ dict.getLabel('financialFundPurpose', detail.fundPurpose) }} <el-form-item label="资金用途">{{ dict.getLabel('financialFundPurpose', detail.fundPurpose) }}
@@ -90,89 +87,23 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</ai-dialog> </ai-dialog>
<ai-dialog <ai-dialog class="dialog" :title="detail.enterpriseName||'企业详情'" :visible.sync="isShow" width="1200px" customFooter>
class="dialog" <enterprise-dialog v-if="detail.enterpriseId" :enterprise-id="detail.enterpriseId" :instance="instance"
:title="info.enterpriseName" :dict="dict"/>
:visible.sync="isShow" <template #footer>
@close="isShow = false" <el-button @click="isShow=false">关闭</el-button>
@onConfirm="isShow = false" </template>
width="1200px">
<div class="top">
<div class="top-left">{{ info.subEnterpriseName }}</div>
<div class="top-right">
<div class="top-right__top">
<h2>{{ info.enterpriseName }}</h2>
<!-- <div class="right">
<span>下载报告</span>
</div> -->
</div>
<div class="top-right__bottom">
<ai-wrapper
label-width="130px">
<ai-info-item label="法人姓名:"><span style="color: #1890FF;">{{ info.legalPersonName }}</span></ai-info-item>
<ai-info-item label="企业类型:" :value="$dict.getLabel('enterpriseType', info.enterpriseType)"></ai-info-item>
<ai-info-item label="统一社会信用代码:" :value="info.unifiedCode"></ai-info-item>
<ai-info-item label="地址:" isLine :value="info.areaName + info.address"></ai-info-item>
<ai-info-item label="经营范围:" isLine :value="info.businessScope"></ai-info-item>
</ai-wrapper>
</div>
</div>
</div>
<div class="bottom">
<div class="tab">
<span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">行政许可</span>
<span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">行政处罚</span>
<span :class="[currIndex === 2 ? 'active' : '']" @click="currIndex = 2">良好信息</span>
<span :class="[currIndex === 3 ? 'active' : '']" @click="currIndex = 3">失信信息</span>
</div>
<div class="table">
<ai-table
v-show="currIndex === 0"
:tableData="info.adminstrativeLicenseList"
:col-configs="colConfigs1"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table
v-show="currIndex === 1"
:tableData="info.administrativeSanctionList"
:col-configs="colConfigs2"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table
v-show="currIndex === 2"
:tableData="info.taxInfoList"
:col-configs="colConfigs3"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table
v-show="currIndex === 3"
:tableData="info.dishonestPersonList"
:col-configs="colConfigs4"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
</div>
</div>
</ai-dialog> </ai-dialog>
</section> </section>
</template> </template>
<script> <script>
import {mapState} from "vuex"; import {mapState} from "vuex";
import EnterpriseDialog from "../../financing/enterpriseDialog";
export default { export default {
name: "loanDetail", name: "loanDetail",
components: {EnterpriseDialog},
props: { props: {
instance: Function, instance: Function,
dict: Object, dict: Object,
@@ -202,42 +133,7 @@ export default {
loanDate: [{required: true, message: "请选择 放款日期"}], loanDate: [{required: true, message: "请选择 放款日期"}],
auditDescription: [{required: true, message: "请输入 审批意见"}], auditDescription: [{required: true, message: "请输入 审批意见"}],
}, },
info: {}, isShow: false
currIndex: 0,
isShow: false,
colConfigs1: [
{ prop: 'licenseCode', label: '行政许可决定文书号' },
{ prop: 'decisionDate', align: 'center', label: '许可决定日期' },
{ prop: 'endDate', align: 'center', label: '许可有效期至' },
{ prop: 'licenseOrganization', align: 'center', label: '许可机关' },
{ prop: 'licenseContent', align: 'center', label: '许可内容' },
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
],
colConfigs2: [
{ prop: 'sanctionCode', width: '190', label: '行政处罚决定文书号' },
{ prop: 'sanctionDate', align: 'center', label: '处罚决定日期' },
{ prop: 'sanctionType', align: 'center', label: '处罚类型', formart: v => this.$dict.getLabel('administrativeSanctionType', v) },
{ prop: 'sanctionContent', align: 'center', label: '处罚内容' },
{ prop: 'sanctionBasis', align: 'center', label: '处罚依据' },
{ prop: 'sanctionOrganization', align: 'center', label: '处罚机关' },
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
],
colConfigs3: [
{ prop: 'taxpayer', label: '纳税人名称' },
{ prop: 'taxpayerNumber', align: 'center', label: '纳税人识别号' },
{ prop: 'taxLevel', align: 'center', label: '纳税人等级' },
{ prop: 'taxYear', align: 'center', label: '年份' },
{ prop: 'evaluationUnit', align: 'center', label: '评价单位' },
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
],
colConfigs4: [
{ prop: 'executionCode', label: '执行案号' },
{ prop: 'executionTime', align: 'center', label: '执行时间' },
{ prop: 'dishonestFact', align: 'center', label: '失信事实' },
{ prop: 'executionSituation', align: 'center', label: '履行情况', formart: v => this.$dict.getLabel('dishonestPersonSituation', v) },
{ prop: 'executionCourt', align: 'center', label: '执行法院' },
{ prop: 'executionTime', align: 'center', label: '数据更新时间' }
],
} }
}, },
methods: { methods: {
@@ -248,19 +144,6 @@ export default {
}).then(res => { }).then(res => {
if (res?.data) { if (res?.data) {
this.detail = res.data this.detail = res.data
if(this.detail.enterpriseId) {
this.getCompanyInfo()
}
}
})
},
getCompanyInfo() {
this.instance.post(`/appportaluserenterprise/queryCreditEnterpriseDetailById?id=${this.detail.enterpriseId}`, null, {
withoutToken: true
}).then(res => {
if (res.code === 0) {
this.info = res.data
this.info.subEnterpriseName = res.data.enterpriseName.substr(0, 4)
} }
}) })
}, },
@@ -282,7 +165,7 @@ export default {
} }
}, },
created() { created() {
this.dict.load("auditStatus", "productRepaymentTimeline", "financialFundPurpose", "enterpriseAuditStatus", "financialLoanApplyStatus","financialOrganizationType") this.dict.load("auditStatus", "productRepaymentTimeline", "financialFundPurpose", "enterpriseAuditStatus", "financialLoanApplyStatus", "financialOrganizationType")
this.getDetail() this.getDetail()
} }
} }
@@ -307,115 +190,5 @@ export default {
.el-date-editor { .el-date-editor {
width: 100%; width: 100%;
} }
.dialog {
.top {
display: flex;
margin-bottom: 20px;
padding: 34px 30px 16px;
border: 1px solid #EEEEEE;
border-radius: 4px;
.top-left {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 1;
width: 88px;
height: 87px;
line-height: 1.3;
margin-right: 31px;
padding: 0 16px;
text-align: justify;
background: #8CA3CD;
color: #FFFFFF;
font-size: 22px;
letter-spacing: 6px;
border-radius: 8px;
}
.top-right {
flex: 1;
.top-right__top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 27px;
h2 {
color: #333333;
font-size: 22px;
}
.right {
display: flex;
align-items: center;
justify-content: center;
width: 97px;
height: 32px;
background: #E8F4FF;
border: 1px solid #A3D3FF;
border-radius: 3px;
color: #1890FF;
font-size: 13px;
cursor: pointer;
&:hover {
opacity: 0.6;
}
}
}
.top-right__bottom {
padding: 16px 10px 10px 0;
background: #F6FBFF;
}
}
}
.bottom {
padding-bottom: 20px;
border: 1px solid #DCDFE6;
border-radius: 4px;
.tab {
display: flex;
align-items: center;
height: 60px;
margin-bottom: 15px;
background: #FAFAFA;
border-radius: 4px;
span {
flex: 1;
height: 100%;
line-height: 60px;
text-align: center;
color: #555555;
font-size: 16px;
cursor: pointer;
border-bottom: 1px solid #DCDFE6;
border-right: 1px solid #DCDFE6;
transition: all ease 0.3s;
user-select: none;
&:last-child {
border-right: none;
}
&.active {
border-bottom: 1px solid transparent;
background: #fff;
color: #1890FF;
}
}
}
.table {
padding: 0 16px;
}
}
}
} }
</style> </style>

View File

@@ -26,10 +26,7 @@
<el-form-item label="企业主体" v-if="detail.applyType==1"> <el-form-item label="企业主体" v-if="detail.applyType==1">
<el-row type="flex"> <el-row type="flex">
{{ detail.enterpriseName }} {{ detail.enterpriseName }}
<el-link type="primary" <el-link type="primary" @click="isShow=true">企业详情</el-link>
@click="isShow=true">
企业详情
</el-link>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item v-else/> <el-form-item v-else/>
@@ -43,92 +40,26 @@
</template> </template>
</ai-card> </ai-card>
</el-form> </el-form>
<ai-dialog <ai-dialog class="dialog" :title="detail.enterpriseName||'企业详情'" :visible.sync="isShow" width="1200px"
class="dialog" customFooter>
:title="info.enterpriseName" <enterprise-dialog v-if="detail.enterpriseId" :enterprise-id="detail.enterpriseId" :instance="instance"
:visible.sync="isShow" :dict="dict"/>
@close="isShow = false" <template #footer>
@onConfirm="isShow = false" <el-button @click="isShow=false">关闭</el-button>
width="1200px"> </template>
<div class="top">
<div class="top-left">{{ info.subEnterpriseName }}</div>
<div class="top-right">
<div class="top-right__top">
<h2>{{ info.enterpriseName }}</h2>
<!-- <div class="right">
<span>下载报告</span>
</div> -->
</div>
<div class="top-right__bottom">
<ai-wrapper
label-width="130px">
<ai-info-item label="法人姓名:"><span style="color: #1890FF;">{{ info.legalPersonName }}</span></ai-info-item>
<ai-info-item label="企业类型:" :value="$dict.getLabel('enterpriseType', info.enterpriseType)"></ai-info-item>
<ai-info-item label="统一社会信用代码:" :value="info.unifiedCode"></ai-info-item>
<ai-info-item label="地址:" isLine :value="info.areaName + info.address"></ai-info-item>
<ai-info-item label="经营范围:" isLine :value="info.businessScope"></ai-info-item>
</ai-wrapper>
</div>
</div>
</div>
<div class="bottom">
<div class="tab">
<span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">行政许可</span>
<span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">行政处罚</span>
<span :class="[currIndex === 2 ? 'active' : '']" @click="currIndex = 2">良好信息</span>
<span :class="[currIndex === 3 ? 'active' : '']" @click="currIndex = 3">失信信息</span>
</div>
<div class="table">
<ai-table
v-show="currIndex === 0"
:tableData="info.adminstrativeLicenseList"
:col-configs="colConfigs1"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table
v-show="currIndex === 1"
:tableData="info.administrativeSanctionList"
:col-configs="colConfigs2"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table
v-show="currIndex === 2"
:tableData="info.taxInfoList"
:col-configs="colConfigs3"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table
v-show="currIndex === 3"
:tableData="info.dishonestPersonList"
:col-configs="colConfigs4"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
</div>
</div>
</ai-dialog> </ai-dialog>
</template> </template>
</ai-detail> </ai-detail>
</section> </section>
</template> </template>
<script> <script>
import {mapState} from "vuex"; import {mapState} from "vuex";
import EnterpriseDialog from "../enterpriseDialog";
export default { export default {
name: "needsDetail", name: "needsDetail",
components: {EnterpriseDialog},
props: { props: {
instance: Function, instance: Function,
dict: Object, dict: Object,
@@ -145,41 +76,7 @@ export default {
return { return {
detail: {}, detail: {},
info: {}, info: {},
currIndex: 0,
isShow: false, isShow: false,
colConfigs1: [
{ prop: 'licenseCode', label: '行政许可决定文书号' },
{ prop: 'decisionDate', align: 'center', label: '许可决定日期' },
{ prop: 'endDate', align: 'center', label: '许可有效期至' },
{ prop: 'licenseOrganization', align: 'center', label: '许可机关' },
{ prop: 'licenseContent', align: 'center', label: '许可内容' },
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
],
colConfigs2: [
{ prop: 'sanctionCode', width: '190', label: '行政处罚决定文书号' },
{ prop: 'sanctionDate', align: 'center', label: '处罚决定日期' },
{ prop: 'sanctionType', align: 'center', label: '处罚类型', formart: v => this.$dict.getLabel('administrativeSanctionType', v) },
{ prop: 'sanctionContent', align: 'center', label: '处罚内容' },
{ prop: 'sanctionBasis', align: 'center', label: '处罚依据' },
{ prop: 'sanctionOrganization', align: 'center', label: '处罚机关' },
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
],
colConfigs3: [
{ prop: 'taxpayer', label: '纳税人名称' },
{ prop: 'taxpayerNumber', align: 'center', label: '纳税人识别号' },
{ prop: 'taxLevel', align: 'center', label: '纳税人等级' },
{ prop: 'taxYear', align: 'center', label: '年份' },
{ prop: 'evaluationUnit', align: 'center', label: '评价单位' },
{ prop: 'createTime', align: 'center', label: '数据更新时间' }
],
colConfigs4: [
{ prop: 'executionCode', label: '执行案号' },
{ prop: 'executionTime', align: 'center', label: '执行时间' },
{ prop: 'dishonestFact', align: 'center', label: '失信事实' },
{ prop: 'executionSituation', align: 'center', label: '履行情况', formart: v => this.$dict.getLabel('dishonestPersonSituation', v) },
{ prop: 'executionCourt', align: 'center', label: '执行法院' },
{ prop: 'executionTime', align: 'center', label: '数据更新时间' }
],
} }
}, },
methods: { methods: {
@@ -190,19 +87,6 @@ export default {
}).then(res => { }).then(res => {
if (res?.data) { if (res?.data) {
this.detail = res.data this.detail = res.data
if(this.detail.enterpriseId) {
this.getCompanyInfo()
}
}
})
},
getCompanyInfo() {
this.instance.post(`/appportaluserenterprise/queryCreditEnterpriseDetailById?id=${this.detail.enterpriseId}`, null, {
withoutToken: true
}).then(res => {
if (res.code === 0) {
this.info = res.data
this.info.subEnterpriseName = res.data.enterpriseName.substr(0, 4)
} }
}) })
}, },
@@ -233,7 +117,7 @@ export default {
} }
}, },
created() { created() {
this.dict.load("productRepaymentTimeline", "financialFundPurpose","financingDemandApplyType", "enterpriseType", "dishonestPersonSituation", "administrativeSanctionType").then(() => { this.dict.load("productRepaymentTimeline", "financialFundPurpose", "financingDemandApplyType", "enterpriseType", "dishonestPersonSituation", "administrativeSanctionType").then(() => {
this.getDetail() this.getDetail()
}) })
} }
@@ -249,117 +133,12 @@ export default {
.el-form-item { .el-form-item {
width: 50%; width: 50%;
}
}
.dialog { .el-link {
.top { margin-left: 16px;
display: flex;
margin-bottom: 20px;
padding: 34px 30px 16px;
border: 1px solid #EEEEEE;
border-radius: 4px;
.top-left {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 1;
width: 88px;
height: 87px;
line-height: 1.3;
margin-right: 31px;
padding: 0 16px;
text-align: justify;
background: #8CA3CD;
color: #FFFFFF;
font-size: 22px;
letter-spacing: 6px;
border-radius: 8px;
}
.top-right {
flex: 1;
.top-right__top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 27px;
h2 {
color: #333333;
font-size: 22px;
}
.right {
display: flex;
align-items: center;
justify-content: center;
width: 97px;
height: 32px;
background: #E8F4FF;
border: 1px solid #A3D3FF;
border-radius: 3px;
color: #1890FF;
font-size: 13px;
cursor: pointer;
&:hover {
opacity: 0.6;
}
}
}
.top-right__bottom {
padding: 16px 10px 10px 0;
background: #F6FBFF;
}
}
}
.bottom {
padding-bottom: 20px;
border: 1px solid #DCDFE6;
border-radius: 4px;
.tab {
display: flex;
align-items: center;
height: 60px;
margin-bottom: 15px;
background: #FAFAFA;
border-radius: 4px;
span {
flex: 1;
height: 100%;
line-height: 60px;
text-align: center;
color: #555555;
font-size: 16px;
cursor: pointer;
border-bottom: 1px solid #DCDFE6;
border-right: 1px solid #DCDFE6;
transition: all ease 0.3s;
user-select: none;
&:last-child {
border-right: none;
}
&.active {
border-bottom: 1px solid transparent;
background: #fff;
color: #1890FF;
}
}
}
.table {
padding: 0 16px;
} }
} }
} }
} }
</style> </style>

View File

@@ -0,0 +1,260 @@
<template>
<section class="enterpriseDialog">
<div class="top">
<div class="top-left">{{ info.subEnterpriseName }}</div>
<div class="top-right">
<div class="top-right__top">
<h2>{{ info.enterpriseName }}</h2>
<!-- <div class="right">
<span>下载报告</span>
</div> -->
</div>
<div class="top-right__bottom">
<ai-wrapper
label-width="130px">
<ai-info-item label="法人姓名:"><span style="color: #1890FF;">{{ info.legalPersonName }}</span></ai-info-item>
<ai-info-item label="企业类型:" :value="dict.getLabel('enterpriseType', info.enterpriseType)"></ai-info-item>
<ai-info-item label="统一社会信用代码:" :value="info.unifiedCode"></ai-info-item>
<ai-info-item label="地址:" isLine :value="info.areaName + info.address"></ai-info-item>
<ai-info-item label="经营范围:" isLine :value="info.businessScope"></ai-info-item>
</ai-wrapper>
</div>
</div>
</div>
<div class="bottom">
<div class="tab">
<span :class="[currIndex === 0 ? 'active' : '']" @click="currIndex = 0">行政许可</span>
<span :class="[currIndex === 1 ? 'active' : '']" @click="currIndex = 1">行政处罚</span>
<span :class="[currIndex === 2 ? 'active' : '']" @click="currIndex = 2">良好信息</span>
<span :class="[currIndex === 3 ? 'active' : '']" @click="currIndex = 3">失信信息</span>
</div>
<div class="table">
<ai-table :dict="dict"
v-show="currIndex === 0"
:tableData="info.adminstrativeLicenseList"
:col-configs="colConfigs1"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table :dict="dict"
v-show="currIndex === 1"
:tableData="info.administrativeSanctionList"
:col-configs="colConfigs2"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table :dict="dict"
v-show="currIndex === 2"
:tableData="info.taxInfoList"
:col-configs="colConfigs3"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
<ai-table :dict="dict"
v-show="currIndex === 3"
:tableData="info.dishonestPersonList"
:col-configs="colConfigs4"
:isShowPagination="false"
border
tableSize="small"
@getList="() => {}">
</ai-table>
</div>
</div>
</section>
</template>
<script>
import {mapState} from "vuex";
export default {
name: "enterpriseDialog",
computed: {
...mapState(['user']),
isFinanceUser() {
return !!this.user.financeUser?.id
}
},
data() {
return {
info: {},
currIndex: 0,
colConfigs1: [
{prop: 'licenseCode', label: '行政许可决定文书号'},
{prop: 'decisionDate', align: 'center', label: '许可决定日期'},
{prop: 'endDate', align: 'center', label: '许可有效期至'},
{prop: 'licenseOrganization', align: 'center', label: '许可机关'},
{prop: 'licenseContent', align: 'center', label: '许可内容'},
{prop: 'createTime', align: 'center', label: '数据更新时间'}
],
colConfigs2: [
{prop: 'sanctionCode', width: '190', label: '行政处罚决定文书号'},
{prop: 'sanctionDate', align: 'center', label: '处罚决定日期'},
{prop: 'sanctionType', align: 'center', label: '处罚类型', dict: "administrativeSanctionType"},
{prop: 'sanctionContent', align: 'center', label: '处罚内容'},
{prop: 'sanctionBasis', align: 'center', label: '处罚依据'},
{prop: 'sanctionOrganization', align: 'center', label: '处罚机关'},
{prop: 'createTime', align: 'center', label: '数据更新时间'}
],
colConfigs3: [
{prop: 'taxpayer', label: '纳税人名称'},
{prop: 'taxpayerNumber', align: 'center', label: '纳税人识别号'},
{prop: 'taxLevel', align: 'center', label: '纳税人等级'},
{prop: 'taxYear', align: 'center', label: '年份'},
{prop: 'evaluationUnit', align: 'center', label: '评价单位'},
{prop: 'createTime', align: 'center', label: '数据更新时间'}
],
colConfigs4: [
{prop: 'executionCode', label: '执行案号'},
{prop: 'executionTime', align: 'center', label: '执行时间'},
{prop: 'dishonestFact', align: 'center', label: '失信事实'},
{prop: 'executionSituation', align: 'center', label: '履行情况', dict: "dishonestPersonSituation"},
{prop: 'executionCourt', align: 'center', label: '执行法院'},
{prop: 'executionTime', align: 'center', label: '数据更新时间'}
],
}
},
created() {
this.dict.load("dishonestPersonSituation", "administrativeSanctionType")
this.getCompanyInfo()
},
methods: {
getCompanyInfo() {
let {enterpriseId: id} = this
this.instance.post(`/appportaluserenterprise/queryCreditEnterpriseDetailById`, null, {
withoutToken: true,
params: {id}
}).then(res => {
if (res?.data) {
this.info = res.data
this.info.subEnterpriseName = res.data.enterpriseName.substr(0, 4)
}
})
}
},
props: {
instance: Function,
dict: Object,
permissions: Function,
enterpriseId: {required: true, default: ""}
}
}
</script>
<style lang="scss" scoped>
.enterpriseDialog {
.top {
display: flex;
margin-bottom: 20px;
padding: 34px 30px 16px;
border: 1px solid #EEEEEE;
border-radius: 4px;
.top-left {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 1;
width: 88px;
height: 87px;
line-height: 1.3;
margin-right: 31px;
padding: 0 16px;
text-align: justify;
background: #8CA3CD;
color: #FFFFFF;
font-size: 22px;
letter-spacing: 6px;
border-radius: 8px;
}
.top-right {
flex: 1;
.top-right__top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 27px;
h2 {
color: #333333;
font-size: 22px;
}
.right {
display: flex;
align-items: center;
justify-content: center;
width: 97px;
height: 32px;
background: #E8F4FF;
border: 1px solid #A3D3FF;
border-radius: 3px;
color: #1890FF;
font-size: 13px;
cursor: pointer;
&:hover {
opacity: 0.6;
}
}
}
.top-right__bottom {
padding: 16px 10px 10px 0;
background: #F6FBFF;
}
}
}
.bottom {
padding-bottom: 20px;
border: 1px solid #DCDFE6;
border-radius: 4px;
.tab {
display: flex;
align-items: center;
height: 60px;
margin-bottom: 15px;
background: #FAFAFA;
border-radius: 4px;
span {
flex: 1;
height: 100%;
line-height: 60px;
text-align: center;
color: #555555;
font-size: 16px;
cursor: pointer;
border-bottom: 1px solid #DCDFE6;
border-right: 1px solid #DCDFE6;
transition: all ease 0.3s;
user-select: none;
&:last-child {
border-right: none;
}
&.active {
border-bottom: 1px solid transparent;
background: #fff;
color: #1890FF;
}
}
}
.table {
padding: 0 16px;
}
}
}
</style>