Browse Source

借阅管理-解除报警/借出确认/归还确认

master
xuhuajiao 3 years ago
parent
commit
a8e9c9e06d
  1. 45
      src/api/archivesManage/lendManage.js
  2. 2
      src/assets/styles/archives-manage.scss
  3. 9
      src/views/archivesManage/lendManage/components/lendArchivesList.vue
  4. 22
      src/views/archivesManage/lendManage/lendConfirm/index.vue
  5. 139
      src/views/archivesManage/lendManage/lendConfirm/module/lendDialog.vue
  6. 22
      src/views/archivesManage/lendManage/lendProcess/index.vue
  7. 37
      src/views/archivesManage/lendManage/mixins/lending.js
  8. 78
      src/views/archivesManage/lendManage/returnArchives/index.vue
  9. 1
      src/views/archivesManage/lendManage/toLend/index.vue
  10. 1
      src/views/archivesManage/lendManage/toLend/module/lendRecord.vue

45
src/api/archivesManage/lendManage.js

@ -101,5 +101,50 @@ export function FetchRemoveWaitBorrow(parameter) {
}) })
} }
// 判断借阅流程管理在线离线
export function FetchInitBorrowRule(parameter) {
return request({
url: 'api/borrow/initBorrowRule',
method: 'get',
params: parameter
})
}
// 更改借阅流程管理在线离线
export function FetchUpdateBorrowRule(parameter) {
return request({
url: 'api/borrow/updateBorrowRule',
method: 'post',
data: parameter
})
}
// 根据单据号显示标签
export function FetchReadyBorrowShowTid(parameter) {
return request({
url: 'api/borrow/readyBorrowShowTid',
method: 'post',
data: parameter
})
}
// 借出确认
export function FetchBillBorrowConfirm(parameter) {
return request({
url: 'api/borrow/billBorrowConfirm',
method: 'post',
data: parameter
})
}
// 归还确认
export function FetchArchivesReturnConfirm(parameter) {
return request({
url: 'api/borrow/archivesReturnConfirm',
method: 'post',
data: parameter
})
}
export default { } export default { }

2
src/assets/styles/archives-manage.scss

@ -518,7 +518,7 @@ $arcCyan: #0FBED9;
justify-content: space-between; justify-content: space-between;
} }
.part-packing-item{ .part-packing-item{
width: calc(100vh/2);
width: calc(100%/2);
.part-packing-title{ .part-packing-title{
padding: 0 30px; padding: 0 30px;
height: 40px; height: 40px;

9
src/views/archivesManage/lendManage/components/lendArchivesList.vue

@ -3,7 +3,6 @@
<span class="right-top-line" /> <span class="right-top-line" />
<span class="left-bottom-line" /> <span class="left-bottom-line" />
<!--表格渲染--> <!--表格渲染-->
<!-- height="calc(100vh - 355px)" -->
<el-table <el-table
ref="table" ref="table"
v-loading="tableLoading" v-loading="tableLoading"
@ -24,8 +23,6 @@
</el-table-column> </el-table-column>
<el-table-column prop="operationTime" align="center" label="操作时间" min-width="120" /> <el-table-column prop="operationTime" align="center" label="操作时间" min-width="120" />
</el-table> </el-table>
<!-- 分页 -->
<!-- <pagination /> -->
</div> </div>
</template> </template>
@ -67,8 +64,10 @@ export default {
'orderNo': this.archivesOrderNum 'orderNo': this.archivesOrderNum
} }
FetchInitArchivesByOrderNo(params).then(data => { FetchInitArchivesByOrderNo(params).then(data => {
this.tableData = data
this.tableLoading = false
if (data) {
this.tableData = data
this.tableLoading = false
}
}) })
} }
} }

22
src/views/archivesManage/lendManage/lendConfirm/index.vue

@ -10,8 +10,10 @@
<!-- height="calc(100vh - 355px)" --> <!-- height="calc(100vh - 355px)" -->
<el-table <el-table
ref="table" ref="table"
v-loading="crud.loading"
:data="crud.data" :data="crud.data"
style="min-width: 100%" style="min-width: 100%"
@select-all="selectAll"
@selection-change="crud.selectionChangeHandler" @selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler" @row-click="clickRowHandler"
@row-dblclick="handleDbClick" @row-dblclick="handleDbClick"
@ -91,6 +93,7 @@ export default {
} }
}, },
created() { created() {
this.getBorrowRule()
}, },
methods: { methods: {
selectionChangeHandler(val) { selectionChangeHandler(val) {
@ -106,6 +109,10 @@ export default {
archiveDetailDom.getBillDetails() archiveDetailDom.getBillDetails()
}) })
}, },
// table -
selectAll(val) {
this.selections = val
},
// //
handleCurrentChange(selection, row) { handleCurrentChange(selection, row) {
this.selections = selection this.selections = selection
@ -147,11 +154,16 @@ export default {
// //
handleLendBtn() { handleLendBtn() {
if (this.selections.length > 0) { if (this.selections.length > 0) {
// 线
this.$refs.lendDialogDom.table = this.selections
this.$refs.lendDialogDom.lendFormVisible = true
// 线
// this.$message.success(' ' + this.selections.length + ' ' + ' ' + '0')
if (this.lineStateVal === 'offline') {
// 线
this.$refs.lendDialogDom.lendSelections = this.selections
this.$refs.lendDialogDom.lendFormVisible = true
this.$refs.lendDialogDom.getLendTid()
} else {
// 线
const params = this.selections.map(item => item.orderNo)
this.handleConfirmLend(params, this.selections)
}
} }
} }
} }

139
src/views/archivesManage/lendManage/lendConfirm/module/lendDialog.vue

@ -1,17 +1,22 @@
<template> <template>
<div> <div>
<!-- 离线状态时 --> <!-- 离线状态时 -->
<el-dialog ref="dialogTable" title="借出" :visible.sync="lendFormVisible">
<el-dialog ref="dialogTable" title="借出" :visible.sync="lendFormVisible" :close-on-click-modal="false" @close="handleCancle">
<span class="dialog-right-top" /> <span class="dialog-right-top" />
<span class="dialog-left-bottom" /> <span class="dialog-left-bottom" />
<div class="setting-dialog"> <div class="setting-dialog">
<p style="color: #fff; margin: 0 0 20px 40px;">以下档案需要先解除电子标签警报</p> <p style="color: #fff; margin: 0 0 20px 40px;">以下档案需要先解除电子标签警报</p>
<el-table :data="table" :cell-class-name="cellWarn" height="325px">
<el-table-column type="index" label="序号" width="80" />
<el-table-column prop="categoryName" label="类型" />
<el-table-column prop="titleName" label="题名" min-width="140" />
<el-table-column prop="TID" label="TID" min-width="140" />
<el-table-column prop="warnState" label="状态" min-width="85">
<el-table :key="Math.random()" :data="table" :cell-class-name="cellWarn" height="325px">
<el-table-column type="index" label="序号" align="center" width="80" />
<el-table-column prop="tagType" label="类型" align="center">
<template slot-scope="scope">
<!-- tagType 1 案卷标签 2 盒标签 3 层架位标签 -->
<span class="clear">{{ scope.row.tagType | tidType }}</span>
</template>
</el-table-column>
<el-table-column prop="maintitle" label="题名" align="center" min-width="140" />
<el-table-column prop="tid" label="TID" align="center" min-width="140" />
<el-table-column prop="warnState" label="状态" align="center" min-width="85">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 已解除 / 未解除 / 解除失败 --> <!-- 已解除 / 未解除 / 解除失败 -->
<span class="clear">{{ scope.row.warnState }}</span> <span class="clear">{{ scope.row.warnState }}</span>
@ -19,7 +24,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary">解除警报</el-button>
<el-button v-loading="unbindWarnLoading" type="primary" :disabled="btnDisabled" @click="writeEPC">解除警报</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
@ -27,14 +32,130 @@
</template> </template>
<script> <script>
import RFID from '@/api/RFID/RFID'
import { FetchReadyBorrowShowTid } from '@/api/archivesManage/lendManage'
import { lendingCrud } from '../../mixins/lending'
export default { export default {
mixins: [lendingCrud],
data() { data() {
return { return {
lendFormVisible: false, lendFormVisible: false,
table: []
lendSelections: [],
table: [],
btnDisabled: false,
devId: 'D001',
timer: null,
flagNum: 0,
unbindWarnLoading: false,
n: 0
} }
},
mounted() {
}, },
methods: { methods: {
async fn(n) {
return new Promise(async(resolve, reject) => {
const params = { op: 'RFID_WriteEPC', sDevID: this.devId, EAS: '0', Type: this.table[n].tagType, Code: this.table[n].archivesId, Tid: this.table[n].tid }
let writeRes = await RFID.writeEPC(params)
writeRes = JSON.parse(writeRes)
console.log(writeRes)
if (writeRes.code === '0') {
this.table[n].warnState = '已解除'
this.btnDisabled = false
this.unbindWarnLoading = false
this.n = this.n + 1
if (this.n !== this.table.length) {
this.flagNum = 0
this.flagNum++
this.btnDisabled = true
this.unbindWarnLoading = true
clearTimeout(this.timer)
this.timer = setTimeout(() => {
resolve(this.writeEPC())
}, 2000)
} else {
const index = this.table.findIndex((item) => item.warnState === '解除失败')
console.log(index)
if (index === -1) {
const params = this.lendSelections.map(item => item.orderNo)
this.handleConfirmLend(params, this.lendSelections)
} else {
console.log('you')
}
}
// resolve()
} else if (writeRes.code === '-1') {
console.log('n', this.n)
console.log('flagNum', this.flagNum)
console.log('length', this.table.length)
if (this.flagNum > 3) {
this.table[n].warnState = '解除失败'
this.btnDisabled = false
this.unbindWarnLoading = false
this.n = this.n + 1
this.flagNum = 0
this.flagNum++
this.$message({
message: writeRes.message,
type: 'error'
})
}
if (this.n !== this.table.length) {
this.btnDisabled = true
this.unbindWarnLoading = true
clearTimeout(this.timer)
this.timer = setTimeout(() => {
resolve(this.writeEPC())
}, 2000)
}
// reject()
} else if (writeRes.code === '-1000') {
if (this.flagNum > 3) {
this.table[n].warnState = '解除失败'
this.btnDisabled = false
this.unbindWarnLoading = false
this.flagNum = 0
this.$message({
message: '读写器超时未响应',
type: 'error'
})
}
if (this.n !== this.table.length - 1) {
this.n = this.n + 1
this.flagNum++
this.btnDisabled = true
this.unbindWarnLoading = true
clearTimeout(this.timer)
this.timer = setTimeout(() => {
resolve(this.writeEPC())
}, 2000)
}
// reject()
}
})
},
async writeEPC() {
this.flagNum++
this.btnDisabled = true
this.unbindWarnLoading = true
this.fn(this.n)
},
getLendTid() {
const params = this.lendSelections.map(item => item.orderNo)
FetchReadyBorrowShowTid(params).then(data => {
if (data) {
this.table = data.archives
this.table.forEach(item => {
item.warnState = '未解除'
})
this.n = 0
}
})
},
handleCancle() {
this.lendFormVisible = !!this.btnDisabled
},
cellWarn({ row, columnIndex }) { cellWarn({ row, columnIndex }) {
if (row.warnState === '未解除' && columnIndex === 4) { if (row.warnState === '未解除' && columnIndex === 4) {
return 'no-clear' return 'no-clear'

22
src/views/archivesManage/lendManage/lendProcess/index.vue

@ -5,9 +5,9 @@
</div> </div>
<div class="content-container"> <div class="content-container">
<div class="state-radio"> <div class="state-radio">
<el-radio-group v-model="lineStateVal">
<el-radio label="0">在线直接完成借阅操作</el-radio>
<el-radio label="1">离线发起借阅操作后将借阅的档案放在读写器上进行识别将带有电子标签的档案的报警位进行解绑或绑定</el-radio>
<el-radio-group v-model="lineStateVal" @change="lendRuleType">
<el-radio label="online">在线直接完成借阅操作</el-radio>
<el-radio label="offline">离线发起借阅操作后将借阅的档案放在读写器上进行识别将带有电子标签的档案的报警位进行解绑或绑定</el-radio>
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
@ -15,13 +15,27 @@
</template> </template>
<script> <script>
import { FetchUpdateBorrowRule } from '@/api/archivesManage/lendManage'
import { lendingCrud } from '../mixins/lending'
export default { export default {
mixins: [lendingCrud],
data() { data() {
return { return {
lineStateVal: '0'
} }
}, },
mounted() {
this.getBorrowRule()
},
methods: { methods: {
lendRuleType(val) {
const params = val === 'online'
FetchUpdateBorrowRule(params).then(data => {
this.$message({
message: '修改借阅规则成功',
type: 'success'
})
})
}
} }
} }
</script> </script>

37
src/views/archivesManage/lendManage/mixins/lending.js

@ -1,3 +1,4 @@
import { FetchInitBorrowRule, FetchBillBorrowConfirm, FetchArchivesReturnConfirm } from '@/api/archivesManage/lendManage'
export const lendingCrud = { export const lendingCrud = {
filters: { filters: {
borrowStatus(val) { borrowStatus(val) {
@ -11,17 +12,53 @@ export const lendingCrud = {
case 4: case 4:
return '已归还' return '已归还'
} }
},
tidType(val) {
switch (val) {
case 1:
return '档案'
case 2:
return '档案盒'
case 3:
return '层架位'
}
} }
}, },
// 组件共用属性 // 组件共用属性
data() { data() {
return { return {
lineStateVal: ''
} }
}, },
// 组件共用方法 // 组件共用方法
methods: { methods: {
getBorrowRule() {
FetchInitBorrowRule().then(data => {
if (data) {
this.lineStateVal = data === 'true' ? 'online' : 'offline'
}
})
},
handleConfirmLend(params, selections) {
FetchBillBorrowConfirm(params).then(data => {
if (data === selections.length) {
this.$message.success('借阅成功 ' + data + ' 条数据' + ' ' + '借阅失败0条数据')
this.lendFormVisible = false
this.crud.refresh()
}
})
},
handleConfirmReturn(params, selections) {
FetchArchivesReturnConfirm(params).then(data => {
if (data === selections.length) {
this.$message.success('归还成功 ' + data + ' 条数据' + ' ' + '归还失败0条数据')
this.crud.refresh()
}
})
}
}, },
// 组件挂载时的共用方法 // 组件挂载时的共用方法
mounted() { mounted() {
} }
} }

78
src/views/archivesManage/lendManage/returnArchives/index.vue

@ -24,26 +24,29 @@
ref="table" ref="table"
style="width:100%" style="width:100%"
height="calc(100vh - 355px)" height="calc(100vh - 355px)"
:data="tableData"
:data="crud.data"
@selection-change="selectionChangeHandler" @selection-change="selectionChangeHandler"
@row-click="clickRowHandler" @row-click="clickRowHandler"
@row-dblclick="handleDbClick" @row-dblclick="handleDbClick"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column type="index" label="序号" align="center" width="55" /> <el-table-column type="index" label="序号" align="center" width="55" />
<el-table-column prop="docNum" align="center" label="单据号" width="160" />
<el-table-column prop="orderNo" align="center" label="单据号" width="160" />
<el-table-column prop="categoryName" align="center" label="门类名称" width="150" /> <el-table-column prop="categoryName" align="center" label="门类名称" width="150" />
<el-table-column prop="archivesID" align="center" label="档号" width="220" />
<el-table-column prop="titleName" align="center" label="题名" width="200" />
<el-table-column prop="fieldName" align="center" label="盒名称" width="140" />
<el-table-column prop="storagePath" align="center" label="存放位置" width="220" />
<el-table-column prop="archiveNo" align="center" label="档号" width="100" />
<el-table-column prop="maintitle" align="center" label="题名" width="150" />
<el-table-column prop="caseName" align="center" label="盒名称" width="100" />
<el-table-column prop="folderLocationDetails" align="center" label="存放位置" width="120" />
<el-table-column prop="borrowerName" align="center" label="借阅人" width="100" /> <el-table-column prop="borrowerName" align="center" label="借阅人" width="100" />
<el-table-column prop="borrowDays" align="center" label="借阅时间" width="180" />
<el-table-column prop="borrowGoal" align="center" label="借阅目的" width="100" />
<el-table-column prop="lendStatus" align="center" label="借阅状态" width="100">
<el-table-column prop="borrowDays" align="center" label="借阅时间" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 逾期 have-lend / 待归还 no-lend -->
<span class="cell-lend" style="width:76px">{{ scope.row.lendStatus }}</span>
<div>{{ parseTime(scope.row.borrowStart, '{y}-{m}-{d}') + ' 至 ' + parseTime(scope.row.borrowEnd, '{y}-{m}-{d}') }}</div>
</template>
</el-table-column>
<el-table-column prop="purpose" align="center" label="借阅目的" width="100" />
<el-table-column prop="borrowType" align="center" label="借阅状态" min-width="100">
<template slot-scope="scope">
<span :class="['cell-lend',scope.row.borrowType === '待归还'?'no-lend':'have-lend']" style="width:76px">{{ scope.row.borrowType }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="lendHandler" align="center" label="操作人" width="100" /> <el-table-column prop="lendHandler" align="center" label="操作人" width="100" />
@ -61,17 +64,17 @@
<script> <script>
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
import CRUD, { presenter } from '@crud/crud' import CRUD, { presenter } from '@crud/crud'
import data3 from '../data3.json'
import { lendingCrud } from '../mixins/lending'
import archiveDetail from '../components/archiveDetail' import archiveDetail from '../components/archiveDetail'
import returnDialog from './module/returnDialog' import returnDialog from './module/returnDialog'
export default { export default {
components: { pagination, archiveDetail, returnDialog }, components: { pagination, archiveDetail, returnDialog },
mixins: [presenter()],
mixins: [presenter(), lendingCrud],
cruds() { cruds() {
return CRUD({ return CRUD({
url: 'api/case/initCaseList',
url: 'api/borrow/initReturnConfirmList',
// crudMethod: caseCrudMethod, // crudMethod: caseCrudMethod,
title: '档案盒',
title: '归还确认',
optShow: { optShow: {
add: false, add: false,
edit: false, edit: false,
@ -95,14 +98,13 @@ export default {
returnAgainVisible: false returnAgainVisible: false
} }
}, },
created() {
this.getBorrowRule()
},
mounted() { mounted() {
this.getData()
this.lendSelect = this.queryOption[0].value this.lendSelect = this.queryOption[0].value
}, },
methods: { methods: {
getData() {
this.tableData = data3.rows
},
selectionChangeHandler(val) { selectionChangeHandler(val) {
this.selections = val this.selections = val
}, },
@ -115,27 +117,31 @@ export default {
// //
handleDbClick(row) { handleDbClick(row) {
// this.$refs.table.clearSelection() // this.$refs.table.clearSelection()
const archiveDetailDom = this.$refs.archiveDetailDom
const arr = data3.rows.filter(item => item.docNum === row.docNum)
archiveDetailDom.rowData = row
archiveDetailDom.tableData = arr
//
if (row.lendStatus === '待归还') {
archiveDetailDom.classLend = 'have-lend'
} else if (row.lendStatus === '逾期') {
archiveDetailDom.classLend = 'no-lend'
}
archiveDetailDom.detailVisible = true
// const archiveDetailDom = this.$refs.archiveDetailDom
// archiveDetailDom.rowData = row
// archiveDetailDom.tableData = arr
// //
// if (row.lendStatus === '') {
// archiveDetailDom.classLend = 'have-lend'
// } else if (row.lendStatus === '') {
// archiveDetailDom.classLend = 'no-lend'
// }
// archiveDetailDom.detailVisible = true
}, },
// //
handleReturn() { handleReturn() {
if (this.selections.length > 0) { if (this.selections.length > 0) {
// 线
const returnDialogDom = this.$refs.returnDialogDom
returnDialogDom.table = this.selections
returnDialogDom.returnVisible = true
// 线
// this.$message.success(' ' + this.selections.length + ' ' + ' ' + '0')
if (this.lineStateVal === 'offline') {
// 线
const returnDialogDom = this.$refs.returnDialogDom
returnDialogDom.table = this.selections
returnDialogDom.returnVisible = true
} else {
// 线
const params = this.selections.map(item => item.id)
console.log(params)
this.handleConfirmReturn(params, this.selections)
}
} }
} }
} }

1
src/views/archivesManage/lendManage/toLend/index.vue

@ -7,6 +7,7 @@
<!--表格渲染--> <!--表格渲染-->
<el-table <el-table
ref="table" ref="table"
v-loading="crud.loading"
style="min-width: 100%" style="min-width: 100%"
height="calc(100vh - 355px)" height="calc(100vh - 355px)"
:data="crud.data" :data="crud.data"

1
src/views/archivesManage/lendManage/toLend/module/lendRecord.vue

@ -213,6 +213,7 @@ export default {
this.$refs.recordFormDom.resetFields() this.$refs.recordFormDom.resetFields()
}, },
handleClose() { handleClose() {
this.lendDates = []
this.$refs.recordFormDom.resetFields() this.$refs.recordFormDom.resetFields()
this.$refs.recordFormDom.clearValidate() this.$refs.recordFormDom.clearValidate()
} }

Loading…
Cancel
Save