diff --git a/src/api/project-manage/index.js b/src/api/project-manage/index.js index 7826909..eb54d16 100644 --- a/src/api/project-manage/index.js +++ b/src/api/project-manage/index.js @@ -55,13 +55,18 @@ export const getProjectCheckProcess = (projectId) => { method: "get" }); }; -export const getImplementationAttachment = (projectId) => { +export const getImplementationAttachment = (params) => { return request({ - url: '/workflow/mosr/project/implementation/tags', + url: '/workflow/mosr/project/implementation/attachments', method: "get", - params:{ - projectId:projectId - } + params:params + }); +}; +export const uploadAttachment= (data) => { + return request({ + url: '/workflow/mosr/project/implementation/upload', + method: "post", + data: data }); }; export const addLedger = (data) => { @@ -71,6 +76,16 @@ export const addLedger = (data) => { data: data }); }; + +export const getTags = (projectId) => { + return request({ + url: '/workflow/mosr/project/implementation/tags', + method: "get", + params:{ + projectId:projectId + } + }); +}; //项目归档 export const getConclusionDetail = (ProjectId) => { return request({ @@ -99,15 +114,3 @@ export const getProjectConclusionProcess = () => { method: "get" }); }; - -//文件查询 -export const searchFile = (targetId,tag) => { - return request({ - url: '/workflow/process/file/query', - method: "get", - params:{ - targetId:targetId, - tag:tag - } - }); -}; diff --git a/src/views/expense-management/ledger/index.vue b/src/views/expense-management/ledger/index.vue index 7966eb8..fb0a6f8 100644 --- a/src/views/expense-management/ledger/index.vue +++ b/src/views/expense-management/ledger/index.vue @@ -12,11 +12,11 @@ const router = useRouter() const route = useRoute() const searchConfig = reactive([ { - label: '名称', + label: '需求名称', prop: 'requirementName', component: 'el-input', props: { - placeholder: '请输入名称查询', + placeholder: '请输入需求名称查询', clearable: true, filterable: true, checkStrictly: true diff --git a/src/views/expense-management/share/index.vue b/src/views/expense-management/share/index.vue index 1120d54..dc44199 100644 --- a/src/views/expense-management/share/index.vue +++ b/src/views/expense-management/share/index.vue @@ -11,11 +11,11 @@ const router = useRouter(); const searchConfig = reactive([ { - label: '名称', + label: '项目名称', prop: 'projectName', component: 'el-input', props: { - placeholder: '请输入名称查询', + placeholder: '请输入项目名称查询', clearable: true, filterable: true, checkStrictly: true @@ -36,17 +36,17 @@ const tableIns = ref() const tableConfig = reactive({ columns: [ { - prop: 'requirementName', + prop: 'shareName', label: '分摊名称', align: 'center' }, { - prop: 'collectType', + prop: 'apportionmentMonth', label: '分摊月份', align: 'center' }, { - prop: 'deadline', + prop: 'generationTime', label: '生成时间', align: 'center' }, @@ -54,9 +54,8 @@ const tableConfig = reactive({ prop: 'state', label: '状态', align: 'center', - width: 200, showOverflowTooltip: false, - currentRender: ({row, index}) => () + currentRender: ({row, index}) => () }, { prop: 'oper', @@ -65,22 +64,25 @@ const tableConfig = reactive({ showOverflowTooltip: false, currentRender: ({row, index}) => { let btn = [] - let buttons = new Set(Array.from(row.buttons)) - if (buttons.has("details")) { + let buttons + if(row.buttons){ + buttons = new Set(Array.from(row.buttons)) + } + // if (buttons.has("details")) { btn.push({label: '详情', prem: ['mosr:requirement:info'], func: () => handleDetail(row), type: 'primary'}) - } - if (buttons.has("edit")) { + // } + // if (buttons.has("edit")) { btn.push({label: '编辑', prem: ['mosr:requirement:resubmit'], func: () => handleEdit(row), type: 'primary'}) - } + // } // if (buttons.has("delete")) { // btn.push({label: '删除',prem: ['mosr:requirement:del'], func: () => handleDelete(row), type: 'primary'}) // } - if (buttons.has("report")) { + // if (buttons.has("report")) { btn.push({label: '明细导出', prem: ['mosr:requirement:info'], func: () => handleReport(row), type: 'primary'}) - } - if (buttons.has("report")) { + // } + // if (buttons.has("report")) { btn.push({label: '汇总导出', prem: ['mosr:requirement:info'], func: () => handleReport(row), type: 'primary'}) - } + // } return (
{ @@ -96,17 +98,18 @@ const tableConfig = reactive({ )) } { - buttons.has("delete") ? + // buttons.has("delete") ? handleDelete(row)}/> : '' + onDelete={() => handleDelete(row)}/> + // : '' }
) } } ], - api: '', + api: '/workflow/mosr/cost/allocation', btns: [ {name: '添加分摊', key: 'add', color: '#DED0B2'} ], diff --git a/src/views/project-demand/requirement/add.vue b/src/views/project-demand/requirement/add.vue index 0d2df9c..8c9c1a6 100644 --- a/src/views/project-demand/requirement/add.vue +++ b/src/views/project-demand/requirement/add.vue @@ -2,8 +2,8 @@
- - + + -->
- 提交 - 重新提交 + 提交 + 重新提交 返回
@@ -90,6 +90,7 @@ const formData = ref({ fileList: [] }) const showTinymce = ref(true) +const routerName = ref(router.currentRoute.value.name) const processDiagramViewer = ref(false) const typeOption = ref([ { @@ -106,7 +107,7 @@ const processStore = useProcessStore() const processInstanceData = ref() const formPermMap = ref(new Map()); const rules = reactive({ - requirementName: [{required: true, message: '请输入名称', trigger: 'blur'}], + requirementName: [{required: true, message: '请输入需求名称', trigger: 'blur'}], companyIds: [{required: true, message: '请选择所属公司', trigger: 'blur'}], collectType: [{required: true, message: '请选择征集类型', trigger: 'blur'}], deadline: [{required: true, message: '请选择截止时间', trigger: 'blur'}], @@ -174,11 +175,10 @@ const handleDownload = (row) => { }) } const compositeParam = (item) => { - let name=router.currentRoute.value.name let tag = '' - if (!formData.value.collectType && name === 'Requirement/add') { + if (!formData.value.collectType && routerName.value === 'Requirement/add') { tag = '需求征集' - }else if(name === 'Requirement/edit'){ + }else if(routerName.value === 'Requirement/edit'){ tag = '需求征集' } return { diff --git a/src/views/project-demand/requirement/index.vue b/src/views/project-demand/requirement/index.vue index 3199e05..b5d53dc 100644 --- a/src/views/project-demand/requirement/index.vue +++ b/src/views/project-demand/requirement/index.vue @@ -22,7 +22,7 @@ const searchConfig = reactive([ prop: 'requirementName', component: 'el-input', props: { - placeholder: '请输入名称查询', + placeholder: '请输入需求名称查询', clearable: true, filterable: true, checkStrictly: true diff --git a/src/views/project-demand/summary/add.vue b/src/views/project-demand/summary/add.vue index ec42aa4..1a6b071 100644 --- a/src/views/project-demand/summary/add.vue +++ b/src/views/project-demand/summary/add.vue @@ -4,8 +4,8 @@ - - + + @@ -139,16 +139,18 @@ - - + {{item.label}} - - + {{item.label}} @@ -227,9 +229,9 @@
- 存为草稿 - 发布 - 重新发布 + 存为草稿 + 发布 + 重新发布
@@ -259,11 +261,11 @@ const showTable = ref(true) const otherFileList = ref([]) const file = ref({}) const formData = ref({ - industryUniversityResearch:0, - governmentDeclaration:0, + industryUniversityResearch:'0', + governmentDeclaration:'0', }) const rules = reactive({ - projectName: [{required: true, message: '请输入名称', trigger: 'blur'}], + projectName: [{required: true, message: '请输入项目名称', trigger: 'blur'}], specialFund: [{required: true, message: '请选择专项资金', trigger: 'blur'}], startTime: [{required: true, message: '请选择开始时间', trigger: 'blur'}], rdSubject: [{required: true, message: '请输入研发主体', trigger: 'blur'}], diff --git a/src/views/project-demand/summary/index.vue b/src/views/project-demand/summary/index.vue index fad2ccc..94a39fa 100644 --- a/src/views/project-demand/summary/index.vue +++ b/src/views/project-demand/summary/index.vue @@ -7,7 +7,6 @@ import {reactive, ref, shallowRef} from 'vue'; import fvSelect from '@/fvcomponents/fvSelect/index.vue' import {useRouter} from 'vue-router'; - const localData = reactive({}) const tableIns = ref() @@ -16,10 +15,12 @@ const router = useRouter() const searchConfig = reactive([ { - label: '名称', + label: '需求名称', prop: 'requirementName', props: { - placeholder: '请输入' + placeholder: '请输入需求名称', + clearable: true, + checkStrictly: true }, component: 'el-input', colProps: {} @@ -28,42 +29,52 @@ const searchConfig = reactive([ label: '项目类型', prop: 'projectType', component: shallowRef(fvSelect), - props: {}, + props: { + placeholder: '请选择项目类型', + cacheKey: 'project_type', + clearable: true, + filterable: true, + }, colProps: {} }, { label: '研发主体', prop: 'productMainBody', component: shallowRef(fvSelect), - props: {}, - colProps: {} - }, - { - label: '项目影响', - prop: 'projectEffect', - component: shallowRef(fvSelect), - props: {}, - colProps: {} - }, - { - label: '起止时间', - prop: 'startTime', - component: 'el-date-picker', - props: {}, - colProps: {} - }, - { - label: '最小金额', - prop: 'minMoney', - component: 'el-input', - colProps: {} - }, - { - label: '最大金额', - prop: 'maxMoney', - component: 'el-input', + props: { + placeholder: '请选择研发主体', + cacheKey: 'rd_subject', + clearable: true, + filterable: true + }, colProps: {} }, + // { + // label: '项目影响', + // prop: 'projectEffect', + // component: shallowRef(fvSelect), + // props: {}, + // colProps: {} + // }, + // { + // label: '起止时间', + // prop: 'startTime', + // component: 'el-date-picker', + // props: {}, + // colProps: {} + // }, + // { + // label: '最小金额', + // prop: 'minMoney', + // component: 'el-input', + // colProps: {} + // }, + // { + // label: '最大金额', + // prop: 'maxMoney', + // component: 'el-input', + // colProps: {} + // }, ]) const tableConfig = reactive({ @@ -100,7 +111,10 @@ const tableConfig = reactive({ { prop: 'startTime', label: '起止时间', - align: 'center' + align: 'center', + currentRender: ({row}) => { + return row.startTime + ' 至 ' + row.endTime + } }, { prop: 'state', @@ -108,7 +122,7 @@ const tableConfig = reactive({ align: 'center', showOverflowTooltip: false, currentRender: ({row, index}) => { - if (row.state !== null&&row.state != 0) { + if (row.state !== null && row.state != 0) { return () } else { return '--' @@ -127,13 +141,13 @@ const tableConfig = reactive({ btn.push({label: '详情', prem: ['mosr:collect:info'], func: () => handleDetail(row), type: 'primary'}) } if (buttons.has("edit")) { - btn.push({label: '编辑',prem: ['mosr:collect:resubmit'], func: () => handleEdit(row), type: 'primary'}) + btn.push({label: '编辑', prem: ['mosr:collect:resubmit'], func: () => handleEdit(row), type: 'primary'}) } // if (buttons.has("delete")) { // btn.push({label: '删除',prem: ['mosr:requirement:del'], func: () => handleEdit(row), type: 'primary'}) // } if (buttons.has("report")) { - btn.push({label: '上报',prem: ['mosr:collect:reported'], func: () => handleAdd(row), type: 'primary'}) + btn.push({label: '上报', prem: ['mosr:collect:reported'], func: () => handleAdd(row), type: 'primary'}) } return (
@@ -175,26 +189,26 @@ const search = (val) => { const handleAdd = (row) => { router.push({ - name:'Summary/add', + name: 'Summary/add', query: { - id:row.requirementId + id: row.requirementId } }) } const handleEdit = (row) => { router.push({ - name:'Summary/edit', + name: 'Summary/edit', query: { - id:row.requirementId, - projectId:row.projectId + id: row.requirementId, + projectId: row.projectId } }) } const handleDetail = (row) => { router.push({ - name:'Summary/detail', + name: 'Summary/detail', query: { - id:row.requirementId, + id: row.requirementId, projectId: row.projectId, state: row.state } diff --git a/src/views/project-management/filing/conclusion.vue b/src/views/project-management/filing/conclusion.vue index af87adb..390e722 100644 --- a/src/views/project-management/filing/conclusion.vue +++ b/src/views/project-management/filing/conclusion.vue @@ -1,18 +1,17 @@ @@ -23,19 +22,22 @@ import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.v import {downloadFile} from "@/api/project-demand"; import {ElNotification} from "element-plus"; import {useProcessStore} from '@/stores/processStore.js'; -import {getProjectConclusionProcess, projectConclusion,getConclusionDetail, resubmitConclusion} from "@/api/project-manage"; +import { + getProjectConclusionProcess, + projectConclusion, + getConclusionDetail, + resubmitConclusion +} from "@/api/project-manage"; + const router = useRouter() const route = useRoute() const tagsViewStore = useTagsView() const formData = ref({}) -const rules = reactive({ - attachment: [{required: true, message: '请上传项目结项附件', trigger: 'blur'}], -}) + const attachment = ref() -const name=ref(router.currentRoute.value.name) +const name = ref(router.currentRoute.value.name) const loading = ref(false) const file = ref({}) -const applyForm = ref() const deploymentId = ref() const showTable = ref(true) const otherFileList = ref([]) @@ -93,7 +95,7 @@ const handleDownload = (row) => { } const compositeParam = (item) => { let tag = '' - if (name.value === 'Filing/conclusion'||name.value === 'Filing/edit') { + if (name.value === 'Filing/conclusion' || name.value === 'Filing/edit') { tag = '项目结项' } return { @@ -107,7 +109,7 @@ const compositeParam = (item) => { } const getAttachment = (val) => { console.log('上传文件getAttachment', val) - file.value=compositeParam(val) + file.value = compositeParam(val) } const getOtherFile = (val) => { console.log('上传文件getOtherFile', val) @@ -125,82 +127,77 @@ const getFileParam = (item) => { tag: item.tag } } -const handleSubmit = (instance) => { - if (!instance) return - instance.validate(async (valid) => { - if (!valid) return - if(JSON.stringify(file.value) === "{}"){ - attachment.value.validate() - } else { - attachment.value.clearValidate() - } - if (!valid) return - let files = [] - let singleFile={} - if(file.value.fileId!==undefined){ - singleFile = { - fileId: file.value.fileId - } - } - otherFileList.value.forEach(item => { - files.push(getFileParam(item)) - }) - let params = { - deploymentId: deploymentId.value, - requirementId: route.query.id, - fileList: files, - singleFile: singleFile, - projectId:route.query.projectId, - } - console.log('params', params) - let res = await projectConclusion(params) - ElNotification({ - title: '提示', - message: res.msg, - type: res.code === 1000 ? 'success' : 'error' - }) - if (res.code === 1000) { - tagsViewStore.delVisitedViews(router.currentRoute.value.path) - await router.push({ - name: 'Filing' - }) +const handleSubmit = async () => { + if (JSON.stringify(file.value) === "{}") { + attachment.value.validate() + } else { + attachment.value.clearValidate() + } + let files = [] + let singleFile = {} + if (file.value.fileId !== undefined) { + singleFile = { + fileId: file.value.fileId } + } + otherFileList.value.forEach(item => { + files.push(getFileParam(item)) }) + let params = { + deploymentId: deploymentId.value, + requirementId: route.query.id, + fileList: files, + singleFile: singleFile, + projectId: route.query.projectId, + } + console.log('params', params) + let res = await projectConclusion(params) + ElNotification({ + title: '提示', + message: res.msg, + type: res.code === 1000 ? 'success' : 'error' + }) + if (res.code === 1000) { + tagsViewStore.delVisitedViews(router.currentRoute.value.path) + await router.push({ + name: 'Filing' + }) + } } const handleResubmit = () => { let singleFile = {} let otherFiles = [] let fileArray - if (JSON.stringify(file.value) === "{}"||attachment.value.singleFile===null) { + if (JSON.stringify(file.value) === "{}" || attachment.value.singleFile === null) { attachment.value.validate() } else { attachment.value.clearValidate() } - if(attachment.value.singleFile!==null&&name.value === 'Filing/edit'){ + if (attachment.value.singleFile !== null && name.value === 'Filing/edit') { singleFile = { fileId: attachment.value.singleFile.fileId } - fileArray=attachment.value.allFileList - }else { + fileArray = attachment.value.allFileList + } else { if (file.value.fileId !== undefined) { singleFile = { fileId: file.value.fileId } } - fileArray=otherFileList.value + fileArray = otherFileList.value } fileArray.forEach(item => { otherFiles.push(getFileParam(item)) }) //todo requirementId - let params={ + let params = { deploymentId: deploymentId.value, requirementId: route.query.id, fileList: otherFiles, singleFile: singleFile, - projectId:route.query.projectId, + projectId: route.query.projectId, } - console.log('重新提交params',params) + console.log('重新提交params', params) resubmitConclusion(params).then(res => { ElNotification({ title: '提示', @@ -224,11 +221,11 @@ const getDetailInfo = async () => { }) if (res.code === 1000) { formData.value = res.data.formData - loading.value=false + loading.value = false } }) } -const init = () => { +const init = () => { getProjectConclusionProcess().then(res => { ElNotification({ title: '提示', @@ -238,7 +235,7 @@ const init = () => { processDiagramViewer.value = false if (res.code === 1000) { let data = res.data - deploymentId.value=data.deploymentId + deploymentId.value = data.deploymentId processInstanceData.value = data processStore.setDesign(data) processStore.runningList.value = data.runningList; @@ -255,7 +252,7 @@ const init = () => { onMounted(async () => { await init() if (name.value === 'Filing/edit') { - loading.value=true + loading.value = true await getDetailInfo() } }) diff --git a/src/views/project-management/filing/index.vue b/src/views/project-management/filing/index.vue index c662770..d787b8f 100644 --- a/src/views/project-management/filing/index.vue +++ b/src/views/project-management/filing/index.vue @@ -14,11 +14,11 @@ import {reactive, shallowRef} from "vue"; const router = useRouter() const searchConfig = reactive([ { - label: '名称', + label: '需求名称', prop: 'requirementName', component: 'el-input', props: { - placeholder: '请输入名称查询', + placeholder: '请输入需求名称查询', clearable: true, filterable: true, checkStrictly: true diff --git a/src/views/project-management/implementation/account.vue b/src/views/project-management/implementation/account.vue index ccc8ca2..19fb125 100644 --- a/src/views/project-management/implementation/account.vue +++ b/src/views/project-management/implementation/account.vue @@ -8,13 +8,16 @@