|
@@ -1,19 +1,38 @@
|
|
<template>
|
|
<template>
|
|
<div class="doctor-edit">
|
|
<div class="doctor-edit">
|
|
<el-form ref="submitForm" class="doctor-edit-form" label-width="140px" :model="formData" :rules="rules">
|
|
<el-form ref="submitForm" class="doctor-edit-form" label-width="140px" :model="formData" :rules="rules">
|
|
- <el-form-item label="医师姓名:" prop="doctorName">
|
|
|
|
- <el-input v-model="formData.doctorName" type="text" placeholder="请输入医师姓名" :maxlength="30" />
|
|
|
|
|
|
+ <el-form-item label="操作医师姓名:" prop="doctorName">
|
|
|
|
+ <el-input v-model="formData.doctorName" type="text" placeholder="请输入操作医师姓名" :maxlength="30" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="从业资格证编号:" prop="certificateNo">
|
|
<el-form-item label="从业资格证编号:" prop="certificateNo">
|
|
<el-input v-model="formData.certificateNo" placeholder="请输入从业资格证编号" />
|
|
<el-input v-model="formData.certificateNo" placeholder="请输入从业资格证编号" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="所在机构:" prop="clubName">
|
|
|
|
|
|
+ <!-- <el-form-item label="所在机构:" prop="clubName">
|
|
<el-input v-model="formData.clubName" placeholder="请输入机构名称" />
|
|
<el-input v-model="formData.clubName" placeholder="请输入机构名称" />
|
|
|
|
+ </el-form-item> -->
|
|
|
|
+ <el-form-item label="所在机构:" prop="clubName">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="selectClub"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ filterable
|
|
|
|
+ allow-create
|
|
|
|
+ default-first-option
|
|
|
|
+ placeholder="所在机构"
|
|
|
|
+ @change="onDoctorClubChange"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="item in clubList"
|
|
|
|
+ :key="item.authId"
|
|
|
|
+ :label="item.authParty"
|
|
|
|
+ :value="item.authId"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ <el-input v-show="false" v-model="formData.clubName" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="医师照片:" prop="doctorImage">
|
|
|
|
|
|
+ <el-form-item label="操作医师照片:" prop="doctorImage">
|
|
<el-input v-show="false" v-model="formData.doctorImage" />
|
|
<el-input v-show="false" v-model="formData.doctorImage" />
|
|
<upload-image
|
|
<upload-image
|
|
- tip="提示:上传医师个人照片,建议尺寸:200px * 200px"
|
|
|
|
|
|
+ tip="提示:上传操作医师个人照片,建议尺寸:200px * 200px"
|
|
:image-list="doctorImageList"
|
|
:image-list="doctorImageList"
|
|
:before-upload="beforeDoctorImageUpload"
|
|
:before-upload="beforeDoctorImageUpload"
|
|
@success="uploadDoctorImageSuccess"
|
|
@success="uploadDoctorImageSuccess"
|
|
@@ -32,18 +51,24 @@
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="操作医师标签">
|
|
|
|
|
|
+ <el-form-item label="操作医师标签" prop="tagList">
|
|
|
|
+ <el-input v-show="false" v-model="formData.tagList" />
|
|
<div class="tag-control">
|
|
<div class="tag-control">
|
|
- <el-input />
|
|
|
|
- <el-button type="primary">添加</el-button>
|
|
|
|
|
|
+ <input v-model="tagName" class="el-input el-input__inner" placeholder="输入标签名后点击添加按钮">
|
|
|
|
+ <el-button type="primary" @click="addTag">添加</el-button>
|
|
</div>
|
|
</div>
|
|
<div class="tag-list">
|
|
<div class="tag-list">
|
|
- <el-tag closable>医师标签</el-tag>
|
|
|
|
|
|
+ <el-tag v-for="(item,index) in addTagList" :key="index" closable @close="onTagClose(index)">{{ item }}</el-tag>
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="自定义属性">
|
|
<el-form-item label="自定义属性">
|
|
- <doctor-custom-items ref="customItems" @change="customItemsChange" />
|
|
|
|
|
|
+ <doctor-custom-items v-if="!isRequest" ref="customItems" @change="customItemsChange" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+
|
|
|
|
+ <el-form-item label="具备操作资格设备:" prop="equipment">
|
|
|
|
+ <el-input v-show="false" v-model="formData.equipment" />
|
|
|
|
+ <device-section v-if="!isRequest" ref="subForm" :list="deviceList" @change="deviceListDataChange" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
</el-form>
|
|
@@ -57,12 +82,13 @@
|
|
<script>
|
|
<script>
|
|
import { Promise } from 'jszip/lib/external'
|
|
import { Promise } from 'jszip/lib/external'
|
|
import { mapGetters } from 'vuex'
|
|
import { mapGetters } from 'vuex'
|
|
-import UploadImage from '@/components/UploadImage'
|
|
|
|
|
|
+import DeviceSection from '@/views/components/DeviceSection/index.vue'
|
|
import DoctorCustomItems from '@/views/components/DoctorCustomItems/index.vue'
|
|
import DoctorCustomItems from '@/views/components/DoctorCustomItems/index.vue'
|
|
-import { doctorSave, doctorFormData } from '@/api/doctor'
|
|
|
|
|
|
+import UploadImage from '@/components/UploadImage'
|
|
|
|
+import { doctorSave, doctorFormData, fetchDoctorClubList } from '@/api/doctor'
|
|
|
|
|
|
export default {
|
|
export default {
|
|
- components: { DoctorCustomItems, UploadImage },
|
|
|
|
|
|
+ components: { DeviceSection, UploadImage, DoctorCustomItems },
|
|
data() {
|
|
data() {
|
|
var validateCertificateNo = (rule, value, callback) => {
|
|
var validateCertificateNo = (rule, value, callback) => {
|
|
if (value === '') {
|
|
if (value === '') {
|
|
@@ -83,12 +109,15 @@ export default {
|
|
point: {},
|
|
point: {},
|
|
disabled: false,
|
|
disabled: false,
|
|
formData: {
|
|
formData: {
|
|
|
|
+ authId: '',
|
|
|
|
+ doctorType: 2,
|
|
doctorName: '',
|
|
doctorName: '',
|
|
certificateNo: '',
|
|
certificateNo: '',
|
|
clubName: '',
|
|
clubName: '',
|
|
banner: '',
|
|
banner: '',
|
|
doctorImage: '',
|
|
doctorImage: '',
|
|
- equipment: ''
|
|
|
|
|
|
+ equipment: '',
|
|
|
|
+ tagList: ''
|
|
},
|
|
},
|
|
rules: {
|
|
rules: {
|
|
doctorName: [
|
|
doctorName: [
|
|
@@ -99,14 +128,24 @@ export default {
|
|
clubName: [{ required: true, message: '所在机构不能为空', trigger: ['blur', 'change'] }],
|
|
clubName: [{ required: true, message: '所在机构不能为空', trigger: ['blur', 'change'] }],
|
|
doctorImage: [{ required: true, message: '请上传医师照片', trigger: 'change' }],
|
|
doctorImage: [{ required: true, message: '请上传医师照片', trigger: 'change' }],
|
|
banner: [{ required: true, message: '请上传至少一张轮播图', trigger: 'change' }],
|
|
banner: [{ required: true, message: '请上传至少一张轮播图', trigger: 'change' }],
|
|
- equipment: [{ required: true, message: '具备操作资格设备不能为空', trigger: 'change' }]
|
|
|
|
|
|
+ equipment: [{ required: true, message: '具备操作资格设备不能为空', trigger: 'change' }],
|
|
|
|
+ tagList: [{ required: true, message: '医师标签不能为空', trigger: 'change' }]
|
|
},
|
|
},
|
|
// logo图片列表
|
|
// logo图片列表
|
|
doctorImageList: [],
|
|
doctorImageList: [],
|
|
// banner图片列表
|
|
// banner图片列表
|
|
bannerList: [],
|
|
bannerList: [],
|
|
// 资格仪器列表
|
|
// 资格仪器列表
|
|
- deviceList: []
|
|
|
|
|
|
+ deviceList: [],
|
|
|
|
+ // 机构列表
|
|
|
|
+ clubList: [],
|
|
|
|
+ selectClub: '',
|
|
|
|
+ // 添加标签名
|
|
|
|
+ tagName: '',
|
|
|
|
+ // 医师标签列表
|
|
|
|
+ addTagList: [],
|
|
|
|
+ // 自定义参数列表
|
|
|
|
+ paramList: []
|
|
}
|
|
}
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -121,16 +160,54 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ watch: {
|
|
|
|
+ addTagList: {
|
|
|
|
+ handler: function(nVal) {
|
|
|
|
+ this.formData.tagList = this.addTagList.join(',')
|
|
|
|
+ },
|
|
|
|
+ deep: true
|
|
|
|
+ }
|
|
|
|
+ },
|
|
created() {
|
|
created() {
|
|
this.doctorId = parseInt(this.$route.query.id)
|
|
this.doctorId = parseInt(this.$route.query.id)
|
|
this.editType = this.$route.query.type || 'edit'
|
|
this.editType = this.$route.query.type || 'edit'
|
|
|
|
+ this.fetchDoctorClubList()
|
|
this.initFormData()
|
|
this.initFormData()
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
|
|
|
|
+ // 添加标签
|
|
|
|
+ addTag() {
|
|
|
|
+ this.addTagList.push(this.tagName.trim())
|
|
|
|
+ this.tagName = ''
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 删除标签
|
|
|
|
+ onTagClose(index) {
|
|
|
|
+ this.addTagList.splice(index, 1)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 选择医师机构
|
|
|
|
+ onDoctorClubChange(value) {
|
|
|
|
+ if (typeof value === 'number') {
|
|
|
|
+ this.formData.authId = value
|
|
|
|
+ this.formData.clubName = '非自定义'
|
|
|
|
+ } else {
|
|
|
|
+ this.formData.authId = -1
|
|
|
|
+ this.formData.clubName = value
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
// 自定义字段变化
|
|
// 自定义字段变化
|
|
customItemsChange(list) {
|
|
customItemsChange(list) {
|
|
console.log(list)
|
|
console.log(list)
|
|
|
|
+ this.paramList = list
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 具备操作资格设备列表数据变化
|
|
|
|
+ deviceListDataChange(list) {
|
|
|
|
+ this.deviceList = list
|
|
|
|
+ this.formData.equipment = list.length || ''
|
|
},
|
|
},
|
|
|
|
|
|
// 表单数据回显
|
|
// 表单数据回显
|
|
@@ -150,18 +227,32 @@ export default {
|
|
this.formData.certificateNo = data.certificateNo
|
|
this.formData.certificateNo = data.certificateNo
|
|
this.formData.clubName = data.clubName
|
|
this.formData.clubName = data.clubName
|
|
this.formData.doctorImage = data.doctorImage
|
|
this.formData.doctorImage = data.doctorImage
|
|
|
|
+ this.formData.authId = data.authId
|
|
|
|
|
|
this.formData.banner = data.bannerList.length
|
|
this.formData.banner = data.bannerList.length
|
|
this.formData.equipmentList = data.equipmentList.length
|
|
this.formData.equipmentList = data.equipmentList.length
|
|
this.doctorImageList.push({ url: data.doctorImage, name: 'doctor' })
|
|
this.doctorImageList.push({ url: data.doctorImage, name: 'doctor' })
|
|
this.bannerList = data.bannerList.map(item => ({ url: item, name: '' }))
|
|
this.bannerList = data.bannerList.map(item => ({ url: item, name: '' }))
|
|
|
|
+ this.deviceList = data.equipmentList
|
|
|
|
+ this.paramList = data.paramList
|
|
|
|
+ this.addTagList = data.tagList
|
|
|
|
+
|
|
|
|
+ this.selectClub = !data.authId ? data.clubName : data.authId
|
|
|
|
|
|
this.isRequest = false
|
|
this.isRequest = false
|
|
|
|
+
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.$refs.customItems.setParamsItem(this.paramList)
|
|
|
|
+ })
|
|
},
|
|
},
|
|
|
|
|
|
// 提交表单验证
|
|
// 提交表单验证
|
|
submit() {
|
|
submit() {
|
|
- Promise.all([this.$refs.customItems.valideAllForm(), this.$refs.submitForm.validate()]).then(res => {
|
|
|
|
|
|
+ Promise.all([
|
|
|
|
+ this.$refs.subForm.valideAllForm(),
|
|
|
|
+ this.$refs.submitForm.validate(),
|
|
|
|
+ this.$refs.customItems.valideAllForm()
|
|
|
|
+ ]).then(res => {
|
|
this.save()
|
|
this.save()
|
|
})
|
|
})
|
|
},
|
|
},
|
|
@@ -176,7 +267,11 @@ export default {
|
|
doctorName: this.formData.doctorName,
|
|
doctorName: this.formData.doctorName,
|
|
certificateNo: this.formData.certificateNo,
|
|
certificateNo: this.formData.certificateNo,
|
|
clubName: this.formData.clubName,
|
|
clubName: this.formData.clubName,
|
|
- doctorImage: this.formData.doctorImage
|
|
|
|
|
|
+ doctorImage: this.formData.doctorImage,
|
|
|
|
+ tagList: this.addTagList,
|
|
|
|
+ authId: this.formData.authId,
|
|
|
|
+ doctorType: this.formData.doctorType,
|
|
|
|
+ paramList: this.paramList
|
|
}
|
|
}
|
|
|
|
|
|
console.log(this.formData)
|
|
console.log(this.formData)
|
|
@@ -186,10 +281,20 @@ export default {
|
|
doctorSave(data).then(res => {
|
|
doctorSave(data).then(res => {
|
|
this.$message.success('保存成功')
|
|
this.$message.success('保存成功')
|
|
this.$store.dispatch('tagsView/delView', this.$route)
|
|
this.$store.dispatch('tagsView/delView', this.$route)
|
|
- this.$router.push('/doctor/list')
|
|
|
|
|
|
+ this.$router.push('/personnel/training/list')
|
|
})
|
|
})
|
|
},
|
|
},
|
|
|
|
|
|
|
|
+ // 获取医师机构列表
|
|
|
|
+ async fetchDoctorClubList() {
|
|
|
|
+ try {
|
|
|
|
+ const res = await fetchDoctorClubList({ authUserId: this.authUserId })
|
|
|
|
+ this.clubList = res.data
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.log(error)
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
// 医师照片上传
|
|
// 医师照片上传
|
|
uploadDoctorImageSuccess({ response, file, fileList }) {
|
|
uploadDoctorImageSuccess({ response, file, fileList }) {
|
|
this.doctorImageList = fileList
|
|
this.doctorImageList = fileList
|