You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
355 lines
12 KiB
355 lines
12 KiB
<template>
|
|
<div class="app-container row-container">
|
|
<div class="head-container">
|
|
<div class="head-search">
|
|
<el-input
|
|
v-model="typeValue"
|
|
size="small"
|
|
clearable
|
|
placeholder="请输入题名搜索关键字"
|
|
style="width: 300px;"
|
|
class="input-prepend filter-item"
|
|
@clear="crud.toQuery"
|
|
@keyup.enter.native="crud.toQuery"
|
|
@input="typeInput"
|
|
>
|
|
<el-select slot="prepend" v-model="inputSelect" style="width: 92px" @change="clearInputValue">
|
|
<el-option
|
|
v-for="item in options"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
/>
|
|
</el-select>
|
|
</el-input>
|
|
<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="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>
|
|
</div>
|
|
<div class="container-wrap">
|
|
<span class="right-top-line" />
|
|
<span class="left-bottom-line" />
|
|
<!-- @selection-change="crud.selectionChangeHandler" -->
|
|
<el-table
|
|
ref="table"
|
|
v-loading="crud.loading"
|
|
class="archives-table"
|
|
:data="crud.data"
|
|
style="width: 100%;"
|
|
height="calc(100vh - 288px)"
|
|
@cell-dblclick="tableDoubleClick"
|
|
>
|
|
<el-table-column prop="reg_no" label="公文登记号" width="120" />
|
|
<el-table-column prop="maintitle" label="公文题名" min-width="140" show-overflow-tooltip />
|
|
<el-table-column prop="details_type" label="文件类型">
|
|
<template slot-scope="scope">
|
|
<el-tag v-if="scope.row.details_type === 1">原件</el-tag>
|
|
<el-tag v-else>复印件</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="borrow_name" label="借阅者" />
|
|
<el-table-column prop="borrow_type" label="借阅者类型">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
<span v-if="scope.row.borrow_type === 1">部门</span>
|
|
<span v-if="scope.row.borrow_type === 2">个人</span>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="start_time" label="传阅开始时间" width="200">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.start_time | parseTime }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="latest_time" label="最迟归还时间" width="200">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.latest_time | parseTime }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="actual_return_time" label="实际归还时间" width="200">
|
|
<template slot-scope="scope">
|
|
<div v-if="scope.row.actual_return_time && (scope.row.actual_return_time!=='' || scope.row.actual_return_time!== null)">{{ scope.row.actual_return_time | parseTime }}</div>
|
|
<div v-else>-</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="actual_return_time" label="状态" align="center" width="110">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
<!-- <span v-if="scope.row.borrow_type==='即将到期'" class="row-state soon-state">即将到期</span> -->
|
|
<span v-if="scope.row.actual_return_time && (scope.row.actual_return_time!=='' || scope.row.actual_return_time!== null)" class="row-state row-physical state-active">已归还</span>
|
|
<span v-else class="row-state row-binding state-active">传阅中</span>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="actual_return_time" label="操作" align="center" width="100">
|
|
<!-- -->
|
|
<template slot-scope="scope">
|
|
<el-button v-if="!(scope.row.actual_return_time && (scope.row.actual_return_time!=='' || scope.row.actual_return_time!== null))" size="mini" style="padding: 5px;" :loading="returnBtnLoading[scope.$index]" @click="handleReturnFile(scope.$index, scope.row)"><i class="iconfont icon-weituo" />归还</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<pagination v-if="crud.data.length !== 0" />
|
|
</div>
|
|
<MidoArchivesInfo ref="archivesInfo" :is-mido-record="true" :parent-info="parentInfo" :page-type="pageType" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import CRUD, { presenter, crud } from '@crud/crud'
|
|
import { FetchDocumentReturn } from '@/api/system/documentArchives'
|
|
import pagination from '@crud/Pagination'
|
|
import DateRangePicker from '@/components/DateRangePicker'
|
|
import MidoArchivesInfo from '@/views/archivesMIOD/miodLibrary/module/detail'
|
|
// import { parseTime } from '@/utils/index'
|
|
|
|
export default {
|
|
name: 'MiodRecord',
|
|
components: { pagination, DateRangePicker, MidoArchivesInfo },
|
|
mixins: [presenter(), crud()],
|
|
cruds() {
|
|
return CRUD({
|
|
url: 'api/documentArchives/initBorrowLog',
|
|
title: '传阅记录',
|
|
optShow: {
|
|
add: false,
|
|
edit: false,
|
|
del: false,
|
|
download: false,
|
|
reset: false,
|
|
group: false
|
|
}
|
|
})
|
|
},
|
|
data() {
|
|
return {
|
|
typeValue: null,
|
|
options: [
|
|
{ value: null, label: '全部' },
|
|
{ value: 1, label: '传阅中' },
|
|
{ value: 2, label: '已归还' }
|
|
],
|
|
inputSelect: '',
|
|
blurryTimeStart: null,
|
|
blurryTimeEnd: null,
|
|
lendDetail: false,
|
|
rowCurrent: null,
|
|
detailArcData: [],
|
|
categoryId: null,
|
|
parentInfo: null,
|
|
pageType: 'miodRecord',
|
|
returnBtnLoading: []
|
|
}
|
|
},
|
|
watch: {
|
|
},
|
|
created() {
|
|
// 初始化带select的输入框的 - 搜索
|
|
this.inputSelect = this.options[0].value
|
|
},
|
|
mounted() {
|
|
},
|
|
methods: {
|
|
typeInput(e) {
|
|
this.typeInputkey = this.getDescByValue(
|
|
this.inputSelect,
|
|
this.options,
|
|
'value',
|
|
'value'
|
|
)
|
|
this.crud.query.readType = this.typeInputkey
|
|
this.crud.query.search = e
|
|
// this.crud.query[this.typeInputkey] = e
|
|
},
|
|
clearInputValue(val) {
|
|
console.log('val', val)
|
|
this.inputSelect = val
|
|
this.typeValue = ''
|
|
// 避免向后端传递多余参数,切换和重置时,若有typeInputkey则去掉form中对应参数
|
|
if (this.typeInputkey) {
|
|
delete this.crud.query[this.typeInputkey]
|
|
}
|
|
this.crud.query.readType = val
|
|
this.crud.query.search = this.typeValue
|
|
this.crud.toQuery()
|
|
},
|
|
getDescByValue(inputValue, data, inputKey = 'value', outputKey = 'value') {
|
|
let outputValue = ''
|
|
if (data && data.length > 0) {
|
|
for (let i = 0; i < data.length; i++) {
|
|
const item = data[i]
|
|
const itemValue = item[inputKey]
|
|
if (inputValue + '' === itemValue + '') {
|
|
outputValue = item[outputKey]
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return outputValue
|
|
},
|
|
[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]
|
|
} else {
|
|
this.crud.query.lastStartTime = null
|
|
this.crud.query.lastEndTime = null
|
|
}
|
|
},
|
|
[CRUD.HOOK.afterRefresh](crud) {
|
|
},
|
|
resetQuery() {
|
|
this.clearInputValue()
|
|
this.inputSelect = this.options[0].value
|
|
this.crud.query.readType = 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.toQuery()
|
|
},
|
|
tableDoubleClick(row) {
|
|
console.log('row', row)
|
|
this.parentInfo = row
|
|
this.$nextTick(() => {
|
|
this.$refs.archivesInfo.archivesInfoVisible = true
|
|
this.$refs.archivesInfo.archivesTabIndex = 0
|
|
this.$refs.archivesInfo.getDetial()
|
|
})
|
|
},
|
|
handleReturnFile(index, row) {
|
|
this.$set(this.returnBtnLoading, index, true)
|
|
console.log('row', row)
|
|
this.$confirm('确认是否归还当前所选文件,公文登记号:' + row.reg_no + '<span>你是否还要继续?</span>', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
dangerouslyUseHTMLString: true
|
|
}).then(() => {
|
|
const param = {
|
|
'documentTid': row.reg_no
|
|
}
|
|
console.log('param', param)
|
|
FetchDocumentReturn(param).then((res) => {
|
|
console.log('resReturn', res)
|
|
if (res.code !== '-1') {
|
|
this.$message({ message: res.msg, type: 'success', offset: 8 })
|
|
} else {
|
|
this.$message({ message: res.msg, type: 'error', offset: 8 })
|
|
}
|
|
this.crud.toQuery()
|
|
this.$set(this.returnBtnLoading, index, false)
|
|
}).catch(error => {
|
|
console.error(error)
|
|
this.$set(this.returnBtnLoading, index, false)
|
|
})
|
|
}).catch(() => {
|
|
this.$set(this.returnBtnLoading, index, false)
|
|
})
|
|
},
|
|
handleCloseDialog(done) {
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import "~@/assets/styles/collect-reorganizi.scss";
|
|
|
|
.recordList-main{
|
|
height: calc(100vh - 236px);
|
|
.start-date,
|
|
.end-date{
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
padding-left: 8px;
|
|
font-size: 14px;
|
|
line-height: 30px;
|
|
color: #0C0E1E;
|
|
span{
|
|
display: block;
|
|
margin-right: 8px;
|
|
}
|
|
}
|
|
.iconfont{
|
|
font-size: 14px;
|
|
}
|
|
.icon-fou{
|
|
color: #A6ADB6;
|
|
}
|
|
.icon-shi{
|
|
color: #12C37A;
|
|
}
|
|
.icon-dengdai{
|
|
color: #FF8329;
|
|
}
|
|
.icon-cuowu1{
|
|
color: #ED4A41;
|
|
}
|
|
.row-state{
|
|
width: 56px;
|
|
padding: 0;
|
|
text-align: center;
|
|
}
|
|
}
|
|
.user-record{
|
|
padding: 0 0 0 20px;
|
|
height: calc(100vh - 320px);
|
|
}
|
|
.title-style{
|
|
span{
|
|
display: inline-block;
|
|
width: 42px;
|
|
height: 22px;
|
|
line-height: 22px;
|
|
text-align: center;
|
|
font-size: 12px;
|
|
color: #0348F3;
|
|
background-color: #CAE1FF;
|
|
border-radius: 3px;
|
|
}
|
|
}
|
|
::v-deep .el-dialog{
|
|
width: 860px !important;
|
|
.el-form-item .el-form-item__content{
|
|
width: 280px;
|
|
}
|
|
.dialog-footer{
|
|
margin-top: 15px !important;
|
|
}
|
|
}
|
|
::v-deep .el-checkbox-group{
|
|
.el-checkbox{
|
|
margin-right: 10px !important;
|
|
}
|
|
}
|
|
::v-deep .el-pagination{
|
|
margin: 24px 0 10px 0 !important
|
|
}
|
|
|
|
::v-deep .input-prepend .el-input__inner{
|
|
padding-left: 100px;
|
|
}
|
|
|
|
.row-state{
|
|
font-style: normal;
|
|
padding: 0 8px;
|
|
}
|
|
</style>
|