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

uat_us
caiyiling 2024-11-11 14:41:38 +08:00
commit c51dedbd1e
12 changed files with 263 additions and 53 deletions

View File

@ -334,4 +334,12 @@ export function doctorSendEmail(param) {
method: 'post', method: 'post',
data: param data: param
}) })
}
// 获取医生是否休假
export function getIsVacation(param) {
return request({
url: `/Vacation/getIsVacation`,
method: 'post',
data: param
})
} }

View File

@ -257,6 +257,7 @@
:on-remove="handleRemoveFile2" :on-remove="handleRemoveFile2"
:show-file-list="true" :show-file-list="true"
:limit="1" :limit="1"
accept=".pdf"
:file-list="fileList" :file-list="fileList"
> >
<el-button <el-button
@ -265,6 +266,7 @@
:disabled="fileList.length > 0" :disabled="fileList.length > 0"
>{{ $t('common:button:upload') }}</el-button >{{ $t('common:button:upload') }}</el-button
> >
<span>{{ $t('system:tip:file:pdf') }}</span>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item :label="$t('system:Agreements:label:Remark')"> <el-form-item :label="$t('system:Agreements:label:Remark')">
@ -368,6 +370,7 @@ export default {
], ],
}, },
fileList: [], fileList: [],
accept: '.pdf',
} }
}, },
watch: { watch: {
@ -414,41 +417,66 @@ export default {
this.form.FilePath = null this.form.FilePath = null
this.fileList = [] this.fileList = []
}, },
beforeUpload() { beforeUpload(row) {
if (this.fileList.length > 0) { if (this.fileList.length > 0) {
this.$alert('最多只能传一个附件') this.$alert('最多只能传一个附件')
return return
} }
if (!this.checkFileSuffix(row.name)) {
this.$message.warning(`Must be in .pdf format`)
return false
}
}, },
handlePreview3(row) { handlePreview3(row) {
return this.$preview({
path: row.FilePath,
type: 'pdf',
title: row.FileName,
})
if (row.FilePath) { if (row.FilePath) {
window.open(this.OSSclientConfig.basePath + row.FilePath, '_blank') window.open(this.OSSclientConfig.basePath + row.FilePath, '_blank')
} }
}, },
handlePreview2(row, r2) { handlePreview2(row, r2) {
return this.$preview({
path: row.fullPath,
type: 'pdf',
title: row.FileName,
})
if (row.fullPath) { if (row.fullPath) {
window.open(this.OSSclientConfig.basePath + row.fullPath, '_blank') window.open(this.OSSclientConfig.basePath + row.fullPath, '_blank')
} }
}, },
async handleUploadFile(param) { checkFileSuffix(fileName) {
this.btnLoading = true var index = fileName.lastIndexOf('.')
var fileName = param.file.name var suffix = fileName.substring(index + 1, fileName.length)
let file = await this.fileToBlob(param.file) return (
let res = await this.OSSclient.put( this.accept.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) === 1
`/SystemData/reviewer/${
this.form.FileType === 0 ? '既往阅片情况声明' : '入项资格确认书'
}/${this.doctorId}/${fileName}`,
file
) )
this.form.FileName = param.file.name },
this.form.FilePath = this.$getObjectName(res.url) async handleUploadFile(param) {
this.fileList[0] = { try {
name: this.$getObjectName(res.url), this.btnLoading = true
path: this.$getObjectName(res.url), var fileName = param.file.name
fullPath: this.$getObjectName(res.url), let file = await this.fileToBlob(param.file)
url: res.url, let res = await this.OSSclient.put(
`/SystemData/reviewer/${
this.form.FileType === 0 ? '既往阅片情况声明' : '入项资格确认书'
}/${this.doctorId}/${fileName}`,
file
)
this.form.FileName = param.file.name
this.form.FilePath = this.$getObjectName(res.url)
this.fileList[0] = {
name: this.$getObjectName(res.url),
path: this.$getObjectName(res.url),
fullPath: this.$getObjectName(res.url),
url: res.url,
}
this.btnLoading = false
} catch (err) {
console.log(err)
} }
this.btnLoading = false
}, },
handleCancle() { handleCancle() {
this.model_cfg.visible = false this.model_cfg.visible = false
@ -499,6 +527,12 @@ export default {
}) })
}, },
handlePreview(row) { handlePreview(row) {
console.log(row)
return this.$preview({
path: row.FullPath,
type: 'pdf',
title: row.FileName,
})
if (row.FullPath) { if (row.FullPath) {
window.open(this.OSSclientConfig.basePath + row.FullPath, '_blank') window.open(this.OSSclientConfig.basePath + row.FullPath, '_blank')
} }

View File

@ -59,7 +59,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.MajorCN !isEN
? `${scope.row.Major} / ${scope.row.MajorCN}` ? `${scope.row.Major} / ${scope.row.MajorCN}`
: scope.row.Major : scope.row.Major
}} }}
@ -73,7 +73,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.OrganizationCN !isEN
? `${scope.row.Organization} / ${scope.row.OrganizationCN}` ? `${scope.row.Organization} / ${scope.row.OrganizationCN}`
: scope.row.Organization : scope.row.Organization
}} }}
@ -87,9 +87,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.CityCN !isEN ? `${scope.row.City} / ${scope.row.CityCN}` : scope.row.City
? `${scope.row.City} / ${scope.row.CityCN}`
: scope.row.City
}} }}
</template> </template>
</el-table-column> </el-table-column>
@ -101,7 +99,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.ProvinceCN !isEN
? `${scope.row.Province} / ${scope.row.ProvinceCN}` ? `${scope.row.Province} / ${scope.row.ProvinceCN}`
: scope.row.Province : scope.row.Province
}} }}
@ -115,7 +113,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.CountryCN !isEN
? `${scope.row.Country} / ${scope.row.CountryCN}` ? `${scope.row.Country} / ${scope.row.CountryCN}`
: scope.row.Country : scope.row.Country
}} }}
@ -191,7 +189,7 @@
</template> </template>
<template slot-scope="scope" v-else> <template slot-scope="scope" v-else>
{{ {{
scope.row.TrainingCN !isEN
? `${scope.row.Training} / ${scope.row.TrainingCN}` ? `${scope.row.Training} / ${scope.row.TrainingCN}`
: scope.row.Training : scope.row.Training
}} }}
@ -205,7 +203,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.MajorCN !isEN
? `${scope.row.Major} / ${scope.row.MajorCN}` ? `${scope.row.Major} / ${scope.row.MajorCN}`
: scope.row.Major : scope.row.Major
}} }}
@ -219,7 +217,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.HospitalCN !isEN
? `${scope.row.Hospital} / ${scope.row.HospitalCN}` ? `${scope.row.Hospital} / ${scope.row.HospitalCN}`
: scope.row.Hospital : scope.row.Hospital
}} }}
@ -233,7 +231,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.SchoolCN !isEN
? `${scope.row.School} / ${scope.row.SchoolCN}` ? `${scope.row.School} / ${scope.row.SchoolCN}`
: scope.row.School : scope.row.School
}} }}
@ -247,9 +245,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.CityCN !isEN ? `${scope.row.City} / ${scope.row.CityCN}` : scope.row.City
? `${scope.row.City} / ${scope.row.CityCN}`
: scope.row.City
}} }}
</template> </template>
</el-table-column> </el-table-column>
@ -261,7 +257,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.ProvinceCN !isEN
? `${scope.row.Province} / ${scope.row.ProvinceCN}` ? `${scope.row.Province} / ${scope.row.ProvinceCN}`
: scope.row.Province : scope.row.Province
}} }}
@ -275,7 +271,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ {{
scope.row.CountryCN !isEN
? `${scope.row.Country} / ${scope.row.CountryCN}` ? `${scope.row.Country} / ${scope.row.CountryCN}`
: scope.row.Country : scope.row.Country
}} }}
@ -922,6 +918,9 @@ export default {
}, },
computed: { computed: {
...mapGetters(['hospitalList']), ...mapGetters(['hospitalList']),
isEN() {
return this.$i18n.locale !== 'zh'
},
}, },
mounted() { mounted() {
this.initPage() this.initPage()

View File

@ -96,7 +96,50 @@ export default {
IdCard: '', IdCard: '',
BankPhoneNum: '', BankPhoneNum: '',
}, },
rules: {}, rules: {
BankNum: [
{
validator: (rule, value, callback) => {
let reg = new RegExp(/^[A-Za-z0-9]+$/, 'ig')
if (value && !reg.test(value)) {
callback(new Error(this.$t('common:ruleMessage:pattern')))
} else {
callback()
}
},
trigger: 'blur',
},
],
IdCard: [
{
validator: (rule, value, callback) => {
let reg = new RegExp(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/, 'ig')
if (value && !reg.test(value)) {
callback(new Error(this.$t('common:ruleMessage:pattern')))
} else {
callback()
}
},
trigger: 'blur',
},
],
BankPhoneNum: [
{
validator: (rule, value, callback) => {
let reg = new RegExp(
/^1(3[0-9]|4[01456879]|5[0-3,5-9]|6[2567]|7[0-8]|8[0-9]|9[0-3,5-9])d{8}$/,
'ig'
)
if (value && !reg.test(value)) {
callback(new Error(this.$t('common:ruleMessage:pattern')))
} else {
callback()
}
},
trigger: 'blur',
},
],
},
} }
}, },
mounted() { mounted() {

View File

@ -113,7 +113,7 @@
<el-form-item :label="$t('system:Setting:label:On Vacation:')"> <el-form-item :label="$t('system:Setting:label:On Vacation:')">
<span style="font-size: 12px; margin-right: 20px">{{ <span style="font-size: 12px; margin-right: 20px">{{
checkForm.InHoliday InHoliday
}}</span> }}</span>
<el-button type="text" @click="handleView">{{ <el-button type="text" @click="handleView">{{
$t('system:Setting:Planned Vacation') $t('system:Setting:Planned Vacation')
@ -217,6 +217,7 @@ import {
getVacationList, getVacationList,
addOrUpdateVacation, addOrUpdateVacation,
deleteVacation, deleteVacation,
getIsVacation,
} from '@/api/reviewers' } from '@/api/reviewers'
import { fmtDate } from '@/utils/formatter' import { fmtDate } from '@/utils/formatter'
export default { export default {
@ -259,6 +260,7 @@ export default {
pageSize: 5, pageSize: 5,
totalItems: 0, totalItems: 0,
loading2: false, loading2: false,
InHoliday: '',
} }
}, },
watch: { watch: {
@ -270,8 +272,23 @@ export default {
}, },
mounted() { mounted() {
this.initForm() this.initForm()
this.getIsVacation()
}, },
methods: { methods: {
//
async getIsVacation() {
try {
let data = {
DoctorId: this.doctorId,
}
let res = await getIsVacation(data)
if (res.IsSuccess) {
this.InHoliday = res.Result.IsVacation ? 'Yes' : 'No'
}
} catch (err) {
console.log(err)
}
},
initForm() { initForm() {
if (!this.doctorId) return if (!this.doctorId) return
getAuditState(this.doctorId).then((res) => { getAuditState(this.doctorId).then((res) => {
@ -381,7 +398,7 @@ export default {
.catch((action) => {}) .catch((action) => {})
}, },
closeDialog() { closeDialog() {
this.initForm() this.getIsVacation()
}, },
handleChange() { handleChange() {
if ( if (

View File

@ -406,10 +406,21 @@ export default {
}, },
computed: { computed: {
IndicationOptions() { IndicationOptions() {
console.log(
this.$d.IndicationType,
this.clinicalTrialForm.IndicationTypeId
)
if (!this.clinicalTrialForm.IndicationTypeId) return [] if (!this.clinicalTrialForm.IndicationTypeId) return []
let indicationGrouping = this.$d.IndicationType.filter( let indicationGroupingArr = this.$d.IndicationType.filter(
(item) => item.id === this.clinicalTrialForm.IndicationTypeId (item) => item.id === this.clinicalTrialForm.IndicationTypeId
)[0].raw.ChildGroup )
let indicationGrouping = null
if (
Array.isArray(indicationGroupingArr) &&
indicationGroupingArr.length > 0
) {
indicationGrouping = indicationGroupingArr[0].raw.ChildGroup
}
let arr = let arr =
this.$d.Indication.filter( this.$d.Indication.filter(
(item) => indicationGrouping === item.raw.ChildGroup (item) => indicationGrouping === item.raw.ChildGroup

View File

@ -107,6 +107,7 @@
:on-remove="handleRemoveFile2" :on-remove="handleRemoveFile2"
:show-file-list="true" :show-file-list="true"
:limit="1" :limit="1"
:accept="accept"
:file-list="fileList" :file-list="fileList"
> >
<el-button <el-button
@ -115,6 +116,7 @@
:disabled="fileList.length > 0" :disabled="fileList.length > 0"
>{{ $t('common:button:upload') }}</el-button >{{ $t('common:button:upload') }}</el-button
> >
<span>{{ $t('system:tip:file:pdf') }}</span>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item :label="$t('system:Agreements:label:Remark')"> <el-form-item :label="$t('system:Agreements:label:Remark')">
@ -226,6 +228,7 @@ export default {
], ],
}, },
fileList: [], fileList: [],
accept: '.pdf',
} }
}, },
watch: { watch: {
@ -285,19 +288,40 @@ export default {
this.form.FilePath = null this.form.FilePath = null
this.fileList = [] this.fileList = []
}, },
beforeUpload() { beforeUpload(row) {
if (this.fileList.length > 0) { if (this.fileList.length > 0) {
// this.$alert('') // this.$alert('')
this.$alert(this.$t('upload:rule:maxFile1')) this.$alert(this.$t('upload:rule:maxFile1'))
return return
} }
if (!this.checkFileSuffix(row.name)) {
this.$message.warning(`Must be in .pdf format`)
return false
}
},
checkFileSuffix(fileName) {
var index = fileName.lastIndexOf('.')
var suffix = fileName.substring(index + 1, fileName.length)
return (
this.accept.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) === 1
)
}, },
handlePreview3(row) { handlePreview3(row) {
return this.$preview({
path: row.FilePath,
type: 'pdf',
title: row.FileName,
})
if (row.FilePath) { if (row.FilePath) {
window.open(this.OSSclientConfig.basePath + row.FilePath, '_blank') window.open(this.OSSclientConfig.basePath + row.FilePath, '_blank')
} }
}, },
handlePreview2(row, r2) { handlePreview2(row, r2) {
return this.$preview({
path: row.FullPath,
type: 'pdf',
title: row.FileName,
})
if (row.fullPath) { if (row.fullPath) {
window.open(this.OSSclientConfig.basePath + row.fullPath, '_blank') window.open(this.OSSclientConfig.basePath + row.fullPath, '_blank')
} }

View File

@ -649,9 +649,16 @@ export default {
computed: { computed: {
IndicationOptions() { IndicationOptions() {
if (!this.form.IndicationTypeId) return [] if (!this.form.IndicationTypeId) return []
let indicationGrouping = this.$d.IndicationType.filter( let indicationGroupingArr = this.$d.IndicationType.filter(
(item) => item.id === this.form.IndicationTypeId (item) => item.id === this.form.IndicationTypeId
)[0].raw.ChildGroup )
let indicationGrouping = null
if (
Array.isArray(indicationGroupingArr) &&
indicationGroupingArr.length > 0
) {
indicationGrouping = indicationGroupingArr[0].raw.ChildGroup
}
let arr = let arr =
this.$d.Indication.filter( this.$d.Indication.filter(
(item) => indicationGrouping === item.raw.ChildGroup (item) => indicationGrouping === item.raw.ChildGroup

View File

@ -71,8 +71,6 @@
</template> </template>
<script> <script>
import { import {
getAuditState,
updateAuditResume,
getVacationList, getVacationList,
addOrUpdateVacation, addOrUpdateVacation,
deleteVacation, deleteVacation,

View File

@ -5,7 +5,9 @@
</el-button> </el-button>
<template v-if="DATA.FirstName && DATA.LastName"> <template v-if="DATA.FirstName && DATA.LastName">
<div class="userInfo"> <div class="userInfo">
<span>{{ DATA.FirstName }}{{ DATA.LastName }}</span> <span>{{
isEN ? DATA.FirstName + DATA.LastName : DATA.ChineseName
}}</span>
<span>{{ $fd('Sex', DATA.Sex) }}</span> <span>{{ $fd('Sex', DATA.Sex) }}</span>
<span v-if="isEN"> <span v-if="isEN">
{{ {{

View File

@ -168,7 +168,50 @@ export default {
appendToBody: true, appendToBody: true,
}, },
form: defaultForm(), form: defaultForm(),
rules: {}, rules: {
BankNum: [
{
validator: (rule, value, callback) => {
let reg = new RegExp(/^[A-Za-z0-9]+$/, 'ig')
if (value && !reg.test(value)) {
callback(new Error(this.$t('common:ruleMessage:pattern')))
} else {
callback()
}
},
trigger: 'blur',
},
],
IdCard: [
{
validator: (rule, value, callback) => {
let reg = new RegExp(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/, 'ig')
if (value && !reg.test(value)) {
callback(new Error(this.$t('common:ruleMessage:pattern')))
} else {
callback()
}
},
trigger: 'blur',
},
],
BankPhoneNum: [
{
validator: (rule, value, callback) => {
let reg = new RegExp(
/^1(3[0-9]|4[01456879]|5[0-3,5-9]|6[2567]|7[0-8]|8[0-9]|9[0-3,5-9])d{8}$/,
'ig'
)
if (value && !reg.test(value)) {
callback(new Error(this.$t('common:ruleMessage:pattern')))
} else {
callback()
}
},
trigger: 'blur',
},
],
},
loading: false, loading: false,
} }
}, },

View File

@ -5,8 +5,12 @@
<div class="message"> <div class="message">
<div class="userInfo"> <div class="userInfo">
<span v-if="isAll"> <span v-if="isAll">
{{ reviewerData.BasicInfoView.FirstName {{
}}{{ reviewerData.BasicInfoView.LastName }} isEN
? reviewerData.BasicInfoView.FirstName +
reviewerData.BasicInfoView.LastName
: reviewerData.BasicInfoView.ChineseName
}}
</span> </span>
<span v-else>{{ <span v-else>{{
isEN isEN
@ -39,7 +43,7 @@
<span> <span>
<span> <span>
{{ $t('system:Setting:title:Vacation') }} {{ $t('system:Setting:title:Vacation') }}
{{ reviewerData.AuditView.InHoliday ? 'Yes' : 'No' }} {{ InHoliday }}
</span> </span>
<el-button type="text" @click="handleView"> <el-button type="text" @click="handleView">
{{ $t('system:Setting:Planned Vacation') }} {{ $t('system:Setting:Planned Vacation') }}
@ -184,7 +188,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span <span
>{{ scope.row.BeginDateStr }}-{{ scope.row.EndDateStr }}</span >{{ scope.row.BeginDateStr }} ~ {{ scope.row.EndDateStr }}</span
> >
</template> </template>
</el-table-column> </el-table-column>
@ -249,7 +253,7 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span <span
>{{ scope.row.BeginDateStr }}-{{ scope.row.EndDateStr }}</span >{{ scope.row.BeginDateStr }} ~ {{ scope.row.EndDateStr }}</span
> >
</template> </template>
</el-table-column> </el-table-column>
@ -686,9 +690,12 @@
</div> </div>
</template> </template>
<script> <script>
import { getDetail } from '@/api/reviewers' import {
getDetail,
getIsVacation,
getDoctorCriterionFile,
} from '@/api/reviewers'
import { getAttachmentByType } from '@/api/attachment' import { getAttachmentByType } from '@/api/attachment'
import { getDoctorCriterionFile } from '@/api/reviewers'
import holiday from './components/info/holiday.vue' import holiday from './components/info/holiday.vue'
export default { export default {
name: 'curriculumVitaePreview', name: 'curriculumVitaePreview',
@ -737,6 +744,7 @@ export default {
loading: false, loading: false,
holidayVisible: false, holidayVisible: false,
InHoliday: '',
} }
}, },
computed: { computed: {
@ -828,8 +836,23 @@ export default {
this.getDetail() this.getDetail()
this.getResumeList() this.getResumeList()
this.initSowList() this.initSowList()
this.getIsVacation()
}, },
methods: { methods: {
//
async getIsVacation() {
try {
let data = {
DoctorId: this.reviewerId,
}
let res = await getIsVacation(data)
if (res.IsSuccess) {
this.InHoliday = res.Result.IsVacation ? 'Yes' : 'No'
}
} catch (err) {
console.log(err)
}
},
// //
async getDetail() { async getDetail() {
try { try {
@ -910,6 +933,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.curriculumVitaePreview { .curriculumVitaePreview {
display: flex; display: flex;
padding: 0 100px;
.title { .title {
font-size: 18px; font-size: 18px;
border: none; border: none;