Browse Source

文件柜上下架

master
xuhuajiao 5 days ago
parent
commit
540e15a105
  1. 21
      src/api/system/documentArchives.js
  2. 84
      src/views/archivesMIOD/miodLibrary/module/detail.vue
  3. 67
      src/views/archivesMIOD/onOffShelfRecord/index.vue
  4. 167
      src/views/archivesMIOD/‌filingCabinet/index.vue

21
src/api/system/documentArchives.js

@ -394,6 +394,23 @@ export function FetchDocumentCirculationCabinetById(params) {
})
}
// 下架文件流转柜
export function FetchUnpublish(data) {
return request({
url: 'api/documentCirculationCabinet/unpublish',
method: 'post',
data
})
}
// 公文上下架日志
export function FetchDocumentShelfOperationLog(params) {
return request({
url: 'api/documentCirculationCabinet/documentShelfOperationLog' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
export default {
FetchInitDocumentParam,
updateDocumentParam,
@ -439,5 +456,7 @@ export default {
FetchBorrowerdsByIds,
FetchCabinetBingBorrower,
FetchCabinetUnbingBorrower,
FetchDocumentCirculationCabinetById
FetchDocumentCirculationCabinetById,
FetchUnpublish,
FetchDocumentShelfOperationLog
}

84
src/views/archivesMIOD/miodLibrary/module/detail.vue

@ -8,7 +8,8 @@
<!-- tab -->
<ul class="tab-nav">
<li :class="{'active-tab-nav': archivesTabIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
<li v-if="!isShelfRecord" :class="{'active-tab-nav': archivesTabIndex == 1}" @click="changeActiveTab(1)">/下架记录</li>
<!-- v-if="!isShelfRecord" -->
<li :class="{'active-tab-nav': archivesTabIndex == 1}" @click="changeActiveTab(1)">/下架记录</li>
<li :class="{'active-tab-nav': archivesTabIndex == 2}" @click="changeActiveTab(2)">传阅记录</li>
<li :class="{'active-tab-nav': archivesTabIndex == 3}" @click="changeActiveTab(3)">操作记录</li>
</ul>
@ -144,25 +145,39 @@
</div>
</div>
<!-- 上下架记录 -->
<div v-if="archivesTabIndex==1 && !isShelfRecord" class="item-content">
<!-- v-if="archivesTabIndex==1 && !isShelfRecord" -->
<div v-if="archivesTabIndex==1" class="item-content">
<el-table class="archives-table" :data="onOffTableData" style="min-width: 100%; " height="calc(100vh - 280px)">
<el-table-column prop="operateType" label="操作类型" min-width="60" align="center">
<el-table-column prop="operationType" label="操作类型" min-width="60" align="center">
<!-- <template slot-scope="scope">
<span class="row-state row-packing state-active">{{ scope.row.operationType }}</span>
</el-table-column></el-table></div></div></div></el-dialog></div></template> -->
<template slot-scope="scope">
<!-- getOperateTypeText(scope.row.operateType) -->
<span class="row-state row-packing state-active">{{ scope.row.operateType }}</span>
<div>
<!-- <span v-if="scope.row.operationType === 1" class="row-state row-packing state-active">上架</span>
<span v-if="scope.row.operationType === 2" class="row-state row-packing state-active">下架</span> -->
<el-tag v-if="scope.row.operationType === 1" type="success">上架</el-tag>
<el-tag v-if="scope.row.operationType === 2" type="danger">下架</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="createBy" label="操作格位" min-width="100" />
<el-table-column prop="createBy" label="公文登记号" min-width="100" />
<el-table-column prop="details_type" label="文件类型" min-width="85">
<el-table-column prop="cabinetId" label="操作格位" min-width="100">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
<div>
{{ [scope.row.cabinetId ? String(scope.row.cabinetId).padStart(2, '0') : '', scope.row.borrowName].filter(v => v).join('_') || '-' }}
</div>
</template>
</el-table-column>
<el-table-column prop="regNo" label="公文登记号" min-width="100" />
<el-table-column prop="detailsType" label="文件类型" min-width="85">
<template slot-scope="scope">
<el-tag v-if="scope.row.detailsType === 1">原件</el-tag>
<el-tag v-else>复印件</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="操作时间" width="180">
<el-table-column prop="operationTime" label="操作时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.createTime | parseTime }}</div>
<div>{{ scope.row.operationTime | parseTime }}</div>
</template>
</el-table-column>
</el-table>
@ -322,7 +337,7 @@
<script>
// import { crud } from '@crud/crud'
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorAllByDocumentId, FetchInitOperate, FetchReadGW, FetchBingdingLabel, FetchUnbindTag, FetchArchivesDetailsBorrowLog, FetchLend, FetchBorrowerdsByIds } from '@/api/system/documentArchives'
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorAllByDocumentId, FetchInitOperate, FetchReadGW, FetchBingdingLabel, FetchUnbindTag, FetchArchivesDetailsBorrowLog, FetchLend, FetchBorrowerdsByIds, FetchDocumentShelfOperationLog } from '@/api/system/documentArchives'
import { FetchInitBorrowerListOrderNo } from '@/api/system/borrower'
import { mapGetters } from 'vuex'
@ -497,7 +512,7 @@ export default {
// this.currentArchivesId = this.parentInfo.id
let documentId
if (this.pageType && (this.pageType === 'search' || this.pageType === 'miodRecord')) {
documentId = this.parentInfo.document_id
documentId = this.parentInfo.document_id || this.parentInfo.documentId
} else {
documentId = this.selectedDocument.isType === 2
? this.selectedDocument.id
@ -508,8 +523,8 @@ export default {
documentId,
archivesId: this.pageType && this.pageType === 'miodRecord'
? this.parentInfo.details_type === 1
? this.parentInfo.archives_id
: this.parentInfo.parents_id
? (this.parentInfo.archives_id || this.parentInfo.archivesId)
: (this.parentInfo.parents_id || this.parentInfo.parentsId)
: this.parentInfo.id
}
const distributorParams = {
@ -527,7 +542,7 @@ export default {
const hostDepartmentItem = this.archivesDetailsData.find(
item => item.fieldName === 'host_department'
)
// console.log('hostDepartmentItem', hostDepartmentItem)
console.log('hostDepartmentItem', hostDepartmentItem)
if (hostDepartmentItem) {
const hostParams = {
'search': hostDepartmentItem.context
@ -563,7 +578,7 @@ export default {
let documentId
if (this.pageType && (this.pageType === 'search' || this.pageType === 'miodRecord')) {
documentId = this.parentInfo.document_id
documentId = this.parentInfo.document_id || this.parentInfo.documentId
} else {
documentId = this.selectedDocument.isType === 2
? this.selectedDocument.id
@ -574,8 +589,8 @@ export default {
documentId,
archivesId: this.pageType && this.pageType === 'miodRecord'
? this.parentInfo.details_type === 1
? this.parentInfo.archives_id
: this.parentInfo.parents_id
? (this.parentInfo.archives_id || this.parentInfo.archivesId)
: (this.parentInfo.parents_id || this.parentInfo.parentsId)
: this.parentInfo.id
}
@ -632,7 +647,7 @@ export default {
getArchivesDetailsBorrowLog() {
let documentId
if (this.pageType && (this.pageType === 'search' || this.pageType === 'miodRecord')) {
documentId = this.parentInfo.document_id
documentId = this.parentInfo.document_id || this.parentInfo.documentId
} else {
documentId = this.selectedDocument.isType === 2
? this.selectedDocument.id
@ -642,8 +657,8 @@ export default {
documentId: documentId,
archivesId: this.pageType && this.pageType === 'miodRecord'
? this.parentInfo.details_type === 1
? this.parentInfo.archives_id
: this.parentInfo.parents_id
? (this.parentInfo.archives_id || this.parentInfo.archivesId)
: (this.parentInfo.parents_id || this.parentInfo.parentsId)
: this.parentInfo.id,
page: this.pageBorrow.page,
size: this.pageBorrow.size
@ -660,7 +675,7 @@ export default {
getInitOperate() {
let documentId
if (this.pageType && (this.pageType === 'search' || this.pageType === 'miodRecord')) {
documentId = this.parentInfo.document_id
documentId = this.parentInfo.document_id || this.parentInfo.documentId
} else {
documentId = this.selectedDocument.isType === 2
? this.selectedDocument.id
@ -670,8 +685,8 @@ export default {
documentId: documentId,
archivesId: this.pageType && this.pageType === 'miodRecord'
? this.parentInfo.details_type === 1
? this.parentInfo.archives_id
: this.parentInfo.parents_id
? (this.parentInfo.archives_id || this.parentInfo.archivesId)
: (this.parentInfo.parents_id || this.parentInfo.parentsId)
: this.parentInfo.id,
page: this.page.page,
size: this.page.size
@ -955,7 +970,24 @@ export default {
}
},
getInitShelfOperate() {
console.log('上下架记录')
console.log('this.pageType', this.pageType)
console.log('this.parentInfo', this.parentInfo)
const params = {
archivesId: this.pageType && this.pageType === 'miodRecord'
? this.parentInfo.details_type === 1
? (this.parentInfo.archives_id || this.parentInfo.archivesId)
: (this.parentInfo.parents_id || this.parentInfo.parentsId)
: this.parentInfo.id,
page: this.pageShelf.page,
size: this.pageShelf.size
}
FetchDocumentShelfOperationLog(params).then(data => {
console.log('data', data)
this.onOffTableData = data.content
this.pageShelf.total = data.totalElements
}).catch(error => {
this.$message({ message: error, type: 'error', offset: 8 })
})
},
handleDeptsSizeChange(size) {
this.pageDepts.size = size

67
src/views/archivesMIOD/onOffShelfRecord/index.vue

@ -30,13 +30,9 @@
</el-input>
</el-tooltip>
<div style="display: flex; justify-content: flex-start; align-items: center;">
<p style="margin-right: 10px; font-size: 14px;">开始时间</p>
<p style="margin-right: 10px; font-size: 14px;">操作时间</p>
<date-range-picker v-model="blurryTimeStart" class="date-item" />
</div>
<div style="display: flex; justify-content: flex-start; align-items: center;">
<p style="margin-right: 10px; font-size: 14px;">结束时间</p>
<date-range-picker v-model="blurryTimeEnd" class="date-item" />
</div>
<el-button class="filter-item filter-search" size="mini" type="success" icon="el-icon-search" @click="crud.toQuery">搜索</el-button>
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery()">重置</el-button>
</div>
@ -58,26 +54,32 @@
height="calc(100vh - 290px)"
@cell-dblclick="tableDoubleClick"
>
<el-table-column prop="op_type" label="操作类型">
<el-table-column prop="operationType" label="操作类型" width="100" align="center">
<template slot-scope="scope">
<div>
<span v-if="scope.row.op_type === 1">上架</span>
<span v-if="scope.row.op_type === 2">下架</span>
<el-tag v-if="scope.row.operationType === 1" type="success">上架</el-tag>
<el-tag v-if="scope.row.operationType === 2" type="danger">下架</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="op_position" label="操作位置" />
<el-table-column prop="op_no" label="公文登记号" show-overflow-tooltip />
<el-table-column prop="cabinetId" label="操作格位" min-width="100">
<template slot-scope="scope">
<div>
{{ [scope.row.cabinetId ? String(scope.row.cabinetId).padStart(2, '0') : '', scope.row.borrowName].filter(v => v).join('_') || '-' }}
</div>
</template>
</el-table-column>
<el-table-column prop="regNo" label="收文号" show-overflow-tooltip />
<el-table-column prop="maintitle" label="公文题名" min-width="140" show-overflow-tooltip />
<el-table-column prop="details_type" label="文件类型" width="80">
<el-table-column prop="detailsType" label="文件类型" width="80">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
<el-tag v-if="scope.row.detailsType === 1">原件</el-tag>
<el-tag v-else>复印件</el-tag>
</template>
</el-table-column>
<el-table-column prop="start_time" label="操作时间" width="160">
<el-table-column prop="operationTime" label="操作时间" width="160">
<template slot-scope="scope">
<div>{{ scope.row.start_time | parseTime }}</div>
<div>{{ scope.row.operationTime | parseTime }}</div>
</template>
</el-table-column>
</el-table>
@ -104,7 +106,7 @@ export default {
mixins: [presenter(), crud()],
cruds() {
return CRUD({
url: 'api/documentArchives/initBorrowLog',
url: 'api/documentCirculationCabinet/documentShelfOperationLog',
title: '上下架记录',
optShow: {
add: false,
@ -126,7 +128,6 @@ export default {
],
inputSelect: '',
blurryTimeStart: null,
blurryTimeEnd: null,
lendDetail: false,
rowCurrent: null,
detailArcData: [],
@ -157,7 +158,7 @@ export default {
'value',
'value'
)
this.crud.query.readType = this.typeInputkey
this.crud.query.operationType = this.typeInputkey
this.crud.query.search = e
// this.crud.query[this.typeInputkey] = e
},
@ -169,7 +170,7 @@ export default {
if (this.typeInputkey) {
delete this.crud.query[this.typeInputkey]
}
this.crud.query.readType = val
this.crud.query.operationType = val
this.crud.query.search = this.typeValue
this.crud.toQuery()
},
@ -189,18 +190,11 @@ export default {
},
[CRUD.HOOK.beforeRefresh]() {
if (this.blurryTimeStart) {
this.crud.query.borrowStartTime = this.blurryTimeStart[0]
this.crud.query.borrowEndTime = this.blurryTimeStart[1]
} else {
this.crud.query.borrowStartTime = null
this.crud.query.borrowEndTime = null
}
if (this.blurryTimeEnd) {
this.crud.query.lastStartTime = this.blurryTimeEnd[0]
this.crud.query.lastEndTime = this.blurryTimeEnd[1]
this.crud.query.startTime = this.blurryTimeStart[0]
this.crud.query.endTime = this.blurryTimeStart[1]
} else {
this.crud.query.lastStartTime = null
this.crud.query.lastEndTime = null
this.crud.query.startTime = null
this.crud.query.endTime = null
}
},
[CRUD.HOOK.afterRefresh](crud) {
@ -208,14 +202,11 @@ export default {
resetQuery() {
this.clearInputValue()
this.inputSelect = this.options[0].value
this.crud.query.readType = null
this.crud.query.operationType = null
this.crud.query.search = null
this.blurryTimeStart = []
this.blurryTimeEnd = []
this.crud.query.borrowStartTime = null
this.crud.query.borrowEndTime = null
this.crud.query.lastStartTime = null
this.crud.query.lastEndTime = null
this.crud.query.startTime = null
this.crud.query.endTime = null
this.crud.toQuery()
},
tableDoubleClick(row) {
@ -276,9 +267,9 @@ export default {
}).then(() => {
const params = {
'search': this.crud.query.search,
'readType': this.crud.query.readType,
'borrowStartTime': this.crud.query.borrowStartTime,
'borrowEndTime': this.crud.query.borrowEndTime,
'operationType': this.crud.query.operationType,
'startTime': this.crud.query.startTime,
'endTime': this.crud.query.endTime,
'lastStartTime': this.crud.query.lastStartTime,
'lastEndTime': this.crud.query.lastEndTime
}

167
src/views/archivesMIOD/‌filingCabinet/index.vue

@ -56,59 +56,68 @@
</div>
<div class="content-wrap">
<div v-if="selectedCellInfo" class="cabinet-info">
<div style="display: flex; justify-content: flex-start;">
<div class="info-row">
<span class="info-label">编号</span>
<span class="info-value">{{ selectedCellInfo.id }}</span>
</div>
<div class="info-row">
<span class="info-label">绑定状态</span>
<span :class="['info-value', !selectedCellInfo.bound ? 'unbound' : '']">
{{ selectedCellInfo.bound ? '已绑定' : '未绑定' }}
</span>
<div class="cabinet-info-title">
<p class="title-left">层位信息</p>
</div>
<div style="display: flex; justify-content: space-between; align-items: center;">
<div style="display: flex; justify-content: flex-start;">
<div class="info-row">
<span class="info-label">编号</span>
<span class="info-value">{{ selectedCellInfo.id }}</span>
</div>
<div class="info-row">
<span class="info-label">绑定状态</span>
<span :class="['info-value', !selectedCellInfo.bound ? 'unbound' : '']">
{{ selectedCellInfo.bound ? '已绑定' : '未绑定' }}
</span>
</div>
<div class="info-row">
<span class="info-label">绑定目标</span>
<span class="info-value">
{{ selectedCellInfo.bound ? selectedCellInfo.borrowName : '-' }}
</span>
</div>
</div>
<div class="info-row">
<span class="info-label">绑定目标</span>
<span class="info-value">
{{ selectedCellInfo.bound ? selectedCellInfo.borrowName : '-' }}
</span>
<div>
<el-button v-if="!selectedCellInfo.bound" size="mini" @click="borrowerListVisible = true">
<i class="iconfont icon-bendiguajie" />
绑定
</el-button>
<el-button v-else :loading="unbindLoading" class="unbind-btn" size="mini" @click="unbindCell">
<i class="iconfont icon-jiebang" />
解绑
</el-button>
</div>
</div>
<div>
<el-button v-if="!selectedCellInfo.bound" size="mini" @click="borrowerListVisible = true">
<i class="iconfont icon-bendiguajie" />
绑定
</el-button>
<el-button v-else :loading="unbindLoading" class="unbind-btn" size="mini" @click="unbindCell">
<i class="iconfont icon-jiebang" />
解绑
</el-button>
</div>
</div>
<div class="container-wrap">
<span class="right-top-line" />
<span class="left-bottom-line" />
<div class="cabinet-table-title">
<p class="title-left">在架信息</p>
<span> <i style="color: #1890ff; font-weight: bold;">{{ miodData.length }}</i> </span>
</div>
<el-table
ref="table"
v-loading="crud.loading"
class="archives-table"
:data="miodData"
style="width: 100%;"
height="calc(100vh - 260px)"
height="calc(100vh - 334px)"
@cell-dblclick="tableDoubleClick"
>
<el-table-column type="index" label="序号" width="60" />
<el-table-column prop="reg_no" label="登记号" width="120" />
<el-table-column prop="details_type" label="文件类型" width="100">
<el-table-column prop="regNo" label="收文号" width="120" />
<el-table-column prop="detailsType" label="文件类型" width="100">
<template slot-scope="scope">
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
<el-tag v-if="scope.row.detailsType === 1">原件</el-tag>
<el-tag v-else>复印件</el-tag>
</template>
</el-table-column>
<el-table-column prop="maintitle" label="公文题名" min-width="140" show-overflow-tooltip />
<el-table-column prop="doc_no" label="发文字号" width="120" />
<el-table-column prop="doc_department" label="所属文件" width="120" />
<el-table-column prop="actual_return_time" label="操作" align="center" width="110">
<el-table-column prop="docNo" label="来文字号" min-width="120" />
<el-table-column prop="docDepartment" label="所属文件" width="120" />
<el-table-column prop="actual_return_time" label="操作" align="center" width="140">
<template slot-scope="scope">
<el-button size="mini" style="padding: 5px;" :loading="removalLoaing[scope.$index]" @click="handleBatchDel(scope.$index, scope.row)">
<i class="iconfont icon-xiajia" />
@ -151,7 +160,7 @@
</el-table-column>
<el-table-column prop="create_time" label="操作" width="80">
<template slot-scope="scope">
<el-button :disabled="scope.row.cabinetId" :loading="bindLoading[scope.$index]" size="mini" style="padding: 5px;" @click="handleBindCell(scope.$index, scope.row)"> {{ scope.row.cabinetId ? '已绑定' : '绑定' }}</el-button>
<el-button :disabled="scope.row.cabinetId !== null" :loading="bindLoading[scope.$index]" size="mini" style="padding: 5px;" @click="handleBindCell(scope.$index, scope.row)"> {{ scope.row.cabinetId ? '已绑定' : '绑定' }}</el-button>
</template>
</el-table-column>
</el-table>
@ -173,7 +182,7 @@
<script>
import CRUD, { presenter, crud } from '@crud/crud'
import { FetchInitBorrowerList } from '@/api/system/borrower'
import { FetchCabinetBingBorrower, FetchCabinetUnbingBorrower, FetchDocumentCirculationCabinetById } from '@/api/system/documentArchives'
import { FetchCabinetBingBorrower, FetchCabinetUnbingBorrower, FetchDocumentCirculationCabinetById, FetchUnpublish } from '@/api/system/documentArchives'
import MidoArchivesInfo from '@/views/archivesMIOD/miodLibrary/module/detail'
import { mapGetters } from 'vuex'
@ -197,7 +206,6 @@ export default {
},
data() {
return {
detailArcData: [],
categoryId: null,
parentInfo: null,
pageType: 'miodRecord',
@ -289,7 +297,7 @@ export default {
if (item.type === 'empty') return
this.selectedCell = item.id
this.selectedCellInfo = item
this.getMiodData()
this.getDocumentCirculationCabinetById()
},
[CRUD.HOOK.beforeRefresh]() {
this.crud.params.page = undefined
@ -354,8 +362,9 @@ export default {
id: this.selectedCellInfo.originalData.id
}
FetchDocumentCirculationCabinetById(params).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.detailArcData = res.data || []
this.miodData = res.detailsList || []
} else {
this.$message({ message: '获取文件流转柜详情失败', type: 'error', offset: 8 })
}
@ -364,22 +373,6 @@ export default {
this.$message({ message: '获取文件流转柜详情失败', type: 'error', offset: 8 })
})
},
getMiodData() {
const params = {
id: this.selectedCellInfo.originalData.id
}
console.log('params', params)
// FetchCabinetBingBorrower(params).then((res) => {
// console.log('res', res)
// if (res.code !== 500) {
// this.miodData = res.data || []
// } else {
// this.$message({ message: '' + this.selectedCellInfo.id + '', type: 'error', offset: 8 })
// }
// }).catch(err => {
// console.log(err)
// })
},
handleBindCell(index, item) {
this.$set(this.bindLoading, index, true)
this.$confirm('此操作将绑定当前借阅者' + '<span>你是否还要继续?</span>', '提示', {
@ -491,6 +484,7 @@ export default {
this.getBorrowerList()
},
handleBatchDel(index, data) {
console.log('data', data)
this.$set(this.removalLoaing, index, true)
this.$confirm('此操作将下架当前公文' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
@ -498,20 +492,21 @@ export default {
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const params = data.map(item => {
return item.id
})
const params = {
'documentTid': data.regNo
}
console.log(params)
// FetchDelAssistEnter(params).then((res) => {
// if (res.code !== 500) {
// this.$message({ message: '', type: 'success', offset: 8 })
// this.crud.refresh()
// } else {
// this.$message({ message: '', type: 'error', offset: 8 })
// }
// }).catch(err => {
// console.log(err)
// })
FetchUnpublish(params).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.$message({ message: '手动下架成功', type: 'success', offset: 8 })
this.crud.refresh()
} else {
this.$message({ message: '手动下架失败', type: 'error', offset: 8 })
}
}).catch(err => {
console.log(err)
})
this.$set(this.removalLoaing, index, false)
}).catch(() => {
this.$set(this.removalLoaing, index, false)
@ -649,9 +644,9 @@ export default {
}
.cabinet-info {
display: flex;
justify-content: space-between;
align-items: center;
// display: flex;
// justify-content: space-between;
// align-items: center;
// margin-top: 15px;
padding: 12px;
background: #fff;
@ -700,4 +695,38 @@ export default {
border-color:#F6A5A0;
background: rgba(252,49,49,0.2);
}
.cabinet-info-title{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
margin-bottom: 6px;
font-size: 14px;
}
.cabinet-table-title{
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px;
background: #fff;
border-radius: 6px;
border: 1px solid #e8e8e8;
margin-bottom: 12px;
}
.title-left{
display: flex;
justify-content: flex-start;
align-items: center;
color: #000;
&::before{
content: '';
display: inline-block;
width: 6px;
height: 16px;
background: #1890ff;
margin-right: 4px;
}
}
</style>
Loading…
Cancel
Save