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.jsuat_us
commit
0ce246689b
|
@ -27,7 +27,7 @@ VUE_APP_LOGOUT_FOR_PERMISSION = false
|
|||
VUE_APP_LOGOUT_FOR_TIME = 1800
|
||||
|
||||
# 是否开启密码正则验证 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}$
|
||||
|
@ -35,6 +35,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
|
|||
# 是否开启文档签署验证 true:是 false:否
|
||||
VUE_APP_WORD_FOR_PERMISSION = false
|
||||
|
||||
# 公司名称
|
||||
VUE_APP_COMPANY_NAME = "Extensive Imaging"
|
||||
|
||||
|
||||
# dicom文件地址
|
||||
VUE_APP_DICOM_PATH = 'https://zyypacs.oss-cn-shanghai.aliyuncs.com'
|
||||
|
|
|
@ -29,6 +29,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
|
|||
# 是否开启文档签署验证 true:是 false:否
|
||||
VUE_APP_WORD_FOR_PERMISSION = true
|
||||
|
||||
# 公司名称
|
||||
VUE_APP_COMPANY_NAME = "Extensive Imaging"
|
||||
|
||||
# dicom文件地址
|
||||
# VUE_APP_DICOM_PATH = 'http://101.132.193.237:7080'
|
||||
VUE_APP_DICOM_PATH = 'https://zyypacs-prod.oss-cn-shanghai.aliyuncs.com'
|
||||
|
|
3
.env.uat
3
.env.uat
|
@ -31,6 +31,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
|
|||
# 是否开启文档签署验证 true:是 false:否
|
||||
VUE_APP_WORD_FOR_PERMISSION = true
|
||||
|
||||
# 公司名称
|
||||
VUE_APP_COMPANY_NAME = "Extensive Imaging"
|
||||
|
||||
# dicom文件地址
|
||||
VUE_APP_DICOM_PATH = 'https://zyypacs-uat.oss-cn-shanghai.aliyuncs.com'
|
||||
|
||||
|
|
5
.env.usa
5
.env.usa
|
@ -2,7 +2,7 @@
|
|||
ENV = 'production'
|
||||
NODE_ENV = 'production'
|
||||
# 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:否
|
||||
VUE_APP_LOGIN_FOR_PERMISSION = false
|
||||
|
@ -28,6 +28,9 @@ VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!
|
|||
# 是否开启文档签署验证 true:是 false:否
|
||||
VUE_APP_WORD_FOR_PERMISSION = true
|
||||
|
||||
# 公司名称
|
||||
VUE_APP_COMPANY_NAME = "Elevate Imaging"
|
||||
|
||||
# dicom文件地址
|
||||
VUE_APP_DICOM_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'
|
||||
|
||||
|
|
|
@ -11520,6 +11520,15 @@
|
|||
"resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
|
||||
"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": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"name": "EICS",
|
||||
"version": "1.3.2",
|
||||
"scripts": {
|
||||
"dev": "vue-cli-service serve --open",
|
||||
"dev": "vue-cli-service serve --open --mode development",
|
||||
"build": "vue-cli-service build",
|
||||
"build:prod": "vue-cli-service build --mode prod",
|
||||
"build:uat": "vue-cli-service build --mode uat",
|
||||
|
@ -83,6 +83,7 @@
|
|||
"eslint-plugin-vue": "^6.2.2",
|
||||
"html-webpack-plugin": "3.2.0",
|
||||
"minio": "^7.1.3",
|
||||
"moment-timezone": "^0.5.45",
|
||||
"node-xlsx": "^0.21.0",
|
||||
"runjs": "^4.3.2",
|
||||
"script-ext-html-webpack-plugin": "2.1.3",
|
||||
|
|
|
@ -148,8 +148,8 @@ export default {
|
|||
} else {
|
||||
this.tableData = Object.assign([], this.arr)
|
||||
}
|
||||
console.log(JSON.stringify(this.$path))
|
||||
console.log(JSON.stringify(this.tableData))
|
||||
// console.log(JSON.stringify(this.$path))
|
||||
// console.log(JSON.stringify(this.tableData))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,9 +22,9 @@ export function getBasicDataSelects(param) {
|
|||
})
|
||||
}
|
||||
|
||||
export function getBasicDataAllSelect(params) {
|
||||
export function getBasicDataAllSelect(params, isSystem) {
|
||||
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'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1747,6 +1747,21 @@ export function deleteTrialExternalUser(id) {
|
|||
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() {
|
||||
return request({
|
||||
url: `/PersonalWorkstation/getBasicStat`,
|
||||
|
@ -2795,6 +2810,29 @@ export function saveImageQuality(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) {
|
||||
return request({
|
||||
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) {
|
||||
return request({
|
||||
url: `/TrialEmailNoticeConfig/getTrialEmailNoticeConfigList`,
|
||||
|
@ -3519,3 +3565,105 @@ export function getTrialSiteSurveySelectList(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
|
||||
})
|
||||
}
|
||||
|
|
|
@ -7,7 +7,12 @@ export function login(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function loginOut() {
|
||||
return request({
|
||||
url: `/User/loginOut`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function getAllDictionary() {
|
||||
return request({
|
||||
url: '/dictionary/getAllDictionary',
|
||||
|
|
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 |
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -2,13 +2,13 @@
|
|||
<template>
|
||||
<div class="trialsTab">
|
||||
<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-tab-pane
|
||||
v-for="item1 of item.children"
|
||||
v-if="TrialConfig && isShow(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)"
|
||||
:name="item1.path"
|
||||
/>
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
:on-exceed="handleExceed"
|
||||
accept=".pdf"
|
||||
>
|
||||
<el-button size="small" type="primary" :disabled="btnDisabled || $route.query.ReviewStatus === '1'" >Upload</el-button>
|
||||
<span slot="tip" class="el-upload__tip">(must be in pdf format. 1/2 pages, please confirm information integrity)</span>
|
||||
<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">{{$t('system:GcpCertificate:tap:must2') }}</span>
|
||||
</el-upload>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -45,6 +45,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
initFileList() {
|
||||
if(!this.doctorId) return
|
||||
getAttachmentByType(this.doctorId, this.type)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
|
@ -129,7 +130,7 @@ export default {
|
|||
this.fileList = []
|
||||
this.$emit('getFileList', '', '')
|
||||
this.$message({
|
||||
message: 'Deleted successfully!',
|
||||
message: this.$t('common:message:deletedSuccessfully'),
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
:file-list="fileList"
|
||||
: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>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -39,6 +39,7 @@ export default {
|
|||
}
|
||||
},
|
||||
mounted() {
|
||||
if(!this.doctorId) return
|
||||
this.initFileList()
|
||||
},
|
||||
methods: {
|
||||
|
@ -143,8 +144,7 @@ export default {
|
|||
this.$confirm('Sure to remove?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
}).then(() => {
|
||||
deleteAttachment(file.Id, file.Path)
|
||||
.then(res => {
|
||||
|
@ -152,7 +152,7 @@ export default {
|
|||
this.fileList.splice(this.fileList.findIndex(item => item.Id === file.Id), 1)
|
||||
this.$emit('getFileList', this.fileList)
|
||||
this.$message({
|
||||
message: 'Deleted successfully!',
|
||||
message: this.$t('common:message:deletedSuccessfully'),
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
</template>
|
||||
</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')"
|
||||
min-width="120"
|
||||
>
|
||||
|
@ -81,7 +81,6 @@
|
|||
<!-- 移除 -->
|
||||
<el-button
|
||||
v-if="(data.SubmitState*1 < 2 || (data.SubmitState === 2 && data.IsQCConfirmedReupload))"
|
||||
v-hasPermi="['trials:trials-panel:visit:crc-upload:upload']"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
:title="$t('common:button:delete')"
|
||||
|
@ -127,7 +126,7 @@
|
|||
</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')"
|
||||
min-width="200"
|
||||
>
|
||||
|
@ -144,7 +143,6 @@
|
|||
<!-- 移除 -->
|
||||
<el-button
|
||||
v-if="data.SubmitState*1 < 2 || (data.SubmitState === 2 && data.IsQCConfirmedReupload)"
|
||||
v-hasPermi="['trials:trials-panel:visit:crc-upload:upload']"
|
||||
icon="el-icon-delete"
|
||||
circle
|
||||
:title="$t('common:button:delete')"
|
||||
|
@ -200,7 +198,7 @@
|
|||
</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')"
|
||||
min-width="200"
|
||||
>
|
||||
|
@ -237,7 +235,7 @@
|
|||
icon="el-icon-download"
|
||||
size="small"
|
||||
:loading="downloadLoading"
|
||||
@click.native.prevent="handleDownloadTpl(cd.ClinicalDataTrialSetId)"
|
||||
@click.native.prevent="handleDownloadTpl(cd)"
|
||||
>
|
||||
{{ $t('trials:uploadClinicalData:button:downloadTemplate') }}
|
||||
</el-button>
|
||||
|
@ -551,11 +549,8 @@ export default {
|
|||
})
|
||||
})
|
||||
},
|
||||
handleDownloadTpl(clinicalDataTrialSetId) {
|
||||
this.downloadLoading = true
|
||||
DownloadTrialClinicalFile(clinicalDataTrialSetId).then(data => {
|
||||
this.downloadLoading = false
|
||||
}).catch(() => { this.downloadLoading = false })
|
||||
handleDownloadTpl(cd) {
|
||||
window.open(this.OSSclientConfig.basePath + cd.Path)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ export default
|
|||
ReadingUnitConfirmation: 108, // 医学审核问题确认
|
||||
MedicalAudit: 215,// 医学审核
|
||||
HeavyReadingApproval: 216,// 重阅审批
|
||||
ResetAndAsyncCriterion: 218, //同步签名
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -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 |
|
@ -23,23 +23,22 @@
|
|||
<div style="margin-left:20px;">
|
||||
<el-dropdown class="dropdown-container" trigger="click">
|
||||
<span class="el-dropdown-link">
|
||||
{{ name }}
|
||||
<span v-if="userTypeShortName">({{ userTypeShortName }})</span>
|
||||
{{ `${name} (${userTypeShortName})` }}
|
||||
<!-- {{ name }}
|
||||
<span v-if="userTypeShortName"> ({{ userTypeShortName }}) </span> -->
|
||||
<i class="el-icon-caret-bottom" />
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown" class="user-dropdown">
|
||||
<el-dropdown-item v-if="!isReviewer">
|
||||
<span style="display:block;" @click="editInfo">Edit Info</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item>
|
||||
<span style="display:block;" @click="account">Account</span>
|
||||
<span style="display:block;" @click="editInfo">{{$t('system:navbar:button:Profile')}}</span>
|
||||
</el-dropdown-item>
|
||||
<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-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<TopLang></TopLang>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -50,12 +49,15 @@ import {mapGetters, mapMutations} from 'vuex'
|
|||
import Breadcrumb from '@/components/Breadcrumb'
|
||||
import Hamburger from '@/components/Hamburger'
|
||||
import Screenfull from '@/components/Screenfull'
|
||||
import TopLang from './topLang'
|
||||
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Breadcrumb,
|
||||
Hamburger,
|
||||
Screenfull
|
||||
Screenfull,
|
||||
TopLang
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
@ -89,9 +91,6 @@ export default {
|
|||
editInfo() {
|
||||
this.$router.push({ name: 'BaiscInfo' })
|
||||
},
|
||||
account() {
|
||||
this.$router.push({ name: 'Account' })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -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>
|
|
@ -160,10 +160,16 @@ Vue.prototype.fileToBlob = (file) => {
|
|||
var _vm
|
||||
async function VueInit () {
|
||||
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')) {
|
||||
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()
|
||||
Vue.prototype.$tl = Internationalization.Result
|
||||
let zhMessages = {}, enMessages = {}
|
||||
|
@ -326,6 +332,7 @@ async function VueInit () {
|
|||
}
|
||||
const h = _vm.$createElement
|
||||
/* eslint-disable */
|
||||
window.VUE_APP_COMPANY_NAME = process.env.VUE_APP_COMPANY_NAME;
|
||||
waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => {
|
||||
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') {
|
||||
|
|
|
@ -56,6 +56,9 @@ router.beforeEach(async(to, from, next) => {
|
|||
/* has no token*/
|
||||
if (whiteList.indexOf(to.path) !== -1) {
|
||||
// 在免登录whiteList中,直接进入
|
||||
if (to.path === '/readingDicoms' || to.path === '/noneDicomReading'){
|
||||
OSSclient()
|
||||
}
|
||||
next()
|
||||
} else {
|
||||
if (to.path === '/researchForm') {
|
||||
|
|
|
@ -139,6 +139,13 @@ export const constantRoutes = [
|
|||
hidden: true,
|
||||
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',
|
||||
name: 'visitDicomReview',
|
||||
|
@ -242,6 +249,11 @@ export const constantRoutes = [
|
|||
component: () => import('@/views/404'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/ecrfPreview',
|
||||
component: () => import('@/views/dictionary/template/components/ECRF'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/editUser',
|
||||
component: Layout,
|
||||
|
@ -250,12 +262,7 @@ export const constantRoutes = [
|
|||
children: [{
|
||||
path: 'baiscInfo',
|
||||
name: 'BaiscInfo',
|
||||
component: () => import('@/views/user/editInfo')
|
||||
},
|
||||
{
|
||||
path: 'account',
|
||||
name: 'Account',
|
||||
component: () => import('@/views/user/account')
|
||||
component: () => import('@/views/user/myInfo')
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ const getters = {
|
|||
activeSeries: state => state.reading.activeSeries,
|
||||
lastCanvasTaskId: state => state.reading.lastCanvasTaskId,
|
||||
imageQuality: state => state.reading.imageQuality,
|
||||
imageQualityIssues: state => state.reading.imageQualityIssues,
|
||||
language: state => state.lang.language,
|
||||
TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount,
|
||||
TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount,
|
||||
|
|
|
@ -29,7 +29,8 @@ const getDefaultState = () => {
|
|||
currentReadingTaskState: 2,
|
||||
activeSeries: {},
|
||||
lastCanvasTaskId: '',
|
||||
imageQuality: null
|
||||
imageQuality: null,
|
||||
imageQualityIssues: null
|
||||
}
|
||||
}
|
||||
function getQuestions(questions) {
|
||||
|
@ -183,6 +184,7 @@ const actions = {
|
|||
state.activeSeries = {}
|
||||
state.lastCanvasTaskId = ''
|
||||
state.imageQuality = null
|
||||
state.imageQualityIssues = null
|
||||
resolve()
|
||||
})
|
||||
},
|
||||
|
@ -875,6 +877,9 @@ const actions = {
|
|||
setImageQuality({ state }, imageQuality) {
|
||||
state.imageQuality = isNaN(parseInt(imageQuality)) ? null : parseInt(imageQuality)
|
||||
},
|
||||
setImageQualityIssues({ state }, imageQualityIssues) {
|
||||
state.imageQualityIssues = isNaN(parseInt(imageQualityIssues)) ? null : parseInt(imageQualityIssues)
|
||||
},
|
||||
addQuestionMeasuredData({ state }, obj) {
|
||||
return new Promise(resolve => {
|
||||
var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
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 md5 from 'js-md5'
|
||||
|
@ -78,6 +78,9 @@ const mutations = {
|
|||
}
|
||||
|
||||
const actions = {
|
||||
changeUserName({ commit }, userName) {
|
||||
commit('SET_USERNAME', userName)
|
||||
},
|
||||
// user login
|
||||
login({ commit }, userInfo) {
|
||||
const { username, password } = userInfo
|
||||
|
@ -175,12 +178,17 @@ const actions = {
|
|||
commit('SET_NAME', zzSessionStorage.getItem('realName'))
|
||||
},
|
||||
// user logout
|
||||
logout({ commit, state }) {
|
||||
removeToken() // must remove token first
|
||||
resetRouter()
|
||||
removeName()
|
||||
zzSessionStorage.clear()
|
||||
commit('RESET_STATE')
|
||||
async logout({ commit, state }) {
|
||||
try{
|
||||
await loginOut()
|
||||
removeToken() // must remove token first
|
||||
resetRouter()
|
||||
removeName()
|
||||
zzSessionStorage.clear()
|
||||
commit('RESET_STATE')
|
||||
}catch(e){
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
setToken({ commit }, token) {
|
||||
commit('SET_TOKEN', token)
|
||||
|
|
|
@ -54,7 +54,7 @@ export const anonymization = function (file, config) {
|
|||
}
|
||||
}
|
||||
}
|
||||
console.log(dataset)
|
||||
// console.log(dataset)
|
||||
let newDicomFile = dataset.write()
|
||||
const bufferArray = new Uint8Array(newDicomFile)
|
||||
const blob = new Blob([bufferArray], { type: 'application/octet-stream' })
|
||||
|
|
|
@ -3,6 +3,8 @@ import { Message, MessageBox, Alert } from 'element-ui'
|
|||
import store from '@/store'
|
||||
import router from '@/router'
|
||||
import Vue from 'vue'
|
||||
import moment from 'moment-timezone';
|
||||
console.log(moment.tz.guess())
|
||||
axios.defaults.withCredentials = false
|
||||
const service = axios.create({
|
||||
baseURL: '/api',
|
||||
|
@ -19,6 +21,7 @@ service.interceptors.request.use(
|
|||
config.headers['Content-Type'] = 'application/json;charset=UTF-8'
|
||||
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['TimeZoneId'] = moment.tz.guess()
|
||||
if (store.getters.token) {
|
||||
config.headers.Authorization = `Bearer ${store.getters.token}`
|
||||
}
|
||||
|
@ -59,7 +62,11 @@ service.interceptors.response.use(
|
|||
MessageBox.confirm(res.ErrorMessage, {
|
||||
type: 'warning',
|
||||
showCancelButton: false,
|
||||
callback: action => {}
|
||||
callback: action => {
|
||||
if(res.Code === 6) {
|
||||
window.close()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return Promise.reject(res)
|
||||
|
@ -71,7 +78,7 @@ service.interceptors.response.use(
|
|||
var message = ''
|
||||
if (error && error.response) {
|
||||
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(() => {
|
||||
router.push(`/login`)
|
||||
this.$i18n.locale = 'zh'
|
||||
|
|
|
@ -1,137 +1,135 @@
|
|||
<template>
|
||||
<div class="app-container menu">
|
||||
<el-tree
|
||||
:props="defaultProps"
|
||||
:data="treeData"
|
||||
node-key="Id"
|
||||
:default-expand-all="true"
|
||||
:expand-on-click-node="false"
|
||||
style="width:80%;"
|
||||
>
|
||||
<span slot-scope="{ node, data }" class="custom-tree-node">
|
||||
<span v-if="data.FunctionName">{{ node.label }} --------------------(Function)</span>
|
||||
<span v-else>{{ node.label }}</span>
|
||||
<span>
|
||||
<el-button type="text" icon="el-icon-plus" size="small" @click="() => append(data)">Append</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
size="small"
|
||||
@click="() => edit(data)"
|
||||
>Edit</el-button>
|
||||
<el-button type="text" icon="el-icon-delete" size="small" @click="() => remove(data)">Delete</el-button>
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
<menu-form v-if="model_cfg.visible" :form="currenNode" width="500px" @close="closeModel" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getMenuFunction, deleteMenuFunction } from '@/api/admin'
|
||||
import MenuForm from './components/MenuForm'
|
||||
import { model_cfg } from './menu'
|
||||
export default {
|
||||
name: 'Menu',
|
||||
components: { MenuForm },
|
||||
data() {
|
||||
return {
|
||||
model_cfg,
|
||||
treeData: [],
|
||||
defaultProps: {
|
||||
label: 'MenuName',
|
||||
children: 'Children'
|
||||
},
|
||||
dialogVisible: false,
|
||||
title: '',
|
||||
currenNode: {},
|
||||
nodeId: '',
|
||||
parentId: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getlist()
|
||||
},
|
||||
methods: {
|
||||
// 获取菜单数据
|
||||
getlist() {
|
||||
const loading = this.$loading({
|
||||
target: document.querySelector('.menu'),
|
||||
fullscreen: false,
|
||||
lock: true,
|
||||
text: 'Loading',
|
||||
spinner: 'el-icon-loading'
|
||||
})
|
||||
getMenuFunction().then(res => {
|
||||
loading.close()
|
||||
this.treeData = res.Result
|
||||
}).catch(() => { loading.close() })
|
||||
},
|
||||
// 添加菜单
|
||||
append(node) {
|
||||
this.currenNode = {}
|
||||
this.currenNode.ParentId = node.Id
|
||||
this.currenNode.Status = 1
|
||||
// this.currenNode.ShowOrder = 0
|
||||
this.nodeId = node.Id
|
||||
this.model_cfg.title = 'Append'
|
||||
this.model_cfg.visible = true
|
||||
},
|
||||
// 编辑菜单
|
||||
edit(node) {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const { Children, CreateTime, CreateUserId, UpdateTime, UpdateUserId, ...obj } = JSON.parse(JSON.stringify(node))
|
||||
obj.MetaBreadcrumb = obj.MetaBreadcrumb ? 1 : 0
|
||||
obj.Hidden = obj.Hidden ? 1 : 0
|
||||
this.currenNode = obj
|
||||
this.nodeId = node.Id
|
||||
this.model_cfg.title = 'Edit'
|
||||
this.model_cfg.visible = true
|
||||
},
|
||||
// 移除菜单
|
||||
remove(node) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteMenuFunction(node.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.getlist()
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
closeModel() {
|
||||
this.model_cfg.visible = false
|
||||
this.getlist()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.menu{
|
||||
.el-tree {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.el-tree-node{
|
||||
margin-top: 5px;
|
||||
}
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.el-dialog__body{
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<div class="app-container menu">
|
||||
<el-tree
|
||||
:props="defaultProps"
|
||||
:data="treeData"
|
||||
node-key="Id"
|
||||
:default-expand-all="true"
|
||||
:expand-on-click-node="false"
|
||||
style="width:80%;"
|
||||
>
|
||||
<span slot-scope="{ node, data }" class="custom-tree-node">
|
||||
<span v-if="data.FunctionName">{{ node.label }} --------------------(Function)</span>
|
||||
<span v-else>{{ node.label }}</span>
|
||||
<span>
|
||||
<el-button type="text" icon="el-icon-plus" size="small" @click="() => append(data)">Append</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
size="small"
|
||||
@click="() => edit(data)"
|
||||
>Edit</el-button>
|
||||
<el-button type="text" icon="el-icon-delete" size="small" @click="() => remove(data)">Delete</el-button>
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
<menu-form v-if="model_cfg.visible" :form="currenNode" width="500px" @close="closeModel" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getMenuFunction, deleteMenuFunction } from '@/api/admin'
|
||||
import MenuForm from './components/MenuForm'
|
||||
import { model_cfg } from './menu'
|
||||
export default {
|
||||
name: 'Menu',
|
||||
components: { MenuForm },
|
||||
data() {
|
||||
return {
|
||||
model_cfg,
|
||||
treeData: [],
|
||||
defaultProps: {
|
||||
label: 'MenuName',
|
||||
children: 'Children'
|
||||
},
|
||||
dialogVisible: false,
|
||||
title: '',
|
||||
currenNode: {},
|
||||
nodeId: '',
|
||||
parentId: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getlist()
|
||||
},
|
||||
methods: {
|
||||
// 获取菜单数据
|
||||
getlist() {
|
||||
const loading = this.$loading({
|
||||
target: document.querySelector('.menu'),
|
||||
fullscreen: false,
|
||||
lock: true,
|
||||
text: 'Loading',
|
||||
spinner: 'el-icon-loading'
|
||||
})
|
||||
getMenuFunction().then(res => {
|
||||
loading.close()
|
||||
this.treeData = res.Result
|
||||
}).catch(() => { loading.close() })
|
||||
},
|
||||
// 添加菜单
|
||||
append(node) {
|
||||
this.currenNode = {}
|
||||
this.currenNode.ParentId = node.Id
|
||||
this.currenNode.Status = 1
|
||||
// this.currenNode.ShowOrder = 0
|
||||
this.nodeId = node.Id
|
||||
this.model_cfg.title = 'Append'
|
||||
this.model_cfg.visible = true
|
||||
},
|
||||
// 编辑菜单
|
||||
edit(node) {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const { Children, CreateTime, CreateUserId, UpdateTime, UpdateUserId, ...obj } = JSON.parse(JSON.stringify(node))
|
||||
obj.MetaBreadcrumb = obj.MetaBreadcrumb ? 1 : 0
|
||||
obj.Hidden = obj.Hidden ? 1 : 0
|
||||
this.currenNode = obj
|
||||
this.nodeId = node.Id
|
||||
this.model_cfg.title = 'Edit'
|
||||
this.model_cfg.visible = true
|
||||
},
|
||||
// 移除菜单
|
||||
remove(node) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true
|
||||
})
|
||||
.then(() => {
|
||||
deleteMenuFunction(node.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.getlist()
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
closeModel() {
|
||||
this.model_cfg.visible = false
|
||||
this.getlist()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.menu{
|
||||
.el-tree {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.el-tree-node{
|
||||
margin-top: 5px;
|
||||
}
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.el-dialog__body{
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
@ -89,16 +89,15 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDeleteRole(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
}).then(() => {
|
||||
deleteUserTypeRole(row.Id).then((res) => {
|
||||
if (res.IsSuccess) {
|
||||
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'))
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,39 +1,38 @@
|
|||
<template>
|
||||
<el-card class="box-card" style="width:800px;" size="small">
|
||||
<!-- <div slot="header" class="clearfix">
|
||||
<span>Security</span>
|
||||
</div> -->
|
||||
<div>
|
||||
<el-button type="danger" @click="handleReset">Reset Password</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
<script>
|
||||
import { resetPassword } from '@/api/admin'
|
||||
export default {
|
||||
name: 'Account',
|
||||
props: {
|
||||
userId: { type: String, default: '' }
|
||||
},
|
||||
methods: {
|
||||
handleReset() {
|
||||
this.$confirm('Sure to reset password?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
resetPassword(this.userId).then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.$message({
|
||||
message: 'Reset password successfully',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<el-card class="box-card" style="width:800px;" size="small">
|
||||
<!-- <div slot="header" class="clearfix">
|
||||
<span>Security</span>
|
||||
</div> -->
|
||||
<div>
|
||||
<el-button type="danger" @click="handleReset">Reset Password</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
<script>
|
||||
import { resetPassword } from '@/api/admin'
|
||||
export default {
|
||||
name: 'Account',
|
||||
props: {
|
||||
userId: { type: String, default: '' }
|
||||
},
|
||||
methods: {
|
||||
handleReset() {
|
||||
this.$confirm('Sure to reset password?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
resetPassword(this.userId).then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.$message({
|
||||
message: 'Reset password successfully',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -113,18 +113,17 @@ export default {
|
|||
},
|
||||
// 删除用户
|
||||
handleDeleteUser(data) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteSysUser(data.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
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'))
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -14,27 +14,26 @@
|
|||
<span v-else>{{ employment.RankCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Physician')">
|
||||
<span v-if="isEnglish">{{ employment.Physician }}</span>
|
||||
<span v-else>{{ employment.PhysicianCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="6">-->
|
||||
<!-- <el-form-item :label="$t('resumeInfo:label:Physician')">-->
|
||||
<!-- <span v-if="isEnglish">{{ employment.Physician }}</span>-->
|
||||
<!-- <span v-else>{{ employment.PhysicianCN }}</span>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Position')">
|
||||
<span v-if="isEnglish">{{ employment.Position }}</span>
|
||||
<span v-else>{{ employment.PositionCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Hospital')">
|
||||
<span v-if="isEnglish">{{ employment.HospitalName }}</span>
|
||||
<span v-else>{{ employment.HospitalNameCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Affiliated')">
|
||||
<span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span>
|
||||
|
|
|
@ -90,11 +90,12 @@ export default {
|
|||
this.setLanguage('zh')
|
||||
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() {
|
||||
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.initForm()
|
||||
},
|
||||
|
@ -135,6 +136,7 @@ export default {
|
|||
} else {
|
||||
this.workInfo.Position = this.workInfo.Position
|
||||
this.workInfo.PositionCN = this.workInfo.PositionCN
|
||||
//
|
||||
}
|
||||
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.doctorInfo = res.Result
|
||||
!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.initStatus()
|
||||
this.initEmploymentInfo()
|
||||
|
|
|
@ -126,8 +126,7 @@ export default {
|
|||
this.$confirm('Sure to sign out', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.$store.dispatch('user/logout').then(res => {
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
import * as dicomParser from 'dicom-parser'
|
||||
import * as cornerstone from 'cornerstone-core'
|
||||
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 dicomPreview from '@/components/Dicom/DicomPreview'
|
||||
|
||||
|
@ -86,6 +86,10 @@ export default {
|
|||
uid: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
studyList: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -102,7 +106,7 @@ export default {
|
|||
var totalHeight = window.innerHeight || document.body.clientHeight
|
||||
var wrapper = this.$refs['preview-wrapper']
|
||||
wrapper.style.height = (totalHeight - 70) + 'px'
|
||||
if (!dicomStore.studyList || !this.uid) return
|
||||
if (!this.studyList || !this.uid) return
|
||||
this.loadStudy()
|
||||
},
|
||||
|
||||
|
@ -120,7 +124,7 @@ export default {
|
|||
return newObj
|
||||
},
|
||||
loadStudy() {
|
||||
var studyList = dicomStore.studyList
|
||||
var studyList = this.studyList
|
||||
var studyUid = this.uid
|
||||
var studyItem = studyList.find(function(item) {
|
||||
return item.dicomInfo.studyUid === studyUid
|
||||
|
|
|
@ -64,21 +64,24 @@
|
|||
|
||||
</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>
|
||||
<el-switch
|
||||
v-model="item.isReading"
|
||||
size="mini"
|
||||
@change="changeReadingStatus($event, item)"
|
||||
/>
|
||||
|
||||
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span>
|
||||
<el-switch
|
||||
v-model="item.isDeleted"
|
||||
size="mini"
|
||||
@change="changeDeleteStatus($event, item)"
|
||||
/>
|
||||
<div>
|
||||
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isReading') }}</span>
|
||||
<el-switch
|
||||
v-model="item.isReading"
|
||||
size="mini"
|
||||
@change="changeReadingStatus($event, item)"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<span style="font-size: 12px;margin-right: 5px">{{ $t('trials:audit:table:isDelete') }}</span>
|
||||
<el-switch
|
||||
v-model="item.isDeleted"
|
||||
size="mini"
|
||||
@change="changeDeleteStatus($event, item)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="item.prefetchInstanceCount>0 && item.prefetchInstanceCount<item.instanceCount">
|
||||
<el-progress :percentage="parseInt(((item.prefetchInstanceCount/item.instanceCount)*100).toFixed(2))" />
|
||||
|
@ -403,6 +406,7 @@ export default {
|
|||
data.isReading = true
|
||||
}
|
||||
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
|
||||
message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading))
|
||||
this.$confirm(message, {
|
||||
distinguishCancelAndClose: true,
|
||||
type: 'warning'
|
||||
|
@ -430,6 +434,7 @@ export default {
|
|||
data.isDeleted = true
|
||||
}
|
||||
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
|
||||
message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted))
|
||||
this.$confirm(message, {
|
||||
distinguishCancelAndClose: true,
|
||||
type: 'warning'
|
||||
|
|
|
@ -83,21 +83,24 @@
|
|||
|
||||
</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>
|
||||
<el-switch
|
||||
v-model="series.isReading"
|
||||
size="mini"
|
||||
@change="changeReadingStatus($event, series)"
|
||||
/>
|
||||
|
||||
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span>
|
||||
<el-switch
|
||||
v-model="series.isDeleted"
|
||||
size="mini"
|
||||
@change="changeDeleteStatus($event, series)"
|
||||
/>
|
||||
<div>
|
||||
<span style="font-size: 12px;">{{ $t('trials:audit:table:isReading') }}</span>
|
||||
<el-switch
|
||||
v-model="series.isReading"
|
||||
size="mini"
|
||||
@change="changeReadingStatus($event, series)"
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<span style="font-size: 12px;">{{ $t('trials:audit:table:isDelete') }}</span>
|
||||
<el-switch
|
||||
v-model="series.isDeleted"
|
||||
size="mini"
|
||||
@change="changeDeleteStatus($event, series)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <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" />
|
||||
|
@ -353,6 +356,7 @@ export default {
|
|||
data.isReading = true
|
||||
}
|
||||
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
|
||||
message = message.replace('yyy', this.$fd('YesOrNo', !data.isReading))
|
||||
this.$confirm(message, {
|
||||
distinguishCancelAndClose: true,
|
||||
type: 'warning'
|
||||
|
@ -380,6 +384,7 @@ export default {
|
|||
data.isDeleted = true
|
||||
}
|
||||
var message = this.$t('trials:audit:message:changeSeriesStatus').replace('xxx', statusStr)
|
||||
message = message.replace('yyy', this.$fd('YesOrNo', !data.isDeleted))
|
||||
this.$confirm(message, {
|
||||
distinguishCancelAndClose: true,
|
||||
type: 'warning'
|
||||
|
|
|
@ -244,8 +244,7 @@ export default {
|
|||
this.$confirm('是否确认废除此文件?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<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">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Description }}({{scope.row.DescriptionCN}})</span>
|
||||
<span>{{ scope.row.DescriptionCN }}({{scope.row.Description}})</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<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="text-align: right;height: 50px;">
|
||||
<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-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-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-button type="primary" size="mini" @click="handleCope(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 label="操作" align="center" min-width="180" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleCopyData(scope.row)"
|
||||
>复制</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
|
@ -1146,6 +1152,16 @@ export default {
|
|||
this.title = '修改'
|
||||
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() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
|
|
|
@ -125,18 +125,17 @@ export default {
|
|||
},
|
||||
// 删除字典表配置信息
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteDictionary(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
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', {})
|
||||
}
|
||||
})
|
||||
|
|
|
@ -239,18 +239,17 @@ export default {
|
|||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteEmailNoticeConfig(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
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'))
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -139,11 +139,10 @@ export default {
|
|||
},
|
||||
// 删除CRO
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -152,7 +151,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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
|
||||
|
|
|
@ -8,12 +8,15 @@
|
|||
label-width="170px"
|
||||
>
|
||||
<div class="base-dialog-body">
|
||||
<el-form-item label="Hospital CN: " prop="SiteId">
|
||||
<el-select v-model="form.SiteId" style="width: 100%" filterable @change="siteChange">
|
||||
<el-form-item label="Site: ">
|
||||
<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>
|
||||
</el-select>
|
||||
</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-input v-model="form.HospitalName" />
|
||||
</el-form-item>
|
||||
|
@ -88,9 +91,7 @@ export default {
|
|||
},
|
||||
siteList: [],
|
||||
rules: {
|
||||
SiteId: [{ required: true, message: 'Please specify', trigger: 'blur' },
|
||||
{ max: 50, message: 'The maximum length is 50' }],
|
||||
HospitalName: [{ required: true, message: 'Please specify', trigger: 'blur' }, { max: 50, message: 'The maximum length is 50' }],
|
||||
HospitalNameCN: [{ required: true, message: 'Please specify', trigger: 'blur' }, { max: 50, message: 'The maximum length is 50' }],
|
||||
UniversityAffiliated: [{ 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' },
|
||||
|
@ -116,7 +117,8 @@ export default {
|
|||
this.siteList.forEach(o => {
|
||||
if (o.Id === v) {
|
||||
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.CountryCN = o.Country
|
||||
}
|
||||
|
|
|
@ -1,256 +1,255 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="small" class="base-search-form">
|
||||
<el-form-item label="Hospital:">
|
||||
<el-input v-model="searchData.HospitalName" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Province:">
|
||||
<el-input v-model="searchData.Province" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="City:">
|
||||
<el-input v-model="searchData.City" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">Reset</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
style="margin-left:auto;"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAddHospital"
|
||||
>New</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<!-- hospital列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:60}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column
|
||||
prop="HospitalName"
|
||||
label="Hospital"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="HospitalNameCN"
|
||||
label="Hospital CN"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UniversityAffiliated"
|
||||
label="University Affiliated"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UniversityAffiliatedCN"
|
||||
label="University Affiliated CN"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="Country"
|
||||
label="Country"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CountryCN"
|
||||
label="Country CN"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Province"
|
||||
label="Province"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ProvinceCN"
|
||||
label="Province CN"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="City"
|
||||
label="City"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CityCN"
|
||||
label="City CN"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column label="Action" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-edit-outline"
|
||||
title="编辑"
|
||||
@click="handleEdit(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-delete"
|
||||
title="删除"
|
||||
@click="handleDelete(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
|
||||
<el-dialog
|
||||
v-if="editDialog.visible"
|
||||
:visible.sync="editDialog.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="editDialog.title"
|
||||
width="600px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<hospital-form v-if="editDialog.visible" :data="rowData" @close="close" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { getHospitalPageList, deleteHospital } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import HospitalForm from './HospitalForm'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
HospitalName: '',
|
||||
Province: '',
|
||||
City: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20,
|
||||
Asc: true,
|
||||
SortField: ''
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'Hospitals',
|
||||
components: { BoxContent, Pagination, HospitalForm },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
editDialog: { visible: false, title: '' },
|
||||
list: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
rowData: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取医院列表信息
|
||||
getList() {
|
||||
this.loading = true
|
||||
getHospitalPageList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 新增医院信息
|
||||
handleAddHospital() {
|
||||
this.rowData = {}
|
||||
this.editDialog.title = 'Add'
|
||||
this.editDialog.visible = true
|
||||
},
|
||||
// 修改医院信息
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.editDialog.title = 'Edit'
|
||||
this.editDialog.visible = true
|
||||
},
|
||||
// 删除医院信息
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
deleteHospital(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 重置列表
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
// 指定排序字段,对列表进行排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 关闭模态框
|
||||
close() {
|
||||
this.editDialog.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.hospitals{
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<box-content>
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="small" class="base-search-form">
|
||||
<el-form-item label="Hospital:">
|
||||
<el-input v-model="searchData.HospitalName" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Province:">
|
||||
<el-input v-model="searchData.Province" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="City:">
|
||||
<el-input v-model="searchData.City" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">Reset</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
style="margin-left:auto;"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAddHospital"
|
||||
>New</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<!-- hospital列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:60}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column
|
||||
prop="HospitalName"
|
||||
label="Hospital"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="HospitalNameCN"
|
||||
label="Hospital CN"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UniversityAffiliated"
|
||||
label="University Affiliated"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UniversityAffiliatedCN"
|
||||
label="University Affiliated CN"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="Country"
|
||||
label="Country"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CountryCN"
|
||||
label="Country CN"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Province"
|
||||
label="Province"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ProvinceCN"
|
||||
label="Province CN"
|
||||
width="140"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="City"
|
||||
label="City"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CityCN"
|
||||
label="City CN"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column label="Action" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-edit-outline"
|
||||
title="编辑"
|
||||
@click="handleEdit(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-delete"
|
||||
title="删除"
|
||||
@click="handleDelete(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
|
||||
<el-dialog
|
||||
v-if="editDialog.visible"
|
||||
:visible.sync="editDialog.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="editDialog.title"
|
||||
width="600px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<hospital-form v-if="editDialog.visible" :data="rowData" @close="close" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { getHospitalPageList, deleteHospital } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import HospitalForm from './HospitalForm'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
HospitalName: '',
|
||||
Province: '',
|
||||
City: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20,
|
||||
Asc: true,
|
||||
SortField: ''
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'Hospitals',
|
||||
components: { BoxContent, Pagination, HospitalForm },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
editDialog: { visible: false, title: '' },
|
||||
list: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
rowData: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取医院列表信息
|
||||
getList() {
|
||||
this.loading = true
|
||||
getHospitalPageList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 新增医院信息
|
||||
handleAddHospital() {
|
||||
this.rowData = {}
|
||||
this.editDialog.title = 'Add'
|
||||
this.editDialog.visible = true
|
||||
},
|
||||
// 修改医院信息
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.editDialog.title = 'Edit'
|
||||
this.editDialog.visible = true
|
||||
},
|
||||
// 删除医院信息
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
deleteHospital(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 重置列表
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
// 指定排序字段,对列表进行排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 关闭模态框
|
||||
close() {
|
||||
this.editDialog.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.hospitals{
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -213,11 +213,10 @@ export default {
|
|||
},
|
||||
// 删除Site
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -227,7 +226,7 @@ export default {
|
|||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$store.dispatch('global/setSite', {})
|
||||
this.$message.success('Deleted successfully!')
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
|
|
|
@ -139,11 +139,10 @@ export default {
|
|||
},
|
||||
// 删除Sponsor
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -152,7 +151,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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
|
||||
|
|
|
@ -182,11 +182,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -195,7 +194,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -154,11 +154,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -167,7 +166,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -183,11 +183,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -196,7 +195,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -182,11 +182,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -195,7 +194,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -153,11 +153,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -166,7 +165,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -206,11 +206,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -219,7 +218,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -183,11 +183,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -196,7 +195,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -122,11 +122,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -135,7 +134,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -1,162 +1,161 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
Add
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="编号"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="场景类型"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneConfigForm :parent-id="parentId" :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getChildList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SceneConfigForm from './SceneConfigForm'
|
||||
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SceneConfigForm },
|
||||
props: {
|
||||
parentId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
list: [],
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getChildList(this.parentId).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
Add
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="编号"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="场景类型"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneConfigForm :parent-id="parentId" :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getChildList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SceneConfigForm from './SceneConfigForm'
|
||||
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SceneConfigForm },
|
||||
props: {
|
||||
parentId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
list: [],
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getChildList(this.parentId).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,229 +1,228 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="编号:">
|
||||
<el-input v-model="searchData.Code" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模板:">
|
||||
<el-input v-model="searchData.Name" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" @click="handleSearch">Search</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
New
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="Code"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="模板"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleConfig(scope.row)"
|
||||
>
|
||||
场景配置
|
||||
</el-button>
|
||||
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
|
||||
<!-- 新增、编辑 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SignTemplateForm :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="configVisible"
|
||||
:visible.sync="configVisible"
|
||||
title="场景配置"
|
||||
:fullscreen="true"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneList :parent-id="rowData.Id" @closeDialog="closeDialog" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getSystemBasicDataList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SignTemplateForm from './components/SignTemplateForm'
|
||||
import SceneList from './components/SceneList'
|
||||
import Pagination from '@/components/Pagination'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Code: '',
|
||||
Name: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SignTemplateForm, Pagination, SceneList },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
loading: false,
|
||||
list: [],
|
||||
total: 0,
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false,
|
||||
configVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getSystemBasicDataList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 场景配置
|
||||
handleConfig(row) {
|
||||
this.rowData = { ...row }
|
||||
this.configVisible = true
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
// 排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="编号:">
|
||||
<el-input v-model="searchData.Code" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模板:">
|
||||
<el-input v-model="searchData.Name" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" @click="handleSearch">Search</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
New
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="Code"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="模板"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleConfig(scope.row)"
|
||||
>
|
||||
场景配置
|
||||
</el-button>
|
||||
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
|
||||
<!-- 新增、编辑 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SignTemplateForm :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="configVisible"
|
||||
:visible.sync="configVisible"
|
||||
title="场景配置"
|
||||
:fullscreen="true"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneList :parent-id="rowData.Id" @closeDialog="closeDialog" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getSystemBasicDataList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SignTemplateForm from './components/SignTemplateForm'
|
||||
import SceneList from './components/SceneList'
|
||||
import Pagination from '@/components/Pagination'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Code: '',
|
||||
Name: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SignTemplateForm, Pagination, SceneList },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
loading: false,
|
||||
list: [],
|
||||
total: 0,
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false,
|
||||
configVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getSystemBasicDataList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 场景配置
|
||||
handleConfig(row) {
|
||||
this.rowData = { ...row }
|
||||
this.configVisible = true
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
// 排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -162,11 +162,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -175,7 +174,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
:disabled="isCompleteConfig"
|
||||
@click="handleAdd"
|
||||
style="margin-right: 10px;"
|
||||
>
|
||||
|
@ -59,12 +60,13 @@
|
|||
show-overflow-tooltip
|
||||
>
|
||||
<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
|
||||
type="danger"
|
||||
size="small"
|
||||
:disabled="isCompleteConfig"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
|
@ -151,6 +153,10 @@ export default {
|
|||
criterionId: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
isCompleteConfig: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
|
|
@ -19,6 +19,52 @@
|
|||
/>
|
||||
</el-select>
|
||||
</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
|
||||
v-if="form.Type === 'number' || form.Type === 'calculation'"
|
||||
|
@ -75,52 +121,6 @@
|
|||
/>
|
||||
</el-select>
|
||||
</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
|
||||
v-if="form.Type === 'select' || form.Type === 'radio'"
|
||||
label="选项"
|
||||
|
@ -170,7 +170,7 @@
|
|||
placeholder="选项请用‘|’分割多个选项"
|
||||
/>
|
||||
</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 v-for="item of $d.QuestionClassify" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group> -->
|
||||
|
@ -406,6 +406,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
label="问题标识"
|
||||
v-if="form.Type !== 'group'"
|
||||
prop="QuestionType"
|
||||
>
|
||||
<el-select
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="criterion-config">
|
||||
<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;">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="名称">
|
||||
|
@ -18,7 +18,7 @@
|
|||
:disabled="list.length === 0"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="preview.visible = true"
|
||||
@click="handlePreview"
|
||||
>
|
||||
预览
|
||||
</el-button>
|
||||
|
@ -200,7 +200,7 @@
|
|||
v-if="addOrEdit.visible"
|
||||
:visible.sync="addOrEdit.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="addOrEdit.title"
|
||||
:title="`${addOrEdit.title}`"
|
||||
width="600px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
|
@ -303,6 +303,9 @@ export default {
|
|||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
handlePreview() {
|
||||
window.open(`/ecrfPreview?SystemReadingCriterionId=${this.criterionId}&lang=${this.$i18n.locale}`)
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
this.searchData.ReadingQuestionCriterionSystemId = this.criterionId
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
<el-button
|
||||
type="danger"
|
||||
size="mini"
|
||||
:disabled="scope.row.IsCompleteConfig"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
|
@ -133,7 +134,7 @@
|
|||
|
||||
<el-dialog
|
||||
v-if="configVisible"
|
||||
title="eCRF"
|
||||
:title="'eCRF' + `(${rowData.CriterionName})`"
|
||||
:visible.sync="configVisible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
|
@ -145,7 +146,7 @@
|
|||
|
||||
<el-dialog
|
||||
v-if="configBaseDataVisible"
|
||||
title="基础数据配置"
|
||||
:title="'基础数据配置' + `(${rowData.CriterionName})`"
|
||||
:visible.sync="configBaseDataVisible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
|
@ -190,6 +191,7 @@ export default {
|
|||
addDialog: { title: '', visible: false }
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
|
|
|
@ -137,11 +137,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -150,7 +149,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -1,109 +1,109 @@
|
|||
<template>
|
||||
<div v-loading="loading" style="min-height:400px;">
|
||||
<el-form
|
||||
v-if="isRender"
|
||||
ref="questions"
|
||||
size="small"
|
||||
:model="questionForm"
|
||||
>
|
||||
<CriterionFormItem
|
||||
v-for="question of questions"
|
||||
:key="question.Id"
|
||||
:question="question"
|
||||
:question-form="questionForm"
|
||||
:reading-task-state="readingTaskState"
|
||||
:criterion-id="criterionId"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
@setFormItemData="setFormItemData"
|
||||
/>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import { getSystemReadingQuestion } from '@/api/dictionary'
|
||||
import CriterionFormItem from './CriterionFormItem'
|
||||
|
||||
export default {
|
||||
name: 'EcrfPreview',
|
||||
components: {
|
||||
CriterionFormItem
|
||||
},
|
||||
props: {
|
||||
criterionId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
questions: [],
|
||||
questionForm: {},
|
||||
publicQuestions: [],
|
||||
isRender: false,
|
||||
readingTaskState: 0,
|
||||
activeName: 0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getQuestions()
|
||||
},
|
||||
methods: {
|
||||
getQuestions() {
|
||||
this.loading = true
|
||||
var param = {
|
||||
id: this.criterionId
|
||||
}
|
||||
getSystemReadingQuestion(param).then(res => {
|
||||
res.Result.SinglePage.map((v) => {
|
||||
if (v.Type === 'group' && v.Childrens.length === 0) return
|
||||
if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary') {
|
||||
this.$set(this.questionForm, v.Id, v.DefaultValue)
|
||||
}
|
||||
if (v.Childrens && v.Childrens.length > 0) {
|
||||
this.setChild(v.Childrens)
|
||||
}
|
||||
})
|
||||
this.questions = res.Result.SinglePage
|
||||
|
||||
this.isRender = true
|
||||
this.loading = false
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
setChild(obj) {
|
||||
obj.forEach(i => {
|
||||
if (i.Type !== 'group' && i.Type !== 'summary' && i.Id) {
|
||||
this.$set(this.questionForm, i.Id, '')
|
||||
}
|
||||
if (i.Childrens && i.Childrens.length > 0) {
|
||||
this.setChild(i.Childrens)
|
||||
}
|
||||
})
|
||||
},
|
||||
resetFormItemData(v) {
|
||||
this.questionForm[v] = ''
|
||||
},
|
||||
setFormItemData(obj) {
|
||||
this.$set(this.questionForm, obj.key, obj.val)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::-webkit-scrollbar {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
background: #d0d0d0;
|
||||
}
|
||||
.tabContent{
|
||||
height:300px;
|
||||
overflow-y: auto;
|
||||
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div v-loading="loading" style="min-height:400px;">
|
||||
<el-form
|
||||
v-if="isRender"
|
||||
ref="questions"
|
||||
size="small"
|
||||
:model="questionForm"
|
||||
>
|
||||
<CriterionFormItem
|
||||
v-for="question of questions"
|
||||
:key="question.Id"
|
||||
:question="question"
|
||||
:question-form="questionForm"
|
||||
:reading-task-state="readingTaskState"
|
||||
:criterion-id="criterionId"
|
||||
@resetFormItemData="resetFormItemData"
|
||||
@setFormItemData="setFormItemData"
|
||||
/>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import { getSystemReadingQuestion } from '@/api/dictionary'
|
||||
import CriterionFormItem from './CriterionFormItem'
|
||||
import {mapMutations} from "vuex";
|
||||
|
||||
export default {
|
||||
name: 'EcrfPreview',
|
||||
components: {
|
||||
CriterionFormItem
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
questions: [],
|
||||
questionForm: {},
|
||||
publicQuestions: [],
|
||||
isRender: false,
|
||||
readingTaskState: 0,
|
||||
activeName: 0
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$i18n.locale = this.$route.query.lang
|
||||
this.setLanguage(this.$route.query.lang)
|
||||
this.$updateDictionary()
|
||||
this.criterionId = this.$route.query.SystemReadingCriterionId
|
||||
this.getQuestions()
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
getQuestions() {
|
||||
this.loading = true
|
||||
var param = {
|
||||
id: this.criterionId
|
||||
}
|
||||
getSystemReadingQuestion(param).then(res => {
|
||||
res.Result.SinglePage.map((v) => {
|
||||
if (v.Type === 'group' && v.Childrens.length === 0) return
|
||||
if (!v.IsPage && v.Type !== 'group' && v.Type !== 'summary') {
|
||||
this.$set(this.questionForm, v.Id, v.DefaultValue)
|
||||
}
|
||||
if (v.Childrens && v.Childrens.length > 0) {
|
||||
this.setChild(v.Childrens)
|
||||
}
|
||||
})
|
||||
this.questions = res.Result.SinglePage
|
||||
|
||||
this.isRender = true
|
||||
this.loading = false
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
setChild(obj) {
|
||||
obj.forEach(i => {
|
||||
if (i.Type !== 'group' && i.Type !== 'summary' && i.Id) {
|
||||
this.$set(this.questionForm, i.Id, '')
|
||||
}
|
||||
if (i.Childrens && i.Childrens.length > 0) {
|
||||
this.setChild(i.Childrens)
|
||||
}
|
||||
})
|
||||
},
|
||||
resetFormItemData(v) {
|
||||
this.questionForm[v] = ''
|
||||
},
|
||||
setFormItemData(obj) {
|
||||
this.$set(this.questionForm, obj.key, obj.val)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::-webkit-scrollbar {
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
background: #d0d0d0;
|
||||
}
|
||||
.tabContent{
|
||||
height:300px;
|
||||
overflow-y: auto;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
v-if="config.configType === 2"
|
||||
v-loading="loading"
|
||||
ref="multipleTable"
|
||||
:data="$d && $d.GlobalAssessType"
|
||||
:data="GlobalAssessType"
|
||||
stripe
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
|
@ -165,7 +165,7 @@
|
|||
|
||||
<script>
|
||||
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 {
|
||||
props: {
|
||||
data: {
|
||||
|
@ -192,7 +192,8 @@ export default {
|
|||
IsMustGlobalReading: false,
|
||||
form: {
|
||||
IsMustGlobalReading: false
|
||||
}
|
||||
},
|
||||
GlobalAssessType: []
|
||||
}
|
||||
},
|
||||
beforecreate() {
|
||||
|
@ -204,8 +205,17 @@ export default {
|
|||
mounted() {
|
||||
this.getList()
|
||||
this.getSystemGlobalInfo()
|
||||
this.getCriterionDictionary()
|
||||
},
|
||||
methods: {
|
||||
getCriterionDictionary() {
|
||||
getCriterionDictionary({
|
||||
ReadingCriterionId: this.criterionId,
|
||||
DictionaryCode: 'GlobalAssessType'
|
||||
}).then(res => {
|
||||
this.GlobalAssessType = res.Result.GlobalAssessType
|
||||
})
|
||||
},
|
||||
getSystemGlobalInfo() {
|
||||
getSystemGlobalInfo({
|
||||
SystemCriterionId: this.criterionId
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
v-loading="loading"
|
||||
style="width: 100%"
|
||||
ref="multipleTable"
|
||||
:data="$d.OncologyAssessType"
|
||||
:data="OncologyAssessType"
|
||||
stripe
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
|
@ -81,13 +81,13 @@
|
|||
width="55">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="raw.ValueCN"
|
||||
prop="ValueCN"
|
||||
label="中文值"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="raw.Value"
|
||||
prop="Value"
|
||||
label="英文值"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
|
@ -105,7 +105,7 @@
|
|||
|
||||
<script>
|
||||
import BaseModel from '@/components/BaseModel'
|
||||
import { getSystemOncologyInfo, setSystemOncologyInfo } from '@/api/dictionary'
|
||||
import { getSystemOncologyInfo, setSystemOncologyInfo, getCriterionDictionary } from '@/api/dictionary'
|
||||
export default {
|
||||
props: {
|
||||
data: {
|
||||
|
@ -132,13 +132,23 @@ export default {
|
|||
preview: { visible: false, title: 'eCRF预览' },
|
||||
config: { visible: false, title: '肿瘤学阅片结果', appendToBody: true, width: '600px', configType: 0 },
|
||||
selectedList: [],
|
||||
OncologyAssessType: [],
|
||||
IsOncologyReading: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
this.getCriterionDictionary()
|
||||
},
|
||||
methods: {
|
||||
getCriterionDictionary() {
|
||||
getCriterionDictionary({
|
||||
ReadingCriterionId: this.criterionId,
|
||||
DictionaryCode: 'OncologyAssessType'
|
||||
}).then(res => {
|
||||
this.OncologyAssessType = res.Result.OncologyAssessType
|
||||
})
|
||||
},
|
||||
toggleSelection(rows) {
|
||||
console.log(this.$refs.multipleTable)
|
||||
if (rows) {
|
||||
|
@ -173,9 +183,9 @@ export default {
|
|||
this.config.title = '肿瘤学阅片结果'
|
||||
this.config.visible = true
|
||||
this.$nextTick(() => {
|
||||
var a = this.$d.OncologyAssessType.filter(v => {
|
||||
var a = this.OncologyAssessType.filter(v => {
|
||||
return !!this.list.find(v1 => {
|
||||
return v1.DictionaryId === v.id
|
||||
return v1.DictionaryId === v.Id
|
||||
})
|
||||
})
|
||||
this.toggleSelection(a)
|
||||
|
@ -184,15 +194,15 @@ export default {
|
|||
},
|
||||
handleSave() {
|
||||
this.loading = true
|
||||
var a = this.$d.OncologyAssessType.filter(v => {
|
||||
var a = this.OncologyAssessType.filter(v => {
|
||||
return !!this.list.find(v1 => {
|
||||
return v1.DictionaryId === v.id
|
||||
return v1.DictionaryId === v.Id
|
||||
})
|
||||
})
|
||||
var params = {
|
||||
SystemCriterionId: this.criterionId,
|
||||
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,
|
||||
IsOncologyReading: this.form.IsOncologyReading
|
||||
}
|
||||
|
|
|
@ -170,11 +170,10 @@ export default {
|
|||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -183,7 +182,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -217,11 +217,10 @@ export default {
|
|||
},
|
||||
// 删除受试者
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
|
@ -230,7 +229,7 @@ export default {
|
|||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
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 })
|
||||
})
|
||||
|
|
|
@ -1,188 +1,187 @@
|
|||
<template>
|
||||
<div class="template-wrapper">
|
||||
<div class="left-wrapper">
|
||||
<box-content>
|
||||
<div class="search">
|
||||
<SearchForm
|
||||
size="mini"
|
||||
:that="this"
|
||||
:search-data="searchData"
|
||||
:search-form="template_form"
|
||||
:search-handle="template_handle"
|
||||
@search="handleSearch"
|
||||
@reset="handleReset"
|
||||
/>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button type="primary" size="small" style="margin-left:auto;" @click="handleAdd">New</el-button>
|
||||
<el-button type="primary" size="small" @click="handleSetting">Setting</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<base-table
|
||||
v-loading="loading"
|
||||
:columns="template_cols"
|
||||
:list="list"
|
||||
:search-data="searchData"
|
||||
:total="total"
|
||||
@getList="getList"
|
||||
@items="handleView"
|
||||
@edit="handleEdit"
|
||||
@delete="handleDelete"
|
||||
@sortByColumn="sortByColumn"
|
||||
/>
|
||||
</box-content>
|
||||
</div>
|
||||
<div class="right-wrapper">
|
||||
<div v-if="template.Name">
|
||||
<span>Name:</span>
|
||||
<el-input v-model="template.Name" size="small" style="width:150px;" readonly />
|
||||
</div>
|
||||
<el-table v-if="template.Name" ref="itemList" v-loading="itemLoading" :data="itmeList" class="table" size="small" @select="onTableSelect">
|
||||
<el-table-column type="selection" width="50" />
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="Name" label="Item" show-overflow-tooltip />
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<template-form v-if="template_model.visible" :data="rowData" @close="closeModel" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getQaTemplateList, deleteQATemplate, getQaTemplateConfigList, configQATemplateItem } from '@/api/dictionary'
|
||||
import { template_cols, template_form, template_handle, template_model } from './template'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SearchForm from '@/components/BaseForm/search-form'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import TemplateForm from './components/TemplateForm'
|
||||
import tableMixins from '@/mixins/table'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Name: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'TemplateList',
|
||||
components: { BoxContent, SearchForm, BaseTable, TemplateForm },
|
||||
mixins: [tableMixins],
|
||||
data() {
|
||||
return {
|
||||
template_cols,
|
||||
template_form,
|
||||
template_handle,
|
||||
template_model,
|
||||
searchData: searchDataDefault(),
|
||||
list: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
rowData: {},
|
||||
template: {},
|
||||
itmeList: [],
|
||||
itemLoading: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.loading = true
|
||||
getQaTemplateList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
this.template = {}
|
||||
this.itmeList = []
|
||||
})
|
||||
},
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.template_model.title = 'New'
|
||||
this.template_model.visible = true
|
||||
},
|
||||
handleSetting() {
|
||||
this.$router.push({ name: 'TemplateOfSetting' })
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.template_model.title = 'Edit'
|
||||
this.template_model.visible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteQATemplate(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
handleView(row) {
|
||||
this.template = row
|
||||
this.itemLoading = true
|
||||
getQaTemplateConfigList(row.Id, row.ModalityId).then(res => {
|
||||
this.itmeList = res.Result
|
||||
this.itmeList.forEach(val => {
|
||||
this.$nextTick(
|
||||
function() {
|
||||
this.$refs.itemList.toggleRowSelection(val, val.IsSelect)
|
||||
}.bind(this)
|
||||
)
|
||||
})
|
||||
this.itemLoading = false
|
||||
})
|
||||
},
|
||||
onTableSelect(rows, row) {
|
||||
const param = {
|
||||
qaTemplateItemId: row.Id,
|
||||
qaTemplateId: this.template.Id,
|
||||
isSelect: rows.indexOf(row) !== -1
|
||||
}
|
||||
configQATemplateItem(param).then(res => {
|
||||
this.$message.success('Updated successfully')
|
||||
})
|
||||
},
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
this.template = {}
|
||||
this.itmeList = []
|
||||
},
|
||||
closeModel() {
|
||||
this.template_model.visible = false
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.template-wrapper{
|
||||
height: 100%;
|
||||
display: flex;
|
||||
.left-wrapper{
|
||||
width: 0;
|
||||
flex-grow: 4;
|
||||
border-right: 1px solid #ccc;
|
||||
}
|
||||
.right-wrapper{
|
||||
width: 0;
|
||||
flex-grow: 3;
|
||||
padding: 5px;
|
||||
thead{
|
||||
.el-table-column--selection{
|
||||
.cell {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div class="template-wrapper">
|
||||
<div class="left-wrapper">
|
||||
<box-content>
|
||||
<div class="search">
|
||||
<SearchForm
|
||||
size="mini"
|
||||
:that="this"
|
||||
:search-data="searchData"
|
||||
:search-form="template_form"
|
||||
:search-handle="template_handle"
|
||||
@search="handleSearch"
|
||||
@reset="handleReset"
|
||||
/>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button type="primary" size="small" style="margin-left:auto;" @click="handleAdd">New</el-button>
|
||||
<el-button type="primary" size="small" @click="handleSetting">Setting</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<base-table
|
||||
v-loading="loading"
|
||||
:columns="template_cols"
|
||||
:list="list"
|
||||
:search-data="searchData"
|
||||
:total="total"
|
||||
@getList="getList"
|
||||
@items="handleView"
|
||||
@edit="handleEdit"
|
||||
@delete="handleDelete"
|
||||
@sortByColumn="sortByColumn"
|
||||
/>
|
||||
</box-content>
|
||||
</div>
|
||||
<div class="right-wrapper">
|
||||
<div v-if="template.Name">
|
||||
<span>Name:</span>
|
||||
<el-input v-model="template.Name" size="small" style="width:150px;" readonly />
|
||||
</div>
|
||||
<el-table v-if="template.Name" ref="itemList" v-loading="itemLoading" :data="itmeList" class="table" size="small" @select="onTableSelect">
|
||||
<el-table-column type="selection" width="50" />
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="Name" label="Item" show-overflow-tooltip />
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<template-form v-if="template_model.visible" :data="rowData" @close="closeModel" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getQaTemplateList, deleteQATemplate, getQaTemplateConfigList, configQATemplateItem } from '@/api/dictionary'
|
||||
import { template_cols, template_form, template_handle, template_model } from './template'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SearchForm from '@/components/BaseForm/search-form'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import TemplateForm from './components/TemplateForm'
|
||||
import tableMixins from '@/mixins/table'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Name: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'TemplateList',
|
||||
components: { BoxContent, SearchForm, BaseTable, TemplateForm },
|
||||
mixins: [tableMixins],
|
||||
data() {
|
||||
return {
|
||||
template_cols,
|
||||
template_form,
|
||||
template_handle,
|
||||
template_model,
|
||||
searchData: searchDataDefault(),
|
||||
list: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
rowData: {},
|
||||
template: {},
|
||||
itmeList: [],
|
||||
itemLoading: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.loading = true
|
||||
getQaTemplateList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
this.template = {}
|
||||
this.itmeList = []
|
||||
})
|
||||
},
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.template_model.title = 'New'
|
||||
this.template_model.visible = true
|
||||
},
|
||||
handleSetting() {
|
||||
this.$router.push({ name: 'TemplateOfSetting' })
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.template_model.title = 'Edit'
|
||||
this.template_model.visible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteQATemplate(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
handleView(row) {
|
||||
this.template = row
|
||||
this.itemLoading = true
|
||||
getQaTemplateConfigList(row.Id, row.ModalityId).then(res => {
|
||||
this.itmeList = res.Result
|
||||
this.itmeList.forEach(val => {
|
||||
this.$nextTick(
|
||||
function() {
|
||||
this.$refs.itemList.toggleRowSelection(val, val.IsSelect)
|
||||
}.bind(this)
|
||||
)
|
||||
})
|
||||
this.itemLoading = false
|
||||
})
|
||||
},
|
||||
onTableSelect(rows, row) {
|
||||
const param = {
|
||||
qaTemplateItemId: row.Id,
|
||||
qaTemplateId: this.template.Id,
|
||||
isSelect: rows.indexOf(row) !== -1
|
||||
}
|
||||
configQATemplateItem(param).then(res => {
|
||||
this.$message.success('Updated successfully')
|
||||
})
|
||||
},
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
this.template = {}
|
||||
this.itmeList = []
|
||||
},
|
||||
closeModel() {
|
||||
this.template_model.visible = false
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.template-wrapper{
|
||||
height: 100%;
|
||||
display: flex;
|
||||
.left-wrapper{
|
||||
width: 0;
|
||||
flex-grow: 4;
|
||||
border-right: 1px solid #ccc;
|
||||
}
|
||||
.right-wrapper{
|
||||
width: 0;
|
||||
flex-grow: 3;
|
||||
padding: 5px;
|
||||
thead{
|
||||
.el-table-column--selection{
|
||||
.cell {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,182 +1,181 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<div class="search">
|
||||
<SearchForm
|
||||
size="mini"
|
||||
:that="this"
|
||||
:search-data="searchData"
|
||||
:search-form="setting_form"
|
||||
:search-handle="setting_handle"
|
||||
@search="handleSearch"
|
||||
@reset="handleReset"
|
||||
/>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button type="primary" size="small" style="margin-left:auto;" @click="handleAdd">New</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<base-table
|
||||
v-loading="loading"
|
||||
:columns="setting_cols"
|
||||
:list="list"
|
||||
:search-data="searchData"
|
||||
:total="total"
|
||||
@getList="getList"
|
||||
@edit="handleEdit"
|
||||
@delete="handleDelete"
|
||||
@sortByColumn="sortByColumn"
|
||||
>
|
||||
<!-- 选择自定义slot -->
|
||||
<template slot="modalitySlot" slot-scope="{scope}">
|
||||
{{ scope.row.ModalityList && scope.row.ModalityList.length>0?scope.row.ModalityList.join(', '):'' }}
|
||||
</template>
|
||||
</base-table>
|
||||
<setting-form v-if="setting_model.visible" :data="rowData" @close="closeModel" />
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { getQATemplateItemList, deleteQATemplateItem } from '@/api/dictionary'
|
||||
import { getBasicDataSelects } from '@/api/dictionary/dictionary'
|
||||
import { setting_cols, setting_form, setting_handle, setting_model } from './template'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SearchForm from '@/components/BaseForm/search-form'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import SettingForm from './components/SettingForm.vue'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
ModalityId: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'TemplateSettings',
|
||||
components: { BoxContent, SearchForm, BaseTable, SettingForm },
|
||||
data() {
|
||||
return {
|
||||
setting_cols,
|
||||
setting_form,
|
||||
setting_handle,
|
||||
setting_model,
|
||||
list: [],
|
||||
loading: false,
|
||||
total: 0,
|
||||
searchData: searchDataDefault(),
|
||||
rowData: {},
|
||||
readingType: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
this.getInfo()
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.loading = true
|
||||
getQATemplateItemList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
findItemIndex(key) {
|
||||
return this.setting_form.findIndex(value => value.prop && value.prop === key
|
||||
)
|
||||
},
|
||||
async getInfo() {
|
||||
await this.getDicData()
|
||||
if (this.readingType.length > 0) {
|
||||
const index = this.findItemIndex('ModalityId')
|
||||
this.$set(this.setting_form[index], 'options', this.readingType)
|
||||
}
|
||||
},
|
||||
getDicData() {
|
||||
getBasicDataSelects(['ReadingType']).then(res => {
|
||||
const { ReadingType } = { ...res.Result }
|
||||
this.readingType = ReadingType || {}
|
||||
}).catch(() => {})
|
||||
},
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.setting_model.title = 'Add'
|
||||
this.setting_model.visible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.setting_model.title = 'Add'
|
||||
this.setting_model.visible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteQATemplateItem(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
sortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
closeModel() {
|
||||
this.setting_model.visible = false
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.template-setting{
|
||||
height: 100%;
|
||||
.el-header{
|
||||
.filter-container{
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
span{
|
||||
font-size:13px;
|
||||
margin-right:5px;
|
||||
}
|
||||
.mr{
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-main{
|
||||
height:calc(100% - 40px);
|
||||
padding: 0 20px;
|
||||
.data-table{
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.el-footer{
|
||||
padding: 0 20px;
|
||||
}
|
||||
.el-dialog__header{
|
||||
padding:10px;
|
||||
}
|
||||
.el-dialog__body{
|
||||
padding:10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<box-content>
|
||||
<div class="search">
|
||||
<SearchForm
|
||||
size="mini"
|
||||
:that="this"
|
||||
:search-data="searchData"
|
||||
:search-form="setting_form"
|
||||
:search-handle="setting_handle"
|
||||
@search="handleSearch"
|
||||
@reset="handleReset"
|
||||
/>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button type="primary" size="small" style="margin-left:auto;" @click="handleAdd">New</el-button>
|
||||
</span>
|
||||
</div>
|
||||
<base-table
|
||||
v-loading="loading"
|
||||
:columns="setting_cols"
|
||||
:list="list"
|
||||
:search-data="searchData"
|
||||
:total="total"
|
||||
@getList="getList"
|
||||
@edit="handleEdit"
|
||||
@delete="handleDelete"
|
||||
@sortByColumn="sortByColumn"
|
||||
>
|
||||
<!-- 选择自定义slot -->
|
||||
<template slot="modalitySlot" slot-scope="{scope}">
|
||||
{{ scope.row.ModalityList && scope.row.ModalityList.length>0?scope.row.ModalityList.join(', '):'' }}
|
||||
</template>
|
||||
</base-table>
|
||||
<setting-form v-if="setting_model.visible" :data="rowData" @close="closeModel" />
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { getQATemplateItemList, deleteQATemplateItem } from '@/api/dictionary'
|
||||
import { getBasicDataSelects } from '@/api/dictionary/dictionary'
|
||||
import { setting_cols, setting_form, setting_handle, setting_model } from './template'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SearchForm from '@/components/BaseForm/search-form'
|
||||
import BaseTable from '@/components/BaseTable'
|
||||
import SettingForm from './components/SettingForm.vue'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
ModalityId: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'TemplateSettings',
|
||||
components: { BoxContent, SearchForm, BaseTable, SettingForm },
|
||||
data() {
|
||||
return {
|
||||
setting_cols,
|
||||
setting_form,
|
||||
setting_handle,
|
||||
setting_model,
|
||||
list: [],
|
||||
loading: false,
|
||||
total: 0,
|
||||
searchData: searchDataDefault(),
|
||||
rowData: {},
|
||||
readingType: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
this.getInfo()
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.loading = true
|
||||
getQATemplateItemList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
findItemIndex(key) {
|
||||
return this.setting_form.findIndex(value => value.prop && value.prop === key
|
||||
)
|
||||
},
|
||||
async getInfo() {
|
||||
await this.getDicData()
|
||||
if (this.readingType.length > 0) {
|
||||
const index = this.findItemIndex('ModalityId')
|
||||
this.$set(this.setting_form[index], 'options', this.readingType)
|
||||
}
|
||||
},
|
||||
getDicData() {
|
||||
getBasicDataSelects(['ReadingType']).then(res => {
|
||||
const { ReadingType } = { ...res.Result }
|
||||
this.readingType = ReadingType || {}
|
||||
}).catch(() => {})
|
||||
},
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.setting_model.title = 'Add'
|
||||
this.setting_model.visible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.setting_model.title = 'Add'
|
||||
this.setting_model.visible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteQATemplateItem(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
sortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
closeModel() {
|
||||
this.setting_model.visible = false
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.template-setting{
|
||||
height: 100%;
|
||||
.el-header{
|
||||
.filter-container{
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
span{
|
||||
font-size:13px;
|
||||
margin-right:5px;
|
||||
}
|
||||
.mr{
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-main{
|
||||
height:calc(100% - 40px);
|
||||
padding: 0 20px;
|
||||
.data-table{
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.el-footer{
|
||||
padding: 0 20px;
|
||||
}
|
||||
.el-dialog__header{
|
||||
padding:10px;
|
||||
}
|
||||
.el-dialog__body{
|
||||
padding:10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,162 +1,161 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
Add
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="编号"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="场景类型"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneConfigForm :parent-id="parentId" :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getChildList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SceneConfigForm from './SceneConfigForm'
|
||||
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SceneConfigForm },
|
||||
props: {
|
||||
parentId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
list: [],
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getChildList(this.parentId).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
Add
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="编号"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="场景类型"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneConfigForm :parent-id="parentId" :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getChildList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SceneConfigForm from './SceneConfigForm'
|
||||
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SceneConfigForm },
|
||||
props: {
|
||||
parentId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
list: [],
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getChildList(this.parentId).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,229 +1,228 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="编号:">
|
||||
<el-input v-model="searchData.Code" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模板:">
|
||||
<el-input v-model="searchData.Name" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" @click="handleSearch">Search</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
New
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="Code"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="模板"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleConfig(scope.row)"
|
||||
>
|
||||
场景配置
|
||||
</el-button>
|
||||
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
|
||||
<!-- 新增、编辑 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SignTemplateForm :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="configVisible"
|
||||
:visible.sync="configVisible"
|
||||
title="场景配置"
|
||||
:fullscreen="true"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneList :parent-id="rowData.Id" @closeDialog="closeDialog" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getSystemBasicDataList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SignTemplateForm from './components/SignTemplateForm'
|
||||
import SceneList from './components/SceneList'
|
||||
import Pagination from '@/components/Pagination'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Code: '',
|
||||
Name: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SignTemplateForm, Pagination, SceneList },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
loading: false,
|
||||
list: [],
|
||||
total: 0,
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false,
|
||||
configVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getSystemBasicDataList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 场景配置
|
||||
handleConfig(row) {
|
||||
this.rowData = { ...row }
|
||||
this.configVisible = true
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
// 排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<box-content>
|
||||
<!-- 搜索框 -->
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="mini" class="base-search-form">
|
||||
<el-form-item label="编号:">
|
||||
<el-input v-model="searchData.Code" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模板:">
|
||||
<el-input v-model="searchData.Name" style="width:100px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" @click="handleSearch">Search</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>
|
||||
New
|
||||
</el-button>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- 受试者列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:45}"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width:100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
label="Code"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
label="模板"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Value"
|
||||
label="签名内容(EN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ValueCN"
|
||||
label="签名内容(CN)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
label="更新时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
label="创建时间"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column label="Action" width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
Edit
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleConfig(scope.row)"
|
||||
>
|
||||
场景配置
|
||||
</el-button>
|
||||
|
||||
<el-button type="text" @click="handleDelete(scope.row)">Delete</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
|
||||
<!-- 新增、编辑 -->
|
||||
<el-dialog
|
||||
v-if="editVisible"
|
||||
:visible.sync="editVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
width="700px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SignTemplateForm :data="rowData" @closeDialog="closeDialog" @getList="getList" />
|
||||
</el-dialog>
|
||||
|
||||
<!-- 场景配置 -->
|
||||
<el-dialog
|
||||
v-if="configVisible"
|
||||
:visible.sync="configVisible"
|
||||
title="场景配置"
|
||||
:fullscreen="true"
|
||||
append-to-body
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SceneList :parent-id="rowData.Id" @closeDialog="closeDialog" />
|
||||
</el-dialog>
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
import { getSystemBasicDataList, deleteSystemBasicData } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import SignTemplateForm from './components/SignTemplateForm'
|
||||
import SceneList from './components/SceneList'
|
||||
import Pagination from '@/components/Pagination'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Code: '',
|
||||
Name: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'SignTemplate',
|
||||
components: { BoxContent, SignTemplateForm, Pagination, SceneList },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
loading: false,
|
||||
list: [],
|
||||
total: 0,
|
||||
rowData: {},
|
||||
title: '',
|
||||
editVisible: false,
|
||||
configVisible: false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
getSystemBasicDataList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.title = 'Add'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = { ...row }
|
||||
this.title = 'Edit'
|
||||
this.editVisible = true
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteSystemBasicData(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 场景配置
|
||||
handleConfig(row) {
|
||||
this.rowData = { ...row }
|
||||
this.configVisible = true
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
},
|
||||
// 排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
// 关闭新增、编辑框
|
||||
closeDialog() {
|
||||
this.editVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<!-- 首次登录修改密码 -->
|
||||
{{ $t('recompose:title:init') }}
|
||||
</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-input v-model="password.Email" disabled />
|
||||
|
|
|
@ -1,242 +1,241 @@
|
|||
<template>
|
||||
<div class="app-container adjustment-container data-list">
|
||||
<div class="filter-container">
|
||||
<el-input v-model="listQuery.Reviewer" style="width:220px" size="small" placeholder="Reviewer ID" class="mr" />
|
||||
<el-date-picker
|
||||
v-model="listQuery.BeginMonth"
|
||||
size="small"
|
||||
placeholder="Beginning date"
|
||||
type="month"
|
||||
value-format="yyyy-MM"
|
||||
disabled
|
||||
class="mr"
|
||||
/>
|
||||
<el-button size="small" type="text" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" size="small" @click="handleSearch">Search</el-button>
|
||||
<el-button style="margin-left:auto" type="primary" size="small" @click="handleNew">New</el-button>
|
||||
</div>
|
||||
<div class="data-table">
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
stripe
|
||||
:data="list"
|
||||
height="100%"
|
||||
size="small"
|
||||
@sort-change="sortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
prop="LastName"
|
||||
label="Name"
|
||||
min-width="100"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">{{ scope.row.LastName + ' / ' + scope.row.FirstName }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ChineseName"
|
||||
label="Name CN"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ReviewerCode"
|
||||
label="Reviewer ID"
|
||||
min-width="110"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="AdjustPaymentUSD"
|
||||
label="Amount($)"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">{{ scope.row.AdjustPaymentUSD | rounding }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="AdjustPaymentCNY"
|
||||
label="Amount(¥)"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.AdjustPaymentCNY | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="Note" label="Note" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
prop="YearMonth"
|
||||
label="Adjust Month"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="Action">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" :disabled="scope.row.IsLock" @click="handleEdit(scope.row)">Edit</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
:disabled="scope.row.IsLock"
|
||||
@click="handleDelete(scope.row)"
|
||||
>Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
</div>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="600px"
|
||||
>
|
||||
<adjustment-form
|
||||
:key="timer"
|
||||
:row="row"
|
||||
:date="date"
|
||||
:exchange-rate="exchangeRate"
|
||||
@closeDialog="closeDialog"
|
||||
@getList="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import AdjustmentForm from './components/AdjustmentForm'
|
||||
import { getPaymentAdjustmentList, deletePaymentAdjustment } from '@/api/financials'
|
||||
import { FormatTime } from '@/utils/formatter'
|
||||
export default {
|
||||
filters: {
|
||||
rounding(value) {
|
||||
return value ? Number(value).toFixed(2) : value
|
||||
}
|
||||
},
|
||||
components: { Pagination, AdjustmentForm },
|
||||
data() {
|
||||
return {
|
||||
listQuery: {
|
||||
TrialCode: '',
|
||||
Reviewer: '',
|
||||
BeginMonth: '',
|
||||
EndMonth: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20,
|
||||
Asc: false,
|
||||
SortField: ''
|
||||
},
|
||||
listLoading: false,
|
||||
list: [],
|
||||
total: 0,
|
||||
exchangeRate: '',
|
||||
date: '',
|
||||
timer: '',
|
||||
dialogVisible: false,
|
||||
title: '',
|
||||
row: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.date = this.$router.currentRoute.query.date
|
||||
this.listQuery.BeginMonth = this.date
|
||||
this.listQuery.EndMonth = this.date
|
||||
// this.exchangeRate = this.$router.currentRoute.query.exchangeRate ? parseInt(this.$router.currentRoute.query.exchangeRate) : 0
|
||||
this.exchangeRate = this.$router.currentRoute.query.exchangeRate ? this.$router.currentRoute.query.exchangeRate : 0
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
getPaymentAdjustmentList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
})
|
||||
},
|
||||
handleNew() {
|
||||
this.title = 'New'
|
||||
this.row = {}
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.title = 'Edit'
|
||||
this.row = JSON.parse(JSON.stringify(row))
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deletePaymentAdjustment(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.indexOf(row), 1)
|
||||
this.total = this.total - 1
|
||||
this.$message.success('Deleted successfully !')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.listQuery.Reviewer = ''
|
||||
this.getList()
|
||||
},
|
||||
sortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.listQuery.Asc = true
|
||||
} else {
|
||||
this.listQuery.Asc = false
|
||||
}
|
||||
this.listQuery.SortField = column.prop
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
closeDialog() {
|
||||
this.dialogVisible = false
|
||||
},
|
||||
adjustMonthFormatter(row) {
|
||||
if (row.AdjustedYearMonth) {
|
||||
const date = new Date(row.AdjustedYearMonth)
|
||||
return FormatTime(date, 'yyyy-MM')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.adjustment-container{
|
||||
|
||||
.filter-container{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.mr{
|
||||
margin-right:5px;
|
||||
}
|
||||
}
|
||||
.list-container{
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<template>
|
||||
<div class="app-container adjustment-container data-list">
|
||||
<div class="filter-container">
|
||||
<el-input v-model="listQuery.Reviewer" style="width:220px" size="small" placeholder="Reviewer ID" class="mr" />
|
||||
<el-date-picker
|
||||
v-model="listQuery.BeginMonth"
|
||||
size="small"
|
||||
placeholder="Beginning date"
|
||||
type="month"
|
||||
value-format="yyyy-MM"
|
||||
disabled
|
||||
class="mr"
|
||||
/>
|
||||
<el-button size="small" type="text" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" size="small" @click="handleSearch">Search</el-button>
|
||||
<el-button style="margin-left:auto" type="primary" size="small" @click="handleNew">New</el-button>
|
||||
</div>
|
||||
<div class="data-table">
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
stripe
|
||||
:data="list"
|
||||
height="100%"
|
||||
size="small"
|
||||
@sort-change="sortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column
|
||||
prop="LastName"
|
||||
label="Name"
|
||||
min-width="100"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">{{ scope.row.LastName + ' / ' + scope.row.FirstName }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ChineseName"
|
||||
label="Name CN"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ReviewerCode"
|
||||
label="Reviewer ID"
|
||||
min-width="110"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="AdjustPaymentUSD"
|
||||
label="Amount($)"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">{{ scope.row.AdjustPaymentUSD | rounding }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="AdjustPaymentCNY"
|
||||
label="Amount(¥)"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.AdjustPaymentCNY | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="Note" label="Note" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
prop="YearMonth"
|
||||
label="Adjust Month"
|
||||
min-width="120"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="Action">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" :disabled="scope.row.IsLock" @click="handleEdit(scope.row)">Edit</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
:disabled="scope.row.IsLock"
|
||||
@click="handleDelete(scope.row)"
|
||||
>Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
</div>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
width="600px"
|
||||
>
|
||||
<adjustment-form
|
||||
:key="timer"
|
||||
:row="row"
|
||||
:date="date"
|
||||
:exchange-rate="exchangeRate"
|
||||
@closeDialog="closeDialog"
|
||||
@getList="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import AdjustmentForm from './components/AdjustmentForm'
|
||||
import { getPaymentAdjustmentList, deletePaymentAdjustment } from '@/api/financials'
|
||||
import { FormatTime } from '@/utils/formatter'
|
||||
export default {
|
||||
filters: {
|
||||
rounding(value) {
|
||||
return value ? Number(value).toFixed(2) : value
|
||||
}
|
||||
},
|
||||
components: { Pagination, AdjustmentForm },
|
||||
data() {
|
||||
return {
|
||||
listQuery: {
|
||||
TrialCode: '',
|
||||
Reviewer: '',
|
||||
BeginMonth: '',
|
||||
EndMonth: '',
|
||||
PageIndex: 1,
|
||||
PageSize: 20,
|
||||
Asc: false,
|
||||
SortField: ''
|
||||
},
|
||||
listLoading: false,
|
||||
list: [],
|
||||
total: 0,
|
||||
exchangeRate: '',
|
||||
date: '',
|
||||
timer: '',
|
||||
dialogVisible: false,
|
||||
title: '',
|
||||
row: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.date = this.$router.currentRoute.query.date
|
||||
this.listQuery.BeginMonth = this.date
|
||||
this.listQuery.EndMonth = this.date
|
||||
// this.exchangeRate = this.$router.currentRoute.query.exchangeRate ? parseInt(this.$router.currentRoute.query.exchangeRate) : 0
|
||||
this.exchangeRate = this.$router.currentRoute.query.exchangeRate ? this.$router.currentRoute.query.exchangeRate : 0
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
getPaymentAdjustmentList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
})
|
||||
},
|
||||
handleNew() {
|
||||
this.title = 'New'
|
||||
this.row = {}
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.title = 'Edit'
|
||||
this.row = JSON.parse(JSON.stringify(row))
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deletePaymentAdjustment(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.indexOf(row), 1)
|
||||
this.total = this.total - 1
|
||||
this.$message.success('Deleted successfully !')
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.listQuery.Reviewer = ''
|
||||
this.getList()
|
||||
},
|
||||
sortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.listQuery.Asc = true
|
||||
} else {
|
||||
this.listQuery.Asc = false
|
||||
}
|
||||
this.listQuery.SortField = column.prop
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
closeDialog() {
|
||||
this.dialogVisible = false
|
||||
},
|
||||
adjustMonthFormatter(row) {
|
||||
if (row.AdjustedYearMonth) {
|
||||
const date = new Date(row.AdjustedYearMonth)
|
||||
return FormatTime(date, 'yyyy-MM')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.adjustment-container{
|
||||
|
||||
.filter-container{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.mr{
|
||||
margin-right:5px;
|
||||
}
|
||||
}
|
||||
.list-container{
|
||||
height: calc(100% - 80px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
|
|
@ -1,198 +1,198 @@
|
|||
<template>
|
||||
<div class="app-container exchange-rate data-list">
|
||||
<div class="filter-container">
|
||||
<el-date-picker
|
||||
v-model="listQuery.SearchMonth"
|
||||
size="small"
|
||||
placeholder="Search Month"
|
||||
value-format="yyyy-MM"
|
||||
format="yyyy-MM"
|
||||
type="month"
|
||||
style="width:150px;margin-right:5px"
|
||||
:picker-options="pickerOption"
|
||||
/>
|
||||
<el-button size="small" type="text" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" size="small" @click="handleSearch">Search</el-button>
|
||||
<el-button style="margin-left:auto" type="primary" size="small" @click="handleNew">New</el-button>
|
||||
</div>
|
||||
<div class="list-container">
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
stripe
|
||||
class="table"
|
||||
height="100%"
|
||||
size="small"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
|
||||
<el-table-column prop="YearMonth" label="Month" min-width="60" show-overflow-tooltip />
|
||||
<el-table-column prop="Rate" label="Rate" min-width="60" show-overflow-tooltip />
|
||||
<el-table-column prop="UpdateTime" label="Update Time" min-width="70" show-overflow-tooltip />
|
||||
|
||||
<el-table-column fixed="right" label="Action" min-width="150">
|
||||
<template slot-scope="scope" min-width="130">
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>Edit</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleDelete(scope.row)"
|
||||
>Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
</div>
|
||||
<el-dialog
|
||||
:key="timer"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
width="500px"
|
||||
:close-on-click-modal="false"
|
||||
size="small"
|
||||
>
|
||||
<el-form ref="rateForm" label-width="150px" :rules="rules" :model="form" size="small">
|
||||
<el-form-item label="Month: " prop="YearMonth">
|
||||
<el-date-picker
|
||||
v-model="form.YearMonth"
|
||||
type="month"
|
||||
value-format="yyyy-MM"
|
||||
:disabled="form.Id !=''&& form.Id !=undefined"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Exchange Rate: " prop="Rate">
|
||||
<el-input v-model="form.Rate" type="number" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="small" @click="dialogVisible = false">Cancel</el-button>
|
||||
<el-button type="primary" :disabled="btnDisabled" size="small" @click="handleSave">Ok</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getRateList, addOrUpdateExchangeRate, deleteExchangeRate } from '@/api/financials'
|
||||
import Pagination from '@/components/Pagination'
|
||||
export default {
|
||||
name: 'ExchangeRate',
|
||||
components: { Pagination },
|
||||
data() {
|
||||
return {
|
||||
listQuery: { SearchMonth: '', PageIndex: 1, PageSize: 20 },
|
||||
list: [],
|
||||
listLoading: false,
|
||||
total: 0,
|
||||
dialogVisible: false,
|
||||
title: '',
|
||||
timer: '',
|
||||
form: {},
|
||||
rules: {
|
||||
Rate: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
YearMonth: [{ required: true, message: 'Please specify', trigger: 'blur' }]
|
||||
},
|
||||
btnDisabled: false,
|
||||
pickerOption: {
|
||||
disabledDate: time => {
|
||||
return time.getTime() > Date.now()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() { this.getList() },
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
getRateList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.listLoading = false })
|
||||
},
|
||||
handleNew() {
|
||||
this.form = {}
|
||||
this.title = 'Add'
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.title = 'Edit'
|
||||
this.form = JSON.parse(JSON.stringify(row))
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.rateForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.btnDisabled = true
|
||||
const param = {
|
||||
Rate: this.form.Rate,
|
||||
YearMonth: this.form.YearMonth
|
||||
}
|
||||
this.form.Id ? param.Id = this.form.Id : ''
|
||||
addOrUpdateExchangeRate(param).then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.getList()
|
||||
this.$message.success('Updated successfully!')
|
||||
this.dialogVisible = false
|
||||
}
|
||||
this.btnDisabled = false
|
||||
})
|
||||
.catch(() => { this.btnDisabled = false })
|
||||
}
|
||||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Yes',
|
||||
cancelButtonText: 'No'
|
||||
})
|
||||
.then(() => {
|
||||
deleteExchangeRate(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(action => {})
|
||||
},
|
||||
handleSearch() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery.SearchMonth = ''
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.exchange-rate{
|
||||
padding: 0;
|
||||
.filter-container{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.list-container{
|
||||
height: calc(100% - 70px);
|
||||
}
|
||||
.el-date-editor.el-input{
|
||||
width: 100%;
|
||||
}
|
||||
.el-date-editor.el-input__inner {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div class="app-container exchange-rate data-list">
|
||||
<div class="filter-container">
|
||||
<el-date-picker
|
||||
v-model="listQuery.SearchMonth"
|
||||
size="small"
|
||||
placeholder="Search Month"
|
||||
value-format="yyyy-MM"
|
||||
format="yyyy-MM"
|
||||
type="month"
|
||||
style="width:150px;margin-right:5px"
|
||||
:picker-options="pickerOption"
|
||||
/>
|
||||
<el-button size="small" type="text" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" size="small" @click="handleSearch">Search</el-button>
|
||||
<el-button style="margin-left:auto" type="primary" size="small" @click="handleNew">New</el-button>
|
||||
</div>
|
||||
<div class="list-container">
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
stripe
|
||||
class="table"
|
||||
height="100%"
|
||||
size="small"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
|
||||
<el-table-column prop="YearMonth" label="Month" min-width="60" show-overflow-tooltip />
|
||||
<el-table-column prop="Rate" label="Rate" min-width="60" show-overflow-tooltip />
|
||||
<el-table-column prop="UpdateTime" label="Update Time" min-width="70" show-overflow-tooltip />
|
||||
|
||||
<el-table-column fixed="right" label="Action" min-width="150">
|
||||
<template slot-scope="scope" min-width="130">
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>Edit</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleDelete(scope.row)"
|
||||
>Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="pagination">
|
||||
<pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
</div>
|
||||
<el-dialog
|
||||
:key="timer"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
width="500px"
|
||||
:close-on-click-modal="false"
|
||||
size="small"
|
||||
>
|
||||
<el-form ref="rateForm" label-width="150px" :rules="rules" :model="form" size="small">
|
||||
<el-form-item label="Month: " prop="YearMonth">
|
||||
<el-date-picker
|
||||
v-model="form.YearMonth"
|
||||
type="month"
|
||||
value-format="yyyy-MM"
|
||||
:disabled="form.Id !=''&& form.Id !=undefined"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Exchange Rate: " prop="Rate">
|
||||
<el-input v-model="form.Rate" type="number" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="small" @click="dialogVisible = false">Cancel</el-button>
|
||||
<el-button type="primary" :disabled="btnDisabled" size="small" @click="handleSave">Ok</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getRateList, addOrUpdateExchangeRate, deleteExchangeRate } from '@/api/financials'
|
||||
import Pagination from '@/components/Pagination'
|
||||
export default {
|
||||
name: 'ExchangeRate',
|
||||
components: { Pagination },
|
||||
data() {
|
||||
return {
|
||||
listQuery: { SearchMonth: '', PageIndex: 1, PageSize: 20 },
|
||||
list: [],
|
||||
listLoading: false,
|
||||
total: 0,
|
||||
dialogVisible: false,
|
||||
title: '',
|
||||
timer: '',
|
||||
form: {},
|
||||
rules: {
|
||||
Rate: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
YearMonth: [{ required: true, message: 'Please specify', trigger: 'blur' }]
|
||||
},
|
||||
btnDisabled: false,
|
||||
pickerOption: {
|
||||
disabledDate: time => {
|
||||
return time.getTime() > Date.now()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() { this.getList() },
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
getRateList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.listLoading = false })
|
||||
},
|
||||
handleNew() {
|
||||
this.form = {}
|
||||
this.title = 'Add'
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.title = 'Edit'
|
||||
this.form = JSON.parse(JSON.stringify(row))
|
||||
this.timer = new Date().getTime()
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.rateForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.btnDisabled = true
|
||||
const param = {
|
||||
Rate: this.form.Rate,
|
||||
YearMonth: this.form.YearMonth
|
||||
}
|
||||
this.form.Id ? param.Id = this.form.Id : ''
|
||||
addOrUpdateExchangeRate(param).then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.getList()
|
||||
this.$message.success('Updated successfully!')
|
||||
this.dialogVisible = false
|
||||
}
|
||||
this.btnDisabled = false
|
||||
})
|
||||
.catch(() => { this.btnDisabled = false })
|
||||
}
|
||||
})
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Yes',
|
||||
cancelButtonText: 'No'
|
||||
})
|
||||
.then(() => {
|
||||
deleteExchangeRate(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(action => {})
|
||||
},
|
||||
handleSearch() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery.SearchMonth = ''
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.exchange-rate{
|
||||
padding: 0;
|
||||
.filter-container{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.list-container{
|
||||
height: calc(100% - 70px);
|
||||
}
|
||||
.el-date-editor.el-input{
|
||||
width: 100%;
|
||||
}
|
||||
.el-date-editor.el-input__inner {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,324 +1,323 @@
|
|||
<template>
|
||||
<div class="rates-container">
|
||||
<div class="title">
|
||||
<p>Rank-Based Rates</p>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="addBtn"
|
||||
size="small"
|
||||
@click="handleAdd"
|
||||
>New</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
size="small"
|
||||
:data="list"
|
||||
max-height="300"
|
||||
stripe
|
||||
class="table"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="RankName" label="Rank" show-overflow-tooltip min-width="100" />
|
||||
<el-table-column prop="Training" label="Training ($)" min-width="90" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Training | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="RefresherTraining" label="Refresher Training ($)" min-width="130" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.RefresherTraining | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Timepoint" align="center">
|
||||
<el-table-column
|
||||
prop="Timepoint"
|
||||
label="Regular ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Timepoint | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="TimepointIn48H"
|
||||
label="48-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.TimepointIn48H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="TimepointIn24H"
|
||||
label="24-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.TimepointIn24H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="Adjudication" align="center">
|
||||
<el-table-column
|
||||
prop="Adjudication"
|
||||
label="Regular ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Adjudication | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="AdjudicationIn48H"
|
||||
label="48-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.AdjudicationIn48H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="AdjudicationIn24H"
|
||||
label="24-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.AdjudicationIn24H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column prop="Global" label="Global ($)" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Global | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="Downtime" label="Downtime ($)" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Downtime | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
label="Action"
|
||||
min-width="100"
|
||||
>
|
||||
<template slot-scope="scope" min-width="130">
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>Edit</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleDelete(scope.row)"
|
||||
>Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination style="text-align:right;margin-top:5px;" :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
|
||||
<el-dialog
|
||||
:key="timer"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
width="500px"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<el-form ref="baseRateForm" label-width="190px" :rules="rules" :model="baseRateForm" size="small">
|
||||
<el-form-item label="Rank: " prop="RankName">
|
||||
<el-input v-model="baseRateForm.RankName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Training ($): " prop="Training">
|
||||
<!-- <el-input v-model="baseRateForm.Training" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.Training" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Refresher Training ($): " prop="RefresherTraining">
|
||||
<el-input-number v-model="baseRateForm.RefresherTraining" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Timepoint ($): " prop="Timepoint">
|
||||
<!-- <el-input v-model="baseRateForm.Timepoint" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.Timepoint" style="width:100%;" :min="0" @input="timepointChange" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="Timepoint 48H ($): " prop="TimepointIn48H">
|
||||
<!-- <el-input v-model="baseRateForm.TimepointIn48H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.TimepointIn48H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Timepoint 24H ($): " prop="TimepointIn24H">
|
||||
<!-- <el-input v-model="baseRateForm.TimepointIn24H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.TimepointIn24H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Adjudication ($): " prop="Adjudication">
|
||||
<!-- <el-input v-model="baseRateForm.Adjudication" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.Adjudication" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="Adjudication 48H ($): " prop="AdjudicationIn48H">
|
||||
<!-- <el-input v-model="baseRateForm.AdjudicationIn48H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.AdjudicationIn48H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Adjudication 24H ($): " prop="AdjudicationIn24H">
|
||||
<!-- <el-input v-model="baseRateForm.AdjudicationIn24H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.AdjudicationIn24H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Global ($): " prop="Global">
|
||||
<el-input v-model="baseRateForm.Global" disabled type="number" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="Downtime ($): " prop="Downtime">
|
||||
<el-input-number v-model="baseRateForm.Downtime" style="width:100%;" :min="0" />
|
||||
<!-- <el-input v-model="baseRateForm.Downtime" type="number" /> -->
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="small" @click="dialogVisible = false">Cancel</el-button>
|
||||
<el-button type="primary" :disabled="btnDisabled" size="small" @click="handleSave">Ok</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import { getRankPriceList, addOrUpdateRankPrice, deleteRankPrice } from '@/api/financials'
|
||||
const getListQueryDefault = () => {
|
||||
return {
|
||||
PageSize: 20,
|
||||
PageIndex: 1,
|
||||
Asc: false,
|
||||
SortField: ''
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'RankBasedRates',
|
||||
components: { Pagination },
|
||||
filters: {
|
||||
rounding(value) {
|
||||
return value ? Number(value).toFixed(2) : value
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listQuery: getListQueryDefault(),
|
||||
list: [],
|
||||
listLoading: false,
|
||||
total: 0,
|
||||
baseRateForm: {},
|
||||
dialogVisible: false,
|
||||
btnDisabled: false,
|
||||
title: '',
|
||||
timer: '',
|
||||
rules: {
|
||||
RankName: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' },
|
||||
{ max: 50, message: 'The maximum length is 50' }
|
||||
],
|
||||
Training: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Timepoint: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
TimepointIn24H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
TimepointIn48H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Adjudication: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
AdjudicationIn24H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
AdjudicationIn48H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Global: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Downtime: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
RefresherTraining: [{ required: true, message: 'Please specify', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() { this.getList() },
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
getRankPriceList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.listLoading = false })
|
||||
},
|
||||
handleAdd() {
|
||||
this.baseRateForm = {}
|
||||
this.timer = new Date().getTime()
|
||||
this.title = 'Add'
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.title = 'Edit'
|
||||
this.timer = new Date().getTime()
|
||||
this.baseRateForm = JSON.parse(JSON.stringify(row))
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
deleteRankPrice(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.baseRateForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.btnDisabled = true
|
||||
addOrUpdateRankPrice(this.baseRateForm).then(res => {
|
||||
this.getList()
|
||||
this.btnDisabled = false
|
||||
this.$message.success('Saved successfully!')
|
||||
this.dialogVisible = false
|
||||
}).catch(() => { this.btnDisabled = false })
|
||||
}
|
||||
})
|
||||
},
|
||||
timepointChange() {
|
||||
this.baseRateForm.Global = this.baseRateForm.Timepoint / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.rates-container {
|
||||
.title {
|
||||
position: relative;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
background: #e4ebf1;
|
||||
border-left: 3px solid #0fc8e0;
|
||||
padding-left: 5px;
|
||||
margin-bottom:10px;
|
||||
font-size: 13px;
|
||||
p{
|
||||
margin: 0;
|
||||
}
|
||||
.addBtn {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 50%;
|
||||
height: 30px;
|
||||
margin-top: -15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<template>
|
||||
<div class="rates-container">
|
||||
<div class="title">
|
||||
<p>Rank-Based Rates</p>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="addBtn"
|
||||
size="small"
|
||||
@click="handleAdd"
|
||||
>New</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
size="small"
|
||||
:data="list"
|
||||
max-height="300"
|
||||
stripe
|
||||
class="table"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="RankName" label="Rank" show-overflow-tooltip min-width="100" />
|
||||
<el-table-column prop="Training" label="Training ($)" min-width="90" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Training | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="RefresherTraining" label="Refresher Training ($)" min-width="130" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.RefresherTraining | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Timepoint" align="center">
|
||||
<el-table-column
|
||||
prop="Timepoint"
|
||||
label="Regular ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Timepoint | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="TimepointIn48H"
|
||||
label="48-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.TimepointIn48H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="TimepointIn24H"
|
||||
label="24-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.TimepointIn24H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="Adjudication" align="center">
|
||||
<el-table-column
|
||||
prop="Adjudication"
|
||||
label="Regular ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Adjudication | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="AdjudicationIn48H"
|
||||
label="48-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.AdjudicationIn48H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="AdjudicationIn24H"
|
||||
label="24-hour ($)"
|
||||
min-width="90"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.AdjudicationIn24H | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column prop="Global" label="Global ($)" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Global | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="Downtime" label="Downtime ($)" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.Downtime | rounding }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
label="Action"
|
||||
min-width="100"
|
||||
>
|
||||
<template slot-scope="scope" min-width="130">
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleEdit(scope.row)"
|
||||
>Edit</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="text"
|
||||
@click="handleDelete(scope.row)"
|
||||
>Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination style="text-align:right;margin-top:5px;" :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
|
||||
<el-dialog
|
||||
:key="timer"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
width="500px"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<el-form ref="baseRateForm" label-width="190px" :rules="rules" :model="baseRateForm" size="small">
|
||||
<el-form-item label="Rank: " prop="RankName">
|
||||
<el-input v-model="baseRateForm.RankName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Training ($): " prop="Training">
|
||||
<!-- <el-input v-model="baseRateForm.Training" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.Training" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Refresher Training ($): " prop="RefresherTraining">
|
||||
<el-input-number v-model="baseRateForm.RefresherTraining" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Timepoint ($): " prop="Timepoint">
|
||||
<!-- <el-input v-model="baseRateForm.Timepoint" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.Timepoint" style="width:100%;" :min="0" @input="timepointChange" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="Timepoint 48H ($): " prop="TimepointIn48H">
|
||||
<!-- <el-input v-model="baseRateForm.TimepointIn48H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.TimepointIn48H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Timepoint 24H ($): " prop="TimepointIn24H">
|
||||
<!-- <el-input v-model="baseRateForm.TimepointIn24H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.TimepointIn24H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Adjudication ($): " prop="Adjudication">
|
||||
<!-- <el-input v-model="baseRateForm.Adjudication" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.Adjudication" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="Adjudication 48H ($): " prop="AdjudicationIn48H">
|
||||
<!-- <el-input v-model="baseRateForm.AdjudicationIn48H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.AdjudicationIn48H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Adjudication 24H ($): " prop="AdjudicationIn24H">
|
||||
<!-- <el-input v-model="baseRateForm.AdjudicationIn24H" type="number" /> -->
|
||||
<el-input-number v-model="baseRateForm.AdjudicationIn24H" style="width:100%;" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Global ($): " prop="Global">
|
||||
<el-input v-model="baseRateForm.Global" disabled type="number" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="Downtime ($): " prop="Downtime">
|
||||
<el-input-number v-model="baseRateForm.Downtime" style="width:100%;" :min="0" />
|
||||
<!-- <el-input v-model="baseRateForm.Downtime" type="number" /> -->
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="small" @click="dialogVisible = false">Cancel</el-button>
|
||||
<el-button type="primary" :disabled="btnDisabled" size="small" @click="handleSave">Ok</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import { getRankPriceList, addOrUpdateRankPrice, deleteRankPrice } from '@/api/financials'
|
||||
const getListQueryDefault = () => {
|
||||
return {
|
||||
PageSize: 20,
|
||||
PageIndex: 1,
|
||||
Asc: false,
|
||||
SortField: ''
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'RankBasedRates',
|
||||
components: { Pagination },
|
||||
filters: {
|
||||
rounding(value) {
|
||||
return value ? Number(value).toFixed(2) : value
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
listQuery: getListQueryDefault(),
|
||||
list: [],
|
||||
listLoading: false,
|
||||
total: 0,
|
||||
baseRateForm: {},
|
||||
dialogVisible: false,
|
||||
btnDisabled: false,
|
||||
title: '',
|
||||
timer: '',
|
||||
rules: {
|
||||
RankName: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' },
|
||||
{ max: 50, message: 'The maximum length is 50' }
|
||||
],
|
||||
Training: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Timepoint: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
TimepointIn24H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
TimepointIn48H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Adjudication: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
AdjudicationIn24H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
AdjudicationIn48H: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Global: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
Downtime: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
RefresherTraining: [{ required: true, message: 'Please specify', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() { this.getList() },
|
||||
methods: {
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
getRankPriceList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.listLoading = false })
|
||||
},
|
||||
handleAdd() {
|
||||
this.baseRateForm = {}
|
||||
this.timer = new Date().getTime()
|
||||
this.title = 'Add'
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.title = 'Edit'
|
||||
this.timer = new Date().getTime()
|
||||
this.baseRateForm = JSON.parse(JSON.stringify(row))
|
||||
this.dialogVisible = true
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteRankPrice(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
})
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.baseRateForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.btnDisabled = true
|
||||
addOrUpdateRankPrice(this.baseRateForm).then(res => {
|
||||
this.getList()
|
||||
this.btnDisabled = false
|
||||
this.$message.success('Saved successfully!')
|
||||
this.dialogVisible = false
|
||||
}).catch(() => { this.btnDisabled = false })
|
||||
}
|
||||
})
|
||||
},
|
||||
timepointChange() {
|
||||
this.baseRateForm.Global = this.baseRateForm.Timepoint / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.rates-container {
|
||||
.title {
|
||||
position: relative;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
background: #e4ebf1;
|
||||
border-left: 3px solid #0fc8e0;
|
||||
padding-left: 5px;
|
||||
margin-bottom:10px;
|
||||
font-size: 13px;
|
||||
p{
|
||||
margin: 0;
|
||||
}
|
||||
.addBtn {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 50%;
|
||||
height: 30px;
|
||||
margin-top: -15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -340,11 +340,10 @@ export default {
|
|||
},
|
||||
handleView(row) { row.SowFullPath ? window.open(row.SowFullPath, '_blank') : '' },
|
||||
handleDeleteSOW(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'OK',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
const param = { SowPath: row.SowPath, TrialId: row.TrialId }
|
||||
|
|
|
@ -92,7 +92,7 @@ export default {
|
|||
if (res.IsSuccess) {
|
||||
this.fileList = []
|
||||
this.$message({
|
||||
message: 'Deleted successfully!',
|
||||
message: this.$t('common:message:deletedSuccessfully'),
|
||||
type: 'success'
|
||||
})
|
||||
this.$emit('getFileList', this.fileList)
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
ref="resetForm"
|
||||
v-loading="formLoading"
|
||||
:model="form"
|
||||
label-width="150px"
|
||||
label-width="200px"
|
||||
:rules="rules"
|
||||
class="demo-ruleForm"
|
||||
size="small"
|
||||
|
@ -31,7 +31,7 @@
|
|||
<el-form-item :label="$t('trials:researchForm:form:verifyCode')" required>
|
||||
<el-col :span="18">
|
||||
<el-form-item prop="VerificationCode">
|
||||
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
||||
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" style="text-align:right;">
|
||||
|
@ -122,17 +122,17 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
var validatePass = (rule, value, callback) => {
|
||||
if (value === '') {
|
||||
// 请输入密码
|
||||
callback(new Error(this.$t('passwordReset:formRule:password')))
|
||||
} else {
|
||||
if (this.CheckPass !== '') {
|
||||
this.$refs.resetForm.validateField('CheckPass')
|
||||
}
|
||||
callback()
|
||||
}
|
||||
}
|
||||
// var validatePass = (rule, value, callback) => {
|
||||
// if (value === '') {
|
||||
// // 请输入密码
|
||||
// callback(new Error(this.$t('passwordReset:formRule:password')))
|
||||
// } else {
|
||||
// if (this.CheckPass !== '') {
|
||||
// this.$refs.resetForm.validateField('CheckPass')
|
||||
// }
|
||||
// callback()
|
||||
// }
|
||||
// }
|
||||
var validatePass2 = (rule, value, callback) => {
|
||||
if (value === '' || value === undefined) {
|
||||
// 请再次输入密码
|
||||
|
@ -205,6 +205,8 @@ export default {
|
|||
verifyAnonymousVerifyCode(this.form.EmailOrPhone, this.form.VerificationCode).then(res => {
|
||||
this.formLoading = false
|
||||
this.users = res.Result
|
||||
// 验证成功
|
||||
this.$message.success(this.$t('passwordReset:message:verifiedSuccessfully'))
|
||||
}).catch(() => { this.formLoading = false })
|
||||
},
|
||||
handleEmailChange() {
|
||||
|
@ -268,7 +270,7 @@ export default {
|
|||
/*/deep/ .is-error{*/
|
||||
/* margin-bottom: 40px;*/
|
||||
/*}*/
|
||||
/deep/ .is-error.my_new_pwd{
|
||||
.is-error.my_new_pwd{
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<div class="login-l">
|
||||
<div class="login-logo">
|
||||
<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 class="login-image">
|
||||
<img src="@/assets/login-bg.png">
|
||||
|
@ -78,7 +78,7 @@
|
|||
type="primary"
|
||||
style="width:100%;margin-bottom:10px;"
|
||||
size="medium"
|
||||
@click.native.prevent="loginIn"
|
||||
@click.native.prevent="handleLogin"
|
||||
>
|
||||
{{ $t('login:button:login') }}
|
||||
</el-button>
|
||||
|
@ -109,7 +109,7 @@
|
|||
<span style="color:#428bca">关于</span>
|
||||
</a>
|
||||
</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
|
||||
v-if="aboutVisible"
|
||||
:visible.sync="aboutVisible"
|
||||
|
@ -148,7 +148,7 @@ import { mapGetters, mapMutations } from 'vuex'
|
|||
import TopLang from './topLang'
|
||||
// import NoticeMarquee from '../trials/trials-layout/components/noticeMarquee'
|
||||
import Vcode from 'vue-puzzle-vcode'
|
||||
import Img1 from '@/assets/pic-1.png'
|
||||
import Img1 from '@/assets/pic-2.png'
|
||||
export default {
|
||||
name: 'Login',
|
||||
components: { TopLang, Vcode },
|
||||
|
@ -180,6 +180,7 @@ export default {
|
|||
loginType: null,
|
||||
location: null,
|
||||
isShow: false,
|
||||
showCode: false,
|
||||
Img1
|
||||
}
|
||||
},
|
||||
|
@ -230,7 +231,11 @@ export default {
|
|||
this.loginType = this.$route.query.loginType
|
||||
this.$refs.loginForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.isShow = true
|
||||
if (this.showCode) {
|
||||
this.isShow = true
|
||||
} else {
|
||||
this.onSuccess()
|
||||
}
|
||||
} else {
|
||||
// console.log('error submit!!')
|
||||
return false
|
||||
|
@ -239,6 +244,7 @@ export default {
|
|||
},
|
||||
loginIn() {
|
||||
this.loading = true
|
||||
this.showCode = false
|
||||
this.$store.dispatch('user/login', this.loginForm).then((res) => {
|
||||
if (!res) {
|
||||
// 当前用户为首次登录,请先修改密码之后再次登录
|
||||
|
@ -273,6 +279,7 @@ export default {
|
|||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.showCode = true
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
v-if="(state === 0 && userTypeEnumInt === 0)"
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleSubmit"
|
||||
@click="handleSubmit('submit')"
|
||||
>
|
||||
{{ $t('trials:researchForm:button:submit') }}
|
||||
</el-button>
|
||||
|
@ -23,7 +23,7 @@
|
|||
v-if="(state === 1 && hasPermi(['role:spm','role:cpm']))"
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleSubmit"
|
||||
@click="handleSubmit('approve')"
|
||||
>
|
||||
{{ $t('trials:researchForm:button:auditPasses') }}
|
||||
</el-button>
|
||||
|
@ -243,35 +243,22 @@ export default {
|
|||
}).catch(() => { this.loading = false })
|
||||
},
|
||||
// 提交
|
||||
handleSubmit() {
|
||||
handleSubmit(type) {
|
||||
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) {
|
||||
// // 提交时校验必须crc角色和影像负责人角色至少有1个
|
||||
// this.$alert(this.$t('trials:researchForm:message:saveWarning1'))
|
||||
// return
|
||||
// }
|
||||
|
||||
this.loading = true
|
||||
this.$refs['baseResearchInfo'].handleSave(true).then(res => {
|
||||
this.loading = false
|
||||
if (res) {
|
||||
this.submit()
|
||||
this.submit(type)
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
} else {
|
||||
this.submit()
|
||||
this.submit(type)
|
||||
}
|
||||
},
|
||||
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',
|
||||
distinguishCancelAndClose: true
|
||||
}).then(() => {
|
||||
|
@ -287,7 +274,12 @@ export default {
|
|||
if (this.userTypeEnumInt !== 0) {
|
||||
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(() => {})
|
||||
|
@ -320,7 +312,7 @@ export default {
|
|||
if (res.IsSuccess) {
|
||||
this.initPage()
|
||||
this.$emit('refreshPage')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.$message.success(this.$t('common:message:approvedSuccessfully'))
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
|
|
|
@ -53,13 +53,13 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:WeChat')">
|
||||
<span>{{ basicInfo.WeChat }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="6">-->
|
||||
<!-- <el-form-item :label="$t('resumeInfo:label:WeChat')">-->
|
||||
<!-- <span>{{ basicInfo.WeChat }}</span>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -14,27 +14,27 @@
|
|||
<span v-else>{{ employment.RankCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Physician')">
|
||||
<span v-if="isEnglish">{{ employment.Physician }}</span>
|
||||
<span v-else>{{ employment.PhysicianCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="6">-->
|
||||
<!-- <el-form-item :label="$t('resumeInfo:label:Physician')">-->
|
||||
<!-- <span v-if="isEnglish">{{ employment.Physician }}</span>-->
|
||||
<!-- <span v-else>{{ employment.PhysicianCN }}</span>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Position')">
|
||||
<span v-if="isEnglish">{{ employment.Position }}</span>
|
||||
<span v-else>{{ employment.PositionCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Hospital')">
|
||||
<span v-if="isEnglish">{{ employment.HospitalName }}</span>
|
||||
<span v-else>{{ employment.HospitalNameCN }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item :label="$t('resumeInfo:label:Affiliated')">
|
||||
<span v-if="isEnglish">{{ employment.UniversityAffiliated }}</span>
|
||||
|
|
|
@ -189,8 +189,8 @@ export default {
|
|||
this.pageLoading = false
|
||||
if (res.IsSuccess) {
|
||||
if (res.Result) {
|
||||
this.holiday = res.Result.InHoliday ? 'Yes' : 'No'
|
||||
this.doctorInfo = res.Result
|
||||
this.holiday = res.Result.InHoliday ? 'Yes' : 'No'
|
||||
!this.doctorInfo.ResearchPublicationView ? this.doctorInfo.ResearchPublicationView = {} : '';
|
||||
this.title = `${this.doctorInfo.BasicInfoView.FirstName} ${this.doctorInfo.BasicInfoView.LastName}${this.$t('resumeInfo:title:Details')}`
|
||||
this.htmlTitle = this.title
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
<div class="box-wrapper">
|
||||
<h2 style="text-align:center;">
|
||||
<!-- 中心调研表 -->
|
||||
独立阅片人信息填写
|
||||
<!-- 独立阅片人信息填写 -->
|
||||
{{$t("trials:researchForm:form:title")}}
|
||||
</h2>
|
||||
<el-card shadow="hover" style="padding-top: 40px">
|
||||
<el-form
|
||||
|
@ -58,6 +59,7 @@ import { sendVerifyCode, verifySendCode, getTrialSurveyInitInfo } from '@/api/re
|
|||
import { verifyEmialGetDoctorInfo, sendEmialVerifyCode } from '@/api/reviewers'
|
||||
import { login, getUserMenuTree, getUserPermissions } from '@/api/user'
|
||||
import store from '@/store'
|
||||
import { mapMutations } from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
var checkPhone = (rule, value, callback) => {
|
||||
|
@ -149,9 +151,14 @@ export default {
|
|||
isHaveSiteSurveyRecord: false
|
||||
}
|
||||
},
|
||||
created(){
|
||||
this.$i18n.locale = this.$route.query.lang
|
||||
this.setLanguage(this.$route.query.lang)
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
// 提交
|
||||
onSubmit() {
|
||||
this.$refs['resetForm'].validate(valid => {
|
||||
|
@ -176,7 +183,7 @@ export default {
|
|||
store.dispatch('user/setTree', menuTree.Result)
|
||||
store.dispatch('user/setPermissions', permissions.Result)
|
||||
// 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(() => {
|
||||
this.btnLoading = false
|
||||
this.sendDisabled = false
|
||||
|
|
|
@ -1,32 +1,33 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="Education & Training" name="EducationTraining">
|
||||
<!--Education & Training-->
|
||||
<el-tab-pane :label="$t('system:reviewer:tab:Education&Training')" name="EducationTraining">
|
||||
<education-training v-if="load.EducationTraining" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
@ -44,6 +45,7 @@ import Resumes from './components/Resumes'
|
|||
import Agreements from './components/Agreements'
|
||||
import Setting from './components/Setting'
|
||||
import { changeURLStatic, getQueryString } from '@/utils/history.js'
|
||||
import { mapMutations } from 'vuex'
|
||||
export default {
|
||||
components: {
|
||||
BasicInfo,
|
||||
|
@ -74,6 +76,10 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
created(){
|
||||
this.$i18n.locale = this.$route.query.lang
|
||||
this.setLanguage(this.$route.query.lang)
|
||||
},
|
||||
mounted() {
|
||||
this.active = this.$route.query.tabActive
|
||||
if (this.$route.query.Id === '' && this.active !== 'BasicInfo') {
|
||||
|
@ -82,13 +88,14 @@ export default {
|
|||
this.load[this.active] = true
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
clickTab(tab, event) {
|
||||
if (this.load[tab.name] === false) {
|
||||
this.load[tab.name] = true
|
||||
}
|
||||
changeURLStatic('tabActive', tab.name)
|
||||
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() {
|
||||
const id = getQueryString('Id')
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
<template>
|
||||
<div v-loading="loading" class="resumes-container">
|
||||
<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">
|
||||
<upload-files ref="uploadAgreement" :disabled="$route.query.ReviewStatus === '1'" :doctor-id="doctorId" type="Consultant Agreement" accept=".pdf" @getFileList="getFileList" />
|
||||
</div>
|
||||
<p>(must be in pdf format)</p>
|
||||
<p>{{ $t('system:GcpCertificate:tap:must') }}</p>
|
||||
</div>
|
||||
<div v-if="!$route.query.ReviewStatus">
|
||||
<el-table :data="agreementList" size="small">
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="FileName" label="Consultant Agreement" width="300" />
|
||||
<el-table-column prop="CreateTime" label="Upload Time" width="150" />
|
||||
<el-table-column label="Action" width="400">
|
||||
<el-table-column prop="FileName" :label="$t('system:Agreements:table:Consultant Agreement')" width="300" />
|
||||
<el-table-column prop="CreateTime" :label="$t('system:Agreements:table:Upload Time')" width="150" />
|
||||
<el-table-column :label="$t('common:action:action')" width="400">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="handlePreview(scope.row)">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" @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)">{{$t('common:button:delete')}}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -24,21 +24,22 @@
|
|||
<span style="margin-right: 20px">
|
||||
{{$t('trials:enrolledReviews:message:SOW')}}
|
||||
</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')">
|
||||
<i class="el-icon-view el-icon-download"></i>
|
||||
Template
|
||||
{{ $t('common:button:template') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table :data="sowList" size="small">
|
||||
<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">
|
||||
{{ scope.row.CriterionName }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="FileName" label="Statement of Work" width="400" />
|
||||
<el-table-column prop="IsEnable" label="Is Enable" width="100">
|
||||
<el-table-column prop="FileName" :label="$t('system:Agreements:table:Statement of Work')" width="400" />
|
||||
<el-table-column prop="IsEnable" :label="$t('system:Agreements:table:Is Enable')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.IsEnable"
|
||||
|
@ -48,13 +49,14 @@
|
|||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="Remark" label="Remark" width="200" />
|
||||
<el-table-column prop="CreateTime" label="Upload Time" width="150" />
|
||||
<el-table-column label="Action" width="400">
|
||||
<el-table-column prop="Remark" :label="$t('system:Agreements:Remark')" width="200" />
|
||||
<el-table-column prop="CreateTime" :label="$t('system:Agreements:Upload Time')" width="150" />
|
||||
<el-table-column :label="$t('common:action:action')" width="400">
|
||||
<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="handleEditCol(scope.row, 0, $t('trials:enrolledReviews:message:SOW'))">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="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'))">
|
||||
{{ $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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -62,17 +64,17 @@
|
|||
<span style="margin-right: 20px">
|
||||
{{$t('trials:enrolledReviews:message:EQC')}}
|
||||
</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>
|
||||
<el-table :data="ackSowList" size="small" v-if="!$route.query.ReviewStatus">
|
||||
<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">
|
||||
{{ scope.row.CriterionName }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="FileName" label="Acknowledgement of SOW" width="400" />
|
||||
<el-table-column prop="IsEnable" label="Is Enable" width="100">
|
||||
<el-table-column prop="FileName" :label="$t('system:Agreements:table:Acknowledgement of SOW')" width="400" />
|
||||
<el-table-column prop="IsEnable" :label="$t('system:Agreements:table:Is Enable')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.IsEnable"
|
||||
|
@ -82,13 +84,13 @@
|
|||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="Remark" label="Remark" width="200" />
|
||||
<el-table-column prop="CreateTime" label="Upload Time" width="150" />
|
||||
<el-table-column prop="Remark" :label="$t('system:Agreements:table:Remark')" width="200" />
|
||||
<el-table-column prop="CreateTime" :label="$t('system:Agreements:table:Upload Time')" width="150" />
|
||||
<el-table-column label="Action" width="400">
|
||||
<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="handleEditCol(scope.row, 1, $t('trials:enrolledReviews:message:EQC'))">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="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'))">{{$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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -101,7 +103,7 @@
|
|||
label-width="120px"
|
||||
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-option
|
||||
v-for="item of $d.CriterionType"
|
||||
|
@ -111,7 +113,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="File" prop="FilePath">
|
||||
<el-form-item :label="$t('system:Agreements:label:File')" prop="FilePath">
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action
|
||||
|
@ -126,11 +128,11 @@
|
|||
<el-button size="small" type="primary" :disabled="fileList.length > 0">{{$t('common:button:upload')}}</el-button>
|
||||
</el-upload>
|
||||
</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"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Is Enable">
|
||||
<el-form-item :label="$t('system:Agreements:label:Is Enable')">
|
||||
<el-switch
|
||||
v-model="form.IsEnable"
|
||||
:active-value="true"
|
||||
|
@ -140,8 +142,8 @@
|
|||
</el-form>
|
||||
</template>
|
||||
<template slot="dialog-footer">
|
||||
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancle">Cancel</el-button>
|
||||
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">Save</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">{{ $t('common:button:save') }}</el-button>
|
||||
</template>
|
||||
</BaseModel>
|
||||
</div>
|
||||
|
@ -272,6 +274,7 @@ export default {
|
|||
this.model_cfg.title = title
|
||||
},
|
||||
initSowList() {
|
||||
if (!this.doctorId) return
|
||||
getDoctorCriterionFile({
|
||||
fileType: 0,
|
||||
DoctorId: this.doctorId
|
||||
|
|
|
@ -15,31 +15,31 @@
|
|||
>
|
||||
<el-row>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="Gender: " prop="Sex">
|
||||
<el-form-item :label="$t('system:reviewer:label:Gender')" prop="Sex">
|
||||
<el-select
|
||||
v-model="basicInfo.Sex"
|
||||
prop="Sex"
|
||||
|
@ -59,12 +59,12 @@
|
|||
</el-row>
|
||||
<el-row>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="Title: " prop="TitleIds">
|
||||
<el-form-item :label="$t('system:reviewer:label:Title')" prop="TitleIds">
|
||||
<el-select
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="basicInfo.TitleIds[0]"
|
||||
|
@ -89,17 +89,15 @@
|
|||
</el-row>
|
||||
<el-row>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="WeChat: " prop="WeChat">
|
||||
<el-input v-model="basicInfo.WeChat" :disabled="$route.query.ReviewStatus === '1'" size="small" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="WeChat: " prop="WeChat">-->
|
||||
<!-- <el-input v-model="basicInfo.WeChat" :disabled="$route.query.ReviewStatus === '1'" size="small" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="12">
|
||||
<!-- <el-form-item label="Payment Type: " prop="Nation">
|
||||
<el-radio-group v-model="basicInfo.Nation">
|
||||
|
@ -108,7 +106,7 @@
|
|||
</el-radio-group>
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="Payment Type: " prop="Nation">
|
||||
<el-form-item :label="$t('system:reviewer:label:Country')" prop="Nation">
|
||||
<el-select
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="basicInfo.Nation"
|
||||
|
@ -116,11 +114,13 @@
|
|||
clearable
|
||||
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-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row>-->
|
||||
<!-- </el-row>-->
|
||||
<el-row>
|
||||
<el-form-item style="margin-left: 120px">
|
||||
<el-button
|
||||
|
@ -129,7 +129,7 @@
|
|||
:loading="isDisabled"
|
||||
size="small"
|
||||
@click="handleSave"
|
||||
>Save</el-button>
|
||||
> {{ $t('common:button:save') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div class="credentials-container">
|
||||
<div class="clearfix">
|
||||
<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>
|
||||
<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')">-->
|
||||
|
@ -12,7 +12,7 @@
|
|||
</el-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')">-->
|
||||
<!-- <i class="el-icon-view el-icon-download"></i>-->
|
||||
<!-- Template-->
|
||||
|
@ -22,7 +22,7 @@
|
|||
</el-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')">-->
|
||||
<!-- <i class="el-icon-view el-icon-download"></i>-->
|
||||
<!-- Template-->
|
||||
|
@ -31,7 +31,7 @@
|
|||
<upload-file :doctor-id="doctorId" type="Practice License" />
|
||||
</el-card>
|
||||
</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">
|
||||
<el-card class="e-card">
|
||||
<p class="title">CT
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<template>
|
||||
<div v-loading="loading" class="form-container">
|
||||
<div class="title-wrapper">
|
||||
<p>Education (in chronological order)</p>
|
||||
<el-button class="add" :disabled="$route.query.ReviewStatus === '1'" size="small" @click="handleAddEducation">Add</el-button>
|
||||
<p>{{ $t('system:reviewer:title:Education') }}</p>
|
||||
<el-button class="add" :disabled="$route.query.ReviewStatus === '1'" size="small" @click="handleAddEducation">
|
||||
{{ $t('common:button:add') }}</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
ref="educationTbl"
|
||||
|
@ -14,29 +15,29 @@
|
|||
<el-table-column type="index" width="30" />
|
||||
<el-table-column
|
||||
prop="BeginDateStr"
|
||||
label="Start"
|
||||
:label="$t('system:EducationTraining:table:Start')"
|
||||
min-width="55"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="EndDateStr"
|
||||
label="End"
|
||||
:label="$t('system:EducationTraining:table:End')"
|
||||
min-width="55"
|
||||
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">
|
||||
{{ scope.row.DegreeCN?`${scope.row.Degree} / ${scope.row.DegreeCN}`:scope.row.Degree }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="Organization"
|
||||
label="Institution"
|
||||
:label="$t('system:EducationTraining:table:Institution')"
|
||||
min-width="150"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
|
@ -44,32 +45,35 @@
|
|||
{{ scope.row.OrganizationCN?`${scope.row.Organization} / ${scope.row.OrganizationCN}`:scope.row.Organization }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.CityCN?`${scope.row.City} / ${scope.row.CityCN}`:scope.row.City }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.ProvinceCN?`${scope.row.Province} / ${scope.row.ProvinceCN}`:scope.row.Province }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.CountryCN?`${scope.row.Country} / ${scope.row.CountryCN}`:scope.row.Country }}
|
||||
</template>
|
||||
</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">
|
||||
<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="handleEducationDelete(scope.row)">Delete</el-button>
|
||||
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEducationEdit(scope.row)">
|
||||
{{ $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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="title-wrapper" style="margin-top:40px;">
|
||||
<p>Postgraduate Training (in chronological order)</p>
|
||||
<el-button class="add" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleAddPostgraduate">Add</el-button>
|
||||
<p>{{ $t('system:reviewer:title:Postgraduate') }}</p>
|
||||
<el-button class="add" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleAddPostgraduate">
|
||||
{{ $t('common:button:add') }}</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
ref="postgraduateTbl"
|
||||
|
@ -81,24 +85,24 @@
|
|||
<el-table-column type="index" width="30" />
|
||||
<el-table-column
|
||||
prop="BeginDateStr"
|
||||
label="Start"
|
||||
:label="$t('system:EducationTraining:table:Start')"
|
||||
min-width="55"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="EndDateStr"
|
||||
label="End"
|
||||
:label="$t('system:EducationTraining:table:End')"
|
||||
min-width="55"
|
||||
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">
|
||||
{{ scope.row.TrainingCN?`${scope.row.Training} / ${scope.row.TrainingCN}`:scope.row.Training }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="Major"
|
||||
label="Specialty/Research Field"
|
||||
:label="$t('system:EducationTraining:table:Specialty/Research Field')"
|
||||
min-width="155"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
|
@ -106,32 +110,32 @@
|
|||
{{ scope.row.MajorCN?`${scope.row.Major} / ${scope.row.MajorCN}`:scope.row.Major }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.HospitalCN?`${scope.row.Hospital} / ${scope.row.HospitalCN}`:scope.row.Hospital }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.SchoolCN?`${scope.row.School} / ${scope.row.SchoolCN}`:scope.row.School }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.CityCN?`${scope.row.City} / ${scope.row.CityCN}`:scope.row.City }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.ProvinceCN?`${scope.row.Province} / ${scope.row.ProvinceCN}`:scope.row.Province }}
|
||||
</template>
|
||||
</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">
|
||||
{{ scope.row.CountryCN?`${scope.row.Country} / ${scope.row.CountryCN}`:scope.row.Country }}
|
||||
</template>
|
||||
</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">
|
||||
<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>
|
||||
|
@ -147,7 +151,7 @@
|
|||
:close-on-click-modal="false"
|
||||
>
|
||||
<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
|
||||
v-model="educationForm.BeginDate"
|
||||
type="month"
|
||||
|
@ -158,7 +162,7 @@
|
|||
:picker-options="beginPickerOption"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="End" prop="EndDate">
|
||||
<el-form-item :label="$t('system:EducationTraining:table:End')" prop="EndDate">
|
||||
<el-date-picker
|
||||
v-model="educationForm.EndDate"
|
||||
type="month"
|
||||
|
@ -169,8 +173,8 @@
|
|||
:picker-options="endpickerOption"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Degree" prop="Degree">
|
||||
<el-select v-model="educationForm.Degree" placeholder="Please select" size="small">
|
||||
<el-form-item :label="$t('system:EducationTraining:table:Degree')" prop="Degree">
|
||||
<el-select v-model="educationForm.Degree" size="small">
|
||||
<el-option
|
||||
v-for="item in degreeOptions"
|
||||
:key="item.value"
|
||||
|
@ -180,7 +184,7 @@
|
|||
</el-select>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="educationForm.Major" placeholder="Please specify in English" size="small" />
|
||||
|
@ -190,7 +194,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="educationForm.Organization" placeholder="Please specify in English" size="small" />
|
||||
|
@ -200,7 +204,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="educationForm.City" placeholder="Please specify in English" size="small" />
|
||||
|
@ -211,7 +215,7 @@
|
|||
</el-row>
|
||||
|
||||
</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-col :span="11">
|
||||
<el-input v-model="educationForm.Province" placeholder="Please specify in English" size="small" />
|
||||
|
@ -221,7 +225,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="educationForm.Country" placeholder="Please specify in English" size="small" />
|
||||
|
@ -233,7 +237,7 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
<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>
|
||||
</el-dialog>
|
||||
|
||||
|
@ -245,7 +249,7 @@
|
|||
:close-on-click-modal="false"
|
||||
>
|
||||
<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
|
||||
v-model="postgraduateForm.BeginDate"
|
||||
type="month"
|
||||
|
@ -256,7 +260,7 @@
|
|||
size="small"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="End" prop="EndDate">
|
||||
<el-form-item :label="$t('system:EducationTraining:table:End')" prop="EndDate">
|
||||
<el-date-picker
|
||||
v-model="postgraduateForm.EndDate"
|
||||
type="month"
|
||||
|
@ -267,7 +271,7 @@
|
|||
size="small"
|
||||
/>
|
||||
</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-option
|
||||
v-for="item in TrainingOptions"
|
||||
|
@ -277,7 +281,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="postgraduateForm.Major" placeholder="Please specify in English" size="small" />
|
||||
|
@ -287,7 +291,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="postgraduateForm.Hospital" placeholder="Please specify in English" size="small" />
|
||||
|
@ -297,7 +301,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="postgraduateForm.School" placeholder="Please specify in English" size="small" />
|
||||
|
@ -308,7 +312,7 @@
|
|||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="postgraduateForm.City" placeholder="Please specify in English" size="small" />
|
||||
|
@ -318,7 +322,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="postgraduateForm.Province" placeholder="Please specify in English" size="small" />
|
||||
|
@ -328,7 +332,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-col :span="11">
|
||||
<el-input v-model="postgraduateForm.Country" placeholder="Please specify in English" size="small" />
|
||||
|
@ -340,7 +344,7 @@
|
|||
</el-form-item>
|
||||
</el-form>
|
||||
<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>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
@ -528,7 +532,6 @@ export default {
|
|||
if (valid) {
|
||||
this.isDisabled = true
|
||||
this.educationForm.DoctorId = this.$route.query.Id
|
||||
|
||||
if (this.educationForm.Degree === 'Bachelor') {
|
||||
this.educationForm.DegreeCN = '学士'
|
||||
} else if (this.educationForm.Degree === 'Master') {
|
||||
|
@ -564,8 +567,7 @@ export default {
|
|||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'OK',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteEducationInfo(row.Id)
|
||||
|
@ -633,8 +635,7 @@ export default {
|
|||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'OK',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deletePostgraduateInfo(row.Id)
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Hospital: " prop="HospitalId">
|
||||
<el-form-item :label="$t('system:reviewer:label:Hospital')" prop="HospitalId">
|
||||
<el-select
|
||||
v-model="employmentForm.HospitalId"
|
||||
placeholder="select"
|
||||
|
@ -39,13 +39,12 @@
|
|||
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Affiliated University: ">
|
||||
<el-form-item :label="$t('system:reviewer:label:AffiliatedUniversity')">
|
||||
<el-input
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="UniversityAffiliated"
|
||||
type="textarea"
|
||||
autosize
|
||||
disabled
|
||||
size="small"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
@ -53,29 +52,29 @@
|
|||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="City: ">
|
||||
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="City" disabled size="small" />
|
||||
<el-form-item :label="$t('system:reviewer:label:City')">
|
||||
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="City" size="small" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="State/Province: ">
|
||||
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Province" disabled size="small" />
|
||||
<el-form-item :label="$t('system:reviewer:label:State/Province')">
|
||||
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Province" size="small" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Country: ">
|
||||
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Country" disabled size="small" />
|
||||
<el-form-item :label="$t('system:reviewer:label:Country')">
|
||||
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="Country" size="small" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Department: " prop="DepartmentId">
|
||||
<el-form-item :label="$t('system:reviewer:label:Department')" prop="DepartmentId">
|
||||
<el-select
|
||||
v-model="employmentForm.DepartmentId"
|
||||
placeholder="select"
|
||||
|
@ -123,7 +122,7 @@
|
|||
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Rank: " prop="RankId">
|
||||
<el-form-item :label="$t('system:reviewer:label:Rank')" prop="RankId">
|
||||
<el-select
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="employmentForm.RankId"
|
||||
|
@ -141,7 +140,7 @@
|
|||
<el-option
|
||||
v-for="item of $d.Rank"
|
||||
:key="item.id"
|
||||
:label="item.raw.Value"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
/>
|
||||
<!-- <el-option label="Other" :value="otherId" />-->
|
||||
|
@ -170,99 +169,98 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Physician: " prop="PhysicianId" >
|
||||
<el-select
|
||||
v-model="employmentForm.PhysicianId"
|
||||
placeholder="select"
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
@change="PhysicianChange"
|
||||
style="width:100%;"
|
||||
size="small"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.PhysicianOriginal"
|
||||
:key="item.id"
|
||||
:label="item.raw.Value"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-input
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="employmentForm.Physician"
|
||||
placeholder="Please specify"
|
||||
size="small"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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-input
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="employmentForm.PhysicianCN"
|
||||
placeholder="请用中文注明"
|
||||
size="small"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="14">
|
||||
<el-form-item label="Position: " prop="PositionId">
|
||||
<el-select
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="employmentForm.PositionId"
|
||||
placeholder="select"
|
||||
style="width:100%;"
|
||||
size="small"
|
||||
>
|
||||
<!-- <el-option
|
||||
v-for="(key,value) of dictionaryList.Position"
|
||||
:key="key"
|
||||
:label="key"
|
||||
:value="value"
|
||||
/> -->
|
||||
<el-option
|
||||
v-for="item of dictionaryList.Position"
|
||||
:key="item.Id"
|
||||
:label="item.Value"
|
||||
:value="item.Id"
|
||||
/>
|
||||
<el-option label="Other" :value="otherId" />
|
||||
<el-option label="None" value="f30a074b-2b47-4a92-97ec-e15086d37883" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOther">
|
||||
<el-input
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="employmentForm.PositionOther"
|
||||
placeholder="Please specify"
|
||||
size="small"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOtherCN">
|
||||
<el-input
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="employmentForm.PositionOtherCN"
|
||||
placeholder="请用中文注明"
|
||||
size="small"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="14">-->
|
||||
<!-- <el-form-item label="Physician: " prop="PhysicianId" >-->
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="employmentForm.PhysicianId"-->
|
||||
<!-- placeholder="select"-->
|
||||
<!-- :disabled="$route.query.ReviewStatus === '1'"-->
|
||||
<!-- @change="PhysicianChange"-->
|
||||
<!-- style="width:100%;"-->
|
||||
<!-- size="small"-->
|
||||
<!-- >-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item of $d.PhysicianOriginal"-->
|
||||
<!-- :key="item.id"-->
|
||||
<!-- :label="item.raw.Value"-->
|
||||
<!-- :value="item.id"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <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-input-->
|
||||
<!-- :disabled="$route.query.ReviewStatus === '1'"-->
|
||||
<!-- v-model="employmentForm.Physician"-->
|
||||
<!-- placeholder="Please specify"-->
|
||||
<!-- size="small"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <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-input-->
|
||||
<!-- :disabled="$route.query.ReviewStatus === '1'"-->
|
||||
<!-- v-model="employmentForm.PhysicianCN"-->
|
||||
<!-- placeholder="请用中文注明"-->
|
||||
<!-- size="small"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="14">-->
|
||||
<!-- <el-form-item label="Position: " prop="PositionId">-->
|
||||
<!-- <el-select-->
|
||||
<!-- :disabled="$route.query.ReviewStatus === '1'"-->
|
||||
<!-- v-model="employmentForm.PositionId"-->
|
||||
<!-- placeholder="select"-->
|
||||
<!-- style="width:100%;"-->
|
||||
<!-- size="small"-->
|
||||
<!-- >-->
|
||||
<!-- <!– <el-option-->
|
||||
<!-- v-for="(key,value) of dictionaryList.Position"-->
|
||||
<!-- :key="key"-->
|
||||
<!-- :label="key"-->
|
||||
<!-- :value="value"-->
|
||||
<!-- /> –>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item of dictionaryList.Position"-->
|
||||
<!-- :key="item.Id"-->
|
||||
<!-- :label="item.Value"-->
|
||||
<!-- :value="item.Id"-->
|
||||
<!-- />-->
|
||||
<!-- <el-option label="Other" :value="otherId" />-->
|
||||
<!-- <el-option label="None" value="f30a074b-2b47-4a92-97ec-e15086d37883" />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="5">-->
|
||||
<!-- <el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOther">-->
|
||||
<!-- <el-input-->
|
||||
<!-- :disabled="$route.query.ReviewStatus === '1'"-->
|
||||
<!-- v-model="employmentForm.PositionOther"-->
|
||||
<!-- placeholder="Please specify"-->
|
||||
<!-- size="small"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="5">-->
|
||||
<!-- <el-form-item v-if="employmentForm.PositionId===otherId" class="other-item" prop="PositionOtherCN">-->
|
||||
<!-- <el-input-->
|
||||
<!-- :disabled="$route.query.ReviewStatus === '1'"-->
|
||||
<!-- v-model="employmentForm.PositionOtherCN"-->
|
||||
<!-- placeholder="请用中文注明"-->
|
||||
<!-- size="small"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
|
||||
<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>
|
||||
</div>
|
||||
|
@ -377,9 +375,9 @@ export default {
|
|||
this.loading = true
|
||||
this.isDisabled = true
|
||||
const param = {}
|
||||
var o = this.$d.PhysicianOriginal.find(v => {
|
||||
return v.id === this.employmentForm.PhysicianId
|
||||
})
|
||||
// var o = this.$d.PhysicianOriginal.find(v => {
|
||||
// return v.id === this.employmentForm.PhysicianId
|
||||
// })
|
||||
param.Id = this.$route.query.Id
|
||||
param.DepartmentId = this.employmentForm.DepartmentId
|
||||
param.DepartmentOther = this.employmentForm.DepartmentId === this.otherId ? this.employmentForm.DepartmentOther : ''
|
||||
|
@ -387,9 +385,9 @@ export default {
|
|||
param.RankId = this.employmentForm.RankId
|
||||
param.RankOther = this.employmentForm.RankId === this.otherId ? this.employmentForm.RankOther : ''
|
||||
param.RankOtherCN = this.employmentForm.RankId === this.otherId ? this.employmentForm.RankOtherCN : ''
|
||||
param.PhysicianId = this.employmentForm.PhysicianId
|
||||
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.PhysicianId = this.employmentForm.PhysicianId
|
||||
// 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.PositionId = this.employmentForm.PositionId
|
||||
param.PositionOther = this.employmentForm.PositionId === this.otherId ? this.employmentForm.PositionOther : ''
|
||||
param.PositionOtherCN = this.employmentForm.PositionId === this.otherId ? this.employmentForm.PositionOtherCN : ''
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<div class="gcp-container">
|
||||
<el-radio-group v-model="GCP" style="margin-bottom:20px">
|
||||
<el-radio :label="1">Yes</el-radio>
|
||||
<el-radio :label="0">No</el-radio>
|
||||
<el-radio :label="1">{{ $t('system:GcpCertificate:radio:Yes') }}</el-radio>
|
||||
<el-radio :label="0">{{ $t('system:GcpCertificate:radio:No') }}</el-radio>
|
||||
</el-radio-group>
|
||||
<div v-if="GCP" class="upload-container">
|
||||
<!-- <upload-file :doctor-id="doctorId" type="GCP" />-->
|
||||
|
@ -19,13 +19,13 @@
|
|||
:on-exceed="handleExceed"
|
||||
accept=".pdf"
|
||||
>
|
||||
<el-button size="small" type="primary" :loading="btnDisabled">Upload</el-button>
|
||||
<span slot="tip" style="margin-left:10px;" class="el-upload__tip">(must be in pdf format)</span>
|
||||
<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">{{ $t('system:GcpCertificate:tap:must') }}</span>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -97,6 +97,7 @@ export default {
|
|||
})
|
||||
},
|
||||
initFileList() {
|
||||
if(!this.doctorId) return
|
||||
getAttachmentByType(this.doctorId, 'GCP')
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
|
@ -181,7 +182,7 @@ export default {
|
|||
this.fileList = []
|
||||
this.GCPID = ''
|
||||
this.$message({
|
||||
message: 'Deleted successfully!',
|
||||
message: this.$t('common:message:deletedSuccessfully'),
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="form-container" style="width:80%;">
|
||||
<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-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" />
|
||||
|
@ -11,7 +11,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-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" />
|
||||
|
@ -21,7 +21,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-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" />
|
||||
|
@ -31,7 +31,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
</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-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" />
|
||||
|
@ -42,7 +42,8 @@
|
|||
</el-row>
|
||||
</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>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div v-loading="loading" class="resumes-container">
|
||||
<div class="resume-content">
|
||||
<p>Resume</p>
|
||||
<p>{{ $t('system:Resumes:title:Resume') }}</p>
|
||||
<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" /> -->
|
||||
<div class="uploadFile-container">
|
||||
|
@ -14,21 +14,21 @@
|
|||
:file-list="resumeList"
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>(must be in doc,docx format)</p>
|
||||
<p>{{ $t('system:GcpCertificate:tap:must') }}</p>
|
||||
</div>
|
||||
<div class="resumeTbl">
|
||||
<el-table :data="resumeListEN" size="small">
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="FileName" label="Resume" width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="CreateTime" label="Upload Time" width="150" 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="$t('system:Resumes:table:Upload Time')" width="150" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
prop="IsOfficial"
|
||||
label="Official"
|
||||
:label="$t('system:Resumes:table:Official')"
|
||||
width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
|
@ -37,7 +37,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="Language"
|
||||
label="Language"
|
||||
:label="$t('system:Resumes:table:Language')"
|
||||
width="100"
|
||||
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> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Action" width="400">
|
||||
<el-table-column :label="$t('common:action:action')" width="400">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="handlePreview(scope.row)">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" @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)">{{ $t('common:button:delete') }}</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
:disabled="scope.row.IsOfficial || $route.query.ReviewStatus === '1'"
|
||||
@click="handleSetOfiical(scope.row)"
|
||||
>Set as Official</el-button>
|
||||
>{{ $t('system:Resumes:button:Set as Official') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<div class="resume-content" style="margin-top:10px;">
|
||||
<p>中文简历</p>
|
||||
<p>{{ $t('system:Resumes:title:ResumeCN') }}</p>
|
||||
<div class="upload-content">
|
||||
<div class="uploadFile-container">
|
||||
<el-upload
|
||||
|
@ -74,20 +74,20 @@
|
|||
:file-list="resumeList"
|
||||
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>
|
||||
</div>
|
||||
</div>
|
||||
<p>(必须是 doc,docx 格式)</p>
|
||||
<p>{{ $t('system:GcpCertificate:tap:must') }}</p>
|
||||
</div>
|
||||
<div class="resumeTbl">
|
||||
<el-table :data="resumeListCN" size="small">
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="FileName" label="Resume" width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="CreateTime" label="Upload Time" width="150" 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="$t('system:Resumes:table:Upload Time')" width="150" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
prop="IsOfficial"
|
||||
label="Official"
|
||||
:label="$t('system:Resumes:table:Official')"
|
||||
width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
|
@ -96,7 +96,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="Language"
|
||||
label="Language"
|
||||
:label="$t('system:Resumes:table:Language')"
|
||||
width="100"
|
||||
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> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="Action" width="400">
|
||||
<el-table-column :label="$t('common:action:action')" width="400">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="handlePreview(scope.row)">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" @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)">{{ $t('common:button:delete') }}</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
:disabled="scope.row.IsOfficial"
|
||||
:disabled="scope.row.IsOfficial || $route.query.ReviewStatus === '1'"
|
||||
@click="handleSetOfiical(scope.row)"
|
||||
>Set as Official</el-button>
|
||||
>{{ $t('system:Resumes:button:Set as Official') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -163,6 +163,7 @@ export default {
|
|||
}
|
||||
},
|
||||
created() {
|
||||
if(!this.doctorId) return
|
||||
this.getResumeList()
|
||||
},
|
||||
methods: {
|
||||
|
@ -266,11 +267,10 @@ export default {
|
|||
}
|
||||
},
|
||||
handleRemoveFile(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
}).then(() => {
|
||||
deleteAttachment(row.Id, row.Path)
|
||||
.then(res => {
|
||||
|
@ -278,7 +278,7 @@ export default {
|
|||
this.resumeList.splice(this.resumeList.findIndex(item => item.Id === row.Id), 1)
|
||||
this.filterByLanguage()
|
||||
this.$message({
|
||||
message: 'Deleted successfully!',
|
||||
message: this.$t('common:message:deletedSuccessfully'),
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
|
|
|
@ -2,68 +2,68 @@
|
|||
<div v-loading="loading" class="check-container form-container">
|
||||
<el-form ref="checkForm" :model="checkForm" label-width="200px" size="small" :rules="rules">
|
||||
<div class="title-wrapper">
|
||||
<p>盲化信息</p>
|
||||
<p>{{$t('system:Setting:title:Blinded information') }}</p>
|
||||
</div>
|
||||
<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
|
||||
v-model="checkForm.BlindName"
|
||||
style="width:300px"
|
||||
/>
|
||||
</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
|
||||
v-model="checkForm.BlindNameCN"
|
||||
style="width:300px"
|
||||
/>
|
||||
</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-form-item>
|
||||
</div>
|
||||
<div class="title-wrapper">
|
||||
<p>Setting</p>
|
||||
<p>{{$t('system:Setting:title:Blinded Setting') }}</p>
|
||||
</div>
|
||||
<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 :label="1">Yes</el-radio>
|
||||
<el-radio :label="2">No</el-radio>
|
||||
<el-radio :label="1">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
|
||||
<el-radio :label="2">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
|
||||
</el-radio-group>
|
||||
</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 :label="1">Yes</el-radio>
|
||||
<el-radio :label="2">No</el-radio>
|
||||
<el-radio :label="1">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
|
||||
<el-radio :label="2">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
|
||||
</el-radio-group>
|
||||
</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 :label="true">Yes</el-radio>
|
||||
<el-radio :label="false">No</el-radio>
|
||||
<el-radio :label="true">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
|
||||
<el-radio :label="false">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
|
||||
</el-radio-group>
|
||||
</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 :label="true">Yes</el-radio>
|
||||
<el-radio :label="false">No</el-radio>
|
||||
<el-radio :label="true">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
|
||||
<el-radio :label="false">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
|
||||
</el-radio-group>
|
||||
</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 :label="true">Yes</el-radio>
|
||||
<el-radio :label="false">No</el-radio>
|
||||
<el-radio :label="true">{{$t('system:Setting:label:Information Confirmed?:Yes')}}</el-radio>
|
||||
<el-radio :label="false">{{$t('system:Setting:label:Information Confirmed?:No')}}</el-radio>
|
||||
</el-radio-group>
|
||||
</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>
|
||||
<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 label="Comment: " prop="AdminComment">
|
||||
<el-form-item :label="$t('system:Setting:label:Comment:')" prop="AdminComment">
|
||||
<el-input
|
||||
v-model="checkForm.AdminComment"
|
||||
type="textarea"
|
||||
|
@ -73,12 +73,12 @@
|
|||
</el-form-item>
|
||||
|
||||
<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>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-dialog
|
||||
title="Vacation"
|
||||
:title="$t('system:Setting:title:Vacation')"
|
||||
:visible.sync="dialogVisible"
|
||||
width="50%"
|
||||
:close-on-click-modal="false"
|
||||
|
@ -87,37 +87,38 @@
|
|||
<div>
|
||||
<el-date-picker
|
||||
v-model="daterange"
|
||||
style="width: 360px"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="to"
|
||||
start-placeholder="Beginning Date"
|
||||
end-placeholder="End Date"
|
||||
:start-placeholder="$t('system:Setting:label:Beginning Date')"
|
||||
:end-placeholder="$t('system:Setting:label:End Date')"
|
||||
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>
|
||||
<el-table v-loading="loading2" :data="gridData" size="small">
|
||||
<el-table-column type="index" />
|
||||
<el-table-column
|
||||
property="StartDate"
|
||||
label="Beginning Date"
|
||||
:label="$t('system:Setting:table:Beginning Date')"
|
||||
min-width="120"
|
||||
:formatter="beginTimeFormatter"
|
||||
/>
|
||||
<el-table-column
|
||||
property="EndDate"
|
||||
label="End Date"
|
||||
:label="$t('system:Setting:table:End Date')"
|
||||
min-width="120"
|
||||
: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">
|
||||
<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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination">
|
||||
<div class="pagination" style="padding: 10px 0;text-align: right">
|
||||
<el-pagination
|
||||
background
|
||||
layout="total,sizes,prev, pager, next"
|
||||
|
@ -165,7 +166,6 @@ export default {
|
|||
rules: {
|
||||
AdminComment: [{ max: 500, message: 'The maximum length is 500' }],
|
||||
BlindName: [{ required: true, message: 'Please specify', trigger: 'blur' }],
|
||||
BlindNameCN: [{ required: true, message: 'Please specify', trigger: 'blur' }]
|
||||
},
|
||||
doctorId: this.$route.query.Id,
|
||||
isDisabled: false,
|
||||
|
@ -184,6 +184,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
initForm() {
|
||||
if (!this.doctorId) return
|
||||
getAuditState(this.doctorId).then(res => {
|
||||
if (res.Result) {
|
||||
this.checkForm = res.Result
|
||||
|
@ -204,7 +205,7 @@ export default {
|
|||
if (res.IsSuccess) {
|
||||
if (res.Result) { this.checkForm.Id = res.Result }
|
||||
this.isDisabled = false
|
||||
this.$message.success('Saved successfully')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
|
@ -258,11 +259,9 @@ export default {
|
|||
}
|
||||
},
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
this.loading2 = true
|
||||
|
@ -274,7 +273,7 @@ export default {
|
|||
this.gridData.splice(index, 1)
|
||||
this.totalItems = this.totalItems - 1
|
||||
}
|
||||
this.$message.success('Deleted successfully!')
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
this.loading2 = false
|
||||
})
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="Specialty: " prop="SpecialityId">
|
||||
<el-form-item :label="$t('system:reviewer:label:Specialty')" prop="SpecialityId">
|
||||
<el-select
|
||||
v-model="specialtyForm.SpecialityId"
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
|
@ -59,7 +59,7 @@
|
|||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="Subspeciality: " prop="SubspecialityIds">
|
||||
<el-form-item :label="$t('system:reviewer:label:Subspeciality')" prop="SubspecialityIds">
|
||||
<el-select
|
||||
v-model="specialtyForm.SubspecialityIds"
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
|
@ -116,7 +116,7 @@
|
|||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="Modality: " prop="ReadingTypeIds">
|
||||
<el-form-item :label="$t('system:reviewer:label:Modality')" prop="ReadingTypeIds">
|
||||
<el-select
|
||||
:disabled="$route.query.ReviewStatus === '1'"
|
||||
v-model="specialtyForm.ReadingTypeIds"
|
||||
|
@ -171,7 +171,8 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
<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>
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<template>
|
||||
<div class="form-container">
|
||||
<div class="title-wrapper">
|
||||
<p>Clinical Trial Experience</p>
|
||||
<el-button :disabled="$route.query.ReviewStatus === '1'" class="add" size="small" @click="handleAddClinicalTrial">Add</el-button>
|
||||
<p>{{$t('system:TrialExperience:title:Clinical Trial Experience')}}</p>
|
||||
<el-button :disabled="$route.query.ReviewStatus === '1'" class="add" size="small" @click="handleAddClinicalTrial">{{$t('common:button:add')}}</el-button>
|
||||
</div>
|
||||
<div style="padding:0 40px;">
|
||||
<el-table
|
||||
|
@ -13,36 +13,37 @@
|
|||
size="small"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<el-table-column prop="Phase" label="Phase" min-width="50" />
|
||||
<el-table-column prop="EvaluationCriteriaList" label="Review Criteria" min-width="100">
|
||||
<el-table-column prop="Phase" :label="$t('system:TrialExperience:title:Phase')" min-width="50" />
|
||||
<el-table-column prop="EvaluationCriteriaList" :label="$t('system:TrialExperience:title:Review Criteria')" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.EvaluationCriteriaList.length>0? scope.row.EvaluationCriteriaList.join(', '):'' }}
|
||||
</template>
|
||||
</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">
|
||||
<span v-if="scope.row.StartTime">{{ scope.row.StartTime.split('-')[0] }}-{{scope.row.EndTime ? scope.row.EndTime.split('-')[0] : '至今'}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="VisitReadingCount" label="Visit Reading Count" min-width="70" />
|
||||
<el-table-column prop="EvaluationContent" label="Indication" min-width="70" />
|
||||
<el-table-column label="Operation" min-width="200">
|
||||
<el-table-column prop="VisitReadingCount" :label="$t('system:TrialExperience:title:Visit Reading Count')" min-width="70" />
|
||||
<el-table-column prop="EvaluationContent" :label="$t('system:TrialExperience:Indication')" min-width="70" />
|
||||
<el-table-column :label="$t('system:TrialExperience:Operation')" min-width="200">
|
||||
<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="handleDel(scope.row)">Delete</el-button>
|
||||
<el-button type="text" size="small" :disabled="$route.query.ReviewStatus === '1'" @click="handleEdit(scope.row)">
|
||||
{{ $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>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="title-wrapper" style="margin-top:10px;">
|
||||
<p>GCP Certificate</p>
|
||||
<p>{{$t('system:TrialExperience:title:GCP Certificate')}}</p>
|
||||
</div>
|
||||
<div style="margin-left:40px;width:40%">
|
||||
<gcp-certificate :doctor-id="doctorId" :gcp="GCP" :gcp-id="GCPID" />
|
||||
</div>
|
||||
<div class="title-wrapper" style="margin-top:10px;">
|
||||
<p>Other Relevant Experience</p>
|
||||
<p>{{$t('system:TrialExperience:title:Other Relevant Experience')}}</p>
|
||||
</div>
|
||||
<div style="padding:0 40px;">
|
||||
<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-col>
|
||||
</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>
|
||||
<el-dialog v-if="clinicalTrialDialogVisible" :title="clinicalTrialDialogTitle" :visible.sync="clinicalTrialDialogVisible" width="480px" :close-on-click-modal="false">
|
||||
<el-form
|
||||
|
@ -70,8 +72,8 @@
|
|||
:model="clinicalTrialForm"
|
||||
size="small"
|
||||
>
|
||||
<el-form-item label="Phase" prop="PhaseId">
|
||||
<el-select v-model="clinicalTrialForm.PhaseId" placeholder="Please select">
|
||||
<el-form-item :label="$t('system:TrialExperience:label:Phase')" prop="PhaseId">
|
||||
<el-select v-model="clinicalTrialForm.PhaseId">
|
||||
<!-- <el-option
|
||||
v-for="(key,value) of dictionaryList.Phase"
|
||||
:key="value"
|
||||
|
@ -86,10 +88,9 @@
|
|||
/>
|
||||
</el-select>
|
||||
</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
|
||||
v-model="clinicalTrialForm.EvaluationCriteriaIdList"
|
||||
placeholder="Please select"
|
||||
multiple
|
||||
>
|
||||
<!-- <el-option v-for="(key,value) of dictionaryList.ReadingStandard" :key="value" :label="key" :value="value" /> -->
|
||||
|
@ -101,29 +102,29 @@
|
|||
/>
|
||||
</el-select>
|
||||
</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
|
||||
v-model="clinicalTrialForm.StartTime"
|
||||
type="year"
|
||||
placeholder="Select Start Time">
|
||||
>
|
||||
</el-date-picker>
|
||||
</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
|
||||
v-model="clinicalTrialForm.EndTime"
|
||||
type="year"
|
||||
placeholder="Select End Time">
|
||||
>
|
||||
</el-date-picker>
|
||||
</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-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-form-item>
|
||||
</el-form>
|
||||
<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>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
@ -265,8 +266,7 @@ export default {
|
|||
this.$confirm('Confirm to delete?', {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'OK',
|
||||
cancelButtonText: 'Cancel'
|
||||
|
||||
})
|
||||
.then(() => {
|
||||
deleteTrialExperience(row.Id)
|
||||
|
|
|
@ -1,39 +1,34 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<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" />
|
||||
</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" />
|
||||
|
||||
</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" />
|
||||
|
||||
</el-tab-pane>
|
||||
|
||||
<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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</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" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
<div class="search">
|
||||
<div class="base-search-form">
|
||||
<el-form size="small" :inline="true">
|
||||
<el-form-item label="Name:">
|
||||
<el-form-item :label="$t('reviewers-list:label:Name')">
|
||||
<el-input
|
||||
v-model="searchData.Name"
|
||||
style="width:100px;"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="Modality:">
|
||||
<el-form-item :label="$t('reviewers-list:label:Modality')">
|
||||
<el-select
|
||||
v-model="searchData.ReadingTypeIdList"
|
||||
clearable
|
||||
|
@ -33,7 +33,7 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Subspeciality:">
|
||||
<el-form-item :label="$t('reviewers-list:label:Subspeciality')">
|
||||
<el-select
|
||||
v-model="searchData.SubspecialityIdList"
|
||||
multiple
|
||||
|
@ -50,271 +50,36 @@
|
|||
</el-select>
|
||||
</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">Search</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">Reset</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-refresh-left" @click="handleReset">{{ $t('common:button:reset') }}</el-button>
|
||||
<el-button
|
||||
icon="el-icon-download"
|
||||
type="primary"
|
||||
:disabled="!(selectArr.length>0)"
|
||||
@click="handleDownLoadOffical"
|
||||
>Download CV</el-button>
|
||||
>{{$t('reviewers-list:label:DownloadCV')}}</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-link"
|
||||
@click="showResearchLink"
|
||||
>
|
||||
采集链接
|
||||
{{$t('reviewers-list:label:showResearchLink')}}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<span style="margin-left:auto;">
|
||||
<el-switch
|
||||
v-model="isEN"
|
||||
active-text="EN"
|
||||
inactive-text="中文"
|
||||
style="margin-right:10px;"
|
||||
@change="handleIsEnChange"
|
||||
/>
|
||||
<el-button size="small" icon="el-icon-plus" type="primary" @click="handleNew">New</el-button>
|
||||
<!-- <el-switch-->
|
||||
<!-- v-model="isEN"-->
|
||||
<!-- active-text="EN"-->
|
||||
<!-- inactive-text="中文"-->
|
||||
<!-- style="margin-right:10px;"-->
|
||||
<!-- @change="handleIsEnChange"-->
|
||||
<!-- />-->
|
||||
<el-button size="small" icon="el-icon-plus" type="primary" @click="handleNew">{{$t('common:button:new')}}</el-button>
|
||||
</span>
|
||||
</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
|
||||
v-adaptive="{bottomOffset:55}"
|
||||
|
@ -330,7 +95,7 @@
|
|||
<el-table-column
|
||||
align="left"
|
||||
prop="LastName"
|
||||
label="Name"
|
||||
:label="$t('reviewers-list:table:Name')"
|
||||
show-overflow-tooltip
|
||||
width="130"
|
||||
sortable="custom"
|
||||
|
@ -341,15 +106,15 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ChineseName"
|
||||
label="Name CN"
|
||||
:label="$t('reviewers-list:table:NameCN')"
|
||||
show-overflow-tooltip
|
||||
width="90"
|
||||
align="left"
|
||||
/>
|
||||
<el-table-column prop="ReviewerCode" label="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="ReviewerCode" :label="$t('reviewers-list:table:ID')" width="80" 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
|
||||
label="Reading"
|
||||
:label="$t('reviewers-list:table:Reading')"
|
||||
width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
|
@ -370,7 +135,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="Finished"
|
||||
:label="$t('reviewers-list:table:Finished')"
|
||||
width="100"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
|
@ -393,7 +158,7 @@
|
|||
<el-table-column
|
||||
align="left"
|
||||
prop="SpecialityId"
|
||||
label="Specialty"
|
||||
:label="$t('reviewers-list:table:Specialty')"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
width="130"
|
||||
|
@ -407,7 +172,7 @@
|
|||
<el-table-column
|
||||
align="left"
|
||||
prop="Subspeciality"
|
||||
label="Subspecialty"
|
||||
:label="$t('reviewers-list:table:Subspecialty')"
|
||||
show-overflow-tooltip
|
||||
min-width="150"
|
||||
>
|
||||
|
@ -422,7 +187,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="HospitalName"
|
||||
label="Institution"
|
||||
:label="$t('reviewers-list:table:Institution')"
|
||||
min-width="110"
|
||||
align="left"
|
||||
sortable="custom"
|
||||
|
@ -436,7 +201,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="City"
|
||||
label="Location"
|
||||
:label="$t('reviewers-list:table:Location')"
|
||||
width="110"
|
||||
align="left"
|
||||
sortable="custom"
|
||||
|
@ -450,7 +215,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="IsVirtual"
|
||||
label="Virtual"
|
||||
:label="$t('reviewers-list:table:Virtual')"
|
||||
min-width="80"
|
||||
align="left"
|
||||
sortable="custom"
|
||||
|
@ -464,7 +229,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ReviewStatus"
|
||||
label="Confirmed"
|
||||
:label="$t('reviewers-list:table:Confirmed')"
|
||||
min-width="80"
|
||||
align="left"
|
||||
sortable="custom"
|
||||
|
@ -476,27 +241,27 @@
|
|||
</span>
|
||||
</template>
|
||||
</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">
|
||||
<el-button
|
||||
size="mini"
|
||||
circle
|
||||
icon="el-icon-info"
|
||||
title="Detail"
|
||||
:title="$t('reviewers-list:table:Detail')"
|
||||
@click="handleDetail(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
size="mini"
|
||||
circle
|
||||
icon="el-icon-edit-outline"
|
||||
title="Edit"
|
||||
:title="$t('reviewers-list:table:Edit')"
|
||||
@click="handleEdit(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-view"
|
||||
circle
|
||||
title="盲态简历"
|
||||
:title="$t('reviewers-list:table:Blind')"
|
||||
@click="lookResumeInfo(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
|
@ -515,13 +280,13 @@
|
|||
<template slot="dialog-body">
|
||||
<div>
|
||||
<i style="color:#428bca;" class="el-icon-success" />
|
||||
<span>成功创建分享链接</span>
|
||||
<span>{{ $t('reviewers-list:message:msg1')}}</span>
|
||||
</div>
|
||||
<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>
|
||||
<el-button type="primary" round @click="copyCode">复制链接</el-button>
|
||||
<el-button type="primary" round @click="copyCode">{{ $t('reviewers-list:button:copyCode') }}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</base-model>
|
||||
|
@ -602,17 +367,20 @@ export default {
|
|||
},
|
||||
tokenKey: getToken(),
|
||||
share_model: { visible: false, title: '', width: '500px' },
|
||||
shareLink: null
|
||||
shareLink: null,
|
||||
isEnglish: false
|
||||
}
|
||||
},
|
||||
dicts: ['ReadingType', 'Subspeciality', 'Department', 'Rank', 'Position', 'ReadingStandard'],
|
||||
computed: {
|
||||
...mapGetters(['hospitalList', 'reviewersQuery', 'isEnglish'])
|
||||
...mapGetters(['hospitalList', 'reviewersQuery'])
|
||||
},
|
||||
created() {
|
||||
this.isEN = this.isEnglish
|
||||
this.reviewersQuery ? this.listQuery = this.reviewersQuery : ''
|
||||
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: {
|
||||
copyCode() {
|
||||
|
@ -637,7 +405,7 @@ export default {
|
|||
},
|
||||
showResearchLink() {
|
||||
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
|
||||
},
|
||||
lookResumeInfo(row) {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue