Commit 11b36389 authored by 徐俊's avatar 徐俊
parents 31df9852 5b9364e2
......@@ -50,7 +50,7 @@ export default {
},
//获取任务书状态
getTaskStateList (params) {
return fetch(`/v1/science-admin/com-project-test/getTaskStateList/`, params)
return fetch(`/v1/science-admin/com-project-task/getTaskStateList/`, params)
},
//获取中期考核状态
getCheckStateList (params) {
......@@ -426,9 +426,6 @@ export default {
save (params) {
return fetch(`/v1/science-admin/com-project/save`, params, 'post', 'json')
},
saveByStep (params) {
return fetch(`/v1/science-admin/com-project/saveByStep`, params, 'post', 'json')
},
updateUnit (params) {
return fetch(`/v1/science-admin/com-project/updateUnit`, params, 'post', 'json')
},
......@@ -502,25 +499,25 @@ export default {
},
taskReport: {
getListByPage (params) {
return fetch(`/v1/science-admin/com-project-test/getListByPage`, params)
return fetch(`/v1/science-admin/com-project-task/getListByPage`, params)
},
getTestInfoByProjId (params) {
return fetch('/v1/science-admin/com-project-test/getTestInfoByProjId', params)
return fetch('/v1/science-admin/com-project-task/getTestInfoByProjId', params)
},
save (params) {
return fetch('/v1/science-admin/com-project-test/save', params, 'post', 'json')
return fetch('/v1/science-admin/com-project-task/save', params, 'post', 'json')
},
report (params) {
return fetch(`/v1/science-admin/com-project-test/report`, params, 'post', 'json')
return fetch(`/v1/science-admin/com-project-task/report`, params, 'post', 'json')
},
getCount (params) {
return fetch(`/v1/science-admin/com-project-test/getCount`, params)
return fetch(`/v1/science-admin/com-project-task/getCount`, params)
},
asyncUploadTaskFile (params) {
return fetch(`/v1/science-admin/com-project-test/asyncUploadTaskFile`, params, 'post', 'file')
return fetch(`/v1/science-admin/com-project-task/asyncUploadTaskFile`, params, 'post', 'file')
},
deleteTaskFile (params) {
return fetch(`/v1/science-admin/com-project-test/deleteTaskFile/${params.id}`, params, 'delete', 'json')
return fetch(`/v1/science-admin/com-project-task/deleteTaskFile/${params.id}`, params, 'delete', 'json')
},
},
checkReport: {
......@@ -563,7 +560,7 @@ export default {
return fetch(`/v1/science-admin/com-project/audit`, params, 'post', 'json')
},
testAudit (params) {
return fetch(`/v1/science-admin/com-project-test/audit`, params, 'post', 'json')
return fetch(`/v1/science-admin/com-project-task/audit`, params, 'post', 'json')
},
checkAudit (params) {
return fetch(`/v1/science-admin/com-project-check/audit`, params, 'post', 'json')
......@@ -584,8 +581,8 @@ export default {
},
},
batch: {
getBatchListByPage (params) {
return fetch(`/v1/science-admin/com-batch/getBatchListByPage`, params)
getListByPage (params) {
return fetch(`/v1/science-admin/com-batch/getListByPage`, params)
},
addBatch (params) {
return fetch('/v1/science-admin/com-batch/addBatch', params, 'post', 'json')
......@@ -593,24 +590,12 @@ export default {
updateBatch (params) {
return fetch('/v1/science-admin/com-batch/updateBatch', params, 'post', 'json')
},
getMaxBatch (params) {
return fetch('/v1/science-admin/com-batch/getMaxBatch', params)
},
deleteBatch (params) {
return fetch(`/v1/science-admin/com-batch/deleteBatch/${params.id}`, params, 'delete', 'json')
},
getCurrentReportYearList (params) {
return fetch(`/v1/science-admin/com-batch/getCurrentReportYearList`, params)
},
getListByPage (params) {
return fetch(`/v1/science-admin/com-year/getListByPage`, params)
},
getApplyYearList (params) {
return fetch('/v1/science-admin/com-year/getApplyYearList', params)
},
addOrUpdateYearInfo (params) {
return fetch('/v1/science-admin/com-year/addOrUpdateYearInfo', params, 'post', 'json')
},
getBatchById (params) {
return fetch(`/v1/science-admin/com-batch/getBatchById/`, params)
},
......@@ -621,22 +606,8 @@ export default {
return fetch('/v1/science-admin/com-batch/getBatchList', params)
}
},
year: {
getYearByTreeCode (params) {
return fetch(`/v1/science-admin/com-year/getYearByTreeCode`, params)
},
getYearInfo (params) {
return fetch(`/v1/science-admin/com-year/getYearInfo`, params)
},
},
//系统管理接口
systemManage: {
getUnitProjLimit (params) {
return fetch('/v1/science-admin/com-unit/getUnitProjLimit', params)
},
updateUnitProjLimit (params) {
return fetch('/v1/science-admin/com-unit/updateUnitProjLimit', params, 'put', 'json')
},
getRoleListByPage (params) {
return fetch('/v1/science-admin/system-role/getListByPage', params)
},
......
......@@ -113,13 +113,11 @@ export const routes = [
hidden: false,
children: [
{ path: '/report/project', name: '项目申报', component: () => import('@/views/report/project/Index.vue'), meta: { title: '项目申报', icon: '', noCache: true } },
{ path: '/report/task', name: '任务书填报1', component: () => import('@/views/report/task/Index.vue'), meta: { title: '任务书填报1', icon: '', noCache: true } },
{ path: '/report/projectTask', name: '任务书填报2', component: () => import('@/views/report/task/projectTask.vue'), meta: { title: '任务书填报2', icon: '', noCache: true } },
{ path: '/report/check', name: '中期考核填报', component: () => import('@/views/report/check/Index.vue'), meta: { title: '中期考核填报', icon: '', noCache: true } },
{ path: '/report/task', name: '合同书上报', component: () => import('@/views/report/task/Index.vue'), meta: { title: '合同书上报', icon: '', noCache: true } },
{ path: '/report/check', name: '中期考核上报', component: () => import('@/views/report/check/Index.vue'), meta: { title: '中期考核上报', icon: '', noCache: true } },
{ path: '/report/conclusion', name: '项目结题', component: () => import('@/views/conclusion/index.vue'), meta: { title: '项目结题', icon: '', noCache: true } },
{ path: '/project/create', name: '项目创建', component: () => import('@/views/report/project/components/projectCreate'), meta: { title: '项目创建', icon: '', noCache: true } },
{ path: '/query/project', name: '项目申报查询1', component: () => import('@/views/query/project/Index.vue'), meta: { title: '项目申报查询', icon: '', noCache: true } },
{ path: '/query/task', name: '任务书上报查询1', component: () => import('@/views/query/task/Index.vue'), meta: { title: '任务书上报查询', icon: '', noCache: true } },
{ path: '/query/task', name: '合同书查询1', component: () => import('@/views/query/task/Index.vue'), meta: { title: '合同书查询', icon: '', noCache: true } },
{ path: '/query/check', name: '中期考核上报查询1', component: () => import('@/views/query/check/Index.vue'), meta: { title: '中期考核上报查询', icon: '', noCache: true } },
]
},
......@@ -133,7 +131,7 @@ export const routes = [
{ path: '/audit/project', name: '项目审核', component: () => import('@/views/audit/project/Index.vue'), meta: { title: '项目审核', icon: '', noCache: true } },
{ path: '/audit/preliminary', name: '项目预审', component: () => import('@/views/audit/project/Index.vue'), meta: { title: '项目预审', icon: '', noCache: true } },
{ path: '/audit/final', name: '项目终审', component: () => import('@/views/audit/project/final.vue'), meta: { title: '项目审核', icon: '', noCache: true } },
{ path: '/audit/taskAudit', name: '任务书审核', component: () => import('@/views/audit/task/Index.vue'), meta: { title: '任务书审核', icon: '', noCache: true } },
{ path: '/audit/taskAudit', name: '合同书审核', component: () => import('@/views/audit/task/Index.vue'), meta: { title: '合同书审核', icon: '', noCache: true } },
{ path: '/audit/checkAudit', name: '中期考核表审核', component: () => import('@/views/audit/check/Index.vue'), meta: { title: '中期考核表审核', icon: '', noCache: true } },
// { path: '/peAssign', name: '项目组分配', component: () => import('@/views/peAssign/index.vue'), meta: { title: '项目分配', icon: '', noCache: true } },
{ path: '/peAssign', name: '项目组分配1', component: () => import('@/views/peAssign/projAssign.vue'), meta: { title: '项目分配', icon: '', noCache: true } },
......@@ -217,7 +215,7 @@ export const routes = [
hidden: false,
children: [
{ path: '/statistic/project', name: '项目申报查询', component: () => import('@/views/statistic/project/Index.vue'), meta: { title: '项目申报查询', icon: '', noCache: true } },
{ path: '/statistic/task', name: '任务书上报查询', component: () => import('@/views/statistic/task/Index.vue'), meta: { title: '任务书上报查询', icon: '', noCache: true } },
{ path: '/statistic/task', name: '合同书上报查询', component: () => import('@/views/statistic/task/Index.vue'), meta: { title: '合同书上报查询', icon: '', noCache: true } },
{ path: '/statistic/check', name: '中期考核上报查询', component: () => import('@/views/statistic/check/Index.vue'), meta: { title: '中期考核上报查询', icon: '', noCache: true } },
{ path: '/expert/evaluationQuery', name: '评分项目查询', component: () => import('@/views/evaluation/query.vue'), meta: { title: '评分项目查询', icon: '', noCache: true } },
]
......@@ -244,11 +242,8 @@ export const routes = [
meta: { title: '系统设置', icon: 'el-icon-s-tools' },
hidden: false,
children: [
{ path: '/timeSet/projectTimeSet', name: '申报时间设置', component: () => import('@/views/timeSet/projectTimeSet/Index.vue'), meta: { title: '申报时间设置', icon: '', noCache: true } },
{ path: '/timeSet/taskTimeSet', name: '任务书时间设置', component: () => import('@/views/timeSet/taskTimeSet/Index.vue'), meta: { title: '任务书时间设置', icon: '', noCache: true } },
{ path: '/timeSet/checkTimeSet', name: '中期考核时间设置', component: () => import('@/views/timeSet/checkTimeSet/Index.vue'), meta: { title: '中期考核时间设置', icon: '', noCache: true } },
{ path: '/timeSet/task', name: '合同书时间设置', component: () => import('@/views/timeSet/taskTimeSet/Index.vue'), meta: { title: '合同书时间设置', icon: '', noCache: true } },
{ path: '/setting/batch', name: '申报批次设置', component: () => import('@/views/timeSet/batch/Index.vue'), meta: { title: '申报批次设置', icon: '', noCache: true } },
{ path: '/setting/count', name: '申报名额配比', component: () => import('@/views/projAcountSet/projAcountSet.vue'), meta: { title: '申报名额配比管理', icon: '', noCache: true } },
{ path: '/system/evaluationStandard', name: '年度评审标准设置', component: () => import('@/views/system/evaluationStandard/index.vue'), meta: { title: '年度评审标准设置', icon: '', noCache: true } },
//后台
{ path: '/system/role', name: '角色管理', component: () => import('@/views/system/role/index.vue'), meta: { title: '角色管理', icon: '', noCache: true } },
......
......@@ -132,7 +132,7 @@ export default {
methods: {
moment,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.searchForm.assignYear = data.year
this.getListByPage()
......@@ -177,7 +177,7 @@ export default {
this.pagination.pageIndex = 1
this.getListByPage()
},
groupChange(value) {
groupChange (value) {
this.searchForm.groupId = value
},
recordClick (record, type) {
......
......@@ -57,9 +57,6 @@
<a-modal v-model="visibleView" v-if="visibleView" title="项目详情" width="94%" :footer="null" :dialog-style="{ top: '8%' }" destroyOnClose :maskClosable="false">
<project-view v-model="objectId" @close="closeWindow"></project-view>
</a-modal>
<a-modal v-model="taskFileInfoView" title="项目任务书" :width="'60%'" :maskClosable="false" :footer="null" destroyOnClose class="sc_modal">
<task-file-info v-model="selectProjId" @close="closeTaskFileInfoWindow" />
</a-modal>
</div>
</template>
......@@ -70,7 +67,6 @@ import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/
import audit from '@/views/audit/project/audit'
import batchAudit from '@/views/audit/project/batchAudit'
import projectView from '@/views/report/project/components/projectView'
import taskFileInfo from '@/views/report/task/components/taskFileInfo'
export default {
name: "projectAudit",
......@@ -177,7 +173,7 @@ export default {
this.getListByPage()
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.isButten = data.disabled
this.description = data.description
......
......@@ -48,7 +48,6 @@
</span>
</template>
<template slot="option" slot-scope="record">
<!-- <a-button type="link" size="small" v-if="record.projState >= 50" @click="recordClick(record, 'viewProjectTask')">查看任务书</a-button> -->
<a-button type="link" size="small" @click="recordClick(record, 'evaluation')">专家评审明细</a-button>
<a-button type="link" size="small" v-if="record.auditResult == 1" @click="recordClick(record, 'audit')">审核</a-button>
</template>
......@@ -79,9 +78,6 @@
<a-modal v-model="visibleView" v-if="visibleView" title="项目详情" width="94%" :footer="null" :dialog-style="{ top: '8%' }" destroyOnClose :maskClosable="false">
<project-view v-model="objectId" @close="closeWindow"></project-view>
</a-modal>
<a-modal v-model="taskFileInfoView" title="查看项目任务书" :width="'60%'" :maskClosable="false" :footer="null" destroyOnClose class="sc_modal">
<task-file-info v-model="ProjId" @close="() => this.taskFileInfoView = false" />
</a-modal>
<a-modal v-model="visibleEvaluationView" title="专家评分" width="90%" :dialog-style="{ top: '8%' }" :footer="null" destroyOnClose>
<score-view v-model="assignId" @close="() => this.visibleEvaluationView = false" />
</a-modal>
......@@ -101,13 +97,12 @@ import audit from '@/views/audit/project/audit'
import batchAudit from '@/views/audit/project/batchAudit'
import projectView from '@/views/report/project/components/projectView'
import unitTreeSelect from '@/views/components/common/unitTreeSelect'
import taskFileInfo from '@/views/report/task/components/taskFileInfo'
import scoreView from '@/views/evaluation/components/scoreView'
export default {
name: "projectFinal",
components: {
projectView, paraSelect, audit, unitTreeSelect, projectAssignDetail, taskFileInfo, scoreView, batchAudit
projectView, paraSelect, audit, unitTreeSelect, projectAssignDetail, scoreView, batchAudit
},
data () {
return {
......@@ -197,8 +192,6 @@ export default {
id: null,
assignId: null,
objectId: null,
taskFileInfoView: false,
ProjId: null,
};
},
created () {
......@@ -231,7 +224,7 @@ export default {
this.getListByPage()
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 2, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 2, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.isButten = data.disabled
this.description = data.description
......@@ -318,10 +311,7 @@ export default {
} else if (type === 'evaluation') {
this.objectId = record.auditObjectId
this.assignInfoVisible = true
} else if (type === 'viewProjectTask') {
this.ProjId = record.auditObjectId
this.taskFileInfoView = true;
} else if (type === 'eView') {
} else if (type === 'eView') {
this.assignId = record.id
this.visibleEvaluationView = true
}
......
......@@ -174,7 +174,7 @@ export default {
methods: {
isEmptyParams,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.searchForm.groupYear = data.year
......
......@@ -153,17 +153,14 @@ export default {
this.getListByPage()
},
getYear () {
let pars = { type: 2 }
this.$api.year.getYearByTreeCode(pars).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 2, projType: getType(), timeType: 2 }).then(({ data = {} }) => {
if (data) {
this.isButten = data.disabled
this.description = data.description
this.searchForm.reportYear = data.reportYear
this.searchForm.reportYear = data.year
this.getListByPage()
}
}).catch(() => {
this.loading = false
})
}).catch(() => { })
},
getListByPage () {
this.getCount()
......
......@@ -53,11 +53,13 @@ export default {
})
},
getSpecInfo (key) {
console.log(this.specArray, this.value,1)
let newArray = this.specArray.filter(
function (el) {
return el.key == key
}
);
console.log(this.specArray, newArray, this.value,2)
if (!!newArray && newArray.length > 0)
return [newArray[0].ppkey, newArray[0].pkey, newArray[0].key]
else
......
......@@ -274,7 +274,7 @@ export default {
methods: {
moment,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 5, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 5, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.comBatch = data
}
......
......@@ -85,7 +85,7 @@ export default {
methods: {
moment,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 5, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 5, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.isButten = data.disabled
this.description = data.description
......
......@@ -110,7 +110,7 @@ export default {
methods: {
moment,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 5, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 5, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.isButten = data.disabled
this.description = data.description
......
......@@ -222,6 +222,7 @@ export default {
}).catch(() => { this.loading = false })
},
submit () {
console.log(this.formData)
if (!!!this.formData.specList || this.formData.specList.length == 0) {
this.$message.error('请选择评审专业!')
return false
......
......@@ -125,7 +125,7 @@ export default {
})
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.searchForm.groupYear = data.year
this.getListByPage()
......
......@@ -55,7 +55,7 @@
<a-button type="link" size="small" @click="recordClick(record,'report')" v-if="!isTopGov&&record.reportState!=2">上报</a-button>
<a-button type="link" size="small" @click="recordClick(record,'edit')">修改</a-button>
<a-button type="link" size="small" @click="recordClick(record,'reset')">重置密码</a-button>
<a-button type="link" size="small" @click="recordClick(record,'del')">删除</a-button>
<a-button type="link" size="small" @click="recordClick(record,'del')" v-if="isTopGov||record.reportState==1">删除</a-button>
</template>
</a-table>
<a-pagination v-if="pagination.total > 0" :total="pagination.total" show-size-changer show-quick-jumper v-model="pagination.pageIndex" :page-size="pagination.pageSize" :page-size-options="pagination.pageSizeOptions" @showSizeChange="showSizeChange" @change="change" :showTotal="() => `共 ${pagination.total} 条`" />
......
......@@ -92,7 +92,7 @@ export default {
}).catch(() => { })
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.changeType()
......
......@@ -92,7 +92,7 @@ export default {
}).catch(() => { })
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.changeType()
......
......@@ -67,7 +67,7 @@ export default {
}).catch(() => { })
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() , timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
}
......
......@@ -107,33 +107,32 @@ export default {
data () {
return {
formData: {
id: null, certId: null, sex: null, unitId: null, birthday: null, mobile: null, email: null, title: null, unitId: null, education: null, spec: null, address: null, treeCode: null
id: null, certId: null, sex: null, birthday: null, mobile: null, email: null, title: null, education: null, spec: null, address: null, treeCode: null
},
rules: {
personName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
certId: [{ required: true, message: '请输入证件号', trigger: 'blur' },
{
validator: (rule, value, callback) => {
if (value == '' || value == undefined) {
callback()
}
var errorMsg = isIdentityId(value);
if (errorMsg != "") {
callback(new Error(errorMsg));
} else {
let pars = { certId: this.formData.certId, id: this.formData.id }
this.$api.base.checkCertIdById(pars).then(({ data = {} }) => {
if (data) {
callback(new Error("证件号已存在"));
} else
callback()
})
}
}
}],
// certId: [{ required: true, message: '请输入证件号', trigger: 'blur' },
// {
// validator: (rule, value, callback) => {
// if (value == '' || value == undefined) {
// callback()
// }
// var errorMsg = isIdentityId(value);
// if (errorMsg != "") {
// callback(new Error(errorMsg));
// } else {
// let pars = { certId: this.formData.certId, id: this.formData.id }
// this.$api.base.checkCertIdById(pars).then(({ data = {} }) => {
// if (data) {
// callback(new Error("证件号已存在"));
// } else
// callback()
// })
// }
// }
// }],
email: [{ required: false, message: '请输入邮箱', trigger: 'blur' }],
title: [{ required: false, message: '请选择职称', trigger: 'change' }],
unitId: [{ required: false, message: '请选择单位', trigger: 'change' }],
education: [{ required: false, message: '请选择学历', trigger: 'change' }],
spec: [{ required: false, message: '请选择专业', trigger: 'change' }],
treeCode: [{ required: false, message: '请选择单位', trigger: 'change' }],
......
......@@ -28,7 +28,7 @@
<div class="submit-btn">
<!-- <a-button type="primary" @click="importExcel">项目导入</a-button> -->
<a-button type="primary" @click="exportData" icon="download">Excel</a-button>
<a-button type="primary" @click="conclusionSubmit">项目结题</a-button>
<!-- <a-button type="primary" @click="conclusionSubmit">项目结题</a-button> -->
</div>
<a-table :dataSource="tableData" :columns="columns" :scroll="{ x: 'max-content' }" rowKey="id" :pagination="false" :loading="loading" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: 'radio' }">
<template slot="projName" slot-scope="record">
......@@ -65,7 +65,7 @@
import moment from 'moment'
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common";
import projectView from '@/views/report/project/components/projectView'
import projectCreate from '@/views/report/project/components/edit/projectCreate'
import projectCreate from '@/views/report/project/components/projectCreate'
import paraSelect from '@/views/components/common/paraSelect'
import baseSelect from '@/views/components/common/baseSelect'
import projectImport from '@/views/manager/project/components/projectImport';
......
......@@ -38,7 +38,7 @@ export default {
},
methods: {
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.getEvaluationStatistic()
......
......@@ -135,7 +135,7 @@ export default {
methods: {
moment,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.formData.groupYear = data.year + ''
}
......
......@@ -60,7 +60,7 @@ export default {
},
methods: {
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.totalTitle = this.reportYear + '项目二级学科选择'
......
......@@ -76,7 +76,7 @@ export default {
},
methods: {
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.searchForm.reportYear = data.year
this.getListByPage()
......
......@@ -90,7 +90,7 @@ export default {
},
methods: {
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.searchForm.reportYear = data.year
this.getListByPage()
......
......@@ -49,7 +49,7 @@ export default {
},
methods: {
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.getProjectExpertGroupStatistic()
......
......@@ -172,7 +172,7 @@ export default {
methods: {
isEmptyParams,
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.searchForm.groupYear = data.year
......
......@@ -188,7 +188,7 @@ export default {
})
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.searchForm.groupYear = data.year
......
......@@ -196,7 +196,7 @@ export default {
})
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() , timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.reportYear = data.year
this.searchForm.groupYear = data.year
......
<template>
<div class="card-container">
<a-tabs type="card" @change="tabChange">
<a-tab-pane key="1" tab="市州(含辖区所有医疗机构)">
<div class="from-table">
<a-row>
<a-col style="text-align:center;">
<span style="font-size:20pt">{{year}}年度州市医疗行政单位配比</span>
</a-col>
</a-row>
<a-row>
<a-col :span="24/colCounts[colCountKey]/2" class="bg-light_blue">
名额配比数量批量设置:
</a-col>
<a-col :span="24/colCounts[colCountKey]/2">
<a-input-number v-model="batchValueCount" :min="0" :max="1000" />
</a-col>
<a-col :span="24/colCounts[colCountKey]/2">
<a-button type="primary" @click="setBatchUnitCount">批量设置</a-button>
</a-col>
<a-col :span="6">
州市行政机构数:<span style="color:red">{{unitGovCount}}</span>
</a-col>
<a-col :span="9">
</a-col>
</a-row>
<a-row>
<unit-count v-for="unit in unitGovInfo" :key="unit.id" :Unit="unit" :colCount="24/colCounts[colCountKey]" @valueChange="valueChange" />
</a-row>
<a-row>
<a-col style="text-align:center;">
<a-button type="primary" @click="saveUnitCount">保存</a-button>
</a-col>
</a-row>
</div>
</a-tab-pane>
<a-tab-pane key="2" tab="省直属单位名额配比">
<div class="from-table">
<a-row>
<a-col style="text-align:center;">
<span style="font-size:20pt">{{year}}年度省直医疗机构配比设置</span>
</a-col>
</a-row>
<a-row>
<a-col :span="24/colCounts[colCountKey]/2" class="bg-light_blue">
名额配比数量批量设置:
</a-col>
<a-col :span="24/colCounts[colCountKey]/2">
<a-input-number v-model="batchValueCount" :min="0" :max="1000" />
</a-col>
<a-col :span="24/colCounts[colCountKey]/2">
<a-button type="primary" @click="setBatchUnitCount">批量设置</a-button>
</a-col>
<a-col :span="6">
省直医疗机构数:<span style="color:red">{{unitComCount}}</span>
</a-col>
<a-col :span="9">
</a-col>
</a-row>
<a-row>
<unit-count v-for="unit in unitComInfo" :key="unit.id" :Unit="unit" :colCount="24/colCounts[colCountKey]" />
</a-row>
<a-row>
<a-col style="text-align:center;">
<a-button type="primary" @click="saveUnitCount">保存</a-button>
</a-col>
</a-row>
</div>
</a-tab-pane>
</a-tabs>
</div>
<!-- <a-row>
<a-col></a-col>
</a-row> -->
</template>
<script>
import { isEmptyParams } from "@/views/utils/common"
import UnitCount from "@/views/unit/components/unitCount.vue"
import moment from "moment"
export default {
name: "projAcountSet",
components: {
UnitCount,
},
data () {
const colCounts = {};
[2, 3, 4, 6, 8, 12].forEach((value, i) => {
colCounts[i] = value;
});
return {
unitGovInfo: [],
unitComInfo: [],
colCounts,
colCountKey: 1,
queryType: 1,
batchValueCount: 0,
year: moment().format('YYYY'),
unitGovCount: 0,
unitComCount: 0,
};
},
created () {
this.unitCount()
},
methods: {
moment,
tabChange (key) {
this.queryType = key
this.unitCount()
},
unitCount () {
let pars = { queryType: this.queryType }
let par = {
...pars,
}
this.$api.systemManage.getUnitProjLimit(par).then(({ data = {} }) => {
if (data) {
if (this.queryType == 1) {
this.unitGovInfo = data
this.unitGovCount = data.length
}
else {
this.unitComInfo = data
this.unitComCount = data.length
}
}
})
},
valueChange (unit) {
if (this.queryType == 1) {
let arr = this.unitGovInfo.filter(p => p.id === unit.id)
arr[0].projLimit = unit.projLimit
} else {
let arr = this.unitComInfo.filter(p => p.id === unit.id)
arr[0].projLimit = unit.projLimit
}
},
setBatchUnitCount () {
if (this.queryType == 1)
this.unitGovInfo.forEach(p => {
p.projLimit = this.batchValueCount
})
else
this.unitComInfo.forEach(p => {
p.projLimit = this.batchValueCount
})
},
saveUnitCount () {
if (this.queryType == 1) {
let unitGovList = this.unitGovInfo.filter(p => p.projLimit !== null)
let pars = unitGovList
this.$api.systemManage.updateUnitProjLimit(pars).then(({ data = {} }) => {
if (data) {
this.unitGovInfo = []
this.$message.info(data)
this.unitCount()
}
})
} else {
let unitComList = this.unitComInfo.filter(p => p.projLimit !== null)
let pars = unitComList
this.$api.systemManage.updateUnitProjLimit(pars).then(({ data = {} }) => {
if (data) {
this.unitComInfo = []
this.$message.info(data)
this.unitCount()
}
})
}
}
}
};
</script>
<style>
.card-container {
background: #f5f5f5;
overflow: hidden;
padding: 24px;
}
.card-container > .ant-tabs-card > .ant-tabs-content {
height: 100vh;
margin-top: -16px;
}
.card-container > .ant-tabs-card > .ant-tabs-content > .ant-tabs-tabpane {
background: #fff;
padding: 16px;
}
.card-container > .ant-tabs-card > .ant-tabs-bar {
border-color: #fff;
}
.card-container > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab {
border-color: transparent;
background: transparent;
}
.card-container > .ant-tabs-card > .ant-tabs-bar .ant-tabs-tab-active {
border-color: #fff;
background: #fff;
}
</style>
......@@ -13,7 +13,6 @@
<a-form-item>
<base-select v-model="searchForm.projState" :title="'状态'" :type="1" :isAll="true" :width="160" />
</a-form-item>
<para-multi-select2 :typeId="6" />
<a-form-item>
<a-button type="primary" icon="search" @click="search">搜索</a-button>
<a-button icon="reload" style="margin-left: 10px" @click="reset" class="bt-normal">重置</a-button>
......@@ -82,17 +81,6 @@ export default {
created () {
},
methods: {
search () {
this.pagination.pageIndex = 1
this.getListByPage()
},
reset () {
this.searchForm.projName = null
this.searchForm.projNo = null
this.searchForm.projState = ''
this.pagination.pageIndex = 1
this.getListByPage()
},
getListByPage () {
this.loading = true
let pars = isEmptyParams(this.searchForm)
......@@ -114,6 +102,17 @@ export default {
this.loading = false
})
},
search () {
this.pagination.pageIndex = 1
this.getListByPage()
},
reset () {
this.searchForm.projName = null
this.searchForm.projNo = null
this.searchForm.projState = ''
this.pagination.pageIndex = 1
this.getListByPage()
},
change () {
this.getListByPage()
},
......
<template>
<div class="report" ref="report">
<a-form class="search_form" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" :model="searchForm">
<a-row>
<a-col :span="6">
<a-form-item label="项目名称">
<a-input placeholder="项目名称" v-model="searchForm.projName" :maxLength="100" style="width: 272px" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item label="项目编号">
<a-input placeholder="项目编号" v-model="searchForm.projNo" :maxLength="100" style="width: 272px" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item label="项目类别">
<para-select v-model="searchForm.projClass" :typeId="52" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="6">
<a-form-item label="年度">
<base-select v-model="searchForm.reportYear" :type="4" :isAll="true" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item label="任务书状态">
<base-select v-model="searchForm.testState" :type="2" :isAll="true" />
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item>
<a-button type="primary" icon="search" @click="search">搜索</a-button>
<a-button icon="reload" style="margin-left: 10px" @click="reset" class="bt-normal">重置</a-button>
</a-form-item>
</a-col>
</a-row>
<div class="app-content">
<a-form :form="form" :model="searchForm" ref="formRef" layout="inline" class="search_form">
<a-form-item>
<a-input placeholder="项目名称" v-model="searchForm.projName" :maxLength="100" style="width: 160px" />
</a-form-item>
<a-form-item>
<a-input placeholder="项目编号" v-model="searchForm.projNo" :maxLength="100" style="width: 160px" />
</a-form-item>
<a-form-item>
<base-select v-model="searchForm.reportYear" :title="'年度'" :type="7" :isAll="true" :width="160" />
</a-form-item>
<a-form-item>
<base-select v-model="searchForm.taskState" :title="'状态'" :type="2" :isAll="true" :width="160" />
</a-form-item>
<a-form-item>
<a-button type="primary" icon="search" @click="search">搜索</a-button>
<a-button icon="reload" style="margin-left: 10px" @click="reset" class="bt-normal">重置</a-button>
</a-form-item>
</a-form>
<a-row>
<a-col :span="18">
<a-button type="primary" @click="exportData">导出Excel</a-button>
</a-col>
</a-row>
<div style="margin-top: 8px;"></div>
<a-table :dataSource="tableData" :columns="columns" rowKey="id" :pagination="false" :loading="loading">
<template slot="testStateName" slot-scope="record">
<span v-if="record">
{{record}}
</span>
<span v-else>
未填写
</span>
<a-divider style="height: 1px; background-color: #e8e8e8;" />
<div class="submit-btn">
<a-button type="primary" @click="exportData" icon="download">Excel</a-button>
</div>
<a-table :dataSource="tableData" :columns="columns" rowKey="projId" :pagination="false" :loading="loading">
<template slot="taskStateName" slot-scope="record">
<span>{{record.taskStateName}}</span>
</template>
<template slot="option" slot-scope="record">
<a-button type="link" size="small" @click="recordClick(record, 'view')">查看</a-button>
</template>
</a-table>
<a-pagination v-if="pagination.total > 0" :total="pagination.total" show-size-changer show-quick-jumper v-model="pagination.pageIndex" :page-size="pagination.pageSize" :page-size-options="pagination.pageSizeOptions" @showSizeChange="showSizeChange" @change="change" :showTotal="() => `共 ${pagination.total} 条`" />
<a-modal v-model="visibleEdit" title="修改" :width="'86%'" :dialog-style="{ top: '20px' }" :maskClosable="false" :footer="null" destroyOnClose class="sc_modal">
<test-edit v-model="projId" @close="closeWindow" />
</a-modal>
<a-modal v-model="visibleView" title="查看任务书" :width="'86%'" :dialog-style="{ top: '20px' }" :maskClosable="false" :footer="null" destroyOnClose class="sc_modal">
<test-view v-model="projId" @close="closeWindow" />
<a-modal v-model="visibleView" title="查看任务书" :width="'94%'" :dialog-style="{ top: '8%' }" :maskClosable="false" :footer="null" destroyOnClose class="sc_modal">
<task-view v-model="projId" @close="closeWindow" />
</a-modal>
</div>
</template>
<script>
import { getType } from '@/views/utils/auth'
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common";
import TestEdit from "@/views/report/task/components/taskEdit.vue"
import TestView from "@/views/report/task/components/taskView.vue"
import paraSelect from '@/views/components/common/paraSelect'
import baseSelect from '@/views/components/common/baseSelect'
import taskView from "@/views/report/task/components/taskView"
export default {
name: 'queryTask',
components: {
TestView, TestEdit, paraSelect, baseSelect
taskView
},
data () {
return {
form: this.$form.createForm(this, { name: 'advanced_search' }),
// 表单
searchForm: { projName: null, projNo: null, projClass: null, reportYear: null, testState: null },
searchForm: { projName: null, projNo: null, projClass: null, reportYear: null, taskState: null, projType: getType() },
tableData: [],
columns: [
{ title: '项目名称', dataIndex: 'projName' },
{ title: '项目编号', dataIndex: 'projNo' },
{ title: '版本号', dataIndex: 'versionNo' },
{ title: '项目类别', dataIndex: 'projClassName' },
{ title: '任务书开始时间', dataIndex: 'startDate' },
{ title: '任务书结束时间', dataIndex: 'endDate' },
{ title: '申报年度', dataIndex: 'reportYear' },
{ title: '状态', dataIndex: 'testStateName', scopedSlots: { customRender: 'testStateName' }, width: '100px', },
{ title: '操作', fixed: 'right', scopedSlots: { customRender: 'option' } }
{ title: '项目名称', dataIndex: 'projName', align: 'center' },
{ title: '项目编号', dataIndex: 'projNo', align: 'center' },
{ title: '项目类别', dataIndex: 'projClassName', align: 'center' },
{ title: '开始时间', dataIndex: 'startDate', align: 'center' },
{ title: '结束时间', dataIndex: 'endDate', align: 'center' },
{ title: '申报年度', dataIndex: 'reportYear', align: 'center' },
{ title: '状态', scopedSlots: { customRender: 'taskStateName' }, align: 'center' },
{ title: '操作', fixed: 'right', scopedSlots: { customRender: 'option' }, align: 'center' }
],
pagination: {
pageIndex: 1,
pageSize: this.$defaultPageSize,
total: 0,
pageSizeOptions: this.$defaultPageSizeOptions,
},
pagination: { pageIndex: 1, pageSize: this.$defaultPageSize, total: 0, pageSizeOptions: this.$defaultPageSizeOptions, },
loading: false,
// 弹窗标志
visibleView: false,
......@@ -113,22 +77,10 @@ export default {
this.getListByPage()
},
methods: {
search () {
this.pagination.pageIndex = 1
this.getListByPage()
},
reset () {
this.pagination.pageIndex = 1
this.getListByPage()
},
getListByPage () {
this.loading = true
let pars = isEmptyParams(this.searchForm)
let par = {
...pars,
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize
}
let par = { ...pars, pageIndex: this.pagination.pageIndex, pageSize: this.pagination.pageSize }
this.$api.taskReport.getListByPage(par).then(({ data = {} }) => {
if (data) {
const { dataList = [], total = 0 } = data
......@@ -140,7 +92,16 @@ export default {
this.loading = false
})
},
submitForm () {
search () {
this.pagination.pageIndex = 1
this.getListByPage()
},
reset () {
this.searchForm.projName = null
this.searchForm.projNo = null
this.searchForm.taskState = ''
this.pagination.pageIndex = 1
this.getListByPage()
},
change () {
this.getListByPage()
......
......@@ -10,8 +10,6 @@
<a-form-item>
<a-button type="primary" icon="search" @click="search">搜索</a-button>
<a-button icon="reload" style="margin-left: 10px" @click="reset" class="bt-normal">重置</a-button>
<!-- <a-button type="primary" style="margin-left: 10px" @click="FileDownload" icon="download">项目合同书模板下载</a-button> -->
<!-- <a-button icon="primary" style="margin-left: 10px" @click="FileView">查看</a-button> -->
</a-form-item>
</a-form>
<div style="width:100%;margin-bottom: 8px;">
......@@ -19,8 +17,6 @@
<btn-group :data="tabDate" :itemCount="itemCount" v-model="activekey" @change="callback" />
</div>
<div style="display: inline-block;;width:50%;text-align: right;">
<!-- <a-button type="primary" @click="projectKPI" icon="download">绩效指标表</a-button> -->
<!-- <a-button type="primary" @click="createMember">新建项目组成员</a-button> -->
<a-button type="primary" style="margin-right:8px;" v-if="(display && isButten)" @click="createProject">新建项目</a-button>
<a-button type="primary" @click="exportData" icon="download">Excel</a-button>
</div>
......@@ -56,9 +52,6 @@
<a-modal v-model="visibleFileView" title="查看" width="1000px" :dialog-style="{ top: '10%' }" :footer="null" destroyOnClose :maskClosable="false">
<preview-file v-model="realurl.downloadUrl" :fileName="realurl.fileName"></preview-file>
</a-modal>
<a-modal v-model="projectKPIView" title="查看项目KPI" width="80%" :dialog-style="{ top: '10%' }" :footer="null" destroyOnClose :maskClosable="false">
<project-kpi></project-kpi>
</a-modal>
<a-modal v-model="visiblePersonEdit" v-if="visiblePersonEdit" title="请先完善个人信息!" width="700px" :dialog-style="{ top: '12%' }" :footer="null" destroyOnClose :maskClosable="false">
<person-info-edit @sub="personSave" />
</a-modal>
......@@ -69,7 +62,7 @@
import { getType, getComplete, setComplete } from '@/views/utils/auth'
import moment from 'moment'
import { isEmptyParams, filterExportExcelData, tableColumnsName, checkEmail, personGender, personBirthday, checkImageFileType, checkDocumentFileType } from "@/views/utils/common"
import projectCreate from '@/views/report/project/components/edit/projectCreate'
import projectCreate from '@/views/report/project/components/projectCreate'
import projectView from '@/views/report/project/components/projectView'
import previewFile from '@/views/components/common/previewFile'
import knowledgeSelect from '@/views/components/common/knowledgeSelect'
......@@ -149,7 +142,7 @@ export default {
this.visibleEdit = true
},
getYear () {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType() }).then(({ data = {} }) => {
this.$api.batch.getCurrentYearBatch({ type: 1, projType: getType(), timeType: 1 }).then(({ data = {} }) => {
if (data) {
this.isButten = data.disabled
this.description = data.description
......
......@@ -26,38 +26,58 @@
</a-row>
<div v-for="(item, index) in budget" :key="'budget' + index" class="row_center">
<a-row v-if="item.type ==='count'">
<a-row v-if="item.type ==='count'" type="flex">
<a-col :span="6" :style="'text-align: left;padding-left:'+left(item.level)+'px'">
{{item.budgetName}}
<div class="special-middle">
{{item.budgetName}}
</div>
</a-col>
<a-col :span="3">
{{Count(item.source,'totalBudget',index)}}
<div class="special-middle">
{{Count(item.source,'totalBudget',index)}}
</div>
</a-col>
<a-col :span="5">
<span v-if="!!!item.show||item.show === 'applyFunds'">{{Count(item.source,'applyFunds',index)}}</span>
<div class="special-middle">
<span v-if="!!!item.code||item.code === 'applyFunds'">{{Count(item.source,'applyFunds',index)}}</span>
</div>
</a-col>
<a-col :span="5">
{{Count(item.source,'selfFunds',index)}}
<div class="special-middle">
{{Count(item.source,'selfFunds',index)}}
</div>
</a-col>
<a-col :span="5">
<a-input v-model="item.calculationBasis" :maxLength="100" style="width: 80%;" />
<div class="special-middle">
<a-input v-model="item.calculationBasis" :maxLength="100" style="width: 80%;" />
</div>
</a-col>
</a-row>
<a-row v-else>
<a-row v-else type="flex">
<a-col :span="6" :style="'text-align: left;padding-left:'+left(item.level)+'px'">
{{item.budgetName}}
<div class="special-middle">
{{item.budgetName}}
</div>
</a-col>
<a-col :span="3">
{{Count1(index, item.applyFunds, item.selfFunds)}}
<div class="special-middle">
{{Count1(index, item.applyFunds, item.selfFunds)}}
</div>
</a-col>
<a-col :span="5">
<a-input-number v-model="item.applyFunds" :min="0" :step="0.01" style="width: 80%" v-if="!!!item.show||item.show === 'applyFunds'" />
<div class="special-middle">
<a-input-number v-model="item.applyFunds" :min="0" :step="0.01" style="width: 80%" v-if="!!!item.code||item.code === 'applyFunds'" />
</div>
</a-col>
<a-col :span="5">
<a-input-number v-model="item.selfFunds" :min="0" :step="0.01" style="width: 80%" v-if="!!!item.show||item.show === 'selfFunds'" />
<div class="special-middle">
<a-input-number v-model="item.selfFunds" :min="0" :step="0.01" style="width: 80%" v-if="!!!item.code||item.code === 'selfFunds'" />
</div>
</a-col>
<a-col :span="5">
<a-input v-model="item.calculationBasis" :maxLength="100" style="width: 80%;" />
<div class="special-middle">
<a-input v-model="item.calculationBasis" :maxLength="100" style="width: 80%;" />
</div>
</a-col>
</a-row>
</div>
......@@ -70,16 +90,16 @@ export default {
name: "fundEdit",
data () {
return {
budget: budgetList()
};
},
props: {
// budget: {
// type: Array,
// default: () => {
// return []
// }
// },
budget: {
type: Array,
default: () => {
return []
}
},
},
created () {
},
......@@ -106,18 +126,24 @@ export default {
}
},
Count1 (index, applyFunds, selfFunds) {
this.budget[index].totalBudget = (applyFunds + selfFunds).toFixed(2)
return (applyFunds + selfFunds).toFixed(2)
let apply = 0.00
let self = 0.00
if (!!applyFunds)
apply = applyFunds
if (!!selfFunds)
self = selfFunds
this.budget[index].totalBudget = (apply + self).toFixed(2)
return (apply + self).toFixed(2)
},
left (l) {
switch (l) {
case 1:
case '1':
return 4;
case 2:
case '2':
return 12;
case 3:
case '3':
return 20;
case 4:
case '4':
return 30;
}
return 0;
......
......@@ -2,13 +2,19 @@
<template>
<div class="app-content" style="height: 76vh;overflow: auto;">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<div class="page-steps">
<a-steps size="small" :current="current" @change="onChange">
<a-step :status="item.status" v-for="(item,index) in stepsArray" :key="index+'stepsArray'" :title="item.title" />
</a-steps>
</div>
<div class="page-content">
<project-edit v-model="value" @close="closeWindow" @load="onLoad" ref="projCreate" v-if="projType"></project-edit>
<project-edit-key v-model="value" @close="closeWindow" @load="onLoad" ref="projCreate" v-else></project-edit-key>
<project-edit v-model="value" @close="closeWindow" @load="onLoad" @onStepChange="onStepChange" :completeStatus.sync=completeStatus :stepsArray.sync="stepsArray" ref="projCreate"></project-edit>
</div>
<div class="page-footer">
<a-button @click="save">保存</a-button>
<a-button style="margin-left: 10px" type="primary" @click="submit">完成填写</a-button>
<a-button v-if="currSteps > 0" style="margin-left: 40px" type="primary" @click="prev">上一步</a-button>
<a-button style="margin-left: 40px" type="primary" @click="save">保 存</a-button>
<a-button v-if="currSteps < stepsArray.length - 1" style="margin-left: 40px" type="primary" @click="next">下一步</a-button>
<a-button v-if="currSteps == stepsArray.length - 1" style="margin-left: 40px" type="primary" @click="submit">完成填写</a-button>
</div>
</a-spin>
</div>
......@@ -26,7 +32,18 @@ export default {
data () {
return {
loading: false,
projType: getType() == "1"
projType: getType() == "1",
current: 10,
currSteps: 0,
stepsArray: [
{ status: "process", title: '基本信息', showStatus: true },
{ status: "wait", title: '项目组成员及单位', showStatus: false },
{ status: "wait", title: '经费预算及设备明细', showStatus: false },
{ status: "wait", title: '阶段目标及课题设置', showStatus: false },
{ status: "wait", title: '绩效指标', showStatus: false },
{ status: "wait", title: '附件', showStatus: false }
],
completeStatus: "0,0,0,0,0,0"
}
},
props: {
......@@ -35,16 +52,67 @@ export default {
default: () => {
return null
}
}
},
},
created () {
},
methods: {
stepsChange (e) {
debugger
this.currSteps = e
this.changeSteps(this.currSteps)
},
next () {
this.$refs.projCreate.submit(this.currSteps, true)
},
prev () {
this.currSteps--;
this.changeSteps(this.currSteps)
},
onChange (e) {
if (e != this.currSteps) {
var arr = this.completeStatus.split(',')
if (arr[e] == "1") {
this.loading = true
this.changeSteps(e)
this.loading = false
} else {
this.$message.error('所选步骤没填写完成,请填写当前步骤后点【下一步】跳转!')
}
}
},
onStepChange (e) {
this.completeStatus = e.state
this.changeSteps(e.step)
},
changeSteps (e) {
this.currSteps = e
var clone = [].concat(this.stepsArray)
clone.forEach(e => {
e.showStatus = false
})
clone[e].showStatus = true;
this.stepsArray = clone
this.getCompleteStatus(e, this.completeStatus)
},
getCompleteStatus (step, completeStatus) {
var arr = completeStatus.split(',')
if (!!arr && arr.length > 0) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == "1") {
this.stepsArray[i].status = "finish"
} else {
this.stepsArray[i].status = "wait"
}
}
this.stepsArray[step].status = "process"
}
},
save () {
this.$refs.projCreate.save()
this.$refs.projCreate.save(this.currSteps)
},
submit () {
this.$refs.projCreate.submit()
this.$refs.projCreate.submit(this.currSteps, false)
},
closeWindow (value) {
this.$emit('close', value)
......@@ -56,17 +124,24 @@ export default {
}
</script>
<style scoped lang="less">
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
::-webkit-scrollbar {
width: 8px;
height: 6px;
}
::v-deep .ant-spin-container {
.page-steps {
width: 100%;
height: 100%;
height: 40px;
padding: 8px 20px 5px 20px;
background: rgb(248, 248, 248);
border: 1px 1px 0px 1px solid #e8e8e8;
}
.page-content {
width: 100%;
height: calc(100% - 40px);
height: calc(100% - 80px);
overflow: auto;
}
.page-footer {
......
......@@ -11,7 +11,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "一、资金来源合计",
source: [1, 2],
show: null,
code: null,
type: 'count'
},
{
......@@ -25,7 +25,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(一)财政资金",
source: null,
show: 'applyFunds',
code: 'applyFunds',
type: 'ins'
},
{
......@@ -39,7 +39,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(二)自筹资金",
source: [3, 4, 5, 6],
show: 'selfFunds',
code: 'selfFunds',
type: 'count'
},
{
......@@ -53,7 +53,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "1.承担单位自有货币资金",
source: null,
show: 'selfFunds',
code: 'selfFunds',
type: 'ins'
},
{
......@@ -67,7 +67,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "2.从银行获得的贷款",
source: null,
show: 'selfFunds',
code: 'selfFunds',
type: 'ins'
},
{
......@@ -81,7 +81,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "3.其他财政拨款",
source: null,
show: 'selfFunds',
code: 'selfFunds',
type: 'ins'
},
{
......@@ -95,7 +95,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "4.其他资金",
source: null,
show: 'selfFunds',
code: 'selfFunds',
type: 'ins'
},
{
......@@ -109,7 +109,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "二、支出预算合计",
source: [8, 22],
show: null,
code: null,
type: 'count'
},
{
......@@ -123,7 +123,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(一)直接费用",
source: [9, 14, 15, 16, 17, 18, 19, 20, 21],
show: null,
code: null,
type: 'count'
},
{
......@@ -137,7 +137,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "1.设备费",
source: [10, 11, 12, 13],
show: null,
code: null,
type: 'count'
},
{
......@@ -151,7 +151,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(1)设备购置费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -165,7 +165,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(2)试制设备费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -179,7 +179,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(3)设备改造费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -193,7 +193,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(4)设备租赁费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -207,7 +207,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "2.材料费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -221,7 +221,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "3.燃料动力费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -235,7 +235,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "4.测试化验加工费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -249,7 +249,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "5.差旅费/会议费/国际合作交流费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -263,7 +263,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "6.劳务费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -277,7 +277,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "7.专家咨询费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -291,7 +291,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "8.出版/文献/信息传播/知识产权\n事务费",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -305,7 +305,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "9.其他支出",
source: null,
show: null,
code: null,
type: 'ins'
},
{
......@@ -319,7 +319,7 @@ const budgetList = () => {
calculationBasis: "",
budgetName: "(二)间接费用\r\n",
source: null,
show: null,
code: null,
type: 'ins'
}
]
......
This diff is collapsed.
......@@ -8,7 +8,7 @@
</a-steps>
</div>
<div class="page-content">
<project-edit v-model="value" @close="closeWindow" @load="onLoad" @onStepChange="onStepChange" :completeStatus.sync=completeStatus :stepsArray.sync="stepsArray" ref="projCreate"></project-edit>
<task-edit v-model="value" @close="closeWindow" @load="onLoad" @onStepChange="onStepChange" :completeStatus.sync=completeStatus :stepsArray.sync="stepsArray" ref="projCreate" />
</div>
<div class="page-footer">
<a-button v-if="currSteps > 0" style="margin-left: 40px" type="primary" @click="prev">上一步</a-button>
......@@ -22,12 +22,11 @@
<script>
import { getType } from '@/views/utils/auth'
import projectEdit from "@/views/report/project/components/edit/projectEdit"
import projectEditKey from "@/views/report/project/components/keyProject/projectEdit"
import taskEdit from "@/views/report/task/components/taskEdit"
export default {
name: "projectCreate",
components: {
projectEdit, projectEditKey,
taskEdit,
},
data () {
return {
......
<template>
<div class="from-table font-line-space">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>项目编号</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.projNo}}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>项目名称</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.projName}}</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>申报人</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.personName}}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>申报单位</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.appUnitName}}</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>申报年度</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.reportYear}}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>项目开始结束时间</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{moment(projectInfo.startDate).format('YYYY-MM-DD')}}{{moment(projectInfo.endDate).format('YYYY-MM-DD')}}</div>
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<div class="tb-title">
附件上传
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="8" class="bg-gray">
<div class="special-middle">
<div>附件名称</div>
</div>
</a-col>
<a-col :span="10" class="bg-gray">
<div class="special-middle">
<div>附件上传</div>
</div>
</a-col>
<a-col :span="6" class="bg-gray">
<div class="special-middle">
<div>说明</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in projectInfo.fileList" :key="'fileList' + index" type="flex">
<a-col :span="8" style="text-align: center; margin-top: 10px;">
<span class="required"></span>{{ item.fileExplain }}
<!-- <a-form-model-item :prop="'fileList.' + index + '.fileExplain'" :rules="{required: true, message: '*',trigger: 'blur',}">
<a-input v-model="item.fileExplain" :maxLength="100" style="width: 80%" :disabled="item.required" />
</a-form-model-item> -->
</a-col>
<a-col :span="10">
<div class="special-middle">
<div v-if="item.downloadUrl" class="file-box">
<div>
<!-- <a-icon type="file" style="margin-right: 8px" />
<span class="hover-pointer" @click="downloadfile(item)">{{item.fileName}}</span> -->
<document-view :fileUrl="item.downloadUrl" :fileName="item.fileName" :imageArray="[item.downloadUrl]"></document-view>
</div>
<a-icon type="delete" class="hover-pointer d-icon" @click="deleteTaskFile(item, index)" />
</div>
<div v-else>
<a-form-model-item :prop="'fileList.' + index + '.downloadUrl'" :rules="{required: true, message: '请上传附件',trigger: 'blur',}">
<input type="file" :ref="'fileElem' + index" class="visually-hidden" @change="handleFiles(item, index)" />
<a-button @click="fileSelect(item, index)"><a-icon type="upload" />选择文件</a-button>
</a-form-model-item>
</div>
</div>
</a-col>
<a-col :span="6">
<div class="special-middle">
<span style="margin-left: 10px; font-size: 10pt; color:red; font-weight: bold;">请上传项目任务书附件(文件类型必须为:pdf),文件大小不能超过{{fileSize}}M!</span>
</div>
</a-col>
</a-row>
</a-spin>
</div>
</template>
<script>
import moment from 'moment'
import documentView from '@/views/components/common/documentView'
const File = { fileName: "", downloadUrl: "", fileExplain: "项目任务书", downloadId: "" };
export default {
name: "taskFileEdit",
props: {
value: {
type: String,
default: () => {
return null
}
},
},
components: { documentView },
data() {
return {
projectInfo: {
projNo: '',
projName: '',
startDate: '',
endDate: '',
appPersonName: '',
appUnitName: '',
mobile: '',
address: '',
fileList: [{ ...File }],
},
fileSize: 15,
};
},
created () {
this.getProjectBasicInfoById()
},
methods: {
moment,
getProjectBasicInfoById () {
if (this.value != null) {
this.loading = true
this.$api.project.getProjectBasicInfoById({ id: this.value }).then(({ data = {} }) => {
if (data) {
this.projectInfo = data
if (this.projectInfo.fileList == null || this.projectInfo.fileList.length <= 0)
this.projectInfo.fileList = [{ ...File }]
this.loading = false
}
}).catch(() => { this.$emit('close', 'close') })
}
},
downloadfile() {
},
deleteTaskFile (item, index) {
this.$api.taskReport.deleteTaskFile({ id: item.downloadId }).then(({ data = {} }) => {
if (data) {
item.fileName = ''
item.downloadUrl = ''
item.downloadId = ''
}
}).catch(() => {
this.$message.error('删除失败')
})
},
uploadHandle (file, fileName, projId) {
let formData = new FormData()
formData.append('file', file)
formData.append('fileName', fileName)
formData.append('projId', projId)
return formData
},
handleFiles(item, index) {
let fileElem = this.$refs['fileElem' + index][0]
let files = fileElem.files
if (files.length <= 0) {
this.$message.error('未选中文件,请尝试重新选择')
return
}
if (!this.fileCheck(files[0]))
return
this.$api.taskReport.asyncUploadTaskFile(this.uploadHandle(files[0], files[0].name, this.value)).then(({ data = {} }) => {
if (data) {
item.fileName = data.fileName
item.downloadUrl = data.downloadUrl
item.downloadId = data.id
item.fileExplain = data.fileExplain
} else
this.$message.error('上传失败')
}).catch(() => {
this.$message.error('上传失败')
})
},
fileSelect (item, index) {
let fileElem = this.$refs['fileElem' + index][0]
if (fileElem) {
fileElem.click()
}
},
fileCheck (file) {
//判断是否小于1M
let isLtSize = file.size < 1024 * 1024 * this.fileSize;
if (!isLtSize) {
this.$message.error('文件大小不能超过' + this.fileSize + 'M!');
return false
}
if (file.type !== "application/pdf") {
this.$message.error('项目任务书附件必须为pdf文件类型!');
return false
}
return true
},
}
};
</script>
\ No newline at end of file
<template>
<div class="from-table font-line-space">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>项目编号</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.projNo}}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>项目名称</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.projName}}</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>申报人</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.personName}}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>申报单位</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.appUnitName}}</div>
</div>
</a-col>
</a-row>
<a-row type="flex">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>申报年度</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{projectInfo.reportYear}}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>项目开始结束时间</div>
</div>
</a-col>
<a-col :span="8">
<div class="special-middle">
<div>{{moment(projectInfo.startDate).format('YYYY-MM-DD')}}{{moment(projectInfo.endDate).format('YYYY-MM-DD')}}</div>
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<div class="tb-title">
附件
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="8" class="bg-gray">
<div class="special-middle">
<div>附件名称</div>
</div>
</a-col>
<a-col :span="16" class="bg-gray">
<div class="special-middle">
<div>附件文件</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in projectInfo.fileList" :key="'fileList' + index" type="flex">
<a-col :span="8" style="text-align: center; margin-top: 10px;">
<span>{{ item.fileExplain }}</span>
</a-col>
<a-col :span="16">
<div class="special-middle">
<div v-if="item.downloadUrl" class="file-box">
<div>
<document-view :fileUrl="item.downloadUrl" :fileName="item.fileName" :imageArray="[item.downloadUrl]"></document-view>
</div>
</div>
<div v-else style="text-align: center;"></div>
</div>
</a-col>
</a-row>
</a-spin>
</div>
</template>
<script>
import moment from 'moment'
import documentView from '@/views/components/common/documentView'
const File = { fileName: "", downloadUrl: "", fileExplain: "项目任务书", downloadId: "" };
export default {
name: "taskFileEdit",
props: {
value: {
type: String,
default: () => {
return null
}
},
},
components: { documentView },
data() {
return {
projectInfo: {
projNo: '',
projName: '',
startDate: '',
endDate: '',
appPersonName: '',
appUnitName: '',
mobile: '',
address: '',
fileList: [{ ...File }],
},
fileSize: 15,
};
},
created () {
this.getProjectBasicInfoById()
},
methods: {
moment,
getProjectBasicInfoById () {
if (this.value != null) {
this.loading = true
this.$api.project.getProjectBasicInfoById({ id: this.value }).then(({ data = {} }) => {
if (data) {
this.projectInfo = data
if (this.projectInfo.fileList == null || this.projectInfo.fileList.length <= 0)
this.projectInfo.fileList = [{ ...File }]
this.loading = false
}
}).catch(() => {this.loading = false})//() => { this.$emit('close', 'close') }
}
},
}
};
</script>
\ No newline at end of file
<template>
<div class="report-detail">
<!-- <a-button type="primary">导出任务书</a-button> -->
<div style="margin-top: 16px;">
<test-info v-model="testInfo" />
</div>
<div class="app-content layoutEmbedded" style="height: 76vh;overflow: auto;">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<div class="page-content">
<a-tabs type="card" hideAdd size="small" @change="callback">
<a-tab-pane :key="item.key" :tab="item.title" v-for="(item) in tabsData">
</a-tab-pane>
</a-tabs>
</div>
<div class="page-footer">
<!-- 申报项目详情 -->
<!-- <a-button type="primary" @click="onExport">导出</a-button> -->
<task-info v-model="formData" :tabsData.sync="tabsData" />
</div>
</a-spin>
</div>
</template>
<script>
import { isEmptyParams } from "@/views/utils/common"
import TestInfo from '@/views/report/task/components/taskInfo'
import AuditList from '@/views/audit/components/auditInfo'
const cont1 = () => { return { id: null, testId: null, contentInfo: '', startTime: null, endTime: null, contentType: 'd37abeb6-14e0-4486-924d-e1e4baf67098', showIndex: 1 } }
const cont2 = () => { return { id: null, testId: null, contentInfo: '', startTime: null, endTime: null, contentType: 'b1fe4003-16ed-482f-8fd5-e34b1482c3d4', showIndex: 1 } }
const cont3 = () => { return { id: null, testId: null, contentInfo: '', startTime: null, endTime: null, contentType: 'b19cf66b-c1bb-4974-a524-114c1895dbd8', showIndex: 1 } }
const cont4 = () => { return { id: null, testId: null, contentInfo: '', startTime: null, endTime: null, contentType: 'cf3abeff-9f1a-420e-b375-6aad33f12080', showIndex: 1 } }
const cont5 = () => { return { id: null, testId: null, contentInfo: '', startTime: null, endTime: null, contentType: 'f1cea24c-d13d-48af-8abb-58eed9367c27', showIndex: 1 } }
const cont6 = () => { return { id: null, testId: null, contentInfo: '', startTime: null, endTime: null, contentType: 'ebcdf2b0-011c-4d40-a064-f22d6f7ec646', showIndex: 1 } }
const projectKPI = {
reportYear: "",
projName: "",
appUnitName: "",
managerDept: "",
projAttribute: "",
projDeadline: "",
startDate: "",
endData: "",
yearTarget: "",
year1Goal: "",
year2Goal: "",
year3Goal: "",
totalBudget: 0.00,
applyFunds: 0.00,
selfFunds: 0.00,
yearTotal: 0.00,
yearApply: 0.00,
yearSelf: 0.00,
totalRowSpan: 0, //总合并行数
outTarget: 0, //一级指标(产出指标)
benefitTarget: 0, //一级指标(效益指标)
satisfactionDegree: 0, //一级指标(满意度指标)
quantityTarget: 0, //二级指标(数量指标)
qualityTarget: 0, //二级指标(质量指标)
validityTarget: 0, //二级指标(时效指标)
costTarget: 0, //二级指标(成本指标)
economicTarget: 0, //二级指标(经济效益指标)
socialTarget: 0, //二级指标(社会效益指标)
ecologicalTarget: 0, //二级指标(生态效益指标)
sustainableTarget: 0, //二级指标(可持续影响指标)
serviceTarget: 0, //二级指标(服务对象满意度指标)
threeLevel: [],
kpiList: [],
};
import { budgetList } from '@/views/report/project/config'
import { getType } from '@/views/utils/auth'
import taskInfo from "@/views/report/task/components/taskInfo"
export default {
name: "TestView",
name: "projectView",
components: {
TestInfo, AuditList
taskInfo
},
data () {
return {
testInfo: {
id: '',
projId: '',
projName: '',
startDate: null,
endDate: null,
appUnitName: '',
linkTel: '',
linkAddress: '',
linkEmail: '',
// 实施目标和主要内容
testContent: '',
// 总经费
budgetCount: 0,
// 市卫计委资助
budgetGovCount: 0,
// 起止日期
startDate: null,
endDate: null,
// 申报人
tabsData: [
{ title: '全部', key: '0', isShow: true },
{ title: '项目基本信息', key: '1', isShow: true },
{ title: '项目组主要成员', key: '2', isShow: true },
{ title: '项目主要实施内容和目标', key: '3', isShow: true },
{ title: '申请书正文', key: '4', isShow: true },
{ title: '经费预算及设备明细', key: '5', isShow: true },
{ title: '项目实施阶段及任务', key: '6', isShow: true },
{ title: '项目课题设置', key: '7', isShow: true },
{ title: '绩效目标表', key: '8', isShow: true },
{ title: '附件信息', key: '9', isShow: true },
{ title: '项目审核记录', key: '10', isShow: true },
],
formData: {
id: null,
appPersonName: null,
sex: null,
birthYear: null,
mobile: null,
birthday: null,
nationName: null,
degreeName: null,
titleName: null,
// 依托单位
mobile: null,
email: null,
jobTime: null,
address: null,
appUnitName: null,
linkEmail: null,
linkTel: null,
linkAddress: null,
postcode: null,
authority: null,
// 项目内容
cont1: [cont1()],
cont2: [cont2()],
cont3: [cont3()],
cont4: [cont4()],
cont5: [cont5()],
cont6: [cont6()],
// 成员
mainResearchAreas: null,
unitLinkName: null,
unitLinkMobile: null,
unitLinkEmail: null,
unitLinkFax: null,
projName: null,
knowledgeId: null,
subjectScope: null,
projClass: null,
remark: null,
startDate: null,
endDate: null,
totalFunding: null,
govFunding: null,
projAbstract: null,
projKeywords: null,
yearTarget: null,
year1Goal: null,
year2Goal: null,
year3Goal: null,
projectKPI: projectKPI,
cooperativeUnits: [],
members: [],
// 预期成果形式
target: [],
// 经费
budget: [],
//审核记录
auditList: [{ result: '', unit: '', time: '' }],
}
}
fundPlan: [],
fileList: [],
auditList: [],
managerDept: "",
},
loading: false,
projType: getType()
};
},
props: {
value: {
......@@ -85,26 +131,69 @@ export default {
},
},
created () {
this.getTestInfoByProjId()
this.getProjectInfoById()
},
methods: {
getTestInfoByProjId () {
let pars = { projId: this.value }
this.$api.taskReport.getTestInfoByProjId(pars).then(({ data = {} }) => {
if (data) {
this.testInfo = data
}
}).catch(() => {
getProjectInfoById () {
if (this.value != null) {
this.loading = true
this.$api.project.getProjectInfoById({ id: this.value }).then(({ data = {} }) => {
if (data) {
this.formData = data
this.loading = false
} else
this.$emit('close', 'error')
}).catch(() => { this.$emit('close', 'error') })
}
},
onExport () {
this.$api.project.export({ id: this.value }).then((res) => {
let blob = new Blob([res], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8",
});
const fileName = this.formData.projName + '.doc';
let downloadElement = document.createElement('a')
let href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = fileName; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放blob
})
},
callback (key) {
var index = parseInt(key)
this.tabsData.forEach(e => {
if (key == '0')
e.isShow = true
else
e.isShow = false
})
}
}
this.tabsData[0].isShow = true;
this.tabsData[index].isShow = true;
},
},
}
</script>
<style lang="less" scoped>
.report-detail {
height: 70vh;
<style scoped lang="less">
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
::-webkit-scrollbar {
width: 8px;
height: 6px;
}
.page-content {
width: 100%;
height: 50px;
}
.page-footer {
width: 100%;
height: calc(100% - 50px);
overflow: auto;
border-left: 1px solid #f0f0f0;
border-top: 1px solid #f0f0f0;
}
</style>
\ No newline at end of file
</style>
This diff is collapsed.
......@@ -62,13 +62,13 @@ import { getType } from '@/views/utils/auth'
import moment from 'moment'
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common";
import projectView from '@/views/report/project/components/projectView'
import projectEdit from '@/views/report/project/components/projectEdit'
import unitEdit from '@/views/statistic/project/components/unitEdit'
import unitTreeSelect from '@/views/components/common/unitTreeSelect'
export default {
name: 'serchProject',
components: {
projectEdit, projectView, unitTreeSelect, unitEdit
projectView, unitTreeSelect, unitEdit
},
data () {
return {
......
......@@ -19,7 +19,7 @@
</a-col>
<a-col :span="6">
<a-form-item label="任务书状态">
<base-select v-model="searchForm.testState" :type="2" :isAll="true" />
<base-select v-model="searchForm.taskState" :type="2" :isAll="true" />
</a-form-item>
</a-col>
</a-row>
......@@ -54,7 +54,7 @@
</a-row>
<div style="margin-top: 8px;"></div>
<a-table :dataSource="tableData" :columns="columns" rowKey="id" :pagination="false" :loading="loading">
<template slot="testStateName" slot-scope="record">
<template slot="taskStateName" slot-scope="record">
<span v-if="record">
{{record}}
</span>
......@@ -97,7 +97,7 @@ export default {
appUnitName: null,
appPersonName: null,
reportYear: null,
testState: null,
taskState: null,
auditType: 2
},
tableData: [],
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment