Browse Source

层位架/档案入库/bug修复

master
xuhuajiao 1 year ago
parent
commit
9ef819f89d
  1. 12
      src/api/collect/collect.js
  2. BIN
      src/assets/images/archives/dah.png
  3. BIN
      src/assets/images/archives/zt-lx.png
  4. BIN
      src/assets/images/archives/zt-zx.png
  5. 12
      src/assets/styles/yxk-admin.scss
  6. 1
      src/views/archiveKeeping/caseManage/caseList/index.vue
  7. 423
      src/views/archiveKeeping/inStorage/index.vue
  8. 22
      src/views/archiveKeeping/inStorage/pendingInArchive/index.vue
  9. 291
      src/views/archiveKeeping/inStorage/pendingInCase/index.vue
  10. 482
      src/views/archiveKeeping/inStorage/pendingInCase/module/data.json
  11. 863
      src/views/archiveKeeping/inStorage/pendingInCase/module/device.json
  12. 844
      src/views/archiveKeeping/inStorage/pendingInCase/module/inDialog.vue
  13. 22
      src/views/archiveKeeping/inventoryCheck/index.vue
  14. 106
      src/views/archiveKeeping/levelManage/index.vue
  15. 22
      src/views/archiveKeeping/outStorage/index.vue
  16. 22
      src/views/archiveKeeping/storageLog/index.vue
  17. 2
      src/views/archivesManage/managementLibrary/anjuan/tableList.vue
  18. 4
      src/views/archivesManage/managementLibrary/juannei/index.vue
  19. 3
      src/views/archivesManage/managementLibrary/module/handOverForm.vue
  20. 1
      src/views/archivesManage/openInventory/index.vue
  21. 153
      src/views/collectReorganizi/externalReception/index.vue
  22. 72
      src/views/collectReorganizi/externalReception/module/detail.vue
  23. 149
      src/views/components/DeviceTree.vue

12
src/api/collect/collect.js

@ -283,6 +283,15 @@ export function FetchInitMountDetailsList(params) {
})
}
// 根据外部接收id获取详情列表
export function FetchInitExternalReceptionDetailsList(params) {
return request({
url: 'api/collect/initExternalReceptionDetailsList',
method: 'get',
params
})
}
export default {
collectAdd,
collectEdit,
@ -311,5 +320,6 @@ export default {
FetchCompleteDelArchives,
FetchRestoreArchives,
FetchBusinessFlowTitle,
FetchBecomeDocument
FetchBecomeDocument,
FetchInitExternalReceptionDetailsList
}

BIN
src/assets/images/archives/dah.png

After

Width: 46  |  Height: 46  |  Size: 2.8 KiB

BIN
src/assets/images/archives/zt-lx.png

After

Width: 19  |  Height: 18  |  Size: 747 B

BIN
src/assets/images/archives/zt-zx.png

After

Width: 19  |  Height: 18  |  Size: 805 B

12
src/assets/styles/yxk-admin.scss

@ -1386,6 +1386,18 @@ input[type ='number'] {
}
}
.iconLevel{
font-family: "iconfont" !important;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
&::before{
content: "\e675";
font-size: 14px;
@include tree_children_icon_font;
}
}
.iconClassify{
font-family: "iconfont" !important;
font-style: normal;

1
src/views/archiveKeeping/caseManage/caseList/index.vue

@ -180,7 +180,6 @@ export default {
default: 0
}
},
data() {
return {
permission: {

423
src/views/archiveKeeping/inStorage/index.vue

@ -0,0 +1,423 @@
<template>
<div class="app-container archives-container">
<div class="container-main" style="justify-content: flex-start;">
<div class="elect-cont-left">
<div class="container-left">
<span class="right-top-line" />
<span class="left-bottom-line" />
<div class="arc-left-tree">
<h3 class="arc-title arc-title-top">档案门类</h3>
<div class="tree-scroll">
<el-tree ref="categroyTree" v-loading="crud.loading" class="arc-tree arc-tree-01" :data="crud.data" :props="defaultProps" node-key="id" :expand-on-click-node="false" highlight-current @node-click="handleNodeClick">
<span slot-scope="{ node, data }" class="custom-tree-node">
<el-tooltip :content="node.label" placement="top" :enterable="false" effect="dark">
<span v-if="data.isType === 1 " class="iconFolder">
{{ data.cnName }}
</span>
</el-tooltip>
<el-tooltip :content="node.label" placement="top" :enterable="false" effect="dark">
<span v-if="data.isType === 2" class="iconArch">
{{ data.cnName }}
</span>
</el-tooltip>
<el-tooltip :content="node.label" placement="top" :enterable="false" effect="dark">
<span v-if="data.isType === 3" class="iconFile">
{{ data.cnName }}
</span>
</el-tooltip>
</span>
</el-tree>
</div>
<h3 class="arc-title arc-title-bottom">快速筛选</h3>
<el-tree
ref="classifyTree"
v-loading="classifyLoading"
class="arc-tree arc-tree-02"
:data="classifyTree"
:props="defaultClassifyProps"
node-key="id"
:expand-on-click-node="false"
highlight-current
@node-click="handleClassifyFilter"
>
<span slot-scope="{ node, data }" class="custom-tree-node">
<span v-if="data.childDictionarys || data.fondsName" class="iconClassify">
{{ data.dictionaryName || data.fondsName }}
</span>
<span v-else class="iconClassify-child">
{{ data.dictionaryName }}
</span>
</span>
</el-tree>
</div>
</div>
</div>
<!--用户数据-->
<div v-if="storageCategory.isType !== 1" class="elect-cont-right">
<div class="container-right tab-content">
<span class="right-top-line" />
<span class="left-bottom-line" />
<ul class="tab-nav">
<li :class="{'active-tab-nav': activeIndex == 0}" @click="changeActiveTab(0)">待入库档案盒<i /></li>
<li :class="{'active-tab-nav': activeIndex == 1}" @click="changeActiveTab(1)">待入库档案<i /></li>
<!-- 最右侧装饰img -->
<span class="tab-right-img" />
</ul>
<component :is="comName" :storage-category="storageCategory" />
</div>
</div>
</div>
</div>
</template>
<script>
import crudCategory from '@/api/category/category'
import { FetchDictionaryTreeByCategoryId } from '@/api/system/dict'
import CRUD, { presenter, header } from '@crud/crud'
import pendingInCase from './pendingInCase/index'
import PendingInArchive from './pendingInArchive/index'
export default {
name: 'InStorage',
components: { pendingInCase, PendingInArchive },
cruds() {
return [
CRUD({
title: '档案入库', url: 'api/category/menu',
crudMethod: { ...crudCategory },
optShow: {
add: false,
edit: false,
del: false,
download: false,
group: false
}
})
]
},
mixins: [presenter(), header()],
props: {
},
data() {
return {
defaultProps: {
children: 'children',
label: 'cnName'
},
defaultClassifyProps: {
children: 'childDictionarys' || null,
label: 'dictionaryName' || 'fondsName'
},
storageCategory: {},
smartQuery: {
'retention': null, //
'security_class': null, //
'doc_type': null, //
'medium_type': null, //
'archive_year': null, //
'fonds_no': null //
},
classifyTree: [],
classifyLoading: false,
activeIndex: 0
}
},
computed: {
comName: function() {
if (this.activeIndex === 0) {
return 'pendingInCase'
} else if (this.activeIndex === 1) {
return 'pendingInArchive'
}
return 'pendingInCase'
}
},
created() {
},
mounted() {
},
methods: {
handleYearData(data) {
this.yearChildData = data
this.classifyLoading = true
setTimeout(() => {
if (this.classifyTree[0].dictionaryName === '年度') {
this.classifyTree = this.classifyTree.slice(1)
}
if (this.yearChildData.length !== 0) {
const newYearArr = this.yearChildData.map((item, index) => {
const json = {}
json.id = index
json.dictionaryName = item
json.childDictionarys = []
return json
})
this.classifyTree.unshift({ id: -1, dictionaryName: '年度', dictionaryCode: 'archive_year', childDictionarys: newYearArr })
}
this.classifyLoading = false
}, 500)
},
filterData(data) {
return data.filter(node => {
if (node.children && node.children.length > 0) {
node.children = this.filterData(node.children) //
}
return node.isType !== 3 // isType3
})
},
//
findNode(tree, func) {
for (const node of tree) {
if (func(node)) return node
if (node.children) {
const res = this.findNode(node.children, func)
if (res) return res
}
}
return null
},
//
expandParents(node) {
node.expanded = true
if (node.parent) {
this.expandParents(node.parent)
}
},
[CRUD.HOOK.afterRefresh]() {
this.crud.data = this.filterData(this.crud.data)
this.$nextTick(() => {
let currentKey
if (localStorage.getItem('storageCategoryKey')) {
currentKey = JSON.parse(localStorage.getItem('storageCategoryKey'))
//
if (this.$refs.categroyTree.getCurrentKey(currentKey.id) == null) {
localStorage.removeItem('storageCategoryKey')
}
//
if (currentKey.isType === 1) {
if (currentKey.children.length !== 0) {
currentKey = this.findNode(currentKey.children, (node) => {
return node.isType !== 1
})
}
}
} else {
//
if (this.crud.data[0].isType === 1) {
currentKey = this.findNode(this.crud.data[0].children, (node) => {
return node.isType !== 1
})
} else {
currentKey = this.crud.data[0]
}
}
if (currentKey.id) {
//
this.$refs.categroyTree.setCurrentKey(currentKey.id)
this.$nextTick(() => {
//
const selectedKey = this.$refs.categroyTree.getCurrentNode()
if (this.$refs.categroyTree.getNode(selectedKey) && this.$refs.categroyTree.getNode(selectedKey).parent) {
this.expandParents(this.$refs.categroyTree.getNode(selectedKey).parent)
}
//
this.handleNodeClick(selectedKey)
})
}
})
},
handleNodeClick(val) {
this.smartQuery = {
'retention': null, //
'security_class': null, //
'doc_type': null, //
'medium_type': null, //
'archive_year': null, //
'fonds_no': null //
}
//
localStorage.setItem('storageCategoryKey', JSON.stringify(val))
this.storageCategory = val
if (this.storageCategory.isType !== 1) {
this.getDictionaryTreeByCategoryId(val.id)
} else {
this.classifyTree = []
}
this.$nextTick(() => {
this.handlePageList()
})
},
handlePageList() {
},
getDictionaryTreeByCategoryId(categoryId) {
this.classifyLoading = true
const params = {
'categoryId': categoryId
}
FetchDictionaryTreeByCategoryId(params).then((res) => {
let fonds
if (res.fonds.length <= 1) {
fonds = []
} else {
const parent = {}
parent.id = 0
parent.fondsName = '全宗'
parent.childDictionarys = res.fonds
fonds = parent
}
this.classifyTree = res.dictionarys.concat(fonds)
this.classifyLoading = false
}).catch(err => {
console.log(err)
})
},
handleClassifyFilter(data, node, ele) {
this.smartQuery = {
'retention': null, //
'security_class': null, //
'doc_type': null, //
'medium_type': null, //
'archive_year': null, //
'fonds_no': null //
}
if (data) {
if (node.childNodes.length === 0) {
const selectedKey = this.$refs.classifyTree.getCurrentNode()
this.treeCurrentNode = ele.$el
if (ele.$el.classList.contains('is-current')) {
this.treeCurrentNode.classList.remove('is-current')
} else {
this.treeCurrentNode.classList.add('is-current')
if (Object.keys(selectedKey).includes('fondsId')) {
this.smartQuery.fonds_no = selectedKey.fondsNo
} else {
const selectedParentVal = this.$refs.classifyTree.getNode(selectedKey).parent.data.dictionaryCode
switch (selectedParentVal) {
case 'security_class':
if (selectedKey.dictionaryCode !== 'security_class') {
this.smartQuery.security_class = selectedKey.dictionaryName
}
break
case 'retention':
if (selectedKey.dictionaryCode !== 'retention') {
this.smartQuery.retention = selectedKey.dictionaryName
}
break
case 'doc_type':
if (selectedKey.dictionaryCode !== 'doc_type') {
this.smartQuery.doc_type = selectedKey.dictionaryName
}
break
case 'medium_type':
if (selectedKey.dictionaryCode !== 'medium_type') {
this.smartQuery.medium_type = selectedKey.dictionaryName
}
break
default:
if (selectedKey.dicCode !== 'archive_year') {
this.smartQuery.archive_year = selectedKey.dictionaryName
}
}
}
}
this.$nextTick(() => {
// this.handlePageList('quickFilter')
})
}
}
},
changeActiveTab(val) {
this.activeIndex = val
}
}
}
</script>
<style lang="scss" scoped>
.elect-cont-left{
width: 276px;
padding: 0 !important;
}
.hideSidebar .elect-cont-left {
width: 265px !important;
}
[data-theme=light] .elect-cont-left .container-left {
min-height: calc(100vh - 140px);
}
[data-theme=dark] .elect-cont-left .container-left {
min-height: calc(100vh - 160px);
}
.openSidebar .elect-cont-right {
width: calc(100vw - 592px);
}
[data-theme=light] .elect-cont-right .container-right.tab-content {
min-height: calc(100vh - 200px) !important;
}
.arc-title{
position: relative;
height: 48px;
line-height: 48px;
text-align: center;
font-size: 16px;
color: #0C0E1E;
background-color: #F3F5F8;
&::after{
content: "";
position: absolute;
right: 12px;
bottom: 0;
}
}
.arc-title-top{
&::after{
width: 44px;
height: 35px;
background: url("~@/assets/images/collect/daml.png") no-repeat;
background-size: 100% 100%;
}
}
.arc-title-bottom{
&::after{
width: 41px;
height: 40px;
background: url("~@/assets/images/collect/kssx.png") no-repeat;
background-size: 100% 100%;
}
}
.arc-tree{
padding: 0 20px;
}
.arc-tree-01{
height: 400px;
overflow: hidden;
overflow-y: scroll;
}
[data-theme=dark] .arc-tree-01{
height: 370px;
}
.arc-tree-02{
height: calc(100vh - 720px);
overflow: hidden;
overflow-y: scroll;
.el-tree{
margin: 0;
}
}
::v-deep .el-tree-node__children .custom-tree-node{
font-size: 14px;
}
::v-deep .custom-tree-node{
font-size: 14px;
font-weight: normal;
}
[data-theme=light] .elect-cont-right {
padding: 15px 0 !important;
}
[data-theme=dark] .elect-cont-right {
margin-top: 0 !important;
}
</style>

22
src/views/archiveKeeping/inStorage/pendingInArchive/index.vue

@ -0,0 +1,22 @@
<template>
<div>
待入库档案
</div>
</template>
<script>
export default {
name: 'PendingInArchive',
components: {
},
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>

291
src/views/archiveKeeping/inStorage/pendingInCase/index.vue

@ -0,0 +1,291 @@
<template>
<div class="storage-main">
<div class="head-container">
<h4 class="classType">档案盒</h4>
<div class="double-click-btn"><i class="iconfont icon-zhuyi-lan" /><span>双击列表数据查看详情</span></div>
<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>
<rrOperation />
<el-button class="filter-rfid" type="success" disabled><i class="iconfont icon-duqu" />读取</el-button>
</div>
<div class="handle-container">
<el-button size="mini" :disabled="!selections.length" @click="handleIn">
<i class="iconfont icon-chaihe" />
入库
</el-button>
<el-button size="mini" :disabled="!selections.length" @click="handleHand">
<i class="iconfont icon-bendiguajie" />
人工确认
</el-button>
</div>
</div>
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
height="calc(100vh - 386px)"
@row-click="clickRowHandler"
@cell-dblclick="tableDoubleClick"
@selection-change="selectionChangeHandler"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="createTime" label="状态" align="center" width="80">
<template slot-scope="scope">
<span :class="getClassByStorageType(scope.row)">{{ scope.row.storageType | storageTypeStatus }}</span>
</template>
</el-table-column>
<el-table-column prop="depositNum" label="已装" align="center" min-width="56" />
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="150" />
<el-table-column prop="caseCode" label="盒号" :show-overflow-tooltip="true" align="center" min-width="200" />
<el-table-column prop="tid" label="电子标签" align="center" min-width="200" />
<el-table-column prop="barcode" label="条形码" align="center" min-width="140" />
<el-table-column label="存放位置" align="center" min-width="300">
<template slot-scope="scope">
<span v-if="!scope.row.folderLocationDetails">-</span>
<span v-else>
<el-tag effect="dark">{{ scope.row.folderLocationDetails }}</el-tag>
</span>
</template>
</el-table-column>
<el-table-column prop="update_time" width="175" label="操作时间" align="center">
<template slot-scope="scope">
<div>{{ scope.row.update_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<pagination v-if="crud.data.length !== 0" />
<!-- 入库对话框 -->
<inDialog ref="inDialogDom" />
</div>
</template>
<script>
import CRUD, { presenter, crud } from '@crud/crud'
// initStorageDetailes , initCasesByArchives
import { readyCollectConfirm, collectConfirm } from '@/api/archivesManage/outInStorage'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import inDialog from './module/inDialog.vue'
export default {
name: 'PendingInCase',
components: { pagination, rrOperation, inDialog },
filters: {
storageTypeStatus(val) {
switch (val) {
case 0:
return '未入'
case 1:
return '待入'
case 2:
return '已入'
case 3:
return '待出'
}
}
},
mixins: [presenter(), crud()],
cruds() {
return CRUD({
url: 'api/archivesDeposit/initCaseList',
crudMethod: { },
title: '档案盒',
optShow: {
add: false,
edit: false,
del: false,
download: false,
reset: false,
group: false
}
})
},
data() {
return {
options: [
{ value: 'caseCode', label: '盒号' },
{ value: 'caseName', label: '盒名称' },
{ value: 'tid', label: '电子标签' },
{ value: 'barcode', label: '条码' }
],
inputSelect: '',
typeValue: '',
typeInputkey: '',
selections: [],
msgFailVisible: false
}
},
created() {
this.inputSelect = this.options[0].value
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
// this.crud.query.storageType = this.selectStatus
},
clickRowHandler(row) {
this.$refs.table.toggleRowSelection(row) //
},
selectionChangeHandler(val) {
this.selections = val
},
typeInput(e) {
this.typeInputkey = this.getDescByValue(
this.inputSelect,
this.options,
'value',
'value'
)
this.crud.query[this.typeInputkey] = e
},
clearInputValue(val) {
this.inputSelect = val
this.typeValue = ''
// ,typeInputkeyform
if (this.typeInputkey) {
delete this.crud.query[this.typeInputkey]
}
},
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
},
getClassByStorageType(row) {
if (row.storageType === 0) { //
return 'row-state cancel-state'
} else if (row.storageType === 1) { //
return 'row-state ing-state'
} else if (row.storageType === 2) { //
return 'row-state end-state'
} else if (row.storageType === 3) { //
return 'row-state ing-state'
}
},
tableDoubleClick(row) {
},
//
handleIn() {
this.$refs.inDialogDom.dialogVisible = true
// const caseIds = this.selections.map(item => { return item.id })
// const index = this.selections.every((item) => item.storageType === 0)
// if (index) {
// const params = {
// caseIds: caseIds
// }
// initCasesByArchives(params).then(res => {
// this.$refs.inDialogDom.childData = res
// })
// this.$refs.inDialogDom.dialogVisible = true
// } else {
// this.$alert(',', '', {
// confirmButtonText: '',
// callback: action => {}
// })
// }
},
//
handleHand() {
if (this.selections.length > 0) {
const bool = this.selections.every(item => item.storageType === 1)
if (bool) { // ''
const params = this.selections.map(item => item.id)
readyCollectConfirm(params).then(res => {
const handDialogDom = this.$refs.handDialogDom
if (res.length === 1) {
const params = res.map(item => item.caseId)
collectConfirm(params).then(data => {
this.$message({ message: '入库成功!', type: 'success', offset: 8 })
this.crud.refresh()
})
} else if (res.length > 1) {
handDialogDom.tableData = res
this.$nextTick(() => { //
handDialogDom.$refs.table.toggleAllSelection()
})
handDialogDom.manyVisible = true
}
})
} else { //
this.$alert('当前档案盒状态不为“待入”,不可人工确认', '提示', {
confirmButtonText: '确定',
callback: action => {}
})
}
} else {
this.$message({ message: '请选择档案', type: 'warning', offset: 8 })
}
}
}
}
</script>
<style lang="scss" scoped>
.storage-main{
padding: 0 20px;
h4{
padding-left: 62px;
line-height: 46px;
background: url("~@/assets/images/archives/dah.png") no-repeat left top;
background-size: 46px 46px;
font-size: 18px;
font-weight: 500;
color: #0C0E1E;
}
.double-click-btn{
position: static;
flex: 1;
margin-left: 30px;
}
}
.head-container{
display: flex;
justify-content: space-between;
align-items: center;
margin: 20px 0 !important;
.head-search{
margin-right: 60px;
margin-bottom: 0 !important;
}
.handle-container{
display: flex;
justify-content: space-between;
align-items: center;
.crud-opts{
margin-right: 80px;
}
}
}
::v-deep .input-prepend .el-input__inner{
padding-left: 100px;
}
</style>

482
src/views/archiveKeeping/inStorage/pendingInCase/module/data.json

@ -0,0 +1,482 @@
[
{
"part_No": 1,
"direction": "左",
"borrow": 0,
"position": "1-1-1-1-1",
"row_No": 1,
"total": 12
},
{
"part_No": 1,
"total": 0,
"position": "1-1-1-1-2",
"borrow": 0,
"row_No": 1,
"direction": "右"
},
{
"part_No": 1,
"total": 0,
"position": "1-1-1-2-1",
"row_No": 2,
"direction": "左",
"borrow": 0
},
{
"part_No": 1,
"total": 0,
"row_No": 2,
"position": "1-1-1-2-2",
"borrow": 0,
"direction": "右"
},
{
"part_No": 1,
"total": 0,
"position": "1-1-1-3-1",
"row_No": 3,
"direction": "左",
"borrow": 0
},
{
"part_No": 1,
"total": 0,
"row_No": 3,
"borrow": 0,
"direction": "右",
"position": "1-1-1-3-2"
},
{
"part_No": 1,
"total": 0,
"direction": "左",
"borrow": 0,
"position": "1-1-1-4-1",
"row_No": 4
},
{
"part_No": 1,
"total": 0,
"borrow": 0,
"direction": "右",
"row_No": 4,
"position": "1-1-1-4-2"
},
{
"part_No": 1,
"total": 0,
"direction": "左",
"borrow": 0,
"position": "1-1-1-5-1",
"row_No": 5
},
{
"part_No": 1,
"total": 0,
"borrow": 0,
"position": "1-1-1-5-2",
"direction": "右",
"row_No": 5
},
{
"part_No": 1,
"total": 0,
"direction": "左",
"borrow": 0,
"position": "1-1-1-6-1",
"row_No": 6
},
{
"part_No": 1,
"total": 0,
"borrow": 0,
"row_No": 6,
"direction": "右",
"position": "1-1-1-6-2"
},
{
"total": 0,
"part_No": 2,
"position": "1-1-2-1-1",
"direction": "左",
"borrow": 0,
"row_No": 1
},
{
"total": 0,
"part_No": 2,
"position": "1-1-2-1-2",
"borrow": 0,
"row_No": 1,
"direction": "右"
},
{
"total": 0,
"part_No": 2,
"position": "1-1-2-2-1",
"row_No": 2,
"direction": "左",
"borrow": 0
},
{
"position": "1-1-2-2-2",
"total": 0,
"part_No": 2,
"row_No": 2,
"borrow": 0,
"direction": "右"
},
{
"position": "1-1-2-3-1",
"total": 0,
"part_No": 2,
"row_No": 3,
"direction": "左",
"borrow": 0
},
{
"position": "1-1-2-3-2",
"total": 0,
"part_No": 2,
"row_No": 3,
"borrow": 0,
"direction": "右"
},
{
"position": "1-1-2-4-1",
"total": 0,
"part_No": 2,
"direction": "左",
"borrow": 0,
"row_No": 4
},
{
"position": "1-1-2-4-2",
"total": 0,
"part_No": 2,
"borrow": 0,
"direction": "右",
"row_No": 4
},
{
"position": "1-1-2-5-1",
"total": 0,
"part_No": 2,
"direction": "左",
"borrow": 0,
"row_No": 5
},
{
"total": 0,
"position": "1-1-2-5-2",
"part_No": 2,
"borrow": 0,
"direction": "右",
"row_No": 5
},
{
"total": 0,
"position": "1-1-2-6-1",
"part_No": 2,
"direction": "左",
"borrow": 0,
"row_No": 6
},
{
"total": 0,
"part_No": 2,
"borrow": 0,
"position": "1-1-2-6-2",
"row_No": 6,
"direction": "右"
},
{
"part_No": 3,
"total": 0,
"position": "1-1-3-1-1",
"direction": "左",
"borrow": 0,
"row_No": 1
},
{
"position": "1-1-3-1-2",
"part_No": 3,
"total": 0,
"borrow": 0,
"row_No": 1,
"direction": "右"
},
{
"position": "1-1-3-2-1",
"part_No": 3,
"total": 0,
"row_No": 2,
"direction": "左",
"borrow": 0
},
{
"part_No": 3,
"total": 0,
"position": "1-1-3-2-2",
"row_No": 2,
"borrow": 0,
"direction": "右"
},
{
"part_No": 3,
"total": 0,
"position": "1-1-3-3-1",
"row_No": 3,
"direction": "左",
"borrow": 0
},
{
"position": "1-1-3-3-2",
"part_No": 3,
"total": 0,
"row_No": 3,
"borrow": 0,
"direction": "右"
},
{
"position": "1-1-3-4-1",
"part_No": 3,
"total": 0,
"direction": "左",
"borrow": 0,
"row_No": 4
},
{
"position": "1-1-3-4-2",
"part_No": 3,
"total": 0,
"borrow": 0,
"direction": "右",
"row_No": 4
},
{
"position": "1-1-3-5-1",
"part_No": 3,
"total": 0,
"direction": "左",
"borrow": 0,
"row_No": 5
},
{
"part_No": 3,
"total": 0,
"borrow": 0,
"direction": "右",
"position": "1-1-3-5-2",
"row_No": 5
},
{
"part_No": 3,
"total": 0,
"direction": "左",
"borrow": 0,
"row_No": 6,
"position": "1-1-3-6-1"
},
{
"part_No": 3,
"total": 0,
"borrow": 0,
"row_No": 6,
"direction": "右",
"position": "1-1-3-6-2"
},
{
"total": 0,
"position": "1-1-4-1-1",
"part_No": 4,
"direction": "左",
"borrow": 0,
"row_No": 1
},
{
"total": 0,
"position": "1-1-4-1-2",
"part_No": 4,
"borrow": 0,
"row_No": 1,
"direction": "右"
},
{
"total": 0,
"position": "1-1-4-2-1",
"part_No": 4,
"row_No": 2,
"direction": "左",
"borrow": 0
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-2-2",
"row_No": 2,
"borrow": 0,
"direction": "右"
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-3-1",
"row_No": 3,
"direction": "左",
"borrow": 0
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-3-2",
"row_No": 3,
"borrow": 0,
"direction": "右"
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-4-1",
"direction": "左",
"borrow": 0,
"row_No": 4
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-4-2",
"borrow": 0,
"direction": "右",
"row_No": 4
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-5-1",
"direction": "左",
"borrow": 0,
"row_No": 5
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-5-2",
"borrow": 0,
"direction": "右",
"row_No": 5
},
{
"total": 0,
"part_No": 4,
"position": "1-1-4-6-1",
"direction": "左",
"borrow": 0,
"row_No": 6
},
{
"total": 0,
"part_No": 4,
"borrow": 0,
"position": "1-1-4-6-2",
"row_No": 6,
"direction": "右"
},
{
"total": 0,
"part_No": 5,
"position": "1-1-5-1-1",
"direction": "左",
"borrow": 0,
"row_No": 1
},
{
"total": 0,
"position": "1-1-5-1-2",
"part_No": 5,
"borrow": 0,
"row_No": 1,
"direction": "右"
},
{
"total": 0,
"position": "1-1-5-2-1",
"part_No": 5,
"row_No": 2,
"direction": "左",
"borrow": 0
},
{
"total": 0,
"part_No": 5,
"position": "1-1-5-2-2",
"row_No": 2,
"borrow": 0,
"direction": "右"
},
{
"total": 0,
"part_No": 5,
"position": "1-1-5-3-1",
"row_No": 3,
"direction": "左",
"borrow": 0
},
{
"total": 0,
"part_No": 5,
"row_No": 3,
"borrow": 0,
"position": "1-1-5-3-2",
"direction": "右"
},
{
"total": 0,
"part_No": 5,
"direction": "左",
"borrow": 0,
"position": "1-1-5-4-1",
"row_No": 4
},
{
"total": 0,
"part_No": 5,
"borrow": 0,
"position": "1-1-5-4-2",
"direction": "右",
"row_No": 4
},
{
"total": 0,
"part_No": 5,
"direction": "左",
"borrow": 0,
"position": "1-1-5-5-1",
"row_No": 5
},
{
"total": 0,
"part_No": 5,
"position": "1-1-5-5-2",
"borrow": 0,
"direction": "右",
"row_No": 5
},
{
"total": 0,
"part_No": 5,
"position": "1-1-5-6-1",
"direction": "左",
"borrow": 0,
"row_No": 6
},
{
"total": 0,
"part_No": 5,
"position": "1-1-5-6-2",
"borrow": 0,
"row_No": 6,
"direction": "右"
}
]

863
src/views/archiveKeeping/inStorage/pendingInCase/module/device.json

@ -0,0 +1,863 @@
{
"content": [
{
"createBy": "admin",
"updateBy": null,
"createTime": 1658472050000,
"updateTime": 1687661822000,
"id": "2B7D289AE25FF270A1D135",
"supplierId": {
"id": "E6FE9637400AD8410FC0AA",
"name": "其他",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 4,
"create_by": "system",
"update_by": "system",
"create_time": 1657079179000,
"update_time": 1657079183000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "65D1886B0F864291766421",
"name": "通道门",
"create_by": "system",
"update_by": "system",
"create_time": 1657499357000,
"update_time": 1657499359000
},
"deviceSpecParamId": null,
"deviceId": "tdm_zy",
"deviceName": "5F_档案室_通道门",
"deviceIp": null,
"devicePort": null,
"deviceState": 1,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 15,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1659687364000,
"updateTime": 1687664379000,
"id": "0A722ED186BC597B006304",
"supplierId": {
"id": "E6FE9637400AD8410FC0AA",
"name": "其他",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 4,
"create_by": "system",
"update_by": "system",
"create_time": 1657079179000,
"update_time": 1657079183000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "E58C8D7C896BCB9A408A78",
"name": "空气质量检测设备",
"create_by": "system",
"update_by": "system",
"create_time": 1657499678000,
"update_time": 1657499683000
},
"deviceSpecParamId": {
"id": "5A7C18F3C58C069AF00F2E",
"deviceInfoId": "0A722ED186BC597B006304",
"displayConfigId": "DB6837B02C46E64B729934",
"paramId": "jt01#S3S01_014",
"paramName": "PM10",
"unit": "ug/m3",
"macAddress": null,
"sequence": 1,
"create_by": "admin",
"update_by": "admin",
"create_time": 1686038481000,
"update_time": 1686038543000
},
"deviceId": "jt01#S3S01",
"deviceName": "5F_档案库_空气质量检测仪",
"deviceIp": "192.168.1.100",
"devicePort": 5000,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 21,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1661392999000,
"updateTime": 1687662524000,
"id": "B4783D85F1A2F2B9883BF0",
"supplierId": {
"id": "E20621315E09169B0902AC",
"name": "计通",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 2,
"create_by": "system",
"update_by": "system",
"create_time": 1657079062000,
"update_time": 1657079067000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7882487E0C15304A3758AF",
"name": "温湿度感应器",
"create_by": "system",
"update_by": "system",
"create_time": 1657499596000,
"update_time": 1657499600000
},
"deviceSpecParamId": {
"id": "76AE0750B3D9C2BAC97288",
"deviceInfoId": "B4783D85F1A2F2B9883BF0",
"displayConfigId": "EEAB8C01EAA82CBCD311BF",
"paramId": "jt01#K3801_002",
"paramName": "湿度",
"unit": "%",
"macAddress": null,
"sequence": 1,
"create_by": "admin",
"update_by": "admin",
"create_time": 1686038788000,
"update_time": 1686038831000
},
"deviceId": "jt01#K3801",
"deviceName": "5F_档案库_1#温湿度",
"deviceIp": "192.168.1.100",
"devicePort": 5000,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 32,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1661393058000,
"updateTime": 1687663052000,
"id": "0989E8AF376F4A82095325",
"supplierId": {
"id": "E20621315E09169B0902AC",
"name": "计通",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 2,
"create_by": "system",
"update_by": "system",
"create_time": 1657079062000,
"update_time": 1657079067000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7882487E0C15304A3758AF",
"name": "温湿度感应器",
"create_by": "system",
"update_by": "system",
"create_time": 1657499596000,
"update_time": 1657499600000
},
"deviceSpecParamId": {
"id": "CFBE03FFC856A4D65482FA",
"deviceInfoId": "0989E8AF376F4A82095325",
"displayConfigId": "8489BC76E1C0FF48404C16",
"paramId": "jt01#KJG01_017",
"paramName": "湿度",
"unit": "%",
"macAddress": null,
"sequence": 1,
"create_by": "admin",
"update_by": "admin",
"create_time": 1686039245000,
"update_time": 1686039335000
},
"deviceId": "jt01#KJG01",
"deviceName": "5F_档案库_2#温湿度",
"deviceIp": "192.168.1.100",
"devicePort": 5000,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 33,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1661393273000,
"updateTime": 1687663152000,
"id": "723978C29D3CCA74C4448E",
"supplierId": {
"id": "E20621315E09169B0902AC",
"name": "计通",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 2,
"create_by": "system",
"update_by": "system",
"create_time": 1657079062000,
"update_time": 1657079067000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7882487E0C15304A3758AF",
"name": "温湿度感应器",
"create_by": "system",
"update_by": "system",
"create_time": 1657499596000,
"update_time": 1657499600000
},
"deviceSpecParamId": {
"id": "9F04D8C9E67EA71632B44B",
"deviceInfoId": "723978C29D3CCA74C4448E",
"displayConfigId": "552C09D4CF5354315A2806",
"paramId": "jt01#KJG02_017",
"paramName": "湿度",
"unit": "%",
"macAddress": null,
"sequence": 1,
"create_by": "admin",
"update_by": "admin",
"create_time": 1686039309000,
"update_time": 1686039346000
},
"deviceId": "jt01#KJG02",
"deviceName": "5F_档案库_3#温湿度",
"deviceIp": "192.168.1.100",
"devicePort": 5000,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 34,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1661393300000,
"updateTime": 1687663300000,
"id": "42BF41E017A3AC1DC898B5",
"supplierId": {
"id": "E20621315E09169B0902AC",
"name": "计通",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 2,
"create_by": "system",
"update_by": "system",
"create_time": 1657079062000,
"update_time": 1657079067000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7882487E0C15304A3758AF",
"name": "温湿度感应器",
"create_by": "system",
"update_by": "system",
"create_time": 1657499596000,
"update_time": 1657499600000
},
"deviceSpecParamId": {
"id": "50CC6D46D341D686D48B4E",
"deviceInfoId": "42BF41E017A3AC1DC898B5",
"displayConfigId": "9B759A60E7656DCD6C7DF9",
"paramId": "jt01#K3802_002",
"paramName": "湿度",
"unit": "%",
"macAddress": null,
"sequence": 1,
"create_by": "admin",
"update_by": "admin",
"create_time": 1686039020000,
"update_time": 1686039052000
},
"deviceId": "jt01#K3802",
"deviceName": "5F_档案库_4#温湿度",
"deviceIp": "192.168.1.100",
"devicePort": 5000,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 35,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1661409034000,
"updateTime": 1687664660000,
"id": "DDAF09DDD05ED8ACF9928E",
"supplierId": {
"id": "3D9732A0F3615E925C634D",
"name": "金虎",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 1,
"create_by": "system",
"update_by": "system",
"create_time": 1657079102000,
"update_time": 1657079106000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "DD656054BE3D1DF1E2F1FC",
"name": "密集架",
"create_by": "system",
"update_by": "system",
"create_time": 1657499126000,
"update_time": 1657499131000
},
"deviceSpecParamId": null,
"deviceId": null,
"deviceName": "5F_档案库_密集架",
"deviceIp": "192.168.1.110",
"devicePort": 16000,
"deviceState": 2,
"rowNo": 6,
"areaNo": 1,
"sumColumnNo": 10,
"firstColumnNo": 1,
"partNo": 5,
"storeroomCode": "12345678",
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": true,
"sequence": 43,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1663299051000,
"updateTime": 1663299192000,
"id": "788221B908CA2970C4C94A",
"supplierId": {
"id": "E20621315E09169B0902AC",
"name": "计通",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 2,
"create_by": "system",
"update_by": "system",
"create_time": 1657079062000,
"update_time": 1657079067000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "250AE644EC43E4EC954A81",
"name": "漏水传感器",
"create_by": "system",
"update_by": "system",
"create_time": 1657499520000,
"update_time": 1657499523000
},
"deviceSpecParamId": null,
"deviceId": "jt01#K6S01",
"deviceName": "5F_档案库_1#漏水检测",
"deviceIp": "192.168.1.100",
"devicePort": 5000,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 46,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1686035607000,
"updateTime": 1686035607000,
"id": "99BBE9D4B6AF70049CFEBE",
"supplierId": {
"id": "1F490CCC971C3BC20598DB",
"name": "天地伟业",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 5,
"create_by": "zy",
"update_by": "zy",
"create_time": 1661330252000,
"update_time": 1661330255000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7305DE3D273B0CAC079538",
"name": "摄像头",
"create_by": "system",
"update_by": "system",
"create_time": 1657499414000,
"update_time": 1657499419000
},
"deviceSpecParamId": null,
"deviceId": null,
"deviceName": "5F_档案库_1#摄像头",
"deviceIp": "192.168.1.10",
"devicePort": 554,
"deviceState": 1,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": "admin",
"devicePassword": "hj12345678",
"cupboardNo": null,
"videoRoute": "5",
"isNotice": false,
"sequence": 48,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1686036038000,
"updateTime": 1686036038000,
"id": "6EA5FBA7ED5CB960777D0B",
"supplierId": {
"id": "1F490CCC971C3BC20598DB",
"name": "天地伟业",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 5,
"create_by": "zy",
"update_by": "zy",
"create_time": 1661330252000,
"update_time": 1661330255000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7305DE3D273B0CAC079538",
"name": "摄像头",
"create_by": "system",
"update_by": "system",
"create_time": 1657499414000,
"update_time": 1657499419000
},
"deviceSpecParamId": null,
"deviceId": null,
"deviceName": "5F_档案库_2#摄像头",
"deviceIp": "192.168.1.10",
"devicePort": 554,
"deviceState": 1,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": "admin",
"devicePassword": "hj12345678",
"cupboardNo": null,
"videoRoute": "7",
"isNotice": false,
"sequence": 49,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1686037147000,
"updateTime": 1686037147000,
"id": "D6DCD1AF05611A6B21C51F",
"supplierId": {
"id": "1F490CCC971C3BC20598DB",
"name": "天地伟业",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 5,
"create_by": "zy",
"update_by": "zy",
"create_time": 1661330252000,
"update_time": 1661330255000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7305DE3D273B0CAC079538",
"name": "摄像头",
"create_by": "system",
"update_by": "system",
"create_time": 1657499414000,
"update_time": 1657499419000
},
"deviceSpecParamId": null,
"deviceId": null,
"deviceName": "5F_档案库_3#摄像头",
"deviceIp": "192.168.1.10",
"devicePort": 554,
"deviceState": 1,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": "admin",
"devicePassword": "hj12345678",
"cupboardNo": null,
"videoRoute": "6",
"isNotice": false,
"sequence": 50,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1686037167000,
"updateTime": 1686037167000,
"id": "CE63436917392CCAEB3A5B",
"supplierId": {
"id": "1F490CCC971C3BC20598DB",
"name": "天地伟业",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 5,
"create_by": "zy",
"update_by": "zy",
"create_time": 1661330252000,
"update_time": 1661330255000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "7305DE3D273B0CAC079538",
"name": "摄像头",
"create_by": "system",
"update_by": "system",
"create_time": 1657499414000,
"update_time": 1657499419000
},
"deviceSpecParamId": null,
"deviceId": null,
"deviceName": "5F_档案库_4#摄像头",
"deviceIp": "192.168.1.10",
"devicePort": 554,
"deviceState": 1,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": "admin",
"devicePassword": "hj12345678",
"cupboardNo": null,
"videoRoute": "2",
"isNotice": false,
"sequence": 51,
"isLinkage": null,
"isCallback": null
},
{
"createBy": "admin",
"updateBy": null,
"createTime": 1695632924000,
"updateTime": 1695633116000,
"id": "75DC31C9D45D532E4EB443",
"supplierId": {
"id": "E20621315E09169B0902AC",
"name": "计通",
"remark": null,
"phone": null,
"deviceModel": "设备型号",
"sequence": 2,
"create_by": "system",
"update_by": "system",
"create_time": 1657079062000,
"update_time": 1657079067000
},
"storeroomId": {
"id": "D6490DA3D4261E8C26D0E3",
"name": "5F 档案库",
"pid": "9BD20FDB985472600B5B35",
"remark": "5F 档案库",
"sort": 1,
"children": null,
"create_by": "System",
"update_by": "admin",
"create_time": 1656937675000,
"update_time": 1687660503000
},
"deviceTypeId": {
"id": "E2767FEACA9CE0E3B16B89",
"name": "桌面式RFID读写器",
"create_by": "system",
"update_by": "system",
"create_time": 1657499723000,
"update_time": 1657499726000
},
"deviceSpecParamId": {
"id": "17B78C73B8DA4A97BA1372",
"deviceInfoId": "75DC31C9D45D532E4EB443",
"displayConfigId": null,
"paramId": null,
"paramName": null,
"unit": null,
"macAddress": "08-26-AE-34-06-1C",
"sequence": null,
"create_by": "admin",
"update_by": "admin",
"create_time": 1695633116000,
"update_time": 1695633116000
},
"deviceId": "D002",
"deviceName": "D002",
"deviceIp": "47.98.148.152",
"devicePort": 8057,
"deviceState": 2,
"rowNo": null,
"areaNo": null,
"sumColumnNo": null,
"firstColumnNo": null,
"partNo": null,
"storeroomCode": null,
"columnRowNo": null,
"deviceAccount": null,
"devicePassword": null,
"cupboardNo": null,
"videoRoute": null,
"isNotice": false,
"sequence": 56,
"isLinkage": null,
"isCallback": null
}
],
"totalElements": 13
}

844
src/views/archiveKeeping/inStorage/pendingInCase/module/inDialog.vue

@ -0,0 +1,844 @@
<template>
<div>
<!-- 入库状态下 -->
<el-dialog title="入库" class="in-dialog" :visible.sync="dialogVisible" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" @close="handleClose" @open="open">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<div class="content">
<!-- 左侧 -->
<div class="content-left">
<!--树状结构-->
<!-- @nodeClick="handleNodeClick" -->
<device-tree ref="deviceTree" />
</div>
<!-- 右侧 -->
<div class="content-right">
<!-- <button @click="test">测试</button> -->
<!-- 密集架 -->
<ul v-if="cnName==='密集架'">
<li v-for="(eItem,index) in mijiChild" :key="eItem.id" class="box">
<div class="selected-header">
<div class="selected-left">
<p class="case-name">已选档案</p>
<span class="selected-num">数量<br><i>{{ childData.length }}</i></span>
</div>
<ul class="selected-right">
<li v-for="item in childData" :key="item.id">
<i></i><span>{{ item.caseName }}</span>
</li>
</ul>
</div>
<div class="frame-content">
<div class="location-header">
<div class="location-txt">选择位置<p>库房A-库区A <span>密集架</span> 设备A</p></div>
<el-select v-model="colValue" placeholder="请选择" style="width: 80px;">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div class="cabinet-main">
<!-- 无库房当前列数据时 - 左边 -->
<div v-if="deviceData" class="cabinet-num row-left-num">
<span v-for="(item,index) in rowNum" :key="index" :style="heightStyle"><i>{{ item }}</i></span>
</div>
<div v-if="deviceData" class="cabinet-num part-left-num">
<span v-for="(item,index) in partLeftNum" :key="index" :style="widhtStyle">{{ item }}</span>
</div>
<div v-if="deviceData" style="position:absolute; left:0; bottom:0; display: flex; font-size: 12px; color: #fff;">
<span style="display:block; margin-top: -12px"></span>
<span style="display:block; margin-top: -5px">/</span>
<span style="display:block; "></span>
</div>
<ul v-if="sortLeft.length === 0" class="cabinet-row">
<li v-for="(item,i) in totalPartRowNum" :key="i" class="cabinet-cell" :style="cellStyle" />
</ul>
<ul v-else class="cabinet-row">
<li v-for="(item,index) in sortLeft" :key="index" class="cabinet-cell" :style="cellStyle">
<!-- <div v-if="item.borrow === 0 && item.total === 0" style="font-size:12px">
{{ item.part_No + '节' + item.row_No + '层' }}
</div> -->
<!-- 部分借出 -->
<div v-if="item.borrow !== 0 && item.total - item.borrow !== 0" class="out-part">
<span>{{ item.borrow }}</span>
</div>
<!-- 部分在库 -->
<div v-if="item.borrow !== 0 && item.total - item.borrow !== 0" class="in-part">
<span>{{ item.total - item.borrow }}</span>
</div>
<!-- 全部借出 -->
<div v-if="item.borrow !== 0 && item.total - item.borrow === 0" class="out-all">
<span>{{ item.borrow }}</span>
</div>
<!-- 全部在库 -->
<div v-if="item.borrow === 0 && item.total - item.borrow !== 0" class="in-all">
<span>{{ item.total - item.borrow }}</span>
</div>
</li>
</ul>
<div :class="['cabinet-panel', isFixed ? 'fixed-panel' : '']" />
<!-- 无库房当前列数据时 - 右边 -->
<ul v-if="sortLeft.length === 0" class="cabinet-row right-cabinet">
<ul v-for="(item,i) in totalPartRowNum" :key="i" class="cabinet-cell" :style="cellStyle" />
</ul>
<ul v-else class="cabinet-row right-cabinet">
<li v-for="(item,index) in sortRight" :key="index" class="cabinet-cell" :style="cellStyle">
<!-- <div v-if="item.borrow === 0 && item.total === 0" style="font-size:12px">
{{ item.part_No + '节' + item.row_No + '层' }}
</div> -->
<!-- 部分借出 -->
<div v-if="item.borrow !== 0 && item.total - item.borrow !== 0" class="out-part">
<span>{{ item.borrow }}</span>
</div>
<!-- 部分在库 -->
<div v-if="item.borrow !== 0 && item.total - item.borrow !== 0" class="in-part">
<span>{{ item.total - item.borrow }}</span>
</div>
<!-- 全部借出 -->
<div v-if="item.borrow !== 0 && item.total - item.borrow !== 0" class="out-all">
<span>{{ item.borrow }}</span>
</div>
<!-- 全部在库 -->
<div v-if="item.borrow === 0 && item.total - item.borrow !== 0" class="in-all">
<span>{{ item.total - item.borrow }}</span>
</div>
</li>
</ul>
<div v-if="deviceData" class="cabinet-num row-right-num">
<span v-for="(item,index) in rowNum" :key="index" :style="heightStyle"><i>{{ item }}</i></span>
</div>
<div v-if="deviceData" class="cabinet-num part-right-num">
<span v-for="(item,index) in partRightNum" :key="index" :style="widhtStyle">{{ item }}</span>
</div>
<div v-if="deviceData" style="position:absolute; right:0; bottom:0; display: flex; font-size: 12px; color: #fff;">
<span style="display:block; "></span>
<span style="display:block; margin-top: -5px">\</span>
<span style="display:block; margin-top: -12px"></span>
</div>
</div>
<!-- <div class="frame-item">
<span>区号</span>
<el-input v-model="fieldNum" disabled type="number" class="filter-item" />
</div>
<div class="frame-item item-line">
<span></span>
<el-select v-model="mijiChild[index].colNum" class="filter-item" style="width: 86px;" @change="selectChange(index,'col')">
<el-option v-for="item in columnOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="frame-item item-line">
<span></span>
<el-select v-model="mijiChild[index].sectionNum" class="filter-item" style="width: 86px;" :disabled="mijiChild[index].colNum === ''" @change="selectChange(index)">
<el-option v-for="item in partOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="frame-item item-line">
<span></span>
<el-select v-model="mijiChild[index].levelNum" class="filter-item" style="width: 86px;" :disabled="mijiChild[index].colNum === ''||mijiChild[index].sectionNum === ''" @change="selectChange(index)">
<el-option v-for="item in rowOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="frame-item item-line">
<span>方向</span>
<el-select v-model="mijiChild[index].direction" class="filter-item" style="width: 86px;" :disabled="mijiChild[index].colNum === ''||mijiChild[index].sectionNum === ''||mijiChild[index].levelNum === ''" @change="selectChange(index)">
<el-option v-for="item in directionOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="frame-item state-btn">
<div v-show="btnChecked[index]===1" type="primary" class="el-icon-refresh icon-style show" />
<div v-show="btnChecked[index]===2" type="success" style="background:#1AAF91;border:none" class="el-icon-check icon-style show" />
<div v-show="btnChecked[index]===3" style="background:#F65163;border:none" class="el-icon-close icon-style show" />
</div> -->
</div>
<div>
<p v-show="btnChecked[index]===2" class="success-msg">
<i class="iconfont icon-tishichenggong" />
<span class="success-text">位置已核对成功,层位名称{{ fieldNum }}{{ mijiChild[index].colNum }}{{ mijiChild[index].sectionNum }}{{ mijiChild[index].levelNum }}{{ (mijiChild[index].direction==='1'? '左边':'')||(mijiChild[index].direction==='2'?'右边':'') }}</span>
</p>
<p v-show="btnChecked[index]===3" class="fail-msg">
<i class="iconfont icon-tishijinggao" />
<span>当前位置已被占用</span>
</p>
</div>
</li>
<li style="text-align:center;padding:20px 0">
<el-button type="primary" :loading="crud.downloadLoading" :disabled="!(btnChecked.every(item=>item===2))" class="btn-save" @click="handleSave">保存</el-button>
</li>
<!-- <li style="text-align:center;padding:20px 0"><el-button type="primary" class="btn-save" @click="handleSave">保存</el-button></li> -->
</ul>
<!-- 回转柜 -->
<ul v-if="cnName==='回转柜'">
<li v-for="(eItem, index) in childData" :key="eItem.id" class="box">
<p class="case-name">盒名称{{ eItem.caseName }}</p>
<div class="frame-content head-container">
<div class="frame-item">
<span>柜号</span>
<el-input v-model="fieldNum" disabled type="number" class="filter-item" />
</div>
<div class="frame-item item-line">
<span></span>
<el-select v-model="childData[index].cabLevel" class="filter-item" style="width: 86px;" @change="selectChange(index)">
<el-option v-for="item in rowOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="frame-item item-line">
<span></span>
<el-select v-model="childData[index].cabCol" class="filter-item" style="width: 86px;" @change="selectChange(index)">
<el-option v-for="item in columnOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="state-btn" style="padding-right:32px;margin-bottom:14px">
<div v-show="btnChecked[index]===1" type="primary" class="el-icon-refresh icon-style show" />
<div v-show="btnChecked[index]===2" type="success" style="background:#1AAF91;border:none" class="el-icon-check icon-style show" />
<div v-show="btnChecked[index]===3" style="background:#F65163;border:none" class="el-icon-close icon-style show" />
</div>
</div>
<div>
<p v-show="btnChecked[index]===2" class="success-msg">
<i class="iconfont icon-tishichenggong" />
<span class="success-text">位置已核对成功,层位名称{{ fieldNum }}{{ childData[index].cabLevel }}{{ childData[index].cabCol }}</span>
</p>
<p v-show="btnChecked[index]===3" class="fail-msg">
<i class="iconfont icon-tishijinggao" />
<span>当前位置已被占用</span>
</p>
</div>
</li>
<li style="text-align:center;padding:20px 0">
<el-button type="primary" :disabled="!(btnChecked.every(item=>item===2))" class="btn-save" @click="handleSave">保存</el-button>
</li>
</ul>
</div>
</div>
</div>
</el-dialog>
<!-- 入库成功 提醒 -->
<el-dialog ref="sucDialog" class="suc-dialog" title="提示" :visible.sync="singleVisible">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<p>入库成功</p>
<p style="color:#f00;margin:10px 0;display:block">提示如果当前设备不在线或者未勾选联动操作请人工完成上架操作</p>
</div>
</el-dialog>
</div>
</template>
<script>
import DeviceTree from '@/views/components/DeviceTree'
import { isOccupy, collect } from '@/api/archivesManage/outInStorage'
import { getDesecabinetById, getRotarycabinetById } from '@/api/storeManage/deviceManage/device'
import { crud } from '@crud/crud'
// import CallExternal from '@/api/storeManage/deviceManage/device'
import dataJson from './data.json'
import deviceJson from './device.json'
// import qs from 'qs'
const data = [
{
'id': '02877E5A6559BEDE24B227',
'caseName': 'ZL-2023-1',
'caseType': 1,
'tid': null,
'barcode': null,
'shelfId': null,
'folderLocation': null,
'folderLocationDetails': null,
'depositNum': 1,
'storageType': 0,
'storageTime': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1695628425000,
'update_time': 1702971551000
},
{
'id': '4C4EC2D8AA76E915D405C1',
'caseName': 'EP02-D-WS.W-2009-001',
'caseType': 2,
'tid': null,
'barcode': null,
'shelfId': null,
'folderLocation': null,
'folderLocationDetails': null,
'depositNum': 4,
'storageType': 0,
'storageTime': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1695628347000,
'update_time': 1705479582000
},
{
'id': '286AF1A9534007E4A2603E',
'caseName': '20240122测试档案盒',
'caseType': 2,
'tid': null,
'barcode': null,
'shelfId': null,
'folderLocation': null,
'folderLocationDetails': null,
'depositNum': 1,
'storageType': 0,
'storageTime': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1705891675000,
'update_time': 1705891675000
},
{
'id': '286AF1A9534007E4A2603E',
'caseName': '20240122测试档案盒',
'caseType': 2,
'tid': null,
'barcode': null,
'shelfId': null,
'folderLocation': null,
'folderLocationDetails': null,
'depositNum': 1,
'storageType': 0,
'storageTime': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1705891675000,
'update_time': 1705891675000
}, {}, {}, {}, {}
]
export default {
components: { DeviceTree },
mixins: [crud()],
data() {
return {
dialogVisible: false,
singleVisible: false,
childData: data, //
mijiChild: [],
fieldNum: 1, //
btnChecked: [], //
columnOptions: [], // -,-
partOptions: [], // -
rowOptions: [], // -,-
rowNo: 1,
directionOptions: [
{ value: '1', label: '左边' },
{ value: '2', label: '右边' }
],
isOccupy: [],
deviceType: null, // 1 2
cnName: '', //
deviceId: '', // id
options: [{
value: 1,
label: '第1列'
}, {
value: 2,
label: '第2列'
}, {
value: 3,
label: '第3列'
}, {
value: 4,
label: '第4列'
}, {
value: 4,
label: '第5列'
}],
colValue: 1,
storeroomId: 'D6490DA3D4261E8C26D0E3', // id
deviceData: null, // data
cabinetNum: null, // num
isFixed: false, //
totalPartRowNum: null,
archivesNum: null, //
left: [], //
sortLeft: [], // left-data
right: [], //
sortRight: [], // right-data
isColumDirection: false, // true false
rowNum: [], //
partLeftNum: [], //
partRightNum: [] //
}
},
computed: {
//
},
methods: {
//
handleNodeClick(data) {
this.deviceId = data.id
this.cnName = data.deviceTypeId.name
this.mijiChild.push(this.childData[0])
//
this.btnChecked = this.childArr(1)
this.isOccupy = this.childArr({})
const params = { deviceInfoId: data.id }
if (this.deviceType === 1) {
//
for (let index = 0; index < this.mijiChild.length; index++) {
this.mijiChild[index].colNum = ''
this.mijiChild[index].sectionNum = ''
this.mijiChild[index].levelNum = ''
this.mijiChild[index].direction = ''
this.mijiChild[index].cabLevel = ''
this.mijiChild[index].cabCol = ''
}
} else {
//
for (let index = 0; index < this.childData.length; index++) {
this.childData[index].colNum = ''
this.childData[index].sectionNum = ''
this.childData[index].levelNum = ''
this.childData[index].direction = ''
this.childData[index].cabLevel = ''
this.childData[index].cabCol = ''
}
}
//
if (data.deviceTypeId.name === '密集架') {
this.deviceType = 1
getDesecabinetById(params).then(res => {
this.fieldNum = res.areaNo
this.columnOptions.splice(0, this.columnOptions.length)
for (let i = res.firstColumnNo; i < res.firstColumnNo + res.sumColumnNo; i++) {
this.columnOptions.push({ value: i, label: i })
}
this.partOptions.splice(0, this.partOptions.length)
for (let i = 1; i <= res.partNo; i++) {
this.partOptions.push({ value: i, label: i })
}
this.rowOptions.splice(0, this.rowOptions.length)
this.rowNo = res.rowNo
for (let i = 1; i <= res.rowNo; i++) {
this.rowOptions.push({ value: i, label: i })
}
})
} else if (data.deviceTypeId.name === '回转柜') {
// const obj = { cabCol: '', cabLevel: '' }
this.deviceType = 2
// id
getRotarycabinetById(params).then(res => {
this.fieldNum = res.cupboardNo
this.rowOptions.splice(0, this.rowOptions.length)
for (let i = 1; i <= res.rowNo; i++) {
this.rowOptions.push({ value: i, label: i })
}
this.columnOptions.splice(0, this.columnOptions.length)
for (let i = 1; i <= res.columnRowNo; i++) {
this.columnOptions.push({ value: i, label: i })
}
})
}
},
// -----
childArr(str) {
const arr = []
if (this.deviceType === 1) {
for (let i = 0; i < this.mijiChild.length; i++) {
arr.push(str)
}
} else {
for (let i = 0; i < this.childData.length; i++) {
arr.push(str)
}
}
// for (let i = 0; i < this.childData.length; i++) {
// arr.push(str)
// }
return JSON.parse(JSON.stringify(arr))
},
test() {
this.singleVisible = true
},
//
async selectChange(index, position) {
let obj
if (this.deviceType === 1) {
obj = this.mijiChild[index]
} else {
obj = this.childData[index]
}
// 2(9,10)5
// if (this.deviceType === 1 && position === 'col') {
// if (obj.colNum > 8) {
// if (obj.levelNum > 5) {
// this.childData[index].levelNum = ''
// obj.levelNum = ''
// }
// this.rowOptions.splice(0, this.rowOptions.length)
// for (let i = 1; i <= 5; i++) {
// this.rowOptions.push({ value: i, label: i })
// }
// } else {
// this.rowOptions.splice(0, this.rowOptions.length)
// for (let i = 1; i <= this.rowNo; i++) {
// this.rowOptions.push({ value: i, label: i })
// }
// }
// }
// let bool = 0
// for (const key in obj) { //
// if (!obj[key]) {
// bool++
// }
// }
// if ((obj.colNum && obj.sectionNum && obj.levelNum && obj.direction) || (obj.cabLevel && obj.cabCol)) {
// bool++
// }
if ((obj.colNum && obj.sectionNum && obj.levelNum && obj.direction) || (obj.cabLevel && obj.cabCol)) {
let params
//
if (this.deviceType === 1) {
params = {
deviceId: this.deviceId, //
position: this.fieldNum + '-' + obj.colNum + '-' + obj.sectionNum + '-' + obj.levelNum + '-' + obj.direction,
deviceType: this.deviceType
}
} else {
params = {
deviceId: this.deviceId, //
position: this.fieldNum + '-' + obj.cabLevel + '-' + obj.cabCol,
deviceType: this.deviceType
}
}
const res = await isOccupy(params).then(res => {
return res
})
//
if (res) {
if (this.deviceType === 1) {
this.childData.forEach((item, i) => {
this.isOccupy[i] = res
this.btnChecked[i] = 2
})
} else {
this.btnChecked[index] = 2
this.isOccupy[index] = res
}
} else {
this.btnChecked[index] = 3
}
}
this.$forceUpdate()
},
//
getDeviceListAll() {
const data = deviceJson
data.content.map(item => {
if (item.deviceTypeId.name === '密集架') { //
this.deviceData = item
this.totalPartRowNum = item.partNo * item.rowNo
let rowNo
if (this.cabinetNum > 8) { //
rowNo = item.rowNo - 1
} else {
rowNo = item.rowNo
}
for (let i = 0; i < rowNo; i++) {
this.rowNum.push(i + 1)
}
for (let i = 0; i < item.partNo; i++) {
this.partLeftNum.push(i + 1)
this.partRightNum.push(i + 1)
}
this.partLeftNum.reverse()
if (!this.isColumDirection) {
this.rowNum.reverse()
}
this.getInBorrowByQuCol()
}
})
// const params = {
// page: 0,
// size: 10,
// sort: 'sequence,asc',
// storeroomId: this.storeroomId
// }
// CallExternal.getDeviceList(params).then(data => {
// data.content.map(item => {
// if (item.deviceTypeId.name === '') { //
// this.deviceData = item
// this.totalPartRowNum = item.partNo * item.rowNo
// let rowNo
// if (this.cabinetNum > 8) { //
// rowNo = item.rowNo - 1
// } else {
// rowNo = item.rowNo
// }
// for (let i = 0; i < rowNo; i++) {
// this.rowNum.push(i + 1)
// }
// for (let i = 0; i < item.partNo; i++) {
// this.partLeftNum.push(i + 1)
// this.partRightNum.push(i + 1)
// }
// this.partLeftNum.reverse()
// if (!this.isColumDirection) {
// this.rowNum.reverse()
// }
// this.getInBorrowByQuCol()
// }
// })
// })
},
// /
async getInBorrowByQuCol() {
const data = dataJson
data.forEach(item => {
if (item.direction === '左') {
this.left.push(item)
}
if (item.direction === '右') {
this.right.push(item)
}
})
this.setReorderData(this.left, this.sortLeft, false)
this.setReorderData(this.right, this.sortRight, true)
// const params = {
// deviceId: this.deviceData.id,
// quNo: this.deviceData.areaNo,
// colNo: this.cabinetNum
// }
// CallExternal.FetchInBorrowByQuCol(params).then(data => {
// data.forEach(item => {
// if (item.direction === '') {
// this.left.push(item)
// }
// if (item.direction === '') {
// this.right.push(item)
// }
// })
// this.setReorderData(this.left, this.sortLeft, false)
// this.setReorderData(this.right, this.sortRight, true)
// })
},
// left- right-
setReorderData(data, sortData, order) {
let key
if (this.isColumDirection) {
key = 0
} else {
key = this.deviceData.rowNo + 1
}
const arr = []
for (let i = 0; i < this.deviceData.rowNo; i++) {
arr[i] = []
if (this.isColumDirection) {
key++
} else {
key--
}
data.forEach(item => {
if (item.row_No === key) {
arr[i].push(item)
}
if (this.isColumDirection) {
if (key === this.deviceData.rowNo + 1) {
key = 0
}
} else {
if (key === 0) {
key = this.deviceData.rowNo
}
}
})
this.arrSortByKey(arr[i], 'part_No', order)
}
// data
arr.forEach(item => {
item.forEach(i => {
sortData.push(i)
})
})
},
//
arrSortByKey(array, property, order) {
return array.sort(function(a, b) {
const value1 = a[property]
const value2 = b[property]
if (order) { //
return value1 - value2
} else { //
return value2 - value1
}
})
},
//
handleSave() {
// const caseId = this.childData.map(item => item.id)
this.crud.downloadLoading = true
const params = []
console.log('isOccupy2', this.isOccupy)
this.isOccupy.forEach((item, i) => {
const obj = {}
obj.caseId = this.childData[i].id
obj.deviceId = item.deviceInfoId
obj.position = item.position
obj.positionName = item.position_name
obj.shelfId = item.id
params.push(obj)
})
console.log('params', params)
collect(params).then(data => {
console.log(data, 'data')
if (data) {
this.dialogVisible = false
this.singleVisible = true
this.crud.refresh()
this.cnName = null
}
this.crud.downloadLoading = false
})
},
handleClose() {
this.cnName = null
this.mijiChild = []
this.childData = []
this.crud.downloadLoading = false
this.btnChecked = this.childArr(1)
this.isOccupy = this.childArr({})
this.crud.refresh()
},
open() {
if (this.$refs.deviceTree) {
this.$refs.deviceTree.getDeviceTree()
}
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-dialog {
width: 860px !important;
.el-dialog__body {
padding: 20px 0;
}
}
.content{
display: flex;
justify-content: flex-start;
border: 1px solid #E6E8ED;
height: 530px;
overflow: hidden;
.content-left{
width: 253px;
padding-right: 20px;
border-right: 1px solid #E6E8ED;
}
.content-right{
width: 566px;
}
}
.selected-header{
display: flex;
justify-content: flex-start;
padding: 10px 0 0 0;
.selected-left{
width: 87px;
padding-left: 12px;
line-height: 28px;
color: #0C0E1E;
.selected-num{
display: block;
width: 36px;
line-height: 18px;
text-align: center;
font-size: 12px;
background-color: #EAF6FF;
border-radius: 3px;
i{
display: block;
font-style: normal;
color: #FF6F31;
}
}
}
.selected-right{
flex: 1;
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
height: 72px;
margin-right: 5px;
overflow: hidden;
overflow-y: scroll;
li{
display: flex;
justify-content: flex-start;
width: 148px;
height: 28px;
line-height: 26px;
margin: 0 8px 8px 0;
font-size: 12px;
color: #2ECAAC;
border: 1px solid #B1EBDF;
background: #E8F8F5;
border-radius: 3px;
overflow: hidden;
i{
display: block;
width: 40px;
text-align: center;
font-style: normal;
background-color: #2ECAAC;
color: #fff;
}
span{
display: block;
padding: 0 10px;
}
}
}
}
.frame-content{
padding: 15px 18px 20px 18px;
border-top: 1px solid #E6E8ED;
}
.location-header{
display: flex;
justify-content: space-between;
color: #0C0E1E;
line-height: 28px;
.location-txt{
p{
display: inline-block;
color: #545B65;
}
span{
padding: 0 20px;
color: #0348F3;
}
}
}
::v-deep .selected-right::-webkit-scrollbar {
width: 5px !important;
height: 5px !important;
background-color: #DDE8FB !important;
}
::v-deep .selected-right::-webkit-scrollbar-thumb {
border-radius: 3px;
background-color: #4578F6 !important;
}
::v-deep .selected-right::-webkit-scrollbar-thumb:hover {
background-color: #4578F6 !important;
}
::v-deep .custom-table .el-table__body-wrapper::-webkit-scrollbar-corner {
background-color: #DDE8FB !important;
}
</style>

22
src/views/archiveKeeping/inventoryCheck/index.vue

@ -0,0 +1,22 @@
<template>
<div class="app-container tab-container">
库存盘点
</div>
</template>
<script>
export default {
name: 'InventoryCheck',
components: {
},
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>

106
src/views/archiveKeeping/levelManage/index.vue

@ -0,0 +1,106 @@
<template>
<div class="app-container">
<div class="container-main" style="justify-content: flex-start;">
<div class="elect-cont-left">
<device-tree @nodeClick="handleNodeClick" />
</div>
<div class="elect-cont-right" style="height:calc(100vh - 140px)">
<!--工具栏-->
<div class="head-container">
<div class="head-search" style="justify-content: flex-end;">
<el-button size="mini" :disabled="crud.selections.length !== 1" @click="bindingTag(crud.selections)">
<i class="iconfont icon-bendiguajie" />
绑定标签
</el-button>
</div>
</div>
<div class="container-right">
<span class="right-top-line" />
<span class="left-bottom-line" />
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" height="calc(100vh - 330px)" @row-click="clickRowHandler" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="position_name" label="存放位置" />
<el-table-column prop="position" label="位置编号" />
<el-table-column prop="storeroomCode" label="库房代码" />
<el-table-column v-if="deviceInfo && deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '密集架'" prop="areaNo" label="区号" width="80" align="center" />
<el-table-column v-if="deviceInfo && deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '回转柜'" prop="cupboardNo" label="柜号" width="80" align="center" />
<el-table-column v-if="deviceInfo && deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '密集架'" prop="columnRowNo" label="列号" width="80" align="center" />
<el-table-column v-if="deviceInfo && deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '密集架'" prop="partNo" label="节号" width="80" align="center" />
<el-table-column prop="rowNo" label="层号" width="80" align="center" />
<el-table-column v-if="deviceInfo && deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '回转柜'" prop="columnRowNo" label="列号" width="80" align="center" />
<el-table-column v-if="deviceInfo && deviceInfo.deviceTypeId && deviceInfo.deviceTypeId.name === '密集架'" prop="direction" label="方向" width="80" align="center" />
<el-table-column prop="tid" label="电子标签" />
<el-table-column :show-overflow-tooltip="true" prop="update_time" label="操作时间" width="150" align="center">
<template slot-scope="scope">
<div>{{ scope.row.update_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination v-if="crud.data.length!==0" />
</div>
</div>
</div>
<binding-tag-dlg ref="bindingTag" :binding-id="crud.selections[0] && crud.selections[0].id" :binding-type="3" binding-txt="层架位" @refresh="crud.refresh" />
</div>
</template>
<script>
import CRUD, { presenter, crud } from '@crud/crud'
import pagination from '@crud/Pagination'
import DeviceTree from '@/views/components/DeviceTree'
import BindingTagDlg from '@/views/components/BindingTagDlg'
export default {
name: 'LevelManage',
components: { pagination, DeviceTree, BindingTagDlg },
cruds() {
return CRUD({ title: '层位架', url: 'api/tag/list', queryOnPresenterCreated: false })
},
mixins: [presenter(), crud()],
data() {
return {
deviceInfo: {},
storeroomName: ''
}
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
this.crud.query.deviceInfoId = this.deviceInfo.id
},
clickRowHandler(row) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(row)
},
selectionChangeHandler(val) {
if (val.length > 1) {
// val
const finalVal = val.pop()
//
this.$refs.table.clearSelection()
//
this.$refs.table.toggleRowSelection(finalVal)
this.crud.selectionChangeHandler([finalVal])
} else {
this.crud.selectionChangeHandler(val)
}
},
handleNodeClick(data) {
this.deviceInfo = data
this.crud.toQuery()
this.storeroomName = data.storeroomId.name
},
bindingTag(data) {
if (data[0].tid) {
this.$refs.bindingTag.isBinding = true
this.$refs.bindingTag.tidCode = data[0].tid
}
this.$refs.bindingTag.bindingVisible = true
}
}
}
</script>
<style lang="scss" scoped>
</style>

22
src/views/archiveKeeping/outStorage/index.vue

@ -0,0 +1,22 @@
<template>
<div class="app-container tab-container">
档案出库
</div>
</template>
<script>
export default {
name: 'OutStorage',
components: {
},
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>

22
src/views/archiveKeeping/storageLog/index.vue

@ -0,0 +1,22 @@
<template>
<div class="app-container tab-container">
档案出入库记录
</div>
</template>
<script>
export default {
name: 'StorageLog',
components: {
},
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>

2
src/views/archivesManage/managementLibrary/anjuan/tableList.vue

@ -81,7 +81,7 @@
</el-table-column>
<el-table-column v-if="!isRecycle" label="审批锁定" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template slot-scope="scope">
<span :class="['row-state', 'row-warehousing', scope.row.process_status !== 0 ? 'state-active' : '' ]">{{ processedStatusText(scope.row.process_status) }}</span>
<span :class="['row-state', 'row-warehousing', scope.row.process_status !== 1 ? 'state-active' : '' ]">{{ processedStatusText(scope.row.process_status) }}</span>
</template>
</el-table-column>
</el-table>

4
src/views/archivesManage/managementLibrary/juannei/index.vue

@ -91,7 +91,7 @@
</el-table-column>
<el-table-column v-if="!isRecycle" label="审批锁定" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template slot-scope="scope">
<span :class="['row-state', 'row-warehousing', scope.row.process_status !== 0 ? 'state-active' : '' ]">{{ processedStatusText(scope.row.process_status) }}</span>
<span :class="['row-state', 'row-warehousing', scope.row.process_status !== 1 ? 'state-active' : '' ]">{{ processedStatusText(scope.row.process_status) }}</span>
</template>
</el-table-column>
</el-table>
@ -116,7 +116,7 @@
<script>
import { manageLibraryCrud } from '../mixins/index'
import { header, form } from '@crud/crud'
import CollectHeader from '../module/collectHeader.vue'
import CollectHeader from '../module/collectHeader'
import ArchivesInfo from '../module/archivesInfo/index'
export default {
name: 'Juannei',

3
src/views/archivesManage/managementLibrary/module/handOverForm.vue

@ -178,7 +178,7 @@ export default {
// this.$message.error(message.fail.join(',') + '')
this.$message({ message: res.message, type: 'error', offset: 8 })
}
this.overDetialVisible = false
this.handleClose()
}).catch(err => {
console.log(err)
})
@ -191,6 +191,7 @@ export default {
// dialog - close
handleClose(done) {
this.form.title = ''
this.form.reason = ''
this.overDetialVisible = false
this.$refs['form'].resetFields()
done()

1
src/views/archivesManage/openInventory/index.vue

@ -252,6 +252,7 @@ export default {
}
exportFile(this.baseApi + '/api/control/exportBusinessFlow?' + qs.stringify(params, { indices: false }))
}).catch(() => {
console.log('取消')
})
}
}

153
src/views/collectReorganizi/externalReception/index.vue

@ -4,40 +4,41 @@
<div class="head-search">
<date-range-picker v-model="blurryTime" class="date-item" />
<rrOperation />
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">重置</el-button>
</div>
<crudOperation>
<template v-slot:right>
<div class="upload-bgColor">
<!-- @change="handleFile" -->
<input class="upload-input" type="file" accept=".zip" style="width: 110px; height: 32px;">
<input class="upload-input" type="file" accept=".zip" style="width: 110px; height: 32px;" @change="handleFileChange">
<el-button size="mini">
<i class="iconfont icon-shangchuan2" />
上传接收
</el-button>
</div>
<el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)">
<el-button size="mini" :disabled="selections.length === 0" @click="doExport(selections)">
<i class="iconfont icon-daochu" />
导出
</el-button>
</template>
</crudOperation>
</div>
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" height="calc(100vh - 330px)" @selection-change="crud.selectionChangeHandler" @row-dblclick="handleDetail">
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" height="calc(100vh - 330px)" @selection-change="selectionChangeHandler" @row-dblclick="handleDetail">
<el-table-column type="selection" align="center" width="55" />
<el-table-column prop="code" label="接收编号" />
<el-table-column prop="status" label="接收状态" align="center">
<el-table-column prop="id" label="接收编号" />
<el-table-column prop="receptionType" label="接收状态" align="center">
<template slot-scope="scope">
<span v-if="scope.row.status===1" class="row-state end-state">成功</span>
<span v-if="scope.row.receptionType===1" class="row-state end-state">成功</span>
<span v-else class="row-state cancel-state">失败</span>
</template>
</el-table-column>
<el-table-column prop="remark" label="接收说明">
<el-table-column prop="illustrate" label="接收说明" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remark===null ? '-' : scope.row.remark }}</span>
<span>{{ scope.row.illustrate===null ? '-' : scope.row.illustrate }}</span>
</template>
</el-table-column>
<el-table-column prop="create_by" label="检测人员" width="100" />
<el-table-column prop="create_time" label="操作时间">
<el-table-column prop="create_by" label="检测人员" width="100" align="center" />
<el-table-column prop="create_time" label="操作时间" align="center">
<template slot-scope="scope">
<div>{{ scope.row.create_time | parseTime }}</div>
</template>
@ -52,49 +53,31 @@
<script>
// import crudConnection from '@/api/system/role'
import crudRoles from '@/api/system/role'
import CRUD, { presenter, header, crud } from '@crud/crud'
import DateRangePicker from '@/components/DateRangePicker'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import EepDetail from './module/detail'
// import { exportFile } from '@/utils/index'
// import qs from 'qs'
import qs from 'qs'
import { upload } from '@/utils/upload'
import { exportFile } from '@/utils/index'
import { mapGetters } from 'vuex'
const data = [
{
'id': '005E76FEC5A2AAB368CA1F',
'code': '230c4a438fa84b2c9a0405c99e7f5cb1',
'status': 1,
'remark': null,
'create_by': 'admin',
'create_time': 1687330805000
},
{
'id': '005E76FEC5A2AAB368CA1F',
'code': '230c4a438fa84b2c9a0405c99e7f5cb2',
'status': 0,
'remark': '请检查zip包格式是否正确',
'create_by': 'admin',
'create_time': 1687330805000
}
]
export default {
name: 'ExternalReception',
components: { EepDetail, DateRangePicker, rrOperation, crudOperation, pagination },
cruds() {
return [
CRUD({
title: '外部接收', url: 'api/role/initRoleList',
crudMethod: { ...crudRoles },
title: '外部接收', url: 'api/collect/initExternalReceptionList',
crudMethod: { },
optShow: {
add: false,
edit: false,
del: false,
reset: true,
reset: false,
download: false,
group: false
}
@ -106,7 +89,17 @@ export default {
},
data() {
return {
blurryTime: null
blurryTime: null,
file: null, // change
fileNames: '', // - name
formatType: '', // - type
postfix: '', // -
fileSize: '', // -
filePath: [], // - path
px: '', // -
nowDate: '', //
fileList: [],
selections: []
}
},
computed: {
@ -119,53 +112,83 @@ export default {
mounted() {
},
methods: {
resetQuery() {
this.blurryTime = []
this.crud.query.startTime = null
this.crud.query.endTime = null
this.crud.toQuery()
},
[CRUD.HOOK.beforeRefresh]() {
if (this.blurryTime) {
this.crud.query.startTime = this.blurryTime[0]
this.crud.query.endTime = this.blurryTime[1]
} else {
this.crud.query.startTime = null
this.crud.query.endTime = null
}
},
[CRUD.HOOK.afterRefresh]() {
this.crud.data = data
},
doDetection(data) {
this.$confirm('此操作将重新检测该条目中的档案' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const ids = []
data.forEach(val => {
ids.push(val.id)
})
// const params = {
// 'roleIds': ids
// }
// exportFile(this.baseApi + '/api/role/exportRole?' + qs.stringify(params, { indices: false }))
}).catch(() => {
handleFileChange(e) {
const files = e.target.files
this.file = files[0]
this.key++
const maxMessage = '上传文件大小不能超过 10MB,可使用大文件上传!'
const maxSize = 10 * 1024 * 1024
if (this.file && this.file.size > maxSize) {
this.$message({ message: maxMessage, type: 'warning', offset: 8 })
this.fileList = []
e.target.value = ''
return false
}
if (this.fileList.length !== 0) {
const existingFile = this.fileList.some(file => file.name === this.file.name)
if (existingFile) {
this.$message({ message: '文件已存在', type: 'warning', offset: 8 })
return false
}
}
for (let i = 0; i < files.length; i++) {
this.fileList = []
this.fileList.push(files[i])
}
if (this.fileList.length === 0) {
this.$message({ message: '请先选择相关文件!', offset: 8 })
return false
}
upload(this.baseApi + '/api/collect/externalReception',
this.fileList[0]
).then(res => {
if (res.data.code === 200) {
// 200
// this.$message.success('' + res.data.data + '')
this.$message({ message: '操作成功', type: 'success', offset: 8 })
} else {
this.$message({ message: '操作失败', type: 'error', offset: 8 })
}
this.crud.toQuery()
})
},
handleDetail() {
selectionChangeHandler(val) {
this.selections = val
},
handleDetail(row) {
this.$refs.mDetail.rowCurrent = row
this.$refs.mDetail.eepDetialVisible = true
},
doExport(data) {
crud.downloadLoading = true
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const ids = []
data.forEach(val => {
ids.push(val.id)
})
// const params = {
// 'roleIds': ids
// }
// exportFile(this.baseApi + '/api/role/exportRole?' + qs.stringify(params, { indices: false }))
const ids = data.map(item => item.id)
const params = {
'receptionIds': ids
}
exportFile(this.baseApi + '/api/collect/exportExternalReception?' + qs.stringify(params, { indices: false }))
}).catch(() => {
console.log('取消')
})
}
}

72
src/views/collectReorganizi/externalReception/module/detail.vue

@ -1,52 +1,73 @@
<template>
<!-- EEP包 -->
<el-dialog title="eep包" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="eepDetialVisible">
<el-dialog title="zip封装包" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="eepDetialVisible" @opened="opened">
<div class="setting-dialog">
<ul class="hitch-info">
<li><span>接收编号</span>230c4a438fa84b2c9a0405c99e7f5cb1</li>
<li><span>接收状态</span><i class="row-state end-state">成功</i></li>
<li><span>接收人员</span>admin</li>
<li><span>接收时间</span>2016-09-21 08:50:08</li>
<li><span>挂接结果</span>请检查zip包格式是否正确</li>
<li><span>接收编号</span>{{ rowCurrent && rowCurrent.id }}</li>
<li><span>接收人员</span>{{ rowCurrent && rowCurrent.create_by }}</li>
<li><span>接收时间</span>{{ rowCurrent && rowCurrent.create_time | parseTime }}</li>
<li><span>挂接结果</span>{{ rowCurrent && rowCurrent.receptionType === 1 ? '成功' : '失败' }}</li>
<li class="state-list">
<span class="row-state end-state">成功</span>
</li>
</ul>
<el-table ref="table" :data="tableData" style="width: 100%;">
<el-table ref="table" v-loading="tableLoading" :data="tableData" style="width: 100%;" height="calc(100vh - 480px)">
<el-table-column type="index" align="center" width="55" label="序号" />
<el-table-column prop="name" label="文件名称" />
<el-table-column prop="reason" label="原因" />
<el-table-column prop="archivesNo" label="文件名称">
<template slot-scope="scope">
<div style="display: flex; justify-content: flex-start;">
<span style="min-width: 220px;">{{ scope.row.archivesNo }}</span>
<span>{{ scope.row.maintitle }}</span>
</div>
</template>
</el-table-column>
<el-table-column label="原因" prop="reason" min-width="100" align="center">
<template slot-scope="scope">
<span :class="['row-state', scope.row.reason === '成功' ? 'end-state' : 'cancel-state']">{{ scope.row.reason }}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-dialog>
</template>
<script>
const data = [
{
'id': '005E76FEC5A2AAB368CA1F',
'name': '档号+题名',
'reason': '成功'
},
{
'id': '005E76FEC5A2AAB368CA1F2',
'name': '档号+题名',
'reason': '成功'
}
]
import { FetchInitExternalReceptionDetailsList } from '@/api/collect/collect'
export default {
name: 'EepDetail',
components: { },
mixins: [],
data() {
return {
eepDetialVisible: false,
tableData: []
rowCurrent: null,
tableData: [],
tableLoading: false
}
},
created() {
},
mounted() {
this.tableData = data
},
methods: {
opened() {
this.getInitExternalReceptionDetail()
},
getInitExternalReceptionDetail() {
this.tableLoading = true
this.tableData = []
const params = {
'receptionId': this.rowCurrent.id
}
FetchInitExternalReceptionDetailsList(params).then((res) => {
if (res.code !== 500) {
this.tableData = res
} else {
this.$message({ message: '获取数据失败', type: 'error', offset: 8 })
}
this.tableLoading = false
}).catch(err => {
console.log(err)
})
}
}
}
</script>
@ -55,5 +76,6 @@ export default {
@import "~@/assets/styles/collect-reorganizi.scss";
.row-state{
font-style: normal;
padding: 0 8px;
}
</style>

149
src/views/components/DeviceTree.vue

@ -1,12 +1,82 @@
<template>
<div class="tree-scroll">
<el-tree ref="deviceTree" :data="deviceTree" :props="defaultProps" node-key="id" :default-expanded-keys="defaultExpandedKeys" :default-checked-keys="defaultCheckedKeys" :expand-on-click-node="false" highlight-current @node-click="handleNodeClick" />
<el-tree ref="deviceTree" :data="deviceTree" :props="defaultProps" node-key="id" :default-expanded-keys="defaultExpandedKeys" :default-checked-keys="defaultCheckedKeys" :expand-on-click-node="false" highlight-current @node-click="handleNodeClick">
<span slot-scope="{ node, data }" class="custom-tree-node">
<span v-if="data.level===1" class="iconStoreHouse">
{{ data.name }}
</span>
<span v-if="data.deviceName" class="iconLevel">
{{ data.name }}
</span>
</span>
</el-tree>
</div>
</template>
<script>
import { menu } from '@/api/storeManage/levelManage/level'
const dataArray = [
{
'id': 'DDAF09DDD05ED8ACF9928E',
'supplierId': {
'id': '3D9732A0F3615E925C634D',
'name': '金虎',
'remark': null,
'phone': null,
'deviceModel': '设备型号',
'sequence': 1,
'create_by': 'system',
'update_by': 'system',
'create_time': 1657079102000,
'update_time': 1657079106000
},
'storeroomId': {
'id': 'D6490DA3D4261E8C26D0E3',
'name': '5F 档案库',
'pid': '9BD20FDB985472600B5B35',
'remark': '5F 档案库',
'sort': 1,
'children': null,
'create_by': 'System',
'update_by': 'admin',
'create_time': 1656937675000,
'update_time': 1687660503000
},
'deviceTypeId': {
'id': 'DD656054BE3D1DF1E2F1FC',
'name': '密集架',
'create_by': 'system',
'update_by': 'system',
'create_time': 1657499126000,
'update_time': 1657499131000
},
'deviceSpecParamId': null,
'deviceId': null,
'deviceName': '5F_档案库_密集架',
'deviceIp': '192.168.1.110',
'devicePort': 16000,
'deviceState': 1,
'deviceAccount': null,
'devicePassword': null,
'rowNo': 6,
'areaNo': 1,
'sumColumnNo': 10,
'firstColumnNo': 1,
'partNo': 5,
'storeroomCode': '12345678',
'columnRowNo': null,
'cupboardNo': null,
'videoRoute': null,
'isNotice': true,
'sequence': 43,
'isLinkage': null,
'isCallback': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1661409034000,
'update_time': 1687664660000
}
]
export default {
name: 'DeviceTree',
data() {
@ -26,41 +96,45 @@ export default {
methods: {
getDeviceTree() {
let defaultCheckedData = {}
menu().then((data) => {
let storeroom = {}
let devices = []
this.deviceTree.splice(0, this.deviceTree.length)
for (let i = 0; i < data.length; i++) {
if (!storeroom.id) {
storeroom = data[i].storeroomId
data[i].name = data[i].deviceName
data[i].isCurrent = true
devices.push(data[i])
//
defaultCheckedData = data[i]
//
this.defaultExpandedKeys.push(data[i].storeroomId.id)
} else if (storeroom.id !== data[i].storeroomId.id) {
storeroom.children = devices
this.deviceTree.push(storeroom)
devices = []
data[i].name = data[i].deviceName
devices.push(data[i])
storeroom = data[i].storeroomId
} else {
data[i].name = data[i].deviceName
devices.push(data[i])
}
if (i === data.length - 1) {
storeroom.children = devices
this.deviceTree.push(storeroom)
}
}
this.$nextTick(() => {
const data = dataArray
let storeroom = {}
let devices = []
this.deviceTree.splice(0, this.deviceTree.length)
for (let i = 0; i < data.length; i++) {
if (!storeroom.id) {
storeroom = data[i].storeroomId
storeroom.level = 1
data[i].name = data[i].deviceName
data[i].isCurrent = true
devices.push(data[i])
//
this.handleNodeClick(defaultCheckedData)
this.$refs.deviceTree.setCurrentKey(defaultCheckedData.id)
})
defaultCheckedData = data[i]
//
this.defaultExpandedKeys.push(data[i].storeroomId.id)
} else if (storeroom.id !== data[i].storeroomId.id) {
storeroom.children = devices
this.deviceTree.push(storeroom)
devices = []
data[i].name = data[i].deviceName
devices.push(data[i])
storeroom = data[i].storeroomId
} else {
data[i].name = data[i].deviceName
devices.push(data[i])
}
if (i === data.length - 1) {
storeroom.children = devices
this.deviceTree.push(storeroom)
}
}
console.log(this.deviceTree)
this.$nextTick(() => {
//
this.handleNodeClick(defaultCheckedData)
this.$refs.deviceTree.setCurrentKey(defaultCheckedData.id)
})
menu().then((data) => {
})
},
handleNodeClick(selectedData) {
@ -72,4 +146,7 @@ export default {
}
</script>
<style lang="scss" scoped>
.tree-scroll{
font-size: 14px;
}
</style>
Loading…
Cancel
Save