diff --git a/src/api/reviewers.js b/src/api/reviewers.js index d840a2ca..3819b1b8 100644 --- a/src/api/reviewers.js +++ b/src/api/reviewers.js @@ -304,9 +304,9 @@ export function addOrUpdateDoctorBasicInfoAndEmployment(param) { }) } // 新增或编辑概述 -export function updateGneralSituation(param) { +export function addOrUpdateGneralSituation(param) { return request({ - url: `/Doctor/updateGneralSituation`, + url: `/Doctor/addOrUpdateGneralSituation`, method: 'post', data: param }) @@ -342,4 +342,28 @@ export function getIsVacation(param) { method: 'post', data: param }) +} +// 获取概述 +export function getSummarizeInfo(param) { + return request({ + url: `/Doctor/getSummarizeInfo`, + method: 'post', + data: param + }) +} +// 删除概述 +export function deleteSummarizeInfo(param) { + return request({ + url: `/Doctor/deleteSummarizeInfo`, + method: 'post', + data: param + }) +} +// pm通过邮箱新建或查询简历 +export function useEmialGetDoctorInfo(param) { + return request({ + url: `/TrialSiteSurvey/useEmialGetDoctorInfo`, + method: 'post', + data: param + }) } \ No newline at end of file diff --git a/src/components/BaseModel/index.vue b/src/components/BaseModel/index.vue index 66e8f250..fcd8db04 100644 --- a/src/components/BaseModel/index.vue +++ b/src/components/BaseModel/index.vue @@ -12,7 +12,7 @@ :width="config.width" :fullscreen="config.fullscreen" > -
+
-
- {{ isEN ? DATA.SummarizeEn : DATA.Summarize }} +
+ {{ isEN ? mainSummarize.SummarizeEn : mainSummarize.Summarize }}
{{ $t('curriculumVitae:noData') }}
@@ -25,6 +28,46 @@ label-width="80px" size="small" > + diff --git a/src/views/reviewers/curriculumVitae/index.vue b/src/views/reviewers/curriculumVitae/index.vue index a7e70e6b..806ddb76 100644 --- a/src/views/reviewers/curriculumVitae/index.vue +++ b/src/views/reviewers/curriculumVitae/index.vue @@ -83,6 +83,8 @@ :reviewerId.sync="reviewerId" :trialId="trialId" :isEN="isEN" + :isPM="isPM" + :IndicationList="IndicationList" @getInfo="getDetail" />
@@ -174,9 +176,14 @@ />
- +
- +
{{ $t('curriculumVitae:summarize:title') }}
- {{ - isEN - ? reviewerData.SummarizeInfo.SummarizeEn - : reviewerData.SummarizeInfo.Summarize - }} + {{ isEN ? mainSummarize.SummarizeEn : mainSummarize.Summarize }}
@@ -468,7 +461,9 @@ class="message break-word" style="white-space: pre-wrap" v-if="reviewerData.ResearchPublicationView.Publications" - >{{ reviewerData.ResearchPublicationView.Publications }}
+ > + {{ reviewerData.ResearchPublicationView.Publications }} +
item.IsMain + ) || {} + ) + } + return {} + }, hasFile() { return ( (this.sowList && this.sowList.length > 0) || diff --git a/src/views/reviewers/index.vue b/src/views/reviewers/index.vue index 2315da26..6a331035 100644 --- a/src/views/reviewers/index.vue +++ b/src/views/reviewers/index.vue @@ -525,13 +525,19 @@ export default { }, // 发送邮件 async sendEmail() { - var pattern = - /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/ - if (!pattern.test(this.email)) - return this.$message.warning(this.$t('rules:email')) + let emailList = this.email.split('|') + let isError = false + emailList.forEach((item) => { + var pattern = + /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/ + if (!pattern.test(item)) { + isError = true + } + }) + if (isError) return this.$message.warning(this.$t('rules:email')) this.emailLoading = true let res = await doctorSendEmail({ - Email: this.email, + Email: emailList, Url: `ReviewersResearch?lang=${this.$store.getters.language}`, }) this.emailLoading = false diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue index 49089c8a..5b20a67f 100644 --- a/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue +++ b/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue @@ -386,18 +386,61 @@ - - + + + + + + + + + + + + + {{ $t('common:button:cancel') }} + + + {{ $t('common:button:save') }} + + @@ -408,9 +451,8 @@ import store from '@/store' import { mapGetters } from 'vuex' import { getSelectionReviewerList, selectReviewers } from '@/api/trials' import BaseModel from '@/components/BaseModel' -import reviewerAdd from '@/views/reviewers/new' -import reviewerEdit from '@/views/reviewers/edit' -import { doctorSendEmail } from '@/api/reviewers' +import curriculumVitae from '@/views/reviewers/curriculumVitae' +import { doctorSendEmail, useEmialGetDoctorInfo } from '@/api/reviewers' const getListQueryDefault = () => { return { TrialId: '', @@ -435,8 +477,7 @@ export default { BaseContainer, Pagination, BaseModel, - reviewerAdd, - reviewerEdit, + curriculumVitae, }, dicts: ['ReadingType', 'Subspeciality', 'Position', 'Rank'], data() { @@ -456,10 +497,33 @@ export default { }, shareLink: null, email: null, - emailLoading: false, visible: false, - resumeType: 'add', reviewerId: null, + + emailVisible: false, + emailLoading: false, + emailForm: { + EmailOrPhone: null, + }, + emailRule: { + EmailOrPhone: [ + { + required: true, + message: this.$t('passwordReset:formRule:email'), + trigger: 'blur', + }, + { + type: 'email', + message: this.$t('rules:email'), + trigger: 'blur,change', + }, + { + max: 400, + message: this.$t('form:rules:maxLength:400'), + trigger: 'blur', + }, + ], + }, } }, computed: { @@ -469,6 +533,31 @@ export default { this.initPage() }, methods: { + handleCancle() { + Object.keys(this.emailForm).forEach((key) => { + this.emailForm[key] = null + }) + this.emailVisible = false + }, + async handleSave() { + try { + let validate = await this.$refs.emailForm.validate() + if (!validate) return false + this.emailLoading = true + this.emailForm.trialId = this.$route.query.trialId + let res = await useEmialGetDoctorInfo(this.emailForm) + this.emailLoading = false + if (res.IsSuccess) { + this.handleCancle() + sessionStorage.setItem('reviewerId', res.Result.DoctorId) + zzSessionStorage.setItem('trialId', this.$route.query.trialId) + this.visible = true + } + } catch (err) { + this.emailLoading = false + console.log(err) + } + }, copyCode() { this.$copyText( `${this.$t('reviewers-list:button:copyCode')}: ${this.shareLink}` @@ -494,13 +583,19 @@ export default { }, // 发送邮件 async sendEmail() { - var pattern = - /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/ - if (!pattern.test(this.email)) - return this.$message.warning(this.$t('rules:email')) + let emailList = this.email.split('|') + let isError = false + emailList.forEach((item) => { + var pattern = + /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/ + if (!pattern.test(item)) { + isError = true + } + }) + if (isError) return this.$message.warning(this.$t('rules:email')) this.emailLoading = true let res = await doctorSendEmail({ - Email: this.email, + Email: emailList, Url: `ReviewersResearch?lang=${this.$store.getters.language}&trialId=${this.$route.query.trialId}`, }) this.emailLoading = false @@ -513,10 +608,13 @@ export default { }, // 打开新增或修改简历弹框 openViewer(type, row) { - this.resumeType = type - if (row) { - this.reviewerId = row.Id + if (type === 'add') { + return (this.emailVisible = true) } + if (row) { + sessionStorage.setItem('reviewerId', row.Id) + } + zzSessionStorage.setItem('trialId', this.$route.query.trialId) this.visible = true }, go(path) {