Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing Details

uat_us
caiyiling 2024-01-29 11:44:18 +08:00
commit 93a2d747c5
37 changed files with 1660 additions and 1548 deletions

View File

@ -12,6 +12,7 @@
<div style="width: 320px"> <div style="width: 320px">
<el-form <el-form
label-width="100px" label-width="100px"
@submit.native.prevent
size="small" size="small"
> >
<el-form-item label="关键字"> <el-form-item label="关键字">

View File

@ -1,146 +1,149 @@
<template> <template>
<div class="agreements-info"> <div class="agreements-info">
<el-table <el-table
:data="agreementList" :data="agreementList"
style="margin-top:10px;" style="margin-top:10px;"
:span-method="objectSpanMethod" :span-method="objectSpanMethod"
border border
size="small" size="small"
> >
<el-table-column type="index" label="No." width="50" /> <template slot="empty">
<span></span>
<el-table-column </template>
prop="TrialCode" <el-table-column type="index" label="No." width="50" />
label="Trial ID"
min-width="50" <el-table-column
show-overflow-tooltip prop="TrialCode"
/> :label="$t('resumeInfo:label:TrialCode')"
<el-table-column prop="Type" label="File Type" min-width="80" show-overflow-tooltip /> min-width="50"
<el-table-column show-overflow-tooltip
prop="FileName" />
label="File Name" <el-table-column prop="Type" :label="$t('resumeInfo:label:Type')" min-width="80" show-overflow-tooltip />
min-width="100" <el-table-column
show-overflow-tooltip prop="FileName"
/> :label="$t('resumeInfo:label:FileName')"
min-width="100"
<el-table-column show-overflow-tooltip
prop="CreateTime" />
label="Upload Time"
min-width="60" <el-table-column
show-overflow-tooltip prop="CreateTime"
/> :label="$t('resumeInfo:label:CreateTime')"
<el-table-column label="Action" min-width="150"> min-width="60"
<template slot-scope="scope"> show-overflow-tooltip
<el-button />
v-if="(scope.row.Type=='Statement of Work') ||(scope.row.Type=='Acknowledgement of SOW') || scope.row.Type=='Consultant Agreement'" <el-table-column label="Action" min-width="150">
size="small" <template slot-scope="scope">
type="text" <el-button
@click="preview(scope.$index, scope.row)" v-if="(scope.row.Type=='Statement of Work') ||(scope.row.Type=='Acknowledgement of SOW') || scope.row.Type=='Consultant Agreement'"
>View</el-button> size="small"
</template> type="text"
</el-table-column> @click="preview(scope.$index, scope.row)"
</el-table> >{{$t('resumeInfo:button:view')}}</el-button>
</div> </template>
</template> </el-table-column>
<script> </el-table>
export default { </div>
props: { </template>
doctorInfo: { <script>
type: Object, export default {
default() { props: {
return {} doctorInfo: {
} type: Object,
} default() {
}, return {}
data() { }
return { }
agreementList: [], },
spanArr: [], data() {
pos: 0 return {
} agreementList: [],
}, spanArr: [],
created() { pos: 0
this.initAgreement() }
}, },
methods: { created() {
initAgreement() { this.initAgreement()
if (this.doctorInfo.AttachmentList) { },
this.doctorInfo.AttachmentList.forEach(item => { methods: {
if (item.Type === 'Consultant Agreement') { initAgreement() {
item.TrialCode = '' if (this.doctorInfo.AttachmentList) {
this.agreementList.push(item) this.doctorInfo.AttachmentList.forEach(item => {
} if (item.Type === 'Consultant Agreement') {
}) item.TrialCode = ''
this.doctorInfo.SowList.forEach(item => { this.agreementList.push(item)
item.Type = 'Statement of Work' }
this.agreementList.push(item) })
}) this.doctorInfo.SowList.forEach(item => {
this.doctorInfo.AckSowList.forEach(item => { item.Type = 'Statement of Work'
item.Type = 'Acknowledgement of SOW' this.agreementList.push(item)
this.agreementList.push(item) })
}) this.doctorInfo.AckSowList.forEach(item => {
this.agreementList = this.agreementList.sort((a, b) => { item.Type = 'Acknowledgement of SOW'
if (a.TrialCode < b.TrialCode) { this.agreementList.push(item)
return -1 })
} else if (a.TrialCode === b.TrialCode) { this.agreementList = this.agreementList.sort((a, b) => {
return 1 if (a.TrialCode < b.TrialCode) {
} else { return -1
return 0 } else if (a.TrialCode === b.TrialCode) {
} return 1
}) } else {
this.getSpanArr(this.agreementList) return 0
} }
}, })
objectSpanMethod({ row, column, rowIndex, columnIndex }) { this.getSpanArr(this.agreementList)
if (columnIndex === 1) { }
const _row = this.spanArr[rowIndex] },
const _col = _row > 0 ? 1 : 0 objectSpanMethod({ row, column, rowIndex, columnIndex }) {
return { if (columnIndex === 1) {
rowspan: _row, const _row = this.spanArr[rowIndex]
colspan: _col const _col = _row > 0 ? 1 : 0
} return {
} rowspan: _row,
}, colspan: _col
getSpanArr(data) { }
for (var i = 0; i < data.length; i++) { }
if (i === 0) { },
this.spanArr.push(1) getSpanArr(data) {
this.pos = 0 for (var i = 0; i < data.length; i++) {
} else { if (i === 0) {
// this.spanArr.push(1)
if (data[i].TrialCode === data[i - 1].TrialCode) { this.pos = 0
this.spanArr[this.pos] += 1 } else {
this.spanArr.push(0) //
} else { if (data[i].TrialCode === data[i - 1].TrialCode) {
this.spanArr.push(1) this.spanArr[this.pos] += 1
this.pos = i this.spanArr.push(0)
} } else {
} this.spanArr.push(1)
} this.pos = i
}, }
preview(index, row) { }
const filePath = row.FullPath }
if (filePath) { },
window.open(filePath, '_blank') preview(index, row) {
} const filePath = row.FullPath
}, if (filePath) {
timeFormatter(row) { window.open(this.OSSclientConfig.basePath + filePath, '_blank')
return new Date(row.CreateTime).format('yyyy-MM-dd hh:mm:ss') }
}, },
officalFormatter(row, column) { timeFormatter(row) {
if (row.IsOfficial) { return new Date(row.CreateTime).format('yyyy-MM-dd hh:mm:ss')
return 'Yes' },
} else { officalFormatter(row, column) {
return 'No' if (row.IsOfficial) {
} return 'Yes'
} } else {
} return 'No'
} }
</script> }
}
<style lang="scss"> }
.agreements-info{ </script>
padding:5px 15px;
font-size:13px; <style lang="scss">
} .agreements-info{
</style> padding:5px 15px;
font-size:13px;
}
</style>

View File

@ -3,23 +3,23 @@
<el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small"> <el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Name:"> <el-form-item :label="$t('resumeInfo:label:BlindName')">
<span>{{ basicInfo.BlindName }}</span> <span>{{ basicInfo.BlindName }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Name CN:"> <el-form-item :label="$t('resumeInfo:label:ChineseName')">
<span>{{ basicInfo.BlindNameCN }}</span> <span>{{ basicInfo.BlindNameCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Gender:"> <el-form-item :label="$t('resumeInfo:label:Sex')">
<span v-if="isEnglish">{{ basicInfo.Sex === 0?'Male':'Female' }}</span> <span v-if="isEnglish">{{ basicInfo.Sex === 0?'Male':'Female' }}</span>
<span v-else>{{ basicInfo.Sex === 0?'':'' }}</span> <span v-else>{{ basicInfo.Sex === 0?'':'' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Title:"> <el-form-item :label="$t('resumeInfo:label:Title')">
<span v-if="isEnglish"> <span v-if="isEnglish">
{{ (Array.isArray(basicInfo.Title)&& basicInfo.Title.length > 0) ? basicInfo.TitleList.join(', ') : '' }} {{ (Array.isArray(basicInfo.Title)&& basicInfo.Title.length > 0) ? basicInfo.TitleList.join(', ') : '' }}
</span> </span>

View File

@ -1,48 +1,48 @@
<template> <template>
<div class="comment-info"> <div class="comment-info">
<el-form :model="statusList" class="demo-form-inline" size="small"> <el-form :model="statusList" class="demo-form-inline" size="small">
<el-form-item label="Comment:"> <el-form-item :label="$t('resumeInfo:label:Comment')">
<el-input <el-input
v-model="statusList.AdminComment" v-model="statusList.AdminComment"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
statusList: { statusList: {
type: Object, type: Object,
default() { default() {
return {} return {}
} }
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.comment-info{ .comment-info{
padding:5px 15px; padding:5px 15px;
font-size:13px; font-size:13px;
.el-form-item--mini.el-form-item{ .el-form-item--mini.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item--small.el-form-item{ .el-form-item--small.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item__content{ .el-form-item__content{
font-size: 13px; font-size: 13px;
} }
.el-form-item__label{ .el-form-item__label{
font-size: 13px; font-size: 13px;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
} }
} }
</style> </style>

View File

@ -1,182 +1,233 @@
<template> <template>
<div class="education-info"> <div class="education-info">
<div class="btn-wrapper"> <div class="btn-wrapper">
<el-button style="margin-left:auto" size="small" :disabled="checkID.length==0" @click="downloadAttachement">Download</el-button> <el-button style="margin-left:auto" size="small" :disabled="checkID.length==0" @click="downloadAttachement">{{$t('resumeInfo:button:Download')}}</el-button>
</div> </div>
<el-table <el-table
:data="tblList" :data="tblList"
:span-method="objectSpanMethod" :span-method="objectSpanMethod"
size="small" size="small"
@selection-change="selectMore" @selection-change="selectMore"
> >
<el-table-column type="selection" align="left" width="50" /> <template slot="empty">
<el-table-column type="index" label="No." width="50" /> <span></span>
<el-table-column prop="Type" label="Type" min-width="50" show-overflow-tooltip /> </template>
<el-table-column <el-table-column type="selection" align="left" width="50" />
prop="FileName" <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="50" />
label="File Name" <el-table-column prop="Type" :label="$t('resumeInfo:label:Type')" min-width="50" show-overflow-tooltip />
min-width="80" <el-table-column
show-overflow-tooltip prop="FileName"
/> :label="$t('resumeInfo:label:FileName')"
<el-table-column min-width="80"
prop="CreateTime" show-overflow-tooltip
label="Upload Time" />
min-width="50" <el-table-column
show-overflow-tooltip prop="CreateTime"
/> :label="$t('resumeInfo:label:CreateTime')"
<el-table-column label="Action" min-width="150"> min-width="50"
<template slot-scope="scope"> show-overflow-tooltip
<el-button type="text" size="small" @click="preview(scope.$index, scope.row)">View</el-button> />
</template> <el-table-column :label="$t('common:action:action')" min-width="150">
</el-table-column> <template slot-scope="scope">
</el-table> <el-button type="text" size="small" @click="preview(scope.$index, scope.row)">{{$t('resumeInfo:button:view')}}</el-button>
</div> </template>
</template> </el-table-column>
<script> </el-table>
import { downloadByAttachmentId } from '@/api/reviewers' </div>
export default { </template>
props: { <script>
attachmentList: { import { getDoctorAttachment } from '@/api/reviewers'
type: Array, import axios from "axios";
default() { import JSZip from "jszip";
return [] import { saveAs } from 'file-saver'
} export default {
}, props: {
doctorId: { attachmentList: {
type: String, type: Array,
default: '' default() {
} return []
}, }
data() { },
return { doctorId: {
tblList: [], type: String,
checkID: [], default: ''
spanArr: [], }
pos: 0 },
} data() {
}, return {
created() { tblList: [],
this.tblList = this.filterListByType(this.attachmentList) checkID: [],
this.getSpanArr(this.tblList) spanArr: [],
}, pos: 0
methods: { }
filterListByType(arr) { },
var list = [] created() {
if (arr.length > 0) { this.tblList = this.filterListByType(this.attachmentList)
arr.forEach(item => { this.getSpanArr(this.tblList)
if (item.Type === 'Diploma of the highest medical degree') { },
list.push(item) methods: {
} filterListByType(arr) {
}) var list = []
arr.forEach(item => { if (arr.length > 0) {
if (item.Type === 'Medical Qualification Certificate') { arr.forEach(item => {
list.push(item) if (item.Type === 'Diploma of the highest medical degree') {
} list.push(item)
}) }
arr.forEach(item => { })
if (item.Type === 'Practice License') { arr.forEach(item => {
list.push(item) if (item.Type === 'Medical Qualification Certificate') {
} list.push(item)
}) }
arr.forEach(item => { })
if (item.Type === 'Modality Certificate(CT)') { arr.forEach(item => {
list.push(item) if (item.Type === 'Practice License') {
} list.push(item)
}) }
arr.forEach(item => { })
if (item.Type === 'Modality Certificate(MRI)') { arr.forEach(item => {
list.push(item) if (item.Type === 'Modality Certificate(CT)') {
} list.push(item)
}) }
arr.forEach(item => { })
if (item.Type === 'Modality Certificate(NM)') { arr.forEach(item => {
list.push(item) if (item.Type === 'Modality Certificate(MRI)') {
} list.push(item)
}) }
arr.forEach(item => { })
if (item.Type === 'Modality Certificate(US)') { arr.forEach(item => {
list.push(item) if (item.Type === 'Modality Certificate(NM)') {
} list.push(item)
}) }
} })
return list arr.forEach(item => {
}, if (item.Type === 'Modality Certificate(US)') {
downloadAttachement() { list.push(item)
downloadByAttachmentId(this.doctorId, this.checkID).then(res => { }
if (res.IsSuccess) { })
var fullPath = res.Result.FullFilePath }
window.open(fullPath) return list
} },
}) getFileData(fileUrl) {
}, return new Promise((resolve, reject) => {
preview(index, row) { axios(fileUrl, {
const filePath = row.FullPath method: 'GET',
if (filePath) { responseType: 'blob' // blob arraybuffer
window.open(filePath, '_blank') }).then((res) => {
} console.log('res', res)
}, resolve(res)
selectMore(val) { }).catch(error => {
const arr = [] reject(error)
for (let index = 0; index < val.length; index++) { })
arr.push(val[index].Id) })
} },
this.checkID = arr async handleBatchDown(dataSource) {
}, return new Promise(resolve => {
getSpanArr(data) { const zip = new JSZip() //
for (var i = 0; i < data.length; i++) { const promises = []
if (i === 0) { dataSource.FileList.forEach((item) => {
this.spanArr.push(1) console.log(this.OSSclientConfig.basePath + item.Path)
this.pos = 0 const promise = this.getFileData(this.OSSclientConfig.basePath + item.Path).then((res) => {
} else { const fileName = item.FileName + ''
// // file() floder()
if (data[i].Type === data[i - 1].Type) { zip.file(fileName, res.data, {binary: true})
this.spanArr[this.pos] += 1 })
this.spanArr.push(0) promises.push(promise)
} else { })
this.spanArr.push(1) console.log(promises)
this.pos = i // zip
} Promise.all(promises).then(() => {
} // zip
} zip.generateAsync({
}, type: 'blob',
objectSpanMethod({ row, column, rowIndex, columnIndex }) { compression: 'DEFLATE', // STORE: DEFLATE
if (columnIndex === 2) { compressionOptions: {
const _row = this.spanArr[rowIndex] level: 9 // 1~9 1 9
const _col = _row > 0 ? 1 : 0 }
return { }).then((res) => {
rowspan: _row, saveAs(res, dataSource.ReviewerCode + '_Credentials.zip') // 使FileSaver.saveAs
colspan: _col resolve()
} })
} else if (columnIndex === 3) { }).catch(reason => {
const _row = this.spanArr[rowIndex] resolve()
const _col = _row > 0 ? 1 : 0 })
return { })
rowspan: _row, },
colspan: _col downloadAttachement() {
} getDoctorAttachment({
} else if (columnIndex === 4) { DoctorId: this.doctorId,
const _row = this.spanArr[rowIndex] AttachmentIdList: this.checkID
const _col = _row > 0 ? 1 : 0 }).then(res => {
return { this.handleBatchDown(res.Result)
rowspan: _row, })
colspan: _col },
} preview(index, row) {
} const filePath = row.FullPath
}, if (filePath) {
timeFormatter(row) { window.open(this.OSSclientConfig.basePath + filePath, '_blank')
return new Date(row.UpdateTime).format('yyyy-MM-dd hh:mm:ss') }
} },
} selectMore(val) {
} const arr = []
</script> for (let index = 0; index < val.length; index++) {
arr.push(val[index].Id)
<style lang="scss"> }
.education-info{ this.checkID = arr
padding:5px 15px; },
font-size:13px; getSpanArr(data) {
.btn-wrapper{ for (var i = 0; i < data.length; i++) {
display: flex; if (i === 0) {
align-items: center; this.spanArr.push(1)
} this.pos = 0
} } else {
</style> //
if (data[i].Type === data[i - 1].Type) {
this.spanArr[this.pos] += 1
this.spanArr.push(0)
} else {
this.spanArr.push(1)
this.pos = i
}
}
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 2) {
const _row = this.spanArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col
}
} else if (columnIndex === 3) {
const _row = this.spanArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col
}
} else if (columnIndex === 4) {
const _row = this.spanArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col
}
}
},
timeFormatter(row) {
return new Date(row.UpdateTime).format('yyyy-MM-dd hh:mm:ss')
}
}
}
</script>
<style lang="scss">
.education-info{
padding:5px 15px;
font-size:13px;
.btn-wrapper{
display: flex;
align-items: center;
}
}
</style>

View File

@ -1,188 +1,194 @@
<template> <template>
<div class="education-info"> <div class="education-info">
<div class="title">Education (in chronological order)</div> <div class="title">{{ $t('resumeInfo:label:Education') }}</div>
<el-table :data="educationList" border style="width: 100%;margin-top:10px;" size="small"> <el-table :data="educationList" border style="width: 100%;margin-top:10px;" size="small">
<el-table-column type="index" label="No." width="45" /> <template slot="empty">
<el-table-column <span></span>
prop="BeginDateStr" </template>
label="Start" <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="45" />
min-width="55" <el-table-column
show-overflow-tooltip prop="BeginDateStr"
/> :label="$t('resumeInfo:label:BeginDateStr')"
<el-table-column min-width="55"
prop="EndDateStr" show-overflow-tooltip
label="End" />
min-width="55" <el-table-column
show-overflow-tooltip prop="EndDateStr"
/> :label="$t('resumeInfo:label:EndDateStr')"
<el-table-column prop="Degree" label="Degree" min-width="70" show-overflow-tooltip> min-width="55"
<template slot-scope="scope"> show-overflow-tooltip
<span v-show="scope.row.Degree"> />
{{ isEnglish?scope.row.Degree:scope.row.DegreeCN }} <el-table-column prop="Degree" :label="$t('resumeInfo:label:Degree')" min-width="70" show-overflow-tooltip>
</span> <template slot-scope="scope">
</template> <span v-show="scope.row.Degree">
</el-table-column> {{ isEnglish?scope.row.Degree:scope.row.DegreeCN }}
<el-table-column prop="Major" label="Major" min-width="130" show-overflow-tooltip> </span>
<template slot-scope="scope"> </template>
<span v-show="scope.row.Major"> </el-table-column>
{{ isEnglish?scope.row.Major:scope.row.MajorCN }} <el-table-column prop="Major" :label="$t('resumeInfo:label:Major')" min-width="130" show-overflow-tooltip>
</span> <template slot-scope="scope">
</template> <span v-show="scope.row.Major">
</el-table-column> {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
<el-table-column </span>
prop="Organization" </template>
label="Institution" </el-table-column>
min-width="150" <el-table-column
show-overflow-tooltip prop="Organization"
> :label="$t('resumeInfo:label:Institution')"
<template slot-scope="scope"> min-width="150"
<span v-show="scope.row.Organization"> show-overflow-tooltip
{{ isEnglish?scope.row.Organization:scope.row.OrganizationCN }} >
</span> <template slot-scope="scope">
</template> <span v-show="scope.row.Organization">
</el-table-column> {{ isEnglish?scope.row.Organization:scope.row.OrganizationCN }}
<el-table-column prop="City" label="City" min-width="70" show-overflow-tooltip> </span>
<template slot-scope="scope"> </template>
<span v-show="scope.row.City"> </el-table-column>
{{ isEnglish?scope.row.City:scope.row.CityCN }} <el-table-column prop="City" :label="$t('resumeInfo:label:City')" min-width="70" show-overflow-tooltip>
</span> <template slot-scope="scope">
</template> <span v-show="scope.row.City">
</el-table-column> {{ isEnglish?scope.row.City:scope.row.CityCN }}
<el-table-column </span>
prop="Province" </template>
label="State/Province" </el-table-column>
min-width="80" <el-table-column
show-overflow-tooltip prop="Province"
> :label="$t('resumeInfo:label:Province')"
<template slot-scope="scope"> min-width="80"
<span v-show="scope.row.Province"> show-overflow-tooltip
{{ isEnglish?scope.row.Province:scope.row.ProvinceCN }} >
</span> <template slot-scope="scope">
</template> <span v-show="scope.row.Province">
</el-table-column> {{ isEnglish?scope.row.Province:scope.row.ProvinceCN }}
<el-table-column prop="Country" label="Country" min-width="70" show-overflow-tooltip> </span>
<template slot-scope="scope"> </template>
<span v-show="scope.row.Country"> </el-table-column>
{{ isEnglish?scope.row.Country:scope.row.CountryCN }} <el-table-column prop="Country" :label="$t('resumeInfo:label:Country')" min-width="70" show-overflow-tooltip>
</span> <template slot-scope="scope">
</template> <span v-show="scope.row.Country">
</el-table-column> {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
</el-table> </span>
</template>
<div class="title">Postgraduate Training (in chronological order)</div> </el-table-column>
<el-table :data="postgraduateList" border style="width: 100%" size="small"> </el-table>
<el-table-column type="index" label="No." width="45" />
<el-table-column <div class="title">{{$t('resumeInfo:label:PostgraduateTraining')}}</div>
prop="BeginDateStr" <el-table :data="postgraduateList" border style="width: 100%" size="small">
label="Start" <template slot="empty">
min-width="55" <span></span>
show-overflow-tooltip </template>
/> <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="45" />
<el-table-column <el-table-column
prop="EndDateStr" prop="BeginDateStr"
label="End" :label="$t('resumeInfo:label:BeginDateStr')"
min-width="55" min-width="55"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column prop="Training" label="Training" min-width="70" show-overflow-tooltip> <el-table-column
<template slot-scope="scope"> prop="EndDateStr"
<span v-show="scope.row.Training"> :label="$t('resumeInfo:label:EndDateStr')"
{{ isEnglish?scope.row.Training:scope.row.TrainingCN }} min-width="55"
</span> show-overflow-tooltip
</template> />
</el-table-column> <el-table-column prop="Training" :label="$t('resumeInfo:label:Training')" min-width="70" show-overflow-tooltip>
<el-table-column <template slot-scope="scope">
prop="Major" <span v-show="scope.row.Training">
label="Specialty / Research Field" {{ isEnglish?scope.row.Training:scope.row.TrainingCN }}
min-width="140" </span>
show-overflow-tooltip </template>
> </el-table-column>
<template slot-scope="scope"> <el-table-column
<span v-show="scope.row.Major"> prop="Major"
{{ isEnglish?scope.row.Major:scope.row.MajorCN }} :label="$t('resumeInfo:label:Specialty')"
</span> min-width="140"
</template> show-overflow-tooltip
</el-table-column> >
<template slot-scope="scope">
<el-table-column prop="Hospital" label="Hospital" min-width="110" show-overflow-tooltip> <span v-show="scope.row.Major">
<template slot-scope="scope"> {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
<span v-show="scope.row.Hospital"> </span>
{{ isEnglish?scope.row.Hospital:scope.row.HospitalCN }} </template>
</span> </el-table-column>
</template>
</el-table-column> <el-table-column prop="Hospital" :label="$t('resumeInfo:label:Hospital')" min-width="110" show-overflow-tooltip>
<el-table-column prop="School" label="University" min-width="120" show-overflow-tooltip> <template slot-scope="scope">
<template slot-scope="scope"> <span v-show="scope.row.Hospital">
<span v-show="scope.row.School"> {{ isEnglish?scope.row.Hospital:scope.row.HospitalCN }}
{{ isEnglish?scope.row.School:scope.row.SchoolCN }} </span>
</span> </template>
</template> </el-table-column>
</el-table-column> <el-table-column prop="School" :label="$t('resumeInfo:label:University')" min-width="120" show-overflow-tooltip>
<el-table-column prop="City" label="City" min-width="70" show-overflow-tooltip> <template slot-scope="scope">
<template slot-scope="scope"> <span v-show="scope.row.School">
<span v-show="scope.row.City"> {{ isEnglish?scope.row.School:scope.row.SchoolCN }}
{{ isEnglish?scope.row.City:scope.row.CityCN }} </span>
</span> </template>
</template> </el-table-column>
</el-table-column> <el-table-column prop="City" :label="$t('resumeInfo:label:City')" min-width="70" show-overflow-tooltip>
<el-table-column <template slot-scope="scope">
prop="Province" <span v-show="scope.row.City">
label="State/Province" {{ isEnglish?scope.row.City:scope.row.CityCN }}
min-width="90" </span>
show-overflow-tooltip </template>
> </el-table-column>
<template slot-scope="scope"> <el-table-column
<span v-show="scope.row.Province"> prop="Province"
{{ isEnglish?scope.row.Province:scope.row.ProvinceCN }} :label="$t('resumeInfo:label:StateProvince')"
</span> min-width="90"
</template> show-overflow-tooltip
</el-table-column> >
<el-table-column prop="Country" label="Country" min-width="70" show-overflow-tooltip> <template slot-scope="scope">
<template slot-scope="scope"> <span v-show="scope.row.Province">
<span v-show="scope.row.Country"> {{ isEnglish?scope.row.Province:scope.row.ProvinceCN }}
{{ isEnglish?scope.row.Country:scope.row.CountryCN }} </span>
</span> </template>
</template> </el-table-column>
</el-table-column> <el-table-column prop="Country" :label="$t('resumeInfo:label:Country')" min-width="70" show-overflow-tooltip>
</el-table> <template slot-scope="scope">
</div> <span v-show="scope.row.Country">
</template> {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
<script> </span>
export default { </template>
props: { </el-table-column>
educationList: { </el-table>
type: Array, </div>
default() { </template>
return [] <script>
} export default {
}, props: {
postgraduateList: { educationList: {
type: Array, type: Array,
default() { default() {
return [] return []
} }
}, },
isEnglish: { postgraduateList: {
type: Boolean type: Array,
} default() {
}, return []
methods: { }
} },
} isEnglish: {
</script> type: Boolean
}
<style lang="scss"> },
.education-info{ methods: {
padding:5px 15px; }
font-size:13px; }
.title{ </script>
height: 30px;
line-height: 30px; <style lang="scss">
background-color: #9c9fa6; .education-info{
font-size: 14px; padding:5px 15px;
padding-left: 10px; font-size:13px;
color: #fff; .title{
margin: 10px 0; height: 30px;
} line-height: 30px;
} background-color: #9c9fa6;
</style> font-size: 14px;
padding-left: 10px;
color: #fff;
margin: 10px 0;
}
}
</style>

View File

@ -3,25 +3,25 @@
<el-form :inline="true" :model="employment" class="demo-form-inline" size="small"> <el-form :inline="true" :model="employment" class="demo-form-inline" size="small">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Department:"> <el-form-item :label="$t('resumeInfo:label:Department')">
<span v-if="isEnglish">{{ employment.Department }}</span> <span v-if="isEnglish">{{ employment.Department }}</span>
<span v-else>{{ employment.DepartmentCN }}</span> <span v-else>{{ employment.DepartmentCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Rank:"> <el-form-item :label="$t('resumeInfo:label:Rank')">
<span v-if="isEnglish">{{ employment.Rank }}</span> <span v-if="isEnglish">{{ employment.Rank }}</span>
<span v-else>{{ employment.RankCN }}</span> <span v-else>{{ employment.RankCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Physician:"> <el-form-item :label="$t('resumeInfo:label:Physician')">
<span v-if="isEnglish">{{ employment.Physician }}</span> <span v-if="isEnglish">{{ employment.Physician }}</span>
<span v-else>{{ employment.PhysicianCN }}</span> <span v-else>{{ employment.PhysicianCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Position:"> <el-form-item :label="$t('resumeInfo:label:Position')">
<span v-if="isEnglish">{{ employment.Position }}</span> <span v-if="isEnglish">{{ employment.Position }}</span>
<span v-else>{{ employment.PositionCN }}</span> <span v-else>{{ employment.PositionCN }}</span>
</el-form-item> </el-form-item>
@ -30,31 +30,31 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Hospital:"> <el-form-item :label="$t('resumeInfo:label:Hospital')">
<span v-if="isEnglish">{{ employment.HospitalName }}</span> <span v-if="isEnglish">{{ employment.HospitalName }}</span>
<span v-else>{{ employment.HospitalNameCN }}</span> <span v-else>{{ employment.HospitalNameCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Affiliated University:"> <el-form-item :label="$t('resumeInfo:label:Affiliated')">
<span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span> <span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span>
<span v-else>{{ employment.UniversityAffiliatedCN }}</span> <span v-else>{{ employment.UniversityAffiliatedCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="City:"> <el-form-item :label="$t('resumeInfo:label:City')">
<span v-if="isEnglish">{{ employment.City }}</span> <span v-if="isEnglish">{{ employment.City }}</span>
<span v-else>{{ employment.CityCN }}</span> <span v-else>{{ employment.CityCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="State/Province:"> <el-form-item :label="$t('resumeInfo:label:StateProvince')">
<span v-if="isEnglish">{{ employment.Province }}</span> <span v-if="isEnglish">{{ employment.Province }}</span>
<span v-else>{{ employment.ProvinceCN }}</span> <span v-else>{{ employment.ProvinceCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Country:"> <el-form-item :label="$t('resumeInfo:label:Country:')">
<span v-if="isEnglish">{{ employment.Country }}</span> <span v-if="isEnglish">{{ employment.Country }}</span>
<span v-else>{{ employment.CountryCN }}</span> <span v-else>{{ employment.CountryCN }}</span>
</el-form-item> </el-form-item>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="research-info"> <div class="research-info">
<el-form :model="researchInfo" class="demo-form-inline" size="small"> <el-form :model="researchInfo" class="demo-form-inline" size="small">
<el-form-item label="Field of Research:"> <el-form-item :label="$t('resumeInfo:label:FieldofResearch')" prop="FieldofResearch">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="researchInfo.Research" v-model="researchInfo.Research"
@ -18,7 +18,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="Grants:"> <el-form-item :label="$t('resumeInfo:label:Grants')" prop="Grants">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="researchInfo.Grants" v-model="researchInfo.Grants"
@ -35,7 +35,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="Publications:"> <el-form-item :label="$t('resumeInfo:label:Publications')" prop="BlindPublications">
<el-input <el-input
v-model="auditView.BlindPublications" v-model="auditView.BlindPublications"
type="textarea" type="textarea"
@ -44,7 +44,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="Awards & Honors:"> <el-form-item :label="$t('resumeInfo:label:Awards&Honors')" prop="AwardsHonors">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="researchInfo.AwardsHonors" v-model="researchInfo.AwardsHonors"

View File

@ -1,98 +1,101 @@
<template> <template>
<div class="resume-info"> <div class="resume-info">
<el-table :data="list" style="margin-top:10px;" size="small"> <el-table :data="list" style="margin-top:10px;" size="small">
<el-table-column type="index" label="No." width="50" /> <template slot="empty">
<span></span>
<el-table-column </template>
prop="FileName" <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="50" />
label="File Name" <el-table-column
min-width="60" prop="FileName"
show-overflow-tooltip :label="$t('resumeInfo:label:FileName')"
/> min-width="60"
<el-table-column show-overflow-tooltip
prop="Isoffical" />
label="Offical" <el-table-column
min-width="50" prop="Isoffical"
:formatter="officalFormatter" :label="$t('resumeInfo:label:Isoffical')"
show-overflow-tooltip min-width="50"
/> :formatter="officalFormatter"
<el-table-column show-overflow-tooltip
prop="Language" />
label="Language" <el-table-column
min-width="50" prop="Language"
show-overflow-tooltip :label="$t('resumeInfo:label:Language')"
> min-width="50"
<template slot-scope="scope"> show-overflow-tooltip
{{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'' }} >
</template> <template slot-scope="scope">
</el-table-column> {{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'' }}
<el-table-column </template>
prop="CreateTime" </el-table-column>
label="Upload Time" <el-table-column
min-width="60" prop="CreateTime"
show-overflow-tooltip :label="$t('resumeInfo:label:CreateTime')"
/> min-width="60"
<el-table-column label="Action" min-width="150"> show-overflow-tooltip
<template slot-scope="scope"> />
<el-button type="text" size="small" @click="preview(scope.$index, scope.row)">Download</el-button> <el-table-column :label="$t('common:action:action')" min-width="150">
</template> <template slot-scope="scope">
</el-table-column> <el-button type="text" size="small" @click="preview(scope.$index, scope.row)">{{ $t('common:button:download') }}</el-button>
</el-table> </template>
</div> </el-table-column>
</template> </el-table>
<script> </div>
export default { </template>
props: { <script>
resumeList: { export default {
type: Array, props: {
default() { resumeList: {
return [] type: Array,
} default() {
} return []
}, }
data() { }
return { },
list: [] data() {
} return {
}, list: []
created() { }
this.list = this.filterResume(this.resumeList) },
}, created() {
methods: { this.list = this.filterResume(this.resumeList)
filterResume(arr) { },
var list = [] methods: {
if (arr.length > 0) { filterResume(arr) {
arr.forEach(item => { var list = []
if (item.Type === 'Resume') { if (arr.length > 0) {
list.push(item) arr.forEach(item => {
} if (item.Type === 'Resume') {
}) list.push(item)
} }
return list })
}, }
preview(index, row) { return list
const filePath = row.FullPath },
if (filePath) { preview(index, row) {
window.open(filePath, '_blank') const filePath = row.FullPath
} if (filePath) {
}, console.log(this.OSSclientConfig.basePath + filePath)
timeFormatter(row) { window.open(this.OSSclientConfig.basePath + filePath, '_blank')
return new Date(row.CreateTime).format('yyyy-MM-dd hh:mm:ss') }
}, },
officalFormatter(row, column) { timeFormatter(row) {
if (row.IsOfficial) { return new Date(row.CreateTime).format('yyyy-MM-dd hh:mm:ss')
return 'Yes' },
} else { officalFormatter(row, column) {
return 'No' if (row.IsOfficial) {
} return 'Yes'
} } else {
} return 'No'
} }
</script> }
}
<style lang="scss"> }
.resume-info{ </script>
padding:5px 15px;
font-size:13px; <style lang="scss">
} .resume-info{
</style> padding:5px 15px;
font-size:13px;
}
</style>

View File

@ -1,58 +1,58 @@
<template> <template>
<div class="specialty-info"> <div class="specialty-info">
<el-form :model="specialty" class="demo-form-inline" size="small"> <el-form :model="specialty" class="demo-form-inline" size="small">
<el-form-item label="Specialty:"> <el-form-item :label="$t('resumeInfo:label:Speciality')">
<span v-if="isEnglish">{{ specialty.Speciality }}</span> <span v-if="isEnglish">{{ specialty.Speciality }}</span>
<span v-else>{{ specialty.SpecialityCN }}</span> <span v-else>{{ specialty.SpecialityCN }}</span>
</el-form-item> </el-form-item>
<el-form-item label="Subspeciality:"> <el-form-item :label="$t('resumeInfo:label:Subspeciality')">
<span v-if="isEnglish">{{ specialty.Subspeciality }}</span> <span v-if="isEnglish">{{ specialty.Subspeciality }}</span>
<span v-else>{{ specialty.SubspecialityCNList }}</span> <span v-else>{{ specialty.SubspecialityCNList }}</span>
</el-form-item> </el-form-item>
<el-form-item label="Modality:"> <el-form-item :label="$t('resumeInfo:label:ReadingType')">
<span v-if="isEnglish">{{ specialty.ReadingType }}</span> <span v-if="isEnglish">{{ specialty.ReadingType }}</span>
<span v-else>{{ specialty.ReadingTypeCNList }}</span> <span v-else>{{ specialty.ReadingTypeCNList }}</span>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
specialty: { specialty: {
type: Object, type: Object,
default() { default() {
return {} return {}
} }
}, },
isEnglish: { isEnglish: {
type: Boolean type: Boolean
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.specialty-info{ .specialty-info{
padding:5px 15px; padding:5px 15px;
font-size:13px; font-size:13px;
.el-form-item--mini.el-form-item{ .el-form-item--mini.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item--small.el-form-item{ .el-form-item--small.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item__content{ .el-form-item__content{
font-size: 13px; font-size: 13px;
} }
.el-form-item__label{ .el-form-item__label{
font-size: 13px; font-size: 13px;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
} }
} }
</style> </style>

View File

@ -3,7 +3,7 @@
<el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small"> <el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Pending:"> <el-form-item :label="$t('resumeInfo:label:Pending')">
<span v-if="statusList.Submitted" style="color:#428bca"> <span v-if="statusList.Submitted" style="color:#428bca">
<router-link <router-link
:to="{ :to="{
@ -17,7 +17,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Approved:"> <el-form-item :label="$t('resumeInfo:label:Approved')">
<span v-if="statusList.Approved" style="color:#428bca"> <span v-if="statusList.Approved" style="color:#428bca">
<router-link <router-link
:to="{ :to="{
@ -31,7 +31,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Reading:"> <el-form-item :label="$t('resumeInfo:label:Reading')">
<span v-if="statusList.Reading" style="color:#428bca"> <span v-if="statusList.Reading" style="color:#428bca">
<router-link <router-link
:to="{ :to="{
@ -44,19 +44,19 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="On Vacation:"> <el-form-item :label="$t('resumeInfo:label:Vacation')">
<span style="font-size:12px;margin-right:20px;">{{ holiday }}</span> <span style="font-size:12px;margin-right:20px;">{{ holiday }}</span>
<el-button <el-button
type="text" type="text"
size="small" size="small"
@click="initHolidayList" @click="initHolidayList"
>Planned Vacation</el-button> >{{ $t('resumeInfo:label:PlannedVacation') }}</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-dialog <el-dialog
title="Vacation" :title="$t('resumeInfo:label:Vacation')"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="35%" width="35%"
:close-on-click-modal="false" :close-on-click-modal="false"
@ -65,13 +65,13 @@
<el-table-column type="index" /> <el-table-column type="index" />
<el-table-column <el-table-column
property="StartDate" property="StartDate"
label="Beginning Date" :label="$t('resumeInfo:label:BeginningDate')"
min-width="120" min-width="120"
:formatter="beginTimeFormatter" :formatter="beginTimeFormatter"
/> />
<el-table-column <el-table-column
property="EndDate" property="EndDate"
label="End Date" :label="$t('resumeInfo:label:EndDate')"
min-width="120" min-width="120"
:formatter="endTimeFormatter" :formatter="endTimeFormatter"
/> />

View File

@ -1,12 +1,15 @@
<template> <template>
<div class="trialExperience-info"> <div class="trialExperience-info">
<div class="title">Clinical Trial Experience</div> <div class="title">{{$t('resumeInfo:title:ClinicalTrialExperience')}}</div>
<el-table :data="GCPList" border style="width: 100%" size="small"> <el-table :data="GCPList" border style="width: 100%" size="small">
<el-table-column type="index" label="No." width="50" /> <template slot="empty">
<el-table-column prop="Phase" label="Phase" min-width="20" show-overflow-tooltip /> <span></span>
</template>
<el-table-column type="index" :label="$t('resumeInfo:label:No')" width="50" />
<el-table-column prop="Phase" :label="$t('resumeInfo:label:Phase')" min-width="20" show-overflow-tooltip />
<el-table-column <el-table-column
prop="EvaluationCriteriaList" prop="EvaluationCriteriaList"
label="Review Criteria" :label="$t('resumeInfo:label:ReviewCriteria')"
min-width="40" min-width="40"
show-overflow-tooltip show-overflow-tooltip
> >
@ -16,24 +19,30 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="VisitReadingCount" prop="VisitReadingCount"
label="Visit Reading Count" :label="$t('resumeInfo:label:VisitReadingCount')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="EvaluationContent" prop="EvaluationContent"
label="Indication" :label="$t('resumeInfo:label:EvaluationContent')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
/> />
</el-table> </el-table>
<el-form :model="form" class="demo-form-inline" size="small"> <el-form :model="form" class="demo-form-inline" size="small">
<el-form-item label="GCP Certificate:"> <el-form-item :label="$t('resumeInfo:label:GCPCertificate')">
<span>{{ GCP }}</span> <span>{{ GCP }}</span>
<a
v-if="form.GCP"
href="#"
class="view"
@click.prevent="previewGCP()"
>View</a>
</el-form-item> </el-form-item>
<el-form-item label="Other Relevant Experience:"> <el-form-item :label="$t('resumeInfo:label:OtherRelevantExperience')">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="form.OtherClinicalExperience" v-model="form.OtherClinicalExperience"

View File

@ -16,36 +16,24 @@
<div style="flex:1;margin-top:50px;overflow-y: auto;"> <div style="flex:1;margin-top:50px;overflow-y: auto;">
<el-collapse v-model="activeNames"> <el-collapse v-model="activeNames">
<el-collapse-item title="Basic Info" name="1"> <el-collapse-item :title="$t('resumeInfo:title:BasicInfo')" name="1">
<basic-info :basic-info="doctorInfo.BasicInfoView" :is-english="isEnglish" /> <basic-info :basic-info="doctorInfo.BasicInfoView" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Employment" name="2"> <el-collapse-item :title="$t('resumeInfo:title:Employment')" name="2">
<Employment :employment="workInfo" :is-english="isEnglish" /> <Employment :employment="workInfo" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Specialty" name="3"> <el-collapse-item :title="$t('resumeInfo:title:Specialty')" name="3">
<Specialty :specialty="specialtyList" :is-english="isEnglish" /> <Specialty :specialty="specialtyList" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Education & Training" name="4"> <el-collapse-item :title="$t('resumeInfo:title:Education&Training')" name="4">
<education-training :education-list="doctorInfo.EducationList" :postgraduate-list="doctorInfo.PostgraduateList" :is-english="isEnglish" /> <education-training :education-list="doctorInfo.EducationList" :postgraduate-list="doctorInfo.PostgraduateList" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Research & Publication" name="5"> <el-collapse-item :title="$t('resumeInfo:title:Research&Publication')" name="5">
<research-publication :research-info="doctorInfo.ResearchPublicationView" :audit-view="doctorInfo.AuditView" :is-english="isEnglish" /> <research-publication :research-info="doctorInfo.ResearchPublicationView" :audit-view="doctorInfo.AuditView" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Trial Experience" name="6"> <el-collapse-item :title="$t('resumeInfo:title:TrialExperience')" name="6">
<trial-experience v-if="doctorInfo.TrialExperienceView" :trial-experience="doctorInfo.TrialExperienceView" :is-english="isEnglish" /> <trial-experience v-if="doctorInfo.TrialExperienceView" :trial-experience="doctorInfo.TrialExperienceView" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<!-- <el-collapse-item title="Credentials" name="7">-->
<!-- <Credentials v-if="doctorInfo.AttachmentList" :attachment-list="doctorInfo.AttachmentList" :doctor-id="doctorId" />-->
<!-- </el-collapse-item>-->
<!-- <el-collapse-item title="Resume" name="8">-->
<!-- <Resume v-if="doctorInfo.AttachmentList" :resume-list="doctorInfo.AttachmentList" />-->
<!-- </el-collapse-item>-->
<!-- <el-collapse-item title="Agreements" name="9">-->
<!-- <Agreements v-if="doctorInfo.AttachmentList" :doctor-info="doctorInfo" />-->
<!-- </el-collapse-item>-->
<!-- <el-collapse-item title="Comment" name="10">-->
<!-- <Comment :status-list="statusList" />-->
<!-- </el-collapse-item>-->
</el-collapse> </el-collapse>
</div> </div>
</div> </div>
@ -63,6 +51,7 @@ import Credentials from './components/Credentials'
import Resume from './components/Resume' import Resume from './components/Resume'
import Agreements from './components/Agreements' import Agreements from './components/Agreements'
import Comment from './components/Comment' import Comment from './components/Comment'
import {mapMutations} from "vuex";
export default { export default {
components: { StatusInfo, BasicInfo, Employment, Specialty, EducationTraining, ResearchPublication, TrialExperience, Credentials, Resume, Agreements, Comment }, components: { StatusInfo, BasicInfo, Employment, Specialty, EducationTraining, ResearchPublication, TrialExperience, Credentials, Resume, Agreements, Comment },
data() { data() {
@ -90,13 +79,26 @@ export default {
doctorId: '' doctorId: ''
} }
}, },
watch: {
isEnglish(v) {
if (v === true) {
this.$i18n.locale = 'en'
this.setLanguage('en')
this.$updateDictionary()
} else {
this.$i18n.locale = 'zh'
this.setLanguage('zh')
this.$updateDictionary()
}
}
},
mounted() { mounted() {
this.isEnglish = !!((this.$route.query.isEnglish === true || this.$route.query.isEnglish === 'true')) this.isEnglish = !!((this.$route.query.isEnglish === true || this.$route.query.isEnglish === 'true'))
this.doctorId = this.$route.query.doctorId this.doctorId = this.$route.query.doctorId
this.initForm() this.initForm()
}, },
methods: { methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
initStatus() { initStatus() {
if (this.doctorInfo.AuditView) { if (this.doctorInfo.AuditView) {
const res = this.doctorInfo.AuditView const res = this.doctorInfo.AuditView

View File

@ -13,9 +13,14 @@
<el-input v-model="form.SiteCode" disabled /> <el-input v-model="form.SiteCode" disabled />
</el-form-item> </el-form-item>
<el-form-item label="Site Name: " prop="SiteName"> <!-- 中心名称 -->
<el-form-item :label="$t('trials:customSite:form:siteName')" prop="SiteName">
<el-input v-model="form.SiteName" /> <el-input v-model="form.SiteName" />
</el-form-item> </el-form-item>
<!-- 中心名称CN -->
<el-form-item :label="$t('trials:customSite:form:siteName') + 'CN'" v-if="!show" prop="SiteNameCN">
<el-input v-model="form.SiteNameCN" />
</el-form-item>
<el-form-item label="Alias Name: "> <el-form-item label="Alias Name: ">
<el-input v-model="form.AliasName" /> <el-input v-model="form.AliasName" />
@ -113,6 +118,10 @@ export default {
{ required: true, message: 'Please specify', trigger: 'blur' }, { required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' } { max: 50, message: 'The maximum length is 50' }
], ],
SiteNameCN: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }
],
SiteCode: [ SiteCode: [
{ required: true, message: 'Please specify', trigger: 'blur' }, { required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' } { max: 50, message: 'The maximum length is 50' }
@ -144,11 +153,13 @@ export default {
{ max: 50, message: 'The maximum length is 50' } { max: 50, message: 'The maximum length is 50' }
] ]
}, },
loading: false loading: false,
show: false
} }
}, },
mounted() { mounted() {
this.initForm() this.initForm()
this.show = process.env.VUE_APP_OSS_PATH === '/usa/dist'
}, },
methods: { methods: {
handleSave() { handleSave() {

View File

@ -75,7 +75,7 @@ export default {
}, },
downLoadFile(filePath) { downLoadFile(filePath) {
if (!filePath) return if (!filePath) return
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
}, },
preview(file) { preview(file) {
this.$set(this.fileInfo, 'currentId', file.Id) this.$set(this.fileInfo, 'currentId', file.Id)

View File

@ -1,100 +1,100 @@
<template> <template>
<div v-loading="loading" class="preview-wrapper"> <div v-loading="loading" class="preview-wrapper">
<el-tabs tab-position="right" type="card"> <el-tabs tab-position="right" type="card">
<el-tab-pane v-for="file in fileList" :key="file.Id" :label="file.FileName"> <el-tab-pane v-for="file in fileList" :key="file.Id" :label="file.FileName">
<iframe <iframe
v-if="file.Type.indexOf('jpg') !== -1 || file.Type.indexOf('png') !== -1" v-if="file.Type.indexOf('jpg') !== -1 || file.Type.indexOf('png') !== -1"
frameborder="0" frameborder="0"
:src="file.FullFilePath" :src="file.FullFilePath"
width="100%" width="100%"
height="100%" height="100%"
/> />
<!-- <embed v-else-if="file.Type.indexOf('pdf') !== -1" :src="file.FullFilePath" style="width: 100%; height: 100%"> --> <!-- <embed v-else-if="file.Type.indexOf('pdf') !== -1" :src="file.FullFilePath" style="width: 100%; height: 100%"> -->
<!-- <iframe v-else-if="file.Type.indexOf('pdf') !== -1" :src="file.FullFilePath+'#toolbar=0'" width="100%" height="100%" frameborder="0" /> --> <!-- <iframe v-else-if="file.Type.indexOf('pdf') !== -1" :src="file.FullFilePath+'#toolbar=0'" width="100%" height="100%" frameborder="0" /> -->
<iframe v-else-if="file.Type.indexOf('pdf') !== -1" :src="`/static/pdfjs/web/viewer.html?file=${file.FullFilePath}`" width="100%" height="100%" frameborder="0" /> <iframe v-else-if="file.Type.indexOf('pdf') !== -1" :src="`/static/pdfjs/web/viewer.html?file=${file.FullFilePath}`" width="100%" height="100%" frameborder="0" />
<div v-else> <div v-else>
{{ $t('common:message:downloadFile') }} {{ $t('common:message:downloadFile') }}
<el-link type="primary" @click="downLoadFile(file.FullFilePath)">{{ $t('common:button:download') }}</el-link> <el-link type="primary" @click="downLoadFile(file.FullFilePath)">{{ $t('common:button:download') }}</el-link>
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
<script> <script>
import { getNoneDicomStudyFileList } from '@/api/trials' import { getNoneDicomStudyFileList } from '@/api/trials'
import store from '@/store' import store from '@/store'
import { changeURLStatic } from '@/utils/history.js' import { changeURLStatic } from '@/utils/history.js'
export default { export default {
name: 'SingleNoneDicom', name: 'SingleNoneDicom',
data() { data() {
return { return {
fileType: '', fileType: '',
fileUrl: '', fileUrl: '',
loading: false, loading: false,
fileList: [], fileList: [],
noneDicomId: '' noneDicomId: ''
} }
}, },
mounted() { mounted() {
if (this.$router.currentRoute.query.TokenKey) { if (this.$router.currentRoute.query.TokenKey) {
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey) store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
changeURLStatic('TokenKey', '') changeURLStatic('TokenKey', '')
} }
this.noneDicomId = this.$router.currentRoute.query.Id this.noneDicomId = this.$router.currentRoute.query.Id
this.getFileList() this.getFileList()
}, },
methods: { methods: {
getFileList() { getFileList() {
this.loading = true this.loading = true
getNoneDicomStudyFileList(this.noneDicomId).then(res => { getNoneDicomStudyFileList(this.noneDicomId).then(res => {
this.fileList = res.Result this.fileList = res.Result
this.fileList.forEach(file => { this.fileList.forEach(file => {
const fileName = file.FileName const fileName = file.FileName
file.Type = fileName.substring(fileName.lastIndexOf('.') + 1).toLocaleLowerCase() file.Type = fileName.substring(fileName.lastIndexOf('.') + 1).toLocaleLowerCase()
}) })
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },
downLoadFile(filePath) { downLoadFile(filePath) {
if (!filePath) return if (!filePath) return
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.preview-wrapper{ .preview-wrapper{
height: 100%; height: 100%;
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 7px; width: 7px;
height: 7px; height: 7px;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
border-radius: 10px; border-radius: 10px;
background: #d0d0d0; background: #d0d0d0;
} }
.el-tabs{ .el-tabs{
display: flex; display: flex;
flex-direction: row !important; flex-direction: row !important;
width: 100%; width: 100%;
height: 100%; height: 100%;
.el-tabs__header{ .el-tabs__header{
margin-right: 10px !important; margin-right: 10px !important;
height: 100% !important; height: 100% !important;
width: 300px; width: 300px;
border: 2px solid #E4E7ED; border: 2px solid #E4E7ED;
overflow: auto; overflow: auto;
} }
.el-tabs__content{ .el-tabs__content{
flex: 1; flex: 1;
height: 100%; height: 100%;
.el-tab-pane{ .el-tab-pane{
height: 100%; height: 100%;
} }
} }
} }
} }
</style> </style>

View File

@ -14,21 +14,21 @@
<el-table-column <el-table-column
prop="TrialCode" prop="TrialCode"
label="Trial ID" :label="$t('resumeInfo:label:TrialCode')"
min-width="50" min-width="50"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column prop="Type" label="File Type" min-width="80" show-overflow-tooltip /> <el-table-column prop="Type" :label="$t('resumeInfo:label:Type')" min-width="80" show-overflow-tooltip />
<el-table-column <el-table-column
prop="FileName" prop="FileName"
label="File Name" :label="$t('resumeInfo:label:FileName')"
min-width="100" min-width="100"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="CreateTime" prop="CreateTime"
label="Upload Time" :label="$t('resumeInfo:label:CreateTime')"
min-width="60" min-width="60"
show-overflow-tooltip show-overflow-tooltip
/> />
@ -39,7 +39,7 @@
size="small" size="small"
type="text" type="text"
@click="preview(scope.$index, scope.row)" @click="preview(scope.$index, scope.row)"
>View</el-button> >{{$t('resumeInfo:button:view')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -124,7 +124,7 @@ export default {
preview(index, row) { preview(index, row) {
const filePath = row.FullPath const filePath = row.FullPath
if (filePath) { if (filePath) {
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
}, },
timeFormatter(row) { timeFormatter(row) {

View File

@ -1,101 +1,101 @@
<template> <template>
<div class="basic-info"> <div class="basic-info">
<el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small"> <el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Surname:"> <el-form-item :label="$t('resumeInfo:label:Surname')">
<span>{{ basicInfo.LastName }}</span> <span>{{ basicInfo.LastName }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Given Name:"> <el-form-item :label="$t('resumeInfo:label:FirstName')">
<span>{{ basicInfo.FirstName }}</span> <span>{{ basicInfo.FirstName }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Name CN:"> <el-form-item :label="$t('resumeInfo:label:ChineseName')">
<span>{{ basicInfo.ChineseName }}</span> <span>{{ basicInfo.ChineseName }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="ID:"> <el-form-item :label="$t('resumeInfo:label:ReviewerCode')">
<span>{{ basicInfo.ReviewerCode }}</span> <span>{{ basicInfo.ReviewerCode }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Gender:"> <el-form-item :label="$t('resumeInfo:label:Sex')">
<span v-if="isEnglish">{{ basicInfo.Sex === 0?'Male':'Female' }}</span> <span v-if="isEnglish">{{ basicInfo.Sex === 0?'Male':'Female' }}</span>
<span v-else>{{ basicInfo.Sex === 0?'':'' }}</span> <span v-else>{{ basicInfo.Sex === 0?'':'' }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Title:"> <el-form-item :label="$t('resumeInfo:label:Title')">
<span v-if="isEnglish"> <span v-if="isEnglish">
{{ (Array.isArray(basicInfo.Title)&& basicInfo.Title.length > 0) ? basicInfo.TitleList.join(', ') : '' }} {{ (Array.isArray(basicInfo.Title)&& basicInfo.Title.length > 0) ? basicInfo.TitleList.join(', ') : '' }}
</span> </span>
<span v-else> <span v-else>
{{ (Array.isArray(basicInfo.TitleCNList)&& basicInfo.TitleCNList.length > 0) ? basicInfo.TitleCNList.join(', ') : '' }} {{ (Array.isArray(basicInfo.TitleCNList)&& basicInfo.TitleCNList.length > 0) ? basicInfo.TitleCNList.join(', ') : '' }}
</span> </span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Phone:"> <el-form-item :label="$t('resumeInfo:label:Phone')">
<span>{{ basicInfo.Phone }}</span> <span>{{ basicInfo.Phone }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Email:"> <el-form-item :label="$t('resumeInfo:label:Email')">
<span>{{ basicInfo.EMail }}</span> <span>{{ basicInfo.EMail }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="WeChat:"> <el-form-item :label="$t('resumeInfo:label:WeChat')">
<span>{{ basicInfo.WeChat }}</span> <span>{{ basicInfo.WeChat }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
basicInfo: { basicInfo: {
type: Object, type: Object,
default() { default() {
return {} return {}
} }
}, },
isEnglish: { isEnglish: {
type: Boolean type: Boolean
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.basic-info{ .basic-info{
padding:5px 15px; padding:5px 15px;
font-size:13px; font-size:13px;
.el-form-item--mini.el-form-item{ .el-form-item--mini.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item--small.el-form-item{ .el-form-item--small.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item__content{ .el-form-item__content{
font-size: 13px; font-size: 13px;
} }
.el-form-item__label{ .el-form-item__label{
font-size: 13px; font-size: 13px;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
} }
} }
</style> </style>

View File

@ -1,48 +1,48 @@
<template> <template>
<div class="comment-info"> <div class="comment-info">
<el-form :model="statusList" class="demo-form-inline" size="small"> <el-form :model="statusList" class="demo-form-inline" size="small">
<el-form-item label="Comment:"> <el-form-item :label="$t('resumeInfo:label:Comment')">
<el-input <el-input
v-model="statusList.AdminComment" v-model="statusList.AdminComment"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
statusList: { statusList: {
type: Object, type: Object,
default() { default() {
return {} return {}
} }
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.comment-info{ .comment-info{
padding:5px 15px; padding:5px 15px;
font-size:13px; font-size:13px;
.el-form-item--mini.el-form-item{ .el-form-item--mini.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item--small.el-form-item{ .el-form-item--small.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item__content{ .el-form-item__content{
font-size: 13px; font-size: 13px;
} }
.el-form-item__label{ .el-form-item__label{
font-size: 13px; font-size: 13px;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
} }
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="education-info"> <div class="education-info">
<div class="btn-wrapper"> <div class="btn-wrapper">
<el-button style="margin-left:auto" size="small" :disabled="checkID.length==0" @click="downloadAttachement">Download</el-button> <el-button style="margin-left:auto" size="small" :disabled="checkID.length==0" @click="downloadAttachement">{{$t('resumeInfo:button:Download')}}</el-button>
</div> </div>
<el-table <el-table
:data="tblList" :data="tblList"
@ -13,23 +13,23 @@
<span></span> <span></span>
</template> </template>
<el-table-column type="selection" align="left" width="50" /> <el-table-column type="selection" align="left" width="50" />
<el-table-column type="index" label="No." width="50" /> <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="50" />
<el-table-column prop="Type" label="Type" min-width="50" show-overflow-tooltip /> <el-table-column prop="Type" :label="$t('resumeInfo:label:Type')" min-width="50" show-overflow-tooltip />
<el-table-column <el-table-column
prop="FileName" prop="FileName"
label="File Name" :label="$t('resumeInfo:label:FileName')"
min-width="80" min-width="80"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="CreateTime" prop="CreateTime"
label="Upload Time" :label="$t('resumeInfo:label:CreateTime')"
min-width="50" min-width="50"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="Action" min-width="150"> <el-table-column :label="$t('common:action:action')" min-width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="preview(scope.$index, scope.row)">View</el-button> <el-button type="text" size="small" @click="preview(scope.$index, scope.row)">{{$t('resumeInfo:button:view')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -163,7 +163,7 @@ export default {
preview(index, row) { preview(index, row) {
const filePath = row.FullPath const filePath = row.FullPath
if (filePath) { if (filePath) {
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
}, },
selectMore(val) { selectMore(val) {

View File

@ -1,31 +1,31 @@
<template> <template>
<div class="education-info"> <div class="education-info">
<div class="title">Education (in chronological order)</div> <div class="title">{{ $t('resumeInfo:label:Education') }}</div>
<el-table :data="educationList" border style="width: 100%;margin-top:10px;" size="small"> <el-table :data="educationList" border style="width: 100%;margin-top:10px;" size="small">
<template slot="empty"> <template slot="empty">
<span></span> <span></span>
</template> </template>
<el-table-column type="index" label="No." width="45" /> <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="45" />
<el-table-column <el-table-column
prop="BeginDateStr" prop="BeginDateStr"
label="Start" :label="$t('resumeInfo:label:BeginDateStr')"
min-width="55" min-width="55"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="EndDateStr" prop="EndDateStr"
label="End" :label="$t('resumeInfo:label:EndDateStr')"
min-width="55" min-width="55"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column prop="Degree" label="Degree" min-width="70" show-overflow-tooltip> <el-table-column prop="Degree" :label="$t('resumeInfo:label:Degree')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.Degree"> <span v-show="scope.row.Degree">
{{ isEnglish?scope.row.Degree:scope.row.DegreeCN }} {{ isEnglish?scope.row.Degree:scope.row.DegreeCN }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Major" label="Major" min-width="130" show-overflow-tooltip> <el-table-column prop="Major" :label="$t('resumeInfo:label:Major')" min-width="130" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.Major"> <span v-show="scope.row.Major">
{{ isEnglish?scope.row.Major:scope.row.MajorCN }} {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
@ -34,7 +34,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Organization" prop="Organization"
label="Institution" :label="$t('resumeInfo:label:Institution')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
> >
@ -44,7 +44,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="City" label="City" min-width="70" show-overflow-tooltip> <el-table-column prop="City" :label="$t('resumeInfo:label:City')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.City"> <span v-show="scope.row.City">
{{ isEnglish?scope.row.City:scope.row.CityCN }} {{ isEnglish?scope.row.City:scope.row.CityCN }}
@ -53,7 +53,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Province" prop="Province"
label="State/Province" :label="$t('resumeInfo:label:Province')"
min-width="80" min-width="80"
show-overflow-tooltip show-overflow-tooltip
> >
@ -63,7 +63,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Country" label="Country" min-width="70" show-overflow-tooltip> <el-table-column prop="Country" :label="$t('resumeInfo:label:Country')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.Country"> <span v-show="scope.row.Country">
{{ isEnglish?scope.row.Country:scope.row.CountryCN }} {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
@ -72,25 +72,25 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="title">Postgraduate Training (in chronological order)</div> <div class="title">{{$t('resumeInfo:label:PostgraduateTraining')}}</div>
<el-table :data="postgraduateList" border style="width: 100%" size="small"> <el-table :data="postgraduateList" border style="width: 100%" size="small">
<template slot="empty"> <template slot="empty">
<span></span> <span></span>
</template> </template>
<el-table-column type="index" label="No." width="45" /> <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="45" />
<el-table-column <el-table-column
prop="BeginDateStr" prop="BeginDateStr"
label="Start" :label="$t('resumeInfo:label:BeginDateStr')"
min-width="55" min-width="55"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="EndDateStr" prop="EndDateStr"
label="End" :label="$t('resumeInfo:label:EndDateStr')"
min-width="55" min-width="55"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column prop="Training" label="Training" min-width="70" show-overflow-tooltip> <el-table-column prop="Training" :label="$t('resumeInfo:label:Training')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.Training"> <span v-show="scope.row.Training">
{{ isEnglish?scope.row.Training:scope.row.TrainingCN }} {{ isEnglish?scope.row.Training:scope.row.TrainingCN }}
@ -99,7 +99,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Major" prop="Major"
label="Specialty / Research Field" :label="$t('resumeInfo:label:Specialty')"
min-width="140" min-width="140"
show-overflow-tooltip show-overflow-tooltip
> >
@ -110,21 +110,21 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Hospital" label="Hospital" min-width="110" show-overflow-tooltip> <el-table-column prop="Hospital" :label="$t('resumeInfo:label:Hospital')" min-width="110" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.Hospital"> <span v-show="scope.row.Hospital">
{{ isEnglish?scope.row.Hospital:scope.row.HospitalCN }} {{ isEnglish?scope.row.Hospital:scope.row.HospitalCN }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="School" label="University" min-width="120" show-overflow-tooltip> <el-table-column prop="School" :label="$t('resumeInfo:label:University')" min-width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.School"> <span v-show="scope.row.School">
{{ isEnglish?scope.row.School:scope.row.SchoolCN }} {{ isEnglish?scope.row.School:scope.row.SchoolCN }}
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="City" label="City" min-width="70" show-overflow-tooltip> <el-table-column prop="City" :label="$t('resumeInfo:label:City')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.City"> <span v-show="scope.row.City">
{{ isEnglish?scope.row.City:scope.row.CityCN }} {{ isEnglish?scope.row.City:scope.row.CityCN }}
@ -133,7 +133,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Province" prop="Province"
label="State/Province" :label="$t('resumeInfo:label:StateProvince')"
min-width="90" min-width="90"
show-overflow-tooltip show-overflow-tooltip
> >
@ -143,7 +143,7 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Country" label="Country" min-width="70" show-overflow-tooltip> <el-table-column prop="Country" :label="$t('resumeInfo:label:Country')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-show="scope.row.Country"> <span v-show="scope.row.Country">
{{ isEnglish?scope.row.Country:scope.row.CountryCN }} {{ isEnglish?scope.row.Country:scope.row.CountryCN }}

View File

@ -3,25 +3,25 @@
<el-form :inline="true" :model="employment" class="demo-form-inline" size="small"> <el-form :inline="true" :model="employment" class="demo-form-inline" size="small">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Department:"> <el-form-item :label="$t('resumeInfo:label:Department')">
<span v-if="isEnglish">{{ employment.Department }}</span> <span v-if="isEnglish">{{ employment.Department }}</span>
<span v-else>{{ employment.DepartmentCN }}</span> <span v-else>{{ employment.DepartmentCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Rank:"> <el-form-item :label="$t('resumeInfo:label:Rank')">
<span v-if="isEnglish">{{ employment.Rank }}</span> <span v-if="isEnglish">{{ employment.Rank }}</span>
<span v-else>{{ employment.RankCN }}</span> <span v-else>{{ employment.RankCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Physician:"> <el-form-item :label="$t('resumeInfo:label:Physician')">
<span v-if="isEnglish">{{ employment.Physician }}</span> <span v-if="isEnglish">{{ employment.Physician }}</span>
<span v-else>{{ employment.PhysicianCN }}</span> <span v-else>{{ employment.PhysicianCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Position:"> <el-form-item :label="$t('resumeInfo:label:Position')">
<span v-if="isEnglish">{{ employment.Position }}</span> <span v-if="isEnglish">{{ employment.Position }}</span>
<span v-else>{{ employment.PositionCN }}</span> <span v-else>{{ employment.PositionCN }}</span>
</el-form-item> </el-form-item>
@ -30,31 +30,31 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Hospital:"> <el-form-item :label="$t('resumeInfo:label:Hospital')">
<span v-if="isEnglish">{{ employment.HospitalName }}</span> <span v-if="isEnglish">{{ employment.HospitalName }}</span>
<span v-else>{{ employment.HospitalNameCN }}</span> <span v-else>{{ employment.HospitalNameCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Affiliated University:"> <el-form-item :label="$t('resumeInfo:label:Affiliated')">
<span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span> <span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span>
<span v-else>{{ employment.UniversityAffiliatedCN }}</span> <span v-else>{{ employment.UniversityAffiliatedCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="City:"> <el-form-item :label="$t('resumeInfo:label:City')">
<span v-if="isEnglish">{{ employment.City }}</span> <span v-if="isEnglish">{{ employment.City }}</span>
<span v-else>{{ employment.CityCN }}</span> <span v-else>{{ employment.CityCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="State/Province:"> <el-form-item :label="$t('resumeInfo:label:StateProvince')">
<span v-if="isEnglish">{{ employment.Province }}</span> <span v-if="isEnglish">{{ employment.Province }}</span>
<span v-else>{{ employment.ProvinceCN }}</span> <span v-else>{{ employment.ProvinceCN }}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Country:"> <el-form-item :label="$t('resumeInfo:label:Country:')">
<span v-if="isEnglish">{{ employment.Country }}</span> <span v-if="isEnglish">{{ employment.Country }}</span>
<span v-else>{{ employment.CountryCN }}</span> <span v-else>{{ employment.CountryCN }}</span>
</el-form-item> </el-form-item>

View File

@ -1,102 +1,102 @@
<template> <template>
<div class="research-info"> <div class="research-info">
<el-form :model="researchInfo" class="demo-form-inline" size="small"> <el-form :model="researchInfo" class="demo-form-inline" size="small">
<el-form-item label="Field of Research:"> <el-form-item :label="$t('resumeInfo:label:FieldofResearch')" prop="FieldofResearch">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="researchInfo.Research" v-model="researchInfo.Research"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
<el-input <el-input
v-else v-else
v-model="researchInfo.ResearchCN" v-model="researchInfo.ResearchCN"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
</el-form-item> </el-form-item>
<el-form-item label="Grants:"> <el-form-item :label="$t('resumeInfo:label:Grants')" prop="Grants">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="researchInfo.Grants" v-model="researchInfo.Grants"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
<el-input <el-input
v-else v-else
v-model="researchInfo.GrantsCN" v-model="researchInfo.GrantsCN"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
</el-form-item> </el-form-item>
<el-form-item label="Publications:"> <el-form-item :label="$t('resumeInfo:label:Publications')" prop="Publications">
<el-input <el-input
v-model="researchInfo.Publications" v-model="researchInfo.Publications"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
</el-form-item> </el-form-item>
<el-form-item label="Awards & Honors:"> <el-form-item :label="$t('resumeInfo:label:Awards&Honors')" prop="AwardsHonors">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="researchInfo.AwardsHonors" v-model="researchInfo.AwardsHonors"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
<el-input <el-input
v-else v-else
v-model="researchInfo.AwardsHonorsCN" v-model="researchInfo.AwardsHonorsCN"
type="textarea" type="textarea"
autosize autosize
readonly readonly
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
researchInfo: { researchInfo: {
type: Object, type: Object,
default() { default() {
return {} return {}
} }
}, },
isEnglish: { isEnglish: {
type: Boolean type: Boolean
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.research-info{ .research-info{
padding:5px 15px; padding:5px 15px;
font-size:13px; font-size:13px;
.el-form-item--mini.el-form-item{ .el-form-item--mini.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item--small.el-form-item{ .el-form-item--small.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item__content{ .el-form-item__content{
font-size: 13px; font-size: 13px;
} }
.el-form-item__label{ .el-form-item__label{
font-size: 13px; font-size: 13px;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
} }
} }
</style> </style>

View File

@ -4,23 +4,23 @@
<template slot="empty"> <template slot="empty">
<span></span> <span></span>
</template> </template>
<el-table-column type="index" label="No." width="50" /> <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="50" />
<el-table-column <el-table-column
prop="FileName" prop="FileName"
label="File Name" :label="$t('resumeInfo:label:FileName')"
min-width="60" min-width="60"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="Isoffical" prop="Isoffical"
label="Offical" :label="$t('resumeInfo:label:Isoffical')"
min-width="50" min-width="50"
:formatter="officalFormatter" :formatter="officalFormatter"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="Language" prop="Language"
label="Language" :label="$t('resumeInfo:label:Language')"
min-width="50" min-width="50"
show-overflow-tooltip show-overflow-tooltip
> >
@ -30,13 +30,13 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="CreateTime" prop="CreateTime"
label="Upload Time" :label="$t('resumeInfo:label:CreateTime')"
min-width="60" min-width="60"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="Action" min-width="150"> <el-table-column :label="$t('common:action:action')" min-width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="preview(scope.$index, scope.row)">Download</el-button> <el-button type="text" size="small" @click="preview(scope.$index, scope.row)">{{ $t('common:button:download') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -1,58 +1,58 @@
<template> <template>
<div class="specialty-info"> <div class="specialty-info">
<el-form :model="specialty" class="demo-form-inline" size="small"> <el-form :model="specialty" class="demo-form-inline" size="small">
<el-form-item label="Specialty:"> <el-form-item :label="$t('resumeInfo:label:Speciality')">
<span v-if="isEnglish">{{ specialty.Speciality }}</span> <span v-if="isEnglish">{{ specialty.Speciality }}</span>
<span v-else>{{ specialty.SpecialityCN }}</span> <span v-else>{{ specialty.SpecialityCN }}</span>
</el-form-item> </el-form-item>
<el-form-item label="Subspeciality:"> <el-form-item :label="$t('resumeInfo:label:Subspeciality')">
<span v-if="isEnglish">{{ specialty.Subspeciality }}</span> <span v-if="isEnglish">{{ specialty.Subspeciality }}</span>
<span v-else>{{ specialty.SubspecialityCNList }}</span> <span v-else>{{ specialty.SubspecialityCNList }}</span>
</el-form-item> </el-form-item>
<el-form-item label="Modality:"> <el-form-item :label="$t('resumeInfo:label:ReadingType')">
<span v-if="isEnglish">{{ specialty.ReadingType }}</span> <span v-if="isEnglish">{{ specialty.ReadingType }}</span>
<span v-else>{{ specialty.ReadingTypeCNList }}</span> <span v-else>{{ specialty.ReadingTypeCNList }}</span>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
specialty: { specialty: {
type: Object, type: Object,
default() { default() {
return {} return {}
} }
}, },
isEnglish: { isEnglish: {
type: Boolean type: Boolean
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.specialty-info{ .specialty-info{
padding:5px 15px; padding:5px 15px;
font-size:13px; font-size:13px;
.el-form-item--mini.el-form-item{ .el-form-item--mini.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item--small.el-form-item{ .el-form-item--small.el-form-item{
margin-bottom: 0px; margin-bottom: 0px;
} }
.el-form-item__content{ .el-form-item__content{
font-size: 13px; font-size: 13px;
} }
.el-form-item__label{ .el-form-item__label{
font-size: 13px; font-size: 13px;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
} }
} }
</style> </style>

View File

@ -3,7 +3,7 @@
<el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small"> <el-form :inline="true" :model="basicInfo" class="demo-form-inline" size="small">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Pending:"> <el-form-item :label="$t('resumeInfo:label:Pending')">
<span v-if="statusList.Submitted" style="color:#428bca"> <span v-if="statusList.Submitted" style="color:#428bca">
<router-link <router-link
:to="{ :to="{
@ -17,7 +17,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Approved:"> <el-form-item :label="$t('resumeInfo:label:Approved')">
<span v-if="statusList.Approved" style="color:#428bca"> <span v-if="statusList.Approved" style="color:#428bca">
<router-link <router-link
:to="{ :to="{
@ -31,7 +31,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="Reading:"> <el-form-item :label="$t('resumeInfo:label:Reading')">
<span v-if="statusList.Reading" style="color:#428bca"> <span v-if="statusList.Reading" style="color:#428bca">
<router-link <router-link
:to="{ :to="{
@ -44,19 +44,19 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="On Vacation:"> <el-form-item :label="$t('resumeInfo:label:Vacation')">
<span style="font-size:12px;margin-right:20px;">{{ holiday }}</span> <span style="font-size:12px;margin-right:20px;">{{ holiday }}</span>
<el-button <el-button
type="text" type="text"
size="small" size="small"
@click="initHolidayList" @click="initHolidayList"
>Planned Vacation</el-button> >{{ $t('resumeInfo:label:PlannedVacation') }}</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-dialog <el-dialog
title="Vacation" :title="$t('resumeInfo:label:Vacation')"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="35%" width="35%"
:close-on-click-modal="false" :close-on-click-modal="false"
@ -65,13 +65,13 @@
<el-table-column type="index" /> <el-table-column type="index" />
<el-table-column <el-table-column
property="StartDate" property="StartDate"
label="Beginning Date" :label="$t('resumeInfo:label:BeginningDate')"
min-width="120" min-width="120"
:formatter="beginTimeFormatter" :formatter="beginTimeFormatter"
/> />
<el-table-column <el-table-column
property="EndDate" property="EndDate"
label="End Date" :label="$t('resumeInfo:label:EndDate')"
min-width="120" min-width="120"
:formatter="endTimeFormatter" :formatter="endTimeFormatter"
/> />

View File

@ -1,15 +1,15 @@
<template> <template>
<div class="trialExperience-info"> <div class="trialExperience-info">
<div class="title">Clinical Trial Experience</div> <div class="title">{{$t('resumeInfo:title:ClinicalTrialExperience')}}</div>
<el-table :data="GCPList" border style="width: 100%" size="small"> <el-table :data="GCPList" border style="width: 100%" size="small">
<template slot="empty"> <template slot="empty">
<span></span> <span></span>
</template> </template>
<el-table-column type="index" label="No." width="50" /> <el-table-column type="index" :label="$t('resumeInfo:label:No')" width="50" />
<el-table-column prop="Phase" label="Phase" min-width="20" show-overflow-tooltip /> <el-table-column prop="Phase" :label="$t('resumeInfo:label:Phase')" min-width="20" show-overflow-tooltip />
<el-table-column <el-table-column
prop="EvaluationCriteriaList" prop="EvaluationCriteriaList"
label="Review Criteria" :label="$t('resumeInfo:label:ReviewCriteria')"
min-width="40" min-width="40"
show-overflow-tooltip show-overflow-tooltip
> >
@ -19,20 +19,20 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="VisitReadingCount" prop="VisitReadingCount"
label="Visit Reading Count" :label="$t('resumeInfo:label:VisitReadingCount')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column <el-table-column
prop="EvaluationContent" prop="EvaluationContent"
label="Indication" :label="$t('resumeInfo:label:EvaluationContent')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
/> />
</el-table> </el-table>
<el-form :model="form" class="demo-form-inline" size="small"> <el-form :model="form" class="demo-form-inline" size="small">
<el-form-item label="GCP Certificate:"> <el-form-item :label="$t('resumeInfo:label:GCPCertificate')">
<span>{{ GCP }}</span> <span>{{ GCP }}</span>
<a <a
v-if="form.GCP" v-if="form.GCP"
@ -42,7 +42,7 @@
>View</a> >View</a>
</el-form-item> </el-form-item>
<el-form-item label="Other Relevant Experience:"> <el-form-item :label="$t('resumeInfo:label:OtherRelevantExperience')">
<el-input <el-input
v-if="isEnglish" v-if="isEnglish"
v-model="form.OtherClinicalExperience" v-model="form.OtherClinicalExperience"

View File

@ -16,35 +16,35 @@
<div style="flex:1;margin-top:50px;overflow-y: auto;"> <div style="flex:1;margin-top:50px;overflow-y: auto;">
<el-collapse v-model="activeNames"> <el-collapse v-model="activeNames">
<status-info :basic-info="basicInfo" :status-list="statusList" :doctor-id="doctorId" :holiday="holiday" :is-english="isEnglish" /> <status-info :basic-info="basicInfo" :status-list="statusList" :doctor-id="doctorId" :holiday="holiday" :is-english="isEnglish" />
<el-collapse-item title="Basic Info" name="1"> <el-collapse-item :title="$t('resumeInfo:title:BasicInfo')" name="1">
<basic-info :basic-info="doctorInfo.BasicInfoView" :is-english="isEnglish" /> <basic-info :basic-info="doctorInfo.BasicInfoView" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Employment" name="2"> <el-collapse-item :title="$t('resumeInfo:title:Employment')" name="2">
<Employment :employment="workInfo" :is-english="isEnglish" /> <Employment :employment="workInfo" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Specialty" name="3"> <el-collapse-item :title="$t('resumeInfo:title:Specialty')" name="3">
<Specialty :specialty="specialtyList" :is-english="isEnglish" /> <Specialty :specialty="specialtyList" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Education & Training" name="4"> <el-collapse-item :title="$t('resumeInfo:title:Education&Training')" name="4">
<education-training :education-list="doctorInfo.EducationList" :postgraduate-list="doctorInfo.PostgraduateList" :is-english="isEnglish" /> <education-training :education-list="doctorInfo.EducationList" :postgraduate-list="doctorInfo.PostgraduateList" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Research & Publication" name="5"> <el-collapse-item :title="$t('resumeInfo:title:Research&Publication')" name="5">
<research-publication :research-info="doctorInfo.ResearchPublicationView" :is-english="isEnglish" /> <research-publication :research-info="doctorInfo.ResearchPublicationView" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Trial Experience" name="6"> <el-collapse-item :title="$t('resumeInfo:title:TrialExperience')" name="6">
<trial-experience v-if="doctorInfo.TrialExperienceView" :trial-experience="doctorInfo.TrialExperienceView" :is-english="isEnglish" /> <trial-experience v-if="doctorInfo.TrialExperienceView" :trial-experience="doctorInfo.TrialExperienceView" :is-english="isEnglish" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Credentials" name="7"> <el-collapse-item :title="$t('resumeInfo:title:Credentials')" name="7">
<Credentials v-if="doctorInfo.AttachmentList" :attachment-list="doctorInfo.AttachmentList" :doctor-id="doctorId" /> <Credentials v-if="doctorInfo.AttachmentList" :attachment-list="doctorInfo.AttachmentList" :doctor-id="doctorId" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Resume" name="8"> <el-collapse-item :title="$t('resumeInfo:title:Resume')" name="8">
<Resume v-if="doctorInfo.AttachmentList" :resume-list="doctorInfo.AttachmentList" /> <Resume v-if="doctorInfo.AttachmentList" :resume-list="doctorInfo.AttachmentList" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Agreements" name="9"> <el-collapse-item :title="$t('resumeInfo:title:Agreements')" name="9">
<Agreements v-if="doctorInfo.AttachmentList" :doctor-info="doctorInfo" /> <Agreements v-if="doctorInfo.AttachmentList" :doctor-info="doctorInfo" />
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="Comment" name="10"> <el-collapse-item :title="$t('resumeInfo:title:Comment')" name="10">
<Comment :status-list="statusList" /> <Comment :status-list="statusList" />
</el-collapse-item> </el-collapse-item>
</el-collapse> </el-collapse>
@ -64,6 +64,7 @@ import Credentials from './components/Credentials'
import Resume from './components/Resume' import Resume from './components/Resume'
import Agreements from './components/Agreements' import Agreements from './components/Agreements'
import Comment from './components/Comment' import Comment from './components/Comment'
import {mapMutations} from "vuex";
export default { export default {
components: { StatusInfo, BasicInfo, Employment, Specialty, EducationTraining, ResearchPublication, TrialExperience, Credentials, Resume, Agreements, Comment }, components: { StatusInfo, BasicInfo, Employment, Specialty, EducationTraining, ResearchPublication, TrialExperience, Credentials, Resume, Agreements, Comment },
data() { data() {
@ -91,14 +92,27 @@ export default {
doctorId: '' doctorId: ''
} }
}, },
watch: {
isEnglish(v) {
if (v === true) {
this.$i18n.locale = 'en'
this.setLanguage('en')
this.$updateDictionary()
} else {
this.$i18n.locale = 'zh'
this.setLanguage('zh')
this.$updateDictionary()
}
}
},
mounted() { mounted() {
// this.isEnglish = !!((this.$route.query.isEnglish === true || this.$route.query.isEnglish === 'true')) this.isEnglish = !!((this.$route.query.isEnglish === true || this.$route.query.isEnglish === 'true'))
// this.isEnglish = this.$i18n.locale === 'zh' ? false : true this.isEnglish = this.$i18n.locale === 'zh' ? false : true
this.doctorId = this.$route.query.doctorId this.doctorId = this.$route.query.doctorId
this.initForm() this.initForm()
}, },
methods: { methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
initStatus() { initStatus() {
if (this.doctorInfo.AuditView) { if (this.doctorInfo.AuditView) {
const res = this.doctorInfo.AuditView const res = this.doctorInfo.AuditView
@ -177,7 +191,7 @@ export default {
if (res.Result) { if (res.Result) {
this.holiday = res.Result.InHoliday ? 'Yes' : 'No' this.holiday = res.Result.InHoliday ? 'Yes' : 'No'
this.doctorInfo = res.Result this.doctorInfo = res.Result
this.title = `${this.doctorInfo.BasicInfoView.FirstName} ${this.doctorInfo.BasicInfoView.LastName}'s Details` this.title = `${this.doctorInfo.BasicInfoView.FirstName} ${this.doctorInfo.BasicInfoView.LastName}${this.$t('resumeInfo:title:Details')}`
this.htmlTitle = this.title this.htmlTitle = this.title
this.initStatus() this.initStatus()
this.initEmploymentInfo() this.initEmploymentInfo()

View File

@ -119,7 +119,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="操作用户名" label="操作用户名"
prop="optUserName" prop="OptUserName"
min-width="90" min-width="90"
sortable="custom" sortable="custom"
show-overflow-tooltip show-overflow-tooltip

View File

@ -217,7 +217,7 @@ export default {
}, },
downLoadFile(filePath) { downLoadFile(filePath) {
if (!filePath) return if (!filePath) return
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
}, },
handleSearch() { handleSearch() {
this.searchData.PageIndex = 1 this.searchData.PageIndex = 1

View File

@ -405,7 +405,7 @@ export default {
}, },
handlePreview(filePath) { handlePreview(filePath) {
if (filePath) { if (filePath) {
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
}, },
handleSearch() { handleSearch() {

View File

@ -1,183 +1,194 @@
<template> <template>
<el-form <el-form
ref="customSiteForm" ref="customSiteForm"
v-loading="loading" v-loading="loading"
:model="form" :model="form"
:rules="rules" :rules="rules"
class="demo-ruleForm" class="demo-ruleForm"
size="small" size="small"
label-width="150px" label-width="150px"
> >
<div class="base-dialog-body"> <div class="base-dialog-body">
<!-- 中心编号 --> <!-- 中心编号 -->
<el-form-item :label="$t('trials:customSite:form:siteId')" prop="SiteCode"> <el-form-item :label="$t('trials:customSite:form:siteId')" prop="SiteCode">
<el-input v-model="form.SiteCode" /> <el-input v-model="form.SiteCode" />
</el-form-item> </el-form-item>
<!-- 中心名称 --> <!-- 中心名称 -->
<el-form-item :label="$t('trials:customSite:form:siteName')" prop="SiteName"> <el-form-item :label="$t('trials:customSite:form:siteName')" prop="SiteName">
<el-input v-model="form.SiteName" /> <el-input v-model="form.SiteName" />
</el-form-item> </el-form-item>
<!-- 组织机构代码 --> <!-- 中心名称CN -->
<el-form-item :label="$t('trials:customSite:form:orgCode')"> <el-form-item :label="$t('trials:customSite:form:siteName') + 'CN'" v-if="!show" prop="SiteNameCN">
<el-input v-model="form.UniqueCode" /> <el-input v-model="form.SiteNameCN" />
</el-form-item> </el-form-item>
<!-- 国家 --> <!-- 组织机构代码 -->
<el-form-item :label="$t('trials:customSite:form:country')" prop="Country"> <el-form-item :label="$t('trials:customSite:form:orgCode')">
<el-input v-model="form.Country" /> <el-input v-model="form.UniqueCode" />
</el-form-item> </el-form-item>
<!-- 城市 --> <!-- 国家 -->
<el-form-item :label="$t('trials:customSite:form:city')" prop="City"> <el-form-item :label="$t('trials:customSite:form:country')" prop="Country">
<el-input v-model="form.City" /> <el-input v-model="form.Country" />
</el-form-item> </el-form-item>
<!-- 地址 --> <!-- 城市 -->
<el-form-item :label="$t('trials:customSite:form:address')" prop="Address"> <el-form-item :label="$t('trials:customSite:form:city')" prop="City">
<el-input v-model="form.Address" /> <el-input v-model="form.City" />
</el-form-item> </el-form-item>
<!-- 附属医院 --> <!-- 地址 -->
<el-form-item :label="$t('trials:customSite:form:hospital')"> <el-form-item :label="$t('trials:customSite:form:address')" prop="Address">
<el-select <el-input v-model="form.Address" />
v-model="form.HospitalId" </el-form-item>
clearable <!-- 附属医院 -->
style="width:100%;" <el-form-item :label="$t('trials:customSite:form:hospital')">
> <el-select
<el-option v-model="form.HospitalId"
v-for="item in hospitalList" clearable
:key="item.Id" style="width:100%;"
:label="item.HospitalName" >
:value="item.Id" <el-option
/> v-for="item in hospitalList"
</el-select> :key="item.Id"
</el-form-item> :label="item.HospitalName"
<!-- 负责人 --> :value="item.Id"
<el-form-item :label="$t('trials:customSite:form:director')" prop="DirectorName"> />
<el-input v-model="form.DirectorName" /> </el-select>
</el-form-item> </el-form-item>
<!-- 负责人电话 --> <!-- 负责人 -->
<el-form-item :label="$t('trials:customSite:form:directorPhone')" prop="DirectorPhone"> <el-form-item :label="$t('trials:customSite:form:director')" prop="DirectorName">
<el-input v-model="form.DirectorPhone" /> <el-input v-model="form.DirectorName" />
</el-form-item> </el-form-item>
<!-- 联系人 --> <!-- 负责人电话 -->
<el-form-item :label="$t('trials:customSite:form:contactor')" prop="ContactName"> <el-form-item :label="$t('trials:customSite:form:directorPhone')" prop="DirectorPhone">
<el-input v-model="form.ContactName" /> <el-input v-model="form.DirectorPhone" />
</el-form-item> </el-form-item>
<!-- 联系人电话 --> <!-- 联系人 -->
<el-form-item :label="$t('trials:customSite:form:contactorPhone')" prop="ContactPhone"> <el-form-item :label="$t('trials:customSite:form:contactor')" prop="ContactName">
<el-input v-model="form.ContactPhone" /> <el-input v-model="form.ContactName" />
</el-form-item> </el-form-item>
</div> <!-- 联系人电话 -->
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;"> <el-form-item :label="$t('trials:customSite:form:contactorPhone')" prop="ContactPhone">
<el-form-item> <el-input v-model="form.ContactPhone" />
<!-- 取消 --> </el-form-item>
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel"> </div>
{{ $t('common:button:cancel') }} <div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
</el-button> <el-form-item>
<!-- 保存 --> <!-- 取消 -->
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave"> <el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel">
{{ $t('common:button:save') }} {{ $t('common:button:cancel') }}
</el-button> </el-button>
</el-form-item> <!-- 保存 -->
</div> <el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
</el-form> {{ $t('common:button:save') }}
</template> </el-button>
<script> </el-form-item>
import { addOrUpdateSite } from '@/api/dictionary' </div>
import store from '@/store' </el-form>
export default { </template>
name: 'CustomSiteForm', <script>
props: { import { addOrUpdateSite } from '@/api/dictionary'
data: { import store from '@/store'
type: Object, export default {
default() { name: 'CustomSiteForm',
return {} props: {
} data: {
} type: Object,
}, default() {
data() { return {}
return { }
btnLoading: false, }
hospitalList: [], },
form: { data() {
Id: '', return {
SiteCode: '', btnLoading: false,
SiteName: '', hospitalList: [],
Country: '', form: {
City: '', Id: '',
HospitalId: '', SiteCode: '',
DirectorName: '', SiteName: '',
DirectorPhone: '', SiteNameCN: '',
ContactName: '', Country: '',
ContactPhone: '', City: '',
UniqueCode: '', HospitalId: '',
Address: '' DirectorName: '',
}, DirectorPhone: '',
rules: { ContactName: '',
SiteName: [ ContactPhone: '',
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }, UniqueCode: '',
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } Address: ''
], },
SiteCode: [ rules: {
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }, SiteName: [
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } { required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
], { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
Country: [ ],
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }, SiteNameCN: [
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } { required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
], { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
City: [ ],
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }, SiteCode: [
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } { required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
], { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
// HospitalId: [ ],
// { required: true, message: 'Please specify', trigger: 'blur' } Country: [
// ], { required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
Address: [ { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' } ],
], City: [
DirectorName: [ { required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
], ],
DirectorPhone: [ // HospitalId: [
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } // { required: true, message: 'Please specify', trigger: 'blur' }
], // ],
ContactName: [ Address: [
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } { required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }
], ],
ContactPhone: [ DirectorName: [
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` } { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
] ],
}, DirectorPhone: [
loading: false { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
} ],
}, ContactName: [
mounted() { { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
this.initForm() ],
}, ContactPhone: [
methods: { { max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
handleSave() { ]
this.$refs.customSiteForm.validate(valid => { },
if (!valid) return loading: false,
this.btnLoading = true show: false
addOrUpdateSite(this.form).then(res => { }
this.btnLoading = false },
if (res.IsSuccess) { mounted() {
this.$message.success(this.$t('common:message:savedSuccessfully')) this.initForm()
this.$emit('getList') this.show = process.env.VUE_APP_OSS_PATH === '/usa/dist'
this.$emit('close') },
} methods: {
}).catch(() => { handleSave() {
this.btnLoading = false this.$refs.customSiteForm.validate(valid => {
}) if (!valid) return
}) this.btnLoading = true
}, addOrUpdateSite(this.form).then(res => {
handleCancel() { this.btnLoading = false
this.$emit('close') if (res.IsSuccess) {
}, this.$message.success(this.$t('common:message:savedSuccessfully'))
async initForm() { this.$emit('getList')
this.loading = true this.$emit('close')
this.hospitalList = await store.dispatch('global/getHospital') }
this.loading = false }).catch(() => {
} this.btnLoading = false
} })
})
} },
</script> handleCancel() {
this.$emit('close')
},
async initForm() {
this.loading = true
this.hospitalList = await store.dispatch('global/getHospital')
this.loading = false
}
}
}
</script>

View File

@ -1,94 +1,94 @@
<template> <template>
<div v-loading="loading" class="preview-wrapper"> <div v-loading="loading" class="preview-wrapper">
<el-tabs tab-position="right" type="card"> <el-tabs tab-position="right" type="card">
<el-tab-pane v-for="file in fileList" :key="file.Id" :label="file.FileName"> <el-tab-pane v-for="file in fileList" :key="file.Id" :label="file.FileName">
<iframe <iframe
v-if="file.Type.indexOf('jpg') !== -1 || file.Type.indexOf('png') !== -1" v-if="file.Type.indexOf('jpg') !== -1 || file.Type.indexOf('png') !== -1"
frameborder="0" frameborder="0"
:src="file.FullFilePath" :src="file.FullFilePath"
width="100%" width="100%"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
/> />
<embed v-else-if="file.Type.indexOf('pdf') !== -1" :src="file.FullFilePath" style="width: 100%; height: 100%"> <embed v-else-if="file.Type.indexOf('pdf') !== -1" :src="file.FullFilePath" style="width: 100%; height: 100%">
<div v-else> <div v-else>
该文件不支持在线预览可点击<el-link type="primary" @click="downLoadFile(file.FullFilePath)"></el-link>原件 该文件不支持在线预览可点击<el-link type="primary" @click="downLoadFile(file.FullFilePath)"></el-link>原件
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
<script> <script>
import { getNoneDicomStudyFileList } from '@/api/trials' import { getNoneDicomStudyFileList } from '@/api/trials'
export default { export default {
name: 'PreviewFiles', name: 'PreviewFiles',
props: { props: {
noneDicomId: { noneDicomId: {
type: String, type: String,
required: true required: true
} }
}, },
data() { data() {
return { return {
fileType: '', fileType: '',
fileUrl: '', fileUrl: '',
loading: false, loading: false,
fileList: [] fileList: []
} }
}, },
mounted() { mounted() {
this.getFileList() this.getFileList()
}, },
methods: { methods: {
getFileList() { getFileList() {
this.loading = true this.loading = true
getNoneDicomStudyFileList(this.noneDicomId).then(res => { getNoneDicomStudyFileList(this.noneDicomId).then(res => {
this.fileList = res.Result this.fileList = res.Result
this.fileList.forEach(file => { this.fileList.forEach(file => {
const fileName = file.FileName const fileName = file.FileName
file.Type = fileName.substring(fileName.lastIndexOf('.') + 1).toLocaleLowerCase() file.Type = fileName.substring(fileName.lastIndexOf('.') + 1).toLocaleLowerCase()
}) })
this.loading = false this.loading = false
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },
downLoadFile(filePath) { downLoadFile(filePath) {
if (!filePath) return if (!filePath) return
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.preview-wrapper{ .preview-wrapper{
height: 100%; height: 100%;
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 7px; width: 7px;
height: 7px; height: 7px;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
border-radius: 10px; border-radius: 10px;
background: #d0d0d0; background: #d0d0d0;
} }
.el-tabs{ .el-tabs{
display: flex; display: flex;
flex-direction: row !important; flex-direction: row !important;
width: 100%; width: 100%;
height: 100%; height: 100%;
.el-tabs__header{ .el-tabs__header{
margin-right: 10px !important; margin-right: 10px !important;
height: 100% !important; height: 100% !important;
width: 300px; width: 300px;
border: 2px solid #E4E7ED; border: 2px solid #E4E7ED;
overflow: auto; overflow: auto;
} }
.el-tabs__content{ .el-tabs__content{
flex: 1; flex: 1;
height: 100%; height: 100%;
.el-tab-pane{ .el-tab-pane{
height: 100%; height: 100%;
} }
} }
} }
} }
</style> </style>

View File

@ -215,7 +215,7 @@ export default {
}, },
handlePreview(filePath) { handlePreview(filePath) {
if (filePath) { if (filePath) {
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
}, },
handleSearch() { handleSearch() {

View File

@ -66,6 +66,7 @@
<!-- 下载模板 --> <!-- 下载模板 -->
<el-button <el-button
type="primary" type="primary"
v-hasPermi="['trials:trials-panel:visit:consistency-check:upload']"
icon="el-icon-download" icon="el-icon-download"
@click="handleDownload" @click="handleDownload"
> >

View File

@ -82,7 +82,7 @@ export default {
}, },
downLoadFile(filePath) { downLoadFile(filePath) {
if (!filePath) return if (!filePath) return
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
} }
} }
} }

View File

@ -74,7 +74,7 @@ export default {
}, },
downLoadFile(filePath) { downLoadFile(filePath) {
if (!filePath) return if (!filePath) return
window.open(filePath, '_blank') window.open(this.OSSclientConfig.basePath + filePath, '_blank')
}, },
preview(file) { preview(file) {
this.$set(this.fileInfo, 'currentFileType', this.getFileType(file.FileName)) this.$set(this.fileInfo, 'currentFileType', this.getFileType(file.FileName))