+
+
+
+
+
+
+
+
+
+
{
return
}
const params = {
- auditOpinion:_value.value,
- projectId:parseInt(route.query.projectId),
- state:false
+ auditOpinion: _value.value,
+ projectId: parseInt(route.query.projectId),
+ state: false
}
// console.log('params', params)
const res = await approvePlan(params)
@@ -285,11 +310,13 @@ const handleRejectPlan = async () => {
}
const handleAgreePlan = async () => {
const params = {
- auditOpinion:_value.value,
- projectId:parseInt(route.query.projectId),
- state:true
+ auditOpinion: _value.value,
+ projectId: parseInt(route.query.projectId),
+ preProcess: JSON.stringify(localFormData.value.preProcess),
+ state: true
}
- // console.log('params', params)
+
+ console.log('params', params)
const res = await approvePlan(params)
ElNotification({
title: '提示',
@@ -359,7 +386,7 @@ watch(() => props.loading, (newVal) => {
}, {deep: true})
watchEffect(() => {
- props.formData.singleFile=[props.formData.singleFile]
+ props.formData.singleFile = [props.formData.singleFile]
return Object.keys(props.formData).length && (localFormData.value = props.formData)
})
@@ -370,6 +397,6 @@ getFundOptions()
.detail-block {
overflow-x: hidden;
overflow-y: auto;
- padding-bottom: 0!important;
+ padding-bottom: 0 !important;
}
diff --git a/src/components/DetailComponent/singleFileComponent.vue b/src/components/DetailComponent/singleFileComponent.vue
index 85697ee..ce2d644 100644
--- a/src/components/DetailComponent/singleFileComponent.vue
+++ b/src/components/DetailComponent/singleFileComponent.vue
@@ -10,6 +10,8 @@
+
+
+
diff --git a/src/components/filePreview/DocxPreview.vue b/src/components/filePreview/DocxPreview.vue
new file mode 100644
index 0000000..19b5393
--- /dev/null
+++ b/src/components/filePreview/DocxPreview.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
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/implementation/detail.vue b/src/views/project-management/implementation/detail.vue
index 1e5965e..ce570b1 100644
--- a/src/views/project-management/implementation/detail.vue
+++ b/src/views/project-management/implementation/detail.vue
@@ -21,6 +21,7 @@
:data="detailData"
:processViewer="commonProvessViewer"
:fileListShow="fileListShow"
+ :preProcessShow="preProcessShow"
v-model:value="auditOpinion"/>
@@ -64,6 +68,7 @@ const applyTitle = ref('filing')
const loading = ref(false)
const processStore = useProcessStore()
const fileListShow = ref('READ')
+const preProcessShow = ref('READ')
const mode = ref('')
const currentStep = ref()
const auditOpinion = ref('')
@@ -89,6 +94,7 @@ const getAllInfo = async (state) => {
try {
detailShow.value = false
fileListShow.value = 'READ'
+ preProcessShow.value = 'READ'
commonProvessViewer.value = false
const {data, code, msg} = await getMapProjectStateInfo(route.query.projectId, state)
if (code === 1000) {
@@ -108,6 +114,9 @@ const getAllInfo = async (state) => {
if (data.formPermMap && data.formPermMap["fileList"]) {
fileListShow.value = data.formPermMap["fileList"].perm
}
+ if (data.formPermMap && data.formPermMap["preProcess"]) {
+ preProcessShow.value = data.formPermMap["preProcess"].perm
+ }
})
changeModel(state, mode.value)
loading.close()
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/SpecialFundDetailMobile.vue b/src/views/project-management/mobledetail/SpecialFundDetailMobile.vue
index 093bd65..02c9371 100644
--- a/src/views/project-management/mobledetail/SpecialFundDetailMobile.vue
+++ b/src/views/project-management/mobledetail/SpecialFundDetailMobile.vue
@@ -87,6 +87,8 @@
+
@@ -162,7 +164,9 @@ const fileTable = reactive({
prop: 'originalFileName',
label: '文件名',
align: 'center',
- width: 160,
+ width: 200,
+ showOverflowTooltip: false,
+ currentRender: ({row, index}) => (