@@ -91,7 +91,7 @@
<template #action=" { record } ">
<a-space>
<a-button v-has=" 'admin:sysDoctor:detail' " type=" text "
@click=" handleDetail ( record ) "><icon-edit />详情</a-button>
@click=" handleDetail ( record ) "><icon-book />详情</a-button>
<a-button v-has=" 'admin:sysDoctor:edit' " type=" text " @click=" handleUpdate ( record ) "><icon-edit /> 修改</a-button>
<a-button v-has=" 'admin:sysDoctor:remove' " type=" text "
@click=" ( ) => { deleteVisible = true ; deleteData = [ record . doctor _id ] ; } "><icon-delete /> 删除</a-button>
@@ -108,38 +108,50 @@
</div>
<a-form :model=" modalForm " :disabled=" modalSatus == 'detail' " :rules=" rules " ref=" modalFormRef "
:auto-label-width=" true ">
<a-form-item field=" avatar " label=" 医生头像 : ">
<a-space size =" large ">
<a-avatar :size =" 80 " :imageUrl=" modalForm . avatar ">
</a-avatar >
</a-space >
<a-upload action=" / " :fileList=" file ? [ file ] : [ ] " class=" upload " :auto-upload=" false " @change=" onChangeFile "
accept=" image / png , image / jpeg " @before-upload=" beforeUpload " :show-file-list=" false "
v-if=" modalSatus != 'detail' " />
</a-form-item>
<a-row :gutter=" 24 ">
<a-col :span =" 12 ">
<a-form-item field =" avatar " label=" 医生头像 : ">
<a-space size=" large " >
<a-avatar :size=" 80 " :imageUrl=" modalForm . avatar " >
</a-avatar>
</a-space>
<a-upload action=" / " :fileList=" file ? [ file ] : [ ] " class=" upload " :auto-upload=" false "
@change=" onChangeFile " accept=" image /*" @before-upload="beforeUpload" :show-file-list="false"
v-if="modalSatus!='detail'" />
</a-form-item>
</a-col>
<a-col :span="12" v-if="modalSatus=='add'">
<a-form-item field="user.mobile" label="联系电话:">
<a-input v-model="modalForm.user.mobile" placeholder="请输入联系电话" />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<a-form-item field="user_name" label="医生名字:">
{{ modalForm.user_name}}
<a-input v-model=" modalForm.user_name" placeholder="请输入医生名字" :disabled="modalSatus=='edit'"/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item field=" idCard " label=" 身份证号 : ">
<div class=" box " v-show=" ! showEye " >
<a-form-item field="card_num " label="身份证号: " v-if="modalSatus=='add' ">
<a-input v-model="modalForm.card_num" placeholder="请输入身份证号" / >
</a-form-item>
<a-form-item field="idCard" label="身份证号:" v-else>
<div class="box" v-show="!showEye && modalSatus!='add'">
<div>{{modalForm.user_doctor_info.card_num_mask}}</div>
<icon-eye-invisible class="eye" @click="()=>{showEye=true}" />
</div>
<div class=" box " v-show=" showEye ">
<div class="box " v-show="showEye && modalSatus!='add' ">
<div>{{id_card_num}}</div>
<icon-eye class="eye" @click="()=>{showEye=false}" />
</div>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter=" 24 ">
<a-row :gutter="24" v-if="modalSatus!='add' ">
<a-col :span="12">
<a-form-item field=" mobile " label=" 联系电话 : ">
{{ modalForm.user.mobile}}
<a-form-item field="user.mobile " label="联系电话: ">
<a-input v-model=" modalForm.user.mobile" placeholder="请输入联系电话" />
</a-form-item>
</a-col>
<a-col :span="12">
@@ -151,23 +163,28 @@
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<a-form-item field=" address " label=" 医院地址 : ">
<a-form-item field="hospital.address " label="医院地址: ">
<a-input v-model="modalForm.hospital.address" placeholder="请输入医院地址" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item field=" hospital _name " label=" 医院名称 : ">
<a-input v-model=" modalForm . hospital . hospital _name " placeholder=" 请输入医院名称 " / >
<a-form-item field="hospital.hospital_name " label="医院名称: ">
<a-select placeholder="请选择所在医院" v-model="modalForm.hospital.hospital_name" >
<a-option v-for="item in hospitalData" :key="item.hospital_id" :value="item.hospital_id"
:label="item.hospital_name">{{item.hospital_name}}</a-option>
</a-select>
<!-- <a-input v-model="modalForm.hospital.hospital_name" placeholder="请输入医院名称" /> -->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<a-form-item field="department_custom_id" label="所在科室:">
<a-select placeholder=" 请选择所在科室 " v-model=" modalForm . department _custom _id ">
<a-select placeholder="请选择所在科室" v-model="modalForm.department_custom_id" @change="changeSelect ">
<a-option v-for="item in departmentData" :key="item.department_custom_id"
:value=" item . department _custom _id "
:label=" item . department _custom _name "> {{item.department_custom_name}}</a-option>
:value="item.department_custom_id" :label="item.department_custom_name">
{{item.department_custom_name}}
</a-option>
</a-select>
</a-form-item>
@@ -181,7 +198,11 @@
<a-row :gutter="24">
<a-col :span="12">
<a-form-item field="doctor_title" label="职 称 : ">
<a-input v-model=" doctor _title _name " placeholder=" 请输入职称 " / >
<a-select placeholder="请选择所在医院" v-model="modalForm.doctor_title" >
<a-option v-for="item in doctor_title_data" :key="item.doctor_title" :value="item.doctor_title"
:label="item.doctor_title_name">{{item.doctor_title_name}}</a-option>
</a-select>
<!-- <a-input v-model="doctor_title_name" placeholder="请输入职称" /> -->
</a-form-item>
</a-col>
<a-col :span="12">
@@ -200,30 +221,33 @@
</a-row> -->
<a-row :gutter="24">
<a-col :span="24">
<a-form-item field=" qualification _cert _num " label=" 资格证编码 : ">
<a-input v-model=" modalForm . user _doctor _info . qualification _cert _num " placeholder=" 请输入部门名称 " />
<a-form-item field="user_doctor_info.qualification_cert_num " label="资格证编码: ">
<a-input v-model="modalForm.user_doctor_info.qualification_cert_num " placeholder="请输入资格证编码 " />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<a-form-item field=" user _name " label=" 专长 : ">
<a-textarea v-model=" modalForm . remark " placeholder=" 请输入备注内容 " / >
<a-form-item field="cur_doctor_expertise" label="专长: ">
<a-select multiple placeholder="请选择专长" v-model="modalForm.cur_doctor_expertise" >
<a-option v-for="item in expertiseData" :key="item.expertise_id" :value="item.expertise_id"
:label="item.expertise_name">{{item.expertise_name}}</a-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<a-form-item field="be_good_at" label="擅长信息:">
<a-textarea v-model=" modalForm . be _good _at " placeholder=" 请输入备注内容 " />
<a-textarea v-model="modalForm.be_good_at" placeholder="请填写医生擅长信息。内容为医生专业领域、擅长疾病、研究方法等信息(字数在10-1000字) " />
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<a-form-item field="brief_introduction" label="个人简介:">
<a-textarea v-model=" modalForm . brief _introduction " placeholder=" 请输入备注内容 " />
<a-textarea v-model="modalForm.brief_introduction" placeholder="请填写医生从业经历,职称和所获荣誉等信息(字数在10-1000字) " />
</a-form-item>
</a-col>
</a-row>
@@ -233,135 +257,193 @@
<div class="name">是否推荐</div>
</div>
<a-row :gutter="24" style="margin-top: 35px;">
<a-col :span=" 4 ">
<a-form-item field=" " label=" 状态 : ">
<a-col :span="12 ">
<a-form-item field="is_recommend" label="状态: ">
<a-space size="large">
<a-switch checked-color="#14C9C9" :checked-value="1" :unchecked-value="0"
v-model=" modalForm . is _recommend " style=" cursor : not - allowed ! important ; " />
v-model="modalForm.is_recommend " />
</a-space>
</a-form-item>
</a-col>
<a-col :span=" 20 " v-if=" modalForm . is _recommend == 1 ">
<a-col :span="12 " v-if="modalForm.is_recommend==1 ">
<div>理由:平台合作</div>
</a-col>
</a-row>
<a-divider />
<div class="titlebox">
<div class="bar"></div>
<div class="name">平台合作</div>
</div>
<a-row :gutter="24" style="margin-top: 35px;">
<a-col :span="4">
<a-form-item field="is_platform_deep_cooperation" label="平台深度合作医生:">
<a-space size="large">
<a-switch checked-color="#14C9C9" :checked-value="1" :unchecked-value="0"
v-model="modalForm.is_platform_deep_cooperation" />
</a-space>
</a-form-item>
</a-col>
<a-col :span="20" >
<a-form-item field="is_sys_diagno_cooperation" label="先思达合作医生:">
<a-space size="large">
<a-switch checked-color="#14C9C9" :checked-value="1" :unchecked-value="0"
v-model="modalForm.is_sys_diagno_cooperation" />
</a-space>
</a-form-item>
</a-col>
</a-row>
<a-divider />
<div class="titlebox">
<div class="bar"></div>
<div class="name">医师证件</div>
</div>
<a-row :gutter="24" style="margin-top: 35px;"
v-if=" modalForm . user _doctor _info . license _cert && modalForm . user _doctor _info . license _cert . length > 0 ">
<a-col :span=" 24 ">
<a-form-item field=" " label=" " no-style>
<div class=" titletip ">医师执业证<span>(点击图片查看大图)</span></div>
<a-image-preview-group infinite>
<a-space>
<a-image v-for=" item in modalForm . user _doctor _info . license _cert " show-loader :src=" item " />
v-if="(modalForm.user_doctor_info.license_cert && modalForm.user_doctor_info.license_cert.length>0) || modalSatus!='detail' ">
<a-col :span="24">
<div class="titletip"><span class="arco-form-item-label-required-symbol">*</span>医师执业证<span>(点击图片查看大图)</span></div>
<a-form-item field="license_cert" :hide-label="true" :validate-trigger="['change']" >
<a-image-preview-group infinite>
<a-space v-show="modalSatus=='detail'">
<a-image width="120" height="120" fit="cover" v-for="item in modalForm.user_doctor_info.license_cert"
show-loader :src="item" />
</a-space>
</a-image-preview-group>
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="license_cert_list"
:dataType="'license_cert_list'" @changeData="changeData"></upload>
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" @change="onChangeFile" accept="image/*"
:file-list="license_cert_list" @before-upload="beforeUpload" action="/" :auto-upload="false"
image-preview /> -->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" style="margin-top: 35px;"
v-if=" modalForm . user _doctor _info . qualification _cert && modalForm . user _doctor _info . qualification _cert . length > 0 ">
v-if="(modalForm.user_doctor_info.qualification_cert && modalForm.user_doctor_info.qualification_cert.length>0) || modalSatus!='detail' ">
<a-col :span="24">
<a-form-item field=" " label=" " no-style >
<div class=" titletip ">医师资格证<span>(点击图片查看大图)</span></div >
<div class="titletip"><span class="arco-form-item-label-required-symbol">*</span>医师资格证<span>(点击图片查看大图)</span></div >
<a-form-item field="qualification_cert" label="" :hide-label="true" >
<a-image-preview-group infinite>
<a-space>
<a-image v-for=" item in modalForm . user _doctor _info . license _cert " show-loader :src=" item " />
<a-space v-show="modalSatus=='detail'" >
<a-image width="120" height="120" fit="cover"
v-for="item in modalForm.user_doctor_info.qualification_cert" show-loader :src="item" />
</a-space>
</a-image-preview-group>
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="qualification_cert_list"
:dataType="'qualification_cert_list'" @changeData="changeData"></upload>
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" :auto-upload="false"
@change="onChangeFile" accept="image/*" :file-list="qualification_cert_list"
@before-upload="beforeUpload" action="/" image-preview /> -->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" style="margin-top: 35px;" v-if="(modalForm.user_doctor_info.work_cert && modalForm.user_doctor_info.work_cert.length>0) || modalSatus!='detail'">
<a-col :span="24">
<div class="titletip"><span class="arco-form-item-label-required-symbol">*</span>医师职称证<span>(点击图片查看大图)</span></div>
<a-form-item field="work_cert" label="" :hide-label="true" >
<a-image-preview-group infinite>
<a-space v-show="modalSatus=='detail'">
<a-image width="120" height="120" fit="cover" v-for="item in modalForm.user_doctor_info.work_cert"
show-loader :src="item" />
</a-space>
</a-image-preview-group>
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="work_cert_list"
:dataType="'work_cert_list'" @changeData="changeData"></upload>
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" :auto-upload="false"
@change="onChangeFile" accept="image/*" :file-list="work_cert_list"
@before-upload="beforeUpload('avatar')" action="/" image-preview /> -->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" style="margin-top: 35px;"
v-if=" modalForm . user _doctor _info . work _cert && modalForm . user _doctor _info . work _cert . length > 0 ">
v-if="modalForm.user_doctor_info.id_card_front || modalSatus!='detail' ">
<a-col :span="24">
<a-form-item field=" " label=" " no-style >
<div class=" titletip ">医师职称证<span>(点击图片查看大图)</span></div >
<div class="titletip">医师身份证正面<span>(点击图片查看大图)</span></div >
<a-form-item field="id_card_front" label="" no-style >
<a-image-preview-group infinite>
<a-space>
<a-image v-for=" item in modalForm . user _doctor _info . work _cert " show-loader :src=" item " />
<a-space v-show="modalSatus=='detail'" >
<a-image width="120" height="120" fit="cover" show-loader
:src="modalForm.user_doctor_info.id_card_front" />
</a-space>
</a-image-preview-group>
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="id_card_front_list"
:dataType="'id_card_front_list'" @changeData="changeData"></upload>
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="id_card_front_list" list-type="picture-card"
action="/" :auto-upload="false" image-preview /> -->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" style="margin-top: 35px;"
v-if=" modalForm . user _doctor _info . id _card _front || modalForm . user _doctor _info . id _card _back ">
v-if="modalForm.user_doctor_info.id_card_back || modalSatus!='detail' ">
<a-col :span="24">
<a-form-item field=" " label=" " no-style>
<div class=" titletip ">医师身份证<span>(点击图片查看大图)</span></div>
<a-form-item field="id_card_back " label="" no-style>
<div class="titletip ">医师身份证反面 <span>(点击图片查看大图)</span></div>
<a-image-preview-group infinite>
<a-space>
<a-image
v-for=" item in [ modalForm . user _doctor _info . id _card _front , modalForm . user _doctor _info . id _card _back ] "
show-loader :src=" item " v-show=" item " />
<a-space v-show="modalSatus=='detail'" >
<a-image width="120" height="120" fit="cover" show-loader
:src="modalForm.user_doctor_info.id_card_back" />
</a-space>
</a-image-preview-group>
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="id_card_back_list"
:dataType="'id_card_back_list'" @changeData="changeData"></upload>
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="id_card_back_list" list-type="picture-card" action="/"
:auto-upload="false" image-preview /> -->
</a-form-item>
</a-col>
</a-row>
<a-row :gutter=" 24 " style=" margin - top : 35 px ; " v-if=" modalForm . user _doctor _info . sign _image ">
<a-row :gutter="24 " style="margin-top: 35px;"
v-if="modalForm.user_doctor_info.sign_image || modalSatus!='detail'">
<a-col :span="24">
<a-form-item field=" " label=" " no-style>
<a-form-item field="sign_image " label="" no-style>
<div class="titletip">医师手写签名<span>(点击图片查看大图)</span></div>
<a-image-preview-group infinite>
<a-space>
<a-image v-for=" item in [ modalForm . user _doctor _info . sign _image ] " show-loader :src=" item "
v-show=" item " />
<a-image-preview-group infinite>
<a-space v-show="modalSatus=='detail'">
<a-image width="120" height="120" fit="cover" show-loader
:src="modalForm.user_doctor_info.sign_image" />
</a-space>
</a-image-preview-group>
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="sign_image_list"
:dataType="'sign_image_list'" @changeData="changeData"></upload>
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="sign_image_list" list-type="picture-card" action="/"
:auto-upload="false" image-preview /> -->
</a-form-item>
</a-col>
</a-row>
<!-- <a-row :gutter="24 " style=" margin - top : 35 px ; ">
<a-col :span=" 24 ">
<a-form-item field=" " label=" " no-style>
<div class=" titletip ">医师云证书<span>(点击图片查看大图)</span></div>
<a-image-preview-group infinite>
<a-space>
<a-image show-loader src=" https : //p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/cd7a1aaea8e1c5e3d26fe2591e561798.png~tplv-uwbnlip3yd-webp.webp" width="200" />
< a-image show -loader src = "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/6480dbc69be1b5de95010289787d64f1.png~tplv-uwbnlip3yd-webp.webp" width = "200" / >
< a-image show -loader src = "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/0265a04fddbd77a19602a15d9d55d797.png~tplv-uwbnlip3yd-webp.webp" width = "200" / >
< a-image show -loader src = "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/24e0dd27418d2291b65db1b21aa62254.png~tplv-uwbnlip3yd-webp.webp" width = "200" / >
< / a-space >
< / a-image-preview-group >
< / a-form-item >
< / a-col >
< / a-row > -- >
< a-row :gutter = "24" style = "margin-top: 35px;" v-if = "modalForm.qr_code" >
<a-row :gutter="24 " style="margin-top: 35px;" v-if="modalForm.qr_code && modalSatus!='add' ">
<a-col :span="24">
< a-form-item field = "" label = "" no -style >
<a-form-item field="qr_code" label="" no-style>
<div class="titletip">医师二维码<span>(点击图片查看大图)</span></div>
<a-image-preview-group infinite>
<a-space>
< a-image v-for = "item in [modalForm.qr_code]" show-loader :src="item" v-show="item" width="200" / >
<a-image width="120" height="120" fit="cover" show-loader :src="modalForm.qr_code" />
</a-space>
</a-image-preview-group>
</a-form-item>
</a-col>
</a-row>
< a-divider / >
<a-divider v-show="modalSatus!='detail'" />
</a-form>
< div class = "titlebox" >
<div class="titlebox" v-if="modalSatus!='detail'">
<div class="bar"></div>
<div class="name">操作</div>
</div>
< a-row :gutter = "24" style = "margin-top: 35px;" >
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalSatus!='detail'">
<a-col :span="24">
<a-form-item field="" label="" no-style>
< a-space >
< a-button type = "primary" status = "success" v-if = "modalSatus=='detail'" > 启用 < / a -button >
< a-button type = "primary" status = "danger" v-if = "modalSatus=='detail'" > 禁用 < / a -button >
< a-button type = "primary" v-if = "modalSatus=='edit'" > 保存 < / a -button >
<a-space v-if="modalSatus!='detail'" style="margin-right: 8px;">
<a-button type="primary" @click="handleSubmit">保存</a-button>
</a-space>
<!-- <a-space v-if="modalSatus=='detail'">
<a-button type="primary" status="success">启用</a-button>
<a-button type="primary" status="danger">禁用</a-button>
</a-space> -->
<a-space v-if="modalSatus=='edit'">
<a-button type="primary" @click="handleSubmit">保存</a-button>
<a-button type="primary" status="warning">拉黑</a-button>
< a-button type = "primary" status = "danger" v-if = "modalSatus=='edit'" > 删除 < / a -button >
<a-button type="primary" status="danger">删除</a-button>
</a-space>
</a-form-item>
</a-col>
@@ -377,8 +459,9 @@
<script setup>
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch, computed } from 'vue';
import { getDoctorList , addDoctor , removeDoctor , updateDoctor , getDoctorDetail , departmentList , decryptCard , hospitalList } from '@/api/doctor/list' ;
import { getDoctorList, addDoctor, removeDoctor, updateDoctor, getDoctorDetail, departmentList, decryptCard, hospitalList,expertiseList} from '@/api/doctor/list';
import { ossSign, ossUpload } from '@/api/oss';
import dayjs from 'dayjs'
// Akiraka 20230210 删除数据
const deleteData = ref([])
// Akiraka 20230210 删除对话框
@@ -389,7 +472,7 @@
getDoctorInfo(pager);
}
});
const file = ref();
const { proxy } = getCurrentInstance();
@@ -406,30 +489,243 @@
});
const modalForm = reactive({
hospital: {},
user _doctor _info : { } ,
user_doctor_info: {
},
user: {},
doctor_id: '',
license_cert: [],
qualification_cert: [],
work_cert: [],
department_custom_name:'',
user_id: '',
status: 1,
id_card_front:'',
id_card_back:'',
sign_image:'',
card_num: null,
cur_doctor_expertise:[],
avatar: 'https://img.applets.igandanyiyuan.com/basic/file/doctor_avatar.png'
});
//const doctor_expertise=ref([]);
//证书计算
const transArr = (arr) => {
let newArr = [];
if (arr instanceof Array) {
arr.forEach((item) => {
newArr.push({ url: item })
});
} else if (typeof arr == "string") {
newArr.push({ url: arr })
}
return newArr
};
const changeData = (value) => {
switch (value.type) {
case 'license_cert_list':
if (value.dealType == "add") {
license_cert_list.value.push({
url: value.url
})
} else {
license_cert_list.value.splice(license_cert_list.value.findIndex(item => item.url === value.url), 1)
}
break;
case 'qualification_cert_list':
if (value.dealType == "add") {
qualification_cert_list.value.push({
url: value.url
})
} else {
qualification_cert_list.value.splice(qualification_cert_list.value.findIndex(item => item.url === value.url), 1)
}
break;
case 'work_cert_list':
if (value.dealType == "add") {
work_cert_list.value.push({
url: value.url
})
} else {
work_cert_list.value.splice(work_cert_list.value.findIndex(item => item.url === value.url), 1)
}
break;
case 'id_card_front_list':
if(value.dealType == "add") {
id_card_front_list.value.push({
url: value.url
})
} else {
id_card_front_list.value.splice(id_card_front_list.value.findIndex(item => item.url === value.url), 1)
}
break;
case 'id_card_back_list':
if(value.dealType == "add") {
id_card_back_list.value.push({
url: value.url
})
} else {
id_card_back_list.value.splice(id_card_back_list.value.findIndex(item => item.url === value.url), 1)
}
break;
case 'sign_image_list':
if(value.dealType == "add") {
sign_image_list.value.push({
url: value.url
})
} else {
sign_image_list.value.splice(sign_image_list.value.findIndex(item => item.url === value.url), 1)
}
}
// console.log(value);
// console.log([`${value.type}.value`]);
//[value.type].value=[value.type].value.concat([{url:value.url}]);
}
//
const license_cert_list = ref([]);
const qualification_cert_list = ref([]);
const work_cert_list = ref([]);
const id_card_front_list = ref([]);
const id_card_back_list = ref([]);
const sign_image_list = ref([]);
watch(() => modalForm.user_id, (value) => {
if (value) {
handelDecryptCard(value);
}
});
const doctor _title _name = computed ( ( ) => {
let obj = { 1 : '主任医师' , 2 : '主任中医师' , 3 : '副主任医师' , 4 : '副主任中医师' , 5 : '主治医师' , 6 : '住院医师' } ;
return obj [ modalForm . doctor _title ]
watch(() => license_cert_list.value, (value) => {
let arr=[]
value.forEach((item)=>{
arr.push(item.url)
});
modalForm.license_cert=arr;
},{deep: true});
watch(() => qualification_cert_list.value, (value) => {
let arr=[]
value.forEach((item)=>{
arr.push(item.url)
});
modalForm.qualification_cert=arr;
},{deep: true });
} )
watch(() => work_cert_list.value, (value) => {
let arr=[]
value.forEach((item)=>{
arr.push(item.url)
});
modalForm.work_cert=arr;
},{deep: true});
watch(() =>id_card_front_list.value, (value) => {
if(value.length>0){
modalForm.id_card_front=value[0].url;
}else{
modalForm.id_card_front=''
}
},{deep: true});
watch(() =>id_card_back_list.value, (value) => {
value.length>0? modalForm.id_card_back=value[0].url:modalForm.id_card_back=''
},{deep: true});
watch(() =>sign_image_list.value, (value) => {
if(value.length>0){
modalForm.sign_image=value[0].url;
}else{
modalForm.sign_image=''
}
},{deep: true});
// Rules
const rules = {
user _name : [ { required : true , message : '请输入医生名字' } ]
avatar: [{ required: true, message: '请上传医生头像' }],
user_name: [
{ required: true, message: '请输入医生名字' },
{
validator: (value, cb) => {
let reg=/^([\u4e00-\u9fa5\·]{2,10})$/;
if (!reg.test(value)) {
cb('姓名要求在2-10个汉字');
}
}
}],
card_num: [
{ required: true, message: '请输入身份证号' },
{
validator: (value, cb) => {
let reg=/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (!reg.test(value)) {
cb('身份证号码格式不正确');
}
}
}
],
'user.mobile': [
{ required: true, message: '请输入手机号' },
{
validator: (value, cb) => {
let reg=/^1[3456789]\d{9}$/;
if (!reg.test(value)) {
cb('手机号码格式不正确');
}
}
}],
'hospital.address': [{ required: true, message: '请输入医院地址' }],
'hospital.hospital_name': [{ required: true, message: '请选择医院名称' }],
department_custom_id: [{ required: true, message: '请选择所在科室' }],
department_custom_name: [{ required: true, message: '请输入科室名称' }],
doctor_title: [{ required: true, message: '请选择职称' }],
'user_doctor_info.qualification_cert_num': [{ required: true, message: '请输入资格证编码' }],
cur_doctor_expertise:[{ type:'array',minLength:1,required: true, message: '请选择专长' }],
be_good_at: [{ required: true, message: '请输入擅长内容',maxLength:1000,minLength:2 }],
brief_introduction: [{ required: true, message: '请输入简介',maxLength:1000,minLength:2 }],
// license_cert: [
// {
// validator: (value, cb) => {
// if(license_cert_list.value.length==0){
// cb("请上传医师执业证")
// }
// }
// }],
// qualification_cert: [{ type:'array',required: true, message: '请上传医师资格证' }],
// work_cert: [{ type:'array',required: true, message: '请上传医师职称证' }],
// is_platform_deep_cooperation:[{required: true, message: '请选择是否是平台深度合作'}],
// is_platform_deep_cooperation:[{required: true, message: '请选择是否是平台深度合作'}],
//is_recommend
};
// Modal
const modalVisible = ref(false);
const modalTitle = ref('默认标题');
//let obj = { 1: '主任医师', 2: '主任中医师', 3: '副主任医师', 4: '副主任中医师', 5: '主治医师', 6: '住院医师' };
const doctor_title_data = [
{
doctor_title: 1,
doctor_title_name: '主任医师'
},
{
doctor_title: 2,
doctor_title_name: '主任中医师'
},
{
doctor_title: 3,
doctor_title_name: '副主任医师'
},
{
doctor_title: 4,
doctor_title_name: '副主任中医师'
},
{
doctor_title: 5,
doctor_title_name: '主任医师'
},
{
doctor_title: 6,
doctor_title_name: '住院医师'
}
]
// Batch Del List
let batchList = [];
@@ -454,21 +750,41 @@
const tableData = ref([]);
//弹框状态
const modalSatus = ref('add');
//改变科室
const changeSelect = (value) => {
let arr = departmentData.value.filter((item) => {
return item.department_custom_id == value
})
modalForm.department_custom_name = arr[0].department_custom_name
}
// 新增Satus
const handleAdd = () => {
modalVisible.value = true;
modalTitle.value = '新增医生';
modalSatus.value = 'add';
modalForm.doctor_id = null;
modalForm.hospital = {};
modalForm.user = {};
//$refs.modalFormRef.resetFields();
};
//详情
const handleDetail = async (record) => {
modalVisible.value = true;
modalTitle.value = '医生详情';
modalSatus.value = 'detail';
const { code, data, message } = await getDoctorDetail(record.doctor_id);
if (code == 200) {
Object.assign(modalForm, data);
if(data.doctor_expertise && data.doctor_expertise.length>0){
let arr=[];
data.doctor_expertise.forEach((item)=>{
arr.push(item.expertise_id)
})
modalForm.cur_doctor_expertise=arr;
}
} else {
proxy.$notification.error(message);
}
@@ -481,6 +797,21 @@
const { code, data, message } = await getDoctorDetail(record.doctor_id);
if (code == 200) {
Object.assign(modalForm, data);
let { license_cert, qualification_cert, work_cert, id_card_front, id_card_back, sign_image } = data.user_doctor_info;
license_cert_list.value = transArr(license_cert);
qualification_cert_list.value = transArr(qualification_cert);
work_cert_list.value = transArr(work_cert);
id_card_front_list.value = transArr(id_card_front);
id_card_back_list.value = transArr(id_card_back);
sign_image_list.value = transArr(sign_image);
if(data.doctor_expertise && data.doctor_expertise.length>0){
let arr=[];
data.doctor_expertise.forEach((item)=>{
arr.push(item.expertise_id)
})
modalForm.cur_doctor_expertise=arr;
}
} else {
proxy.$notification.error(message);
}
@@ -518,26 +849,53 @@
proxy.$refs.modalFormRef.validate(async (valid) => {
if (!valid) {
let res;
//alert(modalForm.id_card_front);
let modalData={
card_name:modalForm.user_name,
mobile:modalForm.user.mobile,
mobile:modalForm.user.mobile,
is_recommend:modalForm.is_recommend,
avatar:modalForm.avatar,
doctor_title:modalForm.doctor_title,
department_custom_id:modalForm.department_custom_id,
department_custom_name:modalForm.department_custom_name,
department_custom_mobile:modalForm.department_custom_mobile,
hospital_id:modalForm.hospital_id,
be_good_at:modalForm.be_good_at,
brief_introduction:modalForm.brief_introduction,
license_cert:modalForm.license_cert,
qualification_cert:modalForm.qualification_cert,
work_cert:modalForm.work_cert,
qualification_cert_num:modalForm.user_doctor_info.qualification_cert_num,
id_card_front:modalForm.id_card_front,
id_card_back:modalForm.id_card_back,
sign_image:modalForm.sign_image,
card_num:modalForm.card_num,
doctor_expertise:modalForm.cur_doctor_expertise,
is_platform_deep_cooperation:modalForm.is_platform_deep_cooperation,
is_sys_diagno_cooperation :modalForm.is_sys_diagno_cooperation
}
if (!modalForm.doctor_id) {
const { code , message } = await addDoctor ( modalForm ) ;
const { code, message } = await addDoctor(modalData);
if (code == 200) {
proxy.$notification.success('新增成功');
} else {
proxy.$notification.error(message);
}
} else {
const { code , message } = await updateDoctor ( modalForm , modalForm . doctor _id ) ;
const { code, message } = await updateDoctor(modalData, modalForm.doctor_id);
if (code == 200) {
proxy.$notification.success('更新成功');
} else {
proxy.$notification.error(message);
}
}
done ( ) ;
//done();
getDoctorInfo(pager);
} else {
console.log(valid)
proxy.$message.error('表单校验失败');
done ( false ) ;
//done(false);
}
});
};
@@ -606,34 +964,54 @@
const departmentData = ref ( [ ] ) ;
//获取科室列表
const getDepartmentList = ( ) => {
const { data , code , message } = departmentList ( ) ;
if ( code == 200 ) {
departmentData . value = data ;
} else {
proxy . $notification . error ( message ) ;
}
} ;
departmentList ( ) . then ( ( res ) => {
const { data , code , message } = res ;
if ( code == 200 ) {
departmentData . value = data ;
} else {
proxy . $notification . error ( message ) ;
} ;
} ) ;
}
//切换小眼睛
const showEye = ref ( false ) ;
const id _card _num = ref ( '' ) ;
//解密身份证号码
const handelDecryptCard = ( ) => {
const { data , code , message } = decryptCard ( ) ;
const handelDecryptCard = async ( user _id ) => {
const { data , code , message } = await decryptCard ( {
user _id
} ) ;
if ( code == 200 ) {
id _card _num . value = data ;
} else {
proxy . $notification . error ( message ) ;
}
} ;
const hospitalData = ref ( [ ] ) ;
//获取医院列表
const handleHospitalList = ( ) => {
const { data , code , message } = hospitalList ( ) ;
if ( code == 200 ) {
//id_card_num.value = data;
} else {
proxy . $notification . error ( message ) ;
}
hospitalList ( ) . then ( ( res ) => {
const { data , code , message } = res ;
if ( code == 200 ) {
hospitalData . value = data ;
} else {
proxy . $notification . error ( message ) ;
}
} ) ;
}
const expertiseData = ref ( [ ] ) ;
// 获取专长列表
const handlExpertiseList = ( ) => {
expertiseList ( ) . then ( ( res ) => {
const { data , code , message } = res ;
if ( code == 200 ) {
expertiseData . value = data ;
} else {
proxy . $notification . error ( message ) ;
}
} )
}
// 重置搜索
const handleResetQuery = ( ) => {
proxy . $refs . queryFormRef . resetFields ( ) ;
@@ -649,22 +1027,28 @@
let { access _id , dir , policy , signature , host } = data ;
//let index = File.lastIndexOf("/");
let filename = File . name ;
let time = dayjs ( ) . format ( "YYYYMMDDHHmmss" )
let formData = new FormData ( ) ;
formData . append ( 'OSSAccessKeyId' , access _id ) ;
formData . append ( 'OSSAccessKeyId' , access _id ) ;
formData . append ( 'policy' , policy ) ;
formData . append ( 'signature' , signature ) ;
formData . append ( 'key' , dir + filename ) ;
formData . append ( 'file' , File , filename ) ;
ossUpload ( host , formData ) . then ( ( res ) => {
console . log ( res ) ;
formData . append ( 'key' , dir + time + filename ) ;
formData . append ( 'file' , File , filename ) ;
ossUpload ( host , formData ) . then ( ( res ) => {
modalForm . avatar = host + "/" + dir + time + filename ;
// if(res.code==204){
// alert('22')
// modalForm.avatar=host+dir+time+filename
// }
} ) ;
} else {
proxy . $notification . error ( message ) ;
}
}
//上传前验证
const beforeUpload = ( file ) => {
const beforeUpload = ( file , type ) => {
return new Promise ( ( resolve , reject ) => {
if ( file . size >= 10 * 1024 * 1024 ) {
proxy . $notification . error ( "图片大小不能超过10M" ) ;
@@ -676,14 +1060,14 @@
} ;
//上传文件
const onChangeFile = ( fileList ) => {
console . log ( fileList )
getOssSign ( 1 , fileList [ 0 ] . file ) ;
}
onMounted ( ( ) => {
getDoctorInfo ( pager ) ;
handleHospitalList ( ) ;
getDepartmentList ( ) ;
handlExpertiseList ( ) ;
} ) ;
< / script >
@@ -704,7 +1088,8 @@
border - radius : 50 % ;
}
. arco - form - item - layout - horizontal : first - child {
. arco - form - item - layout - horizontal : first - child ,
. arco - form - item - layout - horizontal : nth - child ( 2 ) {
align - items : center ;
}
@@ -722,4 +1107,7 @@
display : flex ;
align - items : center ;
}
. cert . arco - form - item - label - col {
flex : 0 0 8 px ! important ;
}
< / style >