Merge commit '49dcab2a0e6e2b5a2de22a4256ec383b3b9ddb28' into uat

# Conflicts:
#	src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue
#	src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue
#	src/views/trials/trials-panel/visit/crc-upload/index.vue
#	vue.config.js
uat_us
wangxiaoshuang 2024-05-29 16:19:16 +08:00
commit 0ce246689b
276 changed files with 15873 additions and 7945 deletions

View File

@ -27,7 +27,7 @@ VUE_APP_LOGOUT_FOR_PERMISSION = false
VUE_APP_LOGOUT_FOR_TIME = 1800 VUE_APP_LOGOUT_FOR_TIME = 1800
# 是否开启密码正则验证 true:是 false:否 # 是否开启密码正则验证 true:是 false:否
VUE_APP_PASSWORD_FOR_PERMISSION = true VUE_APP_PASSWORD_FOR_PERMISSION = false
# 密码校验规则 # 密码校验规则
VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
@ -35,6 +35,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否 # 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = false VUE_APP_WORD_FOR_PERMISSION = false
# 公司名称
VUE_APP_COMPANY_NAME = "Extensive Imaging"
# dicom文件地址 # dicom文件地址
VUE_APP_DICOM_PATH = 'https://zyypacs.oss-cn-shanghai.aliyuncs.com' VUE_APP_DICOM_PATH = 'https://zyypacs.oss-cn-shanghai.aliyuncs.com'

View File

@ -29,6 +29,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否 # 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = true VUE_APP_WORD_FOR_PERMISSION = true
# 公司名称
VUE_APP_COMPANY_NAME = "Extensive Imaging"
# dicom文件地址 # dicom文件地址
# VUE_APP_DICOM_PATH = 'http://101.132.193.237:7080' # VUE_APP_DICOM_PATH = 'http://101.132.193.237:7080'
VUE_APP_DICOM_PATH = 'https://zyypacs-prod.oss-cn-shanghai.aliyuncs.com' VUE_APP_DICOM_PATH = 'https://zyypacs-prod.oss-cn-shanghai.aliyuncs.com'

View File

@ -31,6 +31,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否 # 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = true VUE_APP_WORD_FOR_PERMISSION = true
# 公司名称
VUE_APP_COMPANY_NAME = "Extensive Imaging"
# dicom文件地址 # dicom文件地址
VUE_APP_DICOM_PATH = 'https://zyypacs-uat.oss-cn-shanghai.aliyuncs.com' VUE_APP_DICOM_PATH = 'https://zyypacs-uat.oss-cn-shanghai.aliyuncs.com'

View File

@ -2,7 +2,7 @@
ENV = 'production' ENV = 'production'
NODE_ENV = 'production' NODE_ENV = 'production'
# base public path # base public path
VUE_APP_BASE_PATH = 'https://ei-code-prod.s3.amazonaws.com/2024-01-31/' VUE_APP_BASE_PATH = 'https://ei-code-prod.s3.amazonaws.com/2024-04-29/'
# 是否开启登陆限制 true:是 false:否 # 是否开启登陆限制 true:是 false:否
VUE_APP_LOGIN_FOR_PERMISSION = false VUE_APP_LOGIN_FOR_PERMISSION = false
@ -28,6 +28,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
# 是否开启文档签署验证 true:是 false:否 # 是否开启文档签署验证 true:是 false:否
VUE_APP_WORD_FOR_PERMISSION = true VUE_APP_WORD_FOR_PERMISSION = true
# 公司名称
VUE_APP_COMPANY_NAME = "Elevate Imaging"
# dicom文件地址 # dicom文件地址
VUE_APP_DICOM_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com' VUE_APP_DICOM_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'

9
package-lock.json generated
View File

@ -11520,6 +11520,15 @@
"resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
}, },
"moment-timezone": {
"version": "0.5.45",
"resolved": "https://registry.npmmirror.com/moment-timezone/-/moment-timezone-0.5.45.tgz",
"integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==",
"dev": true,
"requires": {
"moment": "^2.29.4"
}
},
"move-concurrently": { "move-concurrently": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz",

View File

@ -2,7 +2,7 @@
"name": "EICS", "name": "EICS",
"version": "1.3.2", "version": "1.3.2",
"scripts": { "scripts": {
"dev": "vue-cli-service serve --open", "dev": "vue-cli-service serve --open --mode development",
"build": "vue-cli-service build", "build": "vue-cli-service build",
"build:prod": "vue-cli-service build --mode prod", "build:prod": "vue-cli-service build --mode prod",
"build:uat": "vue-cli-service build --mode uat", "build:uat": "vue-cli-service build --mode uat",
@ -83,6 +83,7 @@
"eslint-plugin-vue": "^6.2.2", "eslint-plugin-vue": "^6.2.2",
"html-webpack-plugin": "3.2.0", "html-webpack-plugin": "3.2.0",
"minio": "^7.1.3", "minio": "^7.1.3",
"moment-timezone": "^0.5.45",
"node-xlsx": "^0.21.0", "node-xlsx": "^0.21.0",
"runjs": "^4.3.2", "runjs": "^4.3.2",
"script-ext-html-webpack-plugin": "2.1.3", "script-ext-html-webpack-plugin": "2.1.3",

View File

@ -148,8 +148,8 @@ export default {
} else { } else {
this.tableData = Object.assign([], this.arr) this.tableData = Object.assign([], this.arr)
} }
console.log(JSON.stringify(this.$path)) // console.log(JSON.stringify(this.$path))
console.log(JSON.stringify(this.tableData)) // console.log(JSON.stringify(this.tableData))
} }
} }
} }

View File

@ -22,9 +22,9 @@ export function getBasicDataSelects(param) {
}) })
} }
export function getBasicDataAllSelect(params) { export function getBasicDataAllSelect(params, isSystem) {
return request({ return request({
url: params ? `/Dictionary/getBasicDataAllSelect?TrialReadingCriterionId=${params}` : `/Dictionary/getBasicDataAllSelect`, url: params ? (isSystem ? `/Dictionary/getBasicDataAllSelect?SystemReadingCriterionId=${params}` : `/Dictionary/getBasicDataAllSelect?TrialReadingCriterionId=${params}`) : `/Dictionary/getBasicDataAllSelect`,
method: 'get' method: 'get'
}) })
} }

View File

@ -1747,6 +1747,21 @@ export function deleteTrialExternalUser(id) {
method: 'delete' method: 'delete'
}) })
} }
export function getUserTobeDoneRecord() {
return request({
url: `/PersonalWorkstation/getUserTobeDoneRecord`,
method: 'get'
})
}
export function getNeedSignTrialDocTrialIdList() {
return request({
url: `/PersonalWorkstation/getNeedSignTrialDocTrialIdList`,
method: 'get'
})
}
export function getBasicStat() { export function getBasicStat() {
return request({ return request({
url: `/PersonalWorkstation/getBasicStat`, url: `/PersonalWorkstation/getBasicStat`,
@ -2795,6 +2810,29 @@ export function saveImageQuality(param) {
data: param data: param
}) })
} }
export function getIsSuvMaxLesion(param) {
return request({
url: `/LuganoCalculate/getIsSuvMaxLesion`,
method: 'post',
data: param
})
}
export function getCanChooseNotMerge(param) {
return request({
url: `/LuganoCalculate/getCanChooseNotMerge`,
method: 'post',
data: param
})
}
export function saveTaskQuestion(saveQuestionType, param) {
return request({
url: `/SaveTaskQuestion/${saveQuestionType}`,
method: 'post',
data: param
})
}
export function deleteReadingRowAnswer(param) { export function deleteReadingRowAnswer(param) {
return request({ return request({
url: `/ReadingImageTask/deleteReadingRowAnswer`, url: `/ReadingImageTask/deleteReadingRowAnswer`,
@ -2864,6 +2902,14 @@ export function asyncTrialCriterionDictionary(param) {
}) })
} }
export function configTrialProcessInfoVerification(param) {
return request({
url: `/TrialConfig/configTrialProcessInfoVerification`,
method: 'post',
data: param
})
}
export function getTrialEmailNoticeConfigList(param) { export function getTrialEmailNoticeConfigList(param) {
return request({ return request({
url: `/TrialEmailNoticeConfig/getTrialEmailNoticeConfigList`, url: `/TrialEmailNoticeConfig/getTrialEmailNoticeConfigList`,
@ -3519,3 +3565,105 @@ export function getTrialSiteSurveySelectList(param) {
data: param data: param
}) })
} }
export function getCanMergeLesion(param) {
return request({
url: `/ReadingImageTask/getCanMergeLesion`,
method: 'post',
data: param
})
}
export function mergeLesion(param) {
return request({
url: `/ReadingImageTask/mergeLesion`,
method: 'post',
data: param
})
}
export function resetAndAsyncCriterion(param) {
return request({
url: `/Inspection/ReadingCriterion/ResetAndAsyncCriterion`,
method: 'post',
data: param
})
}
export function batchSetCriterionJoinJoinAnalysis(param) {
return request({
url: `/DoctorWorkload/batchSetCriterionJoinJoinAnalysis`,
method: 'post',
data: param
})
}
export function updateTrialVirtualSiteCode(param) {
return request({
url: `/TaskConsistentRule/updateTrialVirtualSiteCode`,
method: 'post',
data: param
})
}
export function getUpdateVirtualSiteCodeList(param) {
return request({
url: `/TaskConsistentRule/getUpdateVirtualSiteCodeList?trialId=${param.trialId}`,
method: 'get'
})
}
export function addDefaultQuestions(param) {
return request({
url: `/ReadingMedicineQuestion/addDefaultQuestions`,
method: 'post',
data: param
})
}
export function getReadingCalculationData(param) {
return request({
url: `/ReadingImageTask/getReadingCalculationData`,
method: 'post',
data: param
})
}
export function getTrialSignDocumentList(param) {
return request({
url: `/TrialDocument/getTrialSignDocumentList`,
method: 'post',
data: param
})
}
export function getPreviousOtherPicturePath(param) {
return request({
url: `/ReadingImageTask/getPreviousOtherPicturePath`,
method: 'post',
data: param
})
}
export function verifyIsCanConfirm(param) {
return request({
url: `/ReadingMedicineQuestion/verifyIsCanConfirm`,
method: 'post',
data: param
})
}
export function getPTAndCtSeries(param) {
return request({
url: `/SubjectVisit/getPTAndCtSeries`,
method: 'post',
data: param
})
}
export function getDicomSeriesInfo(param) {
return request({
url: `/SubjectVisit/getDicomSeriesInfo`,
method: 'post',
data: param
})
}

View File

@ -7,7 +7,12 @@ export function login(data) {
data data
}) })
} }
export function loginOut() {
return request({
url: `/User/loginOut`,
method: 'get'
})
}
export function getAllDictionary() { export function getAllDictionary() {
return request({ return request({
url: '/dictionary/getAllDictionary', url: '/dictionary/getAllDictionary',

BIN
src/assets/pic-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/assets/zzlogo4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -2,13 +2,13 @@
<template> <template>
<div class="trialsTab"> <div class="trialsTab">
<el-tabs v-model="trialsTab" @tab-click="clickTab"> <el-tabs v-model="trialsTab" @tab-click="clickTab">
<el-tab-pane v-for="item of trialsRouter.children.find(v => {return v.name == 'TrialsPanel'}).children" :key="`tab${item.path}`" :disabled="TotalNeedSignTrialDocCount !== 0" :label="$t(item.LanguageMark)" :name="item.path"> <el-tab-pane v-for="item of trialsRouter.children.find(v => {return v.name == 'TrialsPanel'}).children" :key="`tab${item.path}`" :disabled="TotalNeedSignTrialDocCount !== 0 && item.path !== '/trials/trials-panel/attachments'" :label="$t(item.LanguageMark)" :name="item.path">
<el-tabs v-if="!item.tabHiddn" v-model="trialsTabChild" @tab-click="clickTab"> <el-tabs v-if="!item.tabHiddn" v-model="trialsTabChild" @tab-click="clickTab">
<el-tab-pane <el-tab-pane
v-for="item1 of item.children" v-for="item1 of item.children"
v-if="TrialConfig && isShow(item1.path)" v-if="TrialConfig && isShow(item1.path)"
:key="`tab1${item1.path}`" :key="`tab1${item1.path}`"
:disabled="TotalNeedSignTrialDocCount !== 0 || (TrialStatusStr === 'Initializing' && (item1.path === '/trials/trials-panel/setting/personnel-manage' || item1.path === '/trials/trials-panel/setting/qc-question' || item1.path === '/trials/trials-panel/setting/reading-unit' || item1.path === '/trials/trials-panel/setting/medical-audit' || item1.path === '/trials/trials-panel/setting/email-manage'))" :disabled="TotalNeedSignTrialDocCount !== 0 && item1.path !== '/trials/trials-panel/attachments/self-attachment' || (TrialStatusStr === 'Initializing' && (item1.path === '/trials/trials-panel/setting/personnel-manage' || item1.path === '/trials/trials-panel/setting/qc-question' || item1.path === '/trials/trials-panel/setting/reading-unit' || item1.path === '/trials/trials-panel/setting/medical-audit' || item1.path === '/trials/trials-panel/setting/email-manage'))"
:label="$t(item1.LanguageMark)" :label="$t(item1.LanguageMark)"
:name="item1.path" :name="item1.path"
/> />

View File

@ -14,8 +14,8 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
accept=".pdf" accept=".pdf"
> >
<el-button size="small" type="primary" :disabled="btnDisabled || $route.query.ReviewStatus === '1'" >Upload</el-button> <el-button size="small" type="primary" :disabled="btnDisabled || $route.query.ReviewStatus === '1'" >{{ $t('system:GcpCertificate:upload:Upload') }}</el-button>
<span slot="tip" class="el-upload__tip">(must be in pdf format. 1/2 pages, please confirm information integrity)</span> <span slot="tip" class="el-upload__tip">{{$t('system:GcpCertificate:tap:must2') }}</span>
</el-upload> </el-upload>
</div> </div>
</template> </template>
@ -45,6 +45,7 @@ export default {
}, },
methods: { methods: {
initFileList() { initFileList() {
if(!this.doctorId) return
getAttachmentByType(this.doctorId, this.type) getAttachmentByType(this.doctorId, this.type)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
@ -129,7 +130,7 @@ export default {
this.fileList = [] this.fileList = []
this.$emit('getFileList', '', '') this.$emit('getFileList', '', '')
this.$message({ this.$message({
message: 'Deleted successfully!', message: this.$t('common:message:deletedSuccessfully'),
type: 'success' type: 'success'
}) })
} }

View File

@ -9,7 +9,7 @@
:file-list="fileList" :file-list="fileList"
:accept="accept" :accept="accept"
> >
<el-button size="small" type="primary" :disabled="isDisabled">Upload</el-button> <el-button size="small" type="primary" :disabled="isDisabled">{{ $t('common:button:upload') }}</el-button>
</el-upload> </el-upload>
</div> </div>
</template> </template>
@ -39,6 +39,7 @@ export default {
} }
}, },
mounted() { mounted() {
if(!this.doctorId) return
this.initFileList() this.initFileList()
}, },
methods: { methods: {
@ -143,8 +144,7 @@ export default {
this.$confirm('Sure to remove?', { this.$confirm('Sure to remove?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}).then(() => { }).then(() => {
deleteAttachment(file.Id, file.Path) deleteAttachment(file.Id, file.Path)
.then(res => { .then(res => {
@ -152,7 +152,7 @@ export default {
this.fileList.splice(this.fileList.findIndex(item => item.Id === file.Id), 1) this.fileList.splice(this.fileList.findIndex(item => item.Id === file.Id), 1)
this.$emit('getFileList', this.fileList) this.$emit('getFileList', this.fileList)
this.$message({ this.$message({
message: 'Deleted successfully!', message: this.$t('common:message:deletedSuccessfully'),
type: 'success' type: 'success'
}) })
} }

View File

@ -64,7 +64,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="hasPermi(['trials:trials-panel:visit:crc-upload:upload']) && allowAddOrEdit" v-if="hasPermi(['trials:trials-panel:visit:crc-upload:edit']) && allowAddOrEdit"
:label="$t('common:action:action')" :label="$t('common:action:action')"
min-width="120" min-width="120"
> >
@ -81,7 +81,6 @@
<!-- 移除 --> <!-- 移除 -->
<el-button <el-button
v-if="(data.SubmitState*1 < 2 || (data.SubmitState === 2 && data.IsQCConfirmedReupload))" v-if="(data.SubmitState*1 < 2 || (data.SubmitState === 2 && data.IsQCConfirmedReupload))"
v-hasPermi="['trials:trials-panel:visit:crc-upload:upload']"
icon="el-icon-delete" icon="el-icon-delete"
circle circle
:title="$t('common:button:delete')" :title="$t('common:button:delete')"
@ -127,7 +126,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="hasPermi(['trials:trials-panel:visit:crc-upload:upload']) && allowAddOrEdit" v-if="hasPermi(['trials:trials-panel:visit:crc-upload:edit']) && allowAddOrEdit"
:label="$t('common:action:action')" :label="$t('common:action:action')"
min-width="200" min-width="200"
> >
@ -144,7 +143,6 @@
<!-- 移除 --> <!-- 移除 -->
<el-button <el-button
v-if="data.SubmitState*1 < 2 || (data.SubmitState === 2 && data.IsQCConfirmedReupload)" v-if="data.SubmitState*1 < 2 || (data.SubmitState === 2 && data.IsQCConfirmedReupload)"
v-hasPermi="['trials:trials-panel:visit:crc-upload:upload']"
icon="el-icon-delete" icon="el-icon-delete"
circle circle
:title="$t('common:button:delete')" :title="$t('common:button:delete')"
@ -200,7 +198,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-if="hasPermi(['trials:trials-panel:visit:crc-upload:upload']) && allowAddOrEdit" v-if="hasPermi(['trials:trials-panel:visit:crc-upload:edit']) && allowAddOrEdit"
:label="$t('common:action:action')" :label="$t('common:action:action')"
min-width="200" min-width="200"
> >
@ -237,7 +235,7 @@
icon="el-icon-download" icon="el-icon-download"
size="small" size="small"
:loading="downloadLoading" :loading="downloadLoading"
@click.native.prevent="handleDownloadTpl(cd.ClinicalDataTrialSetId)" @click.native.prevent="handleDownloadTpl(cd)"
> >
{{ $t('trials:uploadClinicalData:button:downloadTemplate') }} {{ $t('trials:uploadClinicalData:button:downloadTemplate') }}
</el-button> </el-button>
@ -551,11 +549,8 @@ export default {
}) })
}) })
}, },
handleDownloadTpl(clinicalDataTrialSetId) { handleDownloadTpl(cd) {
this.downloadLoading = true window.open(this.OSSclientConfig.basePath + cd.Path)
DownloadTrialClinicalFile(clinicalDataTrialSetId).then(data => {
this.downloadLoading = false
}).catch(() => { this.downloadLoading = false })
} }
} }

View File

@ -27,6 +27,7 @@ export default
ReadingUnitConfirmation: 108, // ReadingUnitConfirmation: 108, //
MedicalAudit: 215,// MedicalAudit: 215,//
HeavyReadingApproval: 216,// HeavyReadingApproval: 216,//
ResetAndAsyncCriterion: 218, //
} }
} }
</script> </script>

1
src/icons/svg/record.svg Normal file
View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1710814433132" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6202" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M509.48 9.666C232.874 9.666 8.666 233.874 8.666 510.48c0 276.618 224.206 500.818 500.814 500.818 276.618 0 500.818-224.202 500.818-500.818 0-276.606-224.2-500.814-500.818-500.814z m0 896.198c-218.384 0-395.378-176.994-395.378-395.382 0-218.384 176.996-395.378 395.378-395.378 218.388 0 395.382 176.996 395.382 395.378 0.002 218.388-176.992 395.382-395.382 395.382z m26.362-390.848v-189.042c0-29.136-23.578-52.718-52.718-52.718s-52.716 23.582-52.716 52.718v210.87c0 0.18 0.012 0.356 0.014 0.534 0.006 0.686 0.018 1.37 0.052 2.054 0.026 0.52 0.072 1.036 0.112 1.55 0.026 0.334 0.042 0.666 0.076 1 0.06 0.632 0.142 1.258 0.226 1.884 0.028 0.21 0.05 0.422 0.08 0.63 0.102 0.698 0.222 1.388 0.35 2.076 0.026 0.136 0.046 0.276 0.074 0.412 0.142 0.732 0.304 1.458 0.476 2.178 0.022 0.098 0.042 0.196 0.068 0.292 0.182 0.744 0.382 1.48 0.596 2.21l0.068 0.244c0.22 0.74 0.46 1.474 0.71 2.202l0.078 0.228c0.256 0.732 0.532 1.454 0.818 2.17 0.032 0.076 0.06 0.154 0.09 0.23 0.292 0.718 0.602 1.428 0.926 2.13l0.104 0.228c0.334 0.716 0.684 1.424 1.05 2.124 0.032 0.058 0.06 0.12 0.09 0.178 0.386 0.732 0.79 1.454 1.208 2.164l0.044 0.078a52.9 52.9 0 0 0 8.716 11.054l148.508 148.506c20.594 20.598 53.956 20.598 74.548 0 20.586-20.586 20.586-53.95 0-74.542l-133.648-133.642z" fill="#FFFFFF" p-id="6203"></path></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -23,23 +23,22 @@
<div style="margin-left:20px;"> <div style="margin-left:20px;">
<el-dropdown class="dropdown-container" trigger="click"> <el-dropdown class="dropdown-container" trigger="click">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
{{ name }} {{ `${name} (${userTypeShortName})` }}
<span v-if="userTypeShortName">({{ userTypeShortName }})</span> <!-- {{ name }}
<span v-if="userTypeShortName"> ({{ userTypeShortName }}) </span> -->
<i class="el-icon-caret-bottom" /> <i class="el-icon-caret-bottom" />
</span> </span>
<el-dropdown-menu slot="dropdown" class="user-dropdown"> <el-dropdown-menu slot="dropdown" class="user-dropdown">
<el-dropdown-item v-if="!isReviewer"> <el-dropdown-item v-if="!isReviewer">
<span style="display:block;" @click="editInfo">Edit Info</span> <span style="display:block;" @click="editInfo">{{$t('system:navbar:button:Profile')}}</span>
</el-dropdown-item>
<el-dropdown-item>
<span style="display:block;" @click="account">Account</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item divided> <el-dropdown-item divided>
<span style="display:block;" @click="logout">Log Out</span> <span style="display:block;" @click="logout">{{$t('system:navbar:button:Log Out')}}</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
<TopLang></TopLang>
</div> </div>
</div> </div>
</div> </div>
@ -50,12 +49,15 @@ import {mapGetters, mapMutations} from 'vuex'
import Breadcrumb from '@/components/Breadcrumb' import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger' import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull' import Screenfull from '@/components/Screenfull'
import TopLang from './topLang'
export default { export default {
components: { components: {
Breadcrumb, Breadcrumb,
Hamburger, Hamburger,
Screenfull Screenfull,
TopLang
}, },
data() { data() {
return { return {
@ -89,9 +91,6 @@ export default {
editInfo() { editInfo() {
this.$router.push({ name: 'BaiscInfo' }) this.$router.push({ name: 'BaiscInfo' })
}, },
account() {
this.$router.push({ name: 'Account' })
}
} }
} }
</script> </script>

View File

@ -0,0 +1,54 @@
<template>
<el-dropdown
style="height:50px;line-height: 60px;"
@command="handleSetLanguage"
>
<span class="el-dropdown-link">
<svg-icon icon-class="language" style="font-size:25px;margin:0 10px;" />
<!-- {{ language==='zh'?'语言:中文':'Language: English' }} -->
<!-- <i class="el-icon-arrow-down el-icon--right" /> -->
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
:disabled="language==='zh'"
command="zh"
>中文
</el-dropdown-item>
<el-dropdown-item
:disabled="language==='en'"
command="en"
>English
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
<script>
import { mapGetters, mapMutations } from 'vuex'
export default {
name: 'TopLang',
data() {
return {}
},
computed: {
...mapGetters({
language: 'language'
})
},
methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
handleSetLanguage(lang) {
this.$i18n.locale = lang
this.setLanguage(lang)
this.$updateDictionary()
window.location.reload()
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -160,10 +160,16 @@ Vue.prototype.fileToBlob = (file) => {
var _vm var _vm
async function VueInit () { async function VueInit () {
var params var params
var res
if (~window.location.href.indexOf('/readingDicoms') || ~window.location.href.indexOf('/noneDicomReading') || ~window.location.href.indexOf('/criterionquestions') || ~window.location.href.indexOf('/petct')) { if (~window.location.href.indexOf('/readingDicoms') || ~window.location.href.indexOf('/noneDicomReading') || ~window.location.href.indexOf('/criterionquestions') || ~window.location.href.indexOf('/petct')) {
params = $q('TrialReadingCriterionId') params = $q('TrialReadingCriterionId')
res = await getBasicDataAllSelect(params)
} else if (~window.location.href.indexOf('/ecrfPreview')) {
params = $q('SystemReadingCriterionId')
res = await getBasicDataAllSelect(params, true)
} else {
res = await getBasicDataAllSelect(params)
} }
var res = await getBasicDataAllSelect(params)
var Internationalization = await getFrontInternationalizationList() var Internationalization = await getFrontInternationalizationList()
Vue.prototype.$tl = Internationalization.Result Vue.prototype.$tl = Internationalization.Result
let zhMessages = {}, enMessages = {} let zhMessages = {}, enMessages = {}
@ -326,6 +332,7 @@ async function VueInit () {
} }
const h = _vm.$createElement const h = _vm.$createElement
/* eslint-disable */ /* eslint-disable */
window.VUE_APP_COMPANY_NAME = process.env.VUE_APP_COMPANY_NAME;
waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => { waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => {
var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh' var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
if ( _vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/login' || _vm.$route.path === '/researchForm' || _vm.$route.path === '/researchLogin' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') { if ( _vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/login' || _vm.$route.path === '/researchForm' || _vm.$route.path === '/researchLogin' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {

View File

@ -56,6 +56,9 @@ router.beforeEach(async(to, from, next) => {
/* has no token*/ /* has no token*/
if (whiteList.indexOf(to.path) !== -1) { if (whiteList.indexOf(to.path) !== -1) {
// 在免登录whiteList中直接进入 // 在免登录whiteList中直接进入
if (to.path === '/readingDicoms' || to.path === '/noneDicomReading'){
OSSclient()
}
next() next()
} else { } else {
if (to.path === '/researchForm') { if (to.path === '/researchForm') {

View File

@ -139,6 +139,13 @@ export const constantRoutes = [
hidden: true, hidden: true,
component: () => import('@/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt') component: () => import('@/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt')
}, },
{
path: '/historyScreenshot',
name: 'historyScreenshot',
hidden: true,
component: () => import('@/views/trials/trials-panel/reading/dicoms/components/Fusion/HistoryScreenshot')
},
{ {
path: '/visitDicomReview', path: '/visitDicomReview',
name: 'visitDicomReview', name: 'visitDicomReview',
@ -242,6 +249,11 @@ export const constantRoutes = [
component: () => import('@/views/404'), component: () => import('@/views/404'),
hidden: true hidden: true
}, },
{
path: '/ecrfPreview',
component: () => import('@/views/dictionary/template/components/ECRF'),
hidden: true
},
{ {
path: '/editUser', path: '/editUser',
component: Layout, component: Layout,
@ -250,12 +262,7 @@ export const constantRoutes = [
children: [{ children: [{
path: 'baiscInfo', path: 'baiscInfo',
name: 'BaiscInfo', name: 'BaiscInfo',
component: () => import('@/views/user/editInfo') component: () => import('@/views/user/myInfo')
},
{
path: 'account',
name: 'Account',
component: () => import('@/views/user/account')
} }
] ]
} }

View File

@ -40,6 +40,7 @@ const getters = {
activeSeries: state => state.reading.activeSeries, activeSeries: state => state.reading.activeSeries,
lastCanvasTaskId: state => state.reading.lastCanvasTaskId, lastCanvasTaskId: state => state.reading.lastCanvasTaskId,
imageQuality: state => state.reading.imageQuality, imageQuality: state => state.reading.imageQuality,
imageQualityIssues: state => state.reading.imageQualityIssues,
language: state => state.lang.language, language: state => state.lang.language,
TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount, TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount,
TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount, TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount,

View File

@ -29,7 +29,8 @@ const getDefaultState = () => {
currentReadingTaskState: 2, currentReadingTaskState: 2,
activeSeries: {}, activeSeries: {},
lastCanvasTaskId: '', lastCanvasTaskId: '',
imageQuality: null imageQuality: null,
imageQualityIssues: null
} }
} }
function getQuestions(questions) { function getQuestions(questions) {
@ -183,6 +184,7 @@ const actions = {
state.activeSeries = {} state.activeSeries = {}
state.lastCanvasTaskId = '' state.lastCanvasTaskId = ''
state.imageQuality = null state.imageQuality = null
state.imageQualityIssues = null
resolve() resolve()
}) })
}, },
@ -875,6 +877,9 @@ const actions = {
setImageQuality({ state }, imageQuality) { setImageQuality({ state }, imageQuality) {
state.imageQuality = isNaN(parseInt(imageQuality)) ? null : parseInt(imageQuality) state.imageQuality = isNaN(parseInt(imageQuality)) ? null : parseInt(imageQuality)
}, },
setImageQualityIssues({ state }, imageQualityIssues) {
state.imageQualityIssues = isNaN(parseInt(imageQualityIssues)) ? null : parseInt(imageQualityIssues)
},
addQuestionMeasuredData({ state }, obj) { addQuestionMeasuredData({ state }, obj) {
return new Promise(resolve => { return new Promise(resolve => {
var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId) var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)

View File

@ -1,5 +1,5 @@
import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth' import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth'
import { login, getUserMenuTree, getUserPermissions } from '@/api/user' import { login,loginOut,getUserMenuTree, getUserPermissions } from '@/api/user'
import { resetRouter } from '@/router' import { resetRouter } from '@/router'
import md5 from 'js-md5' import md5 from 'js-md5'
@ -78,6 +78,9 @@ const mutations = {
} }
const actions = { const actions = {
changeUserName({ commit }, userName) {
commit('SET_USERNAME', userName)
},
// user login // user login
login({ commit }, userInfo) { login({ commit }, userInfo) {
const { username, password } = userInfo const { username, password } = userInfo
@ -175,12 +178,17 @@ const actions = {
commit('SET_NAME', zzSessionStorage.getItem('realName')) commit('SET_NAME', zzSessionStorage.getItem('realName'))
}, },
// user logout // user logout
logout({ commit, state }) { async logout({ commit, state }) {
try{
await loginOut()
removeToken() // must remove token first removeToken() // must remove token first
resetRouter() resetRouter()
removeName() removeName()
zzSessionStorage.clear() zzSessionStorage.clear()
commit('RESET_STATE') commit('RESET_STATE')
}catch(e){
console.log(e)
}
}, },
setToken({ commit }, token) { setToken({ commit }, token) {
commit('SET_TOKEN', token) commit('SET_TOKEN', token)

View File

@ -54,7 +54,7 @@ export const anonymization = function (file, config) {
} }
} }
} }
console.log(dataset) // console.log(dataset)
let newDicomFile = dataset.write() let newDicomFile = dataset.write()
const bufferArray = new Uint8Array(newDicomFile) const bufferArray = new Uint8Array(newDicomFile)
const blob = new Blob([bufferArray], { type: 'application/octet-stream' }) const blob = new Blob([bufferArray], { type: 'application/octet-stream' })

View File

@ -3,6 +3,8 @@ import { Message, MessageBox, Alert } from 'element-ui'
import store from '@/store' import store from '@/store'
import router from '@/router' import router from '@/router'
import Vue from 'vue' import Vue from 'vue'
import moment from 'moment-timezone';
console.log(moment.tz.guess())
axios.defaults.withCredentials = false axios.defaults.withCredentials = false
const service = axios.create({ const service = axios.create({
baseURL: '/api', baseURL: '/api',
@ -19,6 +21,7 @@ service.interceptors.request.use(
config.headers['Content-Type'] = 'application/json;charset=UTF-8' config.headers['Content-Type'] = 'application/json;charset=UTF-8'
var language = zzSessionStorage.getItem('lang') var language = zzSessionStorage.getItem('lang')
config.headers['Accept-Language'] = language === 'en'?'en-US,en;q=0.5':'zh-CN,zh;q=0.9' config.headers['Accept-Language'] = language === 'en'?'en-US,en;q=0.5':'zh-CN,zh;q=0.9'
config.headers['TimeZoneId'] = moment.tz.guess()
if (store.getters.token) { if (store.getters.token) {
config.headers.Authorization = `Bearer ${store.getters.token}` config.headers.Authorization = `Bearer ${store.getters.token}`
} }
@ -59,7 +62,11 @@ service.interceptors.response.use(
MessageBox.confirm(res.ErrorMessage, { MessageBox.confirm(res.ErrorMessage, {
type: 'warning', type: 'warning',
showCancelButton: false, showCancelButton: false,
callback: action => {} callback: action => {
if(res.Code === 6) {
window.close()
}
}
}) })
} }
return Promise.reject(res) return Promise.reject(res)
@ -71,7 +78,7 @@ service.interceptors.response.use(
var message = '' var message = ''
if (error && error.response) { if (error && error.response) {
const status = error.response.status const status = error.response.status
if (error.response.data && error.response.data.Code === -1) { if (error.response.data && (error.response.data.Code === -1 || error.response.data.Code === -2)) {
store.dispatch('user/logout').then(() => { store.dispatch('user/logout').then(() => {
router.push(`/login`) router.push(`/login`)
this.$i18n.locale = 'zh' this.$i18n.locale = 'zh'

View File

@ -89,18 +89,16 @@ export default {
}, },
// //
remove(node) { remove(node) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteMenuFunction(node.Id) deleteMenuFunction(node.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.getlist() this.getlist()
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -89,16 +89,15 @@ export default {
}) })
}, },
handleDeleteRole(row) { handleDeleteRole(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}).then(() => { }).then(() => {
deleteUserTypeRole(row.Id).then((res) => { deleteUserTypeRole(row.Id).then((res) => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex((item) => item.Id === row.Id), 1) this.list.splice(this.list.findIndex((item) => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -20,8 +20,7 @@ export default {
this.$confirm('Sure to reset password?', { this.$confirm('Sure to reset password?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
resetPassword(this.userId).then(res => { resetPassword(this.userId).then(res => {

View File

@ -113,18 +113,17 @@ export default {
}, },
// //
handleDeleteUser(data) { handleDeleteUser(data) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteSysUser(data.Id) deleteSysUser(data.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.users.splice(this.users.findIndex(item => item.Id === data.Id), 1) this.users.splice(this.users.findIndex(item => item.Id === data.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -14,27 +14,26 @@
<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="$t('resumeInfo: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="$t('resumeInfo: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>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('resumeInfo: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-row>
<el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('resumeInfo:label:Affiliated')"> <el-form-item :label="$t('resumeInfo:label:Affiliated')">
<span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span> <span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span>

View File

@ -90,11 +90,12 @@ export default {
this.setLanguage('zh') this.setLanguage('zh')
this.$updateDictionary() this.$updateDictionary()
} }
this.title = this.doctorInfo.BasicInfoView?`${this.doctorInfo.BasicInfoView.FirstName} ${this.doctorInfo.BasicInfoView.LastName}${this.$t('resumeInfo:title:Details')}`:'' this.title = this.doctorInfo.BasicInfoView?`${this.doctorInfo.BasicInfoView.BlindName}${this.$t('resumeInfo:title:Details')}`:''
} }
}, },
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.doctorId = this.$route.query.doctorId this.doctorId = this.$route.query.doctorId
this.initForm() this.initForm()
}, },
@ -135,6 +136,7 @@ export default {
} else { } else {
this.workInfo.Position = this.workInfo.Position this.workInfo.Position = this.workInfo.Position
this.workInfo.PositionCN = this.workInfo.PositionCN this.workInfo.PositionCN = this.workInfo.PositionCN
//
} }
this.workInfo.PositionOther = this.workInfo.PositionOther ? 'Other - ' + this.workInfo.PositionOther : 'Other' this.workInfo.PositionOther = this.workInfo.PositionOther ? 'Other - ' + this.workInfo.PositionOther : 'Other'
} }
@ -179,7 +181,7 @@ export default {
this.holiday = res.Result.InHoliday ? 'Yes' : 'No' this.holiday = res.Result.InHoliday ? 'Yes' : 'No'
this.doctorInfo = res.Result this.doctorInfo = res.Result
!this.doctorInfo.ResearchPublicationView ? this.doctorInfo.ResearchPublicationView = {} : ''; !this.doctorInfo.ResearchPublicationView ? this.doctorInfo.ResearchPublicationView = {} : '';
this.title = `${this.doctorInfo.BasicInfoView.BlindName} 's Details` this.title = this.doctorInfo.BasicInfoView?`${this.doctorInfo.BasicInfoView.BlindName}${this.$t('resumeInfo:title:Details')}`:''
this.htmlTitle = this.title this.htmlTitle = this.title
this.initStatus() this.initStatus()
this.initEmploymentInfo() this.initEmploymentInfo()

View File

@ -126,8 +126,7 @@ export default {
this.$confirm('Sure to sign out', { this.$confirm('Sure to sign out', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.$store.dispatch('user/logout').then(res => { this.$store.dispatch('user/logout').then(res => {

View File

@ -63,7 +63,7 @@
import * as dicomParser from 'dicom-parser' import * as dicomParser from 'dicom-parser'
import * as cornerstone from 'cornerstone-core' import * as cornerstone from 'cornerstone-core'
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader' import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader'
import dicomStore from '@/utils/dicom-store.js' import dicomStore from '@/utils/dicom-store'
import dicomViewer from '@/components/Dicom/DicomViewer' import dicomViewer from '@/components/Dicom/DicomViewer'
import dicomPreview from '@/components/Dicom/DicomPreview' import dicomPreview from '@/components/Dicom/DicomPreview'
@ -86,6 +86,10 @@ export default {
uid: { uid: {
type: String, type: String,
default: '' default: ''
},
studyList: {
type: Array,
default: []
} }
}, },
@ -102,7 +106,7 @@ export default {
var totalHeight = window.innerHeight || document.body.clientHeight var totalHeight = window.innerHeight || document.body.clientHeight
var wrapper = this.$refs['preview-wrapper'] var wrapper = this.$refs['preview-wrapper']
wrapper.style.height = (totalHeight - 70) + 'px' wrapper.style.height = (totalHeight - 70) + 'px'
if (!dicomStore.studyList || !this.uid) return if (!this.studyList || !this.uid) return
this.loadStudy() this.loadStudy()
}, },
@ -120,7 +124,7 @@ export default {
return newObj return newObj
}, },
loadStudy() { loadStudy() {
var studyList = dicomStore.studyList var studyList = this.studyList
var studyUid = this.uid var studyUid = this.uid
var studyItem = studyList.find(function(item) { var studyItem = studyList.find(function(item) {
return item.dicomInfo.studyUid === studyUid return item.dicomInfo.studyUid === studyUid

View File

@ -64,22 +64,25 @@
</div> </div>
</div> </div>
<div v-if="showDelete" @click.stop=""> <div v-if="showDelete" @click.stop="" style="display: flex;flex-direction: row;justify-content: space-between;">
<span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span> <div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isReading') }}</span>
<el-switch <el-switch
v-model="item.isReading" v-model="item.isReading"
size="mini" size="mini"
@change="changeReadingStatus($event, item)" @change="changeReadingStatus($event, item)"
/> />
</div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span> <div>
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isDelete') }}</span>
<el-switch <el-switch
v-model="item.isDeleted" v-model="item.isDeleted"
size="mini" size="mini"
@change="changeDeleteStatus($event, item)" @change="changeDeleteStatus($event, item)"
/> />
</div> </div>
</div>
<div v-if="item.prefetchInstanceCount>0 && item.prefetchInstanceCount<item.instanceCount"> <div v-if="item.prefetchInstanceCount>0 && item.prefetchInstanceCount<item.instanceCount">
<el-progress :percentage="parseInt(((item.prefetchInstanceCount/item.instanceCount)*100).toFixed(2))" /> <el-progress :percentage="parseInt(((item.prefetchInstanceCount/item.instanceCount)*100).toFixed(2))" />
</div> </div>
@ -403,6 +406,7 @@ export default {
data.isReading = true data.isReading = true
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading))
this.$confirm(message, { this.$confirm(message, {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
type: 'warning' type: 'warning'
@ -430,6 +434,7 @@ export default {
data.isDeleted = true data.isDeleted = true
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted))
this.$confirm(message, { this.$confirm(message, {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
type: 'warning' type: 'warning'

View File

@ -83,15 +83,17 @@
</div> </div>
</div> </div>
<div v-if="showDelete" @click.stop=""> <div v-if="showDelete" @click.stop="" style="display: flex;flex-direction: row;justify-content: space-between;">
<div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span> <span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span>
<el-switch <el-switch
v-model="series.isReading" v-model="series.isReading"
size="mini" size="mini"
@change="changeReadingStatus($event, series)" @change="changeReadingStatus($event, series)"
/> />
</div>
<div>
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span> <span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span>
<el-switch <el-switch
v-model="series.isDeleted" v-model="series.isDeleted"
@ -99,6 +101,7 @@
@change="changeDeleteStatus($event, series)" @change="changeDeleteStatus($event, series)"
/> />
</div> </div>
</div>
<!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;"> <!-- <div style="position: absolute;bottom: -10px;left: 0;width: 100%;">
<el-progress v-if="series.prefetchInstanceCount>0 && series.prefetchInstanceCount<series.instanceCount" :percentage="Number(series.prefetchInstanceCount/series.instanceCount)*100" /> <el-progress v-if="series.prefetchInstanceCount>0 && series.prefetchInstanceCount<series.instanceCount" :percentage="Number(series.prefetchInstanceCount/series.instanceCount)*100" />
</div> --> </div> -->
@ -353,6 +356,7 @@ export default {
data.isReading = true data.isReading = true
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading))
this.$confirm(message, { this.$confirm(message, {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
type: 'warning' type: 'warning'
@ -380,6 +384,7 @@ export default {
data.isDeleted = true data.isDeleted = true
} }
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr) var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted))
this.$confirm(message, { this.$confirm(message, {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
type: 'warning' type: 'warning'

View File

@ -244,8 +244,7 @@ export default {
this.$confirm('是否确认废除此文件?', { this.$confirm('是否确认废除此文件?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true

View File

@ -33,7 +33,7 @@
<el-table-column prop="ModuleTypeValueCN" label="模块" show-overflow-tooltip align="left" min-width="230px" /> <el-table-column prop="ModuleTypeValueCN" label="模块" show-overflow-tooltip align="left" min-width="230px" />
<el-table-column prop="Description" label="操作名称" :show-overflow-tooltip="true" min-width="200px"> <el-table-column prop="Description" label="操作名称" :show-overflow-tooltip="true" min-width="200px">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.Description }}{{scope.row.DescriptionCN}}</span> <span>{{ scope.row.DescriptionCN }}{{scope.row.Description}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="DescriptionCN" label="其他" :show-overflow-tooltip="true" min-width="140px"> <el-table-column prop="DescriptionCN" label="其他" :show-overflow-tooltip="true" min-width="140px">
@ -608,11 +608,11 @@
<div style="padding: 0 40px;display: flex;flex-direction: column"> <div style="padding: 0 40px;display: flex;flex-direction: column">
<div style="text-align: right;height: 50px;"> <div style="text-align: right;height: 50px;">
<el-select v-model="copeParams.FromItemId" collapse-tags filterable placeholder="完全拷贝对象" clearable size="small"> <el-select v-model="copeParams.FromItemId" collapse-tags filterable placeholder="完全拷贝对象" clearable size="small">
<el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.Description" /> <el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.DescriptionCN" />
</el-select> </el-select>
<el-button type="primary" size="mini" style="margin-right: 10px" @click="handleOverCope(selectRow)"></el-button> <el-button type="primary" size="mini" style="margin-right: 10px" @click="handleOverCope(selectRow)"></el-button>
<el-select v-model="copeParams.DataSourceGuids" multiple collapse-tags filterable placeholder="拷贝对象" clearable size="small"> <el-select v-model="copeParams.DataSourceGuids" multiple collapse-tags filterable placeholder="拷贝对象" clearable size="small">
<el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.Description" /> <el-option v-for="item of list" v-if="drawer_cfg.drawerChild && item.ConfigType === 'M' && item.ObjectTypeId === selectRow.ObjectTypeId && item.OptTypeId && item.ChildrenTypeId " :value="item.Id" :label="item.DescriptionCN" />
</el-select> </el-select>
<el-button type="primary" size="mini" @click="handleCope(selectRow)"></el-button> <el-button type="primary" size="mini" @click="handleCope(selectRow)"></el-button>
<el-button type="primary" size="mini" @click="handleAdd(selectRow)"></el-button> <el-button type="primary" size="mini" @click="handleAdd(selectRow)"></el-button>
@ -668,6 +668,12 @@
<el-table-column prop="TrialConfigRelyFieldName" label="依赖字段" min-width="120px" :show-overflow-tooltip="true" /> <el-table-column prop="TrialConfigRelyFieldName" label="依赖字段" min-width="120px" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" min-width="180" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" min-width="180" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleCopyData(scope.row)"
>复制</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -1146,6 +1152,16 @@ export default {
this.title = '修改' this.title = '修改'
this.rowDrop2() this.rowDrop2()
}, },
handleCopyData (row) {
this.$confirm('确定复制该条记录到当前稽查下吗?').then(() => {
let params = {...row}
delete params.Id
addOrUpdateFrontAuditConfig(params).then(() => {
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.getList()
})
})
},
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function() {
this.$refs['form'].validate(valid => { this.$refs['form'].validate(valid => {

View File

@ -125,18 +125,17 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteDictionary(row.Id) deleteDictionary(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
this.$store.dispatch('global/setDictionary', {}) this.$store.dispatch('global/setDictionary', {})
} }
}) })

View File

@ -239,18 +239,17 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteEmailNoticeConfig(row.Id) deleteEmailNoticeConfig(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -139,11 +139,10 @@ export default {
}, },
// CRO // CRO
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -152,7 +151,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { }).catch(() => {
this.loading = false this.loading = false

View File

@ -8,12 +8,15 @@
label-width="170px" label-width="170px"
> >
<div class="base-dialog-body"> <div class="base-dialog-body">
<el-form-item label="Hospital CN: " prop="SiteId"> <el-form-item label="Site: ">
<el-select v-model="form.SiteId" style="width: 100%" filterable @change="siteChange"> <el-select v-model="form.SiteId" style="width: 100%" clearable filterable @change="siteChange">
<el-option v-for="item of siteList" :value="item.Id" :key="item.Id" :label="item.SiteName"> <el-option v-for="item of siteList" :value="item.Id" :key="item.Id" :label="item.SiteName">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Hospital CN: " prop="HospitalNameCN">
<el-input v-model="form.HospitalNameCN" />
</el-form-item>
<el-form-item label="Hospital EN: " prop="HospitalName"> <el-form-item label="Hospital EN: " prop="HospitalName">
<el-input v-model="form.HospitalName" /> <el-input v-model="form.HospitalName" />
</el-form-item> </el-form-item>
@ -88,9 +91,7 @@ export default {
}, },
siteList: [], siteList: [],
rules: { rules: {
SiteId: [{ required: true, message: 'Please specify', trigger: 'blur' }, HospitalNameCN: [{ required: true, message: 'Please specify', trigger: 'blur' }, { max: 50, message: 'The maximum length is 50' }],
{ max: 50, message: 'The maximum length is 50' }],
HospitalName: [{ required: true, message: 'Please specify', trigger: 'blur' }, { max: 50, message: 'The maximum length is 50' }],
UniversityAffiliated: [{ max: 100, message: 'The maximum length is 100' }], UniversityAffiliated: [{ max: 100, message: 'The maximum length is 100' }],
UniversityAffiliatedCN: [{ max: 100, message: 'The maximum length is 100' }], UniversityAffiliatedCN: [{ max: 100, message: 'The maximum length is 100' }],
Country: [{ required: true, message: 'Please specify', trigger: 'blur' }, Country: [{ required: true, message: 'Please specify', trigger: 'blur' },
@ -116,7 +117,8 @@ export default {
this.siteList.forEach(o => { this.siteList.forEach(o => {
if (o.Id === v) { if (o.Id === v) {
this.form.CityCN = o.City this.form.CityCN = o.City
this.form.HospitalNameCN = o.SiteName this.form.HospitalNameCN = o.SiteNameCN
this.form.HospitalName = o.SiteName
this.form.ProvinceCN = o.Province this.form.ProvinceCN = o.Province
this.form.CountryCN = o.Country this.form.CountryCN = o.Country
} }

View File

@ -201,11 +201,10 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -213,7 +212,7 @@ export default {
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
this.loading = false this.loading = false
}).catch(() => { }).catch(() => {

View File

@ -213,11 +213,10 @@ export default {
}, },
// Site // Site
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -227,7 +226,7 @@ export default {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$store.dispatch('global/setSite', {}) this.$store.dispatch('global/setSite', {})
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { }).catch(() => {
this.loading = false this.loading = false

View File

@ -139,11 +139,10 @@ export default {
}, },
// Sponsor // Sponsor
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -152,7 +151,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { }).catch(() => {
this.loading = false this.loading = false

View File

@ -182,11 +182,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -195,7 +194,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -154,11 +154,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -167,7 +166,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -183,11 +183,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -196,7 +195,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -182,11 +182,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -195,7 +194,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -153,11 +153,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -166,7 +165,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -206,11 +206,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -219,7 +218,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -183,11 +183,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -196,7 +195,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -122,11 +122,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -135,7 +134,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -137,18 +137,17 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteSystemBasicData(row.Id) deleteSystemBasicData(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -178,18 +178,17 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteSystemBasicData(row.Id) deleteSystemBasicData(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -162,11 +162,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -175,7 +174,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -7,6 +7,7 @@
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
:disabled="isCompleteConfig"
@click="handleAdd" @click="handleAdd"
style="margin-right: 10px;" style="margin-right: 10px;"
> >
@ -59,12 +60,13 @@
show-overflow-tooltip show-overflow-tooltip
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="small" type="primary" @click="openChildren(scope.row)"> <el-button size="small" :disabled="isCompleteConfig" type="primary" @click="openChildren(scope.row)">
配置 配置
</el-button> </el-button>
<el-button <el-button
type="danger" type="danger"
size="small" size="small"
:disabled="isCompleteConfig"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
> >
删除 删除
@ -151,6 +153,10 @@ export default {
criterionId: { criterionId: {
type: String, type: String,
required: true required: true
},
isCompleteConfig: {
type: Boolean,
required: true
} }
}, },
components: { components: {

View File

@ -19,6 +19,52 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item
v-if="form.Type === 'group'"
label="分组名称"
prop="GroupName"
>
<el-input v-model="form.GroupName" />
</el-form-item>
<el-form-item
label="分组标识"
v-if="form.Type === 'group'"
prop="GroupClassify"
>
<el-select
v-model="form.GroupClassify"
clearable
>
<el-option
v-for="item of groupClassifyList"
:key="item.Id"
:value="parseInt(item.Code)"
:label="item.ValueCN"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="form.Type === 'group'"
label="分组名称EN"
prop="GroupEnName"
>
<el-input v-model="form.GroupEnName" />
</el-form-item>
<el-form-item
v-if="form.Type !== 'group'"
label="问题名称"
prop="QuestionName"
>
<el-input v-model="form.QuestionName" />
</el-form-item>
<el-form-item
v-if="form.Type !== 'group'"
label="问题名称EN"
prop="QuestionEnName"
>
<el-input v-model="form.QuestionEnName" />
</el-form-item>
<!-- 数值类型 --> <!-- 数值类型 -->
<el-form-item <el-form-item
v-if="form.Type === 'number' || form.Type === 'calculation'" v-if="form.Type === 'number' || form.Type === 'calculation'"
@ -75,52 +121,6 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item
v-if="form.Type === 'group'"
label="分组名称"
prop="GroupName"
>
<el-input v-model="form.GroupName" />
</el-form-item>
<el-form-item
label="分组标识"
prop="GroupClassify"
>
<el-select
v-model="form.GroupClassify"
clearable
>
<el-option
v-for="item of groupClassifyList"
:key="item.Id"
:value="parseInt(item.Code)"
:label="item.ValueCN"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="form.Type === 'group'"
label="分组名称EN"
prop="GroupEnName"
>
<el-input v-model="form.GroupEnName" />
</el-form-item>
<el-form-item
v-if="form.Type !== 'group'"
label="问题名称"
prop="QuestionName"
>
<el-input v-model="form.QuestionName" />
</el-form-item>
<el-form-item
v-if="form.Type !== 'group'"
label="问题名称EN"
prop="QuestionEnName"
>
<el-input v-model="form.QuestionEnName" />
</el-form-item>
<!-- <el-form-item <!-- <el-form-item
v-if="form.Type === 'select' || form.Type === 'radio'" v-if="form.Type === 'select' || form.Type === 'radio'"
label="选项" label="选项"
@ -170,7 +170,7 @@
placeholder="选项请用‘|’分割多个选项" placeholder="选项请用‘|’分割多个选项"
/> />
</el-form-item> </el-form-item>
<el-form-item label="问题分类"> <el-form-item label="问题分类" v-if="form.Type !== 'group'">
<!-- <el-radio-group v-model="form.QuestionClassify"> <!-- <el-radio-group v-model="form.QuestionClassify">
<el-radio v-for="item of $d.QuestionClassify" :key="item.id" :label="item.value">{{ item.label }}</el-radio> <el-radio v-for="item of $d.QuestionClassify" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group> --> </el-radio-group> -->
@ -406,6 +406,7 @@
</el-form-item> </el-form-item>
<el-form-item <el-form-item
label="问题标识" label="问题标识"
v-if="form.Type !== 'group'"
prop="QuestionType" prop="QuestionType"
> >
<el-select <el-select

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="criterion-config"> <div class="criterion-config">
<el-tabs v-model="activeName"> <el-tabs v-model="activeName">
<el-tab-pane label="访视阅片" name="0"> <el-tab-pane :label="'访视阅片'" name="0">
<div class="search-form" style="display:flex;justify-content: space-between;"> <div class="search-form" style="display:flex;justify-content: space-between;">
<el-form :inline="true" size="mini" class="base-search-form"> <el-form :inline="true" size="mini" class="base-search-form">
<el-form-item label="名称"> <el-form-item label="名称">
@ -18,7 +18,7 @@
:disabled="list.length === 0" :disabled="list.length === 0"
size="mini" size="mini"
type="primary" type="primary"
@click="preview.visible = true" @click="handlePreview"
> >
预览 预览
</el-button> </el-button>
@ -200,7 +200,7 @@
v-if="addOrEdit.visible" v-if="addOrEdit.visible"
:visible.sync="addOrEdit.visible" :visible.sync="addOrEdit.visible"
:close-on-click-modal="false" :close-on-click-modal="false"
:title="addOrEdit.title" :title="`${addOrEdit.title}`"
width="600px" width="600px"
append-to-body append-to-body
custom-class="base-dialog-wrapper" custom-class="base-dialog-wrapper"
@ -303,6 +303,9 @@ export default {
this.getList() this.getList()
}, },
methods: { methods: {
handlePreview() {
window.open(`/ecrfPreview?SystemReadingCriterionId=${this.criterionId}&lang=${this.$i18n.locale}`)
},
getList() { getList() {
this.loading = true this.loading = true
this.searchData.ReadingQuestionCriterionSystemId = this.criterionId this.searchData.ReadingQuestionCriterionSystemId = this.criterionId

View File

@ -104,6 +104,7 @@
<el-button <el-button
type="danger" type="danger"
size="mini" size="mini"
:disabled="scope.row.IsCompleteConfig"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
> >
删除 删除
@ -133,7 +134,7 @@
<el-dialog <el-dialog
v-if="configVisible" v-if="configVisible"
title="eCRF" :title="'eCRF' + `(${rowData.CriterionName})`"
:visible.sync="configVisible" :visible.sync="configVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:fullscreen="true" :fullscreen="true"
@ -145,7 +146,7 @@
<el-dialog <el-dialog
v-if="configBaseDataVisible" v-if="configBaseDataVisible"
title="基础数据配置" :title="'基础数据配置' + `(${rowData.CriterionName})`"
:visible.sync="configBaseDataVisible" :visible.sync="configBaseDataVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:fullscreen="true" :fullscreen="true"
@ -190,6 +191,7 @@ export default {
addDialog: { title: '', visible: false } addDialog: { title: '', visible: false }
} }
}, },
mounted() { mounted() {
this.getList() this.getList()
}, },

View File

@ -137,11 +137,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -150,7 +149,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -25,18 +25,13 @@
import { getSystemReadingQuestion } from '@/api/dictionary' import { getSystemReadingQuestion } from '@/api/dictionary'
import CriterionFormItem from './CriterionFormItem' import CriterionFormItem from './CriterionFormItem'
import {mapMutations} from "vuex";
export default { export default {
name: 'EcrfPreview', name: 'EcrfPreview',
components: { components: {
CriterionFormItem CriterionFormItem
}, },
props: {
criterionId: {
type: String,
required: true
}
},
data() { data() {
return { return {
loading: false, loading: false,
@ -49,9 +44,14 @@ export default {
} }
}, },
mounted() { mounted() {
this.$i18n.locale = this.$route.query.lang
this.setLanguage(this.$route.query.lang)
this.$updateDictionary()
this.criterionId = this.$route.query.SystemReadingCriterionId
this.getQuestions() this.getQuestions()
}, },
methods: { methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
getQuestions() { getQuestions() {
this.loading = true this.loading = true
var param = { var param = {

View File

@ -104,7 +104,7 @@
v-if="config.configType === 2" v-if="config.configType === 2"
v-loading="loading" v-loading="loading"
ref="multipleTable" ref="multipleTable"
:data="$d && $d.GlobalAssessType" :data="GlobalAssessType"
stripe stripe
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
@ -165,7 +165,7 @@
<script> <script>
import BaseModel from '@/components/BaseModel' import BaseModel from '@/components/BaseModel'
import { getAssessType, setAssessType, setDictionaryBaseLineUse, setDictionaryFollowVisitUse, setSystemGlobalInfo, getSystemGlobalInfo } from '@/api/dictionary' import { getCriterionDictionary, getAssessType, setAssessType, setDictionaryBaseLineUse, setDictionaryFollowVisitUse, setSystemGlobalInfo, getSystemGlobalInfo } from '@/api/dictionary'
export default { export default {
props: { props: {
data: { data: {
@ -192,7 +192,8 @@ export default {
IsMustGlobalReading: false, IsMustGlobalReading: false,
form: { form: {
IsMustGlobalReading: false IsMustGlobalReading: false
} },
GlobalAssessType: []
} }
}, },
beforecreate() { beforecreate() {
@ -204,8 +205,17 @@ export default {
mounted() { mounted() {
this.getList() this.getList()
this.getSystemGlobalInfo() this.getSystemGlobalInfo()
this.getCriterionDictionary()
}, },
methods: { methods: {
getCriterionDictionary() {
getCriterionDictionary({
ReadingCriterionId: this.criterionId,
DictionaryCode: 'GlobalAssessType'
}).then(res => {
this.GlobalAssessType = res.Result.GlobalAssessType
})
},
getSystemGlobalInfo() { getSystemGlobalInfo() {
getSystemGlobalInfo({ getSystemGlobalInfo({
SystemCriterionId: this.criterionId SystemCriterionId: this.criterionId

View File

@ -72,7 +72,7 @@
v-loading="loading" v-loading="loading"
style="width: 100%" style="width: 100%"
ref="multipleTable" ref="multipleTable"
:data="$d.OncologyAssessType" :data="OncologyAssessType"
stripe stripe
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
@ -81,13 +81,13 @@
width="55"> width="55">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="raw.ValueCN" prop="ValueCN"
label="中文值" label="中文值"
show-overflow-tooltip show-overflow-tooltip
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="raw.Value" prop="Value"
label="英文值" label="英文值"
show-overflow-tooltip show-overflow-tooltip
> >
@ -105,7 +105,7 @@
<script> <script>
import BaseModel from '@/components/BaseModel' import BaseModel from '@/components/BaseModel'
import { getSystemOncologyInfo, setSystemOncologyInfo } from '@/api/dictionary' import { getSystemOncologyInfo, setSystemOncologyInfo, getCriterionDictionary } from '@/api/dictionary'
export default { export default {
props: { props: {
data: { data: {
@ -132,13 +132,23 @@ export default {
preview: { visible: false, title: 'eCRF预览' }, preview: { visible: false, title: 'eCRF预览' },
config: { visible: false, title: '肿瘤学阅片结果', appendToBody: true, width: '600px', configType: 0 }, config: { visible: false, title: '肿瘤学阅片结果', appendToBody: true, width: '600px', configType: 0 },
selectedList: [], selectedList: [],
OncologyAssessType: [],
IsOncologyReading: true IsOncologyReading: true
} }
}, },
mounted() { mounted() {
this.getList() this.getList()
this.getCriterionDictionary()
}, },
methods: { methods: {
getCriterionDictionary() {
getCriterionDictionary({
ReadingCriterionId: this.criterionId,
DictionaryCode: 'OncologyAssessType'
}).then(res => {
this.OncologyAssessType = res.Result.OncologyAssessType
})
},
toggleSelection(rows) { toggleSelection(rows) {
console.log(this.$refs.multipleTable) console.log(this.$refs.multipleTable)
if (rows) { if (rows) {
@ -173,9 +183,9 @@ export default {
this.config.title = '肿瘤学阅片结果' this.config.title = '肿瘤学阅片结果'
this.config.visible = true this.config.visible = true
this.$nextTick(() => { this.$nextTick(() => {
var a = this.$d.OncologyAssessType.filter(v => { var a = this.OncologyAssessType.filter(v => {
return !!this.list.find(v1 => { return !!this.list.find(v1 => {
return v1.DictionaryId === v.id return v1.DictionaryId === v.Id
}) })
}) })
this.toggleSelection(a) this.toggleSelection(a)
@ -184,15 +194,15 @@ export default {
}, },
handleSave() { handleSave() {
this.loading = true this.loading = true
var a = this.$d.OncologyAssessType.filter(v => { var a = this.OncologyAssessType.filter(v => {
return !!this.list.find(v1 => { return !!this.list.find(v1 => {
return v1.DictionaryId === v.id return v1.DictionaryId === v.Id
}) })
}) })
var params = { var params = {
SystemCriterionId: this.criterionId, SystemCriterionId: this.criterionId,
ParentCode: 'OncologyAssessType', ParentCode: 'OncologyAssessType',
DictionaryIds: this.config.configType === 1 ? a.map(v => v.id) : this.selectedList.map(v => v.id), DictionaryIds: this.config.configType === 1 ? a.map(v => v.Id) : this.selectedList.map(v => v.Id),
IsSystemCriterion: true, IsSystemCriterion: true,
IsOncologyReading: this.form.IsOncologyReading IsOncologyReading: this.form.IsOncologyReading
} }

View File

@ -170,11 +170,10 @@ export default {
}) })
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -183,7 +182,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -217,11 +217,10 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading = true this.loading = true
@ -230,7 +229,7 @@ export default {
this.loading = false this.loading = false
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}) })

View File

@ -109,18 +109,17 @@ export default {
this.template_model.visible = true this.template_model.visible = true
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteQATemplate(row.Id) deleteQATemplate(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -107,18 +107,17 @@ export default {
this.setting_model.visible = true this.setting_model.visible = true
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteQATemplateItem(row.Id) deleteQATemplateItem(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -137,18 +137,17 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteSystemBasicData(row.Id) deleteSystemBasicData(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -178,18 +178,17 @@ export default {
}, },
// //
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteSystemBasicData(row.Id) deleteSystemBasicData(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -5,7 +5,7 @@
<!-- 首次登录修改密码 --> <!-- 首次登录修改密码 -->
{{ $t('recompose:title:init') }} {{ $t('recompose:title:init') }}
</div> </div>
<el-form ref="passwordForm" v-loading="loading" label-position="right" :model="password" :rules="passwordFormRules" label-width="180px"> <el-form ref="passwordForm" v-loading="loading" label-position="right" :model="password" :rules="passwordFormRules" label-width="200px">
<!-- 邮箱 --> <!-- 邮箱 -->
<el-form-item :label="$t('recompose:form:email')" prop="Email"> <el-form-item :label="$t('recompose:form:email')" prop="Email">
<el-input v-model="password.Email" disabled /> <el-input v-model="password.Email" disabled />

View File

@ -177,8 +177,7 @@ export default {
this.$confirm('Confirm to delete?', { this.$confirm('Confirm to delete?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deletePaymentAdjustment(row.Id) deletePaymentAdjustment(row.Id)

View File

@ -160,7 +160,7 @@ export default {
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
}) })

View File

@ -263,15 +263,14 @@ export default {
this.$confirm('Confirm to delete?', { this.$confirm('Confirm to delete?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteRankPrice(row.Id) deleteRankPrice(row.Id)
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
}) })
.catch(err => { .catch(err => {

View File

@ -340,11 +340,10 @@ export default {
}, },
handleView(row) { row.SowFullPath ? window.open(row.SowFullPath, '_blank') : '' }, handleView(row) { row.SowFullPath ? window.open(row.SowFullPath, '_blank') : '' },
handleDeleteSOW(row) { handleDeleteSOW(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'OK',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
const param = { SowPath: row.SowPath, TrialId: row.TrialId } const param = { SowPath: row.SowPath, TrialId: row.TrialId }

View File

@ -92,7 +92,7 @@ export default {
if (res.IsSuccess) { if (res.IsSuccess) {
this.fileList = [] this.fileList = []
this.$message({ this.$message({
message: 'Deleted successfully!', message: this.$t('common:message:deletedSuccessfully'),
type: 'success' type: 'success'
}) })
this.$emit('getFileList', this.fileList) this.$emit('getFileList', this.fileList)

View File

@ -7,7 +7,7 @@
ref="resetForm" ref="resetForm"
v-loading="formLoading" v-loading="formLoading"
:model="form" :model="form"
label-width="150px" label-width="200px"
:rules="rules" :rules="rules"
class="demo-ruleForm" class="demo-ruleForm"
size="small" size="small"
@ -122,17 +122,17 @@ export default {
} }
} }
} }
var validatePass = (rule, value, callback) => { // var validatePass = (rule, value, callback) => {
if (value === '') { // if (value === '') {
// // //
callback(new Error(this.$t('passwordReset:formRule:password'))) // callback(new Error(this.$t('passwordReset:formRule:password')))
} else { // } else {
if (this.CheckPass !== '') { // if (this.CheckPass !== '') {
this.$refs.resetForm.validateField('CheckPass') // this.$refs.resetForm.validateField('CheckPass')
} // }
callback() // callback()
} // }
} // }
var validatePass2 = (rule, value, callback) => { var validatePass2 = (rule, value, callback) => {
if (value === '' || value === undefined) { if (value === '' || value === undefined) {
// //
@ -205,6 +205,8 @@ export default {
verifyAnonymousVerifyCode(this.form.EmailOrPhone, this.form.VerificationCode).then(res => { verifyAnonymousVerifyCode(this.form.EmailOrPhone, this.form.VerificationCode).then(res => {
this.formLoading = false this.formLoading = false
this.users = res.Result this.users = res.Result
//
this.$message.success(this.$t('passwordReset:message:verifiedSuccessfully'))
}).catch(() => { this.formLoading = false }) }).catch(() => { this.formLoading = false })
}, },
handleEmailChange() { handleEmailChange() {
@ -268,7 +270,7 @@ export default {
/*/deep/ .is-error{*/ /*/deep/ .is-error{*/
/* margin-bottom: 40px;*/ /* margin-bottom: 40px;*/
/*}*/ /*}*/
/deep/ .is-error.my_new_pwd{ .is-error.my_new_pwd{
margin-bottom: 40px; margin-bottom: 40px;
} }
</style> </style>

View File

@ -7,7 +7,7 @@
<div class="login-l"> <div class="login-l">
<div class="login-logo"> <div class="login-logo">
<img v-if="language === 'zh'" src="@/assets/zzlogo2.png" alt=""> <img v-if="language === 'zh'" src="@/assets/zzlogo2.png" alt="">
<img v-else src="@/assets/zzlogo3.png" alt=""> <img v-else src="@/assets/zzlogo4.png" alt="">
</div> </div>
<div class="login-image"> <div class="login-image">
<img src="@/assets/login-bg.png"> <img src="@/assets/login-bg.png">
@ -78,7 +78,7 @@
type="primary" type="primary"
style="width:100%;margin-bottom:10px;" style="width:100%;margin-bottom:10px;"
size="medium" size="medium"
@click.native.prevent="loginIn" @click.native.prevent="handleLogin"
> >
{{ $t('login:button:login') }} {{ $t('login:button:login') }}
</el-button> </el-button>
@ -109,7 +109,7 @@
<span style="color:#428bca">关于</span> <span style="color:#428bca">关于</span>
</a> </a>
</div> </div>
<Vcode :show="isShow" slider-text="" :imgs="[Img1]" @success="onSuccess" /> <Vcode :show="isShow" :fail-text="$t('login:button:failText')" :success-text="$t('login:button:successText')" :slider-text="$t('login:button:sliderText')" :imgs="[Img1]" @success="onSuccess" />
<el-dialog <el-dialog
v-if="aboutVisible" v-if="aboutVisible"
:visible.sync="aboutVisible" :visible.sync="aboutVisible"
@ -148,7 +148,7 @@ import { mapGetters, mapMutations } from 'vuex'
import TopLang from './topLang' import TopLang from './topLang'
// import NoticeMarquee from '../trials/trials-layout/components/noticeMarquee' // import NoticeMarquee from '../trials/trials-layout/components/noticeMarquee'
import Vcode from 'vue-puzzle-vcode' import Vcode from 'vue-puzzle-vcode'
import Img1 from '@/assets/pic-1.png' import Img1 from '@/assets/pic-2.png'
export default { export default {
name: 'Login', name: 'Login',
components: { TopLang, Vcode }, components: { TopLang, Vcode },
@ -180,6 +180,7 @@ export default {
loginType: null, loginType: null,
location: null, location: null,
isShow: false, isShow: false,
showCode: false,
Img1 Img1
} }
}, },
@ -230,7 +231,11 @@ export default {
this.loginType = this.$route.query.loginType this.loginType = this.$route.query.loginType
this.$refs.loginForm.validate(valid => { this.$refs.loginForm.validate(valid => {
if (valid) { if (valid) {
if (this.showCode) {
this.isShow = true this.isShow = true
} else {
this.onSuccess()
}
} else { } else {
// console.log('error submit!!') // console.log('error submit!!')
return false return false
@ -239,6 +244,7 @@ export default {
}, },
loginIn() { loginIn() {
this.loading = true this.loading = true
this.showCode = false
this.$store.dispatch('user/login', this.loginForm).then((res) => { this.$store.dispatch('user/login', this.loginForm).then((res) => {
if (!res) { if (!res) {
// , // ,
@ -273,6 +279,7 @@ export default {
}) })
}) })
.catch(() => { .catch(() => {
this.showCode = true
this.loading = false this.loading = false
}) })
}, },

View File

@ -14,7 +14,7 @@
v-if="(state === 0 && userTypeEnumInt === 0)" v-if="(state === 0 && userTypeEnumInt === 0)"
type="primary" type="primary"
size="small" size="small"
@click="handleSubmit" @click="handleSubmit('submit')"
> >
{{ $t('trials:researchForm:button:submit') }} {{ $t('trials:researchForm:button:submit') }}
</el-button> </el-button>
@ -23,7 +23,7 @@
v-if="(state === 1 && hasPermi(['role:spm','role:cpm']))" v-if="(state === 1 && hasPermi(['role:spm','role:cpm']))"
type="primary" type="primary"
size="small" size="small"
@click="handleSubmit" @click="handleSubmit('approve')"
> >
{{ $t('trials:researchForm:button:auditPasses') }} {{ $t('trials:researchForm:button:auditPasses') }}
</el-button> </el-button>
@ -243,35 +243,22 @@ export default {
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}, },
// //
handleSubmit() { handleSubmit(type) {
if (this.userTypeEnumInt === 0) { if (this.userTypeEnumInt === 0) {
// if (this.$refs['researchParticipants'].list.length === 0 && this.$refs['researchEquipments'].list.length === 0) {
// this.$alert(this.$t('trials:researchForm:message:saveWarning'))
// return
// }
// var list = this.$refs['researchParticipants'].list
// var cIdx = list.findIndex(i => parseInt(i.TrialRoleCode) === 1)
// var pIdx = list.findIndex(i => parseInt(i.TrialRoleCode) === 4)
// if (cIdx === -1 || pIdx === -1) {
// // crc1
// this.$alert(this.$t('trials:researchForm:message:saveWarning1'))
// return
// }
this.loading = true this.loading = true
this.$refs['baseResearchInfo'].handleSave(true).then(res => { this.$refs['baseResearchInfo'].handleSave(true).then(res => {
this.loading = false this.loading = false
if (res) { if (res) {
this.submit() this.submit(type)
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
} else { } else {
this.submit() this.submit(type)
} }
}, },
submit() { submit() {
// //
this.$confirm(this.$t('trials:researchForm:message:submitWarning'), { this.$confirm(this.userTypeEnumInt === 0 ? this.$t('trials:researchForm:message:submitWarning') : this.$t('trials:researchForm:message:submitWarning2'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true distinguishCancelAndClose: true
}).then(() => { }).then(() => {
@ -287,7 +274,12 @@ export default {
if (this.userTypeEnumInt !== 0) { if (this.userTypeEnumInt !== 0) {
this.$emit('refreshPage') this.$emit('refreshPage')
} }
this.$message.success(this.$t('common:message:savedSuccessfully')) // this.$message.success(this.$t('common:message:savedSuccessfully'))
if(type === 'approve'){
this.$message.success(this.$t('common:message:approvedSuccessfully'))
}else{
this.$message.success(this.$t('trials:researchForm:message:savedSuccessfully'))
}
} }
}).catch(() => { this.loading = false }) }).catch(() => { this.loading = false })
}).catch(() => {}) }).catch(() => {})
@ -320,7 +312,7 @@ export default {
if (res.IsSuccess) { if (res.IsSuccess) {
this.initPage() this.initPage()
this.$emit('refreshPage') this.$emit('refreshPage')
this.$message.success(this.$t('common:message:savedSuccessfully')) this.$message.success(this.$t('common:message:approvedSuccessfully'))
} }
}).catch(() => { }).catch(() => {
this.loading = false this.loading = false

View File

@ -53,13 +53,13 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <!-- <el-row>-->
<el-col :span="6"> <!-- <el-col :span="6">-->
<el-form-item :label="$t('resumeInfo: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>

View File

@ -14,27 +14,27 @@
<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="$t('resumeInfo: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="$t('resumeInfo: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>
</el-col> </el-col>
</el-row>
<el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('resumeInfo: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-row>
<el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item :label="$t('resumeInfo:label:Affiliated')"> <el-form-item :label="$t('resumeInfo:label:Affiliated')">
<span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span> <span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span>

View File

@ -189,8 +189,8 @@ export default {
this.pageLoading = false this.pageLoading = false
if (res.IsSuccess) { if (res.IsSuccess) {
if (res.Result) { if (res.Result) {
this.holiday = res.Result.InHoliday ? 'Yes' : 'No'
this.doctorInfo = res.Result this.doctorInfo = res.Result
this.holiday = res.Result.InHoliday ? 'Yes' : 'No'
!this.doctorInfo.ResearchPublicationView ? this.doctorInfo.ResearchPublicationView = {} : ''; !this.doctorInfo.ResearchPublicationView ? this.doctorInfo.ResearchPublicationView = {} : '';
this.title = `${this.doctorInfo.BasicInfoView.FirstName} ${this.doctorInfo.BasicInfoView.LastName}${this.$t('resumeInfo:title:Details')}` this.title = `${this.doctorInfo.BasicInfoView.FirstName} ${this.doctorInfo.BasicInfoView.LastName}${this.$t('resumeInfo:title:Details')}`
this.htmlTitle = this.title this.htmlTitle = this.title

View File

@ -3,7 +3,8 @@
<div class="box-wrapper"> <div class="box-wrapper">
<h2 style="text-align:center;"> <h2 style="text-align:center;">
<!-- 中心调研表 --> <!-- 中心调研表 -->
独立阅片人信息填写 <!-- 独立阅片人信息填写 -->
{{$t("trials:researchForm:form:title")}}
</h2> </h2>
<el-card shadow="hover" style="padding-top: 40px"> <el-card shadow="hover" style="padding-top: 40px">
<el-form <el-form
@ -58,6 +59,7 @@ import { sendVerifyCode, verifySendCode, getTrialSurveyInitInfo } from '@/api/re
import { verifyEmialGetDoctorInfo, sendEmialVerifyCode } from '@/api/reviewers' import { verifyEmialGetDoctorInfo, sendEmialVerifyCode } from '@/api/reviewers'
import { login, getUserMenuTree, getUserPermissions } from '@/api/user' import { login, getUserMenuTree, getUserPermissions } from '@/api/user'
import store from '@/store' import store from '@/store'
import { mapMutations } from 'vuex'
export default { export default {
data() { data() {
var checkPhone = (rule, value, callback) => { var checkPhone = (rule, value, callback) => {
@ -149,9 +151,14 @@ export default {
isHaveSiteSurveyRecord: false isHaveSiteSurveyRecord: false
} }
}, },
created(){
this.$i18n.locale = this.$route.query.lang
this.setLanguage(this.$route.query.lang)
},
mounted() { mounted() {
}, },
methods: { methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
// //
onSubmit() { onSubmit() {
this.$refs['resetForm'].validate(valid => { this.$refs['resetForm'].validate(valid => {
@ -176,7 +183,7 @@ export default {
store.dispatch('user/setTree', menuTree.Result) store.dispatch('user/setTree', menuTree.Result)
store.dispatch('user/setPermissions', permissions.Result) store.dispatch('user/setPermissions', permissions.Result)
// this.$router.push({ path: `/researchForm?trialId=${this.trialId}&trialSiteSurveyId=${res.Result.TrialSiteSurveyId}` }) // this.$router.push({ path: `/researchForm?trialId=${this.trialId}&trialSiteSurveyId=${res.Result.TrialSiteSurveyId}` })
this.$router.push({path: `/ReviewersResearchForm?Id=${res.Result.DoctorId ? res.Result.DoctorId : ''}&tabActive=BasicInfo&ReviewStatus=${res.Result.ReviewStatus}`}) this.$router.push({path: `/ReviewersResearchForm?Id=${res.Result.DoctorId ? res.Result.DoctorId : ''}&tabActive=BasicInfo&ReviewStatus=${res.Result.ReviewStatus}&lang=${this.$route.query.lang}`})
}).catch(() => { }).catch(() => {
this.btnLoading = false this.btnLoading = false
this.sendDisabled = false this.sendDisabled = false

View File

@ -1,32 +1,33 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-tabs v-model="active" :before-leave="checkLeave" @tab-click="clickTab"> <el-tabs v-model="active" :before-leave="checkLeave" @tab-click="clickTab">
<el-tab-pane label="Basic Info" name="BasicInfo"> <el-tab-pane :label="$t('system:reviewer:tab:BasicInfo')" name="BasicInfo">
<basic-info v-if="load.BasicInfo" /> <basic-info v-if="load.BasicInfo" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Employment" name="Employment"> <el-tab-pane :label="$t('system:reviewer:tab:Employment')" name="Employment">
<Employment v-if="load.Employment" /> <Employment v-if="load.Employment" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Specialty" name="Specialty"> <el-tab-pane :label="$t('system:reviewer:tab:Specialty')" name="Specialty">
<specialty v-if="load.Specialty" /> <specialty v-if="load.Specialty" />
</el-tab-pane> </el-tab-pane>
<!--Education & Training-->
<el-tab-pane label="Education & Training" name="EducationTraining"> <el-tab-pane :label="$t('system:reviewer:tab:Education&Training')" name="EducationTraining">
<education-training v-if="load.EducationTraining" /> <education-training v-if="load.EducationTraining" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Research & Publication" name="ResearchPublication"> <!--Research & Publication-->
<el-tab-pane :label="$t('system:reviewer:tab:Research&Publication')" name="ResearchPublication">
<research-publication v-if="load.ResearchPublication" /> <research-publication v-if="load.ResearchPublication" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Trial Experience" name="TrialExperience"> <el-tab-pane :label="$t('system:reviewer:tab:TrialExperience')" name="TrialExperience">
<trial-experience v-if="load.TrialExperience" /> <trial-experience v-if="load.TrialExperience" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Credentials" name="Credentials"> <el-tab-pane :label="$t('system:reviewer:tab:Credentials')" name="Credentials">
<Credentials v-if="load.Credentials" /> <Credentials v-if="load.Credentials" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Resumes" name="Resumes"> <el-tab-pane :label="$t('system:reviewer:tab:Resumes')" name="Resumes">
<Resumes v-if="load.Resumes" /> <Resumes v-if="load.Resumes" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Agreements" name="Agreements"> <el-tab-pane :label="$t('system:reviewer:tab:Agreements')" name="Agreements">
<Agreements v-if="load.Agreements" /> <Agreements v-if="load.Agreements" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
@ -44,6 +45,7 @@ import Resumes from './components/Resumes'
import Agreements from './components/Agreements' import Agreements from './components/Agreements'
import Setting from './components/Setting' import Setting from './components/Setting'
import { changeURLStatic, getQueryString } from '@/utils/history.js' import { changeURLStatic, getQueryString } from '@/utils/history.js'
import { mapMutations } from 'vuex'
export default { export default {
components: { components: {
BasicInfo, BasicInfo,
@ -74,6 +76,10 @@ export default {
} }
} }
}, },
created(){
this.$i18n.locale = this.$route.query.lang
this.setLanguage(this.$route.query.lang)
},
mounted() { mounted() {
this.active = this.$route.query.tabActive this.active = this.$route.query.tabActive
if (this.$route.query.Id === '' && this.active !== 'BasicInfo') { if (this.$route.query.Id === '' && this.active !== 'BasicInfo') {
@ -82,13 +88,14 @@ export default {
this.load[this.active] = true this.load[this.active] = true
}, },
methods: { methods: {
...mapMutations({ setLanguage: 'lang/setLanguage' }),
clickTab(tab, event) { clickTab(tab, event) {
if (this.load[tab.name] === false) { if (this.load[tab.name] === false) {
this.load[tab.name] = true this.load[tab.name] = true
} }
changeURLStatic('tabActive', tab.name) changeURLStatic('tabActive', tab.name)
const id = getQueryString('Id') const id = getQueryString('Id')
this.$router.push({ path: `/ReviewersResearchForm?Id=${id}&tabActive=${tab.name}&ReviewStatus=${getQueryString('ReviewStatus')}` }) this.$router.push({ path: `/ReviewersResearchForm?Id=${id}&tabActive=${tab.name}&ReviewStatus=${getQueryString('ReviewStatus')}&lang=${this.$i18n.locale}` })
}, },
checkLeave() { checkLeave() {
const id = getQueryString('Id') const id = getQueryString('Id')

View File

@ -1,21 +1,21 @@
<template> <template>
<div v-loading="loading" class="resumes-container"> <div v-loading="loading" class="resumes-container">
<div class="resume-content" v-if="!$route.query.ReviewStatus"> <div class="resume-content" v-if="!$route.query.ReviewStatus">
<p>Consultant Agreement</p> <p>{{$t('system:Agreements:title:Consultant Agreement')}}</p>
<div class="upload-content"> <div class="upload-content">
<upload-files ref="uploadAgreement" :disabled="$route.query.ReviewStatus === '1'" :doctor-id="doctorId" type="Consultant Agreement" accept=".pdf" @getFileList="getFileList" /> <upload-files ref="uploadAgreement" :disabled="$route.query.ReviewStatus === '1'" :doctor-id="doctorId" type="Consultant Agreement" accept=".pdf" @getFileList="getFileList" />
</div> </div>
<p>(must be in pdf format)</p> <p>{{ $t('system:GcpCertificate:tap:must') }}</p>
</div> </div>
<div v-if="!$route.query.ReviewStatus"> <div v-if="!$route.query.ReviewStatus">
<el-table :data="agreementList" size="small"> <el-table :data="agreementList" size="small">
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<el-table-column prop="FileName" label="Consultant Agreement" width="300" /> <el-table-column prop="FileName" :label="$t('system:Agreements:table:Consultant Agreement')" width="300" />
<el-table-column prop="CreateTime" label="Upload Time" width="150" /> <el-table-column prop="CreateTime" :label="$t('system:Agreements:table:Upload Time')" width="150" />
<el-table-column label="Action" width="400"> <el-table-column :label="$t('common:action:action')" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="handlePreview(scope.row)">View</el-button> <el-button type="text" size="small" @click="handlePreview(scope.row)">{{$t('trials:enrolledReviews:button:view')}}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile(scope.row)">Delete</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile(scope.row)">{{$t('common:button:delete')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -24,21 +24,22 @@
<span style="margin-right: 20px"> <span style="margin-right: 20px">
{{$t('trials:enrolledReviews:message:SOW')}} {{$t('trials:enrolledReviews:message:SOW')}}
</span> </span>
<el-button size="small" type="primary" :disabled="$route.query.ReviewStatus === '1'" @click="addCol(0, $t('trials:enrolledReviews:message:SOW'))">Upload</el-button> <el-button size="small" type="primary" :disabled="$route.query.ReviewStatus === '1'" @click="addCol(0, $t('trials:enrolledReviews:message:SOW'))">
{{ $t('common:button:upload') }}</el-button>
<el-button size="small" type="primary" @click="handleDownload('Reviewer_SOW_Template')"> <el-button size="small" type="primary" @click="handleDownload('Reviewer_SOW_Template')">
<i class="el-icon-view el-icon-download"></i> <i class="el-icon-view el-icon-download"></i>
Template {{ $t('common:button:template') }}
</el-button> </el-button>
</div> </div>
<el-table :data="sowList" size="small"> <el-table :data="sowList" size="small">
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<el-table-column label="Criterion Type" width="120"> <el-table-column :label="$t('system:Agreements:table:Criterion Type')" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.CriterionName }} {{ scope.row.CriterionName }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="FileName" label="Statement of Work" width="400" /> <el-table-column prop="FileName" :label="$t('system:Agreements:table:Statement of Work')" width="400" />
<el-table-column prop="IsEnable" label="Is Enable" width="100"> <el-table-column prop="IsEnable" :label="$t('system:Agreements:table:Is Enable')" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.IsEnable" v-model="scope.row.IsEnable"
@ -48,13 +49,14 @@
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Remark" label="Remark" width="200" /> <el-table-column prop="Remark" :label="$t('system:Agreements:Remark')" width="200" />
<el-table-column prop="CreateTime" label="Upload Time" width="150" /> <el-table-column prop="CreateTime" :label="$t('system:Agreements:Upload Time')" width="150" />
<el-table-column label="Action" width="400"> <el-table-column :label="$t('common:action:action')" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePreview3(scope.row)">View</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePreview3(scope.row)">{{$t('trials:enrolledReviews:button:view')}}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEditCol(scope.row, 0, $t('trials:enrolledReviews:message:SOW'))">Edit</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEditCol(scope.row, 0, $t('trials:enrolledReviews:message:SOW'))">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile3(scope.row)">Delete</el-button> {{ $t('common:button:edit') }}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile3(scope.row)">{{ $t('common:button:delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -62,17 +64,17 @@
<span style="margin-right: 20px"> <span style="margin-right: 20px">
{{$t('trials:enrolledReviews:message:EQC')}} {{$t('trials:enrolledReviews:message:EQC')}}
</span> </span>
<el-button size="small" type="primary" :disabled="$route.query.ReviewStatus === '1'" @click="addCol(1, $t('trials:enrolledReviews:message:EQC'))">Upload</el-button> <el-button size="small" type="primary" :disabled="$route.query.ReviewStatus === '1'" @click="addCol(1, $t('trials:enrolledReviews:message:EQC'))">{{$t('common:button:upload')}}</el-button>
</div> </div>
<el-table :data="ackSowList" size="small" v-if="!$route.query.ReviewStatus"> <el-table :data="ackSowList" size="small" v-if="!$route.query.ReviewStatus">
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<el-table-column label="Criterion Type" width="120"> <el-table-column :label="$t('system:Agreements:table:Criterion Type')" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.CriterionName }} {{ scope.row.CriterionName }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="FileName" label="Acknowledgement of SOW" width="400" /> <el-table-column prop="FileName" :label="$t('system:Agreements:table:Acknowledgement of SOW')" width="400" />
<el-table-column prop="IsEnable" label="Is Enable" width="100"> <el-table-column prop="IsEnable" :label="$t('system:Agreements:table:Is Enable')" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch <el-switch
v-model="scope.row.IsEnable" v-model="scope.row.IsEnable"
@ -82,13 +84,13 @@
/> />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Remark" label="Remark" width="200" /> <el-table-column prop="Remark" :label="$t('system:Agreements:table:Remark')" width="200" />
<el-table-column prop="CreateTime" label="Upload Time" width="150" /> <el-table-column prop="CreateTime" :label="$t('system:Agreements:table:Upload Time')" width="150" />
<el-table-column label="Action" width="400"> <el-table-column label="Action" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePreview3(scope.row)">View</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePreview3(scope.row)">{{$t('common:button:view')}}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEditCol(scope.row, 1, $t('trials:enrolledReviews:message:EQC'))">Edit</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEditCol(scope.row, 1, $t('trials:enrolledReviews:message:EQC'))">{{$t('common:button:edit')}}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile3(scope.row)">Delete</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile3(scope.row)">{{$t('common:button:delete')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -101,7 +103,7 @@
label-width="120px" label-width="120px"
size="small" size="small"
> >
<el-form-item label="Criterion Type " prop="CriterionType"> <el-form-item :label="$t('system:Agreements:label:Criterion Type')" prop="CriterionType">
<el-select v-model="form.CriterionType"> <el-select v-model="form.CriterionType">
<el-option <el-option
v-for="item of $d.CriterionType" v-for="item of $d.CriterionType"
@ -111,7 +113,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="File" prop="FilePath"> <el-form-item :label="$t('system:Agreements:label:File')" prop="FilePath">
<el-upload <el-upload
class="upload-demo" class="upload-demo"
action action
@ -126,11 +128,11 @@
<el-button size="small" type="primary" :disabled="fileList.length > 0">{{$t('common:button:upload')}}</el-button> <el-button size="small" type="primary" :disabled="fileList.length > 0">{{$t('common:button:upload')}}</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="Remark"> <el-form-item :label="$t('system:Agreements:label:Remark')">
<el-input v-model="form.Remark" type="textarea" <el-input v-model="form.Remark" type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"></el-input> :autosize="{ minRows: 2, maxRows: 4}"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Is Enable"> <el-form-item :label="$t('system:Agreements:label:Is Enable')">
<el-switch <el-switch
v-model="form.IsEnable" v-model="form.IsEnable"
:active-value="true" :active-value="true"
@ -140,8 +142,8 @@
</el-form> </el-form>
</template> </template>
<template slot="dialog-footer"> <template slot="dialog-footer">
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancle">Cancel</el-button> <el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancle">{{ $t('common:button:cancel') }}</el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">Save</el-button> <el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">{{ $t('common:button:save') }}</el-button>
</template> </template>
</BaseModel> </BaseModel>
</div> </div>
@ -272,6 +274,7 @@ export default {
this.model_cfg.title = title this.model_cfg.title = title
}, },
initSowList() { initSowList() {
if (!this.doctorId) return
getDoctorCriterionFile({ getDoctorCriterionFile({
fileType: 0, fileType: 0,
DoctorId: this.doctorId DoctorId: this.doctorId

View File

@ -15,31 +15,31 @@
> >
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item v-if="basicInfo.ReviewerCode" label="ID: "> <el-form-item v-if="basicInfo.ReviewerCode" :label="$t('system:reviewer:label:Id')">
<el-input v-model="basicInfo.ReviewerCode" disabled size="small" /> <el-input v-model="basicInfo.ReviewerCode" disabled size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Surname: " prop="LastName"> <el-form-item :label="$t('system:reviewer:label:LastName')" prop="LastName">
<el-input v-model="basicInfo.LastName" :disabled="$route.query.ReviewStatus === '1'" size="small" /> <el-input v-model="basicInfo.LastName" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Given Name: " prop="FirstName"> <el-form-item :label="$t('system:reviewer:label:FirstName')" prop="FirstName">
<el-input v-model="basicInfo.FirstName" :disabled="$route.query.ReviewStatus === '1'" size="small" /> <el-input v-model="basicInfo.FirstName" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Name CN: " prop="ChineseName"> <el-form-item :label="$t('system:reviewer:label:NameCN')" prop="ChineseName">
<el-input v-model="basicInfo.ChineseName" :disabled="$route.query.ReviewStatus === '1'" size="small" /> <el-input v-model="basicInfo.ChineseName" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Gender: " prop="Sex"> <el-form-item :label="$t('system:reviewer:label:Gender')" prop="Sex">
<el-select <el-select
v-model="basicInfo.Sex" v-model="basicInfo.Sex"
prop="Sex" prop="Sex"
@ -59,12 +59,12 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Phone: " prop="Phone"> <el-form-item :label="$t('system:reviewer:label:Phone')" prop="Phone">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="basicInfo.Phone" size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="basicInfo.Phone" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Title: " prop="TitleIds"> <el-form-item :label="$t('system:reviewer:label:Title')" prop="TitleIds">
<el-select <el-select
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
v-model="basicInfo.TitleIds[0]" v-model="basicInfo.TitleIds[0]"
@ -89,17 +89,15 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="EMail: " prop="EMail"> <el-form-item :label="$t('system:reviewer:label:Email')" prop="EMail">
<el-input v-model="basicInfo.EMail" :disabled="$route.query.ReviewStatus === '1'" size="small" /> <el-input v-model="basicInfo.EMail" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <!-- <el-col :span="12">-->
<el-form-item label="WeChat: " prop="WeChat"> <!-- <el-form-item label="WeChat: " prop="WeChat">-->
<el-input v-model="basicInfo.WeChat" :disabled="$route.query.ReviewStatus === '1'" size="small" /> <!-- <el-input v-model="basicInfo.WeChat" :disabled="$route.query.ReviewStatus === '1'" size="small" />-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row>
<el-row>
<el-col :span="12"> <el-col :span="12">
<!-- <el-form-item label="Payment Type: " prop="Nation"> <!-- <el-form-item label="Payment Type: " prop="Nation">
<el-radio-group v-model="basicInfo.Nation"> <el-radio-group v-model="basicInfo.Nation">
@ -108,7 +106,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> --> </el-form-item> -->
<el-form-item label="Payment Type: " prop="Nation"> <el-form-item :label="$t('system:reviewer:label:Country')" prop="Nation">
<el-select <el-select
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
v-model="basicInfo.Nation" v-model="basicInfo.Nation"
@ -116,11 +114,13 @@
clearable clearable
class="mr" class="mr"
> >
<el-option v-for="item of $d.AttendedReviewerType" :value="item.value" :label="item.label" /> <el-option v-for="item of $d.AttendedReviewerType" :value="item.value" :label="item.label" :key="item.id"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<!-- <el-row>-->
<!-- </el-row>-->
<el-row> <el-row>
<el-form-item style="margin-left: 120px"> <el-form-item style="margin-left: 120px">
<el-button <el-button
@ -129,7 +129,7 @@
:loading="isDisabled" :loading="isDisabled"
size="small" size="small"
@click="handleSave" @click="handleSave"
>Save</el-button> > {{ $t('common:button:save') }}</el-button>
</el-form-item> </el-form-item>
</el-row> </el-row>
</el-form> </el-form>

View File

@ -2,7 +2,7 @@
<div class="credentials-container"> <div class="credentials-container">
<div class="clearfix"> <div class="clearfix">
<el-card class="e-card"> <el-card class="e-card">
<p class="title">Diploma of the highest medical degree 最高医学学位毕业证书 <p class="title">{{$t('system:Credentials:title:Diploma of the highest medical degree')}}
</p> </p>
<upload-file :doctor-id="doctorId" type="Diploma of the highest medical degree" /> <upload-file :doctor-id="doctorId" type="Diploma of the highest medical degree" />
<!-- <el-button size="mini" type="primary" style="position: absolute;bottom:10px;right: 10px;" @click="handleDownload('Reviewer_DiplomaOfTheHighestMedicalDegree_Template')">--> <!-- <el-button size="mini" type="primary" style="position: absolute;bottom:10px;right: 10px;" @click="handleDownload('Reviewer_DiplomaOfTheHighestMedicalDegree_Template')">-->
@ -12,7 +12,7 @@
</el-card> </el-card>
<el-card class="e-card"> <el-card class="e-card">
<p class="title">Medical Qualification Certificate 医师资格证 <p class="title">{{$t('system:Credentials:title:Medical Qualification Certificate')}}
<!-- <el-button size="mini" type="primary" style="position: absolute;bottom:10px;right: 10px;" @click="handleDownload('Reviewer_MedicalQualificationCertificate_Template')">--> <!-- <el-button size="mini" type="primary" style="position: absolute;bottom:10px;right: 10px;" @click="handleDownload('Reviewer_MedicalQualificationCertificate_Template')">-->
<!-- <i class="el-icon-view el-icon-download"></i>--> <!-- <i class="el-icon-view el-icon-download"></i>-->
<!-- Template--> <!-- Template-->
@ -22,7 +22,7 @@
</el-card> </el-card>
<el-card class="e-card"> <el-card class="e-card">
<p class="title">Practice License 医师执业证 <p class="title">{{$t('system:Credentials:title:Practice License')}}
<!-- <el-button size="mini" type="primary" style="position: absolute;bottom:10px;right: 10px;" @click="handleDownload('Reviewer_PracticeLicense_Template')">--> <!-- <el-button size="mini" type="primary" style="position: absolute;bottom:10px;right: 10px;" @click="handleDownload('Reviewer_PracticeLicense_Template')">-->
<!-- <i class="el-icon-view el-icon-download"></i>--> <!-- <i class="el-icon-view el-icon-download"></i>-->
<!-- Template--> <!-- Template-->
@ -31,7 +31,7 @@
<upload-file :doctor-id="doctorId" type="Practice License" /> <upload-file :doctor-id="doctorId" type="Practice License" />
</el-card> </el-card>
</div> </div>
<h6 style="line-height:30px;font-size:13px;">Modality Certificate 大型医用设备上岗证</h6> <h6 style="line-height:30px;font-size:13px;">{{$t('system:Credentials:title:Modality Certificate')}}</h6>
<div class="clearfix"> <div class="clearfix">
<el-card class="e-card"> <el-card class="e-card">
<p class="title">CT <p class="title">CT

View File

@ -1,8 +1,9 @@
<template> <template>
<div v-loading="loading" class="form-container"> <div v-loading="loading" class="form-container">
<div class="title-wrapper"> <div class="title-wrapper">
<p>Education (in chronological order)</p> <p>{{ $t('system:reviewer:title:Education') }}</p>
<el-button class="add" :disabled="$route.query.ReviewStatus === '1'" size="small" @click="handleAddEducation">Add</el-button> <el-button class="add" :disabled="$route.query.ReviewStatus === '1'" size="small" @click="handleAddEducation">
{{ $t('common:button:add') }}</el-button>
</div> </div>
<el-table <el-table
ref="educationTbl" ref="educationTbl"
@ -14,29 +15,29 @@
<el-table-column type="index" width="30" /> <el-table-column type="index" width="30" />
<el-table-column <el-table-column
prop="BeginDateStr" prop="BeginDateStr"
label="Start" :label="$t('system:EducationTraining:table:Start')"
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('system:EducationTraining:table:End')"
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('system:EducationTraining:table:Degree')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.DegreeCN?`${scope.row.Degree} / ${scope.row.DegreeCN}`:scope.row.Degree }} {{ scope.row.DegreeCN?`${scope.row.Degree} / ${scope.row.DegreeCN}`:scope.row.Degree }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Major" label="Major" min-width="120" show-overflow-tooltip> <el-table-column prop="Major" :label="$t('system:EducationTraining:table:Major')" min-width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }} {{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Organization" prop="Organization"
label="Institution" :label="$t('system:EducationTraining:table:Institution')"
min-width="150" min-width="150"
show-overflow-tooltip show-overflow-tooltip
> >
@ -44,32 +45,35 @@
{{ scope.row.OrganizationCN?`${scope.row.Organization} / ${scope.row.OrganizationCN}`:scope.row.Organization }} {{ scope.row.OrganizationCN?`${scope.row.Organization} / ${scope.row.OrganizationCN}`:scope.row.Organization }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="City" label="City" min-width="90" show-overflow-tooltip> <el-table-column prop="City" :label="$t('system:EducationTraining:table:City')" min-width="90" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.CityCN?`${scope.row.City} / ${scope.row.CityCN}`:scope.row.City }} {{ scope.row.CityCN?`${scope.row.City} / ${scope.row.CityCN}`:scope.row.City }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Province" label="State/Province" min-width="90" show-overflow-tooltip> <el-table-column prop="Province" :label="$t('system:EducationTraining:table:State/Province')" min-width="90" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.ProvinceCN?`${scope.row.Province} / ${scope.row.ProvinceCN}`:scope.row.Province }} {{ scope.row.ProvinceCN?`${scope.row.Province} / ${scope.row.ProvinceCN}`:scope.row.Province }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Country" label="Country" min-width="80" show-overflow-tooltip> <el-table-column prop="Country" :label="$t('system:EducationTraining:table:Country')" min-width="80" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.CountryCN?`${scope.row.Country} / ${scope.row.CountryCN}`:scope.row.Country }} {{ scope.row.CountryCN?`${scope.row.Country} / ${scope.row.CountryCN}`:scope.row.Country }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Operation" min-width="120"> <el-table-column :label="$t('system:EducationTraining:table:Operation')" min-width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEducationEdit(scope.row)">Edit</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEducationEdit(scope.row)">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEducationDelete(scope.row)">Delete</el-button> {{ $t('common:button:edit') }}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEducationDelete(scope.row)">
{{ $t('common:button:delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="title-wrapper" style="margin-top:40px;"> <div class="title-wrapper" style="margin-top:40px;">
<p>Postgraduate Training (in chronological order)</p> <p>{{ $t('system:reviewer:title:Postgraduate') }}</p>
<el-button class="add" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleAddPostgraduate">Add</el-button> <el-button class="add" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleAddPostgraduate">
{{ $t('common:button:add') }}</el-button>
</div> </div>
<el-table <el-table
ref="postgraduateTbl" ref="postgraduateTbl"
@ -81,24 +85,24 @@
<el-table-column type="index" width="30" /> <el-table-column type="index" width="30" />
<el-table-column <el-table-column
prop="BeginDateStr" prop="BeginDateStr"
label="Start" :label="$t('system:EducationTraining:table:Start')"
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('system:EducationTraining:table:End')"
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('system:EducationTraining:table:Training')" min-width="70" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.TrainingCN?`${scope.row.Training} / ${scope.row.TrainingCN}`:scope.row.Training }} {{ scope.row.TrainingCN?`${scope.row.Training} / ${scope.row.TrainingCN}`:scope.row.Training }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Major" prop="Major"
label="Specialty/Research Field" :label="$t('system:EducationTraining:table:Specialty/Research Field')"
min-width="155" min-width="155"
show-overflow-tooltip show-overflow-tooltip
> >
@ -106,32 +110,32 @@
{{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }} {{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Hospital" label="Hospital" min-width="120" show-overflow-tooltip> <el-table-column prop="Hospital" :label="$t('system:EducationTraining:table:Hospital')" min-width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.HospitalCN?`${scope.row.Hospital} / ${scope.row.HospitalCN}`:scope.row.Hospital }} {{ scope.row.HospitalCN?`${scope.row.Hospital} / ${scope.row.HospitalCN}`:scope.row.Hospital }}
</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('system:EducationTraining:table:University')" min-width="120" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.SchoolCN?`${scope.row.School} / ${scope.row.SchoolCN}`:scope.row.School }} {{ scope.row.SchoolCN?`${scope.row.School} / ${scope.row.SchoolCN}`:scope.row.School }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="City" label="City" min-width="100" show-overflow-tooltip> <el-table-column prop="City" :label="$t('system:EducationTraining:table:City')" min-width="100" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.CityCN?`${scope.row.City} / ${scope.row.CityCN}`:scope.row.City }} {{ scope.row.CityCN?`${scope.row.City} / ${scope.row.CityCN}`:scope.row.City }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Province" label="State/Province" min-width="100" show-overflow-tooltip> <el-table-column prop="Province" :label="$t('system:EducationTraining:table:State/Province')" min-width="100" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.ProvinceCN?`${scope.row.Province} / ${scope.row.ProvinceCN}`:scope.row.Province }} {{ scope.row.ProvinceCN?`${scope.row.Province} / ${scope.row.ProvinceCN}`:scope.row.Province }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="Country" label="Country" min-width="90" show-overflow-tooltip> <el-table-column prop="Country" :label="$t('system:EducationTraining:table:Country')" min-width="90" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.CountryCN?`${scope.row.Country} / ${scope.row.CountryCN}`:scope.row.Country }} {{ scope.row.CountryCN?`${scope.row.Country} / ${scope.row.CountryCN}`:scope.row.Country }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Operation" min-width="120"> <el-table-column :label="$t('system:EducationTraining:table:Operation')" min-width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePostgraduateEdit(scope.row)">Edit</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePostgraduateEdit(scope.row)">Edit</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePostgraduateDelete(scope.row)">Delete</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handlePostgraduateDelete(scope.row)">Delete</el-button>
@ -147,7 +151,7 @@
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<el-form v-if="educationDialogVisible" ref="educationForm" size="small" label-width="120px" :model="educationForm" :rules="educationRules"> <el-form v-if="educationDialogVisible" ref="educationForm" size="small" label-width="120px" :model="educationForm" :rules="educationRules">
<el-form-item label="Start" prop="BeginDate"> <el-form-item :label="$t('system:EducationTraining:table:Start')" prop="BeginDate">
<el-date-picker <el-date-picker
v-model="educationForm.BeginDate" v-model="educationForm.BeginDate"
type="month" type="month"
@ -158,7 +162,7 @@
:picker-options="beginPickerOption" :picker-options="beginPickerOption"
/> />
</el-form-item> </el-form-item>
<el-form-item label="End" prop="EndDate"> <el-form-item :label="$t('system:EducationTraining:table:End')" prop="EndDate">
<el-date-picker <el-date-picker
v-model="educationForm.EndDate" v-model="educationForm.EndDate"
type="month" type="month"
@ -169,8 +173,8 @@
:picker-options="endpickerOption" :picker-options="endpickerOption"
/> />
</el-form-item> </el-form-item>
<el-form-item label="Degree" prop="Degree"> <el-form-item :label="$t('system:EducationTraining:table:Degree')" prop="Degree">
<el-select v-model="educationForm.Degree" placeholder="Please select" size="small"> <el-select v-model="educationForm.Degree" size="small">
<el-option <el-option
v-for="item in degreeOptions" v-for="item in degreeOptions"
:key="item.value" :key="item.value"
@ -180,7 +184,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Major" prop="Major"> <el-form-item :label="$t('system:EducationTraining:table:Major')" prop="Major">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="educationForm.Major" placeholder="Please specify in English" size="small" /> <el-input v-model="educationForm.Major" placeholder="Please specify in English" size="small" />
@ -190,7 +194,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Institution" prop="Organization"> <el-form-item :label="$t('system:EducationTraining:table:Institution')" prop="Organization">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="educationForm.Organization" placeholder="Please specify in English" size="small" /> <el-input v-model="educationForm.Organization" placeholder="Please specify in English" size="small" />
@ -200,7 +204,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="City" prop="City"> <el-form-item :label="$t('system:EducationTraining:table:City')" prop="City">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="educationForm.City" placeholder="Please specify in English" size="small" /> <el-input v-model="educationForm.City" placeholder="Please specify in English" size="small" />
@ -211,7 +215,7 @@
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="State/Province" prop="Province"> <el-form-item :label="$t('system:EducationTraining:table:State/Province')" prop="Province">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="educationForm.Province" placeholder="Please specify in English" size="small" /> <el-input v-model="educationForm.Province" placeholder="Please specify in English" size="small" />
@ -221,7 +225,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Country" prop="Country"> <el-form-item :label="$t('system:EducationTraining:table:Country')" prop="Country">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="educationForm.Country" placeholder="Please specify in English" size="small" /> <el-input v-model="educationForm.Country" placeholder="Please specify in English" size="small" />
@ -233,7 +237,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" :loading="isDisabled" @click="handleEducationSave">Save</el-button> <el-button type="primary" size="small" :loading="isDisabled" @click="handleEducationSave">{{ $t('common:button:save') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -245,7 +249,7 @@
:close-on-click-modal="false" :close-on-click-modal="false"
> >
<el-form v-if="postgraduateDialogVisible" ref="postgraduateForm" size="small" label-width="190px" :model="postgraduateForm" :rules="postgraduateRules"> <el-form v-if="postgraduateDialogVisible" ref="postgraduateForm" size="small" label-width="190px" :model="postgraduateForm" :rules="postgraduateRules">
<el-form-item label="Start" prop="BeginDate"> <el-form-item :label="$t('system:EducationTraining:table:Start')" prop="BeginDate">
<el-date-picker <el-date-picker
v-model="postgraduateForm.BeginDate" v-model="postgraduateForm.BeginDate"
type="month" type="month"
@ -256,7 +260,7 @@
size="small" size="small"
/> />
</el-form-item> </el-form-item>
<el-form-item label="End" prop="EndDate"> <el-form-item :label="$t('system:EducationTraining:table:End')" prop="EndDate">
<el-date-picker <el-date-picker
v-model="postgraduateForm.EndDate" v-model="postgraduateForm.EndDate"
type="month" type="month"
@ -267,7 +271,7 @@
size="small" size="small"
/> />
</el-form-item> </el-form-item>
<el-form-item label="Training" prop="Training"> <el-form-item :label="$t('system:EducationTraining:table:Training')" prop="Training">
<el-select v-model="postgraduateForm.Training" placeholder="Please select" size="small"> <el-select v-model="postgraduateForm.Training" placeholder="Please select" size="small">
<el-option <el-option
v-for="item in TrainingOptions" v-for="item in TrainingOptions"
@ -277,7 +281,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Specialty / Research Field" prop="Major"> <el-form-item :label="$t('system:EducationTraining:table:Specialty/Research Field')" prop="Major">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="postgraduateForm.Major" placeholder="Please specify in English" size="small" /> <el-input v-model="postgraduateForm.Major" placeholder="Please specify in English" size="small" />
@ -287,7 +291,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Hospital" prop="Hospital"> <el-form-item :label="$t('system:EducationTraining:table:Hospital')" prop="Hospital">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="postgraduateForm.Hospital" placeholder="Please specify in English" size="small" /> <el-input v-model="postgraduateForm.Hospital" placeholder="Please specify in English" size="small" />
@ -297,7 +301,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="University" prop="School"> <el-form-item :label="$t('system:EducationTraining:table:University')" prop="School">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="postgraduateForm.School" placeholder="Please specify in English" size="small" /> <el-input v-model="postgraduateForm.School" placeholder="Please specify in English" size="small" />
@ -308,7 +312,7 @@
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="City" prop="City"> <el-form-item :label="$t('system:EducationTraining:table:City')" prop="City">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="postgraduateForm.City" placeholder="Please specify in English" size="small" /> <el-input v-model="postgraduateForm.City" placeholder="Please specify in English" size="small" />
@ -318,7 +322,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="State/Province" prop="Province"> <el-form-item :label="$t('system:EducationTraining:table:State/Province')" prop="Province">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="postgraduateForm.Province" placeholder="Please specify in English" size="small" /> <el-input v-model="postgraduateForm.Province" placeholder="Please specify in English" size="small" />
@ -328,7 +332,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Country" prop="Country"> <el-form-item :label="$t('system:EducationTraining:table:Country')" prop="Country">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input v-model="postgraduateForm.Country" placeholder="Please specify in English" size="small" /> <el-input v-model="postgraduateForm.Country" placeholder="Please specify in English" size="small" />
@ -340,7 +344,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" :loading="isDisabled" @click="handlePostgraduateSave">Save</el-button> <el-button size="small" type="primary" :loading="isDisabled" @click="handlePostgraduateSave">{{ $t('common:button:save') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -528,7 +532,6 @@ export default {
if (valid) { if (valid) {
this.isDisabled = true this.isDisabled = true
this.educationForm.DoctorId = this.$route.query.Id this.educationForm.DoctorId = this.$route.query.Id
if (this.educationForm.Degree === 'Bachelor') { if (this.educationForm.Degree === 'Bachelor') {
this.educationForm.DegreeCN = '学士' this.educationForm.DegreeCN = '学士'
} else if (this.educationForm.Degree === 'Master') { } else if (this.educationForm.Degree === 'Master') {
@ -564,8 +567,7 @@ export default {
this.$confirm('Confirm to delete?', { this.$confirm('Confirm to delete?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'OK',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteEducationInfo(row.Id) deleteEducationInfo(row.Id)
@ -633,8 +635,7 @@ export default {
this.$confirm('Confirm to delete?', { this.$confirm('Confirm to delete?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'OK',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deletePostgraduateInfo(row.Id) deletePostgraduateInfo(row.Id)

View File

@ -13,7 +13,7 @@
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="Hospital: " prop="HospitalId"> <el-form-item :label="$t('system:reviewer:label:Hospital')" prop="HospitalId">
<el-select <el-select
v-model="employmentForm.HospitalId" v-model="employmentForm.HospitalId"
placeholder="select" placeholder="select"
@ -39,13 +39,12 @@
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="Affiliated University: "> <el-form-item :label="$t('system:reviewer:label:AffiliatedUniversity')">
<el-input <el-input
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
v-model="UniversityAffiliated" v-model="UniversityAffiliated"
type="textarea" type="textarea"
autosize autosize
disabled
size="small" size="small"
/> />
</el-form-item> </el-form-item>
@ -53,29 +52,29 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="City: "> <el-form-item :label="$t('system:reviewer:label:City')">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="City" disabled size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="City" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="State/Province: "> <el-form-item :label="$t('system:reviewer:label:State/Province')">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Province" disabled size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Province" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="Country: "> <el-form-item :label="$t('system:reviewer:label:Country')">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Country" disabled size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Country" size="small" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="Department: " prop="DepartmentId"> <el-form-item :label="$t('system:reviewer:label:Department')" prop="DepartmentId">
<el-select <el-select
v-model="employmentForm.DepartmentId" v-model="employmentForm.DepartmentId"
placeholder="select" placeholder="select"
@ -123,7 +122,7 @@
<el-row> <el-row>
<el-col :span="14"> <el-col :span="14">
<el-form-item label="Rank: " prop="RankId"> <el-form-item :label="$t('system:reviewer:label:Rank')" prop="RankId">
<el-select <el-select
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
v-model="employmentForm.RankId" v-model="employmentForm.RankId"
@ -141,7 +140,7 @@
<el-option <el-option
v-for="item of $d.Rank" v-for="item of $d.Rank"
:key="item.id" :key="item.id"
:label="item.raw.Value" :label="item.label"
:value="item.id" :value="item.id"
/> />
<!-- <el-option label="Other" :value="otherId" />--> <!-- <el-option label="Other" :value="otherId" />-->
@ -170,99 +169,98 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <!-- <el-row>-->
<el-col :span="14"> <!-- <el-col :span="14">-->
<el-form-item label="Physician: " prop="PhysicianId" > <!-- <el-form-item label="Physician: " prop="PhysicianId" >-->
<el-select <!-- <el-select-->
v-model="employmentForm.PhysicianId" <!-- v-model="employmentForm.PhysicianId"-->
placeholder="select" <!-- placeholder="select"-->
:disabled="$route.query.ReviewStatus === '1'" <!-- :disabled="$route.query.ReviewStatus === '1'"-->
@change="PhysicianChange" <!-- @change="PhysicianChange"-->
style="width:100%;" <!-- style="width:100%;"-->
size="small" <!-- size="small"-->
> <!-- >-->
<el-option <!-- <el-option-->
v-for="item of $d.PhysicianOriginal" <!-- v-for="item of $d.PhysicianOriginal"-->
:key="item.id" <!-- :key="item.id"-->
:label="item.raw.Value" <!-- :label="item.raw.Value"-->
:value="item.id" <!-- :value="item.id"-->
/> <!-- />-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
<el-col :span="5"> <!-- <el-col :span="5">-->
<el-form-item v-if="$fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === '其它' || $fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === 'Other'" class="other-item" prop="Physician"> <!-- <el-form-item v-if="$fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === '其它' || $fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === 'Other'" class="other-item" prop="Physician">-->
<el-input <!-- <el-input-->
:disabled="$route.query.ReviewStatus === '1'" <!-- :disabled="$route.query.ReviewStatus === '1'"-->
v-model="employmentForm.Physician" <!-- v-model="employmentForm.Physician"-->
placeholder="Please specify" <!-- placeholder="Please specify"-->
size="small" <!-- size="small"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
<el-col :span="5"> <!-- <el-col :span="5">-->
<el-form-item v-if="$fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === '其它' || $fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === 'Other'" class="other-item" prop="PhysicianCN"> <!-- <el-form-item v-if="$fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === '其它' || $fd('PhysicianOriginal', employmentForm.PhysicianId, 'id') === 'Other'" class="other-item" prop="PhysicianCN">-->
<el-input <!-- <el-input-->
:disabled="$route.query.ReviewStatus === '1'" <!-- :disabled="$route.query.ReviewStatus === '1'"-->
v-model="employmentForm.PhysicianCN" <!-- v-model="employmentForm.PhysicianCN"-->
placeholder="请用中文注明" <!-- placeholder="请用中文注明"-->
size="small" <!-- size="small"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
<!-- <el-row>-->
<el-row> <!-- <el-col :span="14">-->
<el-col :span="14"> <!-- <el-form-item label="Position: " prop="PositionId">-->
<el-form-item label="Position: " prop="PositionId"> <!-- <el-select-->
<el-select <!-- :disabled="$route.query.ReviewStatus === '1'"-->
:disabled="$route.query.ReviewStatus === '1'" <!-- v-model="employmentForm.PositionId"-->
v-model="employmentForm.PositionId" <!-- placeholder="select"-->
placeholder="select" <!-- style="width:100%;"-->
style="width:100%;" <!-- size="small"-->
size="small" <!-- >-->
> <!-- &lt;!&ndash; <el-option-->
<!-- <el-option <!-- v-for="(key,value) of dictionaryList.Position"-->
v-for="(key,value) of dictionaryList.Position" <!-- :key="key"-->
:key="key" <!-- :label="key"-->
:label="key" <!-- :value="value"-->
:value="value" <!-- /> &ndash;&gt;-->
/> --> <!-- <el-option-->
<el-option <!-- v-for="item of dictionaryList.Position"-->
v-for="item of dictionaryList.Position" <!-- :key="item.Id"-->
:key="item.Id" <!-- :label="item.Value"-->
:label="item.Value" <!-- :value="item.Id"-->
:value="item.Id" <!-- />-->
/> <!-- <el-option label="Other" :value="otherId" />-->
<el-option label="Other" :value="otherId" /> <!-- <el-option label="None" value="f30a074b-2b47-4a92-97ec-e15086d37883" />-->
<el-option label="None" value="f30a074b-2b47-4a92-97ec-e15086d37883" /> <!-- </el-select>-->
</el-select> <!-- </el-form-item>-->
</el-form-item> <!-- </el-col>-->
</el-col> <!-- <el-col :span="5">-->
<el-col :span="5"> <!-- <el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOther">-->
<el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOther"> <!-- <el-input-->
<el-input <!-- :disabled="$route.query.ReviewStatus === '1'"-->
:disabled="$route.query.ReviewStatus === '1'" <!-- v-model="employmentForm.PositionOther"-->
v-model="employmentForm.PositionOther" <!-- placeholder="Please specify"-->
placeholder="Please specify" <!-- size="small"-->
size="small" <!-- />-->
/> <!-- </el-form-item>-->
</el-form-item> <!-- </el-col>-->
</el-col> <!-- <el-col :span="5">-->
<el-col :span="5"> <!-- <el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOtherCN">-->
<el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOtherCN"> <!-- <el-input-->
<el-input <!-- :disabled="$route.query.ReviewStatus === '1'"-->
:disabled="$route.query.ReviewStatus === '1'" <!-- v-model="employmentForm.PositionOtherCN"-->
v-model="employmentForm.PositionOtherCN" <!-- placeholder="请用中文注明"-->
placeholder="请用中文注明" <!-- size="small"-->
size="small" <!-- />-->
/> <!-- </el-form-item>-->
</el-form-item> <!-- </el-col>-->
</el-col> <!-- </el-row>-->
</el-row>
<el-form-item> <el-form-item>
<el-button type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'" size="small" @click="handleSave">Save</el-button> <el-button type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'" size="small" @click="handleSave">{{ $t('common:button:save') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -377,9 +375,9 @@ export default {
this.loading = true this.loading = true
this.isDisabled = true this.isDisabled = true
const param = {} const param = {}
var o = this.$d.PhysicianOriginal.find(v => { // var o = this.$d.PhysicianOriginal.find(v => {
return v.id === this.employmentForm.PhysicianId // return v.id === this.employmentForm.PhysicianId
}) // })
param.Id = this.$route.query.Id param.Id = this.$route.query.Id
param.DepartmentId = this.employmentForm.DepartmentId param.DepartmentId = this.employmentForm.DepartmentId
param.DepartmentOther = this.employmentForm.DepartmentId === this.otherId ? this.employmentForm.DepartmentOther : '' param.DepartmentOther = this.employmentForm.DepartmentId === this.otherId ? this.employmentForm.DepartmentOther : ''
@ -387,9 +385,9 @@ export default {
param.RankId = this.employmentForm.RankId param.RankId = this.employmentForm.RankId
param.RankOther = this.employmentForm.RankId === this.otherId ? this.employmentForm.RankOther : '' param.RankOther = this.employmentForm.RankId === this.otherId ? this.employmentForm.RankOther : ''
param.RankOtherCN = this.employmentForm.RankId === this.otherId ? this.employmentForm.RankOtherCN : '' param.RankOtherCN = this.employmentForm.RankId === this.otherId ? this.employmentForm.RankOtherCN : ''
param.PhysicianId = this.employmentForm.PhysicianId // param.PhysicianId = this.employmentForm.PhysicianId
param.Physician = o.label !== '其它' && o.label !== 'Other' ? o.raw.Value : this.employmentForm.Physician // param.Physician = o.label !== '' && o.label !== 'Other' ? o.raw.Value : this.employmentForm.Physician
param.PhysicianCN = o.label !== '其它' && o.label !== 'Other' ? o.raw.ValueCN : this.employmentForm.PhysicianCN // param.PhysicianCN = o.label !== '' && o.label !== 'Other' ? o.raw.ValueCN : this.employmentForm.PhysicianCN
param.PositionId = this.employmentForm.PositionId param.PositionId = this.employmentForm.PositionId
param.PositionOther = this.employmentForm.PositionId === this.otherId ? this.employmentForm.PositionOther : '' param.PositionOther = this.employmentForm.PositionId === this.otherId ? this.employmentForm.PositionOther : ''
param.PositionOtherCN = this.employmentForm.PositionId === this.otherId ? this.employmentForm.PositionOtherCN : '' param.PositionOtherCN = this.employmentForm.PositionId === this.otherId ? this.employmentForm.PositionOtherCN : ''

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="gcp-container"> <div class="gcp-container">
<el-radio-group v-model="GCP" style="margin-bottom:20px"> <el-radio-group v-model="GCP" style="margin-bottom:20px">
<el-radio :label="1">Yes</el-radio> <el-radio :label="1">{{ $t('system:GcpCertificate:radio:Yes') }}</el-radio>
<el-radio :label="0">No</el-radio> <el-radio :label="0">{{ $t('system:GcpCertificate:radio:No') }}</el-radio>
</el-radio-group> </el-radio-group>
<div v-if="GCP" class="upload-container"> <div v-if="GCP" class="upload-container">
<!-- <upload-file :doctor-id="doctorId" type="GCP" />--> <!-- <upload-file :doctor-id="doctorId" type="GCP" />-->
@ -19,13 +19,13 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
accept=".pdf" accept=".pdf"
> >
<el-button size="small" type="primary" :loading="btnDisabled">Upload</el-button> <el-button size="small" type="primary" :loading="btnDisabled">{{ $t('system:GcpCertificate:upload:Upload') }}</el-button>
<span slot="tip" style="margin-left:10px;" class="el-upload__tip">(must be in pdf format)</span> <span slot="tip" style="margin-left:10px;" class="el-upload__tip">{{ $t('system:GcpCertificate:tap:must') }}</span>
</el-upload> </el-upload>
</div> </div>
<div> <div>
<el-button :loading="saveBtnLoading" :disabled="(fileList.length === 0 && GCP === 1)" type="primary" size="small" style="margin-top:20px" @click="handleSaveGCP"> <el-button :loading="saveBtnLoading" :disabled="(fileList.length === 0 && GCP === 1)" type="primary" size="small" style="margin-top:20px" @click="handleSaveGCP">
Save {{ $t('common:button:save') }}
</el-button> </el-button>
</div> </div>
</div> </div>
@ -97,6 +97,7 @@ export default {
}) })
}, },
initFileList() { initFileList() {
if(!this.doctorId) return
getAttachmentByType(this.doctorId, 'GCP') getAttachmentByType(this.doctorId, 'GCP')
.then(res => { .then(res => {
if (res.IsSuccess) { if (res.IsSuccess) {
@ -181,7 +182,7 @@ export default {
this.fileList = [] this.fileList = []
this.GCPID = '' this.GCPID = ''
this.$message({ this.$message({
message: 'Deleted successfully!', message: this.$t('common:message:deletedSuccessfully'),
type: 'success' type: 'success'
}) })
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="form-container" style="width:80%;"> <div class="form-container" style="width:80%;">
<el-form ref="researchForm" v-loading="loading" label-width="140px" :model="researchForm" size="small"> <el-form ref="researchForm" v-loading="loading" label-width="140px" :model="researchForm" size="small">
<el-form-item label="Field of Research: "> <el-form-item :label="$t('system:reviewer:label:Field of Research')">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.Research" type="textarea" rows="5" placeholder="Please specify in English" size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.Research" type="textarea" rows="5" placeholder="Please specify in English" size="small" />
@ -11,7 +11,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Grants: "> <el-form-item :label="$t('system:reviewer:label:Grants')">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.Grants" type="textarea" rows="5" placeholder="Please specify in English" size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.Grants" type="textarea" rows="5" placeholder="Please specify in English" size="small" />
@ -21,7 +21,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Publications: "> <el-form-item :label="$t('system:reviewer:label:Publications')">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.Publications" type="textarea" rows="5" placeholder="Please specify in English" size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.Publications" type="textarea" rows="5" placeholder="Please specify in English" size="small" />
@ -31,7 +31,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item label="Awards & Honors: "> <el-form-item :label="$t('system:reviewer:label:Awards & Honors')">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
<el-col :span="11"> <el-col :span="11">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.AwardsHonors" type="textarea" rows="5" placeholder="Please specify in English" size="small" /> <el-input :disabled="$route.query.ReviewStatus === '1'" v-model="researchForm.AwardsHonors" type="textarea" rows="5" placeholder="Please specify in English" size="small" />
@ -42,7 +42,8 @@
</el-row> </el-row>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button :disabled="$route.query.ReviewStatus === '1'" type="primary" :loading="isDisabled" @click="handleSave">Save</el-button> <el-button :disabled="$route.query.ReviewStatus === '1'" type="primary" :loading="isDisabled" @click="handleSave">
{{ $t('common:button:save') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<div v-loading="loading" class="resumes-container"> <div v-loading="loading" class="resumes-container">
<div class="resume-content"> <div class="resume-content">
<p>Resume</p> <p>{{ $t('system:Resumes:title:Resume') }}</p>
<div class="upload-content"> <div class="upload-content">
<!-- <upload-files ref="uploadResume" :doctor-id="doctorId" :data-list="resumeList" :language="2" btn-name="Upload(English)" type="Resume" accept=".doc, .docx" @getFileList="getFileList" /> --> <!-- <upload-files ref="uploadResume" :doctor-id="doctorId" :data-list="resumeList" :language="2" btn-name="Upload(English)" type="Resume" accept=".doc, .docx" @getFileList="getFileList" /> -->
<div class="uploadFile-container"> <div class="uploadFile-container">
@ -14,21 +14,21 @@
:file-list="resumeList" :file-list="resumeList"
accept=".doc,.docx" accept=".doc,.docx"
> >
<el-button size="small" type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'">Upload</el-button> <el-button size="small" type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'">{{ $t('system:GcpCertificate:upload:Upload') }}</el-button>
</el-upload> </el-upload>
</div> </div>
</div> </div>
<p>(must be in doc,docx format)</p> <p>{{ $t('system:GcpCertificate:tap:must') }}</p>
</div> </div>
<div class="resumeTbl"> <div class="resumeTbl">
<el-table :data="resumeListEN" size="small"> <el-table :data="resumeListEN" size="small">
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<el-table-column prop="FileName" label="Resume" width="180" show-overflow-tooltip /> <el-table-column prop="FileName" :label="$t('system:Resumes:table:Resume')" width="180" show-overflow-tooltip />
<el-table-column prop="CreateTime" label="Upload Time" width="150" show-overflow-tooltip /> <el-table-column prop="CreateTime" :label="$t('system:Resumes:table:Upload Time')" width="150" show-overflow-tooltip />
<el-table-column <el-table-column
prop="IsOfficial" prop="IsOfficial"
label="Official" :label="$t('system:Resumes:table:Official')"
width="100" width="100"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -37,7 +37,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Language" prop="Language"
label="Language" :label="$t('system:Resumes:table:Language')"
width="100" width="100"
show-overflow-tooltip show-overflow-tooltip
> >
@ -46,23 +46,23 @@
<!-- <el-button size="small" type="text" @click="handleLanguageClick(scope.row)">{{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'Setting' }}</el-button> --> <!-- <el-button size="small" type="text" @click="handleLanguageClick(scope.row)">{{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'Setting' }}</el-button> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Action" width="400"> <el-table-column :label="$t('common:action:action')" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="handlePreview(scope.row)">Download</el-button> <el-button type="text" size="small" @click="handlePreview(scope.row)">{{ $t('common:button:download') }}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile(scope.row)">Delete</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile(scope.row)">{{ $t('common:button:delete') }}</el-button>
<el-button <el-button
type="text" type="text"
size="small" size="small"
:disabled="scope.row.IsOfficial || $route.query.ReviewStatus === '1'" :disabled="scope.row.IsOfficial || $route.query.ReviewStatus === '1'"
@click="handleSetOfiical(scope.row)" @click="handleSetOfiical(scope.row)"
>Set as Official</el-button> >{{ $t('system:Resumes:button:Set as Official') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="resume-content" style="margin-top:10px;"> <div class="resume-content" style="margin-top:10px;">
<p>中文简历</p> <p>{{ $t('system:Resumes:title:ResumeCN') }}</p>
<div class="upload-content"> <div class="upload-content">
<div class="uploadFile-container"> <div class="uploadFile-container">
<el-upload <el-upload
@ -74,20 +74,20 @@
:file-list="resumeList" :file-list="resumeList"
accept=".doc, .docx" accept=".doc, .docx"
> >
<el-button size="small" type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'">上传</el-button> <el-button size="small" type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'">{{ $t('system:GcpCertificate:upload:Upload') }}</el-button>
</el-upload> </el-upload>
</div> </div>
</div> </div>
<p>(必须是 doc,docx 格式)</p> <p>{{ $t('system:GcpCertificate:tap:must') }}</p>
</div> </div>
<div class="resumeTbl"> <div class="resumeTbl">
<el-table :data="resumeListCN" size="small"> <el-table :data="resumeListCN" size="small">
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<el-table-column prop="FileName" label="Resume" width="180" show-overflow-tooltip /> <el-table-column prop="FileName" :label="$t('system:Resumes:table:Resume')" width="180" show-overflow-tooltip />
<el-table-column prop="CreateTime" label="Upload Time" width="150" show-overflow-tooltip /> <el-table-column prop="CreateTime" :label="$t('system:Resumes:table:Upload Time')" width="150" show-overflow-tooltip />
<el-table-column <el-table-column
prop="IsOfficial" prop="IsOfficial"
label="Official" :label="$t('system:Resumes:table:Official')"
width="100" width="100"
> >
<template slot-scope="scope"> <template slot-scope="scope">
@ -96,7 +96,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="Language" prop="Language"
label="Language" :label="$t('system:Resumes:table:Language')"
width="100" width="100"
show-overflow-tooltip show-overflow-tooltip
> >
@ -105,16 +105,16 @@
<!-- <el-button size="small" type="text" @click="handleLanguageClick(scope.row)">{{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'Setting' }}</el-button> --> <!-- <el-button size="small" type="text" @click="handleLanguageClick(scope.row)">{{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'Setting' }}</el-button> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Action" width="400"> <el-table-column :label="$t('common:action:action')" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="handlePreview(scope.row)">Download</el-button> <el-button type="text" size="small" @click="handlePreview(scope.row)">{{ $t('common:button:download') }}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile(scope.row)">Delete</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleRemoveFile(scope.row)">{{ $t('common:button:delete') }}</el-button>
<el-button <el-button
type="text" type="text"
size="small" size="small"
:disabled="scope.row.IsOfficial" :disabled="scope.row.IsOfficial || $route.query.ReviewStatus === '1'"
@click="handleSetOfiical(scope.row)" @click="handleSetOfiical(scope.row)"
>Set as Official</el-button> >{{ $t('system:Resumes:button:Set as Official') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -163,6 +163,7 @@ export default {
} }
}, },
created() { created() {
if(!this.doctorId) return
this.getResumeList() this.getResumeList()
}, },
methods: { methods: {
@ -266,11 +267,10 @@ export default {
} }
}, },
handleRemoveFile(row) { handleRemoveFile(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}).then(() => { }).then(() => {
deleteAttachment(row.Id, row.Path) deleteAttachment(row.Id, row.Path)
.then(res => { .then(res => {
@ -278,7 +278,7 @@ export default {
this.resumeList.splice(this.resumeList.findIndex(item => item.Id === row.Id), 1) this.resumeList.splice(this.resumeList.findIndex(item => item.Id === row.Id), 1)
this.filterByLanguage() this.filterByLanguage()
this.$message({ this.$message({
message: 'Deleted successfully!', message: this.$t('common:message:deletedSuccessfully'),
type: 'success' type: 'success'
}) })
} }

View File

@ -2,68 +2,68 @@
<div v-loading="loading" class="check-container form-container"> <div v-loading="loading" class="check-container form-container">
<el-form ref="checkForm" :model="checkForm" label-width="200px" size="small" :rules="rules"> <el-form ref="checkForm" :model="checkForm" label-width="200px" size="small" :rules="rules">
<div class="title-wrapper"> <div class="title-wrapper">
<p>盲化信息</p> <p>{{$t('system:Setting:title:Blinded information') }}</p>
</div> </div>
<div class="check-content"> <div class="check-content">
<el-form-item label="Blind Name" prop="BlindName"> <el-form-item :label="$t('system:Setting:label:Blind Name')" prop="BlindName">
<el-input <el-input
v-model="checkForm.BlindName" v-model="checkForm.BlindName"
style="width:300px" style="width:300px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="Blind NameCN" prop="BlindNameCN"> <el-form-item :label="$t('system:Setting:label:Blind NameCN')" prop="BlindNameCN">
<el-input <el-input
v-model="checkForm.BlindNameCN" v-model="checkForm.BlindNameCN"
style="width:300px" style="width:300px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="Blind Publications" prop="BlindPublications"> <el-form-item :label="$t('system:Setting:label:Blind Publications')" prop="BlindPublications">
<el-input v-model="checkForm.BlindPublications" type="textarea" rows="8" style="width:60%;" size="small" /> <el-input v-model="checkForm.BlindPublications" type="textarea" rows="8" style="width:60%;" size="small" />
</el-form-item> </el-form-item>
</div> </div>
<div class="title-wrapper"> <div class="title-wrapper">
<p>Setting</p> <p>{{$t('system:Setting:title:Blinded Setting') }}</p>
</div> </div>
<div class="check-content"> <div class="check-content">
<el-form-item label="Information Confirmed?"> <el-form-item :label="$t('system:Setting:label:Information Confirmed?')">
<el-radio-group v-model="checkForm.ReviewStatus" @change="handleChange"> <el-radio-group v-model="checkForm.ReviewStatus" @change="handleChange">
<el-radio :label="1">Yes</el-radio> <el-radio :label="1">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
<el-radio :label="2">No</el-radio> <el-radio :label="2">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="Contractor Status?"> <el-form-item :label="$t('system:Setting:label:Contractor Status?')">
<el-radio-group v-model="checkForm.CooperateStatus" @change="handleChange"> <el-radio-group v-model="checkForm.CooperateStatus" @change="handleChange">
<el-radio :label="1">Yes</el-radio> <el-radio :label="1">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
<el-radio :label="2">No</el-radio> <el-radio :label="2">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="Accepting New Trials?"> <el-form-item :label="$t('system:Setting:label:Accepting New Trials?')">
<el-radio-group v-model="checkForm.AcceptingNewTrial" :disabled="radioDisabled"> <el-radio-group v-model="checkForm.AcceptingNewTrial" :disabled="radioDisabled">
<el-radio :label="true">Yes</el-radio> <el-radio :label="true">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
<el-radio :label="false">No</el-radio> <el-radio :label="false">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="Actively Reading?"> <el-form-item :label="$t('system:Setting:label:Actively Reading?')">
<el-radio-group v-model="checkForm.ActivelyReading" :disabled="radioDisabled"> <el-radio-group v-model="checkForm.ActivelyReading" :disabled="radioDisabled">
<el-radio :label="true">Yes</el-radio> <el-radio :label="true">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
<el-radio :label="false">No</el-radio> <el-radio :label="false">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="Is Virtual?"> <el-form-item :label="$t('system:Setting:label:Is Virtual?')">
<el-radio-group v-model="checkForm.IsVirtual" :disabled="radioDisabled"> <el-radio-group v-model="checkForm.IsVirtual" :disabled="radioDisabled">
<el-radio :label="true">Yes</el-radio> <el-radio :label="true">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
<el-radio :label="false">No</el-radio> <el-radio :label="false">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="On Vacation: "> <el-form-item :label="$t('system:Setting:label:On Vacation:')">
<span style="font-size:12px;margin-right:20px;">{{ checkForm.InHoliday }}</span> <span style="font-size:12px;margin-right:20px;">{{ checkForm.InHoliday }}</span>
<el-button type="text" @click="handleView">Planned Vacation</el-button> <el-button type="text" @click="handleView">{{ $t('system:Setting:Planned Vacation') }}</el-button>
</el-form-item> </el-form-item>
<el-form-item label="Comment: " prop="AdminComment"> <el-form-item :label="$t('system:Setting:label:Comment:')" prop="AdminComment">
<el-input <el-input
v-model="checkForm.AdminComment" v-model="checkForm.AdminComment"
type="textarea" type="textarea"
@ -73,12 +73,12 @@
</el-form-item> </el-form-item>
<el-form-item style="margin-top:20px"> <el-form-item style="margin-top:20px">
<el-button type="primary" :disabled="isDisabled" @click="handleSave">Save</el-button> <el-button type="primary" :disabled="isDisabled" @click="handleSave">{{ $t('common:button:save') }}</el-button>
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>
<el-dialog <el-dialog
title="Vacation" :title="$t('system:Setting:title:Vacation')"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="50%" width="50%"
:close-on-click-modal="false" :close-on-click-modal="false"
@ -87,37 +87,38 @@
<div> <div>
<el-date-picker <el-date-picker
v-model="daterange" v-model="daterange"
style="width: 360px"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
format="yyyy-MM-dd" format="yyyy-MM-dd"
type="daterange" type="daterange"
range-separator="to" range-separator="to"
start-placeholder="Beginning Date" :start-placeholder="$t('system:Setting:label:Beginning Date')"
end-placeholder="End Date" :end-placeholder="$t('system:Setting:label:End Date')"
size="small" size="small"
/> />
<el-button style="margin-left:10px;" type="primary" size="small" @click="handleAddHoliday">Add</el-button> <el-button style="margin-left:10px;" type="primary" size="small" @click="handleAddHoliday">{{ $t('common:button:add') }}</el-button>
</div> </div>
<el-table v-loading="loading2" :data="gridData" size="small"> <el-table v-loading="loading2" :data="gridData" size="small">
<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('system:Setting:table:Beginning Date')"
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('system:Setting:table:End Date')"
min-width="120" min-width="120"
:formatter="endTimeFormatter" :formatter="endTimeFormatter"
/> />
<el-table-column label="Action" fixed="right" min-width="200"> <el-table-column :label="$t('common:action:action')" fixed="right" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button> <el-button type="text" @click="handleDelete(scope.row)">{{ $t('common:button:delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination"> <div class="pagination" style="padding: 10px 0;text-align: right">
<el-pagination <el-pagination
background background
layout="total,sizes,prev, pager, next" layout="total,sizes,prev, pager, next"
@ -165,7 +166,6 @@ export default {
rules: { rules: {
AdminComment: [{ max: 500, message: 'The maximum length is 500' }], AdminComment: [{ max: 500, message: 'The maximum length is 500' }],
BlindName: [{ required: true, message: 'Please specify', trigger: 'blur' }], BlindName: [{ required: true, message: 'Please specify', trigger: 'blur' }],
BlindNameCN: [{ required: true, message: 'Please specify', trigger: 'blur' }]
}, },
doctorId: this.$route.query.Id, doctorId: this.$route.query.Id,
isDisabled: false, isDisabled: false,
@ -184,6 +184,7 @@ export default {
}, },
methods: { methods: {
initForm() { initForm() {
if (!this.doctorId) return
getAuditState(this.doctorId).then(res => { getAuditState(this.doctorId).then(res => {
if (res.Result) { if (res.Result) {
this.checkForm = res.Result this.checkForm = res.Result
@ -204,7 +205,7 @@ export default {
if (res.IsSuccess) { if (res.IsSuccess) {
if (res.Result) { this.checkForm.Id = res.Result } if (res.Result) { this.checkForm.Id = res.Result }
this.isDisabled = false this.isDisabled = false
this.$message.success('Saved successfully') this.$message.success(this.$t('common:message:savedSuccessfully'))
} }
}) })
.catch(() => { .catch(() => {
@ -258,11 +259,9 @@ export default {
} }
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('Sure to delete?', { this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'Ok',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
this.loading2 = true this.loading2 = true
@ -274,7 +273,7 @@ export default {
this.gridData.splice(index, 1) this.gridData.splice(index, 1)
this.totalItems = this.totalItems - 1 this.totalItems = this.totalItems - 1
} }
this.$message.success('Deleted successfully!') this.$message.success(this.$t('common:message:deletedSuccessfully'))
} }
this.loading2 = false this.loading2 = false
}) })

View File

@ -12,7 +12,7 @@
> >
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Specialty: " prop="SpecialityId"> <el-form-item :label="$t('system:reviewer:label:Specialty')" prop="SpecialityId">
<el-select <el-select
v-model="specialtyForm.SpecialityId" v-model="specialtyForm.SpecialityId"
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
@ -59,7 +59,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Subspeciality: " prop="SubspecialityIds"> <el-form-item :label="$t('system:reviewer:label:Subspeciality')" prop="SubspecialityIds">
<el-select <el-select
v-model="specialtyForm.SubspecialityIds" v-model="specialtyForm.SubspecialityIds"
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
@ -116,7 +116,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="Modality: " prop="ReadingTypeIds"> <el-form-item :label="$t('system:reviewer:label:Modality')" prop="ReadingTypeIds">
<el-select <el-select
:disabled="$route.query.ReviewStatus === '1'" :disabled="$route.query.ReviewStatus === '1'"
v-model="specialtyForm.ReadingTypeIds" v-model="specialtyForm.ReadingTypeIds"
@ -171,7 +171,8 @@
</el-col> </el-col>
</el-row> </el-row>
<el-form-item> <el-form-item>
<el-button type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'" size="small" @click="handleSave">Save</el-button> <el-button type="primary" :disabled="isDisabled || $route.query.ReviewStatus === '1'" size="small" @click="handleSave">
{{ $t('common:button:save') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="form-container"> <div class="form-container">
<div class="title-wrapper"> <div class="title-wrapper">
<p>Clinical Trial Experience</p> <p>{{$t('system:TrialExperience:title:Clinical Trial Experience')}}</p>
<el-button :disabled="$route.query.ReviewStatus === '1'" class="add" size="small" @click="handleAddClinicalTrial">Add</el-button> <el-button :disabled="$route.query.ReviewStatus === '1'" class="add" size="small" @click="handleAddClinicalTrial">{{$t('common:button:add')}}</el-button>
</div> </div>
<div style="padding:0 40px;"> <div style="padding:0 40px;">
<el-table <el-table
@ -13,36 +13,37 @@
size="small" size="small"
> >
<el-table-column type="index" width="40" /> <el-table-column type="index" width="40" />
<el-table-column prop="Phase" label="Phase" min-width="50" /> <el-table-column prop="Phase" :label="$t('system:TrialExperience:title:Phase')" min-width="50" />
<el-table-column prop="EvaluationCriteriaList" label="Review Criteria" min-width="100"> <el-table-column prop="EvaluationCriteriaList" :label="$t('system:TrialExperience:title:Review Criteria')" min-width="100">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.EvaluationCriteriaList.length>0? scope.row.EvaluationCriteriaList.join(', '):'' }} {{ scope.row.EvaluationCriteriaList.length>0? scope.row.EvaluationCriteriaList.join(', '):'' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="EvaluationCriteriaList" label="Starting And Ending Date" min-width="100"> <el-table-column prop="EvaluationCriteriaList" :label="$t('system:TrialExperience:title:Starting And Ending Date')" min-width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.StartTime">{{ scope.row.StartTime.split('-')[0] }}-{{scope.row.EndTime ? scope.row.EndTime.split('-')[0] : ''}}</span> <span v-if="scope.row.StartTime">{{ scope.row.StartTime.split('-')[0] }}-{{scope.row.EndTime ? scope.row.EndTime.split('-')[0] : ''}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="VisitReadingCount" label="Visit Reading Count" min-width="70" /> <el-table-column prop="VisitReadingCount" :label="$t('system:TrialExperience:title:Visit Reading Count')" min-width="70" />
<el-table-column prop="EvaluationContent" label="Indication" min-width="70" /> <el-table-column prop="EvaluationContent" :label="$t('system:TrialExperience:Indication')" min-width="70" />
<el-table-column label="Operation" min-width="200"> <el-table-column :label="$t('system:TrialExperience:Operation')" min-width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEdit(scope.row)">Edit</el-button> <el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEdit(scope.row)">
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleDel(scope.row)">Delete</el-button> {{ $t('common:button:edit') }}</el-button>
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleDel(scope.row)">{{ $t('common:button:delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="title-wrapper" style="margin-top:10px;"> <div class="title-wrapper" style="margin-top:10px;">
<p>GCP Certificate</p> <p>{{$t('system:TrialExperience:title:GCP Certificate')}}</p>
</div> </div>
<div style="margin-left:40px;width:40%"> <div style="margin-left:40px;width:40%">
<gcp-certificate :doctor-id="doctorId" :gcp="GCP" :gcp-id="GCPID" /> <gcp-certificate :doctor-id="doctorId" :gcp="GCP" :gcp-id="GCPID" />
</div> </div>
<div class="title-wrapper" style="margin-top:10px;"> <div class="title-wrapper" style="margin-top:10px;">
<p>Other Relevant Experience</p> <p>{{$t('system:TrialExperience:title:Other Relevant Experience')}}</p>
</div> </div>
<div style="padding:0 40px;"> <div style="padding:0 40px;">
<el-row type="flex" justify="space-between"> <el-row type="flex" justify="space-between">
@ -59,7 +60,8 @@
<el-input v-model="OtherClinicalExperienceCN" :disabled="$route.query.ReviewStatus === '1'" type="textarea" rows="5" placeholder="请用中文注明" size="small" /> <el-input v-model="OtherClinicalExperienceCN" :disabled="$route.query.ReviewStatus === '1'" type="textarea" rows="5" placeholder="请用中文注明" size="small" />
</el-col> </el-col>
</el-row> </el-row>
<el-button type="primary" size="small" style="margin-top:20px" :disabled="isBtnDisabled || $route.query.ReviewStatus === '1'" @click="handleSaveOtherClinical">Save</el-button> <el-button type="primary" size="small" style="margin-top:20px" :disabled="isBtnDisabled || $route.query.ReviewStatus === '1'" @click="handleSaveOtherClinical">
{{ $t('common:button:save') }}</el-button>
</div> </div>
<el-dialog v-if="clinicalTrialDialogVisible" :title="clinicalTrialDialogTitle" :visible.sync="clinicalTrialDialogVisible" width="480px" :close-on-click-modal="false"> <el-dialog v-if="clinicalTrialDialogVisible" :title="clinicalTrialDialogTitle" :visible.sync="clinicalTrialDialogVisible" width="480px" :close-on-click-modal="false">
<el-form <el-form
@ -70,8 +72,8 @@
:model="clinicalTrialForm" :model="clinicalTrialForm"
size="small" size="small"
> >
<el-form-item label="Phase" prop="PhaseId"> <el-form-item :label="$t('system:TrialExperience:label:Phase')" prop="PhaseId">
<el-select v-model="clinicalTrialForm.PhaseId" placeholder="Please select"> <el-select v-model="clinicalTrialForm.PhaseId">
<!-- <el-option <!-- <el-option
v-for="(key,value) of dictionaryList.Phase" v-for="(key,value) of dictionaryList.Phase"
:key="value" :key="value"
@ -86,10 +88,9 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Review Criteria" prop="EvaluationCriteriaIdList"> <el-form-item :label="$t('system:TrialExperience:label:Review Criteria')" prop="EvaluationCriteriaIdList">
<el-select <el-select
v-model="clinicalTrialForm.EvaluationCriteriaIdList" v-model="clinicalTrialForm.EvaluationCriteriaIdList"
placeholder="Please select"
multiple multiple
> >
<!-- <el-option v-for="(key,value) of dictionaryList.ReadingStandard" :key="value" :label="key" :value="value" /> --> <!-- <el-option v-for="(key,value) of dictionaryList.ReadingStandard" :key="value" :label="key" :value="value" /> -->
@ -101,29 +102,29 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Start Time" prop="StartTime"> <el-form-item :label="$t('system:TrialExperience:label:Start Time')" prop="StartTime">
<el-date-picker <el-date-picker
v-model="clinicalTrialForm.StartTime" v-model="clinicalTrialForm.StartTime"
type="year" type="year"
placeholder="Select Start Time"> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="End Time" prop="EndTime"> <el-form-item :label="$t('system:TrialExperience:label:End Time')" prop="EndTime">
<el-date-picker <el-date-picker
v-model="clinicalTrialForm.EndTime" v-model="clinicalTrialForm.EndTime"
type="year" type="year"
placeholder="Select End Time"> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="Visit Reading Count" prop="VisitReadingCount"> <el-form-item :label="$t('system:TrialExperience:Visit Reading Count')" prop="VisitReadingCount">
<el-input style="width: 100%" oninput="value=value.replace(/[^\d]/g,'')" v-model="clinicalTrialForm.VisitReadingCount" controls-position="right" :min="0" /> <el-input style="width: 100%" oninput="value=value.replace(/[^\d]/g,'')" v-model="clinicalTrialForm.VisitReadingCount" controls-position="right" :min="0" />
</el-form-item> </el-form-item>
<el-form-item label="Indication" prop="EvaluationContent"> <el-form-item :label="$t('system:TrialExperience:Indication')" prop="EvaluationContent">
<el-input v-model="clinicalTrialForm.EvaluationContent" /> <el-input v-model="clinicalTrialForm.EvaluationContent" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" :loading="isDisabled" @click="handleSave">Save</el-button> <el-button type="primary" size="small" :loading="isDisabled" @click="handleSave">{{ $t('common:button:save') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -265,8 +266,7 @@ export default {
this.$confirm('Confirm to delete?', { this.$confirm('Confirm to delete?', {
type: 'warning', type: 'warning',
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: 'OK',
cancelButtonText: 'Cancel'
}) })
.then(() => { .then(() => {
deleteTrialExperience(row.Id) deleteTrialExperience(row.Id)

View File

@ -1,39 +1,34 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-tabs v-model="active" @tab-click="clickTab"> <el-tabs v-model="active" @tab-click="clickTab">
<el-tab-pane label="Basic Info" name="BasicInfo"> <el-tab-pane :label="$t('system:reviewer:tab:BasicInfo')" name="BasicInfo">
<basic-info v-if="load.BasicInfo" /> <basic-info v-if="load.BasicInfo" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Employment" name="Employment"> <el-tab-pane :label="$t('system:reviewer:tab:Employment')" name="Employment">
<Employment v-if="load.Employment" /> <Employment v-if="load.Employment" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Specialty" name="Specialty"> <el-tab-pane :label="$t('system:reviewer:tab:Specialty')" name="Specialty">
<specialty v-if="load.Specialty" /> <specialty v-if="load.Specialty" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('system:reviewer:tab:Education&Training')" name="EducationTraining">
<el-tab-pane label="Education & Training" name="EducationTraining">
<education-training v-if="load.EducationTraining" /> <education-training v-if="load.EducationTraining" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Research & Publication" name="ResearchPublication"> <el-tab-pane :label="$t('system:reviewer:tab:Research&Publication')" name="ResearchPublication">
<research-publication v-if="load.ResearchPublication" /> <research-publication v-if="load.ResearchPublication" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Trial Experience" name="TrialExperience"> <el-tab-pane :label="$t('system:reviewer:tab:TrialExperience')" name="TrialExperience">
<trial-experience v-if="load.TrialExperience" /> <trial-experience v-if="load.TrialExperience" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Credentials" name="Credentials"> <el-tab-pane :label="$t('system:reviewer:tab:Credentials')" name="Credentials">
<Credentials v-if="load.Credentials" /> <Credentials v-if="load.Credentials" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Resumes" name="Resumes"> <el-tab-pane :label="$t('system:reviewer:tab:Resumes')" name="Resumes">
<Resumes v-if="load.Resumes" /> <Resumes v-if="load.Resumes" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Agreements" name="Agreements"> <el-tab-pane :label="$t('system:reviewer:tab:Agreements')" name="Agreements">
<Agreements v-if="load.Agreements" /> <Agreements v-if="load.Agreements" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="Setting" name="Setting"> <el-tab-pane :label="$t('system:reviewer:tab:Setting')" name="Setting">
<Setting v-if="load.Setting" /> <Setting v-if="load.Setting" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>

View File

@ -4,14 +4,14 @@
<div class="search"> <div class="search">
<div class="base-search-form"> <div class="base-search-form">
<el-form size="small" :inline="true"> <el-form size="small" :inline="true">
<el-form-item label="Name:"> <el-form-item :label="$t('reviewers-list:label:Name')">
<el-input <el-input
v-model="searchData.Name" v-model="searchData.Name"
style="width:100px;" style="width:100px;"
clearable clearable
/> />
</el-form-item> </el-form-item>
<el-form-item label="Modality:"> <el-form-item :label="$t('reviewers-list:label:Modality')">
<el-select <el-select
v-model="searchData.ReadingTypeIdList" v-model="searchData.ReadingTypeIdList"
clearable clearable
@ -33,7 +33,7 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Subspeciality:"> <el-form-item :label="$t('reviewers-list:label:Subspeciality')">
<el-select <el-select
v-model="searchData.SubspecialityIdList" v-model="searchData.SubspecialityIdList"
multiple multiple
@ -50,271 +50,36 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<!-- <el-button type="text" @click="handleMore">More</el-button> --> <el-button type="primary" icon="el-icon-search" @click="handleSearch">{{ $t('common:button:search') }}</el-button>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button> <el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">{{ $t('common:button:reset') }}</el-button>
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">Reset</el-button>
<el-button <el-button
icon="el-icon-download" icon="el-icon-download"
type="primary" type="primary"
:disabled="!(selectArr.length>0)" :disabled="!(selectArr.length>0)"
@click="handleDownLoadOffical" @click="handleDownLoadOffical"
>Download CV</el-button> >{{$t('reviewers-list:label:DownloadCV')}}</el-button>
<el-button <el-button
type="primary" type="primary"
icon="el-icon-link" icon="el-icon-link"
@click="showResearchLink" @click="showResearchLink"
> >
采集链接 {{$t('reviewers-list:label:showResearchLink')}}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<span style="margin-left:auto;"> <span style="margin-left:auto;">
<el-switch <!-- <el-switch-->
v-model="isEN" <!-- v-model="isEN"-->
active-text="EN" <!-- active-text="EN"-->
inactive-text="中文" <!-- inactive-text="中文"-->
style="margin-right:10px;" <!-- style="margin-right:10px;"-->
@change="handleIsEnChange" <!-- @change="handleIsEnChange"-->
/> <!-- />-->
<el-button size="small" icon="el-icon-plus" type="primary" @click="handleNew">New</el-button> <el-button size="small" icon="el-icon-plus" type="primary" @click="handleNew">{{$t('common:button:new')}}</el-button>
</span> </span>
</div> </div>
<!-- 更多搜索条件 -->
<el-drawer
:visible.sync="isShow"
:with-header="false"
size="410px"
>
<div style="padding:10px;">
<el-form label-width="160px" size="mini">
<el-form-item label="Name">
<el-input
v-model="searchData.Name"
placeholder="Name"
style="width:100%;"
clearable
/>
</el-form-item>
<el-form-item label="Modality">
<el-select
v-model="searchData.ReadingTypeIdList"
placeholder="Modality"
clearable
multiple
style="width:100%;"
>
<!-- <el-option
v-for="(key,value) of dictionaryList.ReadingType"
:key="key"
:label="key"
:value="value"
/> -->
<el-option
v-for="item of dict.type.ReadingType"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="Subspeciality">
<el-select
v-model="searchData.SubspecialityIdList"
placeholder="Subspeciality"
multiple
clearable
style="width:100%;"
>
<!-- <el-option
v-for="(key,value) of dictionaryList.Subspeciality"
:key="key"
:label="key"
:value="value"
/> -->
<el-option
v-for="item of dict.type.Subspeciality"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="Department">
<el-select
v-model="searchData.DepartmentId"
placeholder="Department"
style="width:100%;"
clearable
>
<!-- <el-option
v-for="(key,value) of dictionaryList.Department"
:key="key"
:label="key"
:value="value"
/> -->
<el-option
v-for="item of dict.type.Department"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="Rank">
<el-select
v-model="searchData.RankId"
placeholder="Rank"
style="width:100%;"
clearable
>
<!-- <el-option
v-for="(key,value) of dictionaryList.Rank"
:key="key"
:label="key"
:value="value"
/> -->
<el-option
v-for="item of dict.type.Rank"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="Position">
<el-select
v-model="searchData.PositionId"
placeholder="Position"
style="width:100%;"
clearable
>
<!-- <el-option
v-for="(key,value) of dictionaryList.Position"
:key="key"
:label="key"
:value="value"
/> -->
<el-option
v-for="item of dict.type.Position"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="Institution">
<el-select
v-model="searchData.HospitalId"
placeholder="Institution"
style="width:100%;"
clearable
>
<el-option
v-for="(item,index) in hospitalList"
:key="index"
:label="item.HospitalName"
:value="item.Id"
/>
</el-select>
</el-form-item>
<el-form-item label="Review Criteria">
<el-select
v-model="searchData.EvaluationCriteriaIdList"
placeholder="Please select"
style="width:100%;"
clearable
multiple
>
<!-- <el-option v-for="(key,value) of dictionaryList.ReadingStandard" :key="key" :label="key" :value="value" /> -->
<el-option
v-for="item of dict.type.ReadingStandard"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="Enrollment">
<el-select
v-model="searchData.EnrollStatus"
placeholder="Enrollment"
style="width:100%;"
clearable
>
<el-option key="2" label="Yes" :value="2" />
<el-option key="1" label="No" :value="1" />
</el-select>
</el-form-item>
<el-form-item label="Information Confirmed">
<el-select
v-model="searchData.InformationConfirmed"
placeholder="Information Confirmed"
style="width:100%;"
clearable
>
<el-option key="1" label="Yes" :value="1" />
<el-option key="2" label="No" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="Contractor Status">
<el-select
v-model="searchData.ContractorStatus"
placeholder="Contractor Status"
style="width:100%;"
clearable
>
<el-option key="1" label="Yes" :value="1" />
<el-option key="2" label="No" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="Accepting New Trials">
<el-select
v-model="searchData.AcceptingNewTrial"
placeholder="Accepting New Trials"
style="width:100%;"
clearable
>
<el-option key="2" label="Yes" :value="true" />
<el-option key="1" label="No" :value="false" />
</el-select>
</el-form-item>
<el-form-item label="Actively Reading">
<el-select
v-model="searchData.ActivelyReading"
placeholder="Actively Reading"
style="width:100%;"
clearable
>
<el-option key="2" label="Yes" :value="true" />
<el-option key="1" label="No" :value="false" />
</el-select>
</el-form-item>
<el-form-item label="Payment Type: ">
<el-select
v-model="searchData.Nation"
clearable
style="width:100%;"
>
<el-option v-for="item of $d.AttendedReviewerType" :value="item.value" :label="item.label" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleSelectSearch">Search</el-button>
<el-button type="primary" @click="handleReset">Reset</el-button>
<el-button type="primary" @click="isShow=false">Back</el-button>
</el-form-item>
</el-form>
</div>
</el-drawer>
<!-- 医生列表 --> <!-- 医生列表 -->
<el-table <el-table
v-adaptive="{bottomOffset:55}" v-adaptive="{bottomOffset:55}"
@ -330,7 +95,7 @@
<el-table-column <el-table-column
align="left" align="left"
prop="LastName" prop="LastName"
label="Name" :label="$t('reviewers-list:table:Name')"
show-overflow-tooltip show-overflow-tooltip
width="130" width="130"
sortable="custom" sortable="custom"
@ -341,15 +106,15 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="ChineseName" prop="ChineseName"
label="Name CN" :label="$t('reviewers-list:table:NameCN')"
show-overflow-tooltip show-overflow-tooltip
width="90" width="90"
align="left" align="left"
/> />
<el-table-column prop="ReviewerCode" label="ID" width="80" show-overflow-tooltip sortable="custom" /> <el-table-column prop="ReviewerCode" :label="$t('reviewers-list:table:ID')" width="80" show-overflow-tooltip sortable="custom" />
<el-table-column prop="AccountUserName" label="User Name" width="140" show-overflow-tooltip sortable="custom" /> <el-table-column prop="AccountUserName" :label="$t('reviewers-list:table:UserName')" width="140" show-overflow-tooltip sortable="custom" />
<el-table-column <el-table-column
label="Reading" :label="$t('reviewers-list:table:Reading')"
width="100" width="100"
show-overflow-tooltip show-overflow-tooltip
sortable="custom" sortable="custom"
@ -370,7 +135,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="Finished" :label="$t('reviewers-list:table:Finished')"
width="100" width="100"
show-overflow-tooltip show-overflow-tooltip
sortable="custom" sortable="custom"
@ -393,7 +158,7 @@
<el-table-column <el-table-column
align="left" align="left"
prop="SpecialityId" prop="SpecialityId"
label="Specialty" :label="$t('reviewers-list:table:Specialty')"
sortable="custom" sortable="custom"
show-overflow-tooltip show-overflow-tooltip
width="130" width="130"
@ -407,7 +172,7 @@
<el-table-column <el-table-column
align="left" align="left"
prop="Subspeciality" prop="Subspeciality"
label="Subspecialty" :label="$t('reviewers-list:table:Subspecialty')"
show-overflow-tooltip show-overflow-tooltip
min-width="150" min-width="150"
> >
@ -422,7 +187,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="HospitalName" prop="HospitalName"
label="Institution" :label="$t('reviewers-list:table:Institution')"
min-width="110" min-width="110"
align="left" align="left"
sortable="custom" sortable="custom"
@ -436,7 +201,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="City" prop="City"
label="Location" :label="$t('reviewers-list:table:Location')"
width="110" width="110"
align="left" align="left"
sortable="custom" sortable="custom"
@ -450,7 +215,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="IsVirtual" prop="IsVirtual"
label="Virtual" :label="$t('reviewers-list:table:Virtual')"
min-width="80" min-width="80"
align="left" align="left"
sortable="custom" sortable="custom"
@ -464,7 +229,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="ReviewStatus" prop="ReviewStatus"
label="Confirmed" :label="$t('reviewers-list:table:Confirmed')"
min-width="80" min-width="80"
align="left" align="left"
sortable="custom" sortable="custom"
@ -476,27 +241,27 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="Action" min-width="200" align="left" fixed="right"> <el-table-column :label="$t('common:action:action')" min-width="200" align="left" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
circle circle
icon="el-icon-info" icon="el-icon-info"
title="Detail" :title="$t('reviewers-list:table:Detail')"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
/> />
<el-button <el-button
size="mini" size="mini"
circle circle
icon="el-icon-edit-outline" icon="el-icon-edit-outline"
title="Edit" :title="$t('reviewers-list:table:Edit')"
@click="handleEdit(scope.row)" @click="handleEdit(scope.row)"
/> />
<el-button <el-button
size="mini" size="mini"
icon="el-icon-view" icon="el-icon-view"
circle circle
title="盲态简历" :title="$t('reviewers-list:table:Blind')"
@click="lookResumeInfo(scope.row)" @click="lookResumeInfo(scope.row)"
/> />
</template> </template>
@ -515,13 +280,13 @@
<template slot="dialog-body"> <template slot="dialog-body">
<div> <div>
<i style="color:#428bca;" class="el-icon-success" /> <i style="color:#428bca;" class="el-icon-success" />
<span>成功创建分享链接</span> <span>{{ $t('reviewers-list:message:msg1')}}</span>
</div> </div>
<div style="margin:10px 0;"> <div style="margin:10px 0;">
<span style="">个人简历填写链接</span><el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4}" v-model="shareLink" readonly style="width: 100%;margin-top: 10px" /> <span style="">{{ $t('reviewers-list:message:msg2') }}</span><el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4}" v-model="shareLink" readonly style="width: 100%;margin-top: 10px" />
</div> </div>
<div> <div>
<el-button type="primary" round @click="copyCode"></el-button> <el-button type="primary" round @click="copyCode">{{ $t('reviewers-list:button:copyCode') }}</el-button>
</div> </div>
</template> </template>
</base-model> </base-model>
@ -602,17 +367,20 @@ export default {
}, },
tokenKey: getToken(), tokenKey: getToken(),
share_model: { visible: false, title: '', width: '500px' }, share_model: { visible: false, title: '', width: '500px' },
shareLink: null shareLink: null,
isEnglish: false
} }
}, },
dicts: ['ReadingType', 'Subspeciality', 'Department', 'Rank', 'Position', 'ReadingStandard'], dicts: ['ReadingType', 'Subspeciality', 'Department', 'Rank', 'Position', 'ReadingStandard'],
computed: { computed: {
...mapGetters(['hospitalList', 'reviewersQuery', 'isEnglish']) ...mapGetters(['hospitalList', 'reviewersQuery'])
}, },
created() { created() {
this.isEN = this.isEnglish
this.reviewersQuery ? this.listQuery = this.reviewersQuery : '' this.reviewersQuery ? this.listQuery = this.reviewersQuery : ''
this.initPage() this.initPage()
// this.isEnglish = !!((this.$route.query.isEnglish === true || this.$route.query.isEnglish === 'true'))
this.isEnglish = this.$i18n.locale === 'zh' ? false : true
this.isEN = this.isEnglish
}, },
methods: { methods: {
copyCode() { copyCode() {
@ -637,7 +405,7 @@ export default {
}, },
showResearchLink() { showResearchLink() {
const trialId = this.trialId const trialId = this.trialId
this.shareLink = `${location.protocol}//${location.host}/ReviewersResearch` this.shareLink = `${location.protocol}//${location.host}/ReviewersResearch?lang=${this.$store.getters.language}`
this.share_model.visible = true this.share_model.visible = true
}, },
lookResumeInfo(row) { lookResumeInfo(row) {

Some files were not shown because too many files have changed in this diff Show More