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.
269 lines
9.0 KiB
269 lines
9.0 KiB
<template>
|
|
<div class="lendComfirm-arcList">
|
|
<el-button class="exception-btn" size="mini" :disabled="!selections.length" @click="handleBorrowException"><svg-icon icon-class="exception" class-name="lend-handle" />异常处理</el-button>
|
|
<div class="container-wrap">
|
|
<span class="right-top-line" />
|
|
<span class="left-bottom-line" />
|
|
<!--表格渲染-->
|
|
<el-table
|
|
ref="table"
|
|
v-loading="tableLoading"
|
|
:data="tableData"
|
|
style="min-width: 100%"
|
|
@selection-change="selectionChangeHandler"
|
|
@row-click="clickRowHandler"
|
|
>
|
|
<el-table-column type="selection" align="center" width="55" />
|
|
<el-table-column type="index" label="序号" align="center" width="55" />
|
|
<el-table-column prop="categoryName" align="center" label="门类名称" min-width="120" show-overflow-tooltip />
|
|
<el-table-column prop="archiveNo" align="center" label="档号" min-width="160" show-overflow-tooltip />
|
|
<el-table-column prop="maintitle" align="center" label="题名" min-width="180" show-overflow-tooltip />
|
|
<el-table-column prop="caseName" align="center" label="盒名称" min-width="100" show-overflow-tooltip />
|
|
<el-table-column prop="folderLocationDetails" align="center" label="存放位置" min-width="300">
|
|
<template slot-scope="scope">
|
|
<div v-if="scope.row.folderLocationDetails.includes(',')">
|
|
<el-tag
|
|
v-for="(item,index) in scope.row.folderLocationDetails.split(',')"
|
|
:key="index"
|
|
:type="item"
|
|
effect="dark"
|
|
>
|
|
{{ item }}
|
|
</el-tag>
|
|
</div>
|
|
<div v-else>
|
|
<el-tag effect="dark">{{ scope.row.folderLocationDetails }}</el-tag>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="borrowType" align="center" label="借阅状态" min-width="100">
|
|
<template slot-scope="scope">
|
|
<!-- 待借阅 -->
|
|
<span :class="borrowStyle(scope.row.borrowType)" style="width:76px">{{ scope.row.borrowType | borrowStatus }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="borrowType" align="center" label="开架操作" min-width="80">
|
|
<template slot-scope="scope">
|
|
<el-button v-if="scope.row.folderLocationDetails" size="mini" type="primary" @click="openCol(scope.row.folderLocationDetails)">开架</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="createTime" align="center" label="操作时间" min-width="130">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.createTime | parseTime }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<!-- 异常处理 -->
|
|
<el-dialog title="异常处理" :visible.sync="exceptionVisible" :close-on-click-modal="false" :before-close="handleClose">
|
|
<span class="dialog-right-top" />
|
|
<span class="dialog-left-bottom" />
|
|
<div class="setting-dialog">
|
|
<div class="dialog-delt">
|
|
<p><span>确定当前档案存在异常情况?</span></p>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click.native="handleExceptionConfirm">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- 是否查看视频监控 -->
|
|
<el-dialog title="提示" :visible.sync="videoTipVisible" :close-on-click-modal="false" :before-close="handleClose">
|
|
<span class="dialog-right-top" />
|
|
<span class="dialog-left-bottom" />
|
|
<div class="setting-dialog">
|
|
<div class="dialog-delt">
|
|
<p><span>是否需要查看相关视频监控?</span></p>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click.native="handleLookVideo">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
|
|
<!-- 摄像头视频 -->
|
|
<Video ref="camera" :dialog-open.sync="open" :camera-data="cameraData" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { FetchInitArchivesByOrderNo, FetchBorrowException } from '@/api/archivesManage/lendManage'
|
|
import { lendingCrud } from '../mixins/lending'
|
|
import CallExternal from '@/api/storeManage/deviceManage/device'
|
|
import Video from './video'
|
|
import displayConfigApi from '@/api/storeManage/displayConfig'
|
|
export default {
|
|
name: 'LendArchivesList',
|
|
components: { Video },
|
|
mixins: [lendingCrud],
|
|
props: {
|
|
archivesOrderNum: {
|
|
type: String,
|
|
default: function() {
|
|
return ''
|
|
}
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
selections: [],
|
|
tableData: [],
|
|
tableLoading: false,
|
|
exceptionVisible: false,
|
|
deviceData: null,
|
|
videoTipVisible: false,
|
|
camConfigData: [],
|
|
cameraData: [],
|
|
open: false
|
|
}
|
|
},
|
|
watch: {
|
|
archivesOrderNum: function(newValue, oldValue) {
|
|
if (newValue) {
|
|
this.getArchivesTable()
|
|
}
|
|
}
|
|
},
|
|
created() {
|
|
displayConfigApi.list({ storeroomId: 'D6490DA3D4261E8C26D0E3' }).then((data) => {
|
|
if (data) {
|
|
this.camConfigData = data
|
|
}
|
|
})
|
|
},
|
|
mounted() {
|
|
this.getArchivesTable()
|
|
},
|
|
methods: {
|
|
// 档案异常处理
|
|
handleBorrowException() {
|
|
const index = this.selections.findIndex(item => item.borrowType === -1)
|
|
if (index === -1) {
|
|
this.exceptionVisible = true
|
|
} else {
|
|
this.$message.error('当前档案为异常状态,请勿重复操作!')
|
|
return
|
|
}
|
|
},
|
|
// 确认加入异常
|
|
handleExceptionConfirm() {
|
|
const params = this.selections.map(item => item.id)
|
|
FetchBorrowException(params).then(data => {
|
|
if (data === this.selections.length) {
|
|
this.$message.success('已成功加入异常!')
|
|
this.exceptionVisible = false
|
|
this.getArchivesTable()
|
|
}
|
|
})
|
|
},
|
|
// 获取借阅确认下的档案list
|
|
getArchivesTable() {
|
|
this.tableLoading = true
|
|
const params = {
|
|
'orderNo': this.archivesOrderNum
|
|
}
|
|
FetchInitArchivesByOrderNo(params).then(data => {
|
|
if (data) {
|
|
this.tableData = data
|
|
this.tableLoading = false
|
|
this.getDeviceListAll()
|
|
}
|
|
})
|
|
},
|
|
selectionChangeHandler(val) {
|
|
this.selections = val
|
|
},
|
|
clickRowHandler(row) {
|
|
this.$refs.table.toggleRowSelection(row)
|
|
},
|
|
handleClose(done) {
|
|
this.exceptionVisible = false
|
|
this.videoTipVisible = false
|
|
done()
|
|
},
|
|
// 获取密集架相关信息
|
|
getDeviceListAll() {
|
|
const params = {
|
|
sort: 'sequence,asc',
|
|
storeroomId: 'D6490DA3D4261E8C26D0E3'
|
|
}
|
|
CallExternal.getDeviceList(params).then(data => {
|
|
data.content.map(item => {
|
|
if (item.deviceTypeId.name === '密集架') { // 写死状态
|
|
this.deviceData = item
|
|
}
|
|
})
|
|
})
|
|
},
|
|
// 开架
|
|
openCol(data) {
|
|
const loactionArray = data.split(' ')
|
|
const location = data.split(' ')[loactionArray.length - 1]
|
|
const pattern = /(\d+)区(\d+)列(\d+)节(\d+)层/
|
|
const matches = location.match(pattern)
|
|
let areaNumber
|
|
let colNumber
|
|
let leNumber
|
|
let divNumber
|
|
let zyNumber
|
|
if (matches !== null) {
|
|
areaNumber = matches[1]
|
|
colNumber = matches[2]
|
|
leNumber = matches[3]
|
|
divNumber = matches[4]
|
|
}
|
|
const last_char = location.length - 1
|
|
if (location[last_char] === '右') {
|
|
zyNumber = '2'
|
|
} else {
|
|
zyNumber = '1'
|
|
}
|
|
const params = {
|
|
deviceId: this.deviceData.id,
|
|
quNo: areaNumber, // 区
|
|
colNo: colNumber, // 列
|
|
leNo: leNumber, // 节
|
|
divNo: divNumber, // 层
|
|
zyNo: zyNumber // 左右 1左 2右
|
|
}
|
|
CallExternal.FetchCallExternalOpenCol(params).then(res => {
|
|
if (res.success && res.success === '0') {
|
|
this.$message.success('开架执行成功')
|
|
this.videoTipVisible = true
|
|
} else {
|
|
this.$message.error(res.msg)
|
|
}
|
|
}).catch((error) => {
|
|
console.log(error)
|
|
this.$message.error('连接失败')
|
|
})
|
|
},
|
|
handleLookVideo() {
|
|
this.videoTipVisible = false
|
|
this.cameraData = this.camConfigData.filter((item) => { return item.divPosition.toLowerCase().includes('cam') })
|
|
this.open = true
|
|
this.$nextTick(() => {
|
|
this.$refs.camera.camConfig = this.cameraData[0]
|
|
this.$refs.camera.videoIndex = 0
|
|
this.$refs.camera.play()
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '~@/assets/styles/lend-manage.scss';
|
|
.lendComfirm-arcList{
|
|
.exception-btn{
|
|
margin: 20px 0;
|
|
.lend-handle{
|
|
margin-right: 6px;
|
|
}
|
|
}
|
|
.container-wrap{
|
|
min-height: auto;
|
|
}
|
|
}
|
|
</style>
|