Browse Source

公文管理

master
xuhuajiao 1 month ago
parent
commit
f82418771c
  1. 10
      src/api/system/documentArchives.js
  2. 4
      src/views/AIAssistant/AICataloging/running/index.vue
  3. 38
      src/views/archivesMIOD/miodLibrary/index.vue
  4. 83
      src/views/archivesMIOD/miodLibrary/module/detail.vue
  5. 7
      src/views/archivesManage/managementLibrary/module/collectHeader.vue
  6. 7
      src/views/collectReorganizi/collectionLibrary/module/collectHeader.vue
  7. 69
      src/views/components/category/PreviewForm.vue
  8. 10
      src/views/prearchiveLibrary/index.vue

10
src/api/system/documentArchives.js

@ -142,6 +142,13 @@ export function FetchInitDistributorByDocumentId(params) {
})
}
// 查看操作记录
export function FetchInitOperate(params) {
return request({
url: 'api/documentArchives/initOperate' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
export default {
FetchInitDocumentParam,
updateDocumentParam,
@ -158,5 +165,6 @@ export default {
FetchInitDocumentDetailsList,
FetchAddDocumentDetails,
FetchDeleteDocumentDetails,
FetchInitDistributorByDocumentId
FetchInitDistributorByDocumentId,
FetchInitOperate
}

4
src/views/AIAssistant/AICataloging/running/index.vue

@ -209,6 +209,7 @@
:is-title-type="isTitleType"
:collect-level="collectLevel"
:category-menu="categoryMenu"
:archives-type="archivesType"
@close-dialog="handleClose"
/>
<div v-loading="aiResultCaLoading" style="flex: 1; margin-left: 10px; ">
@ -290,6 +291,7 @@ export default {
label: 'label'
},
currentAnId: {},
archivesType: null,
aiAddArchiveCategory: {}, //
categoryMenu: [], // form
formVisible: false, //
@ -635,6 +637,7 @@ export default {
handleCategoryForm() {
this.formTitle = '新增档案 - ' + this.aiAddArchiveCategory.cnName
this.formVisible = true
this.archivesType = 'add'
const params = {
'categoryId': this.aiAddArchiveCategory.id,
'categoryLevel': this.collectLevel
@ -643,7 +646,6 @@ export default {
this.formPreviewData = data
this.isDesFormType = 'arcives'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'add'
this.$refs.previewForm.FetchNoFormatField(this.aiAddArchiveCategory.id)
})
this.getDoHandleEnterAnalysis()

38
src/views/archivesMIOD/miodLibrary/index.vue

@ -102,6 +102,7 @@
:is-disabled="isDisabled"
:selected-document="selectedDocument"
:is-has-code="isHasCode"
:archives-type="archivesType"
@close-dialog="closeDialog"
@formLoadingShow="formLoadingShow"
@refreshTree="refreshTreeList"
@ -218,23 +219,9 @@ export default {
isHasCode: false,
printVisible: false,
printType: 1,
isHidden: false,
formData: {
receiveNo: '武交收〔2025〕12号',
receiveDate: '2025年05月20日',
urgency: '急件',
senderUnit: '湖北省交通运输厅',
senderNo: '鄂交发〔2025〕35号',
secrecyLevel: '普通',
tip: '请办公室尽快协调相关部门阅办',
fileTitle: '关于加强交通运输安全生产管理的通知',
recommendation: '建议转交运输科牵头办理,5个工作日内反馈意见',
leaderApproval: '同意拟办意见,张XX 2025.05.20',
departmentOpinion: '已阅,将于2025.05.25前反馈'
},
printTitle: '',
pdfSources: [],
printSelections: []
printSelections: [],
archivesType: null
}
},
computed: {
@ -329,11 +316,6 @@ export default {
handleForm(type) {
const { selectedDocument, crud } = this
if (!selectedDocument) {
console.warn('selectedDocument 未定义,无法继续操作')
return
}
this.selectedCategory = selectedDocument
this.isDesFormType = 'miodLibrary'
@ -347,9 +329,11 @@ export default {
const params = { documentId }
if (type === 'add') {
console.log('add')
this.formTitle = '新增文件'
params.archivesId = null
} else if (type === 'edit') {
console.log('edit')
this.formTitle = '编辑文件'
const { id: archivesId } = crud.selections[0]
this.arcId = archivesId
@ -360,6 +344,7 @@ export default {
},
getFormInfo(params, type) {
this.archivesType = type
crudDocumentArchives.FetchDoeditDocument(params).then(data => {
console.log('data', data)
const showFiledAll = data.showFiled.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence)
@ -370,8 +355,13 @@ export default {
this.$refs.previewForm.fileOriginal = null
this.$refs.previewForm.fileJsonString = null
if (type === 'edit') {
this.$refs.previewForm.archivesType = 'edit'
this.$refs.previewForm.addOrUpdateForm = data.echo
showFiledAll.map(item => {
if (item.isInputClass === 'select' && item.isRadio && item.isLine) {
data.echo[item.fieldName] = JSON.parse(data.echo[item.fieldName])
}
})
this.$set(this.$refs.previewForm, 'addOrUpdateForm', data.echo)
if (data.fileecho) {
this.$refs.previewForm.fileOriginal = data.fileecho.file_name || null
@ -391,7 +381,7 @@ export default {
}
})
} else {
this.$refs.previewForm.archivesType = 'add'
console.log('add')
}
})
})

83
src/views/archivesMIOD/miodLibrary/module/detail.vue

@ -70,7 +70,7 @@
<el-table
:data="tableData"
style="min-width: 100%;"
height="calc(100vh - 260px)"
height="calc(100vh - 280px)"
>
<el-table-column prop="file_name" label="公文登记号" show-overflow-tooltip min-width="140" />
<el-table-column prop="file_type" label="文件类型" min-width="85" />
@ -90,16 +90,17 @@
</div>
<!-- 操作记录 -->
<div v-if="archivesTabIndex==2" class="item-content">
<el-table class="archives-table" :data="handleTableData" style="min-width: 100%; " height="calc(100vh - 260px)">
<el-table class="archives-table" :data="handleTableData" style="min-width: 100%; " height="calc(100vh - 280px)">
<el-table-column prop="operateType" label="操作类型" min-width="60" align="center">
<template slot-scope="scope">
<span class="row-state row-packing state-active">{{ getOperateTypeText(scope.row.operateType) }}</span>
<!-- getOperateTypeText(scope.row.operateType) -->
<span class="row-state row-packing state-active">{{ scope.row.operateType }}</span>
</template>
</el-table-column>
<el-table-column prop="update_by" label="处理人" min-width="60" />
<el-table-column prop="update_time" label="处理时间" width="180">
<el-table-column prop="createBy" label="处理人" min-width="60" />
<el-table-column prop="createTime" label="处理时间" width="180">
<template slot-scope="scope">
<div>{{ scope.row.update_time | parseTime }}</div>
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注" min-width="180" show-overflow-tooltip />
@ -124,7 +125,7 @@
<script>
import { form } from '@crud/crud'
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorByDocumentId } from '@/api/system/documentArchives'
import { FetchArchivesDetails, FetchInitDocumentDetailsList, FetchAddDocumentDetails, FetchDeleteDocumentDetails, FetchInitDistributorByDocumentId, FetchInitOperate } from '@/api/system/documentArchives'
import { mapGetters } from 'vuex'
import BindingTagDlg from '@/views/components/BindingTagDlg'
@ -223,6 +224,9 @@ export default {
},
changeActiveTab(index) {
this.archivesTabIndex = index
if (index === 2) {
this.getInitOperate()
}
},
getOperateTypeText(type) {
return this.operateTypeMap[type] || '-'
@ -276,48 +280,6 @@ export default {
this.archivesFiledataLoading = false
})
},
// getDetial(rowId) {
// this.currentArchivesId = rowId
// let documentId
// if (this.selectedDocument.isType === 2) {
// documentId = this.selectedDocument.id
// } else {
// documentId = this.selectedDocument.documentId
// }
// const params = {
// documentId: documentId,
// archivesId: rowId
// }
// FetchArchivesDetails(params).then(data => {
// this.archivesDetailsData = data
// })
// this.getInitDocumentDetailsList()
// FetchInitDistributorByDocumentId(params).then(data => {
// this.borrowerList = data
// })
// },
// getInitDocumentDetailsList() {
// this.archivesFiledataLoading = true
// let documentId
// if (this.selectedDocument.isType === 2) {
// documentId = this.selectedDocument.id
// } else {
// documentId = this.selectedDocument.documentId
// }
// const params = {
// documentId: documentId,
// archivesId: this.currentArchivesId
// }
// FetchInitDocumentDetailsList(params).then(data => {
// // id,parents_id,reg_no,details_type,pass_location,read_type,tid,is_destroy,create_by,create_time,update_by,update_time
// // idid1. 2.tid
// const jsonData = this.convertData(data)
// this.archivesFiledata = jsonData
// console.log(jsonData)
// this.archivesFiledataLoading = false
// })
// },
convertData(data) {
return data.map(item => {
const fieldNames = [
@ -354,6 +316,28 @@ export default {
this.$message({ message: error, type: 'error', offset: 8 })
})
},
//
getInitOperate() {
let documentId
if (this.selectedDocument.isType === 2) {
documentId = this.selectedDocument.id
} else {
documentId = this.selectedDocument.documentId
}
const params = {
documentId: documentId,
archivesId: this.currentArchivesId,
page: this.page.page,
size: this.page.size
}
FetchInitOperate(params).then(data => {
console.log('data', data)
this.handleTableData = data.list.content
this.page.total = data.list.totalElements
}).catch(error => {
this.$message({ message: error, type: 'error', offset: 8 })
})
},
bindingTag(data) {
if (data.tid) {
this.$refs.bindingTag.isBinding = true
@ -401,6 +385,7 @@ export default {
const params = {
documentId: documentId,
archivesId: datas.id, // this.currentArchivesId,
regNo: datas.reg_no,
isDestroy: true
}

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

@ -166,6 +166,7 @@
:is-title-type="isTitleType"
:collect-level="collectLevel"
:category-menu="categoryMenu"
:archives-type="archivesType"
@close-dialog="closeDialog"
/>
<div slot="footer" class="dialog-footer" style="margin-top: 85px !important;">
@ -399,7 +400,8 @@ export default {
classifyOptions: [],
isDesFormType: 'manageArcives', //
arcId: null,
totalSumAll: 0
totalSumAll: 0,
archivesType: null
}
},
computed: {
@ -549,6 +551,7 @@ export default {
})
},
getFormInfo(type) {
this.archivesType = type
if (type === 'edit') {
const params = {
'categoryId': this.selectedCategory.id,
@ -562,7 +565,6 @@ export default {
this.formPreviewData = showFiledAll
this.isDesFormType = 'manageArcives'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'edit'
this.$refs.previewForm.addOrUpdateForm = data.echo
this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
})
@ -577,7 +579,6 @@ export default {
this.formPreviewData = data
this.isDesFormType = 'manageArcives'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'add'
this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
})
})

7
src/views/collectReorganizi/collectionLibrary/module/collectHeader.vue

@ -157,6 +157,7 @@
:is-title-type="isTitleType"
:collect-level="collectLevel"
:category-menu="categoryMenu"
:archives-type="archivesType"
@close-dialog="closeDialog"
@handleForm="handleForm"
@formLoadingShow="formLoadingShow"
@ -468,7 +469,8 @@ export default {
repeatVisible: false,
repeatLoading: false,
repeatResponseData: {},
repeatData: []
repeatData: [],
archivesType: null
}
},
computed: {
@ -671,6 +673,7 @@ export default {
})
},
getFormInfo(type) {
this.archivesType = type
const currentPageSize = localStorage.getItem('currentPageSize')
if (currentPageSize) {
this.page.size = parseInt(currentPageSize)
@ -690,7 +693,6 @@ export default {
this.formPreviewData = showFiledAll
this.isDesFormType = 'arcives'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'edit'
this.$refs.previewForm.addOrUpdateForm = data.echo
// this.$refs.previewForm.FetchNoFormatField(this.selectedCategory.id)
})
@ -706,7 +708,6 @@ export default {
this.isDesFormType = 'arcives'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'add'
this.$refs.previewForm.activeIndex = this.activeIndex
console.log('this.parentsData.parentsAnjuanRow ', this.parentsData.parentsAnjuanRow)
console.log('this.collectTitle', this.collectTitle)

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

@ -2,7 +2,7 @@
<!-- :style="`padding: ${isDesFormType === 'arcives' ? '20px 0 100px 0 !important' : ''};` -->
<div class="preview-content right-preview">
<el-form ref="addOrUpdateForm" :model="addOrUpdateForm" :rules="rules" :validate-on-rule-change="false" label-width="125px">
<el-row :gutter="4" style="padding:0 20px" :class="isDesFormType === 'prearchiveLibrary' || isDesFormType === 'miodLibrary' ? 'library-form' :''">
<el-row :gutter="4" style="padding:0 20px" :class="isDesFormType === 'prearchiveLibrary' ? 'library-form' :( isDesFormType === 'miodLibrary'? 'library-form-miod':'')">
<draggable v-bind="{draggable:'.drag-item',animation:500}" :disabled="!isDraggable" @update="datadragEnd">
<el-col
v-for="(item,index) in formPreviewData"
@ -31,7 +31,7 @@
:clearable="false"
placeholder=""
:flat="false"
:multiple="false"
:multiple="item.isInputClass === 'select' && item.isLine && item.isRadio ? true : false"
:class="{ 'select-required-null': item.isSelectRequiredNull }"
:style="{ width: item.editLength+'px'}"
:disabled="isDisabled|| (item.fieldName === 'fonds_no' && isDesFormType !== 'category') || (item.fieldName === 'doc_department'&& archivesType === 'edit' ) || (item.fieldName === 'reg_no'&& archivesType === 'edit' )"
@ -77,16 +77,15 @@
</el-row>
<el-row v-if="isDesFormType === 'miodLibrary' " class="preview-form-bottom miod-form-bottom ">
<el-col>
<!-- :rules="[
{ required: true, message: '请选择', trigger: 'blur' }
]" 暂时先不必填 -->
<el-form-item
label="需要传阅领导及部门"
prop="miodDepts"
:rules="[
{ required: true, message: '请选择', trigger: 'blur' }
]"
>
<!-- <el-input v-model="addOrUpdateForm.miodDepts" type="textarea" readonly :rows="4" style="width: 500px" @click.native="showDeptsDialog" /> -->
<div :class="{'miod-depts-input null-input': miodDeptsTags.length === 0 && deptsValid, 'miod-depts-input': !deptsValid || miodDeptsTags.length !== 0}" @click="showDeptsDialog">
<!-- :class="{'miod-depts-input null-input': miodDeptsTags.length === 0 && deptsValid, 'miod-depts-input': !deptsValid || miodDeptsTags.length !== 0}" 暂时先不必填 -->
<div class="miod-depts-input" @click="showDeptsDialog">
<el-tag
v-for="tag in miodDeptsTags"
:key="tag.id"
@ -302,6 +301,10 @@ export default {
isAiCategory: {
type: Boolean,
default: false
},
archivesType: {
type: String,
default: ''
}
},
@ -337,7 +340,6 @@ export default {
fileJsonString: null,
mergeFileArcIds: null,
mergeFileCategory: null,
archivesType: null,
activeIndex: null,
entityIndex: null,
fileList: [],
@ -515,9 +517,9 @@ export default {
delete node.childDictionarys
}
return {
id: node.dictionaryName,
label: node.dictionaryName,
children: node.childDictionarys,
id: node.dictionaryName || null,
label: node.dictionaryName || '',
children: node.childDictionarys || [],
isDisabled: node.level && node.level !== 3
}
},
@ -882,6 +884,7 @@ export default {
}
if (this.isDesFormType === 'miodLibrary' && this.archivesType === 'add') {
if (item.fieldName === 'archive_year' || item.fieldName === 'doc_department') {
console.log('handleRegNo')
this.handleRegNo(item.fieldName, this.addOrUpdateForm[item.fieldName])
}
}
@ -959,6 +962,8 @@ export default {
},
// tree - select
selectTree(val) {
console.log('selectTree-val', val)
if (val.fondsNo) {
this.addOrUpdateForm[this.treeCurrentFiled.fieldName] = val.fondsName
} else if (val.name) {
@ -1000,6 +1005,7 @@ export default {
}
if (this.isDesFormType === 'miodLibrary' && this.archivesType === 'add') {
if (this.treeCurrentFiled.fieldName === 'doc_department' || this.treeCurrentFiled.fieldName === 'archive_year') {
console.log('handleRegNo2')
this.handleRegNo(this.treeCurrentFiled.fieldName, val.dictionaryCode)
}
}
@ -1108,6 +1114,7 @@ export default {
},
//
editFormRow() {
console.log('this.archivesType-editFormRow', this.archivesType)
this.rules = {}
this.entityIndex = this.formPreviewData.findIndex(item => item.fieldName === 'is_entity')
if (this.isDesFormType === 'prearchiveLibrary' && this.archivesType === 'add') {
@ -1255,7 +1262,7 @@ export default {
}
}
if (item.fieldName === 'doc_department' && this.archivesType === 'add') {
if (item.fieldName === 'doc_department') {
if (this.isDesFormType === 'miodLibrary') {
if (this.selectedCategory.isType === 3) {
this.$set(this.addOrUpdateForm, item.fieldName, this.selectedCategory.label)
@ -1265,9 +1272,12 @@ export default {
this.$set(this.addOrUpdateForm, item.fieldName, '')
}
}
if (this.isDesFormType === 'miodLibrary' && this.archivesType === 'add') {
console.log('handleRegNo3')
this.handleRegNo(item.fieldName, this.addOrUpdateForm[item.fieldName])
}
}
this.$set(this.rules, item.fieldName, [rule])
})
},
@ -1318,6 +1328,8 @@ export default {
if (this.miodDeptsTags.length !== 0) {
const ids = this.miodDeptsTags.map(item => item.id)
this.$set(this.addOrUpdateForm, 'miodDepts', ids)
} else {
this.$set(this.addOrUpdateForm, 'miodDepts', null)
}
console.log('this.addOrUpdateForm', this.addOrUpdateForm)
@ -1327,6 +1339,7 @@ export default {
delete this.addOrUpdateForm.id
delete this.addOrUpdateForm.miodDepts
this.$emit('formLoadingShow', true)
//
if (this.isDesFormType === 'miodLibrary') {
const params = {
@ -1801,12 +1814,18 @@ export default {
color: #ff4949;
}
.library-form-miod{
height: calc(100vh - 410px) !important;
overflow: hidden;
overflow-y: scroll;
}
.miod-form-bottom{
padding: 20px 20px 0 0;
::v-deep .el-form-item__label{
width: 160px !important;
width: 144px !important;
}
::v-deep .el-form-item__content{
margin-left: 160px !important;
margin-left: 144px !important;
}
}
@ -1816,7 +1835,8 @@ export default {
}
}
.miod-depts-input{
width: 500px;
// width: 500px;
width: 537px;
height: 80px;
padding: 5px 15px;
border: 1px solid #e6e8ed;
@ -1853,4 +1873,19 @@ export default {
right: 20px;
top: -17px;
}
::v-deep .vue-treeselect__multi-value-item-container{
display: block;
padding: 0 !important;
line-height: 20px !important;
}
::v-deep .vue-treeselect__multi-value-item{
background: transparent !important;
}
::v-deep .vue-treeselect__multi-value-label{
padding: 0 !important;
color: #0c0e1e !important;
}
::v-deep .vue-treeselect__value-remove{
display: none;
}
</style>

10
src/views/prearchiveLibrary/index.vue

@ -117,6 +117,7 @@
:is-disabled="isDisabled"
:selected-document="selectedDocument"
:is-has-code="isHasCode"
:archives-type="archivesType"
@close-dialog="closeDialog"
@formLoadingShow="formLoadingShow"
/>
@ -206,7 +207,8 @@ export default {
isDesFormType: 'prearchiveLibrary',
isDisabled: false,
isHasCode: false,
selectedCategoryMerge: null
selectedCategoryMerge: null,
archivesType: null
}
},
computed: {
@ -270,6 +272,7 @@ export default {
this.getFormInfo(params, type)
},
getFormInfo(params, type) {
this.archivesType = type
PrearchiveCrud.FetchDoeditDocument(params).then(data => {
console.log('data', data)
const showFiledAll = data.showFiled.filter(item => item.isSequence).sort((a, b) => a.isSequence - b.isSequence)
@ -280,7 +283,6 @@ export default {
this.$refs.previewForm.fileOriginal = null
this.$refs.previewForm.fileJsonString = null
if (type === 'edit') {
this.$refs.previewForm.archivesType = 'edit'
this.$refs.previewForm.addOrUpdateForm = data.echo
if (data.fileecho) {
const fileecho = []
@ -293,7 +295,7 @@ export default {
this.$refs.previewForm.fileJsonString = ''
}
} else {
this.$refs.previewForm.archivesType = 'add'
console.log('add')
}
})
})
@ -321,8 +323,8 @@ export default {
this.formVisible = true
this.mergeVisible = false
this.isDesFormType = 'mergeFile'
this.archivesType = 'add'
this.$nextTick(() => {
this.$refs.previewForm.archivesType = 'add'
this.$refs.previewForm.mergeFileArcIds = this.crud.selections.map(item => item.id)
this.$refs.previewForm.mergeFileCategory = this.selectedCategoryMerge.id
})

Loading…
Cancel
Save