Commit 16aad66b authored by wangxl's avatar wangxl

3333

parent ad743c5f
......@@ -27,7 +27,7 @@ Vue.prototype.$api = api
Vue.prototype.$message = message
Vue.prototype.$confirm = confirm
Vue.prototype.$defaultPageSize = 10
Vue.prototype.$defaultPageSizeOptions = ["10", "20", "50", "100"]
Vue.prototype.$defaultPageSizeOptions = ["10", "20", "50", "100", "500"]
//导出Excel
Vue.prototype.$ToDoExcel = ToDoExcel;
......
......@@ -26,12 +26,13 @@
<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="batchAudit" style="margin-right: 8px;">批量审核</a-button>
<a-button type="primary" @click="exportData" icon="download">Excel</a-button>
</div>
</div>
<a-divider style="height: 1px; background-color: #e8e8e8;" />
<span class="form-description" v-if="description"> ※ 审核时间:{{ description }}</span>
<a-table :dataSource="tableData" :columns="columns" :scroll="{ x: 'max-content' }" rowKey="id" :pagination="false" :loading="loading">
<a-table :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :dataSource="tableData" :columns="columns" :scroll="{ x: 'max-content' }" rowKey="id" :pagination="false" :loading="loading">
<template slot="projName" slot-scope="record">
<a @click="recordClick(record, 'view')">{{record.projName}}</a>
</template>
......@@ -50,6 +51,9 @@
<a-modal v-model="visibleAudit" v-if="visibleAudit" title="审核" :footer="null" width="94%" :dialog-style="{ top: '8%' }" destroyOnClose :maskClosable="false">
<audit v-model="id" :objId="objectId" @close="closeWindow" @changeScroll="() => {this.$refs.s_modal.changeScroll()}"></audit>
</a-modal>
<a-modal v-model="visibleBatch" v-if="visibleBatch" title="审核" :footer="null" width="94%" :dialog-style="{ top: '8%' }" destroyOnClose :maskClosable="false">
<batch-audit v-model="id" :objId="objectId" @close="closeWindow" />
</a-modal>
<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>
......@@ -64,16 +68,18 @@ import { getType } from '@/views/utils/auth'
import moment from 'moment'
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common";
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",
components: {
projectView, audit, taskFileInfo
projectView, audit, taskFileInfo, batchAudit
},
data () {
return {
selectedRowKeys: [],
// 选项卡
panes: { count1: 0, count2: 0, count3: 0, count4: 0, count5: 0, },
form: this.$form.createForm(this, { name: 'advanced_search' }),
......@@ -123,6 +129,7 @@ export default {
// 弹窗标志
visibleAudit: false,
visibleView: false,
visibleBatch: false,
isButten: false,
description: '',
id: null,
......@@ -135,6 +142,14 @@ export default {
this.getYear()
},
methods: {
onSelectChange (selectedRowKeys) {
console.log('selectedRowKeys changed: ', selectedRowKeys);
this.selectedRowKeys = selectedRowKeys;
},
batchAudit () {
console.log('selectedRowKeys changed: ', this.selectedRowKeys);
this.visibleBatch = true
},
search () {
this.pagination.pageIndex = 1
this.getListByPage();
......
<template>
<div class="app-content" style="height: 76vh;overflow: auto;">
<a-spin :spinning="loading" style="width: 100%;height: 100%;">
<div class="page-content">
<div style=" width: 100%;height: 50px;">
<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 style="width: 100%;height: calc(100% - 50px);overflow: auto;" ref="main">
<div class="x_modal_content">
<project-info v-model="formData" :tabsData.sync="tabsData" v-if="projType=='1'" />
<project-info-Key v-model="formData" :tabsData.sync="tabsData" v-if="projType=='2'" />
<a-form-model ref="form" :model="auditObj" :rules="rules" class="from-table font-line-space">
<audit-edit :auditObj.sync="auditObj" />
</a-form-model>
</div>
</div>
</div>
<div class="page-footer">
<a-button type="primary" @click="submit" style="margin-left:16px;">提交</a-button>
</div>
</a-spin>
</div>
</template>
<script>
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 { isEmptyParams } from "@/views/utils/common";
import { getType } from '@/views/utils/auth'
import projectInfo from '@/views/report/project/components/projectInfo'
import projectInfoKey from "@/views/report/project/components/keyProject/projectInfo"
import AuditList from '@/views/audit/components/auditInfo'
import AuditEdit from '@/views/audit/components/auditEdit'
export default {
name: "Audit",
components: {
projectInfo, projectInfoKey, AuditList, AuditEdit
},
data () {
return {
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 },
],
formData: {
id: null,
appPersonName: null,
sex: null,
birthday: null,
nationName: null,
degreeName: null,
titleName: null,
mobile: null,
email: null,
jobTime: null,
address: null,
appUnitName: null,
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: [],
budget: [],
fundPlan: [],
fileList: [],
auditList: [],
managerDept: "",
},
auditObj: { id: this.value, auditObjectId: this.objId, auditResult: null, auditType: 1, auditContent: '' },
rules: {
auditContent: { required: true, message: '请填写审核意见', trigger: 'blur' },
auditResult: { required: true, message: '请选择审核结果', trigger: 'change' },
},
loading: false,
projType: getType()
};
},
props: {
value: {
type: String,
default: () => {
return null
}
},
objId: {
type: String,
default () {
return null
}
},
},
created () {
this.loadProject()
},
methods: {
loadProject () {
let pars = { id: this.objId }
if (this.objId != null) {
this.loading = true
this.$api.project.getProjectInfoById(pars).then(({ data = {} }) => {
if (data) {
this.formData = data
this.loading = false
} else
this.$emit('close', 'error')
}).catch(() => { this.$emit('close', 'error') })
}
},
submit () {
this.$refs.form.validate(valid => {
if (valid) {
this.loading = true
let pars = isEmptyParams(this.auditObj)
let par = { ...pars }
this.$api.auditManager.projectAudit(par).then(({ data = {} }) => {
if (data) {
if (data === '项目上报已经到达上限!') {
this.$message.info('项目上报已经到达上限!')
} else {
this.$message.success('审核成功!')
this.$emit('close', 'audit')
}
}
this.loading = false
}).catch(() => { this.loading = false })
} else {
this.changeScroll()
this.$message.error('请选择审核结果或填写审核意见!')
return false
}
})
},
changeScroll () {
this.$refs.main.scrollTop = document.getElementsByClassName('x_modal_content')[0].offsetHeight
},
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 scoped lang="less">
::v-deep .ant-spin-container {
width: 100%;
height: 100%;
}
::v-deep .page-content {
width: 100%;
height: calc(100% - 40px);
overflow: auto;
}
::v-deep .page-footer {
width: 100%;
height: 40px;
line-height: 40px;
background: rgb(248, 248, 248);
text-align: center;
}
textarea {
height: 115px;
}
</style>
......@@ -200,7 +200,7 @@ export default {
let self = this
this.$confirm({
title: '重置密码',
content: '重置后密码为"kycz123456"确定要重置密码?',
content: '重置后密码为"ky123456"确定要重置密码?',
okText: '确定',
okType: 'danger',
cancelText: '取消',
......
......@@ -284,7 +284,7 @@ export default {
let self = this
this.$confirm({
title: '重置密码',
content: '重置后密码为"kycz123456"确定要重置密码?',
content: '重置后密码为"ky123456"确定要重置密码?',
okText: '确定',
okType: 'danger',
cancelText: '取消',
......
......@@ -151,7 +151,7 @@ export default {
let self = this
this.$confirm({
title: '重置密码',
content: '重置后密码为"kycz123456"确定要重置密码?',
content: '重置后密码为"ky123456"确定要重置密码?',
okText: '确定',
okType: 'danger',
cancelText: '取消',
......
......@@ -146,7 +146,7 @@ export default {
let self = this
this.$confirm({
title: '重置密码',
content: '重置后密码为"kycz123456"确定要重置密码?',
content: '重置后密码为"ky123456"确定要重置密码?',
okText: '确定',
okType: 'danger',
cancelText: '取消',
......
......@@ -221,7 +221,7 @@ export default {
let self = this
this.$confirm({
title: '重置密码',
content: '重置后密码为"kycz123456"确定要重置密码?',
content: '重置后密码为"ky123456"确定要重置密码?',
okText: '确定',
okType: 'danger',
cancelText: '取消',
......
......@@ -266,7 +266,7 @@ export default {
let self = this
this.$confirm({
title: '重置密码',
content: '重置后密码为"kycz123456"确定要重置密码?',
content: '重置后密码为"ky123456"确定要重置密码?',
okText: '确定',
okType: 'danger',
cancelText: '取消',
......
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