Browse Source

管理库

master
xuhuajiao 1 year ago
parent
commit
a23dfe3e4d
  1. 39
      src/api/archivesManage/bindTagList.js
  2. 19
      src/api/archivesManage/caseManage.js
  3. 18
      src/api/archivesManage/library.js
  4. 20
      src/assets/styles/archives-manage.scss
  5. 87
      src/views/archiveUtilize/archiveEditing/module/material.vue
  6. 394
      src/views/archiveUtilize/archiveEditing/module/materialSelected.vue
  7. 78
      src/views/archivesManage/managementLibrary/anjuan/tableList.vue
  8. 4
      src/views/archivesManage/managementLibrary/index.vue
  9. 63
      src/views/archivesManage/managementLibrary/juannei/index.vue
  10. 5
      src/views/archivesManage/managementLibrary/mixins/index.js
  11. 184
      src/views/archivesManage/managementLibrary/module/collectHeader.vue
  12. 263
      src/views/archivesManage/managementLibrary/module/packingBox/index.vue
  13. 3
      src/views/archivesManage/recycled/index.vue
  14. 106
      src/views/components/BindingTagDlg.vue
  15. 275
      src/views/components/archivesDetail/archivesInfo/index.vue
  16. 119
      src/views/components/archivesDetail/fourTestInfo/index.vue
  17. 81
      src/views/components/archivesDetail/handleInfo/index.vue
  18. 37
      src/views/components/archivesDetail/uploadFile/index.vue
  19. 10
      src/views/components/category/PreviewForm.vue
  20. 2
      src/views/system/role/index.vue
  21. 2
      src/views/system/user/index.vue

39
src/api/archivesManage/bindTagList.js

@ -0,0 +1,39 @@
import request from '@/utils/request'
// 标签列表
export function initTagList(parameter) {
return request({
url: 'api/archivesDeposit/initTagList',
method: 'get',
params: parameter
})
}
// 绑定标签
export function bingdingLabel(data) {
return request({
url: 'api/archivesDeposit/bingdingLabel',
method: 'post',
data
})
}
// 解绑标签
export function unbindTag(data) {
return request({
url: 'api/archivesDeposit/unbindTag',
method: 'post',
data
})
}
// 签使用列表
export function initTagLogList(parameter) {
return request({
url: 'api/archivesDeposit/initTagLogList',
method: 'get',
params: parameter
})
}
export default { initTagList, bingdingLabel, unbindTag, initTagLogList }

19
src/api/archivesManage/caseManage.js

@ -7,15 +7,16 @@ export function add(form) {
export function edit(parameter) { export function edit(parameter) {
return request({ return request({
url: 'api/case/edit',
url: 'api/carchivesDeposit/editCase',
method: 'post', method: 'post',
data: parameter data: parameter
}) })
} }
// 删除档案盒 // 删除档案盒
export function del(data) { export function del(data) {
return request({ return request({
url: 'api/case/del',
url: 'api/archivesDeposit/del',
method: 'post', method: 'post',
data: data data: data
}) })
@ -24,7 +25,7 @@ export function del(data) {
// 判断盒名称是否重复 // 判断盒名称是否重复
export function caseNameIsRepeat(parameter) { export function caseNameIsRepeat(parameter) {
return request({ return request({
url: 'api/case/caseNameIsRepeat',
url: 'api/archivesDeposit/caseNameIsRepeat',
method: 'get', method: 'get',
params: parameter params: parameter
}) })
@ -32,7 +33,7 @@ export function caseNameIsRepeat(parameter) {
// 判断条形码值是否重复 // 判断条形码值是否重复
export function barcodeIsRepeat(parameter) { export function barcodeIsRepeat(parameter) {
return request({ return request({
url: 'api/case/barcodeIsRepeat',
url: 'api/archivesDeposit/barcodeIsRepeat',
method: 'get', method: 'get',
params: parameter params: parameter
}) })
@ -41,7 +42,7 @@ export function barcodeIsRepeat(parameter) {
// 档案盒列表 // 档案盒列表
export function FetchInitCaseList(parameter) { export function FetchInitCaseList(parameter) {
return request({ return request({
url: 'api/case/initCaseList',
url: 'api/archivesDeposit/initCaseList',
method: 'get', method: 'get',
params: parameter params: parameter
}) })
@ -50,7 +51,7 @@ export function FetchInitCaseList(parameter) {
// 档案盒装盒列表 // 档案盒装盒列表
export function FetchInitCartoningList(parameter) { export function FetchInitCartoningList(parameter) {
return request({ return request({
url: 'api/case/initCartoningList',
url: 'api/archivesDeposit/initCartoningList',
method: 'get', method: 'get',
params: parameter params: parameter
}) })
@ -59,7 +60,7 @@ export function FetchInitCartoningList(parameter) {
// 装盒 // 装盒
export function FetchCartoning(data) { export function FetchCartoning(data) {
return request({ return request({
url: 'api/case/cartoning',
url: 'api/archivesDeposit/cartoning',
method: 'post', method: 'post',
data: data data: data
}) })
@ -67,7 +68,7 @@ export function FetchCartoning(data) {
// 拆盒 // 拆盒
export function unpacking(data) { export function unpacking(data) {
return request({ return request({
url: 'api/case/unpacking',
url: 'api/archivesDeposit/unpacking',
method: 'post', method: 'post',
data: data data: data
}) })
@ -75,7 +76,7 @@ export function unpacking(data) {
// 盒详情 // 盒详情
export function findInCase(params) { export function findInCase(params) {
return request({ return request({
url: 'api/case/findInCase' + '?' + qs.stringify(params, { indices: false }),
url: 'api/archivesDeposit/findInCase' + '?' + qs.stringify(params, { indices: false }),
method: 'get' method: 'get'
}) })
} }

18
src/api/archivesManage/library.js

@ -1,21 +1,23 @@
import request from '@/utils/request' import request from '@/utils/request'
import qs from 'qs' import qs from 'qs'
export function FetchInitCategoryView(params) {
// 根据门类父id获取卷内列表列
export function FetchInitCategoryViewTable(params) {
return request({ return request({
url: 'api/collect/initCategoryView' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
url: 'api/collect/initCategoryViewTable',
method: 'get',
params
}) })
} }
export function collectEdit(data) {
export function FetchInitCategoryView(params) {
return request({ return request({
url: 'api/collect/editArchives',
method: 'post',
data
url: 'api/control/initCategoryView' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
}) })
} }
export default { export default {
collectEdit
FetchInitCategoryViewTable,
FetchInitCategoryView
} }

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

@ -325,9 +325,19 @@
position: absolute; position: absolute;
left: 50%; left: 50%;
top: 50%; top: 50%;
margin: -20px 0 0 -20px;
margin: -15px 0 0 -15px;
width: 30px;
height: 30px;
border-radius: 50%;
border: 1px solid #0348F3;
z-index: 1; z-index: 1;
} }
&::before{
animation: halo 2s linear 0.5s infinite;
}
&::after{
animation: halo 2s linear 1.5s infinite;
}
} }
} }
// 晕开效果 // 晕开效果
@ -348,13 +358,13 @@
opacity: 0.3; opacity: 0.3;
} }
75% { 75% {
transform: scale(1.2);
-webkit-transform: scale(1.2);
transform: scale(1.3);
-webkit-transform: scale(1.3);
opacity: 0.5; opacity: 0.5;
} }
100% { 100% {
transform: scale(1.5);
-webkit-transform: scale(1.5);
transform: scale(1.6);
-webkit-transform: scale(1.6);
opacity: 0.0; opacity: 0.0;
} }
} }

87
src/views/archiveUtilize/archiveEditing/module/material.vue

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<div class="head-container"> <div class="head-container">
<el-button size="mini" @click="crud.toAdd">
<el-button size="mini" @click="toAdd">
<i class="iconfont icon-xinzeng" /> <i class="iconfont icon-xinzeng" />
新增 新增
</el-button> </el-button>
@ -17,6 +17,7 @@
<el-table <el-table
ref="table" ref="table"
:data="crud.data" :data="crud.data"
:row-key="rowKey"
style="width: 100%;" style="width: 100%;"
height="calc(100vh - 485px)" height="calc(100vh - 485px)"
@cell-dblclick="tableDoubleClick" @cell-dblclick="tableDoubleClick"
@ -101,16 +102,22 @@
<el-button type="primary" @click.native="handleCloseDialog">关闭</el-button> <el-button type="primary" @click.native="handleCloseDialog">关闭</el-button>
</div> </div>
</el-dialog> </el-dialog>
<MaterialSelected ref="collectMoveFileRef" />
<ArchivesInfo ref="archivesInfo" :selected-category="selectedCategory" :arc-id="arcId" />
</div> </div>
</template> </template>
<script> <script>
import CRUD, { presenter, crud } from '@crud/crud' import CRUD, { presenter, crud } from '@crud/crud'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
import MaterialSelected from './materialSelected'
import ArchivesInfo from '@/views/components/archivesDetail/archivesInfo/index'
export default { export default {
name: 'Material', name: 'Material',
components: { pagination },
components: { pagination, MaterialSelected, ArchivesInfo },
mixins: [presenter(), crud()], mixins: [presenter(), crud()],
cruds() { cruds() {
return CRUD({ return CRUD({
@ -165,17 +172,89 @@ export default {
mounted() { mounted() {
}, },
methods: { methods: {
rowKey(row) {
return row.id
},
[CRUD.HOOK.beforeRefresh]() { [CRUD.HOOK.beforeRefresh]() {
this.crud.query.isType = this.activeIndex this.crud.query.isType = this.activeIndex
}, },
resetQuery() { resetQuery() {
},
toAdd() {
this.$refs.collectMoveFileRef.collectMoveFileVisible = true
},
toDelete(data) {
if (data.length === 0) {
this.$message('您还未勾选需要操作的条目,请先确认!')
return false
}
console.log(data)
this.$confirm('此操作将删除当前所选素材' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
}).catch(() => {
})
},
//
doExport(data) {
if (data.length === 0) {
this.$message('您还未勾选需要操作的条目,请先确认!')
return false
}
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const archivesIds = []
this.selections.forEach(val => {
archivesIds.push(val.id)
})
const params = {
'categoryId': this.selectedCategory.id,
'categoryLevel': this.collectLevel,
'archivesIds': archivesIds
}
console.log(params)
// exportFile(this.baseApi + '/api/collect/exportDate?' + qs.stringify(params, { indices: false }))
}).catch(() => {
})
}, },
tableDoubleClick(row) { tableDoubleClick(row) {
this.lendDetail = true
// this.lendDetail = true
row.id = '6E3ACDCF8DA4870B712663'
this.arcId = row.id
this.$nextTick(() => {
// if (this.selectedCategory.arrangeType !== 1) {
// if (this.activeIndex === 1) {
// this.$refs.archivesInfo.detailTitle = ''
// this.$refs.archivesInfo.isHasFile = true
// this.$refs.archivesInfo.getDetial(3, row.id)
// } else {
// this.$refs.archivesInfo.detailTitle = ''
// this.$refs.archivesInfo.getDetial(2, row.id)
// }
// } else {
// this.$refs.archivesInfo.isHasFile = true
// this.$refs.archivesInfo.detailTitle = ''
// this.$refs.archivesInfo.getDetial(3, row.id)
// }
this.$refs.archivesInfo.isHasFile = false
this.$refs.archivesInfo.detailTitle = '案卷详情'
this.$refs.archivesInfo.getDetial(2, '6E3ACDCF8DA4870B712663')
this.$refs.archivesInfo.isFourTest = true
this.$refs.archivesInfo.archivesInfoVisible = true
this.$refs.archivesInfo.archivesTabIndex = 0
})
}, },
handleCloseDialog(done) { handleCloseDialog(done) {
this.lendDetail = false
// this.lendDetail = false
// //
// done() // done()
} }

394
src/views/archiveUtilize/archiveEditing/module/materialSelected.vue

@ -0,0 +1,394 @@
<template>
<!-- 素材选择 -->
<el-dialog class="collectMoveFile-dialog" title="素材选择" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="collectMoveFileVisible" :before-close="handleCloseDialog" @open="open">
<div class="collectMove-main">
<div class="collectMove-left">
<CategoryTree ref="categoryTree" @nodeClick="handleNodeClick" />
</div>
<div class="collectMove-right">
<div class="collectMove-header">
<div v-if="currentCategory && currentCategory.arrangeType===3" class="detail-tab tab-content">
<ul class="tab-nav">
<li :class="{'active-tab-nav': tabIndex == 0}" @click="changeActiveTab(0)">项目列表</li>
<li :class="{'active-tab-nav': tabIndex == 1}" @click="changeActiveTab(1)">案卷列表</li>
</ul>
</div>
<div class="head-search">
<el-input v-model="query.search" clearable size="small" placeholder="输入题名或档号搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="getViewTableList" @clear="getViewTableList" />
<el-button class="filter-item filter-search" style="margin: 0 10px;" size="mini" type="success" icon="el-icon-search" @click="getViewTableList">搜索</el-button>
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery">重置</el-button>
</div>
</div>
<div class="table-list">
<el-table
ref="table"
v-loading="loading"
lazy
:data="tableData"
style="width: 100%;"
height="calc(100%)"
:row-key="getRowKey"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
highlight-current-row
@selection-change="selectionChangeHandler"
@row-click="clickRowHandler"
>
<el-table-column type="selection" align="center" width="55" />
<el-table-column v-for="field in tableDisplayFields" :key="field.id" :label="field.fieldCnName" :align="field.displayformatType" :width="field.displayLength" show-overflow-tooltip>
<template slot="header">
<el-tooltip
class="item"
effect="dark"
:content="field.fieldCnName"
placement="top-start"
>
<span>{{ field.fieldCnName }}</span>
</el-tooltip>
</template>
<template slot-scope="scope">
{{ scope.row[field.fieldName] }}
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
v-if="tableData.length !== 0"
:current-page="page.page"
:total="page.total"
:page-size="page.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleSizeChange"
@current-change="handleCurrentPage"
/>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="handleCloseDialog">取消</el-button>
<!-- collectLevel===2 -->
<el-button type="primary" :disabled="currentCategory&&currentCategory.arrangeType===3&&moveSelections.length===0" @click.native="handleComfireCollectMoveFile">确定</el-button>
</div>
</el-dialog>
</template>
<script>
import CategoryTree from '@/views/components/categoryTree'
// FetchMove
import { FetchInitCategoryViewTable, FetchInitCategoryView } from '@/api/collect/collect'
export default {
name: 'CollectMoveFile',
components: { CategoryTree },
props: {},
data() {
return {
query: {
search: null
},
currentCategory: null,
currentLevel: null,
collectMoveFileVisible: false,
toCategoryLevel: null,
loading: false,
arrySort: [],
tableData: [],
tableDisplayFields: [],
moveSelections: [],
page: {
page: 1,
size: 10,
total: 0
},
moveFile: true,
isReserve: false,
tabIndex: 0
}
},
mounted() {
},
methods: {
resetQuery() {
this.query.search = null
this.getViewTableList()
},
getRowKey(row) {
return row.id
},
handleNodeClick(data) {
if (data) {
this.currentCategory = data
if (this.currentCategory.isType !== 1) {
this.getViewTable()
} else {
this.tableDisplayFields = []
this.tableData = []
}
}
},
open() {
if (this.currentCategory) {
this.getViewTable()
}
},
getViewTable() {
this.loading = true
this.tableDisplayFields = []
if (this.currentCategory.arrangeType === 1) {
this.currentLevel = 3
} else if (this.currentCategory.arrangeType === 2) {
this.currentLevel = 2
} else {
if (this.tabIndex === 1) {
this.currentLevel = 2
} else {
this.currentLevel = 1
}
}
FetchInitCategoryViewTable({ categoryId: this.currentCategory.id, categoryLevel: this.currentLevel }).then((res) => {
if (res) {
this.arrySort = []
this.tableDisplayFields = res
const orderSortArry = this.tableDisplayFields.filter(item => item.displayOrder).sort((a, b) => a.displayOrder - b.displayOrder)
orderSortArry.forEach(item => {
if (item.displayOrderBy) {
this.arrySort.push(item.fieldName + ',' + item.displayOrderBy)
}
})
this.$nextTick(() => {
this.getViewTableList()
})
this.loading = false
}
})
},
getViewTableList() {
this.tableData = []
this.loading = true
const params = {
'categoryId': this.currentCategory.id,
'categoryLevel': this.currentLevel,
'search': this.query.search,
'page': this.page.page - 1,
'size': this.page.size
}
FetchInitCategoryView(params).then((res) => {
console.log(res)
if (res.code !== 500) {
this.tableData = res.list.content
this.page.total = res.list.totalElements
}
this.loading = false
})
},
changeActiveTab(data) {
this.tabIndex = data
this.getViewTable()
this.moveSelections = []
},
clickRowHandler(row) {
this.moveSelections = []
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(row)
// this.moveSelections.push(row)
},
selectionChangeHandler(selection, row) {
this.moveSelections = selection
},
handleComfireCollectMoveFile() {
// if (this.moveSelections.length > 1) {
// this.$message('')
// return false
// }
// if (this.currentCategory.arrangeType === 1) {
// this.toCategoryLevel = 3
// } else if (this.currentCategory.arrangeType === 2) {
// this.toCategoryLevel = 2
// } else {
// if (this.collectLevel === 3) {
// if (this.moveSelections.length === 0) {
// this.toCategoryLevel = 3
// } else {
// if (this.tabIndex === 1) {
// this.toCategoryLevel = 2
// } else {
// this.toCategoryLevel = 3
// }
// }
// } else {
// if (this.tabIndex === 1) {
// this.toCategoryLevel = 2
// } else {
// this.toCategoryLevel = 1
// }
// }
// }
// if (this.collectLevel === 2) {
// if (this.toCategoryLevel === 3) {
// this.$message('')
// return false
// }
// }
// if (this.selectedCategory.id === this.currentCategory.id) {
// this.$message('!')
// return false
// }
// const archivesIds = this.selections.map(item => item.id)
// // const toArchivesIds = this.moveSelections.map(item => item.id)
// let toArchivesId
// if (this.moveSelections.length === 0) {
// toArchivesId = null
// } else {
// if (this.collectLevel === 3) {
// console.log('this.tabIndex66', this.tabIndex)
// if (this.tabIndex === 1) {
// toArchivesId = this.moveSelections[0].id
// } else {
// if (this.selectedCategory.arrangeType === 1) {
// toArchivesId = this.moveSelections[0].id
// } else {
// toArchivesId = null
// }
// }
// } else {
// toArchivesId = this.moveSelections[0].id
// }
// }
// const params = {
// 'reserve': this.isReserve, // true false
// 'categoryId': this.selectedCategory.id, // id
// 'categoryLevel': this.collectLevel, //
// 'archivesIds': archivesIds, // id
// 'toCategoryId': this.currentCategory.id, // id
// 'toCategoryLevel': this.toCategoryLevel, //
// 'toArchivesId': toArchivesId // id ()
// }
// console.log(params)
// FetchMove(params).then((res) => {
// console.log(res)
// if (res.code !== 500) {
// this.$message.success('')
// this.$emit('close-dialog')
// } else {
// this.$message.error('')
// }
// this.handleCloseDialog()
// })
},
handleSizeChange(size) {
this.page.size = size
this.page.page = 1
this.getViewTableList()
},
handleCurrentPage(val) {
this.page.page = val
this.getViewTableList()
},
handleCloseDialog(done) {
//
this.query.search = null
this.tableDisplayFields = []
this.tableData = []
this.$refs.table.clearSelection()
this.moveSelections = []
this.collectMoveFileVisible = false
this.isReserve = false
//
// done()
}
}
}
</script>
<style lang='scss' scoped>
.collectMoveFile-dialog{
::v-deep .el-dialog{
width: 1000px;
.search-btn-box{
.el-button{
margin-left: 10px;
}
}
}
}
.collectMove-main{
display: flex;
justify-content: space-between;
width: 100%;
height: 557px;
border: 1px solid #E6E8ED;
.collectMove-left{
width: 260px;
overflow: hidden;
overflow-y: scroll;
.elect-cont-left{
width: auto !important;
margin-right: 0 !important;
}
::v-deep .container-left{
min-height: calc(100%) !important;
}
}
.collectMove-right{
width: calc(100% - 260px);
flex: 1;
border-left: 1px solid #E6E8ED;
.head-search{
// padding: 0 20px 0 0;
flex: 1;
justify-content: flex-end;
margin-bottom: 0;
}
.table-list{
height: 440px;
border-bottom: 1px solid #E6E8ED;
.el-pagination{
margin: 15px 0 !important;
}
}
.move-checked{
display: flex;
justify-content: flex-start;
padding: 0 30px;
height: 42px;
line-height: 42px;
.checkbox-style{
font-size: 14px;
color: #0C0E1E;
margin-right: 30px;
}
.el-checkbox{
margin-right: 20px;
::v-deep .el-checkbox__input.is-disabled .el-checkbox__inner{
border-color: #0348f3;
background-color: #0348f3;
}
::v-deep .el-checkbox__label{
opacity: 0;
margin-left: -100px;
padding-left: 0;
}
}
}
}
}
.collectMove-header{
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 20px 20px 0;
.detail-tab .tab-nav{
margin: 0;
border-bottom: none;
}
.detail-tab .tab-nav li{
margin-right: 20px;
}
.detail-tab .tab-nav li.active-tab-nav{
padding-bottom: 0;
}
}
.dialog-footer{
margin-top: 20px;
}
</style>

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

@ -40,49 +40,50 @@
{{ scope.row[field.fieldName] }} {{ scope.row[field.fieldName] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="!isRecycle" label="开放" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<!-- slot-scope="scope" -->
<template>
<span class="row-state row-open state-active">已开放</span>
<!-- <span :class="['row-state', 'row-physical', scope.row.tid ? 'state-active' : '' ]">{{ scope.row.tid ? '有': '无' }}</span> -->
</template>
</el-table-column>
<el-table-column v-if="!isRecycle" label="实体" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<!-- slot-scope="scope" -->
<template>
<span class="row-state row-physical state-active"></span>
<!-- <span :class="['row-state', 'row-physical', scope.row.tid ? 'state-active' : '' ]">{{ scope.row.tid ? '有': '无' }}</span> -->
</template>
</el-table-column>
<el-table-column v-if="!isRecycle" label="标签" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template>
<span class="row-state row-binding state-active">未绑</span>
<!-- 未绑 / 已绑 -->
<!-- <span :class="['row-state', 'row-binding', scope.row.tid ? 'state-active' : '' ]">{{ scope.row.tid ? '已绑': '未绑' }}</span> -->
<el-table-column v-if="!isRecycle && selectedCategory.arrangeType===1" label="标签" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template slot-scope="scope">
<!-- 未绑 / 已绑 -->
<span :class="['row-state', 'row-binding', scope.row.tid ? 'state-active' : '' ]">{{ scope.row.tid ? '已绑': '未绑' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="!isRecycle" label="装盒" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' "> <el-table-column v-if="!isRecycle" label="装盒" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<!-- state-active 已装/已入/已借/已绑 --> <!-- state-active 已装/已入/已借/已绑 -->
<template>
<template slot-scope="scope">
<!-- 未装 / 已装 --> <!-- 未装 / 已装 -->
<span class="row-state row-packing state-active">已装</span>
<!-- <span :class="['row-state', 'row-packing', scope.row.case_no ? 'state-active' : '' ]">{{ scope.row.case_no ? '已装': '未装' }}</span> -->
<span :class="['row-state', 'row-packing', scope.row.case_no ? 'state-active' : '' ]">{{ scope.row.case_no ? '已装': '未装' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="!isRecycle" label="入库" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' "> <el-table-column v-if="!isRecycle" label="入库" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template>
<span class="row-state row-warehousing state-active">已入</span>
<template slot-scope="scope">
<!-- <span class="row-state row-warehousing state-active">已入</span> -->
<span :class="['row-state', 'row-warehousing', scope.row.folder_location ? 'state-active' : '' ]">{{ scope.row.folder_location ? '已入': '未入' }}</span>
<!-- is_storage 为空的情况下即没装盒 / 0 未入 / 1 待入 / 2 已入 / 3 待出--> <!-- is_storage 为空的情况下即没装盒 / 0 未入 / 1 待入 / 2 已入 / 3 待出-->
<!-- <span :class="['row-state', 'row-warehousing', (storageTxt[scope.$index] === '已入' )? 'state-active' : '' ]">{{ storageTxt[scope.$index] }}</span> --> <!-- <span :class="['row-state', 'row-warehousing', (storageTxt[scope.$index] === '已入' )? 'state-active' : '' ]">{{ storageTxt[scope.$index] }}</span> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="!isRecycle" label="借阅" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template>
<span class="row-state row-lending state-active">已借</span>
<el-table-column v-if="!isRecycle && selectedCategory.arrangeType===1" label="借阅" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template slot-scope="scope">
<span :class="['row-state', 'row-lending', scope.row.is_borrow ? 'state-active' : '' ]">{{ scope.row.is_borrow ? '已借': '未借' }}</span>
<!-- <span class="row-state row-lending state-active">已借</span> -->
<!-- is_borrow 4 已归还 / 为空 - 未加入待借列表 - 在库 / 2 待借阅在待借列表/借出确认列表 - 待借 / 1待登记 - 不可借- 表示 / 3 待归还 - 已借 --> <!-- is_borrow 4 已归还 / 为空 - 未加入待借列表 - 在库 / 2 待借阅在待借列表/借出确认列表 - 待借 / 1待登记 - 不可借- 表示 / 3 待归还 - 已借 -->
<!-- <span :class="['row-state', 'row-lending', (borrowTxt[scope.$index] === '已借' )? 'state-active' : '' ]">{{ borrowTxt[scope.$index] }}</span> --> <!-- <span :class="['row-state', 'row-lending', (borrowTxt[scope.$index] === '已借' )? 'state-active' : '' ]">{{ borrowTxt[scope.$index] }}</span> -->
</template> </template>
</el-table-column> </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-open', scope.row.open_state ? 'state-active' : '' ]">{{ scope.row.open_state ? '已开放': '未开放' }}</span>
</template>
</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-physical', scope.row.is_entity === 1 ? 'state-active' : '' ]">{{ scope.row.is_entity === 1 ? '有': '无' }}</span>
</template>
</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 === 1 ? 'state-active' : '' ]">{{ processedStatusText(scope.row.process_status) }}</span>
</template>
</el-table-column>
</el-table> </el-table>
<!--分页组件--> <!--分页组件-->
<el-pagination <el-pagination
@ -151,6 +152,29 @@ export default {
parentId: null parentId: null
} }
}, },
computed: {
processedStatusText() {
return function(status) {
let text = ''
if (status === 1) {
text = '空闲'
} else if (status === 2) {
text = '退回'
} else if (status === 3) {
text = '开放'
} else if (status === 4) {
text = '销毁'
} else if (status === 5) {
text = '利用'
} else if (status === 6) {
text = '内部移交'
} else if (status === 7) {
text = '外部移交'
}
return text
}
}
},
watch: { watch: {
selectedCategory: function(newValue, oldValue) { selectedCategory: function(newValue, oldValue) {
this.selections = [] this.selections = []

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

@ -94,6 +94,10 @@ export default {
isRecycle: { isRecycle: {
type: Boolean, type: Boolean,
default: false default: false
},
isdel: {
type: Boolean,
default: false
} }
}, },
provide() { provide() {

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

@ -50,22 +50,50 @@
</template> </template>
</el-table-column> </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-binding', scope.row.tid ? 'state-active' : '' ]">{{ scope.row.tid ? '已绑': '未绑' }}</span>
</template>
</el-table-column>
<el-table-column v-if="!isRecycle" label="装盒" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' "> <el-table-column v-if="!isRecycle" label="装盒" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<!-- state-active 已装/已入/已借/已绑 --> <!-- state-active 已装/已入/已借/已绑 -->
<template>
<template slot-scope="scope">
<!-- 未装 / 已装 --> <!-- 未装 / 已装 -->
<span class="row-state row-packing state-active">已装</span>
<!-- <span :class="['row-state', 'row-packing', scope.row.case_no ? 'state-active' : '' ]">{{ scope.row.case_no ? '已装': '未装' }}</span> -->
<span :class="['row-state', 'row-packing', scope.row.case_no ? 'state-active' : '' ]">{{ scope.row.case_no ? '已装': '未装' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="!isRecycle" label="入库" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' "> <el-table-column v-if="!isRecycle" label="入库" width="88" align="center" :fixed="parentsData.fixedStatusBar ? false : 'right' ">
<template>
<span class="row-state row-warehousing state-active">已入</span>
<template slot-scope="scope">
<!-- <span class="row-state row-warehousing state-active">已入</span> -->
<span :class="['row-state', 'row-warehousing', scope.row.folder_location ? 'state-active' : '' ]">{{ scope.row.folder_location ? '已入': '未入' }}</span>
<!-- is_storage 为空的情况下即没装盒 / 0 未入 / 1 待入 / 2 已入 / 3 待出--> <!-- is_storage 为空的情况下即没装盒 / 0 未入 / 1 待入 / 2 已入 / 3 待出-->
<!-- <span :class="['row-state', 'row-warehousing', (storageTxt[scope.$index] === '已入' )? 'state-active' : '' ]">{{ storageTxt[scope.$index] }}</span> --> <!-- <span :class="['row-state', 'row-warehousing', (storageTxt[scope.$index] === '已入' )? 'state-active' : '' ]">{{ storageTxt[scope.$index] }}</span> -->
</template> </template>
</el-table-column> </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-lending', scope.row.is_borrow ? 'state-active' : '' ]">{{ scope.row.is_borrow ? '已借': '未借' }}</span>
<!-- <span class="row-state row-lending state-active">已借</span> -->
<!-- is_borrow 4 已归还 / 为空 - 未加入待借列表 - 在库 / 2 待借阅在待借列表/借出确认列表 - 待借 / 1待登记 - 不可借- 表示 / 3 待归还 - 已借 -->
<!-- <span :class="['row-state', 'row-lending', (borrowTxt[scope.$index] === '已借' )? 'state-active' : '' ]">{{ borrowTxt[scope.$index] }}</span> -->
</template>
</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-open', scope.row.open_state ? 'state-active' : '' ]">{{ scope.row.open_state ? '已开放': '未开放' }}</span>
</template>
</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-physical', scope.row.is_entity === 1 ? 'state-active' : '' ]">{{ scope.row.is_entity === 1 ? '有': '无' }}</span>
</template>
</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 === 1 ? 'state-active' : '' ]">{{ processedStatusText(scope.row.process_status) }}</span>
</template>
</el-table-column>
</el-table> </el-table>
<!--分页组件--> <!--分页组件-->
<el-pagination <el-pagination
@ -128,6 +156,29 @@ export default {
parentId: null parentId: null
} }
}, },
computed: {
processedStatusText() {
return function(status) {
let text = ''
if (status === 1) {
text = '空闲'
} else if (status === 2) {
text = '退回'
} else if (status === 3) {
text = '开放'
} else if (status === 4) {
text = '销毁'
} else if (status === 5) {
text = '利用'
} else if (status === 6) {
text = '内部移交'
} else if (status === 7) {
text = '外部移交'
}
return text
}
}
},
watch: { watch: {
selectedCategory: function(newValue, oldValue) { selectedCategory: function(newValue, oldValue) {
}, },

5
src/views/archivesManage/managementLibrary/mixins/index.js

@ -1,4 +1,4 @@
import { FetchInitCategoryViewTable, FetchInitCategoryView } from '@/api/collect/collect'
import { FetchInitCategoryViewTable, FetchInitCategoryView } from '@/api/archivesManage/library'
import { crud } from '@crud/crud' import { crud } from '@crud/crud'
export const manageLibraryCrud = { export const manageLibraryCrud = {
mixins: [crud()], mixins: [crud()],
@ -39,6 +39,7 @@ export const manageLibraryCrud = {
localStorage.setItem('statusBarFixedType', val) localStorage.setItem('statusBarFixedType', val)
}, },
handleSearch(categoryLevel) { handleSearch(categoryLevel) {
console.log('selectStatus', this.selectStatus)
this.parentsData.$refs.classifyTree.setCurrentKey(null) this.parentsData.$refs.classifyTree.setCurrentKey(null)
this.smartQuery = { this.smartQuery = {
'retention': null, 'retention': null,
@ -110,6 +111,8 @@ export const manageLibraryCrud = {
'parentId': parentsId, 'parentId': parentsId,
'categoryId': this.selectedCategory.id, 'categoryId': this.selectedCategory.id,
'categoryLevel': categoryLevel, 'categoryLevel': categoryLevel,
'isdel': this.parentsData.isdel,
'checkTypes': this.selectStatus && this.selectStatus.length !== 0 ? this.selectStatus.join(',') : null,
'search': this.query.search, 'search': this.query.search,
'retention': this.smartQuery.retention, 'retention': this.smartQuery.retention,
'security_class': this.smartQuery.security_class, 'security_class': this.smartQuery.security_class,

184
src/views/archivesManage/managementLibrary/module/collectHeader.vue

@ -1,22 +1,31 @@
<template> <template>
<div> <div>
<div class="collect-header">
<div class="collect-header contorl-header">
<h4 :class="classType">{{ collectTitle }} </h4> <h4 :class="classType">{{ collectTitle }} </h4>
<div class="collect-filter"> <div class="collect-filter">
<el-select <el-select
v-if="isTitleType === 3 && selectedCategory.arrangeType !== 3"
v-if="isTitleType !== 6 && isTitleType !== 2"
v-model="selectStatus" v-model="selectStatus"
multiple multiple
collapse-tags collapse-tags
style="margin-right: 10px; width: 160px;" style="margin-right: 10px; width: 160px;"
placeholder="请选择" placeholder="请选择"
@change="handleSearch(collectLevel)"
> >
<el-option
v-for="item in statusOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-option-group
v-for="group in statusOptions"
v-show="!(selectedCategory.arrangeType === 2 && isTitleType===3 && (group.label === '标签状态' || group.label === '借阅状态'))"
:key="group.label"
:label="group.label"
>
<el-option
v-for="item in group.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-option-group>
</el-select> </el-select>
<treeselect <treeselect
v-if="selectedCategory.arrangeType === 3 && isTitleType !== 4 && isTitleType !== 6" v-if="selectedCategory.arrangeType === 3 && isTitleType !== 4 && isTitleType !== 6"
@ -214,40 +223,124 @@ export default {
return { return {
statusOptions: [ statusOptions: [
{ {
value: '未装盒',
label: '未装盒'
},
{
value: '已装盒',
label: '已装盒'
label: '标签状态',
options: [
{
value: 1,
label: '未绑定'
},
{
value: 2,
label: '已绑定'
}
]
}, },
{ {
value: '未入库',
label: '未入库'
label: '装盒状态',
options: [
{
value: 3,
label: '未装盒'
},
{
value: 4,
label: '已装盒'
}
]
}, },
{ {
value: '已入库',
label: '已入库'
label: '入库状态',
options: [
{
value: 5,
label: '未入库'
},
{
value: 6,
label: '待入库'
},
{
value: 7,
label: '待出库'
},
{
value: 8,
label: '已入库'
}
]
}, },
{ {
value: '无实体',
label: '无实体'
label: '借阅状态',
options: [
{
value: 9,
label: '实体在库'
},
{
value: 10,
label: '实体待借'
},
{
value: 11,
label: '实体已借'
}
]
}, },
{ {
value: '有实体',
label: '有实体'
label: '实体状态',
options: [
{
value: 12,
label: '无实体'
},
{
value: 13,
label: '有实体'
}
]
}, },
{ {
value: '实体在库',
label: '实体在库'
label: '开放状态',
options: [
{
value: 14,
label: '未开放'
},
{
value: 15,
label: '已开放'
}
]
}, },
{ {
value: '实体待借',
label: '实体待借'
},
{
value: '实体已借',
label: '实体已借'
label: '审批锁定',
options: [
{
value: 16,
label: '空闲'
},
{
value: 17,
label: '退回'
},
{
value: 18,
label: '开放'
},
{
value: 19,
label: '销毁'
}, {
value: 20,
label: '利用'
}, {
value: 21,
label: '内部移交'
}, {
value: 22,
label: '外部移交'
}
]
} }
], ],
selectStatus: null, selectStatus: null,
@ -329,6 +422,7 @@ export default {
}, },
methods: { methods: {
resetQuery() { resetQuery() {
this.selectStatus = []
this.query = { this.query = {
'search': null, 'search': null,
'project_class': null, 'project_class': null,
@ -630,9 +724,15 @@ export default {
}, },
// / // /
handlePackingBox(type) { handlePackingBox(type) {
if (this.selections.length === 0) {
this.$message('您还未勾选需要操作的条目,请先确认!')
return false
if (this.selectedCategory.arrangeType === 2) {
if (this.selections[0].child === 0) {
this.$message.error('当前选中的档案无相关卷内文件,不可装盒!')
return
}
}
if (this.selections[0].case_no) {
this.$message.error('当前档案已装盒,请勿重复操作!')
return
} }
// name // name
// const existsNotEmpty = this.selections.some(item => item.caseNum) // const existsNotEmpty = this.selections.some(item => item.caseNum)
@ -715,5 +815,21 @@ export default {
.manage-fixed-style{ .manage-fixed-style{
margin-bottom: 30px; margin-bottom: 30px;
} }
.contorl-header{
flex-wrap: wrap;
height: 94px;
.head-search{
margin-right: 0 !important;
margin-bottom: 10px !important;
}
.collect-menu{
width: 100%;
display: flex;
justify-content: flex-end;
.el-submenu{
margin-right: 0;
margin-left: 10px;
}
}
}
</style> </style>

263
src/views/archivesManage/managementLibrary/module/packingBox/index.vue

@ -171,28 +171,9 @@
</template> </template>
<script> <script>
// import { FetchInitCartoningList, FetchCartoning } from '@/api/archivesManage/caseManage'
// import { FetchInitArchivesView } from '@/api/archivesManage/archivesList'
import { FetchInitCartoningList, FetchCartoning } from '@/api/archivesManage/caseManage'
import { FetchInitArchivesView } from '@/api/archivesManage/archivesList'
import { header, form } from '@crud/crud' import { header, form } from '@crud/crud'
const data = [
{
'id': '02877E5A6559BEDE24B227',
'caseName': 'ZL-2023-1',
'caseType': 0,
'tid': null,
'barcode': null,
'shelfId': null,
'folderLocation': null,
'folderLocationDetails': null,
'depositNum': 0,
'storageType': 0,
'storageTime': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1695628425000,
'update_time': 1702971551000
}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}
]
export default { export default {
name: 'Packing', name: 'Packing',
components: { }, components: { },
@ -238,8 +219,6 @@ export default {
created() { created() {
// select - // select -
this.inputSelect = this.queryOption[0].value this.inputSelect = this.queryOption[0].value
this.tableData = data
this.selectTableData = data
}, },
methods: { methods: {
// -select // -select
@ -269,140 +248,140 @@ export default {
this.tid = null this.tid = null
break break
} }
// const params = {
// 'tid': this.tid,
// 'caseName': this.caseName,
// 'barcode': this.barcode,
// 'page': 0,
// 'size': 10
// }
// FetchInitCartoningList(params).then(res => {
// this.tableData = res.content
// })
const params = {
'tid': this.tid,
'caseName': this.caseName,
'barcode': this.barcode,
'page': 0,
'size': 10
}
FetchInitCartoningList(params).then(res => {
this.tableData = res.content
})
}, },
async getPackingFileList() { async getPackingFileList() {
// let categoryId
// if (this.selectedCategory.isType === 2) {
// categoryId = this.selectedCategory.children[0].children[0].id
// } else {
// categoryId = this.selectedCategory.children[0].id
// }
// const params = {
// 'categoryId': categoryId,
// 'parentsId': this.recycleMain.anjuanSelection.id,
// 'isdel': false,
// 'page': 0,
// 'size': null,
// 'sort': null,
// 'queryType': null,
// 'queryTitle': null,
// 'itemNo': null,
// 'archiveCtgNo': null,
// 'responsibleby': null,
// 'archiveNo': null,
// 'archiveYear': null,
// 'department': null,
// 'retention': null,
// 'securityClass': null,
// 'organizationMatter': null
// }
// await FetchInitArchivesView(params).then(data => {
// if (data) {
// this.packingData = data.list.content
// this.archivesTable = data.list.content
// }
// })
let categoryId
if (this.selectedCategory.isType === 2) {
categoryId = this.selectedCategory.children[0].children[0].id
} else {
categoryId = this.selectedCategory.children[0].id
}
const params = {
'categoryId': categoryId,
'parentsId': this.recycleMain.anjuanSelection.id,
'isdel': false,
'page': 0,
'size': null,
'sort': null,
'queryType': null,
'queryTitle': null,
'itemNo': null,
'archiveCtgNo': null,
'responsibleby': null,
'archiveNo': null,
'archiveYear': null,
'department': null,
'retention': null,
'securityClass': null,
'organizationMatter': null
}
await FetchInitArchivesView(params).then(data => {
if (data) {
this.packingData = data.list.content
this.archivesTable = data.list.content
}
})
}, },
// api // api
async handleCartoning(row) { async handleCartoning(row) {
// let jnCategoryId
// let archivesParentsId
// if (this.caseData.selectedCategory.isType === 5) {
// this.packingData = this.caseData.selections
// jnCategoryId = this.caseData.selectedCategory.id
// } else {
// await this.getPackingFileList()
// if (this.caseData.selectedCategory.isType === 2) {
// jnCategoryId = this.caseData.selectedCategory.children[0].children[0].id
// } else {
// jnCategoryId = this.caseData.selectedCategory.children[0].id
// }
// archivesParentsId = this.caseData.selections[0].id
// }
// const arrParams = this.packingData.map(item => {
// const json = {}
// json.archivesId = item.id
// if (this.caseData.selectedCategory.isType === 5) {
// json.archivesParentsId = item.id
// } else {
// json.archivesParentsId = archivesParentsId
// }
// json.caseId = row.id
// json.caseName = row.caseName
// json.categoryId = jnCategoryId
// return json
// })
// await this.FetchCartioning(arrParams)
let jnCategoryId
let archivesParentsId
if (this.caseData.selectedCategory.isType === 5) {
this.packingData = this.caseData.selections
jnCategoryId = this.caseData.selectedCategory.id
} else {
await this.getPackingFileList()
if (this.caseData.selectedCategory.isType === 2) {
jnCategoryId = this.caseData.selectedCategory.children[0].children[0].id
} else {
jnCategoryId = this.caseData.selectedCategory.children[0].id
}
archivesParentsId = this.caseData.selections[0].id
}
const arrParams = this.packingData.map(item => {
const json = {}
json.archivesId = item.id
if (this.caseData.selectedCategory.isType === 5) {
json.archivesParentsId = item.id
} else {
json.archivesParentsId = archivesParentsId
}
json.caseId = row.id
json.caseName = row.caseName
json.categoryId = jnCategoryId
return json
})
await this.FetchCartioning(arrParams)
}, },
FetchCartioning(arrParams) { FetchCartioning(arrParams) {
// FetchCartoning(arrParams).then(res => {
// this.$message.success('')
// this.packingVisible = false
// this.crud.refresh()
// this.tableData = []
// this.caseQuery[this.inputSelect] = ''
// })
FetchCartoning(arrParams).then(res => {
this.$message.success('装盒成功!')
this.packingVisible = false
this.crud.refresh()
this.tableData = []
this.caseQuery[this.inputSelect] = ''
})
}, },
// //
handlePartParking(row, index) { handlePartParking(row, index) {
// if (!this.selections.length) {
// this.$message.error('')
// return
// }
// //
// if (this.selectTableData.findIndex(val => val.id === row.id) === -1) {
// this.selectTableData.push(row)
// }
// this.tableData.splice(index, 1)
// this.selections.forEach(item => {
// item.caseId = row.id
// item.caseName = row.caseName
// this.archivesTable.splice(this.archivesTable.findIndex(val => val.id === item.id), 1)
// this.selectArchivesTable.push(item)
// })
if (!this.selections.length) {
this.$message.error('请选择要装盒的档案!')
return
}
//
if (this.selectTableData.findIndex(val => val.id === row.id) === -1) {
this.selectTableData.push(row)
}
this.tableData.splice(index, 1)
this.selections.forEach(item => {
item.caseId = row.id
item.caseName = row.caseName
this.archivesTable.splice(this.archivesTable.findIndex(val => val.id === item.id), 1)
this.selectArchivesTable.push(item)
})
}, },
// //
cancelParking(row, index) { cancelParking(row, index) {
// this.tableData.unshift(row)
// this.selectTableData.splice(index, 1)
// this.selectArchivesTable.forEach((item, i) => {
// if (item.caseId === row.id) {
// this.archivesTable.push(item)
// }
// })
// this.selectArchivesTable.splice(this.selectArchivesTable.findIndex((item, i) => item.caseId === row.id), this.archivesTable.length)
this.tableData.unshift(row)
this.selectTableData.splice(index, 1)
this.selectArchivesTable.forEach((item, i) => {
if (item.caseId === row.id) {
this.archivesTable.push(item)
}
})
this.selectArchivesTable.splice(this.selectArchivesTable.findIndex((item, i) => item.caseId === row.id), this.archivesTable.length)
}, },
handleComfireCartoning() { handleComfireCartoning() {
// if (this.archivesTable.length) {
// this.$message.error('')
// return
// }
// let jnCategoryId
// if (this.caseData.selectedCategory.isType === 2) {
// jnCategoryId = this.caseData.selectedCategory.children[0].children[0].id
// } else {
// jnCategoryId = this.caseData.selectedCategory.children[0].id
// }
// const arrParams = this.selectArchivesTable.map(item => {
// const json = {}
// json.archivesId = item.id
// json.archivesParentsId = this.caseData.selections[0].id
// json.caseId = item.caseId
// json.caseName = item.caseName
// json.categoryId = jnCategoryId
// return json
// })
// this.FetchCartioning(arrParams)
if (this.archivesTable.length) {
this.$message.error('左侧档案待选列表全部装盒完成才可保存')
return
}
let jnCategoryId
if (this.caseData.selectedCategory.isType === 2) {
jnCategoryId = this.caseData.selectedCategory.children[0].children[0].id
} else {
jnCategoryId = this.caseData.selectedCategory.children[0].id
}
const arrParams = this.selectArchivesTable.map(item => {
const json = {}
json.archivesId = item.id
json.archivesParentsId = this.caseData.selections[0].id
json.caseId = item.caseId
json.caseName = item.caseName
json.categoryId = jnCategoryId
return json
})
this.FetchCartioning(arrParams)
}, },
clearTableData() { clearTableData() {
this.tableData = [] this.tableData = []

3
src/views/archivesManage/recycled/index.vue

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<CollectModule :is-recycle="isRecycle" />
<CollectModule :is-recycle="isRecycle" :isdel="isdel" />
</div> </div>
</template> </template>
@ -12,6 +12,7 @@ export default {
components: { CollectModule }, components: { CollectModule },
data() { data() {
return { return {
isdel: true,
isRecycle: true isRecycle: true
} }
}, },

106
src/views/components/BindingTagDlg.vue

@ -71,7 +71,7 @@
</el-dialog> </el-dialog>
<!-- 是否覆盖 --> <!-- 是否覆盖 -->
<el-dialog ref="coverBindingDialog" title="覆盖绑定" :append-to-body="true" :visible.sync="coverBindingVisible" :before-close="handleCoverBindingClose">
<el-dialog ref="coverBindingDialog" class="coverDialog" title="覆盖绑定" :append-to-body="true" :visible.sync="coverBindingVisible" :before-close="handleCoverBindingClose">
<span class="dialog-right-top" /> <span class="dialog-right-top" />
<span class="dialog-left-bottom" /> <span class="dialog-left-bottom" />
<div class="setting-dialog"> <div class="setting-dialog">
@ -89,7 +89,82 @@
<script> <script>
import RFID from '@/api/RFID/RFID' import RFID from '@/api/RFID/RFID'
import { bingdingLabel } from '@/api/storeManage/tagManage/bindTagList'
import { bingdingLabel } from '@/api/archivesManage/bindTagList'
const devData = {
'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': null,
'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
}
export default { export default {
name: 'BindingTagDlg', name: 'BindingTagDlg',
components: {}, components: {},
@ -153,7 +228,10 @@ export default {
}, },
async checkStatus(param) { async checkStatus(param) {
return RFID.checkStatus(param).then((res) => { return RFID.checkStatus(param).then((res) => {
res = JSON.parse(res)
// XU
// res = JSON.parse(res)
res = JSON.parse('{"code": "0","message": "设备连接成功"}')
if (res.code && res.code === '0') { if (res.code && res.code === '0') {
this.step = 2 this.step = 2
this.step1Message = '设备连接成功' this.step1Message = '设备连接成功'
@ -171,7 +249,10 @@ export default {
readEpc(param) { readEpc(param) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
RFID.readEpc(param).then(res => { RFID.readEpc(param).then(res => {
res = JSON.parse(res)
// XU
// res = JSON.parse(res)
// , { "epc": "AEF8830626D2478D875D8880", "tid": "E28068942000400B728799B1", "eas": 1, "type": 2, "codeid": "F8830626D2478D875D8880" }, { "epc": "C204300020000BEBC2160005", "tid": "E28068942000400B728799AF", "eas": -1, "type": -1, "codeid": "" }, { "epc": "3834AB70C6DC30C6DC30C318", "tid": "E28011052000765B612B0A9D", "eas": 0, "type": 3, "codeid": "MJ-01-001-0001" }, { "epc": "9EF8830626D2478D875DAA30", "tid": "E28068942000500B728799B0", "eas": 1, "type": 1, "codeid": "F8830626D2478D875DAA30" }
res = JSON.parse('{ "code": "0", "message": "读epc成功", "data": [ { "epc": "982CAB70C6DC30C6DC30C31CB4D76DF8", "tid": "E280689420004015E1B708D6", "eas": 1, "type": 1, "codeid": "KJ-01-001-0001245678" }] }')
if (res.code && res.code === '0') { if (res.code && res.code === '0') {
this.step = 3 this.step = 3
this.errorStep = 0 this.errorStep = 0
@ -239,7 +320,9 @@ export default {
resolve() resolve()
} else if (res === 1) { } else if (res === 1) {
let writeRes = await RFID.writeEPC({ op: 'RFID_WriteEPC', sDevID: this.devId, EAS: '1', Type: this.bindingType, Code: this.bindingId, Tid: this.readData.tid, ip: this.devIp }) let writeRes = await RFID.writeEPC({ op: 'RFID_WriteEPC', sDevID: this.devId, EAS: '1', Type: this.bindingType, Code: this.bindingId, Tid: this.readData.tid, ip: this.devIp })
writeRes = JSON.parse(writeRes)
// XU
// writeRes = JSON.parse(writeRes)
writeRes = JSON.parse('{"code": "0","message": "绑定成功"}')
if (writeRes.code === '0') { if (writeRes.code === '0') {
this.step = 5 this.step = 5
resolve() resolve()
@ -278,7 +361,10 @@ export default {
this.errorStep = 1 this.errorStep = 1
reject('获取mac地址失败') reject('获取mac地址失败')
} else { } else {
const dev = await RFID.getDeviceIdByMac(mac)
// XU
// const dev = await RFID.getDeviceIdByMac(mac)
const dev = devData
console.log(dev)
if (!dev || dev === JSON.stringify({}) || !dev.deviceId) { if (!dev || dev === JSON.stringify({}) || !dev.deviceId) {
this.step1Message = '当前电脑未绑定读写器,请到档案设备里进行绑定' this.step1Message = '当前电脑未绑定读写器,请到档案设备里进行绑定'
this.errorStep = 1 this.errorStep = 1
@ -306,7 +392,8 @@ export default {
// //
handleClose(done) { handleClose(done) {
this.coverBindingVisible = false this.coverBindingVisible = false
this.$emit('refresh')
// this.$emit('refresh')
this.$emit('close-dialog')
done() done()
this.initData() this.initData()
if (this.timer) { if (this.timer) {
@ -330,4 +417,9 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.coverDialog{
::v-deep .el-dialog{
width: 500px !important;
}
}
</style> </style>

275
src/views/components/archivesDetail/archivesInfo/index.vue

@ -0,0 +1,275 @@
<template>
<el-dialog class="detail-dialog" :title="detailTitle" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="archivesInfoVisible" :before-close="handleClose">
<!-- <span class="dialog-right-top" />
<span class="dialog-left-bottom" /> -->
<div class="setting-dialog">
<div class="detail-tab tab-content">
<!-- tab -->
<ul class="tab-nav">
<li :class="{'active-tab-nav': archivesTabIndex == 0}" @click="changeActiveTab(0)">基本信息</li>
<li v-if="isHasFile" :class="{'active-tab-nav': archivesTabIndex == 1}" @click="changeActiveTab(1)">原文列表</li>
<li v-if="!isHasFile && isTitleType === 3" :class="{'active-tab-nav': archivesTabIndex == 5}" @click="changeActiveTab(5)">文件列表</li>
<li v-if="!isHasFile && isTitleType === 2" :class="{'active-tab-nav': archivesTabIndex == 5}" @click="changeActiveTab(5)">案卷列表</li>
<li :class="{'active-tab-nav': archivesTabIndex == 2}" @click="changeActiveTab(2)">元数据</li>
<li v-if="isFourTest" :class="{'active-tab-nav': archivesTabIndex == 3}" @click="changeActiveTab(3)">四性检测</li>
<li v-if="isFourTest && isHasFile" :class="{'active-tab-nav': archivesTabIndex == 4}" @click="changeActiveTab(4)">操作记录</li>
</ul>
<!-- 基本信息 -->
<div v-if="archivesTabIndex==0" class="base-info item-content">
<el-row>
<el-col v-for="(item,index) in archivesDetailsData" :key="index" :span="item.isLine ? 24 : 12" class="base-info-item">
<span>{{ item.fieldCnName }}</span>
<p :style="{ width: ( item.editLength ? item.editLength+'px' : '' ), flex: ( !item.editLength ? 1 : '' )}">{{ item.context }}</p>
</el-col>
</el-row>
</div>
<!-- 附件 -->
<UploadFile v-if="archivesTabIndex==1" ref="uploadFile" class="item-content" :is-upload-detail="false" :selected-category="selectedCategory" :arc-id="arcId" />
<!-- 元数据 -->
<div v-if="archivesTabIndex==2" class="metadata-cont item-content">
<pre v-highlightjs="xml_show">
<code class="highlight_s">
{[xml_show]}
</code>
</pre>
</div>
<FourTestInfo v-if="archivesTabIndex===3" />
<HandleInfo v-if="archivesTabIndex===4" />
<ArchivesListModule v-show="archivesTabIndex===5" ref="archivesListModuleRef" :selected-category="selectedCategory" :is-title-type="isTitleType" />
</div>
</div>
</el-dialog>
</template>
<script>
import { form } from '@crud/crud'
import { FetchDetailsById, FetchArchivesMetadata } from '@/api/collect/collect'
import UploadFile from '../uploadFile/index'
import FourTestInfo from '../fourTestInfo/index'
import HandleInfo from '../handleInfo/index'
export default {
name: 'ArchivesInfo',
components: { UploadFile, FourTestInfo, HandleInfo },
mixins: [
form({})
],
props: {
selectedCategory: {
type: Object,
default: function() {
return {}
}
},
arcId: {
type: String,
default: function() {
return ''
}
},
isTitleType: {
type: Number,
default: 2
}
},
data() {
return {
detailTitle: '',
isHasFile: false, // /
isFourTest: false,
isDetailsInfo: false, // 5
archivesInfoVisible: false,
archivesTabIndex: 0,
archivesDetailsData: [],
archivesDetailsMetadata: [],
xml_show: null
}
},
created() {
},
mounted() {
},
methods: {
getDetial(collectLevel, rowId) {
const params = {
'categoryId': this.selectedCategory.id,
'categoryLevel': collectLevel,
'id': rowId
}
FetchDetailsById(params).then(data => {
this.archivesDetailsData = data.showFiled
.filter(field => field.fieldName in data.echo)
.map(field => ({
editLength: field.editLength,
isLine: field.isLine,
fieldCnName: field.fieldCnName,
fieldName: field.fieldName,
context: data.echo[field.fieldName]
}))
})
const metaDataParams = {
'categoryId': this.selectedCategory.id,
'categoryLevel': collectLevel,
'archivesId': rowId
}
FetchArchivesMetadata(metaDataParams).then(data => {
this.archivesDetailsMetadata = data
})
},
setXml() {
const xmlstr = this.archivesDetailsMetadata
this.xml_show = this.showXml(xmlstr)
},
changeActiveTab(index) {
this.archivesTabIndex = index
if (this.archivesTabIndex === 2) {
this.setXml()
} else if (this.archivesTabIndex === 5) {
if (this.isTitleType === 2) {
this.$refs.archivesListModuleRef.detailLevel = 2
} else if (this.isTitleType === 3) {
this.$refs.archivesListModuleRef.detailLevel = 3
} else {
this.$refs.archivesListModuleRef.detailLevel = 4
}
this.$refs.archivesListModuleRef.parentId = this.arcId
this.$refs.archivesListModuleRef.isDetail = true
this.$refs.archivesListModuleRef.getViewTable()
}
this.$nextTick(() => {
if (this.$refs.uploadFile) {
this.$refs.uploadFile.tableData = []
this.$refs.uploadFile.getFileList()
}
})
},
// -
handleClose(done) {
this.archivesInfoVisible = false
localStorage.removeItem('collectLevelList')
done()
},
// xml
showXml(str) {
var that = this
var text = str
//
text =
'\n' +
text
.replace(/(<\w+)(\s.*?>)/g, function($0, name, props) {
return name + ' ' + props.replace(/\s+(\w+=)/g, ' $1')
})
.replace(/>\s*?</g, '>\n<')
//
text = text
.replace(/\n/g, '\r')
.replace(/<!--(.+?)-->/g, function($0, text) {
var ret = '<!--' + escape(text) + '-->'
return ret
})
.replace(/\r/g, '\n')
//
var rgx = /\n(<(([^\?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(?:(\/)>)|(?:<(\/)\2>)))?)/gm
var nodeStack = []
var output = text.replace(rgx, function(
$0,
all,
name,
isBegin,
isCloseFull1,
isCloseFull2,
isFull1,
isFull2
) {
var isClosed =
isCloseFull1 === '/' ||
isCloseFull2 === '/' ||
isFull1 === '/' ||
isFull2 === '/'
var prefix = ''
if (isBegin === '!') {
prefix = that.getPrefix(nodeStack.length)
} else {
if (isBegin !== '/') {
prefix = that.getPrefix(nodeStack.length)
if (!isClosed) {
nodeStack.push(name)
}
} else {
nodeStack.pop()
prefix = that.getPrefix(nodeStack.length)
}
}
var ret = '\n' + prefix + all
return ret
})
var outputText = output.substring(1)
//
outputText = outputText
.replace(/\n/g, '\r')
.replace(/(\s*)<!--(.+?)-->/g, function($0, prefix, text) {
if (prefix.charAt(0) === '\r') prefix = prefix.substring(1)
text = unescape(text).replace(/\r/g, '\n')
var ret =
'\n' + prefix + '<!--' + text.replace(/^\s*/gm, prefix) + '-->'
return ret
})
outputText = outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n')
return outputText
},
getPrefix(prefixIndex) {
var span = ' '
var output = []
for (var i = 0; i < prefixIndex; ++i) {
output.push(span)
}
return output.join('')
}
}
}
</script>
<style lang="scss" scoped>
.base-info,
.metadata-cont{
background-color: #F6F8FC;
}
//
.base-info{
padding: 20px 0;
overflow: hidden;
overflow-y: scroll;
.base-info-item{
display: flex;
flex-direction: row;
margin-bottom: 20px;
color: #545B65;
span{
display: block;
width: 120px;
margin-right: 5px;
text-align: right;
color: #0C0E1E;
}
}
}
code.hljs {
font-size: 12px;
color: #0C0E1E !important;
height: 530px !important;
}
::v-deep .hljs-name{
color: #0C0E1E !important;
}
.base-info .base-info-item span.el-tag{
width: auto;
color: #fff;
}
.detail-tab .tab-nav{
margin: 10px 0 18px 0;
}
</style>

119
src/views/components/archivesDetail/fourTestInfo/index.vue

@ -0,0 +1,119 @@
<template>
<!--四性检测-档案详情内-->
<div class="fourTest-container">
<el-table :data="tableData" style="min-width: 100%" height="calc(100vh - 440px)">
<el-table-column prop="admin" label="检测人" min-width="60" />
<el-table-column prop="createTime" label="检测时间" min-width="180">
<template slot-scope="scope">
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="truth" label="真实性" align="center">
<template slot-scope="scope">
<span v-if="scope.row.truth===1" class="four-icon iconfont icon-zhengque" />
<span v-else class="four-icon iconfont icon-cuowu" />
</template>
</el-table-column>
<el-table-column prop="integrity" label="完整性" align="center">
<template slot-scope="scope">
<span v-if="scope.row.integrity===1" class="four-icon iconfont icon-zhengque" />
<span v-else class="four-icon iconfont icon-cuowu" />
</template>
</el-table-column>
<el-table-column prop="availability" label="可用性" align="center">
<template slot-scope="scope">
<span v-if="scope.row.availability===1" class="four-icon iconfont icon-zhengque" />
<span v-else class="four-icon iconfont icon-cuowu" />
</template>
</el-table-column>
<el-table-column prop="safety" label="安全性" align="center">
<template slot-scope="scope">
<span v-if="scope.row.safety===1" class="four-icon iconfont icon-zhengque" />
<span v-else class="four-icon iconfont icon-cuowu" />
</template>
</el-table-column>
<el-table-column prop="createDate" label="检测结果" min-width="220">
<template slot-scope="scope">
<div>共检测{{ scope.row.totalNum }}<span class="testSuccess">通过{{ scope.row.successNum }}</span><span class="testError">未通过{{ scope.row.errorNum }}</span></div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination
:current-page="page.page"
:total="page.total"
:page-size="page.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleSizeChange"
@current-change="handleCurrentPage"
/>
</div>
</template>
<script>
const data = [
{
'id': '005E76FEC5A2AAB368CA1F',
'admin': 'admin',
'archive_no': 'YXK-2022-JJ-001 ',
'maintitle': '文书档案001',
'createTime': 1660706815000,
'truth': 0,
'integrity': 1,
'availability': 0,
'safety': 0,
'totalNum': 5,
'successNum': 1,
'errorNum': 0
},
{
'id': '005E76FEC5A2AAB368CA1F2',
'admin': 'admin',
'archive_no': 'YXK-2022-JJ-002 ',
'maintitle': '文书档案001',
'createTime': 1660706815000,
'truth': 0,
'integrity': 1,
'availability': 1,
'safety': 0,
'totalNum': 5,
'successNum': 1,
'errorNum': 0
}
]
export default {
name: 'FourTestInfo',
components: { },
mixins: [],
data() {
return {
tableData: [{}, {}],
page: {
page: 1,
size: 10,
total: 0
}
}
},
created() {
},
mounted() {
this.tableData = data
},
methods: {
handleSizeChange(size) {
this.page.size = size
this.page.page = 1
},
handleCurrentPage(val) {
this.page.page = val
}
}
}
</script>
<style lang='scss' scoped>
@import "~@/assets/styles/collect-reorganizi.scss";
</style>

81
src/views/components/archivesDetail/handleInfo/index.vue

@ -0,0 +1,81 @@
<template>
<!--档案详情-操作记录-->
<div class="fourTest-container">
<el-table :data="tableData" style="min-width: 100%" height="calc(100vh - 440px)">
<el-table-column prop="type" label="操作类型" min-width="60" />
<el-table-column prop="isAgree" label="处理意见" min-width="60" />
<el-table-column prop="admin" label="处理人" min-width="60" />
<el-table-column prop="createTime" label="处理时间" min-width="180">
<template slot-scope="scope">
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" min-width="60" />
</el-table>
<!--分页组件-->
<el-pagination
:current-page="page.page"
:total="page.total"
:page-size="page.size"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleSizeChange"
@current-change="handleCurrentPage"
/>
</div>
</template>
<script>
const data = [
{
'id': '005E76FEC5A2AAB368CA1F',
'admin': 'admin',
'type': '预归档新增',
'isAgree': '同意',
'createTime': 1660706815000,
'remark': ''
},
{
'id': '005E76FEC5A2AAB368CA1F2',
'admin': 'admin',
'type': '装盒',
'isAgree': '拒绝',
'createTime': 1660706815000,
'remark': ''
}
]
export default {
name: 'HandleInfo',
components: { },
mixins: [],
data() {
return {
tableData: [{}, {}],
page: {
page: 1,
size: 10,
total: 0
}
}
},
created() {
},
mounted() {
this.tableData = data
},
methods: {
handleSizeChange(size) {
this.page.size = size
this.page.page = 1
},
handleCurrentPage(val) {
this.page.page = val
}
}
}
</script>
<style lang='scss' scoped>
@import "~@/assets/styles/collect-reorganizi.scss";
</style>

37
src/views/components/archivesDetail/uploadFile/index.vue

@ -21,27 +21,50 @@
> >
<el-table-column v-if="isUploadDetail" type="selection" width="55" align="center" /> <el-table-column v-if="isUploadDetail" type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="file_name" label="文件名称" show-overflow-tooltip min-width="140" align="center" />
<el-table-column prop="file_name" label="文件名称" show-overflow-tooltip min-width="140" />
<el-table-column prop="file_type" label="格式" min-width="60" align="center" /> <el-table-column prop="file_type" label="格式" min-width="60" align="center" />
<el-table-column prop="file_size" label="大小" min-width="85" align="center"> <el-table-column prop="file_size" label="大小" min-width="85" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ (scope.row.file_size / 1024).toFixed(2) + 'kB' }} {{ (scope.row.file_size / 1024).toFixed(2) + 'kB' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="file_dpi" label="分辨率" min-width="85" align="center" />
<el-table-column prop="file_dpi" label="分辨率" min-width="120" align="center">
<template slot-scope="scope">
<div v-if="!scope.row.file_dpi"> - </div>
<div v-else> {{ scope.row.file_dpi }} </div>
</template>
</el-table-column>
<el-table-column prop="file_thumbnail" label="缩览图" min-width="60" align="center"> <el-table-column prop="file_thumbnail" label="缩览图" min-width="60" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.file_type === 'jpg' || scope.row.file_type === 'jpeg' || scope.row.file_type === 'png' || scope.row.file_type === 'bmp'|| scope.row.file_type === 'gif'"> <div v-if="scope.row.file_type === 'jpg' || scope.row.file_type === 'jpeg' || scope.row.file_type === 'png' || scope.row.file_type === 'bmp'|| scope.row.file_type === 'gif'">
<img width="60px" height="32px" class="screenshot" :src="baseApi+ '/downloadFile' +scope.row.file_path" :onerror="defaultImg" @click="showCoverPreview(scope.row)">
<i class="fileIcon icon-image" />
</div>
<div v-else-if="scope.row.file_type === 'xlsx' || scope.row.file_type === 'xls'">
<i class="fileIcon icon-excel" />
</div>
<div v-else-if="scope.row.file_type === 'docx' || scope.row.file_type === 'doc'">
<i class="fileIcon icon-word" />
</div>
<div v-else-if="scope.row.file_type === 'pdf'">
<i class="fileIcon icon-pdf" />
</div>
<div v-else-if="scope.row.file_type === 'ppt' || scope.row.file_type === 'pptx'">
<i class="fileIcon icon-ppt" />
</div>
<div v-else-if="scope.row.file_type === 'zip' || scope.row.file_type === 'rar'">
<i class="fileIcon icon-zip" />
</div>
<div v-else-if="scope.row.file_type === 'txt'">
<i class="fileIcon icon-txt" />
</div> </div>
<div v-else> <div v-else>
<svg-icon icon-class="fujian" class-name="svg-style" />
<i class="fileIcon icon-other" />
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="create_time" label="创建时间" min-width="110" align="center" />
<el-table-column prop="create_time" label="创建时间" min-width="130" align="center" />
<!-- && !recycleMain.isRecycle --> <!-- && !recycleMain.isRecycle -->
<el-table-column v-if="!isUploadDetail " label="操作" min-width="100" align="center">
<el-table-column v-if="!isUploadDetail && !parentsData.isRecycle" label="操作" min-width="80" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button class="file-down iconfont icon-weibiaoti-2" @click="downloadFile(scope.row)">下载</el-button> <el-button class="file-down iconfont icon-weibiaoti-2" @click="downloadFile(scope.row)">下载</el-button>
</template> </template>
@ -103,7 +126,7 @@ export default {
mixins: [ mixins: [
form({}) form({})
], ],
// inject: ['recycleMain'],
inject: ['parentsData'],
props: { props: {
isUploadDetail: { isUploadDetail: {
type: Boolean, type: Boolean,

10
src/views/components/category/PreviewForm.vue

@ -3,7 +3,7 @@
<el-form ref="addOrUpdateForm" :model="addOrUpdateForm" :rules="rules" :validate-on-rule-change="false" label-width="125px"> <el-form ref="addOrUpdateForm" :model="addOrUpdateForm" :rules="rules" :validate-on-rule-change="false" label-width="125px">
<el-row :gutter="4" style="padding:0 20px"> <el-row :gutter="4" style="padding:0 20px">
<draggable v-bind="{draggable:'.drag-item',animation:500}" :disabled="!isDraggable" @update="datadragEnd"> <draggable v-bind="{draggable:'.drag-item',animation:500}" :disabled="!isDraggable" @update="datadragEnd">
<el-col v-for="(item,index) in formPreviewData" v-show="item.fieldName !== 'barcode'" :key="index" :class="['drag-item',item.fieldName === 'barcode'? 'barcode-input':'']" :span="item.isLine || item.fieldName === 'barcode' ? 24 : 12">
<el-col v-for="(item,index) in formPreviewData" v-show="item.fieldName !== 'barcode' && item.fieldName !== 'is_entity'" :key="index" :class="['drag-item',item.fieldName === 'barcode'? 'barcode-input':'']" :span="item.isLine || item.fieldName === 'barcode' ? 24 : 12">
<el-form-item :label="item.fieldCnName" :prop="item.fieldName"> <el-form-item :label="item.fieldCnName" :prop="item.fieldName">
<!-- select :load-options="loadOptions"--> <!-- select :load-options="loadOptions"-->
<treeselect <treeselect
@ -69,10 +69,10 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="isDesFormType === 'manageArcives'" class="preview-form-bottom">
<el-col>
<el-form-item label="实体" prop="isPhysical" class="pbysical-style">
<el-radio-group v-model="addOrUpdateForm.isPhysical">
<el-row v-if="isDesFormType !== 'prearchiveLibrary' && isDesFormType !== 'mergeFile'" class="preview-form-bottom">
<el-col v-for="(item,index) in formPreviewData" :key="index">
<el-form-item v-if="item.fieldName === 'is_entity'" :label="item.fieldCnName" :prop="item.fieldName" :rules="[{ required: true, message: '请选择',trigger: 'change' }]" class="pbysical-style">
<el-radio-group v-model="addOrUpdateForm[item.fieldName]">
<el-radio label="有" /> <el-radio label="有" />
<el-radio label="无" /> <el-radio label="无" />
</el-radio-group> </el-radio-group>

2
src/views/system/role/index.vue

@ -7,7 +7,7 @@
<div class="head-container"> <div class="head-container">
<div v-if="crud.props.searchToggle" class="head-search"> <div v-if="crud.props.searchToggle" class="head-search">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.blurry" size="small" clearable placeholder="输入部门名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @clear="crud.toQuery" @keyup.enter.native="crud.toQuery" />
<el-input v-model="query.blurry" size="small" clearable placeholder="输入角色名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @clear="crud.toQuery" @keyup.enter.native="crud.toQuery" />
<date-range-picker v-model="blurryTime" class="date-item" /> <date-range-picker v-model="blurryTime" class="date-item" />
<rrOperation /> <rrOperation />
</div> </div>

2
src/views/system/user/index.vue

@ -23,7 +23,7 @@
<div class="head-container"> <div class="head-container">
<div class="head-search"> <div class="head-search">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.blurry" clearable size="small" placeholder="输入账号者用户名搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
<el-input v-model="query.blurry" clearable size="small" placeholder="输入账号者用户名搜索" prefix-icon="el-icon-search" style="width: 225px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
<date-range-picker v-model="blurryTime" class="date-item" /> <date-range-picker v-model="blurryTime" class="date-item" />
<el-select v-model="query.userStatus" clearable size="small" placeholder="状态" class="filter-item" style="width: 100px" @change="crud.toQuery"> <el-select v-model="query.userStatus" clearable size="small" placeholder="状态" class="filter-item" style="width: 100px" @change="crud.toQuery">
<i slot="prefix" class="iconfont icon-zhuangtai" /> <i slot="prefix" class="iconfont icon-zhuangtai" />

Loading…
Cancel
Save