286 lines
11 KiB
Plaintext
286 lines
11 KiB
Plaintext
<template>
|
|
<div class="form-container">
|
|
<el-card class="box-card">
|
|
<div style="width:80%;">
|
|
<el-form
|
|
ref="specialtyForm"
|
|
v-loading="loading"
|
|
:rules="specialtyRules"
|
|
:model="specialtyForm"
|
|
class="demo-ruleForm"
|
|
label-width="150px"
|
|
>
|
|
<el-row>
|
|
<el-col :span="12">
|
|
<el-form-item label="Specialty: " prop="SpecialityId">
|
|
<el-select
|
|
v-model="specialtyForm.SpecialityId"
|
|
placeholder="Please select"
|
|
style="width:100%;"
|
|
size="small"
|
|
>
|
|
<!-- <el-option
|
|
v-for="(key,value) of dictionaryList.Department"
|
|
:key="key"
|
|
:label="key"
|
|
:value="value"
|
|
/> -->
|
|
<el-option
|
|
v-for="item of dictionaryList.Department"
|
|
:key="item.Id"
|
|
:label="item.Value"
|
|
:value="item.Id"
|
|
/>
|
|
<el-option label="Other" :value="otherId" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item v-if="specialtyForm.SpecialityId==otherId" class="other-item" prop="SpecialityOther">
|
|
<el-input
|
|
v-model="specialtyForm.SpecialityOther"
|
|
placeholder="Please specify (required)"
|
|
size="small"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item v-if="specialtyForm.SpecialityId==otherId" prop="SpecialityOtherCN" class="other-item">
|
|
<el-input
|
|
v-model="specialtyForm.SpecialityOtherCN"
|
|
placeholder="请用中文注明"
|
|
size="small"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="12">
|
|
<el-form-item label="Subspeciality: " prop="SubspecialityIds">
|
|
<el-select
|
|
v-model="specialtyForm.SubspecialityIds"
|
|
placeholder="select"
|
|
multiple
|
|
style="width:100%;"
|
|
size="small"
|
|
>
|
|
<!-- <el-option
|
|
v-for="(key,value) of dictionaryList.Subspeciality"
|
|
:key="key"
|
|
:label="key"
|
|
:value="value"
|
|
/> -->
|
|
<el-option
|
|
v-for="item of dictionaryList.Subspeciality"
|
|
:key="item.Id"
|
|
:label="item.Value"
|
|
:value="item.Id"
|
|
/>
|
|
<el-option label="Other" :value="otherId" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item
|
|
v-if="specialtyForm.SubspecialityIds && specialtyForm.SubspecialityIds.indexOf(otherId)>-1"
|
|
class="other-item"
|
|
prop="SubspecialityOther"
|
|
>
|
|
<el-input
|
|
v-model="specialtyForm.SubspecialityOther"
|
|
placeholder="Please specify (required)"
|
|
size="small"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item
|
|
v-if="specialtyForm.SubspecialityIds && specialtyForm.SubspecialityIds.indexOf(otherId)>-1"
|
|
class="other-item"
|
|
prop="SubspecialityOtherCN"
|
|
>
|
|
<el-input
|
|
v-model="specialtyForm.SubspecialityOtherCN"
|
|
placeholder="请用中文注明"
|
|
size="small"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row>
|
|
<el-col :span="12">
|
|
<el-form-item label="Modality: " prop="ReadingTypeIds">
|
|
<el-select
|
|
v-model="specialtyForm.ReadingTypeIds"
|
|
placeholder="Please select"
|
|
style="width:100%;"
|
|
multiple
|
|
size="small"
|
|
>
|
|
<!-- <el-option
|
|
v-for="(key,value) of dictionaryList.ReadingType"
|
|
:key="key"
|
|
:label="key"
|
|
:value="value"
|
|
/> -->
|
|
<el-option
|
|
v-for="item of dictionaryList.ReadingType"
|
|
:key="item.Id"
|
|
:label="item.Value"
|
|
:value="item.Id"
|
|
/>
|
|
<el-option label="Other" :value="otherId" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item
|
|
v-if="specialtyForm.ReadingTypeIds && specialtyForm.ReadingTypeIds.indexOf(otherId)>-1"
|
|
prop="ReadingTypeOther"
|
|
class="other-item"
|
|
>
|
|
<el-input
|
|
v-model="specialtyForm.ReadingTypeOther"
|
|
placeholder="Please specify (required)"
|
|
size="small"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-form-item
|
|
v-if="specialtyForm.ReadingTypeIds && specialtyForm.ReadingTypeIds.indexOf(otherId)>-1"
|
|
prop="ReadingTypeOtherCN"
|
|
class="other-item"
|
|
>
|
|
<el-input
|
|
v-model="specialtyForm.ReadingTypeOtherCN"
|
|
placeholder="请用中文注明"
|
|
size="small"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-form-item>
|
|
<el-button type="primary" :disabled="isDisabled" size="small" @click="handleSave">Save</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
</div>
|
|
</el-card>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import { getSpecialtyInfo, updateSpecialtyInfo } from '@/api/reviewers'
|
|
import { getBasicDataSelects } from '@/api/dictionary/dictionary'
|
|
export default {
|
|
name: 'Specialty',
|
|
data() {
|
|
return {
|
|
specialtyForm: {
|
|
ReadingTypeIds: [],
|
|
ReadingTypeOther: '',
|
|
ReadingTypeOtherCN: '',
|
|
SubspecialityIds: [],
|
|
SubspecialityOther: '',
|
|
SubspecialityOtherCN: '',
|
|
SpecialityId: '',
|
|
SpecialityOther: '',
|
|
SpecialityOtherCN: ''
|
|
},
|
|
specialtyRules: {
|
|
SpecialityId: [{ required: true, message: 'Please select speciality', trigger: 'blur' }],
|
|
SpecialityOther: [
|
|
{ required: true, message: 'Please specify', trigger: 'blur' },
|
|
{ max: 50, message: 'The maximum length is 50' }
|
|
],
|
|
SpecialityOtherCN: [{ max: 50, message: 'The maximum length is 50' }],
|
|
ReadingTypeIds: [{ required: true, message: 'Please select clinical reading type', trigger: 'blur' }],
|
|
ReadingTypeOther: [
|
|
{ required: true, message: 'Please specify', trigger: 'blur' },
|
|
{ max: 50, message: 'The maximum length is 50' }
|
|
],
|
|
ReadingTypeOtherCN: [
|
|
{ max: 50, message: 'The maximum length is 50' }
|
|
],
|
|
SubspecialityIds: [{ required: true, message: 'Please select subspecialty', trigger: 'blur' }],
|
|
SubspecialityOther: [
|
|
{ required: true, message: 'Please specify', trigger: 'blur' },
|
|
{ max: 50, message: 'The maximum length is 50' }
|
|
],
|
|
SubspecialityOtherCN: [
|
|
{ max: 50, message: 'The maximum length is 50' }
|
|
]
|
|
},
|
|
selectId: '00000000-0000-0000-0000-000000000000',
|
|
otherId: 'ef84e9cb-f1a6-49d7-b6da-34be2c12abd5',
|
|
isDisabled: false,
|
|
loading: false,
|
|
dictionaryList: {}
|
|
}
|
|
},
|
|
mounted() {
|
|
this.initSpecialty()
|
|
},
|
|
methods: {
|
|
handleSave() {
|
|
this.$refs.specialtyForm.validate(valid => {
|
|
if (valid) {
|
|
this.isDisabled = true
|
|
const params = {}
|
|
params.ReadingTypeIds = this.specialtyForm.ReadingTypeIds
|
|
params.ReadingTypeOther = params.ReadingTypeIds.indexOf(this.otherId) > -1 ? this.specialtyForm.ReadingTypeOther : ''
|
|
params.ReadingTypeOtherCN = params.ReadingTypeIds.indexOf(this.otherId) > -1 ? this.specialtyForm.ReadingTypeOtherCN : ''
|
|
params.SubspecialityIds = this.specialtyForm.SubspecialityIds
|
|
params.SubspecialityOther = params.SubspecialityIds.indexOf(this.otherId) > -1 ? this.specialtyForm.SubspecialityOther : ''
|
|
params.SubspecialityOtherCN = params.SubspecialityIds.indexOf(this.otherId) > -1 ? this.specialtyForm.SubspecialityOtherCN : ''
|
|
params.SpecialityId = this.specialtyForm.SpecialityId
|
|
params.SpecialityOther = params.SpecialityId === this.otherId ? this.specialtyForm.SpecialityOther : ''
|
|
params.SpecialityOtherCN = params.SpecialityId === this.otherId ? this.specialtyForm.SpecialityOtherCN : ''
|
|
params.Id = this.$route.query.Id
|
|
updateSpecialtyInfo(params).then(res => {
|
|
this.isDisabled = false
|
|
this.$message.success('Saved successfully')
|
|
this.specialtyForm.Id = res.Result
|
|
})
|
|
.catch(() => {
|
|
this.isDisabled = false
|
|
})
|
|
}
|
|
})
|
|
},
|
|
initForm() {
|
|
this.loading = true
|
|
const id = this.$route.query.Id
|
|
if (id) {
|
|
getSpecialtyInfo(id).then(res => {
|
|
this.specialtyForm.ReadingTypeIds = res.Result.ReadingTypeIds.length > 0 ? res.Result.ReadingTypeIds : []
|
|
this.specialtyForm.ReadingTypeOther = res.Result.ReadingTypeOther
|
|
this.specialtyForm.ReadingTypeOtherCN = res.Result.ReadingTypeOtherCN
|
|
this.specialtyForm.SubspecialityIds = res.Result.SubspecialityIds
|
|
this.specialtyForm.SubspecialityOther = res.Result.SubspecialityOther
|
|
this.specialtyForm.SubspecialityOtherCN = res.Result.SubspecialityOtherCN
|
|
this.specialtyForm.SpecialityId = res.Result.SpecialityId === this.selectId ? '' : res.Result.SpecialityId
|
|
this.specialtyForm.SpecialityOther = res.Result.SpecialityOther
|
|
this.specialtyForm.SpecialityOtherCN = res.Result.SpecialityOtherCN
|
|
this.loading = false
|
|
}).catch(() => { this.loading = false })
|
|
}
|
|
},
|
|
async initSpecialty() {
|
|
await this.getDicData()
|
|
this.initForm()
|
|
},
|
|
getDicData() {
|
|
getBasicDataSelects(['Department', 'Subspeciality', 'ReadingType']).then(res => {
|
|
this.dictionaryList = { ...res.Result }
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss">
|
|
.other-item .el-form-item__content{
|
|
margin-left: 80px !important;
|
|
}
|
|
</style>
|