23 changed files with 3374 additions and 132 deletions
-
12src/api/collect/collect.js
-
BINsrc/assets/images/archives/dah.png
-
BINsrc/assets/images/archives/zt-lx.png
-
BINsrc/assets/images/archives/zt-zx.png
-
12src/assets/styles/yxk-admin.scss
-
1src/views/archiveKeeping/caseManage/caseList/index.vue
-
423src/views/archiveKeeping/inStorage/index.vue
-
22src/views/archiveKeeping/inStorage/pendingInArchive/index.vue
-
291src/views/archiveKeeping/inStorage/pendingInCase/index.vue
-
482src/views/archiveKeeping/inStorage/pendingInCase/module/data.json
-
863src/views/archiveKeeping/inStorage/pendingInCase/module/device.json
-
844src/views/archiveKeeping/inStorage/pendingInCase/module/inDialog.vue
-
22src/views/archiveKeeping/inventoryCheck/index.vue
-
106src/views/archiveKeeping/levelManage/index.vue
-
22src/views/archiveKeeping/outStorage/index.vue
-
22src/views/archiveKeeping/storageLog/index.vue
-
2src/views/archivesManage/managementLibrary/anjuan/tableList.vue
-
4src/views/archivesManage/managementLibrary/juannei/index.vue
-
3src/views/archivesManage/managementLibrary/module/handOverForm.vue
-
1src/views/archivesManage/openInventory/index.vue
-
153src/views/collectReorganizi/externalReception/index.vue
-
72src/views/collectReorganizi/externalReception/module/detail.vue
-
149src/views/components/DeviceTree.vue
After Width: 46 | Height: 46 | Size: 2.8 KiB |
After Width: 19 | Height: 18 | Size: 747 B |
After Width: 19 | Height: 18 | Size: 805 B |
@ -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 // 过滤掉isType为3的节点 |
|||
}) |
|||
}, |
|||
// 逆归实现 获取指定元素 |
|||
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> |
@ -0,0 +1,22 @@ |
|||
<template> |
|||
<div> |
|||
待入库档案 |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: 'PendingInArchive', |
|||
components: { |
|||
}, |
|||
data() { |
|||
return { |
|||
} |
|||
}, |
|||
methods: { |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
</style> |
@ -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 = '' |
|||
// 避免向后端传递多余参数,切换和重置时,若有typeInputkey则去掉form中对应参数 |
|||
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> |
@ -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": "右" |
|||
} |
|||
] |
@ -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 |
|||
} |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue