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',
data: param
})
}
// 获取医生是否休假
export function getIsVacation(param) {
return request({
url: `/Vacation/getIsVacation`,
method: 'post',
data: param
})
}

View File

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

View File

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

View File

@ -96,7 +96,50 @@ export default {
IdCard: '',
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() {

View File

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

View File

@ -406,10 +406,21 @@ export default {
},
computed: {
IndicationOptions() {
console.log(
this.$d.IndicationType,
this.clinicalTrialForm.IndicationTypeId
)
if (!this.clinicalTrialForm.IndicationTypeId) return []
let indicationGrouping = this.$d.IndicationType.filter(
let indicationGroupingArr = this.$d.IndicationType.filter(
(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 =
this.$d.Indication.filter(
(item) => indicationGrouping === item.raw.ChildGroup

View File

@ -107,6 +107,7 @@
:on-remove="handleRemoveFile2"
:show-file-list="true"
:limit="1"
:accept="accept"
:file-list="fileList"
>
<el-button
@ -115,6 +116,7 @@
:disabled="fileList.length > 0"
>{{ $t('common:button:upload') }}</el-button
>
<span>{{ $t('system:tip:file:pdf') }}</span>
</el-upload>
</el-form-item>
<el-form-item :label="$t('system:Agreements:label:Remark')">
@ -226,6 +228,7 @@ export default {
],
},
fileList: [],
accept: '.pdf',
}
},
watch: {
@ -285,19 +288,40 @@ export default {
this.form.FilePath = null
this.fileList = []
},
beforeUpload() {
beforeUpload(row) {
if (this.fileList.length > 0) {
// this.$alert('')
this.$alert(this.$t('upload:rule:maxFile1'))
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) {
return this.$preview({
path: row.FilePath,
type: 'pdf',
title: row.FileName,
})
if (row.FilePath) {
window.open(this.OSSclientConfig.basePath + row.FilePath, '_blank')
}
},
handlePreview2(row, r2) {
return this.$preview({
path: row.FullPath,
type: 'pdf',
title: row.FileName,
})
if (row.fullPath) {
window.open(this.OSSclientConfig.basePath + row.fullPath, '_blank')
}

View File

@ -649,9 +649,16 @@ export default {
computed: {
IndicationOptions() {
if (!this.form.IndicationTypeId) return []
let indicationGrouping = this.$d.IndicationType.filter(
let indicationGroupingArr = this.$d.IndicationType.filter(
(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 =
this.$d.Indication.filter(
(item) => indicationGrouping === item.raw.ChildGroup

View File

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

View File

@ -5,7 +5,9 @@
</el-button>
<template v-if="DATA.FirstName && DATA.LastName">
<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 v-if="isEN">
{{

View File

@ -168,7 +168,50 @@ export default {
appendToBody: true,
},
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,
}
},

View File

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