|
|
<template> <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"> <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' && 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"> <!-- select :load-options="loadOptions"--> <treeselect v-if="item.isInputClass === 'select'" v-model="addOrUpdateForm[item.fieldName]" :options="item.options" :normalizer=" isTableType === 1 ? normalizerFonds : (isTableType === 2 ? normalizerClassify : normalizer)" :clearable="false" placeholder="" flat :style="{ width: item.editLength+'px'}" :disabled="isDisabled" :validate-event="!isDisabled" no-options-text="无数据" @select="selectTree" @open="openTree(item)" > <div slot="value-label" slot-scope="{ node }">{{ getAutoNameUnknown(node.label) }}</div> </treeselect> <!-- text / number / textarea / popover --> <!-- :validate-event="isDisabled" --> <el-input v-if="item.isInputClass !== 'select' && item.isInputClass !== 'date' && item.fieldName !== 'barcode' " v-model="addOrUpdateForm[item.fieldName]" :type="item.isInputClass === 'popover'? 'text' : item.isInputClass" :rows="item.isInputClass === 'textarea' ? 3 : ''" :class="{'input-popover':(item.isInputClass === 'popover')}" :style="{ width: item.editLength+'px'}" :disabled="isDisabled || (item.fieldName === 'archival_category_code')" :validate-event="!isDisabled" @keyup.enter.native="isRepeatHandle(item)" @input="autoAddZero(item.isFilling, item.fieldName, addOrUpdateForm[item.fieldName], item.fillingDigit)" @blur="isRepeatHandle(item)" > <i v-if="item.isInputClass === 'popover'" slot="suffix" class="el-input__icon iconfont icon-gengduo1" @click="handleCurrentFieldName(item)" /> </el-input> <!-- date --> <el-date-picker v-if="item.isInputClass === 'date'" v-model="addOrUpdateForm[item.fieldName]" type="date" align="right" format="yyyy-MM-dd" placeholder="" :clearable="false" :style="{ width: item.editLength+'px'}" :disabled="isDisabled" :validate-event="!isDisabled" /> </el-form-item> </el-col> </draggable> </el-row> <el-row v-if="!isHasCode && isDesFormType !== 'prearchiveLibrary' && isDesFormType !== 'mergeFile'" class="preview-form-bottom"> <el-col v-for="(item,index) in formPreviewData.slice(formPreviewData.length-1,formPreviewData.length)" :key="'barcode'+index"> <el-form-item :label="item.fieldCnName" :prop="item.fieldName"> <el-input v-model="addOrUpdateForm[item.fieldName]" type="text" style="width: 510px" :disabled="isDisabled" :validate-event="!isDisabled" @keyup.enter.native="isRepeatHandle(item)" @blur="isRepeatHandle(item)" /> </el-form-item> </el-col> </el-row> <el-row v-if="isDesFormType === 'prearchiveLibrary'" class="preview-form-bottom"> <el-col> <el-form-item label="电子原件" prop="fileOriginal" class="prearch-upload"> <el-input v-model="fileOriginal" type="text" style="width: 446px" readonly /> <div class="upload-btn"> <input id="upFile" type="file" name="upFile" @change="changeFile($event)"> <el-button size="small" type="primary"><i class="iconfont icon-shangchuan" />上传</el-button> </div> </el-form-item> </el-col> </el-row> <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-group> </el-form-item> </el-col> </el-row> </el-form>
<!-- 弹框形式的内容展示 --> <el-dialog class="edit-form-dialog" :append-to-body="true" :visible="popoverVisible" :before-close="handleClose" :close-on-click-modal="false" :title="tableTitle"> <span class="dialog-right-top" /> <span class="dialog-left-bottom" /> <div class="setting-dialog"> <el-table ref="popoverTable" :data="popoverTableData" highlight-current-row row-key="dictionaryCode" :tree-props="{children: 'childDictionarys', hasChildren: 'hasChildren'}" height="600" style="width: 100%;" @selection-change="handleSelectionChange" @row-click="clickRowHandler"> <el-table-column :selectable="checkboxT" type="selection" width="55" /> <el-table-column prop="dictionaryName" label="字典名称" show-overflow-tooltip /> <el-table-column prop="dictionaryCode" label="字典代码" /> <el-table-column prop="dictionaryRemarks" label="内容说明" show-overflow-tooltip /> </el-table> </div> </el-dialog> <el-dialog class="edit-form-dialog" :append-to-body="true" :visible="popoverFondsVisible" :before-close="handleClose" :close-on-click-modal="false" :title="tableTitle"> <span class="dialog-right-top" /> <span class="dialog-left-bottom" /> <div class="setting-dialog"> <el-table ref="popoverTable" :data="popoverTableDataFonds" highlight-current-row row-key="id" :tree-props="{children: 'childMenus', hasChildren: 'hasChildren'}" height="600" style="width: 100%; he" @selection-change="handleSelectionChange" @row-click="clickRowHandler"> <el-table-column type="selection" width="55" show-overflow-tooltip /> <el-table-column prop="fondsNo" label="全宗号" /> <el-table-column prop="fondsName" label="全宗名称" show-overflow-tooltip /> <el-table-column prop="fondsOrders" label="排序" width="60" /> </el-table> </div> </el-dialog> <el-dialog class="edit-form-dialog" :append-to-body="true" :visible="popoverClassifyVisible" :before-close="handleClose" :close-on-click-modal="false" :title="tableTitle"> <span class="dialog-right-top" /> <span class="dialog-left-bottom" /> <div class="setting-dialog"> <el-table ref="popoverTable" :data="popoverTableDataClassify" highlight-current-row row-key="id" :tree-props="{children: 'childArchivesClass', hasChildren: 'hasChildren'}" height="600" style="width: 100%;" @selection-change="handleSelectionChange" @row-click="clickRowHandler"> <el-table-column type="selection" width="55" /> <el-table-column label="分类名称" prop="name" width="130" show-overflow-tooltip /> <el-table-column label="分类编号" prop="code" /> <el-table-column label="排序" prop="classSeq" /> <el-table-column label="所属门类" prop="categoryName" show-overflow-tooltip /> </el-table> </div> </el-dialog> </div> </template>
<script> import { crud } from '@crud/crud' import { FetchDoeditIsRepeat } from '@/api/archivesManage/archivesList' import { collectAdd, collectEdit } from '@/api/collect/collect' import { prearchEdit, FetchMergeToFile, FetchReDoeditIsRepeat } from '@/api/prearchiveLibrary/prearchiveLibrary' import { getNoFormatField } from '@/api/system/category/fileNoFormat' import draggable from 'vuedraggable' import Treeselect from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' import { FetchSonDictionaryList, FetchDictionaryTree } from '@/api/system/dict' import { FetchFondsAll } from '@/api/system/fonds' import { FetchArchivesClassTree, FetchSonArchivesClass } from '@/api/system/archivesClass' import { parseTime, getCurrentTime } from '@/utils/index' import { reDocumentUpload } from '@/utils/upload' import { mapGetters } from 'vuex'
export default { name: 'PreviewForm', components: { draggable, Treeselect }, mixins: [crud()], inject: ['parentsData'], props: { isDisabled: { type: Boolean, required: true }, formPreviewData: { type: Array, required: true }, selectedCategory: { type: Object, default: function() { return {} } }, selectedDocument: { type: Object, default: function() { return {} } }, arcId: { type: String, default: '' }, isHasCode: { type: Boolean, required: true }, isDraggable: { type: Boolean, default: false }, isDesFormType: { type: String, default: '' }, collectLevel: { type: Number, default: 1 }, isTitleType: { type: Number, default: 2 } },
data() { return { fileOriginal: null, addOrUpdateForm: { }, rules: { }, isTableType: 1, tableTitle: '字典列表', popoverTableData: [], // popover - popoverTableData
popoverVisible: false, // popover - visible
popoverTableDataClassify: [], popoverClassifyVisible: false, popoverTableDataFonds: [], popoverFondsVisible: false, currentFieldName: null, // popover 当前fieldName
treeCurrentFiled: null, categoryId: null, result: null, autoMatic: null, file: null, // 附件 change
fileNames: '', // 附件 - name
formatType: '', // 附件 - type
postfix: '', // 附件 - 文件后缀
fileSize: '', // 附件 - 大小
filePath: '', // 附件 - path
px: '', // 附件 - 分辨率
nowDate: '', // 当前时间
fileJsonString: null, mergeFileArcIds: null, mergeFileCategory: null, archivesType: null } }, computed: { ...mapGetters([ 'baseApi' ]) }, watch: { selectedCategory: function(newValue, oldValue) { }, selectedDocument: function(newValue, oldValue) { }, arcId: function(newValue, oldValue) { }, isDesFormType: function(newValue, oldValue) { }, formPreviewData: function() { this.editFormRow() // 区分 门类著录项 和 档案管理
if (this.isDesFormType === 'category') { this.FetchNoFormatField(this.selectedCategory.id) } } }, created() { this.editFormRow() }, mounted() { }, methods: { checkboxT(row, rowIndex) { return row.level ? row.level === 3 : true }, normalizer(node) { if ((node.childDictionarys && !node.childDictionarys.length) || node.childDictionarys === null) { delete node.childDictionarys } return { id: node.dictionaryName, label: node.dictionaryName, children: node.childDictionarys, isDisabled: node.level && node.level !== 3 } }, normalizerClassify(node) { if ((node.childArchivesClass && !node.childArchivesClass.length) || node.childArchivesClass === null) { delete node.childArchivesClass } return { id: node.code, label: node.name, children: node.childArchivesClass } }, normalizerFonds(node) { if (node.childMenus == null || node.childMenus === 'null') { delete node.childMenus } return { id: node.fondsNo, label: node.fondsName, children: node.childMenus } }, // 处理vue-treeSelect回显出现unknown问题
getAutoNameUnknown(name) { if (name.lastIndexOf('unknown') > -1) { // 当treeselect翻译不了值时,name中有id,截取id,去调接口或者字典查询出名字
return name.split('(')[0] } else { return name } }, getNode(list, dictionaryName) { let data; (list || []).map(item => { if (item.dictionaryName === dictionaryName) { data = [item] } else { const child = this.getNode(item.childMenus, dictionaryName) if (child) { data = child } } }) return data }, getFondsNode(list, fondsNo) { let data; (list || []).map(item => { if (item.fondsNo === fondsNo) { data = [item] } else { const child = this.getFondsNode(item.childMenus, fondsNo) if (child) { data = child } } }) return data }, getClassfiyNode(list, code) { let data; (list || []).map(item => { if (item.code === code) { data = [item] } else { const child = this.getClassfiyNode(item.childArchivesClass, code) if (child) { data = child } } }) return data }, // 自动生成
handleAuto() { let string = '' const getAutoFiledVal = [] this.autoMatic.forEach(async val => { if (!this.addOrUpdateForm[val.fieldName]) { string += '' } else { const fieldInfo = this.formPreviewData.find(element => element.fieldName === val.fieldName) if (fieldInfo.isInputClass === 'select' || fieldInfo.isInputClass === 'popover') { if (fieldInfo.mateData === 3) { await FetchSonDictionaryList({ 'pid': fieldInfo.dictionaryId.id }).then(res => { const option = this.getNode(res, this.addOrUpdateForm[val.fieldName]) if (option) { const obj = {} obj.name = val.fieldName obj.val = option[0].dictionaryCode + val.connector obj.sequence = val.sequence getAutoFiledVal.push(obj) } }) } if (fieldInfo.mateData === 1) { await FetchFondsAll().then(res => { const option = this.getFondsNode(res, this.addOrUpdateForm[val.fieldName]) if (option) { const obj = {} obj.name = val.fieldName obj.val = option[0].fondsNo + val.connector obj.sequence = val.sequence getAutoFiledVal.push(obj) } }) } if (fieldInfo.mateData === 2) { let categoryId if (this.isDesFormType !== 'mergeFile' && this.isDesFormType !== 'arcives' && this.isDesFormType !== 'manageArcives') { categoryId = this.selectedCategory.pid } else { categoryId = this.selectedCategory.id } await FetchArchivesClassTree({ 'categoryId': categoryId }).then(res => { const option = this.getClassfiyNode(res, this.addOrUpdateForm[val.fieldName]) if (option) { const obj = {} obj.name = val.name obj.val = option[0].code + val.connector obj.sequence = val.sequence getAutoFiledVal.push(obj) } }) } } else { const obj = {} obj.name = val.fieldName obj.val = this.addOrUpdateForm[val.fieldName] + val.connector obj.sequence = val.sequence getAutoFiledVal.push(obj) } } getAutoFiledVal.sort(this.compare('sequence')) string = getAutoFiledVal.map((item) => item.val).join('') this.formPreviewData.map(item => { if (item.isAutomatic) { this.$set(this.addOrUpdateForm, item.fieldName, string) } }) }) }, // 排序
compare(property) { return function(a, b) { var value1 = a[property] var value2 = b[property] return value1 - value2 } }, // 获取档号组成项
FetchNoFormatField(categoryId) { getNoFormatField({ categoryId: categoryId, categoryLevel: this.collectLevel }).then(res => { this.autoMatic = res this.handleAuto() }) }, // 获取对应字典子集数据
getAllSubset(item) { if (item.mateData === 1) { this.getFondsDatas(item) } else if (item.mateData === 2) { if (item.categoryId) { this.getClassifyTree(item) } } else { if (item.dictionaryId) { const params = { 'pid': item.dictionaryId.id } this.isTableType = 3 this.tableTitle = '字典列表' if (this.selectedCategory.arrangeType === 3 && this.collectLevel === 2 && item.dictionaryId.dictionaryCode === 'project_class') { this.getDictsList(item) } else { FetchSonDictionaryList(params).then(res => { if (item.isInputClass === 'select') { this.$set(item, 'options', res) } else if (item.isInputClass === 'popover') { this.popoverTableData = res this.popoverVisible = true } }) } } } }, getFondsDatas(item) { const parent = {} parent.id = 0 parent.fondsName = '全宗选择' this.isTableType = 1 this.tableTitle = '全宗列表' FetchFondsAll().then(res => { if (item.isInputClass === 'select') { this.$set(item, 'options', res) } else if (item.isInputClass === 'popover') { this.popoverTableDataFonds = res this.popoverFondsVisible = true } }) }, getClassifyTree(item) { this.isTableType = 2 this.tableTitle = '分类列表' let categoryId if (this.isDesFormType !== 'mergeFile' && this.isDesFormType !== 'arcives' && this.isDesFormType !== 'manageArcives') { categoryId = this.selectedCategory.pid } else { categoryId = this.selectedCategory.id } FetchArchivesClassTree({ 'categoryId': categoryId }).then(res => { if (item.isInputClass === 'select') { const classifyOptions = res.map(function(obj) { if (obj.childArchivesClass !== null) { obj.hasChildren = true } else { obj.hasChildren = false } if (obj.hasChildren) { obj.children = null } return obj }) this.$set(item, 'options', classifyOptions) } else if (item.isInputClass === 'popover') { this.popoverTableDataClassify = res this.popoverClassifyVisible = true } }) }, getSonClass(tree, treeNode, resolve) { setTimeout(() => { FetchSonArchivesClass({ pid: tree.id }).then(res => { const data = res.map(function(obj) { if (obj.sonNum !== 0 && obj.sonNum) { obj.hasChildren = true obj.children = null } else { obj.hasChildren = false } return obj }) resolve(data) }) }, 100) }, // 判断重复api
handlerIsRepeat(params, item) { if (this.isDesFormType !== 'prearchiveLibrary') { FetchDoeditIsRepeat(params).then(res => { if (res) { this.$message.error(item.fieldCnName + '不可重复') } }) } else { FetchReDoeditIsRepeat(params).then(res => { if (res) { this.$message.error(item.fieldCnName + '不可重复') } }) } }, // input 判断是否重复
isRepeatHandle(item) { // 自动重复字段 - 是否重复
if (item.isRepeat) { let params if (this.isDesFormType !== 'prearchiveLibrary' && this.isDesFormType !== 'mergeFile') { params = { 'categoryId': this.selectedCategory.id, 'archivesId': this.arcId, 'fieldName': item.fieldName, 'value': this.addOrUpdateForm[item.fieldName] } } else { params = { 'documentId': this.selectedCategory.id, 'archivesId': null, 'fieldName': item.fieldName, 'value': this.addOrUpdateForm[item.fieldName] } } this.handlerIsRepeat(params, item) }
if (this.isDesFormType !== 'prearchiveLibrary' && this.isDesFormType !== 'mergeFile') { if (!item.isAutomatic) { const index = this.autoMatic.findIndex(i => item.fieldName === i.fieldName) if (index !== -1) { this.handleAuto() } } } }, // tree - open
openTree(item) { this.treeCurrentFiled = item this.$set(item, 'options', []) this.getAllSubset(this.treeCurrentFiled) }, // tree - select
selectTree(val) { if (val.fondsNo) { this.addOrUpdateForm[this.treeCurrentFiled.fieldName] = val.fondsName } else if (val.code) { this.addOrUpdateForm[this.treeCurrentFiled.fieldName] = val.name } else { this.addOrUpdateForm[this.treeCurrentFiled.fieldName] = val.dictionaryName } // 自动重复字段 - 是否重复 - treeSelect方式
if (this.treeCurrentFiled.isRepeat) { let params if (this.isDesFormType !== 'prearchiveLibrary' && this.isDesFormType !== 'mergeFile') { params = { 'categoryId': this.selectedCategory.id, 'archivesId': this.arcId, 'fieldName': this.treeCurrentFiled.fieldName, 'value': val.dictionaryName } } else { params = { 'documentId': this.selectedCategory.id, 'archivesId': null, 'fieldName': this.treeCurrentFiled.fieldName, 'value': val.dictionaryName } } this.handlerIsRepeat(params, this.treeCurrentFiled) } if (this.isDesFormType !== 'prearchiveLibrary' && this.isDesFormType !== 'mergeFile') { if (this.autoMatic) { const index = this.autoMatic.findIndex(i => this.treeCurrentFiled.fieldName === i.fieldName) if (index !== -1) { this.handleAuto() } } } }, // popover - table 单选
clickRowHandler(row) { this.$refs.popoverTable.clearSelection() if (!row.level || row.level === 3) { this.$refs.popoverTable.toggleRowSelection(row) } else { return false } }, // popover - table 选中得项
handleSelectionChange(val) { if (val.length > 0) { if (this.isTableType === 1) { this.addOrUpdateForm[this.currentFieldName] = val[0].fondsNo } else if (this.isTableType === 2 && this.isDesFormType !== 'prearchiveLibrary') { this.addOrUpdateForm[this.currentFieldName] = val[0].code } else { this.addOrUpdateForm[this.currentFieldName] = val[0].dictionaryName } } this.$refs.popoverTable.clearSelection() this.popoverVisible = false this.popoverClassifyVisible = false this.popoverFondsVisible = false
if (this.isDesFormType !== 'prearchiveLibrary' && this.isDesFormType !== 'mergeFile') { if (this.autoMatic) { const index = this.autoMatic.findIndex(i => this.currentFieldName === i.fieldName) if (index !== -1) { this.handleAuto() } } } }, // popover - 当前选中得
handleCurrentFieldName(item) { this.currentFieldName = item.fieldName this.getAllSubset(item) }, // 预览和输入时,自动补零
autoAddZero(isFilling, fieldName, value, fillingDigit) { if (isFilling) { this.addOrUpdateForm[fieldName] = value.toString().padStart(fillingDigit, '0').slice(-1 * fillingDigit) } }, // 寻找pid档案门类代码
findNodeById(node, targetId) { if (node.id === targetId) { return node } if (node.children && node.children.length > 0) { for (const child of node.children) { const result = this.findNodeById(child, targetId) if (result) { return result } } } return null }, // 动态生成表单
editFormRow() { this.rules = {} this.formPreviewData.map(item => { if (item.isInputClass === 'select') { this.$set(item, 'options', []) this.$set(this.addOrUpdateForm, item.fieldName, null) // 防止unkonwn
} if (item.isDefaultValue !== '') { this.$set(this.addOrUpdateForm, item.fieldName, item.isDefaultValue) } else { this.$set(this.addOrUpdateForm, item.fieldName, '') if (item.isInputClass === 'select') { this.$set(this.addOrUpdateForm, item.fieldName, null) // 防止unkonwn
} } if (item.fieldName === 'archival_category_code') { let targetNode if (this.isDesFormType !== 'mergeFile' && this.isDesFormType !== 'arcives' && this.isDesFormType !== 'manageArcives') { const targetId = this.selectedCategory.pid targetNode = this.findNodeById(this.crud.data[0], targetId) } else { targetNode = this.selectedCategory }
if (targetNode) { this.$set(this.addOrUpdateForm, item.fieldName, targetNode.code) } else { this.$set(this.addOrUpdateForm, item.fieldName, '') } } this.$set(this.rules, item.fieldName, [ { required: !!item.isRequired, message: (item.isInputClass === 'text' ? '请输入' : '请选择') + item.fieldCnName, trigger: item.isInputClass === 'text' ? 'blur' : 'change' } ]) }) }, // 预览界面排序
datadragEnd(event) { // 调换顺序
const oldIndex = event.oldIndex // 移动初始位置
const newIndex = event.newIndex // 运动终止位置
const diff = Math.abs(newIndex - oldIndex) // 插值绝对值
const index = this.formPreviewData[oldIndex] if (oldIndex > newIndex) { for (let i = 0; i < diff; i++) { this.formPreviewData[oldIndex - i] = this.formPreviewData[oldIndex - i - 1] } this.formPreviewData[newIndex] = index } else { for (let i = 0; i < diff; i++) { this.formPreviewData[oldIndex + i] = this.formPreviewData[oldIndex + i + 1] } this.formPreviewData[newIndex] = index } }, submitForm(formName, categoryId, quickPaperArcId) { // 时间格式化
this.formPreviewData.map(item => { if (item.isInputClass === 'date') { if (this.addOrUpdateForm[item.fieldName] !== '') { this.$set(this.addOrUpdateForm, item.fieldName, parseTime(this.addOrUpdateForm[item.fieldName]).split(' ')[0]) } } }) delete this.addOrUpdateForm.id this.$refs[formName].validate((valid) => { if (valid) { // 预归档库
if (this.isDesFormType === 'prearchiveLibrary') { if (this.fileOriginal === null) { this.$message({ message: '请上传电子文件', type: 'error' }) return false } const params = { 'id': this.arcId, 'ids': null, 'documentId': categoryId, 'delMan': null, 'jsonString': JSON.stringify(this.addOrUpdateForm), 'fileJsonString': this.fileJsonString } prearchEdit(params).then(res => { if (res) { this.$message.success(res) this.$emit('close-dialog') this.crud.refresh() } }) } else if (this.isDesFormType === 'mergeFile') { // 合并成件
const params = { 'archivesId': null, 'archivesIds': this.mergeFileArcIds, 'documentId': categoryId, 'categoryId': this.mergeFileCategory, 'jsonString': JSON.stringify(this.addOrUpdateForm) } FetchMergeToFile(params).then(res => { if (res) { this.$message.success(res) this.$emit('close-dialog') this.crud.refresh() } }) } else { // 收集库
let parentsId = null // 2 项目 3 案卷 /文件 4 卷内 6 文件
if (this.isTitleType === 2) { parentsId = null } else if (this.isTitleType === 3) { if (this.selectedCategory.arrangeType === 1) { parentsId = null } else { parentsId = this.parentsData.parentsProjectId } } else if (this.isTitleType === 4) { // 卷内
parentsId = this.parentsData.parentsAnjuanId } else if (this.isTitleType === 6) { // 原文
parentsId = this.parentsData.parentsJuanneiId } let params if (quickPaperArcId.length !== 0 && this.archivesType === 'add') { // 快速组卷时,组卷的文件是数组,所以要archivesIds 而不是 archivesId,正好是新增文件,所以this.arcId = null不用担心
params = { 'archivesId': this.arcId, 'archivesIds': quickPaperArcId, 'categoryId': categoryId, 'parentsId': parentsId, 'categoryLevel': 2, 'jsonString': JSON.stringify(this.addOrUpdateForm) } } else if (this.selectedCategory.arrangeType === 3 && this.collectLevel === 3 && this.archivesType === 'add') { // 在项目下,未整理的文件只属于门类下,不属于任何项目或案卷,所以parentsId === null
params = { 'archivesId': this.arcId, 'archivesIds': null, 'categoryId': categoryId, 'parentsId': null, 'categoryLevel': this.collectLevel, 'jsonString': JSON.stringify(this.addOrUpdateForm) } } else { params = { 'archivesId': this.arcId, 'archivesIds': null, 'categoryId': categoryId, 'parentsId': parentsId, 'categoryLevel': this.collectLevel, 'jsonString': JSON.stringify(this.addOrUpdateForm) } } console.log(params) if (this.archivesType === 'add') { collectAdd(params).then(res => { if (res.code === 200) { this.$message.success(res) this.$emit('close-dialog', parentsId) } }) } else { collectEdit(params).then(res => { if (res.code === 200) { this.$message.success(res) this.$emit('close-dialog', parentsId) } }) } } } else { console.log('error submit!!') return false } }) }, handleClose(done) { this.popoverVisible = false this.popoverClassifyVisible = false this.popoverFondsVisible = false this.popoverTableData = [] this.popoverTableDataClassify = [] this.popoverTableDataFonds = [] done() }, // 选择附件
async changeFile(e) { this.file = e.target.files[0] this.fileSize = this.file.size this.formatType = this.file.type.substring(0, this.file.type.indexOf('/')) this.fileNames = this.file.name this.postfix = this.file.name.substring( this.fileNames.lastIndexOf('.') + 1, this.fileNames.length ) if (this.formatType === 'image') { const fileBase64 = await this.getBase64(this.file) const res = await this.getImgPx(fileBase64) this.px = res.width + 'px*' + res.height + 'px' } else { this.px = '' } // 上传附件
reDocumentUpload(this.baseApi + '/api/re-document/uploadFile', this.file, this.selectedDocument.id).then(res => { if (res.data.code === 200) { this.filePath = res.data.data this.uploadSave() } }) }, // 上传附件 - 选择上传即保存
uploadSave() { this.nowDate = getCurrentTime() const json = { 'file_name': this.fileNames, 'file_size': this.fileSize, 'file_type': this.postfix, 'file_path': this.filePath, 'sequence': null, 'archive_id': this.arcId, 'file_dpi': this.px, 'file_thumbnail': '', 'create_time': this.nowDate, 'id': null, 'is_quote': null } const arrayUpload = [] arrayUpload.push(json) this.fileOriginal = this.fileNames this.fileJsonString = JSON.stringify(arrayUpload) }, // 将上传的图片转为base64
getBase64(file) { const reader = new FileReader() reader.readAsDataURL(file) return new Promise((resolve) => { reader.onload = () => { resolve(reader.result) } }) }, // 获取图片的分辨率
getImgPx(img) { const image = new Image() image.src = img return new Promise((resolve) => { image.onload = () => { const width = image.width const height = image.height resolve({ width, height }) } }) }, // 项目级别 - 阶段分类
getDictsList(item) { FetchDictionaryTree().then((res) => { const filterCodes = ['project_class'] let filteredItems = JSON.parse(JSON.stringify(res)).filter(item => filterCodes.includes(item.dictionaryCode)) filteredItems = this.addLevelToDictionaryList(filteredItems, 1) if (item.isInputClass === 'select') { this.$set(item, 'options', filteredItems) } else if (item.isInputClass === 'popover') { this.popoverTableData = filteredItems this.popoverVisible = true } }).catch(err => { console.log(err) }) }, // 给筛选出来的数据加level 方便后面是否可点击
addLevelToDictionaryList(dictionaryList, level) { dictionaryList.forEach(dictionary => { dictionary.level = level if (dictionary.childDictionarys) { dictionary.childDictionarys = this.addLevelToDictionaryList(dictionary.childDictionarys, level + 1) } }) return dictionaryList } } }
</script> <style lang="scss" scoped> @import "~@/assets/styles/mixin.scss"; @import "~@/assets/styles/variables.scss";
@mixin preview-border-style{ [data-theme="dark"] & { border: 1px solid #3a99fd; } [data-theme="light"] & { border: 1px solid #EDEFF3; } }
@mixin preview-border-color{ [data-theme="dark"] & { // border-color: #3a99fd;
border-color: #EDEFF3; } [data-theme="light"] & { border-color: #EDEFF3; } }
.preview-content { padding: 20px 0 0 0 !important; margin-top: 0 !important; border-radius: 4px; margin: 0 auto; border: 1px solid; @include preview-border-color; .el-row { margin-left: 0 !important; margin-right: 0 !important; } .el-col { padding-left: 0 !important; padding-right: 0 !important; } ::v-deep .el-form-item__label{ @include tree_font_color; } ::v-deep .el-input__inner, ::v-deep .vue-treeselect__control, ::v-deep .el-textarea__inner { width: 100%; background-color: transparent; @include input_style; } ::v-deep .vue-treeselect__control{ height: 32px !important; } ::v-deep .el-input__prefix { text-align: right; right: 5px !important; @include tree_font_color; } .input-popover { ::v-deep .el-input__suffix { @include tree_font_color; } } ::v-deep .el-date-editor { width: 225px; .el-input__inner { padding-left: 15px; } } ::v-deep .el-form-item--small .el-form-item__content { line-height: 30px; } ::v-deep .el-input.is-disabled .el-input__inner{ background-color: #f5f7fa; color: #c0c4cc; } } .preview-form-bottom{ padding: 20px 20px 0 20px; border-top: 1px solid; @include preview-border-color; }
.prearch-upload{ margin-right: 0 !important; ::v-deep .el-form-item__content{ width: 540px !important; display: flex; justify-content: space-between; .upload-btn{ position: relative; width:96px; margin-right: 0 !important; margin-left: 10px; overflow: initial !important; #upFile{ position: absolute; left: 0; top: 0; // opacity: 0;
width: 84px; height: 34px; } .el-button{ margin-top: -2px; font-weight: bold; border-color: #0348f3; color: #0348f3; } } } } </style>
|