ir个人中心添加简历入口
continuous-integration/drone/push Build is passing Details

uat_us
wangxiaoshuang 2024-10-23 18:00:18 +08:00
parent f1f27f405b
commit 6f6959627f
5 changed files with 655 additions and 185 deletions

View File

@ -269,7 +269,9 @@ export default {
openBox() {
this.model_cfg.visible = true
},
handleCancle() {},
handleCancle() {
this.model_cfg.visible = false
},
handleRemoveFile(row) {
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning',

View File

@ -6,26 +6,22 @@
<template v-if="DATA.FirstName && DATA.LastName">
<div class="userInfo">
<span>{{ DATA.FirstName }}{{ DATA.LastName }}</span>
<span>
<span v-if="isEN">
{{
Array.isArray(DATA.TitleList) && DATA.TitleList.length > 0
? DATA.TitleList.join(', ')
: ''
}}
</span>
<span v-else>
{{
Array.isArray(DATA.TitleCNList) && DATA.TitleCNList.length > 0
? DATA.TitleCNList.join(', ')
: ''
}}
</span>
<span v-if="isEN">
{{
Array.isArray(DATA.TitleList) && DATA.TitleList.length > 0
? DATA.TitleList.join(', ')
: ''
}}
</span>
<span>
<span v-if="isEN">{{ DATA.HospitalName }}</span>
<span v-else>{{ DATA.HospitalNameCN }}</span>
<span v-else>
{{
Array.isArray(DATA.TitleCNList) && DATA.TitleCNList.length > 0
? DATA.TitleCNList.join(', ')
: ''
}}
</span>
<span v-if="isEN">{{ DATA.HospitalName }}</span>
<span v-else>{{ DATA.HospitalNameCN }}</span>
</div>
<div class="userTitle">
<span

View File

@ -42,7 +42,7 @@
}}</el-menu-item>
</el-menu>
</div>
<div class="main">
<div class="main" id="main">
<div class="content">
<div class="title">
<div>{{ $t('curriculumVitae:content:title') }}</div>
@ -166,7 +166,7 @@
</div>
</div>
<el-dialog :visible.sync="visible" fullscreen>
<preview />
<preview :isEN="isEN" :reviewerId.sync="reviewerId" v-if="visible" />
</el-dialog>
</div>
</template>
@ -227,6 +227,7 @@ export default {
SummarizeInfo: {},
TrialExperienceView: {},
},
dom: null,
}
},
computed: {
@ -243,12 +244,14 @@ export default {
}
},
mounted() {
this.dom = document.getElementById('main')
//
window.addEventListener('scroll', this.onScroll)
this.dom.addEventListener('scroll', this.onScroll)
},
destroy() {
// vue
window.removeEventListener('scroll', this.onScroll)
this.dom.removeEventListener('scroll', this.onScroll)
this.dom = null
},
methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
@ -271,8 +274,8 @@ export default {
const navContent = document.getElementById(key)
if (navContent) {
const scrollTop = navContent.offsetTop
document.body.scrollTop = scrollTop
document.documentElement.scrollTop = scrollTop
document.getElementById('main').scrollTop = scrollTop
// document.documentElement.scrollTop = scrollTop
}
},
onScroll() {
@ -281,11 +284,11 @@ export default {
// offsetTop
const offsetTopArr = []
navContents.forEach((item) => {
console.log(item.offsetTop)
offsetTopArr.push(item.offsetTop)
})
// scrollTop
const scrollTop =
document.documentElement.scrollTop || document.body.scrollTop
const scrollTop = document.getElementById('main').scrollTop
//
let navItem = null
for (let n = 0; n < offsetTopArr.length; n++) {
@ -308,13 +311,17 @@ export default {
}
</script>
<style lang="scss" scoped>
.curriculumVitae {
position: relative;
height: 100%;
}
.title {
line-height: 50px;
background-color: #fff;
text-align: center;
}
.leftMenu {
position: fixed;
position: absolute;
left: 0;
top: 0;
width: 100px;
@ -341,7 +348,8 @@ export default {
}
.main {
width: calc(100% - 100px);
height: 100vh;
height: 100%;
overflow: auto;
margin-left: 100px;
display: flex;
align-items: flex-start;

View File

@ -1,46 +1,160 @@
<template>
<div :class="{ curriculumVitaePreview: true, noFile: !isAll }">
<div :class="{ allInfo: isAll, info: !isAll }">
<div :class="{ curriculumVitaePreview: true, noFile: !isAll || !hasFile }">
<div :class="{ allInfo: isAll && hasFile, info: !isAll || !hasFile }">
<div class="title">{{ $t('curriculumVitae:preview:title') }}</div>
<div class="message">
<div class="userInfo">
<span>张三</span>
<span>医学博士</span>
<span>广州医院</span>
<span>社会兼职中华医学会XXXXXX</span>
<span v-if="isAll">
{{ reviewerData.BasicInfoView.FirstName
}}{{ reviewerData.BasicInfoView.LastName }}
</span>
<span v-else>{{
isEN
? reviewerData.BasicInfoView.BlindName
: reviewerData.BasicInfoView.BlindNameCN
}}</span>
<span v-if="isEN">
{{
Array.isArray(reviewerData.BasicInfoView.TitleList) &&
reviewerData.BasicInfoView.TitleList.length > 0
? reviewerData.BasicInfoView.TitleList.join(', ')
: ''
}}
</span>
<span v-else>
{{
Array.isArray(reviewerData.BasicInfoView.TitleCNList) &&
reviewerData.BasicInfoView.TitleCNList.length > 0
? reviewerData.BasicInfoView.TitleCNList.join(', ')
: ''
}}
</span>
<span v-if="isAll">
<span v-if="isEN">{{
reviewerData.BasicInfoView.HospitalName
}}</span>
<span v-else>{{ reviewerData.BasicInfoView.HospitalNameCN }}</span>
</span>
</div>
<div class="userTitle">
<span class="el-icon-first-aid-kit">放射科</span>
<span class="el-icon-user">主任</span>
<span class="el-icon-medal">副主任医师</span>
<span class="el-icon-trophy">副教授</span>
<span class="el-icon-first-aid-kit">
<span v-if="isEN">{{
reviewerData.EmploymentView.Department
}}</span>
<span v-else>{{ reviewerData.EmploymentView.DepartmentCN }}</span>
</span>
<span class="el-icon-user"
><span v-if="isEN">{{ reviewerData.EmploymentView.Rank }}</span>
<span v-else>{{ reviewerData.EmploymentView.RankCN }}</span></span
>
<span class="el-icon-medal" v-if="isAll">
<span v-if="isEN">{{
reviewerData.EmploymentView.WorkPartTimeEn
}}</span>
<span v-else>{{ reviewerData.EmploymentView.WorkPartTime }}</span>
</span>
</div>
<div class="userTel">
<span class="el-icon-phone-outline">18616815282</span>
<span class="el-icon-message">sicauzhangye@sina.com</span>
<span class="el-icon-chat-dot-round">wechat666</span>
<div class="userTel" v-if="isAll">
<span class="el-icon-phone-outline">{{
reviewerData.BasicInfoView.Phone
}}</span>
<span class="el-icon-message">{{
reviewerData.BasicInfoView.EMail
}}</span>
<span class="el-icon-chat-dot-round">{{
reviewerData.BasicInfoView.WeChat
}}</span>
</div>
</div>
<div class="message">
<div
class="message"
v-if="
reviewerData.SummarizeInfo.SummarizeEn ||
reviewerData.SummarizeInfo.Summarize
"
>
<div class="title">{{ $t('curriculumVitae:summarize:title') }}</div>
<span class="text">
哈斯卡基本的喀山举办的卡拉说不定就卡了奥斯本大数据量的把数据来看不打算了解到
{{
isEN
? reviewerData.SummarizeInfo.SummarizeEn
: reviewerData.SummarizeInfo.Summarize
}}
</span>
</div>
<div class="message">
<div class="message" v-if="isAll">
<el-form class="demo-form-inline">
<el-form-item :label="$t('curriculumVitae:specialty:specialty')">
<span>放射科</span>
<span v-if="isEN">
{{
reviewerData.SpecialtyView.Speciality ||
reviewerData.SpecialtyView.SpecialityOther
}}
</span>
<span v-else>{{
reviewerData.SpecialtyView.SpecialityCN ||
reviewerData.SpecialtyView.SpecialityOtherCN
}}</span>
</el-form-item>
<el-form-item :label="$t('curriculumVitae:specialty:submajor')">
<el-tag type="info" v-for="item in ['1', '2', '3']" :key="item">
标签三
</el-tag>
<template v-if="isEN">
<el-tag
type="info"
v-for="item in reviewerData.SpecialtyView.SubspecialityOther
? [
...reviewerData.SpecialtyView.SubspecialityList,
reviewerData.SpecialtyView.SubspecialityOther,
]
: reviewerData.SpecialtyView.SubspecialityList"
:key="item"
>
{{ item }}
</el-tag>
</template>
<template v-else>
<el-tag
type="info"
v-for="item in reviewerData.SpecialtyView.SubspecialityOtherCN
? [
...reviewerData.SpecialtyView.SubspecialityCNList,
reviewerData.SpecialtyView.SubspecialityOtherCN,
]
: reviewerData.SpecialtyView.SubspecialityCNList"
:key="item"
>
{{ item }}
</el-tag>
</template>
</el-form-item>
<el-form-item :label="$t('curriculumVitae:specialty:equipment')">
<el-tag type="info" v-for="item in ['1', '2', '3']" :key="item">
标签三
</el-tag>
<template v-if="isEN">
<el-tag
type="info"
v-for="item in reviewerData.SpecialtyView.ReadingTypeOther
? [
...reviewerData.SpecialtyView.ReadingTypeList,
reviewerData.SpecialtyView.ReadingTypeOther,
]
: reviewerData.SpecialtyView.ReadingTypeList"
:key="item"
>
{{ item }}
</el-tag>
</template>
<template v-else>
<el-tag
type="info"
v-for="item in reviewerData.SpecialtyView.ReadingTypeOtherCN
? [
...reviewerData.SpecialtyView.ReadingTypeCNList,
reviewerData.SpecialtyView.ReadingTypeOtherCN,
]
: reviewerData.SpecialtyView.ReadingTypeCNList"
:key="item"
>
{{ item }}
</el-tag>
</template>
</el-form-item>
</el-form>
</div>
@ -49,7 +163,8 @@
{{ $t('curriculumVitae:EducationalExperience:title') }}
</div>
<el-table
:data="tableData"
:data="reviewerData.EducationList"
v-loading="loading"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
>
@ -57,33 +172,62 @@
prop="date"
:label="$t('curriculumVitae:EducationalExperience:table:time')"
>
<template slot-scope="scope">
<span
>{{ scope.row.BeginDateStr }}-{{ scope.row.EndDateStr }}</span
>
</template>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:EducationalExperience:table:specialy')"
>
<template slot-scope="scope">
<span>
{{ isEN ? scope.row.Major : scope.row.MajorCN }}
</span>
</template>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:EducationalExperience:table:degree')"
v-if="isAll"
>
<template slot-scope="scope">
<span>
{{ $fd('Degree', Number(scope.row.Degree)) }}
</span>
</template>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:EducationalExperience:table:school')"
v-if="isAll"
>
<template slot-scope="scope">
<span>
{{ isEN ? scope.row.Organization : scope.row.OrganizationCN }}
</span>
</template>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:EducationalExperience:table:city')"
v-if="isAll"
>
<template slot-scope="scope">
<span>
{{ isEN ? scope.row.City : scope.row.CityCN }}
</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="message">
<div>{{ $t('curriculumVitae:continuingTraining:title') }}</div>
<el-table
:data="tableData2"
:data="reviewerData.PostgraduateList"
v-loading="loading"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
>
@ -91,26 +235,43 @@
prop="date"
:label="$t('curriculumVitae:continuingTraining:table:time')"
>
<template slot-scope="scope">
<span
>{{ scope.row.BeginDateStr }}-{{ scope.row.EndDateStr }}</span
>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="Training"
:label="$t('curriculumVitae:continuingTraining:table:type')"
>
<template slot-scope="scope">
<span>{{ $fd('Training', Number(scope.row.Training)) }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="Major"
:label="$t('curriculumVitae:continuingTraining:table:direction')"
>
<template slot-scope="scope">
<span>{{ isEN ? scope.row.Major : scope.row.MajorCN }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="school"
:label="$t('curriculumVitae:continuingTraining:table:school')"
>
<template slot-scope="scope">
<span>{{ isEN ? scope.row.School : scope.row.SchoolCN }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="City"
:label="$t('curriculumVitae:continuingTraining:table:city')"
>
<template slot-scope="scope">
<span>{{ isEN ? scope.row.City : scope.row.CityCN }}</span>
</template>
</el-table-column>
</el-table>
</div>
@ -123,12 +284,22 @@
<el-form-item
:label="$t('curriculumVitae:scientificResearchProject:direction')"
>
<div>direction</div>
<span v-if="isEN">{{
reviewerData.ResearchPublicationView.Research
}}</span>
<span v-else>{{
reviewerData.ResearchPublicationView.ResearchCN
}}</span>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:scientificResearchProject:subject')"
>
<div>subject</div>
<span v-if="isEN">{{
reviewerData.ResearchPublicationView.Grants
}}</span>
<span v-else>{{
reviewerData.ResearchPublicationView.GrantsCN
}}</span>
</el-form-item>
</el-form>
</div>
@ -139,34 +310,61 @@
{{ $t('curriculumVitae:clinicalTrials:title') }}
</div>
<el-table
:data="tableData3"
:data="reviewerData.TrialExperienceView.ClinicalTrialExperienceList"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
>
<el-table-column
prop="date"
prop="Phase"
:label="$t('curriculumVitae:clinicalTrials:table:byStages')"
>
<template slot-scope="scope">
{{
scope.row.OtherStages ? scope.row.OtherStages : scope.row.Phase
}}
</template>
</el-table-column>
<el-table-column
prop="date"
prop="EvaluationCriteriaList"
:label="$t('curriculumVitae:clinicalTrials:table:criterion')"
>
<template slot-scope="scope">
{{
scope.row.EvaluationCriteriaList.length > 0
? scope.row.EvaluationCriteriaList.join(', ')
: ''
}}
<span v-if="scope.row.OtherCriterion">
{{
scope.row.EvaluationCriteriaList.length > 0
? `, ${scope.row.OtherCriterion}`
: scope.row.OtherCriterion
}}
</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="EvaluationContent"
:label="$t('curriculumVitae:clinicalTrials:table:indication')"
>
</el-table-column>
<el-table-column
prop="date"
prop="VisitReadingCount"
:label="$t('curriculumVitae:clinicalTrials:table:viewingVolumeNum')"
v-if="isAll"
>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:clinicalTrials:table:year')"
>
<template slot-scope="scope">
<span v-if="scope.row.StartTime"
>{{ scope.row.StartTime.split('-')[0] }}-{{
scope.row.EndTime ? scope.row.EndTime.split('-')[0] : ''
}}</span
>
</template>
</el-table-column>
</el-table>
<!--GCP证书-->
@ -174,22 +372,25 @@
{{ $t('curriculumVitae:clinicalTrials:GCPtitle') }}
</div>
<el-table
:data="tableData4"
:data="GCPData"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
>
<el-table-column
prop="has"
prop="GCP"
:label="$t('curriculumVitae:clinicalTrials:table:hasCertificate')"
>
<template slot-scope="scope">
<span>{{ $fd('hasOrNo', scope.row.GCP) }}</span>
</template>
</el-table-column>
<el-table-column
prop="time"
prop="GCPTime"
:label="$t('curriculumVitae:clinicalTrials:table:certificateTime')"
>
</el-table-column>
<el-table-column
prop="adress"
prop="GCPAgencies"
:label="
$t('curriculumVitae:clinicalTrials:table:certificateHospital')
"
@ -201,188 +402,249 @@
{{ $t('curriculumVitae:clinicalTrials:otherTitle') }}
</div>
<template v-if="true">
<div class="message">三的卡上不能打卡上班打卡</div>
<div class="message">
{{
isEN
? reviewerData.TrialExperienceView.OtherClinicalExperience
: reviewerData.TrialExperienceView.OtherClinicalExperienceCN
}}
</div>
</template>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
</div>
<div class="message">
<div class="title">{{ $t('curriculumVitae:treatise:title') }}</div>
<el-table
:data="tableData5"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
<div
class="message"
style="white-space: pre-wrap"
v-if="reviewerData.ResearchPublicationView.Publications"
>
<el-table-column
prop="date"
:label="$t('curriculumVitae:treatise:table:author')"
>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:treatise:table:name')"
>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:treatise:table:publish')"
>
</el-table-column>
</el-table>
{{ reviewerData.ResearchPublicationView.Publications }}
</div>
</div>
<div class="message">
<div class="title">{{ $t('curriculumVitae:other:title') }}</div>
<div
class="message"
v-if="
(reviewerData.ResearchPublicationView.AwardsHonors ||
reviewerData.ResearchPublicationView.AwardsHonorsCN) &&
isAll
"
>
<div class="title">{{ $t('curriculumVitae:other:AH') }}</div>
<div class="content">
<div>{{ $t('curriculumVitae:other:AH') }}</div>
<p>
a诺夫卡刷积分八九十快点把手里的v八路军那是的健康蓝色的艰苦拉萨的
</p>
<span v-if="isEN">{{
reviewerData.ResearchPublicationView.AwardsHonors
}}</span>
<span v-else>{{
reviewerData.ResearchPublicationView.AwardsHonorsCN
}}</span>
</div>
</div>
<div class="message" v-if="isAll">
<div class="title">{{ $t('curriculumVitae:pay:title') }}</div>
<div class="content">
<el-form :inline="true" class="demo-form-inline">
<el-form-item
:label="$t('curriculumVitae:pay:form:payCardId')"
style="width: 45%"
>
{{ reviewerData.PaymentModeInfo.BankNum }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:username')"
style="width: 45%"
>
{{ reviewerData.PaymentModeInfo.BankName }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:bank')"
style="width: 45%"
>
{{ reviewerData.PaymentModeInfo.OpeningBank }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:idCard')"
style="width: 45%"
>
{{ reviewerData.PaymentModeInfo.IdCard }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:phone')"
style="width: 45%"
>
{{ reviewerData.PaymentModeInfo.BankPhoneNum }}
</el-form-item>
</el-form>
</div>
</div>
</div>
<div class="file" v-if="isAll">
<div class="curriculum">
<div class="file" v-if="isAll && hasFile">
<div
class="curriculum"
v-if="
(resumeListCN && resumeListCN.length > 0) ||
(resumeListEN && resumeListEN.length > 0)
"
>
<div class="title">{{ $t('curriculumVitae:curriculum:title') }}</div>
<div class="fileBox">
<div class="file_title">
<div
class="file_title"
v-if="resumeListCN && resumeListCN.length > 0"
>
{{ $t('curriculumVitae:curriculum:fileTitle:CN') }}
</div>
<template v-if="true">
<div class="file" v-for="item in [1, 2]" :key="item">
<div class="name">简历1</div>
<div class="file" v-for="item in resumeListCN" :key="item.Id">
<div class="name" :title="item.FileName">{{ item.FileName }}</div>
<i
class="el-icon-download"
:title="$t('common:button:download')"
/>
<i
class="el-icon-circle-check"
:title="$t('common:button:default')"
@click.stop="handlePreview(item)"
/>
</div>
</template>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<div class="file_title">
<div
class="file_title"
v-if="resumeListEN && resumeListEN.length > 0"
>
{{ $t('curriculumVitae:curriculum:fileTitle:EN') }}
</div>
<template v-if="true">
<div class="file" v-for="item in [1, 2]" :key="item">
<div class="name">Resume</div>
<div class="file" v-for="item in resumeListEN" :key="item">
<div class="name" :title="item.FileName">{{ item.FileName }}</div>
<i
class="el-icon-download"
:title="$t('common:button:download')"
/>
<i
class="el-icon-circle-check"
:title="$t('common:button:default')"
@click.stop="handlePreview(item)"
/>
</div>
</template>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
</div>
</div>
<div class="certificate">
<div
class="certificate"
v-if="
diplomaFile ||
certificateFile ||
licenseFile ||
(workPermitFiles && workPermitFiles.length > 0)
"
>
<div class="title">{{ $t('curriculumVitae:certificate:title') }}</div>
<div class="fileBox">
<!--最高医学学位毕业证书-->
<div class="file_title">
<div class="file_title" v-if="diplomaFile">
{{ $t('curriculumVitae:certificate:fileTitle:diploma') }}
</div>
<div class="file" v-if="true">
<div class="name">简历1</div>
<div class="file" v-if="diplomaFile">
<div class="name" :title="diplomaFile.FileName">
{{ diplomaFile.FileName }}
</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="preview(diplomaFile)"
/>
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<!--医师资格证-->
<div class="file_title" v-if="true">
<div class="file_title" v-if="certificateFile">
{{ $t('curriculumVitae:certificate:fileTitle:certificate') }}
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<div class="file">
<div class="name">简历1</div>
<div class="file" v-if="certificateFile">
<div class="name" :title="certificateFile.FileName">
{{ certificateFile.FileName }}
</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="preview(certificateFile)"
/>
</div>
<!--医师执业证-->
<div class="file_title" v-if="true">
<div class="file_title" v-if="licenseFile">
{{ $t('curriculumVitae:certificate:fileTitle:license') }}
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<div class="file">
<div class="name">简历1</div>
<div class="file" v-if="licenseFile">
<div class="name" :title="licenseFile.FileName">
{{ licenseFile.FileName }}
</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="preview(licenseFile)"
/>
</div>
<!--大型医用设备上岗证-->
<div class="file_title">
{{ $t('curriculumVitae:certificate:fileTitle:workPermit') }}
</div>
<template v-if="true">
<template v-if="workPermitFiles && workPermitFiles.length > 0">
<div class="file_title">
{{ $t('curriculumVitae:certificate:fileTitle:CT') }}
</div>
<div v-for="item in [1, 2]" :key="item">
<div v-for="item in workPermitFiles" :key="item.Id">
<div class="file">
<div class="name">简历1</div>
<div class="name" :title="item.FileName">
{{ item.FileName }}
</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="preview(item)"
/>
</div>
</div>
</template>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
</div>
</div>
<div class="agreement">
<div
class="agreement"
v-if="
(sowList && sowList.length > 0) ||
(CounselorFiles && CounselorFiles.length > 0) ||
(ackSowList && ackSowList.length > 0)
"
>
<div class="title">{{ $t('curriculumVitae:agreement:title') }}</div>
<div class="fileBox">
<div class="file_title">
<div class="file_title" v-if="sowList && sowList.length > 0">
{{ $t('curriculumVitae:agreement:fileTitle') }}
</div>
<template v-if="true">
<div class="file" v-for="item in [1, 2]" :key="item">
<div class="name">简历1</div>
<template v-if="sowList && sowList.length > 0">
<div class="file" v-for="item in sowList" :key="item.Id">
<div class="name" :title="item.FileName">{{ item.FileName }}</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="handlePreview(item)"
/>
</div>
</template>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<template v-if="true">
<template v-if="CounselorFiles && CounselorFiles.length > 0">
<div class="file_title">
{{ $t('curriculumVitae:agreement:Counselor') }}
</div>
<div class="file" v-for="item in [1, 2]" :key="item">
<div class="name">简历1</div>
<div class="file" v-for="item in CounselorFiles" :key="item.Id">
<div class="name" :title="item.FileName">{{ item.FileName }}</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="preview(item)"
/>
</div>
</template>
<template v-if="true">
<template v-if="ackSowList && ackSowList.length > 0">
<div class="file_title">
{{ $t('curriculumVitae:agreement:confirmation') }}
</div>
<div class="file" v-for="item in [1, 2]" :key="item">
<div class="name">简历1</div>
<div class="file" v-for="item in ackSowList" :key="item.Id">
<div class="name" :title="item.FileName">{{ item.FileName }}</div>
<i
class="el-icon-view"
:title="$t('common:button:preview')"
@click.stop="preview"
@click.stop="handlePreview(item)"
/>
</div>
</template>
@ -392,6 +654,9 @@
</div>
</template>
<script>
import { getDetail } from '@/api/reviewers'
import { getAttachmentByType } from '@/api/attachment'
import { getDoctorCriterionFile } from '@/api/reviewers'
export default {
name: 'curriculumVitaePreview',
props: {
@ -399,16 +664,201 @@ export default {
type: Boolean,
default: true,
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
tableData: [],
tableData2: [],
tableData3: [],
tableData4: [],
tableData5: [],
reviewerData: {
BasicInfoView: {},
EmploymentView: {},
AckSowList: [],
AttachmentList: [],
AuditView: {},
EducationList: [],
IntoGroupInfo: {},
PaymentModeInfo: {},
PostgraduateList: [],
ResearchPublicationView: {},
SowList: [],
SpecialtyView: {},
SummarizeInfo: {},
TrialExperienceView: {},
},
resumeList: [],
resumeListEN: [],
resumeListCN: [],
sowList: [],
ackSowList: [],
}
},
computed: {
hasFile() {
return (
(this.sowList && this.sowList.length > 0) ||
(this.CounselorFiles && this.CounselorFiles.length > 0) ||
(this.ackSowList && this.ackSowList.length > 0) ||
this.diplomaFile ||
this.certificateFile ||
this.licenseFile ||
(this.workPermitFiles && this.workPermitFiles.length > 0) ||
(this.resumeListCN && this.resumeListCN.length > 0) ||
(this.resumeListEN && this.resumeListEN.length > 0)
)
},
GCPData() {
if (!this.reviewerData.TrialExperienceView) return []
return [
{
ExpiryDateStr: this.reviewerData.TrialExperienceView.ExpiryDateStr,
FileName: this.reviewerData.TrialExperienceView.FileName,
GCP: this.reviewerData.TrialExperienceView.GCP,
GCPAgencies: this.reviewerData.TrialExperienceView.GCPAgencies,
GCPFullPath: this.reviewerData.TrialExperienceView.GCPFullPath,
GCPId: this.reviewerData.TrialExperienceView.GCPId,
GCPTime: this.reviewerData.TrialExperienceView.GCPTime,
Path: this.reviewerData.TrialExperienceView.Path,
Type: this.reviewerData.TrialExperienceView.Type,
},
]
},
//
diplomaFile() {
if (
!this.reviewerData.AttachmentList ||
this.reviewerData.AttachmentList.length <= 0
)
return false
return this.reviewerData.AttachmentList.find(
(item) => item.Type === 'Diploma of the highest medical degree'
)
},
//
certificateFile() {
if (
!this.reviewerData.AttachmentList ||
this.reviewerData.AttachmentList.length <= 0
)
return false
return this.reviewerData.AttachmentList.find(
(item) => item.Type === 'Medical Qualification Certificate'
)
},
//
licenseFile() {
if (
!this.reviewerData.AttachmentList ||
this.reviewerData.AttachmentList.length <= 0
)
return false
return this.reviewerData.AttachmentList.find(
(item) => item.Type === 'Practice License'
)
},
//
workPermitFiles() {
if (
!this.reviewerData.AttachmentList ||
this.reviewerData.AttachmentList.length <= 0
)
return false
return this.reviewerData.AttachmentList.filter(
(item) => item.Type && item.Type.indexOf('Modality Certificate') >= 0
)
},
CounselorFiles() {
if (
!this.reviewerData.AttachmentList ||
this.reviewerData.AttachmentList.length <= 0
)
return false
return this.reviewerData.AttachmentList.filter(
(item) => item.Type && item.Type.indexOf('Consultant Agreement') >= 0
)
},
},
mounted() {
this.getDetail()
this.getResumeList()
this.initSowList()
},
methods: {
//
async getDetail() {
try {
let id = this.reviewerId
this.loading = true
let res = await getDetail(id)
this.loading = false
if (res.IsSuccess) {
this.reviewerData = res.Result
}
} catch (err) {
this.loading = false
console.log(err)
}
},
getResumeList() {
this.loading = true
getAttachmentByType(this.reviewerId, 'Resume')
.then((res) => {
if (res.IsSuccess) {
if (res.Result.length > 0) {
this.resumeList = res.Result
this.filterByLanguage()
}
}
this.loading = false
})
.catch(() => {
this.loading = false
})
},
initSowList() {
if (!this.reviewerId) return
getDoctorCriterionFile({
fileType: 0,
DoctorId: this.reviewerId,
}).then((res) => {
this.sowList = res.Result
})
getDoctorCriterionFile({
fileType: 1,
DoctorId: this.reviewerId,
}).then((res) => {
this.ackSowList = res.Result
})
},
filterByLanguage() {
this.resumeListEN = []
this.resumeListCN = []
this.resumeList.map((resume) => {
if (resume.Language === 2) {
this.resumeListEN.push(resume)
} else if (resume.Language === 1) {
this.resumeListCN.push(resume)
}
})
},
handlePreview(row) {
if (row.FullPath) {
window.open(this.OSSclientConfig.basePath + row.FullPath, '_blank')
}
},
preview(row) {
this.$preview({
path: row.FullPath,
type: 'pdf',
title: row.FileName,
})
},
},
}
</script>
<style lang="scss" scoped>

View File

@ -7,14 +7,17 @@
style="width: 200px"
>
<el-menu-item index="1">{{
$t("trials:trials-myinfo:menuTitle:mine")
$t('trials:trials-myinfo:menuTitle:mine')
}}</el-menu-item>
<el-menu-item index="2">{{
$t("trials:trials-myinfo:menuTitle:account")
$t('trials:trials-myinfo:menuTitle:account')
}}</el-menu-item>
<el-menu-item index="3">{{
$t("trials:trials-myinfo:menuTitle:loginLog")
$t('trials:trials-myinfo:menuTitle:loginLog')
}}</el-menu-item>
<div index="4" @click="handleSelect('4')" class="el-menu-item">
{{ $t('trials:trials-myinfo:menuTitle:resume') }}
</div>
</el-menu>
<div class="contentBox">
<mine
@ -35,65 +38,76 @@
</template>
<script>
import mine from "./mine.vue";
import account from "./account.vue";
import loginLog from "@/views/trials/trials-panel/trial-summary/login-log";
import { getUserTypeList, getUser } from "@/api/admin.js";
import store from "@/store";
import { mapGetters } from "vuex";
import mine from './mine.vue'
import account from './account.vue'
import loginLog from '@/views/trials/trials-panel/trial-summary/login-log'
import { getUserTypeList, getUser } from '@/api/admin.js'
import store from '@/store'
import { mapGetters } from 'vuex'
export default {
name: "TrialsMyinfo",
components: { mine, account, "login-log": loginLog },
name: 'TrialsMyinfo',
components: { mine, account, 'login-log': loginLog },
data() {
return {
activeIndex: "1",
activeIndex: '1',
userTypeOptions: [],
user: {},
IsCanConnectInternet: true, //
};
open: null,
}
},
computed: {
...mapGetters(["userId", "userName"]),
...mapGetters(['userId', 'userName']),
},
mounted() {
this.getUserInfo();
this.getUserTypeList();
this.getUserInfo()
this.getUserTypeList()
},
methods: {
handleSelect(index) {
this.activeIndex = index;
if (index === '4') {
if (this.open) {
this.open.close()
}
const routeData = this.$router.resolve({
path: `/curriculumVitae?lang=${this.$i18n.locale}`,
})
this.open = window.open(routeData.href, '_blank')
} else {
this.activeIndex = index
}
},
getUserInfo() {
const loading = this.$loading({
fullscreen: false,
lock: true,
text: "Loading",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.07)",
});
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.07)',
})
getUser(this.userId)
.then(async (res) => {
this.user = res.Result;
this.user = res.Result
/* eslint-disable */
zzSessionStorage.setItem("realName", this.user.RealName);
await store.dispatch("user/updateInfo");
loading.close();
zzSessionStorage.setItem('realName', this.user.RealName)
await store.dispatch('user/updateInfo')
loading.close()
})
.catch(() => {
loading.close();
});
loading.close()
})
},
getUserTypeList() {
getUserTypeList().then((res) => {
if (res.IsSuccess) {
this.userTypeOptions = res.Result;
this.userTypeOptions = res.Result
}
});
})
},
},
};
}
</script>
<style lang="scss">