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-10-22 15:10:17 +08:00
commit 0633e775d4
15 changed files with 1053 additions and 275 deletions

View File

@ -214,3 +214,19 @@ export function getPatientList_Export(data) {
data
})
}
export function getCommonEvaluationList_Export(data) {
return requestDownload({
url: `/ExcelExport/getCommonEvaluationList_Export`,
responseType: 'blob',
method: 'post',
data
})
}
export function getCommonJudgeRatioList_Export(data) {
return requestDownload({
url: `/ExcelExport/getCommonJudgeRatioList_Export`,
responseType: 'blob',
method: 'post',
data
})
}

View File

@ -298,3 +298,27 @@ export function addOrUpdateDoctorBasicInfoAndEmployment(param) {
data: param
})
}
// 新增或编辑概述
export function updateGneralSituation(param) {
return request({
url: `/Doctor/updateGneralSituation`,
method: 'post',
data: param
})
}
// 新增或编辑支付方式
export function updatePaymentMode(param) {
return request({
url: `/Doctor/updatePaymentMode`,
method: 'post',
data: param
})
}
// 新增或编辑Publication
export function addOrUpdateResearchPublicationInfo(param) {
return request({
url: `/ResearchPublication/addOrUpdateResearchPublicationInfo`,
method: 'post',
data: param
})
}

View File

@ -37,8 +37,11 @@
min-width="70"
show-overflow-tooltip
>
<template slot-scope="scope" v-if="$fd('Degree', scope.row.Degree)">
{{ $fd('Degree', scope.row.Degree) }}
<template
slot-scope="scope"
v-if="$fd('Degree', Number(scope.row.Degree))"
>
{{ $fd('Degree', Number(scope.row.Degree)) }}
</template>
<template slot-scope="scope" v-else>
{{
@ -180,7 +183,13 @@
min-width="70"
show-overflow-tooltip
>
<template slot-scope="scope">
<template
slot-scope="scope"
v-if="$fd('Training', Number(scope.row.Training))"
>
{{ $fd('Training', Number(scope.row.Training)) }}
</template>
<template slot-scope="scope" v-else>
{{
scope.row.TrainingCN
? `${scope.row.Training} / ${scope.row.TrainingCN}`

View File

@ -331,6 +331,25 @@ import BaseModel from '@/components/BaseModel'
export default {
name: 'clinicalTrials',
components: { BaseModel },
props: {
DATA: {
type: Object,
required: true,
default: () => {
return {
}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
tableData: [],

View File

@ -2,12 +2,18 @@
<div class="continuingTraining">
<div class="title">
<span>{{ $t('curriculumVitae:continuingTraining:title') }}</span>
<el-button type="text" class="editBtn" @click.stop="openEdit">
<el-button
type="text"
class="editBtn"
@click.stop="openEdit"
:disabled="!reviewerId"
>
{{ $t('common:button:add') }}
</el-button>
</div>
<el-table
:data="tableData"
:data="DATA"
v-loading="loading"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
>
@ -15,33 +21,56 @@
prop="date"
:label="$t('curriculumVitae:continuingTraining:table:time')"
>
<template slot-scope="scope">
<span>{{ scope.row.BeginDateStr }}-{{ scope.row.EndDateStr }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="Training"
:label="$t('curriculumVitae:continuingTraining:table:type')"
>
<template slot-scope="scope">
<span>{{ $fd('Training', Number(scope.row.Training)) }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="Major"
:label="$t('curriculumVitae:continuingTraining:table:direction')"
>
<template slot-scope="scope">
<span>{{ isEN ? scope.row.Major : scope.row.MajorCN }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="school"
:label="$t('curriculumVitae:continuingTraining:table:school')"
>
<template slot-scope="scope">
<span>{{ isEN ? scope.row.School : scope.row.SchoolCN }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
prop="City"
:label="$t('curriculumVitae:continuingTraining:table:city')"
>
</el-table-column>
<el-table-column prop="date" :label="$t('common:action:action')">
<template slot-scope="scope">
<el-button type="text" class="editBtn" @click.stop="openEdit(scope)">
<span>{{ isEN ? scope.row.City : scope.row.CityCN }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('common:action:action')">
<template slot-scope="scope">
<el-button
type="text"
class="editBtn"
@click.stop="openEdit(scope.row)"
>
{{ $t('common:button:edit') }}
</el-button>
<el-button type="text" class="editBtn" @click.stop="openEdit">
<el-button
type="text"
class="editBtn"
@click.stop="handleDel(scope.row)"
>
{{ $t('common:button:delete') }}
</el-button>
</template>
@ -59,25 +88,28 @@
>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:time')"
prop="InternationalizationType"
prop="BeginDate"
>
<el-date-picker
clearable
v-model="daterange"
type="daterange"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
:range-separator="$t('curriculumVitae:daterange:rangeSeparator')"
:start-placeholder="$t('curriculumVitae:daterange:startTime')"
:end-placeholder="$t('curriculumVitae:daterange:endTime')"
@change="changeTimeList"
>
</el-date-picker>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:type')"
prop="InternationalizationType"
prop="Training"
>
<el-select v-model="form.Sex" clearable placeholder="">
<el-select v-model="form.Training" clearable placeholder="">
<el-option
v-for="item in $d.sex"
v-for="item in $d.Training"
:key="item.id"
:label="item.label"
:value="item.value"
@ -86,46 +118,56 @@
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:direction')"
prop="InternationalizationType"
prop="Major"
>
<el-row>
<el-col :span="12" style="margin-right: 5px">
<el-input
clearable
:placeholder="
$t(
'curriculumVitae:continuingTraining:placeholder:direction'
)
"
></el-input>
</el-col>
<el-col :span="11">
<el-input
clearable
:placeholder="
$t(
'curriculumVitae:continuingTraining:placeholder:directionEN'
)
"
></el-input>
</el-col>
</el-row>
<el-input
style="width: 97%"
v-model="form.Major"
type="textarea"
:rows="2"
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:directionEN')
"
></el-input>
</el-form-item>
<el-form-item prop="MajorCN">
<el-input
style="width: 97%"
type="textarea"
:rows="2"
v-model="form.MajorCN"
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:direction')
"
></el-input>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:school')"
prop="InternationalizationType"
:label="$t('curriculumVitae:continuingTraining:form:hospital')"
prop="HospitalId"
>
<el-row>
<el-col :span="12" style="margin-right: 5px">
<el-input
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:school')
"
></el-input>
</el-col>
<el-col :span="11">
<el-select v-model="form.HospitalId" filterable placeholder="">
<el-option
v-for="(item, index) in hospitalList"
:key="index"
:label="item.HospitalName"
:value="item.Id"
>
<span>
{{ item.HospitalName }}
</span>
</el-option>
</el-select>
</el-form-item>
<el-row>
<el-col :span="12" style="margin-right: 5px">
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:school')"
prop="School"
>
<el-input
v-model="form.School"
clearable
:placeholder="
$t(
@ -133,29 +175,88 @@
)
"
></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:city')"
prop="InternationalizationType"
>
<el-select v-model="form.Sex" clearable placeholder="">
<el-option
v-for="item in $d.sex"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="SchoolCN" label-width="10px">
<el-input
v-model="form.SchoolCN"
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:school')
"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" style="margin-right: 5px">
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:city')"
prop="City"
>
<el-input
v-model="form.City"
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:City')
"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="CityCN" label-width="10px">
<el-input
v-model="form.CityCN"
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:CityCN')
"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12" style="margin-right: 5px">
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:Country')"
prop="Country"
>
<el-input
v-model="form.Country"
clearable
:placeholder="
$t('curriculumVitae:continuingTraining:placeholder:Country')
"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item prop="CountryCN" label-width="10px">
<el-input
v-model="form.CountryCN"
clearable
:placeholder="
$t(
'curriculumVitae:continuingTraining:placeholder:CountryCN'
)
"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</template>
<template slot="dialog-footer">
<el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" @click="handleSave">
<el-button
size="small"
type="primary"
:loading="loading"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
</template>
@ -164,12 +265,50 @@
</template>
<script>
import BaseModel from '@/components/BaseModel'
import {
addOrUpdatePostgraduateInfo,
deletePostgraduateInfo,
} from '@/api/reviewers'
import store from '@/store'
import { mapGetters } from 'vuex'
const defaultForm = () => {
return {
BeginDate: '',
EndDate: '',
Training: '',
Major: '',
MajorCN: '',
HospitalId: null,
School: '',
SchoolCN: '',
City: '',
CityCN: '',
Country: '',
CountryCN: '',
}
}
export default {
name: 'continuingTraining',
components: { BaseModel },
props: {
DATA: {
type: Array,
required: true,
default: () => {
return []
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
tableData: [],
model_cfg: {
visible: false,
showClose: true,
@ -177,21 +316,150 @@ export default {
title: this.$t('curriculumVitae:continuingTraining:form:title'),
appendToBody: true,
},
form: {},
rules: {},
form: defaultForm(),
rules: {
BeginDate: [
{
required: true,
message: 'Please select a start date',
trigger: 'blur',
},
],
EndDate: [
{
required: true,
message: 'Please select a valid date',
trigger: 'blur',
},
],
Training: [
{
required: true,
message: 'Please select degree',
trigger: 'blur',
},
],
Major: [
{
required: true,
message: 'Please enter the major',
trigger: 'blur',
},
{ max: 100, message: 'The maximum length is 100' },
],
MajorCN: [
{
required: true,
message: 'Please enter the major',
trigger: 'blur',
},
{ max: 100, message: 'The maximum length is 100' },
],
City: [
{ required: true, message: 'Please enter the city', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' },
],
CityCN: [
{ required: true, message: 'Please enter the city', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' },
],
Country: [
{
required: true,
message: 'Please enter the country',
trigger: 'blur',
},
{ max: 50, message: 'The maximum length is 50' },
],
CountryCN: [
{
required: true,
message: 'Please enter the country',
trigger: 'blur',
},
{ max: 50, message: 'The maximum length is 50' },
],
},
loading: false,
daterange: [],
}
},
computed: {
...mapGetters(['hospitalList']),
},
mounted() {
store.dispatch('global/getHospital')
},
methods: {
openEdit() {
openEdit(row) {
this.form = defaultForm()
this.daterange = []
if (row) {
Object.keys(this.form).forEach((key) => {
if (row[key]) {
this.form[key] = row[key]
}
})
if (this.form.BeginDate && this.form.EndDate) {
this.daterange = [this.form.BeginDate, this.form.EndDate]
}
if (this.form.Degree) {
this.form.Degree = Number(this.form.Degree)
}
this.form.Id = row.Id
}
this.model_cfg.visible = true
},
handleCancle() {
this.form = defaultForm()
this.daterange = []
this.model_cfg.visible = false
},
handleSave() {
this.model_cfg.visible = false
async handleSave() {
try {
let validate = await this.$refs.continuingTrainingFrom.validate()
if (!validate) return false
if (this.reviewerId) {
this.form.DoctorId = this.reviewerId
}
this.loading = true
let res = await addOrUpdatePostgraduateInfo(this.form)
this.loading = false
if (res.IsSuccess) {
this.$emit('getInfo')
this.model_cfg.visible = false
}
} catch (err) {
this.loading = false
console.log(err)
}
},
async handleDel(row) {
try {
let confirm = await this.$confirm(
this.$t('trials:trials-list:table:isDeleted')
)
if (!confirm) return false
this.loading = true
let res = await deletePostgraduateInfo(row.Id)
this.loading = false
if (res.IsSuccess) {
this.$message.success(this.$t('common:message:deletedSuccessfully'))
this.$emit('getInfo')
}
} catch (err) {
this.loading = false
console.log(err)
}
},
changeTimeList() {
if (this.daterange && this.daterange.length === 2) {
this.form.BeginDate = this.daterange[0]
this.form.EndDate = this.daterange[1]
} else {
this.form.BeginDate = null
this.form.EndDate = null
}
},
},
}

View File

@ -305,6 +305,10 @@ export default {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
@ -399,11 +403,6 @@ export default {
daterange: [],
}
},
computed: {
isEN() {
return this.$i18n.locale !== 'zh'
},
},
methods: {
openEdit(row) {
this.form = defaultForm()

View File

@ -26,7 +26,6 @@
<span v-if="isEN">{{ DATA.HospitalName }}</span>
<span v-else>{{ DATA.HospitalNameCN }}</span>
</span>
<span> </span>
</div>
<div class="userTitle">
<span
@ -146,7 +145,7 @@
:label="$t('curriculumVitae:info:form:email')"
prop="EMail"
>
<el-input v-model="form.EMail" clearable></el-input>
<el-input v-model="form.EMail" clearable disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
@ -388,6 +387,10 @@ export default {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
@ -486,9 +489,6 @@ export default {
},
computed: {
...mapGetters(['hospitalList']),
isEN() {
return this.$i18n.locale !== 'zh'
},
},
mounted() {
this.getDicData()

View File

@ -1,15 +1,21 @@
<template>
<div class="other">
<div class="title">
<span>{{ $t('curriculumVitae:other:title') }}</span>
<el-button type="text" class="editBtn" @click.stop="openEdit">
<span>{{ $t('curriculumVitae:other:AH') }}</span>
<el-button
type="text"
class="editBtn"
:disabled="!reviewerId"
@click.stop="openEdit"
>
{{ $t('common:button:edit') }}
</el-button>
</div>
<div class="message">
<div>{{ $t('curriculumVitae:other:AH') }}</div>
<p>a诺夫卡刷积分八九十快点把手里的v八路军那是的健康蓝色的艰苦拉萨的</p>
<div class="message" v-if="DATA.AwardsHonors || DATA.AwardsHonorsCN">
<span v-if="isEN">{{ DATA.AwardsHonors }}</span>
<span v-else>{{ DATA.AwardsHonorsCN }}</span>
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<base-model :config="model_cfg">
<template slot="dialog-body">
<el-form
@ -22,21 +28,26 @@
>
<el-form-item
:label="$t('curriculumVitae:other:form:AH')"
prop="InternationalizationType"
prop="AwardsHonors"
>
<el-input
clearable
v-model="form.AwardsHonors"
style="margin-bottom: 10px"
type="textarea"
:rows="2"
:placeholder="$t('curriculumVitae:other:placeholder:AHEN')"
></el-input>
</el-form-item>
<el-form-item prop="AwardsHonorsCN">
<el-input
clearable
v-model="form.AwardsHonorsCN"
style="margin-bottom: 10px"
type="textarea"
:rows="2"
:placeholder="$t('curriculumVitae:other:placeholder:AH')"
></el-input>
<el-input
clearable
type="textarea"
:rows="2"
:placeholder="$t('curriculumVitae:other:placeholder:AHEN')"
></el-input>
</el-form-item>
</el-form>
</template>
@ -44,7 +55,12 @@
<el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" @click="handleSave">
<el-button
size="small"
type="primary"
:loading="loading"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
</template>
@ -53,9 +69,34 @@
</template>
<script>
import BaseModel from '@/components/BaseModel'
import { addOrUpdateResearchPublicationInfo } from '@/api/reviewers'
const defaultForm = () => {
return {
Id: null,
AwardsHonors: '',
AwardsHonorsCN: '',
}
}
export default {
name: 'other',
components: { BaseModel },
props: {
DATA: {
type: Object,
required: true,
default: () => {
return {}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
model_cfg: {
@ -65,20 +106,43 @@ export default {
title: this.$t('curriculumVitae:scientificResearchProject:form:title'),
appendToBody: true,
},
form: {},
form: defaultForm(),
rules: {},
loading: false,
}
},
methods: {
openEdit() {
this.form = defaultForm()
Object.keys(this.form).forEach((key) => {
if (this.DATA[key]) {
this.form[key] = this.DATA[key]
}
})
this.model_cfg.visible = true
},
handleCancle() {
this.form = defaultForm()
this.model_cfg.visible = false
},
handleSave() {
this.model_cfg.visible = false
async handleSave() {
try {
let validate = await this.$refs.otherFrom.validate()
if (!validate) return false
if (this.reviewerId) {
this.form.DoctorId = this.reviewerId
}
this.loading = true
let res = await addOrUpdateResearchPublicationInfo(this.form)
this.loading = false
if (res.IsSuccess) {
this.$emit('getInfo')
this.model_cfg.visible = false
}
} catch (err) {
this.loading = false
console.log(err)
}
},
},
}

View File

@ -2,7 +2,12 @@
<div class="pay">
<div class="title">
<span>{{ $t('curriculumVitae:pay:title') }}</span>
<el-button type="text" class="editBtn" @click.stop="openEdit">
<el-button
type="text"
class="editBtn"
:disabled="!reviewerId"
@click.stop="openEdit"
>
{{ $t('common:button:edit') }}
</el-button>
</div>
@ -11,25 +16,33 @@
<el-form-item
:label="$t('curriculumVitae:pay:form:payCardId')"
style="width: 45%"
>21323123123123123213123123213123</el-form-item
>
{{ DATA.BankNum }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:username')"
style="width: 45%"
>wangxiaoshuang</el-form-item
>
{{ DATA.BankName }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:bank')"
style="width: 45%"
></el-form-item>
>
{{ DATA.OpeningBank }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:idCard')"
style="width: 45%"
></el-form-item>
>
{{ DATA.IdCard }}
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:pay:form:phone')"
style="width: 45%"
></el-form-item>
>
{{ DATA.BankPhoneNum }}
</el-form-item>
</el-form>
</div>
<base-model :config="model_cfg">
@ -47,37 +60,53 @@
<el-form-item
style="width: 45%"
:label="$t('curriculumVitae:pay:form:payCardId')"
prop="InternationalizationType"
prop="BankNum"
>
<el-input clearable placeholder=""></el-input>
<el-input
clearable
placeholder=""
v-model="form.BankNum"
></el-input>
</el-form-item>
<el-form-item
style="width: 45%"
:label="$t('curriculumVitae:pay:form:username')"
prop="InternationalizationType"
prop="BankName"
>
<el-input clearable placeholder=""></el-input>
<el-input
clearable
placeholder=""
v-model="form.BankName"
></el-input>
</el-form-item>
<el-form-item
style="width: 45%"
:label="$t('curriculumVitae:pay:form:bank')"
prop="InternationalizationType"
prop="OpeningBank"
>
<el-input clearable placeholder=""></el-input>
<el-input
clearable
placeholder=""
v-model="form.OpeningBank"
></el-input>
</el-form-item>
<el-form-item
style="width: 45%"
:label="$t('curriculumVitae:pay:form:idCard')"
prop="InternationalizationType"
prop="IdCard"
>
<el-input clearable placeholder=""></el-input>
<el-input clearable placeholder="" v-model="form.IdCard"></el-input>
</el-form-item>
<el-form-item
style="width: 45%"
:label="$t('curriculumVitae:pay:form:phone')"
prop="InternationalizationType"
prop="BankPhoneNum"
>
<el-input clearable placeholder=""></el-input>
<el-input
clearable
placeholder=""
v-model="form.BankPhoneNum"
></el-input>
</el-form-item>
</el-form>
</template>
@ -85,7 +114,12 @@
<el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" @click="handleSave">
<el-button
size="small"
type="primary"
:loading="loading"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
</template>
@ -94,32 +128,82 @@
</template>
<script>
import BaseModel from '@/components/BaseModel'
import { updatePaymentMode } from '@/api/reviewers'
const defaultForm = () => {
return {
BankNum: '',
BankName: '',
OpeningBank: '',
IdCard: '',
BankPhoneNum: '',
}
}
export default {
name: 'pay',
components: { BaseModel },
props: {
DATA: {
type: Object,
required: true,
default: () => {
return {}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
model_cfg: {
visible: false,
showClose: true,
width: '800px',
title: this.$t('curriculumVitae:scientificResearchProject:form:title'),
title: this.$t('curriculumVitae:pay:form:title'),
appendToBody: true,
},
form: {},
form: defaultForm(),
rules: {},
loading: false,
}
},
methods: {
openEdit() {
this.form = defaultForm()
Object.keys(this.form).forEach((key) => {
if (this.DATA[key]) {
this.form[key] = this.DATA[key]
}
})
this.model_cfg.visible = true
},
handleCancle() {
this.form = defaultForm()
this.model_cfg.visible = false
},
handleSave() {
this.model_cfg.visible = false
async handleSave() {
try {
let validate = await this.$refs.payFrom.validate()
if (!validate) return false
if (this.reviewerId) {
this.form.Id = this.reviewerId
}
this.loading = true
let res = await updatePaymentMode(this.form)
this.loading = false
if (res.IsSuccess) {
this.$emit('getInfo')
this.model_cfg.visible = false
}
} catch (err) {
this.loading = false
console.log(err)
}
},
},
}

View File

@ -2,28 +2,43 @@
<div class="scientificResearchProject">
<div class="title">
<span>{{ $t('curriculumVitae:scientificResearchProject:title') }}</span>
<el-button type="text" class="editBtn" @click.stop="openEdit">
<el-button
type="text"
class="editBtn"
:disabled="!reviewerId"
@click.stop="openEdit"
>
{{ $t('common:button:edit') }}
</el-button>
</div>
<div class="message">
<div
class="message"
v-if="DATA.Research || DATA.ResearchCN || DATA.Grants || DATA.GrantsCN"
>
<el-form class="demo-form-inline">
<el-form-item
:label="$t('curriculumVitae:scientificResearchProject:direction')"
>
<div>direction</div>
<div>
<span v-if="isEN">{{ DATA.Research }}</span>
<span v-else>{{ DATA.ResearchCN }}</span>
</div>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:scientificResearchProject:subject')"
>
<div>subject</div>
<div>
<span v-if="isEN">{{ DATA.Grants }}</span>
<span v-else>{{ DATA.GrantsCN }}</span>
</div>
</el-form-item>
</el-form>
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<base-model :config="model_cfg">
<template slot="dialog-body">
<el-form
ref="continuingTrainingFrom"
ref="scientificResearchProjectFrom"
v-loading="loading"
:model="form"
:rules="rules"
@ -34,22 +49,26 @@
:label="
$t('curriculumVitae:scientificResearchProject:form:direction')
"
prop="InternationalizationType"
prop="Research"
>
<el-input
clearable
v-model="form.Research"
style="margin-bottom: 10px"
:placeholder="
$t(
'curriculumVitae:scientificResearchProject:placeholder:direction'
'curriculumVitae:scientificResearchProject:placeholder:directionEN'
)
"
></el-input>
</el-form-item>
<el-form-item prop="ResearchCN">
<el-input
v-model="form.ResearchCN"
clearable
:placeholder="
$t(
'curriculumVitae:scientificResearchProject:placeholder:directionEN'
'curriculumVitae:scientificResearchProject:placeholder:direction'
)
"
></el-input>
@ -58,26 +77,30 @@
:label="
$t('curriculumVitae:scientificResearchProject:form:subject')
"
prop="InternationalizationType"
prop="Grants"
>
<el-input
v-model="form.Grants"
clearable
style="margin-bottom: 10px"
type="textarea"
:rows="2"
:placeholder="
$t(
'curriculumVitae:scientificResearchProject:placeholder:subject'
'curriculumVitae:scientificResearchProject:placeholder:subjectEN'
)
"
></el-input>
</el-form-item>
<el-form-item prop="GrantsCN">
<el-input
clearable
v-model="form.GrantsCN"
type="textarea"
:rows="2"
:placeholder="
$t(
'curriculumVitae:scientificResearchProject:placeholder:subjectEN'
'curriculumVitae:scientificResearchProject:placeholder:subject'
)
"
></el-input>
@ -88,7 +111,12 @@
<el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" @click="handleSave">
<el-button
size="small"
type="primary"
:loading="loading"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
</template>
@ -97,9 +125,36 @@
</template>
<script>
import BaseModel from '@/components/BaseModel'
import { addOrUpdateResearchPublicationInfo } from '@/api/reviewers'
const defaultForm = () => {
return {
Id: null,
Research: '',
ResearchCN: '',
Grants: '',
GrantsCN: '',
}
}
export default {
name: 'scientificResearchProject',
components: { BaseModel },
props: {
DATA: {
type: Object,
required: true,
default: () => {
return {}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
model_cfg: {
@ -109,20 +164,43 @@ export default {
title: this.$t('curriculumVitae:scientificResearchProject:form:title'),
appendToBody: true,
},
form: {},
form: defaultForm(),
rules: {},
loading: false,
}
},
methods: {
openEdit() {
this.form = defaultForm()
Object.keys(this.form).forEach((key) => {
if (this.DATA[key]) {
this.form[key] = this.DATA[key]
}
})
this.model_cfg.visible = true
},
handleCancle() {
this.form = defaultForm()
this.model_cfg.visible = false
},
handleSave() {
this.model_cfg.visible = false
async handleSave() {
try {
let validate = await this.$refs.scientificResearchProjectFrom.validate()
if (!validate) return false
if (this.reviewerId) {
this.form.DoctorId = this.reviewerId
}
this.loading = true
let res = await addOrUpdateResearchPublicationInfo(this.form)
this.loading = false
if (res.IsSuccess) {
this.$emit('getInfo')
this.model_cfg.visible = false
}
} catch (err) {
this.loading = false
console.log(err)
}
},
},
}

View File

@ -128,13 +128,7 @@
@change="(a) => selectOther(a, 'Subspeciality')"
>
<el-option
v-for="item of [
...dictionaryList.Subspeciality,
{
Id: otherId,
Value: 'Other',
},
]"
v-for="item of Subspeciality"
:key="item.Id"
:label="item.Value"
:value="item.Id"
@ -184,13 +178,7 @@
@change="(a) => selectOther(a, 'ReadingType')"
>
<el-option
v-for="item of [
...dictionaryList.ReadingType,
{
Id: otherId,
Value: 'Other',
},
]"
v-for="item of ReadingType"
:key="item.Id"
:label="item.Value"
:value="item.Id"
@ -270,13 +258,24 @@ export default {
type: Object,
required: true,
default: () => {
return {}
return {
ReadingTypeCNList: [],
ReadingTypeIds: [],
ReadingTypeList: [],
SubspecialityCNList: [],
SubspecialityIds: [],
SubspecialityList: [],
}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
@ -330,17 +329,36 @@ export default {
},
loading: false,
otherId: 'ef84e9cb-f1a6-49d7-b6da-34be2c12abd5',
dictionaryList: {},
dictionaryList: {
Subspeciality: [],
Department: [],
ReadingType: [],
},
}
},
computed: {
isEN() {
return this.$i18n.locale !== 'zh'
},
},
mounted() {
this.getDicData()
},
computed: {
Subspeciality() {
return [
...this.dictionaryList.Subspeciality,
{
Id: this.otherId,
Value: 'Other',
},
]
},
ReadingType() {
return [
...this.dictionaryList.ReadingType,
{
Id: this.otherId,
Value: 'Other',
},
]
},
},
methods: {
openEdit() {
this.form = defaultForm()

View File

@ -2,13 +2,18 @@
<div class="summarize">
<div class="title">
<span>{{ $t('curriculumVitae:summarize:title') }}</span>
<el-button type="text" class="editBtn" @click.stop="openEdit">
<el-button
type="text"
class="editBtn"
:disabled="!reviewerId"
@click.stop="openEdit"
>
{{ $t('common:button:edit') }}
</el-button>
</div>
<template v-if="true">
<div class="message"></div>
</template>
<div class="message" v-if="DATA.SummarizeEn || DATA.Summarize">
{{ isEN ? DATA.SummarizeEn : DATA.Summarize }}
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<base-model :config="model_cfg">
<template slot="dialog-body">
@ -22,19 +27,21 @@
>
<el-form-item
:label="$t('curriculumVitae:summarize:form:summarize')"
prop="InternationalizationType"
prop="Summarize"
>
<el-input
:placeholder="
$t('curriculumVitae:summarize:form:placeholder:summarize')
"
v-model="form.Summarize"
type="textarea"
:rows="2"
clearable
></el-input>
</el-form-item>
<el-form-item prop="InternationalizationType">
<el-form-item prop="SummarizeEn">
<el-input
v-model="form.SummarizeEn"
:placeholder="
$t('curriculumVitae:summarize:form:placeholder:summarizeEN')
"
@ -49,7 +56,12 @@
<el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" @click="handleSave">
<el-button
size="small"
type="primary"
:loading="loading"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
</template>
@ -58,9 +70,33 @@
</template>
<script>
import BaseModel from '@/components/BaseModel'
import { updateGneralSituation } from '@/api/reviewers'
const defaultForm = () => {
return {
SummarizeEn: '',
Summarize: '',
}
}
export default {
name: 'summarize',
components: { BaseModel },
props: {
DATA: {
type: Object,
required: true,
default: () => {
return {}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
model_cfg: {
@ -70,20 +106,43 @@ export default {
title: this.$t('curriculumVitae:summarize:form:title'),
appendToBody: true,
},
form: {},
form: defaultForm(),
rules: {},
loading: false,
}
},
methods: {
openEdit() {
this.form = defaultForm()
Object.keys(this.form).forEach((key) => {
if (this.DATA[key]) {
this.form[key] = this.DATA[key]
}
})
this.model_cfg.visible = true
},
handleCancle() {
this.form = defaultForm()
this.model_cfg.visible = false
},
handleSave() {
this.model_cfg.visible = false
async handleSave() {
try {
let validate = await this.$refs.summarizeFrom.validate()
if (!validate) return false
if (this.reviewerId) {
this.form.Id = this.reviewerId
}
this.loading = true
let res = await updateGneralSituation(this.form)
this.loading = false
if (res.IsSuccess) {
this.$emit('getInfo')
this.model_cfg.visible = false
}
} catch (err) {
this.loading = false
console.log(err)
}
},
},
}

View File

@ -2,41 +2,19 @@
<div class="treatise">
<div class="title">
<span>{{ $t('curriculumVitae:treatise:title') }}</span>
<el-button type="text" class="editBtn" @click.stop="openEdit">
{{ $t('common:button:add') }}
<el-button
type="text"
class="editBtn"
:disabled="!reviewerId"
@click.stop="openEdit"
>
{{ $t('common:button:edit') }}
</el-button>
</div>
<el-table
:data="tableData"
style="width: 100%"
:header-cell-style="{ background: '#eee', color: '#606266' }"
>
<el-table-column
prop="date"
:label="$t('curriculumVitae:treatise:table:author')"
>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:treatise:table:name')"
>
</el-table-column>
<el-table-column
prop="date"
:label="$t('curriculumVitae:treatise:table:publish')"
>
</el-table-column>
<el-table-column prop="date" :label="$t('common:action:action')">
<template slot-scope="scope">
<el-button type="text" class="editBtn" @click.stop="openEdit(scope)">
{{ $t('common:button:edit') }}
</el-button>
<el-button type="text" class="editBtn" @click.stop="openEdit">
{{ $t('common:button:delete') }}
</el-button>
</template>
</el-table-column>
</el-table>
<div class="message" v-if="DATA.Publications">
{{ DATA.Publications }}
</div>
<div class="noData" v-else>{{ $t('curriculumVitae:noData') }}</div>
<base-model :config="model_cfg">
<template slot="dialog-body">
<el-form
@ -47,24 +25,16 @@
label-width="80px"
size="small"
>
<el-form-item
:label="$t('curriculumVitae:treatise:form:author')"
prop="InternationalizationType"
>
<el-input clearable></el-input>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:treatise:form:name')"
prop="InternationalizationType"
prop="Publications"
>
<el-input clearable type="textarea" :rows="2"></el-input>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:treatise:form:publish')"
prop="InternationalizationType"
>
<el-input clearable type="textarea" :rows="2"></el-input>
<el-input
v-model="form.Publications"
clearable
type="textarea"
:rows="6"
></el-input>
</el-form-item>
</el-form>
</template>
@ -72,7 +42,12 @@
<el-button size="small" type="primary" @click="handleCancle">
{{ $t('common:button:cancel') }}
</el-button>
<el-button size="small" type="primary" @click="handleSave">
<el-button
size="small"
type="primary"
:loading="loading"
@click="handleSave"
>
{{ $t('common:button:save') }}
</el-button>
</template>
@ -81,12 +56,35 @@
</template>
<script>
import BaseModel from '@/components/BaseModel'
import { addOrUpdateResearchPublicationInfo } from '@/api/reviewers'
const defaultForm = () => {
return {
Id: null,
Publications: '',
}
}
export default {
name: 'treatise',
components: { BaseModel },
props: {
DATA: {
type: Object,
required: true,
default: () => {
return {}
},
},
reviewerId: {
type: String,
default: '',
},
isEN: {
type: Boolean,
default: false,
},
},
data() {
return {
tableData: [],
model_cfg: {
visible: false,
showClose: true,
@ -94,7 +92,7 @@ export default {
title: this.$t('curriculumVitae:treatise:form:title'),
appendToBody: true,
},
form: {},
form: defaultForm(),
rules: {},
loading: false,
daterange: [],
@ -102,13 +100,36 @@ export default {
},
methods: {
openEdit() {
this.form = defaultForm()
Object.keys(this.form).forEach((key) => {
if (this.DATA[key]) {
this.form[key] = this.DATA[key]
}
})
this.model_cfg.visible = true
},
handleCancle() {
this.form = defaultForm()
this.model_cfg.visible = false
},
handleSave() {
this.model_cfg.visible = false
async handleSave() {
try {
let validate = await this.$refs.treatiseFrom.validate()
if (!validate) return false
if (this.reviewerId) {
this.form.DoctorId = this.reviewerId
}
this.loading = true
let res = await addOrUpdateResearchPublicationInfo(this.form)
this.loading = false
if (res.IsSuccess) {
this.$emit('getInfo')
this.model_cfg.visible = false
}
} catch (err) {
this.loading = false
console.log(err)
}
},
},
}
@ -127,4 +148,13 @@ export default {
.el-date-editor {
width: 97%;
}
.message {
margin: auto;
min-height: 100px;
background-color: #eee;
padding: 10px;
line-height: 30px;
border-radius: 5px;
white-space: pre-wrap;
}
</style>

View File

@ -65,17 +65,26 @@
...reviewerData.EmploymentView,
}"
:reviewerId.sync="reviewerId"
:isEN="isEN"
@getInfo="getDetail"
/>
</div>
<div class="box" id="summarize">
<summarize />
<summarize
:DATA="{
...reviewerData.SummarizeInfo,
}"
:reviewerId.sync="reviewerId"
:isEN="isEN"
@getInfo="getDetail"
/>
</div>
<div class="box" id="specialty">
<specialty
:DATA="{
...reviewerData.SpecialtyView,
}"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
@ -83,27 +92,58 @@
<div class="box" id="educationalExperience">
<educationalExperience
:DATA="reviewerData.EducationList"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
<div class="box" id="continuingTraining">
<continuingTraining />
<continuingTraining
:DATA="reviewerData.PostgraduateList"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
<div class="box" id="scientificResearchProject">
<scientificResearchProject />
<scientificResearchProject
:DATA="{ ...reviewerData.ResearchPublicationView }"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
<div class="box" id="clinicalTrials">
<clinicalTrials />
<clinicalTrials
:DATA="{ ...reviewerData.TrialExperienceView }"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
<div class="box" id="treatise">
<treatise />
<treatise
:DATA="{ ...reviewerData.ResearchPublicationView }"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
<div class="box" id="other">
<other />
<other
:DATA="{ ...reviewerData.ResearchPublicationView }"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
<div class="box" id="pay">
<pay />
<pay
:DATA="{ ...reviewerData.PaymentModeInfo }"
:isEN="isEN"
:reviewerId.sync="reviewerId"
@getInfo="getDetail"
/>
</div>
</div>
<div class="rightFile">
@ -164,9 +204,26 @@ export default {
reviewerData: {
BasicInfoView: {},
EmploymentView: {},
AckSowList: [],
AttachmentList: [],
AuditView: {},
EducationList: [],
IntoGroupInfo: {},
PaymentModeInfo: {},
PostgraduateList: [],
ResearchPublicationView: {},
SowList: [],
SpecialtyView: {},
SummarizeInfo: {},
TrialExperienceView: {},
},
}
},
computed: {
isEN() {
return this.$i18n.locale !== 'zh'
},
},
async created() {
this.$i18n.locale = this.$route.query.lang
await this.setLanguage(this.$route.query.lang)
@ -229,7 +286,9 @@ export default {
}
}
// vue data
this.activeIndex = navItem.id
if (navItem) {
this.activeIndex = navItem.id
}
},
//
openPreview() {

View File

@ -1,23 +1,27 @@
<template>
<div style="text-align: right">
<!--导出-->
<el-button type="primary" :disabled="!(trialCriterionList.length>0)" icon="el-icon-download" size="mini" @click="handleExport(0)" style="margin-bottom: 10px">
<el-button
type="primary"
:disabled="!(trialCriterionList.length > 0)"
icon="el-icon-download"
size="mini"
@click="handleExport(0)"
style="margin-bottom: 10px"
>
{{ $t('common:button:export') }}
</el-button>
<el-tabs type="border-card" v-model="TrialReadingCriterionId">
<el-tab-pane :label="i.TrialReadingCriterionName" :name="i.TrialReadingCriterionId" v-for="i of trialCriterionList" :key="i.TrialReadingCriterionId">
<el-table
v-loading="loading"
:data="list"
border
stripe
>
<el-table-column
label=""
:min-width="50"
>
<el-tab-pane
:label="i.TrialReadingCriterionName"
:name="i.TrialReadingCriterionId"
v-for="i of trialCriterionList"
:key="i.TrialReadingCriterionId"
>
<el-table v-loading="loading" :data="list" border stripe>
<el-table-column label="" :min-width="50">
<template slot-scope="scope">
{{scope.$index + 1}}
{{ scope.$index + 1 }}
</template>
</el-table-column>
<!-- 文件名称 -->
@ -52,73 +56,120 @@
</template>
<script>
import { getReadingTaskList_Export, getTrialReadingCriterionCanExportDocumentList, getOverallTumorEvaluationList_Export, getEvaluationOfTumorEfficacy_Export, getDetailedOfEvaluatedLesion_Export } from '@/api/export'
import {
getCommonEvaluationList_Export,
getCommonJudgeRatioList_Export,
getReadingTaskList_Export,
getTrialReadingCriterionCanExportDocumentList,
getOverallTumorEvaluationList_Export,
getEvaluationOfTumorEfficacy_Export,
getDetailedOfEvaluatedLesion_Export,
} from '@/api/export'
import { getTrialCriterionList } from '@/api/trials/reading'
export default {
name: "exportList",
name: 'exportList',
data() {
return {
loading: false,
trialCriterionList: [],
TrialReadingCriterionId: null,
trialId: null,
list: []
list: [],
}
},
props: {
data: {
type: Object,
default() { return {} }
}
default() {
return {}
},
},
},
watch: {
TrialReadingCriterionId(v) {
if (v === '0') return
this.loading = true
getTrialReadingCriterionCanExportDocumentList({TrialReadingCriterionId: v}).then(res => {
this.list = res.Result
this.loading = false
}).catch(() => { this.loading = true })
}
getTrialReadingCriterionCanExportDocumentList({
TrialReadingCriterionId: v,
})
.then((res) => {
this.list = res.Result
this.loading = false
})
.catch(() => {
this.loading = true
})
},
},
mounted() {
this.trialId =this.$route.query.trialId
this.trialId = this.$route.query.trialId
this.getTrialCriterionList()
},
methods: {
handleExport(type) {
var searchData = {...this.data}
var searchData = { ...this.data }
searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
switch (type) {
case 0:
getReadingTaskList_Export(searchData).then(res => {
}).catch(() => { this.loading = false })
break;
case 1:
getOverallTumorEvaluationList_Export(searchData).then(res => {
}).catch(() => { this.loading = false })
break;
case 2:
getEvaluationOfTumorEfficacy_Export(searchData).then(res => {
}).catch(() => { this.loading = false })
getReadingTaskList_Export(searchData)
.then((res) => {})
.catch(() => {
this.loading = false
})
break
case 4:
searchData.ReadingExportType = 0
getCommonEvaluationList_Export(searchData)
.then((res) => {})
.catch(() => {
this.loading = false
})
break
case 5:
searchData.ReadingExportType = 1
getCommonEvaluationList_Export(searchData)
.then((res) => {})
.catch(() => {
this.loading = false
})
break
case 6:
searchData.ReadingExportType = 2
getCommonEvaluationList_Export(searchData)
.then((res) => {})
.catch(() => {
this.loading = false
})
break
case 7:
getCommonJudgeRatioList_Export(searchData)
.then((res) => {})
.catch(() => {
this.loading = false
})
break
case 8:
getCommonJudgeRatioList_Export(searchData)
.then((res) => {})
.catch(() => {
this.loading = false
})
break
case 3:
getDetailedOfEvaluatedLesion_Export(searchData).then(res => {
}).catch(() => { this.loading = false })
break;
}
},
getTrialCriterionList() {
getTrialCriterionList(this.trialId).then(res => {
this.trialCriterionList = res.Result
this.TrialReadingCriterionId = this.trialCriterionList[0].TrialReadingCriterionId
}).catch(() => {})
}
}
getTrialCriterionList(this.trialId)
.then((res) => {
this.trialCriterionList = res.Result
this.TrialReadingCriterionId =
this.trialCriterionList[0].TrialReadingCriterionId
})
.catch(() => {})
},
},
}
</script>
<style scoped>
</style>