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 @@
-
+ :disabled="isSingleFile"/>
@@ -33,6 +34,8 @@
+
+
+
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 @@
+
+
+
![Preview]()
+
+
+
+
+
+
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 @@
-
-
-
-
-
-
- {{ formData.requirementName }}
-
-
-
-
- {{ formData.collectType }}
-
-
-
-
- {{ formData.deadline }}
-
-
-
-
- {{ formData.specialFund }}
-
-
-
-
-
- {{
- getCompanyName(formData.companyIds)
- }}
- {{ showExpendText }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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 @@
-
-
form = e">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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',
},
{