@@ -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 06ee770..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)
@@ -121,85 +123,81 @@ const getOtherFile = (val) => {
const getFileParam = (item) => {
return {
- fileId: item.fileId
+ fileId: item.fileId,
+ 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: '提示',
@@ -223,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: '提示',
@@ -237,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;
@@ -254,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 b971574..19fb125 100644
--- a/src/views/project-management/implementation/account.vue
+++ b/src/views/project-management/implementation/account.vue
@@ -8,13 +8,16 @@
diff --git a/src/views/project-management/implementation/share.vue b/src/views/project-management/implementation/share.vue
index 9a896d2..9d34ac6 100644
--- a/src/views/project-management/implementation/share.vue
+++ b/src/views/project-management/implementation/share.vue
@@ -12,11 +12,11 @@ import {reactive} from "vue";
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/upload.vue b/src/views/project-management/implementation/upload.vue
new file mode 100644
index 0000000..c266eba
--- /dev/null
+++ b/src/views/project-management/implementation/upload.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
diff --git a/src/views/project-management/implementation/uploadFee.vue b/src/views/project-management/implementation/uploadFee.vue
index cc94c34..22acfec 100644
--- a/src/views/project-management/implementation/uploadFee.vue
+++ b/src/views/project-management/implementation/uploadFee.vue
@@ -1,84 +1,170 @@
-
-
-
-
-
- {{ formData.requirementName }}
-
-
-
-
- {{ formData.companyIds }}
-
-
-
-
- {{ formData.collectType }}
-
-
-
-
- {{ formData.deadline }}
-
-
-
-
- {{ formData.deadline }}
-
-
-
-
- {{ formData.deadline }}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
- 删除
-
-
-
+
+ 添加一行
+
+
+ 提交
+ 返回
+
-
diff --git a/src/views/project-management/initiation/apply.vue b/src/views/project-management/initiation/apply.vue
index 71fe9d5..5c1e3b1 100644
--- a/src/views/project-management/initiation/apply.vue
+++ b/src/views/project-management/initiation/apply.vue
@@ -12,14 +12,15 @@
+ @getOtherFile="getOtherFile" :showFileList="true" :formData="formData"
+ :preview="name === 'Initiation/edit'"/>
- 提交
- 重新提交
+ 提交
+ 重新提交
@@ -28,7 +29,7 @@
import {useTagsView} from '@/stores/tagsview.js'
import {ElMessage, ElNotification} from "element-plus";
import ProcessDiagramViewer from '@/views/workflow/common/ProcessDiagramViewer.vue';
-import {getApplyProcess, projectApply,resubmitApply,getApplyDetail} from "@/api/project-manage";
+import {getApplyProcess, projectApply, resubmitApply, getApplyDetail} from "@/api/project-manage";
import {useProcessStore} from '@/stores/processStore.js';
const tagsViewStore = useTagsView()
@@ -88,10 +89,10 @@ const tableConfig = reactive({
const loading = ref(false)
const processInstanceData = ref()
const processDiagramViewer = ref(true)
-const name=ref(router.currentRoute.value.name)
+const name = ref(router.currentRoute.value.name)
const compositeParam = (item) => {
let tag = ''
- if (name.value === 'Initiation/apply'||name.value === 'Initiation/edit') {
+ if (name.value === 'Initiation/apply' || name.value === 'Initiation/edit') {
tag = '项目立项申请'
}
return {
@@ -100,12 +101,12 @@ const compositeParam = (item) => {
originalFileName: item.originalFilename,
fileType: item.fileType,
url: item.url,
- tag:tag
+ tag: tag
}
}
const getAttachment = (val) => {
console.log('上传文件getAttachment', val)
- file.value=compositeParam(val)
+ file.value = compositeParam(val)
}
const getOtherFile = (val) => {
console.log('上传文件getOtherFile', val)
@@ -118,21 +119,22 @@ const getOtherFile = (val) => {
}
const getFileParam = (item) => {
return {
- fileId: item.fileId
+ fileId: item.fileId,
+ tag: item.tag
}
}
const handleSubmit = (instance) => {
if (!instance) return
instance.validate(async (valid) => {
- if(JSON.stringify(file.value) === "{}"){
+ if (JSON.stringify(file.value) === "{}") {
attachment.value.validate()
- }else {
+ } else {
attachment.value.clearValidate()
}
if (!valid) return
let files = []
- let singleFile={}
- if(file.value.fileId!==undefined){
+ let singleFile = {}
+ if (file.value.fileId !== undefined) {
singleFile = {
fileId: file.value.fileId
}
@@ -145,9 +147,9 @@ const handleSubmit = (instance) => {
requirementId: route.query.id,
fileList: files,
singleFile: singleFile,
- projectId:route.query.projectId,
+ projectId: route.query.projectId,
}
- console.log('params',params)
+ console.log('params', params)
let res = await projectApply(params)
ElNotification({
title: '提示',
@@ -162,27 +164,27 @@ const handleSubmit = (instance) => {
}
})
}
-const handleResubmit =async () => {
+const handleResubmit = async () => {
let files = []
- let singleFile={}
+ let singleFile = {}
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 === 'Initiation/edit'){
+ if (attachment.value.singleFile !== null && name.value === 'Initiation/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 => {
files.push(getFileParam(item))
@@ -192,9 +194,9 @@ const handleResubmit =async () => {
requirementId: route.query.id,
fileList: files,
singleFile: singleFile,
- projectId:route.query.projectId,
+ projectId: route.query.projectId,
}
- console.log('params',params)
+ console.log('params', params)
let res = await resubmitApply(params)
ElNotification({
title: '提示',
@@ -217,11 +219,11 @@ const getDetailInfo = async () => {
})
if (res.code === 1000) {
formData.value = res.data.formData
- loading.value=false
+ loading.value = false
}
})
}
-const init = () => {
+const init = () => {
getApplyProcess(route.query.projectId).then(res => {
ElNotification({
title: '提示',
@@ -231,7 +233,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;
@@ -249,7 +251,7 @@ init()
onMounted(async () => {
await init()
if (name.value === 'Initiation/edit') {
- loading.value=true
+ loading.value = true
await getDetailInfo()
}
})
diff --git a/src/views/project-management/initiation/index.vue b/src/views/project-management/initiation/index.vue
index 68d8c7b..f8f1404 100644
--- a/src/views/project-management/initiation/index.vue
+++ b/src/views/project-management/initiation/index.vue
@@ -14,13 +14,12 @@ 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
}
},
@@ -30,6 +29,7 @@ const searchConfig = reactive([
component: shallowRef(fvSelect),
props: {
placeholder: '请选择项目类型',
+ cacheKey: 'project_type',
clearable: true,
filterable: true,
}
@@ -39,6 +39,7 @@ const searchConfig = reactive([
prop: 'projectEffect',
component: shallowRef(fvSelect),
props: {
+ cacheKey: 'project_impact',
placeholder: '请选择项目影响',
clearable: true,
filterable: true,
@@ -51,6 +52,7 @@ const searchConfig = reactive([
component: shallowRef(fvSelect),
props: {
placeholder: '请选择研发主体',
+ cacheKey: 'rd_subject',
clearable: true,
filterable: true,
}
@@ -130,7 +132,10 @@ const tableConfig = reactive({
{
prop: 'startTime',
label: '起止时间',
- align: 'center'
+ align: 'center',
+ currentRender: ({row}) => {
+ return row.startTime + ' 至 ' + row.endTime
+ }
},
{
prop: 'taskNode',
diff --git a/src/views/special-fund/add.vue b/src/views/special-fund/add.vue
new file mode 100644
index 0000000..d0d431d
--- /dev/null
+++ b/src/views/special-fund/add.vue
@@ -0,0 +1,241 @@
+