diff --git a/package.json b/package.json index cae7f0f..b193f9e 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@tinymce/tinymce-vue": "^4.0.7", "axios": "^1.4.0", "d3": "^7.8.5", + "docx-preview": "^0.3.2", "echarts": "^5.4.2", "element-plus": "^2.6.0", "file-saver": "^2.0.5", @@ -31,6 +32,7 @@ "vue-codemirror": "^6.1.1", "vue-json-viewer": "^3.0.4", "vue-router": "^4.1.6", + "vue3-pdf-app": "^1.0.3", "vuedraggable": "^4.1.0", "xlsx": "^0.18.5", "xlsx-style-vite": "^0.0.2" diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index 47666a8..985579c 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -60,7 +60,7 @@ html, body, #app, .el-container, .el-aside, .el-main { top: 0; bottom: 0; left: 0; - z-index: 1001; + //z-index: 1001; } .el-dialog { @@ -374,6 +374,9 @@ html, body, #app, .el-container, .el-aside, .el-main { left: 200px; } +//.el-overlay-dialog { +// left: 200px !important; +//} //放大缩小按钮上外边距 .scale { margin-top: 10px; @@ -382,12 +385,10 @@ html, body, #app, .el-container, .el-aside, .el-main { //top: -20px; } -.el-overlay-dialog { - left: 200px !important; -} .el-overlay-dialog::-webkit-scrollbar, .scrollbar-dict::-webkit-scrollbar { width: 6px; + height: 6px; } // 滚动条轨道 diff --git a/src/components/AttachmentUpload.vue b/src/components/AttachmentUpload.vue index be06345..0f22d01 100644 --- a/src/components/AttachmentUpload.vue +++ b/src/components/AttachmentUpload.vue @@ -6,13 +6,14 @@ + + diff --git a/src/components/filePreview/ImagePreview.vue b/src/components/filePreview/ImagePreview.vue new file mode 100644 index 0000000..62e7db5 --- /dev/null +++ b/src/components/filePreview/ImagePreview.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/filePreview/PdfPreview.vue b/src/components/filePreview/PdfPreview.vue new file mode 100644 index 0000000..8858b87 --- /dev/null +++ b/src/components/filePreview/PdfPreview.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/components/filePreview/index.vue b/src/components/filePreview/index.vue new file mode 100644 index 0000000..09ed3fe --- /dev/null +++ b/src/components/filePreview/index.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/views/project-demand/requirement/add.vue b/src/views/project-demand/requirement/add.vue index 4f4d09c..6abddfa 100644 --- a/src/views/project-demand/requirement/add.vue +++ b/src/views/project-demand/requirement/add.vue @@ -110,6 +110,8 @@ + @@ -134,7 +136,12 @@ import {getFundOption} from "@/api/special-fund"; import CompanyPicker from "@/components/DetailComponent/CompanyPicker.vue"; import {useCacheStore} from '@/stores/cache.js' - +const filePreviewParam = ref({ + fileUrl: '', + fileName: '', + fileType: 'pdf' +}) +const filePreviewShow = ref(false) const cacheStore = useCacheStore() const companyRef = ref() const showExpendText = ref('') @@ -190,6 +197,9 @@ const tableConfig = reactive({ prop: 'originalFileName', label: '文件名', align: 'center', + showOverflowTooltip: false, + currentRender: ({row, index}) => ( +
clickToPreview(row)}>{row.originalFileName}
) }, { prop: 'tag', @@ -220,6 +230,18 @@ const tableConfig = reactive({ } ] }) +const clickToPreview = (row) => { + filePreviewShow.value = false + filePreviewParam.value = { + fileUrl: row.url, + fileName: row.originalFileName, + fileType: row.fileType + } + nextTick(()=>{ + filePreviewShow.value = true + }) + // filePreviewRef.value.show() +} const disabledDate = (time) => { return time.getTime() < Date.now() - 8.64e7//不能选择之后的数据 } diff --git a/src/views/project-demand/requirement/moblieDetail/CollectionDetailMoblie.vue b/src/views/project-demand/requirement/moblieDetail/CollectionDetailMoblie.vue deleted file mode 100644 index 2f68bef..0000000 --- a/src/views/project-demand/requirement/moblieDetail/CollectionDetailMoblie.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - - - diff --git a/src/views/project-demand/requirement/moblieDetail/index.vue b/src/views/project-demand/requirement/moblieDetail/index.vue index dc4e1f5..2a3e45f 100644 --- a/src/views/project-demand/requirement/moblieDetail/index.vue +++ b/src/views/project-demand/requirement/moblieDetail/index.vue @@ -16,7 +16,7 @@ import {useTagsView} from '@/stores/tagsview.js' import {getFundOption} from "@/api/special-fund"; import {getSubCompOpt} from "@/api/user/user"; import {matterTree} from "@/utils/matterTree"; -import CollectionDetailMoblie from './CollectionDetailMoblie.vue' +import CollectionDetailMoblie from '@/views/project-management/mobledetail/CollectionDetailMoblie.vue' import OpinionMoblie from '@/views/project-management/mobledetail/OpinionMoblie.vue' const tagsViewStore = useTagsView() diff --git a/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue b/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue index 9ccd76d..80dec1d 100644 --- a/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue +++ b/src/views/project-management/mobledetail/ApprovalDetailMoblie.vue @@ -121,6 +121,12 @@ const tableConfig = reactive({ } ] }) +const filePreviewParam = ref({ + fileUrl: '', + fileName: '', + fileType: 'pdf' +}) +const filePreviewShow = ref(false) const attachmentParam = reactive({ tag: '' }) @@ -169,6 +175,69 @@ const props = defineProps({ }) const form = ref() const otherAttachmentList = ref([]) +const editSingleTableConfig = reactive({ + columns: [ + { + prop: 'index', + type: 'index', + label: '序号', + align: 'center', + width: 85, + }, + { + prop: 'originalFileName', + label: '文件名', + align: 'center', + width: 400, + currentRender: ({row, index}) => (
clickToPreview(row)}>{row.originalFileName}
) + }, + { + prop: 'tag', + label: '标签', + align: 'center' + }, + { + prop: 'size', + label: '文件大小', + align: 'center', + width: 150, + currentRender: ({row, index}) => (parseInt(row.size / 1024) + 'KB') + }, + { + prop: 'oper', + label: '操作', + align: 'center', + showOverflowTooltip: false, + currentRender: ({row, index}) => { + let btn = [] + btn.push({label: '下载', func: () => handleDownload(row), type: 'primary'}) + // if (row.newFile) { + // btn.push({label: '删除', func: () => handleDelete(row), type: 'primary'}) + // } + return ( +
+ { + btn.map(item => ( + item.func()} + link> + {item.label} + + )) + } + { + row.newFile ? handleDelete(row)}/> + : '' + } +
+ ) + } + } + ] +}) const schema = computed(() => { let arr if (props.type == 'approval') { @@ -232,21 +301,13 @@ const schema = computed(() => { span: 24 }, labelWidth:'left', - component: () => ( -
- { - props.formData.singleFile?.originalFileName ? - handleDownload(props.formData.singleFile)} - > - {props.formData.singleFile?.originalFileName} - : - {'--'} - } -
- - ) + component: () => { + let singleFileArray = [props.formData.singleFile] + return + + } }, ] } else if (props.type == 'execute') { @@ -276,21 +337,13 @@ const schema = computed(() => { span: 24 }, labelWidth:'left', - component: () => ( -
- { - props.formData.singleFile?.originalFileName ? - handleDownload(props.formData.singleFile)} - > - {props.formData.singleFile?.originalFileName} - : - {'--'} - } -
- - ) + component: () => { + let singleFileArray = [props.formData.singleFile] + return + + } }, ] } else if (props.type == 'archivist') { @@ -302,21 +355,13 @@ const schema = computed(() => { span: 24 }, labelWidth:'left', - component: () => ( -
- { - props.formData.singleFile?.originalFileName ? - handleDownload(props.formData.singleFile)} - > - {props.formData.singleFile?.originalFileName} - : - {'--'} - } -
- - ) + component: () => { + let singleFileArray = [props.formData.singleFile] + return + + } }, ] } else if (props.type == 'phase') { @@ -328,21 +373,13 @@ const schema = computed(() => { span: 24 }, labelWidth:'left', - component: () => ( -
- { - props.formData.singleFile?.originalFileName ? - handleDownload(props.formData.singleFile)} - > - {props.formData.singleFile?.originalFileName} - : - {'--'} - } -
- - ) + component: () => { + let singleFileArray = [props.formData.singleFile] + return + + } }, ] } @@ -359,6 +396,17 @@ const _value = computed({ emit("update:value", val); } }) +const clickToPreview=(row)=>{ + filePreviewShow.value = false + filePreviewParam.value = { + fileUrl: row.url, + fileName: row.originalFileName, + fileType: row.fileType + } + nextTick(()=>{ + filePreviewShow.value = true + }) +} const getTagsOption = () => { if (!route.query.projectId) return getTags(route.query.projectId).then(res => { diff --git a/src/views/project-management/mobledetail/CollectionDetailMoblie.vue b/src/views/project-management/mobledetail/CollectionDetailMoblie.vue index ae996f7..3bcd7a0 100644 --- a/src/views/project-management/mobledetail/CollectionDetailMoblie.vue +++ b/src/views/project-management/mobledetail/CollectionDetailMoblie.vue @@ -44,7 +44,7 @@ - diff --git a/src/views/project-management/mobledetail/SummaryDetailMoblie.vue b/src/views/project-management/mobledetail/SummaryDetailMoblie.vue index 8a4d384..af2349f 100644 --- a/src/views/project-management/mobledetail/SummaryDetailMoblie.vue +++ b/src/views/project-management/mobledetail/SummaryDetailMoblie.vue @@ -135,7 +135,7 @@ - @@ -151,7 +151,7 @@ -
- - - - -
- - - - -
-
-
- -
-
流程图
- -
-
-
- - -
-
-
- - - - - diff --git a/src/views/project-management/phaseDetailMoblie/index.vue b/src/views/project-management/phaseDetailMoblie/index.vue index 724d4ee..3ba0c77 100644 --- a/src/views/project-management/phaseDetailMoblie/index.vue +++ b/src/views/project-management/phaseDetailMoblie/index.vue @@ -17,8 +17,8 @@ import {useProcessStore} from '@/stores/processStore.js'; import {getPhaseDetail} from "@/api/project-manage"; import {computed, ref} from "vue"; import {getBaseInfoApi} from "@/components/steps/api"; -import ApprovalDetailMoblie from './ApprovalDetailMoblie.vue' -import OpinionMoblie from "../mobledetail/OpinionMoblie.vue"; +import ApprovalDetailMoblie from '../mobledetail/ApprovalDetailMoblie.vue' +import OpinionMoblie from '@/views/project-management/mobledetail/OpinionMoblie.vue' const route = useRoute() const summaryData = ref({}) diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 84f417d..1b055f4 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -46,7 +46,7 @@ const shortcuts = [ const searchConfig = ref([ { - label: '子公司名称', + label: '公司名称', prop: 'subCompanyId', component: 'el-tree-select', props: { diff --git a/src/views/system/user/add.vue b/src/views/system/user/add.vue index a545133..6825f82 100644 --- a/src/views/system/user/add.vue +++ b/src/views/system/user/add.vue @@ -36,7 +36,7 @@ const localData = reactive({ const schame = computed(()=>{ let arr = [ { - label: '子公司', + label: '公司', prop: 'subCompanyId', component: 'el-tree-select', props: { diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index d12a2ab..41e4949 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -17,7 +17,7 @@ const router = useRouter() const searchConfig = ref([ { - label: '子公司名称', + label: '公司名称', prop: 'subCompanyId', component: 'el-tree-select', props: { @@ -101,7 +101,7 @@ const tableConfig = reactive({ }, { prop: 'subCompanyName', - label: '子公司名称', + label: '公司名称', align: 'center', }, {