Commit 6c1f128c authored by 徐俊's avatar 徐俊

xujun

parent 5d574ba5
......@@ -39,8 +39,8 @@
<a-modal v-model="visibleEdit" v-if="visibleEdit" title="人才申报创建/修改" width="94%" :footer="null" :dialog-style="{ top: '8%' }" destroyOnClose :maskClosable="false">
<talent-create v-model="id" @close="closeWindow"></talent-create>
</a-modal>
<a-modal v-model="visibleView" title="查看" width="700px" :footer="null" destroyOnClose>
<talent-info v-model="id"></talent-info>
<a-modal v-model="visibleView" title="查看" width="94%" :footer="null" :dialog-style="{ top: '8%' }" destroyOnClose :maskClosable="false">
<talent-view v-model="id" @close="closeWindow"></talent-view>
</a-modal>
</div>
</template>
......@@ -48,12 +48,12 @@
<script>
import { isEmptyParams, filterExportExcelData, tableColumnsName } from "@/views/utils/common"
import talentCreate from "@/views/report/talent/components/talentCreate"
import talentInfo from "@/views/report/talent/components/talentInfo"
import talentView from "@/views/report/talent/components/talentView"
export default {
name: "reportTalent",
components: {
talentCreate, talentInfo
talentCreate, talentView
},
data() {
return {
......
<template>
<div>
<a-row type="flex" class="row_center">
<a-col :span="5" class="bg-gray">
<div class="special-middle">
<div class="required">申请资助的预算支出科目</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">第一年</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">第二年</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">第三年</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">第四年</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">第五年</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">费用</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in budgetList" :key="index" type="flex" class="row_center">
<a-col :span="5" style="text-align: left;" >
<div class="special-middle">{{ item.budgetName }}</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{parseFloat(item.yearValue1).toFixed(2)}}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{parseFloat(item.yearValue2).toFixed(2)}}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{parseFloat(item.yearValue3).toFixed(2)}}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{parseFloat(item.yearValue4).toFixed(2)}}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{parseFloat(item.yearValue5).toFixed(2)}}</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>{{ parseFloat(item.amountFee).toFixed(2) }}</div>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="5" class="bg-gray">
<div class="special-middle">
<div>合计</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>{{ parseFloat(totalYearValue1).toFixed(2) }}</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>{{ parseFloat(totalYearValue2).toFixed(2) }}</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>{{ parseFloat(totalYearValue3).toFixed(2) }}</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>{{ parseFloat(totalYearValue4).toFixed(2) }}</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div>{{ parseFloat(totalYearValue5).toFixed(2) }}</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>{{ parseFloat(totalFee).toFixed(2) }}</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
const Budget = { id: null, talentId: null, budgetId: "00000000-0000-0000-0000-000000000000", yearValue1: 0.00, yearValue2: 0.00, yearValue3: 0.00, yearValue4: 0.00, yearValue5: 0.00, amountFee: 0.00, showIndex: null, isRequired: false }
export default {
name: "budgetInfo",
props: {
budgetList: {
type: Array,
default: () => {
return [{ ...Budget }];
},
}
},
data() {
return {
totalYearValue1: 0.00,
totalYearValue2: 0.00,
totalYearValue3: 0.00,
totalYearValue4: 0.00,
totalYearValue5: 0.00,
totalFee: 0.00,
invisibleYearValue1: [ 2, 8 ],
invisibleYearValue2: [ 2, 8 ],
invisibleYearValue3: [ 2, 8 ],
invisibleYearValue4: [ 2, 8 ],
invisibleYearValue5: [ 2, 8 ],
}
},
created() {
//this.calTotalFee()
},
methods: {
FeeChange (index) {
if (index == 0)
this.educationFee()
else if (index == 1)
this.scienceFee()
else if (index > 2 && index < 8)
this.researchFee(index)
else if (this.budgetList.length > 8)
this.otherFee(index)
this.calTotalFee()
},
YearValue1Change (index) {
this.FeeChange(index)
},
YearValue2Change (index) {
this.FeeChange(index)
},
YearValue3Change (index) {
this.FeeChange(index)
},
YearValue4Change (index) {
this.FeeChange(index)
},
YearValue5Change (index) {
this.FeeChange(index)
},
calTotalFee() {
this.totalYearValue1 = this.budgetList[0].yearValue1 + this.budgetList[1].yearValue1 + this.budgetList[2].yearValue1 + this.budgetList[8].yearValue1
this.totalYearValue2 = this.budgetList[0].yearValue2 + this.budgetList[1].yearValue2 + this.budgetList[2].yearValue2 + this.budgetList[8].yearValue2
this.totalYearValue3 = this.budgetList[0].yearValue3 + this.budgetList[1].yearValue3 + this.budgetList[2].yearValue3 + this.budgetList[8].yearValue3
this.totalYearValue4 = this.budgetList[0].yearValue4 + this.budgetList[1].yearValue4 + this.budgetList[2].yearValue4 + this.budgetList[8].yearValue4
this.totalYearValue5 = this.budgetList[0].yearValue5 + this.budgetList[1].yearValue5 + this.budgetList[2].yearValue5 + this.budgetList[8].yearValue5
this.totalFee = this.totalYearValue1 + this.totalYearValue2 + this.totalYearValue3 + + this.totalYearValue4 + this.totalYearValue5
},
//一、国内外进修费用
educationFee () {
this.budgetList[0].amountFee = this.budgetList[0].yearValue1 + this.budgetList[0].yearValue2 + this.budgetList[0].yearValue3 + this.budgetList[0].yearValue4 + this.budgetList[0].yearValue5
},
//二、学术交流费用
scienceFee () {
this.budgetList[1].amountFee = this.budgetList[1].yearValue1 + this.budgetList[1].yearValue2 + this.budgetList[1].yearValue3 + this.budgetList[1].yearValue4 + this.budgetList[1].yearValue5
},
//三、研究费用
researchFee (index) {
this.budgetList[index].amountFee = this.budgetList[index].yearValue1 + this.budgetList[index].yearValue2 + this.budgetList[index].yearValue3 + this.budgetList[index].yearValue4 + this.budgetList[index].yearValue5
this.budgetList[2].yearValue1 = 0.00
this.budgetList[2].yearValue2 = 0.00
this.budgetList[2].yearValue3 = 0.00
this.budgetList[2].yearValue4 = 0.00
this.budgetList[2].yearValue5 = 0.00
for (let i = 3; i <= 7; i++) {
this.budgetList[2].yearValue1 += this.budgetList[i].yearValue1
this.budgetList[2].yearValue2 += this.budgetList[i].yearValue2
this.budgetList[2].yearValue3 += this.budgetList[i].yearValue3
this.budgetList[2].yearValue4 += this.budgetList[i].yearValue4
this.budgetList[2].yearValue5 += this.budgetList[i].yearValue5
}
this.budgetList[2].amountFee = this.budgetList[2].yearValue1 + this.budgetList[2].yearValue2 + this.budgetList[2].yearValue3 + this.budgetList[2].yearValue4 + this.budgetList[2].yearValue5
},
//四、其他费用
otherFee (index) {
this.budgetList[index].amountFee = this.budgetList[index].yearValue1 + this.budgetList[index].yearValue2 + this.budgetList[index].yearValue3 + this.budgetList[index].yearValue4 + this.budgetList[index].yearValue5
this.budgetList[8].yearValue1 = 0.00
this.budgetList[8].yearValue2 = 0.00
this.budgetList[8].yearValue3 = 0.00
this.budgetList[8].yearValue4 = 0.00
this.budgetList[8].yearValue5 = 0.00
for (let i = 9; i < this.budgetList.length; i++) {
this.budgetList[8].yearValue1 += this.budgetList[i].yearValue1
this.budgetList[8].yearValue2 += this.budgetList[i].yearValue2
this.budgetList[8].yearValue3 += this.budgetList[i].yearValue3
this.budgetList[8].yearValue4 += this.budgetList[i].yearValue4
this.budgetList[8].yearValue5 += this.budgetList[i].yearValue5
}
this.budgetList[8].amountFee = this.budgetList[8].yearValue1 + this.budgetList[8].yearValue2 + this.budgetList[8].yearValue3 + this.budgetList[8].yearValue4 + this.budgetList[8].yearValue5
},
addBudgetArray () {
const newItem = {
...Budget,
showIndex: this.budgetList.length + 1
}
this.budgetList.push(newItem)
},
deleteBudgetArray (item) {
let index = this.budgetList.indexOf(item)
if (index !== -1) {
this.budgetList.splice(index, 1)
}
},
getTotalFee() {
return parseFloat(this.totalFee);
}
},
watch: {
budgetList: {
handler(budgetList) {
this.calTotalFee()
}
}
}
}
</script>
<template>
<div>
<a-row>
<a-col :span="24" style="border-top: 0px; text-align: center">
<div class="main-title">
<span>附件</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="2" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>序号</div>
</div>
</a-col>
<a-col :span="8" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>文件名</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>是否必备材料</div>
</div>
</a-col>
<a-col :span="10" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>附件名称</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray" style="text-align: center;">
<div class="special-middle">
<div>操作</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in fileList" :key="'appendix' + index" type="flex" class="row_center">
<a-col :span="2" style="text-align: center;">
<div class="special-middle">
<div>{{index + 1}}</div>
</div>
</a-col>
<a-col :span="8" style="text-align: center;">
<div class="special-middle">
<div v-if="item.fileName" style="text-align: left;">
<!-- {{item.fileName}} -->
<document-view :fileUrl="item.downloadUrl" :fileName="item.fileName" :imageArray="[item.downloadUrl]"></document-view>
</div>
<div v-else></div>
</div>
</a-col>
<a-col :span="2" style="text-align: center;">
<div class="special-middle">
<div>{{ item.isRequired == true ? "是" : "否" }}</div>
</div>
</a-col>
<a-col :span="10" style="text-align: center;">
<div class="special-middle">
<div>{{item.fileExplain}}<span v-if="item.isRequired" style="color:red;">*</span></div>
</div>
</a-col>
<a-col :span="2" style="text-align: center;">
<div class="special-middle">
<div v-if="item.downloadUrl"><a :href="item.downloadUrl" :download="item.fileName">下载</a></div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
import documentView from '@/views/components/common/documentView'
const File = { fileName: null, downloadUrl: null, fileExplain: null, downloadId: null, isRequired: true, required: false, isTitle: false };
export default {
name: "fileInfo",
components: {
documentView,
},
props: {
fileList: {
type: Array,
default: () => {
return [{ ...File }];
},
},
},
data() {
return {};
},
methods: {
created() {
},
methods: {
// 添加附件
addfileList () {
this.fileList.push(Object.assign({ ...File }, { fileExplain: '' }))
},
// 删除附件
removefileList (item) {
let index = this.fileList.indexOf(item)
if (index !== -1) {
this.fileList.splice(index, 1)
}
},
}
};
</script>
\ No newline at end of file
<template>
<div></div>
<div>
<a-row>
<a-col :span="24" style="border-top: 0px; text-align: center">
<div class="main-title">
<span>团队人员名单</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="1" class="bg-gray">
<div class="special-middle">
<div class="required">序号</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">姓名</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">性别</div>
</div>
</a-col>
<a-col :span="2" class="bg-gray">
<div class="special-middle">
<div class="required">出生日期</div>
</div>
</a-col>
<a-col :span="3" class="bg-gray">
<div class="special-middle">
<div class="required">专业</div>
</div>
</a-col>
<a-col :span="5" class="bg-gray">
<div class="special-middle">
<div class="required">技术职称</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div class="required">单位</div>
</div>
</a-col>
<a-col :span="5" class="bg-gray">
<div class="special-middle">
<div>工作分工(限10字)</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in membersList" :key="'membersList'+index" type="flex" class="row_center">
<a-col :span="1">
<div style="margin-top:10px;">{{ item.showIndex }}</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>{{ item.name }}</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>{{ item.sex }}</div>
</div>
</a-col>
<a-col :span="2">
<div class="special-middle">
<div>{{ moment(item.birthday).format('YYYY-MM-DD') }}</div>
</div>
</a-col>
<a-col :span="3">
<div class="special-middle">
<div>{{ item.specName }}</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>{{ item.titleName }}</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>{{ item.workUnit }}</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>{{ item.projWork }}</div>
</div>
</a-col>
</a-row>
</div>
</template>
<script>
import moment from 'moment'
export default {
name: "membersInfo",
props: {
membersList: {
type: Array,
default: () => {
return [];
return [{ ...Member }];
},
}
},
data() {
return {};
},
methods: {},
methods: {
moment,
},
};
</script>
<template>
<div>
<a-row>
<a-col :span="24" style="border-top: 0px; text-align: center">
<div class="main-title">
<span>申报人才简历</span>
</div>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<span>学历(高中以上)</span>
</div>
</a-col>
<a-col :span="20">
<!-- 学历表格 -->
<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="6" 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-row>
<a-row v-for="(item, index) in educationList" :key="'educationList'+index" type="flex" class="row_center">
<a-col :span="8">
<div class="special-middle">
<div>{{ moment(item.resumeStart).format('YYYY-MM-DD') }}{{ moment(item.resumeEnd).format('YYYY-MM-DD') }}</div>
</div>
</a-col>
<a-col :span="6">
<div class="special-middle">
<div>{{ item.orgName }}</div>
</div>
</a-col>
<a-col :span="10">
<div class="special-middle">
<div>{{ item.resumeRemark }}</div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<span>研修经历</span>
</div>
</a-col>
<a-col :span="20">
<!-- 研修经历表格 -->
<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="6" class="bg-gray">
<div class="special-middle">
<div>机构(国别)</div>
</div>
</a-col>
<a-col :span="10" class="bg-gray">
<div class="special-middle">
<div>研修内容(限20字)</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in studyList" :key="'studyList'+index" type="flex" class="row_center">
<a-col :span="8">
<div class="special-middle">
<div>{{ moment(item.resumeStart).format('YYYY-MM-DD') }}{{ moment(item.resumeEnd).format('YYYY-MM-DD') }}</div>
</div>
</a-col>
<a-col :span="6">
<div class="special-middle">
<div>{{ item.orgName }}</div>
</div>
</a-col>
<a-col :span="10">
<div class="special-middle">
<div>{{ item.resumeRemark }}</div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row type="flex" class="row_center">
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<span>工作经历</span>
</div>
</a-col>
<a-col :span="20">
<!-- 工作经历表格 -->
<a-row type="flex" class="row_center">
<a-col :span="6" class="bg-gray">
<div class="special-middle">
<div>起止日期</div>
</div>
</a-col>
<a-col :span="5" class="bg-gray">
<div class="special-middle">
<div>机构</div>
</div>
</a-col>
<a-col :span="4" class="bg-gray">
<div class="special-middle">
<div>职务</div>
</div>
</a-col>
<a-col :span="9" class="bg-gray">
<div class="special-middle">
<div>承担的主要工作(限20字)</div>
</div>
</a-col>
</a-row>
<a-row v-for="(item, index) in workList" :key="'workList'+index" type="flex" class="row_center">
<a-col :span="6">
<div class="special-middle">
<div>{{ moment(item.resumeStart).format('YYYY-MM-DD') }}{{ moment(item.resumeEnd).format('YYYY-MM-DD') }}</div>
</div>
</a-col>
<a-col :span="5">
<div class="special-middle">
<div>{{ item.orgName }}</div>
</div>
</a-col>
<a-col :span="4">
<div class="special-middle">
<div>{{ item.positionName }}</div>
</div>
</a-col>
<a-col :span="9">
<div class="special-middle">
<div>{{ item.resumeRemark }}</div>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
</div>
</template>
<script>
import moment from 'moment'
export default {
name: "resumeInfo",
props: {
budget: {
resumeList: {
type: Array,
default: () => {
return [];
......@@ -17,11 +167,59 @@ export default {
},
data() {
return {
educationList: [],
studyList: [],
workList: [],
};
},
created() {
},
methods: {
moment,
InitData() {
// 根据 resumeType 分类并排序
if (this.resumeList && this.resumeList.length > 0) {
// 学历记录
this.educationList = this.resumeList
.filter(item => item.resumeType === 'e76f5097-fe28-11ef-b6cb-0c42a1380f01')
.sort((a, b) => a.showIndex - b.showIndex)
.map(item => ({
...item,
resumeRange: item.resumeStart && item.resumeEnd ?
[moment(item.resumeStart), moment(item.resumeEnd)] : []
}))
// 研修经历
this.studyList = this.resumeList
.filter(item => item.resumeType === 'e76f5097-fe28-11ef-b6cb-0c42a1380f02')
.sort((a, b) => a.showIndex - b.showIndex)
.map(item => ({
...item,
resumeRange: item.resumeStart && item.resumeEnd ?
[moment(item.resumeStart), moment(item.resumeEnd)] : []
}))
// 工作经历
this.workList = this.resumeList
.filter(item => item.resumeType === 'e76f5097-fe28-11ef-b6cb-0c42a1380f03')
.sort((a, b) => a.showIndex - b.showIndex)
.map(item => ({
...item,
resumeRange: item.resumeStart && item.resumeEnd ?
[moment(item.resumeStart), moment(item.resumeEnd)] : []
}))
}
}
},
watch: {
resumeList: {
handler(resumeList) {
if (!!resumeList) {
this.InitData()
}
},
},
},
};
</script>
\ No newline at end of file
......@@ -44,16 +44,82 @@ export default {
{ title: '项目审核记录', key: '7', isShow: true },
],
formData: {
id: null,
talentCategory: null,
reportYear: null,
certId: null,
personId: null,
personName: null,
nation: null,
sex: null,
birthday: null,
degree: null,
degreeTime: null,
degreeUnit: null,
spec: null,
graduateTeacher: null,
title: null,
politicalParty: null,
duty: null,
talentType: null,
honoraryTitle: null,
holdPost1: null,
holdPost2: null,
holdPost3: null,
mobile: null,
fax: null,
technicalSkill: null,
qualityTarget: null,
researchCondition: null,
researchProgress: null,
email: null,
applyFund: null,
otherFund: null,
totalFund: null,
planTarget: null,
unitAdvice: null,
talentState: null,
resumeList: [],
membersList: [],
budgetList: [],
scientificList: [],
fileList: [],
},
loading: false,
};
},
created() {
this.getTalentApplyById()
},
methods: {
callback () {
getTalentApplyById() {
if (this.value != null) {
this.$api.talent.getTalentApplyById({ id: this.value }).then(({ data = {} }) => {
if (data) {
// 处理字符串转数组
if (typeof data.talentType === 'string' && data.talentType) {
data.talentType = data.talentType.split(',')
}
if (typeof data.graduateTeacher === 'string' && data.graduateTeacher) {
data.graduateTeacher = data.graduateTeacher.split(',')
}
this.formData = data
this.loading = false
} else
this.$emit('close', 'error')
}).catch(() => { this.$emit('close', 'error') })
}
},
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;
},
onTalentExport () {
......
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