审核管理
This commit is contained in:
parent
2c69c3dae5
commit
49f5af4751
@ -1,2 +1,2 @@
|
|||||||
BASE_URL= "https://vue3.go-admin.dev"
|
BASE_URL= "https://vue3.go-admin.dev"
|
||||||
VITE_BASE_URL= "http://dev.hospital.admin.api.igandanyiyuan.com"
|
VITE_BASE_URL= "//prod.hospital.admin.api.igandanyiyuan.com"
|
||||||
1
components.d.ts
vendored
1
components.d.ts
vendored
@ -10,6 +10,7 @@ export {}
|
|||||||
declare module '@vue/runtime-core' {
|
declare module '@vue/runtime-core' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
DeleteModal: typeof import('./src/components/DeleteModal.vue')['default']
|
DeleteModal: typeof import('./src/components/DeleteModal.vue')['default']
|
||||||
|
Loading: typeof import('./src/components/loading/loading.vue')['default']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
RouterView: typeof import('vue-router')['RouterView']
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
Upload: typeof import('./src/components/upload.vue')['default']
|
Upload: typeof import('./src/components/upload.vue')['default']
|
||||||
|
|||||||
@ -23,6 +23,7 @@
|
|||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"npm": "^9.6.6",
|
"npm": "^9.6.6",
|
||||||
"pinia": "^2.0.36",
|
"pinia": "^2.0.36",
|
||||||
|
"spinkit": "^2.0.1",
|
||||||
"vue": "^3.2.47",
|
"vue": "^3.2.47",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
"vue-router": "^4.1.6"
|
"vue-router": "^4.1.6"
|
||||||
|
|||||||
24
src/api/doctor/examine.js
Normal file
24
src/api/doctor/examine.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import request from '../../utils/request'
|
||||||
|
|
||||||
|
const url = '/admin/doctor/pending';
|
||||||
|
|
||||||
|
export function getDoctorList(params){
|
||||||
|
return request({
|
||||||
|
url:'/admin/doctor/pending',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function getDoctorDetail(id){
|
||||||
|
return request({
|
||||||
|
url:'/admin/doctor/pending/'+id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function checkDoctor(data,id){
|
||||||
|
return request({
|
||||||
|
url:'/admin/doctor/pending/'+id,
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
28
src/components/loading/index.js
Normal file
28
src/components/loading/index.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { createApp } from "vue"
|
||||||
|
|
||||||
|
// 导入写好的Loading.vue文件
|
||||||
|
import Loading from "./loading.vue"
|
||||||
|
|
||||||
|
export default {
|
||||||
|
loading: null,
|
||||||
|
// 每当这个插件被添加到应用程序中时,如果它是一个对象,就会调用 install 方法。如果它是一个 function,则函数本身将被调用。在这两种情况下——它都会收到两个参数:由 Vue 的 createApp 生成的 app 对象和用户传入的选项。
|
||||||
|
install(app) {
|
||||||
|
// if (this.loading) {
|
||||||
|
// // 防止多次载入
|
||||||
|
// app.config.globalProperties.$loading = this.loading
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// 创建Loading实例,用于挂载
|
||||||
|
let instance = createApp(Loading)
|
||||||
|
// 创建div元素装载Loading对象
|
||||||
|
let div = document.createElement("div")
|
||||||
|
div.setAttribute("id","maskbox")
|
||||||
|
let body = document.body
|
||||||
|
// 导入body中
|
||||||
|
body.appendChild(div);
|
||||||
|
|
||||||
|
this.loading = instance.mount(div)
|
||||||
|
// 挂载vue身上
|
||||||
|
app.config.globalProperties.$loading = this.loading;
|
||||||
|
}
|
||||||
|
}
|
||||||
196
src/components/loading/loading.vue
Normal file
196
src/components/loading/loading.vue
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
<template>
|
||||||
|
<div class="maskbox" v-if="loading">
|
||||||
|
<div class="mask"></div>
|
||||||
|
<div class="sk-fading-circle">
|
||||||
|
<div class="sk-circle1 sk-circle"></div>
|
||||||
|
<div class="sk-circle2 sk-circle"></div>
|
||||||
|
<div class="sk-circle3 sk-circle"></div>
|
||||||
|
<div class="sk-circle4 sk-circle"></div>
|
||||||
|
<div class="sk-circle5 sk-circle"></div>
|
||||||
|
<div class="sk-circle6 sk-circle"></div>
|
||||||
|
<div class="sk-circle7 sk-circle"></div>
|
||||||
|
<div class="sk-circle8 sk-circle"></div>
|
||||||
|
<div class="sk-circle9 sk-circle"></div>
|
||||||
|
<div class="sk-circle10 sk-circle"></div>
|
||||||
|
<div class="sk-circle11 sk-circle"></div>
|
||||||
|
<div class="sk-circle12 sk-circle"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
//import {Spin } from '@arco-design/web-vue';
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
const show = () => {
|
||||||
|
loading.value = true
|
||||||
|
}
|
||||||
|
const hide = () => {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
show,
|
||||||
|
hide
|
||||||
|
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.maskbox{
|
||||||
|
top:0;
|
||||||
|
bottom:0;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
z-index:999999;
|
||||||
|
position: fixed;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
.mask{
|
||||||
|
top:0;
|
||||||
|
bottom:0;
|
||||||
|
position: absolute;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
opacity: 0.6;
|
||||||
|
background-color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sk-fading-circle {
|
||||||
|
margin: 100px auto;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-fading-circle .sk-circle {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-fading-circle .sk-circle:before {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 15%;
|
||||||
|
height: 15%;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 100%;
|
||||||
|
-webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
||||||
|
animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle2 {
|
||||||
|
-webkit-transform: rotate(30deg);
|
||||||
|
-ms-transform: rotate(30deg);
|
||||||
|
transform: rotate(30deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle3 {
|
||||||
|
-webkit-transform: rotate(60deg);
|
||||||
|
-ms-transform: rotate(60deg);
|
||||||
|
transform: rotate(60deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle4 {
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
-ms-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle5 {
|
||||||
|
-webkit-transform: rotate(120deg);
|
||||||
|
-ms-transform: rotate(120deg);
|
||||||
|
transform: rotate(120deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle6 {
|
||||||
|
-webkit-transform: rotate(150deg);
|
||||||
|
-ms-transform: rotate(150deg);
|
||||||
|
transform: rotate(150deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle7 {
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
-ms-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle8 {
|
||||||
|
-webkit-transform: rotate(210deg);
|
||||||
|
-ms-transform: rotate(210deg);
|
||||||
|
transform: rotate(210deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle9 {
|
||||||
|
-webkit-transform: rotate(240deg);
|
||||||
|
-ms-transform: rotate(240deg);
|
||||||
|
transform: rotate(240deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle10 {
|
||||||
|
-webkit-transform: rotate(270deg);
|
||||||
|
-ms-transform: rotate(270deg);
|
||||||
|
transform: rotate(270deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle11 {
|
||||||
|
-webkit-transform: rotate(300deg);
|
||||||
|
-ms-transform: rotate(300deg);
|
||||||
|
transform: rotate(300deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle12 {
|
||||||
|
-webkit-transform: rotate(330deg);
|
||||||
|
-ms-transform: rotate(330deg);
|
||||||
|
transform: rotate(330deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle2:before {
|
||||||
|
-webkit-animation-delay: -1.1s;
|
||||||
|
animation-delay: -1.1s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle3:before {
|
||||||
|
-webkit-animation-delay: -1s;
|
||||||
|
animation-delay: -1s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle4:before {
|
||||||
|
-webkit-animation-delay: -0.9s;
|
||||||
|
animation-delay: -0.9s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle5:before {
|
||||||
|
-webkit-animation-delay: -0.8s;
|
||||||
|
animation-delay: -0.8s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle6:before {
|
||||||
|
-webkit-animation-delay: -0.7s;
|
||||||
|
animation-delay: -0.7s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle7:before {
|
||||||
|
-webkit-animation-delay: -0.6s;
|
||||||
|
animation-delay: -0.6s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle8:before {
|
||||||
|
-webkit-animation-delay: -0.5s;
|
||||||
|
animation-delay: -0.5s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle9:before {
|
||||||
|
-webkit-animation-delay: -0.4s;
|
||||||
|
animation-delay: -0.4s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle10:before {
|
||||||
|
-webkit-animation-delay: -0.3s;
|
||||||
|
animation-delay: -0.3s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle11:before {
|
||||||
|
-webkit-animation-delay: -0.2s;
|
||||||
|
animation-delay: -0.2s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle12:before {
|
||||||
|
-webkit-animation-delay: -0.1s;
|
||||||
|
animation-delay: -0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes sk-circleFadeDelay {
|
||||||
|
0%, 39%, 100% { opacity: 0; }
|
||||||
|
40% { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes sk-circleFadeDelay {
|
||||||
|
0%, 39%, 100% { opacity: 0; }
|
||||||
|
40% { opacity: 1; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,4 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
|
|
||||||
<a-upload list-type="picture-card" @change="onChangeFile" accept="image/*" :file-list="fileList"
|
<a-upload list-type="picture-card" @change="onChangeFile" accept="image/*" :file-list="fileList"
|
||||||
@before-upload="beforeUpload" @before-remove="beforeMove" action="/" :multiple="isMultiple" :auto-upload="false" image-preview />
|
@before-upload="beforeUpload" @before-remove="beforeMove" action="/" :multiple="isMultiple" :auto-upload="false" image-preview />
|
||||||
</template>
|
</template>
|
||||||
@ -20,27 +21,31 @@
|
|||||||
default:false
|
default:false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const {fileList,isMultiple,dataType} = toRefs(props);
|
const {fileList,isMultiple,dataType} = toRefs(props);
|
||||||
const emits = defineEmits(['changeData']);
|
const emits = defineEmits(['changeData']);
|
||||||
const beforeUpload = (file) => {
|
const beforeUpload = (file) => {
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
alert(isMultiple.value);
|
|
||||||
alert(fileList.value.length)
|
|
||||||
if(!isMultiple.value && fileList.value.length>=1){
|
if(!isMultiple.value && fileList.value.length>=1){
|
||||||
proxy.$notification.error("只能上传一张图片");
|
proxy.$notification.error("只能上传一张图片,请先删除原有图片");
|
||||||
reject('cancel')
|
reject('cancel')
|
||||||
}else if (file.size >= 10 * 1024 * 1024) {
|
}else if (file.size >= 10 * 1024 * 1024) {
|
||||||
proxy.$notification.error("图片大小不能超过10M");
|
proxy.$notification.error("图片大小不能超过10M");
|
||||||
reject('cancel')
|
reject('cancel')
|
||||||
} else {
|
} else {
|
||||||
resolve(true);
|
resolve(true);
|
||||||
getOssSign(1,file);
|
|
||||||
}
|
let scene=1;
|
||||||
|
if(dataType=="license_cert_list" || dataType=="qualification_cert_list" || dataType=="work_cert_list" || dataType=="sign_image_list" || dataType=="id_card_front_list" || dataType=="id_card_back_list"){
|
||||||
|
scene=2
|
||||||
|
};
|
||||||
|
getOssSign(scene,file)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const beforeMove=(file)=>{
|
const beforeMove=(file)=>{
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log(file);
|
|
||||||
emits("changeData",{url:file.url,type:dataType.value,dealType:"remove"})
|
emits("changeData",{url:file.url,type:dataType.value,dealType:"remove"})
|
||||||
resolve(true)
|
resolve(true)
|
||||||
});
|
});
|
||||||
@ -54,9 +59,9 @@
|
|||||||
// //getOssSign(1, fileList[0].file);
|
// //getOssSign(1, fileList[0].file);
|
||||||
// console.log(fileList)
|
// console.log(fileList)
|
||||||
};
|
};
|
||||||
//const emit = defineEmits(['fileList'])
|
|
||||||
//获取oss签名
|
//获取oss签名
|
||||||
const getOssSign = async (scene, File) => {
|
const getOssSign = async (scene, File) => {
|
||||||
|
proxy.$loading.show();
|
||||||
const { data, code, message } = await ossSign({
|
const { data, code, message } = await ossSign({
|
||||||
user_type: 4,
|
user_type: 4,
|
||||||
scene,
|
scene,
|
||||||
@ -72,11 +77,17 @@
|
|||||||
formData.append('key', dir + time + filename);
|
formData.append('key', dir + time + filename);
|
||||||
formData.append('file', File, filename);
|
formData.append('file', File, filename);
|
||||||
ossUpload(host, formData).then((res) => {
|
ossUpload(host, formData).then((res) => {
|
||||||
|
proxy.$loading.hide();
|
||||||
emits("changeData",{url:host+"/"+ dir + time + filename,type:dataType.value,dealType:"add"})
|
emits("changeData",{url:host+"/"+ dir + time + filename,type:dataType.value,dealType:"add"})
|
||||||
|
// if(fileNum.value==fileList.value.length){
|
||||||
|
// fileNum.value=0;
|
||||||
|
// proxy.$loading.hide();
|
||||||
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
proxy.$notification.error(message);
|
proxy.$notification.error(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
|
||||||
|
</script>
|
||||||
|
|||||||
@ -49,6 +49,8 @@ const onCollapse = () => {
|
|||||||
}
|
}
|
||||||
.titletip{
|
.titletip{
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@ -12,6 +12,7 @@ import permission from '@/directive/permission/permission';
|
|||||||
|
|
||||||
// 引入 Arco 图标库
|
// 引入 Arco 图标库
|
||||||
import * as ArcoIconModules from '@arco-design/web-vue/es/icon';
|
import * as ArcoIconModules from '@arco-design/web-vue/es/icon';
|
||||||
|
import Loading from "@/components/loading/index"
|
||||||
|
|
||||||
// Initialize the Pinia instance
|
// Initialize the Pinia instance
|
||||||
const pinia = createPinia();
|
const pinia = createPinia();
|
||||||
@ -29,7 +30,7 @@ app.config.globalProperties.parseTime = parseTime;
|
|||||||
for(const name in ArcoIconModules){
|
for(const name in ArcoIconModules){
|
||||||
app.component(name,ArcoIconModules[name])
|
app.component(name,ArcoIconModules[name])
|
||||||
}
|
}
|
||||||
|
app.use(Loading)
|
||||||
app.use(ArcoVue);
|
app.use(ArcoVue);
|
||||||
app.use(router);
|
app.use(router);
|
||||||
app.use(pinia);
|
app.use(pinia);
|
||||||
|
|||||||
838
src/views/doctor/doctor-examine/index.vue
Normal file
838
src/views/doctor/doctor-examine/index.vue
Normal file
@ -0,0 +1,838 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<a-form :model="queryForm" ref="queryFormRef" layout="inline">
|
||||||
|
|
||||||
|
<a-form-item field="doctorName" label="医生名字">
|
||||||
|
<a-input v-model="queryForm.user_name" placeholder="请输入医生名字" @press-enter="handleQuery" />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item field="mobile" label="电话号码">
|
||||||
|
<a-input v-model="queryForm.mobile" placeholder="请输入电话号码" @press-enter="handleQuery" />
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item field="iden_auth_status" label="审核状态">
|
||||||
|
<a-select v-model="queryForm.iden_auth_status" placeholder="请选择审核状态" :style="{ width: '180px' }">
|
||||||
|
<!-- 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
||||||
|
<a-option :value="0">未认证</a-option>
|
||||||
|
<a-option :value="1">认证通过</a-option>
|
||||||
|
<a-option :value="2">审核中</a-option>
|
||||||
|
<a-option :value="3">认证失败</a-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item>
|
||||||
|
<a-space>
|
||||||
|
<a-button type="primary" @click="handleQuery"><icon-search /> 搜索</a-button>
|
||||||
|
<a-button @click="handleResetQuery"><icon-loop /> 重置</a-button>
|
||||||
|
</a-space>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
|
||||||
|
<!-- <a-divider /> -->
|
||||||
|
|
||||||
|
<!-- action -->
|
||||||
|
|
||||||
|
<!-- table -->
|
||||||
|
<a-table :columns="columns" :data="tableData"
|
||||||
|
:pagination="{ 'show-total': true, 'show-jumper': true, 'show-page-size': true, total: pager.total, current: currentPage }"
|
||||||
|
row-key="doctor_id"
|
||||||
|
@selection-change="(selection) => {deleteData = selection;}" @page-change="handlePageChange"
|
||||||
|
@page-size-change="handlepage_sizeChange">
|
||||||
|
<template #doctor_id="{record,rowIndex}">
|
||||||
|
<div>{{(rowIndex+1)+(pager.page-1)*10}}</div>
|
||||||
|
</template>
|
||||||
|
<template #doctor_title="{ record }">
|
||||||
|
<!-- 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) -->
|
||||||
|
<div v-if="record.doctor_title==1">主任医师</div>
|
||||||
|
<div v-else-if="record.doctor_title==2">主任中医师</div>
|
||||||
|
<div v-else-if="record.doctor_title==3">副主任医师</div>
|
||||||
|
<div v-else-if="record.doctor_title==4">副主任中医师</div>
|
||||||
|
<div v-else-if="record.doctor_title==5">主治医师</div>
|
||||||
|
<div v-else-if="record.doctor_title==6">住院医师</div>
|
||||||
|
</template>
|
||||||
|
<template #created_at="{ record }">
|
||||||
|
{{ parseTime(record.created_at) }}
|
||||||
|
</template>
|
||||||
|
<template #hospital_name="{record}">
|
||||||
|
<div class="hospital_name" :title="record.hospital_name">{{record.hospital_name}}</div>
|
||||||
|
</template>
|
||||||
|
<template #inquiry_service="{ record }">
|
||||||
|
<span>{{filterService(record)}}</span>
|
||||||
|
</template>
|
||||||
|
<template #iden_auth_status="{ record }">
|
||||||
|
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
||||||
|
<a-tag v-if="record.iden_auth_status == 0" color="gray">未认证</a-tag>
|
||||||
|
<a-tag v-else-if="record.iden_auth_status == 1" color="green">认证通过</a-tag>
|
||||||
|
<a-tag v-else-if="record.iden_auth_status == 2" color="#ffb400">审核中</a-tag>
|
||||||
|
<a-tag v-else color="red">认证失败</a-tag>
|
||||||
|
</template>
|
||||||
|
<template #is_recommend="{ record }">
|
||||||
|
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
||||||
|
<a-tag v-if="record.is_recommend == 0" color="gray">否</a-tag>
|
||||||
|
<a-tag v-else color="green">是</a-tag>
|
||||||
|
</template>
|
||||||
|
<template #status="{ record }">
|
||||||
|
<!-- 状态(0:禁用 1:正常 2:删除) -->
|
||||||
|
<a-switch v-model="record.status" checked-color="#14C9C9" :checked-value="1" unchecked-value="0" />
|
||||||
|
</template>
|
||||||
|
<template #action="{ record }">
|
||||||
|
<a-space>
|
||||||
|
<a-button v-has="'admin:sysDoctorExamine:detail'" type="text"
|
||||||
|
@click="handleDetail(record)"><icon-book />详情</a-button>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
|
||||||
|
<!-- Modal -->
|
||||||
|
<a-modal v-model:visible="modalVisible" fullscreen :title="modalTitle" title-align="start" :footer="false"
|
||||||
|
@close="() => {$refs.modalFormRef.resetFields(); modalForm.doctor_id = null;}">
|
||||||
|
<div class="titlebox">
|
||||||
|
<div class="bar"></div>
|
||||||
|
<div class="name">医生信息</div>
|
||||||
|
</div>
|
||||||
|
<a-form :model="modalForm" :disabled="true" ref="modalFormRef"
|
||||||
|
:auto-label-width="true">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="avatar" label="医生头像:">
|
||||||
|
<a-space size="large">
|
||||||
|
<a-image width="80" height="80" class="headImg" :src="modalForm.avatar">
|
||||||
|
</a-image>
|
||||||
|
</a-space>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="user_name" label="医生名字:">
|
||||||
|
<a-input v-model="modalForm.user_name" placeholder="请输入医生名字" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="idCard" label="身份证号:" >
|
||||||
|
<div class="box" v-show="!showEye">
|
||||||
|
<div class="cardNum">{{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="cardNum">{{id_card_num}}</div>
|
||||||
|
<icon-eye class="eye" @click="()=>{showEye=false}" />
|
||||||
|
</div>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24" >
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="user.mobile" label="联系电话:">
|
||||||
|
<a-input v-model="modalForm.user.mobile" placeholder="请输入联系电话" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="multi_point_status" label="多点执业:">
|
||||||
|
<span v-if="modalForm.multi_point_status==1">可处方</span>
|
||||||
|
<span v-else>不可处方</span>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<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.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-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" @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>
|
||||||
|
</a-select>
|
||||||
|
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="department_custom_name" label="科室名称:">
|
||||||
|
<a-input v-model="modalForm.department_custom_name" placeholder="请输入科室名称" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="doctor_title" label="职 称 :">
|
||||||
|
<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-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12">
|
||||||
|
<a-form-item field="department_custom_mobile" label="科室电话:">
|
||||||
|
<a-input v-model="modalForm.department_custom_mobile" placeholder="请输入科室电话" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="24">
|
||||||
|
<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 :auto-size="{minRows:2}" 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 :auto-size="{minRows:2}" v-model="modalForm.brief_introduction" placeholder="请填写医生从业经历,职称和所获荣誉等信息(字数在10-1000字)" />
|
||||||
|
</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;">
|
||||||
|
<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" />
|
||||||
|
</a-space>
|
||||||
|
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<!-- <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">
|
||||||
|
<div class="titletip"><span
|
||||||
|
class="arco-form-item-label-required-symbol red">*</span>医师执业证<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-form-item field="license_cert" :hide-label="true" :validate-trigger="['change']">
|
||||||
|
<a-image-preview-group infinite>
|
||||||
|
<a-space >
|
||||||
|
<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>
|
||||||
|
</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)">
|
||||||
|
<a-col :span="24">
|
||||||
|
<div class="titletip"><span
|
||||||
|
class="arco-form-item-label-required-symbol red">*</span>医师资格证<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-form-item field="qualification_cert" label="" :hide-label="true">
|
||||||
|
<a-image-preview-group infinite>
|
||||||
|
<a-space >
|
||||||
|
<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>
|
||||||
|
|
||||||
|
</a-form-item>
|
||||||
|
<div class="codbox">
|
||||||
|
<div class="labelname">资格证编号:</div>
|
||||||
|
<a-input v-model="modalForm.user_doctor_info.qualification_cert_num" style="width:500px" placeholder="请输入资格证编码" :disabled="modalForm.user_doctor_info.qualification_cert_num" />
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<!-- <a-row :gutter="24">
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item field="user_doctor_info.qualification_cert_num" label="资格证编码:">
|
||||||
|
|
||||||
|
</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)">
|
||||||
|
<a-col :span="24">
|
||||||
|
<div class="titletip"><span
|
||||||
|
class="arco-form-item-label-required-symbol red">*</span>医师职称证<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-form-item field="work_cert" label="" :hide-label="true">
|
||||||
|
<a-image-preview-group infinite>
|
||||||
|
<a-space >
|
||||||
|
<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>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24" style="margin-top: 35px;"
|
||||||
|
v-if="modalForm.user_doctor_info.id_card_front">
|
||||||
|
<a-col :span="24">
|
||||||
|
<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 width="120" height="120" fit="cover" show-loader
|
||||||
|
:src="modalForm.user_doctor_info.id_card_front" />
|
||||||
|
</a-space>
|
||||||
|
</a-image-preview-group>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24" style="margin-top: 35px;"
|
||||||
|
v-if="modalForm.user_doctor_info.id_card_back">
|
||||||
|
<a-col :span="24">
|
||||||
|
<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 width="120" height="120" fit="cover" show-loader
|
||||||
|
:src="modalForm.user_doctor_info.id_card_back" />
|
||||||
|
</a-space>
|
||||||
|
</a-image-preview-group>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<a-row :gutter="24" style="margin-top: 35px;"
|
||||||
|
v-if="modalForm.user_doctor_info.sign_image">
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item field="sign_image" label="" no-style>
|
||||||
|
<div class="titletip">医师手写签名<span>(点击图片查看大图)</span></div>
|
||||||
|
|
||||||
|
<a-image-preview-group infinite>
|
||||||
|
<a-space >
|
||||||
|
<a-image width="120" height="120" fit="cover" show-loader
|
||||||
|
:src="modalForm.user_doctor_info.sign_image" />
|
||||||
|
</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-col :span="24">
|
||||||
|
<a-form-item field="qr_code" label="" no-style>
|
||||||
|
<div class="titletip">医师二维码<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-image-preview-group infinite>
|
||||||
|
<a-space>
|
||||||
|
<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-form>
|
||||||
|
<div class="titlebox" >
|
||||||
|
<div class="bar"></div>
|
||||||
|
<div class="name">操作</div>
|
||||||
|
</div>
|
||||||
|
<a-row :gutter="24" style="margin-top: 35px;" >
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item field="" label="" no-style>
|
||||||
|
<a-space >
|
||||||
|
<a-button type="primary" @click="handleCheck('ok')">审核通过</a-button>
|
||||||
|
<a-button type="primary" status="danger" @click="handleCheck(deny)">审核拒绝</a-button>
|
||||||
|
</a-space>
|
||||||
|
<!-- <a-space v-if="modalSatus=='edit'">
|
||||||
|
<a-button type="primary" status="warning">拉黑</a-button>
|
||||||
|
<a-button type="primary" status="danger">删除</a-button>
|
||||||
|
</a-space> -->
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-modal>
|
||||||
|
|
||||||
|
<!-- 审核失败弹框 -->
|
||||||
|
<a-modal :mask-closable="false" v-model:visible="modalCheckVisible" :title="'拒绝理由'" title-align="start"
|
||||||
|
@before-ok="handleSubmit" @close="() => { $refs.checkFormRef.resetFields(); modalForm.doctor_id = null;}">
|
||||||
|
<a-form :model="modalCheckForm" ref="checkFormRef"
|
||||||
|
:auto-label-width="true" :mask-closable="false" :rules="rules">
|
||||||
|
<a-form-item field="option" label="原因:">
|
||||||
|
<a-select multiple placeholder="请选择原因" v-model="modalCheckForm.option" @change="changeReason">
|
||||||
|
<a-option v-for="item in resasonData" :value="item" :label="item.label"></a-option>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item v-for="(item,index) of modalCheckForm.reasons" :field="item.key" :label="item.label+':'" :key="index">
|
||||||
|
<a-textarea v-model="modalCheckForm[item.key]" :placeholder="'请输入'+item.label" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</a-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch, computed } from 'vue';
|
||||||
|
import { getDoctorList,getDoctorDetail,checkDoctor} from '@/api/doctor/examine';
|
||||||
|
import {departmentList, decryptCard, hospitalList, expertiseList } from '@/api/doctor/list';
|
||||||
|
import dayjs from 'dayjs'
|
||||||
|
import { parseTime } from '@/utils/parseTime';
|
||||||
|
// Akiraka 20230210 删除数据
|
||||||
|
const deleteData = ref([])
|
||||||
|
// Akiraka 20230210 删除对话框
|
||||||
|
const deleteVisible = ref(false)
|
||||||
|
const modalCheckVisible = ref(false)
|
||||||
|
// Akiraka 20230210 监听删除事件
|
||||||
|
watch(() => deleteVisible.value, (value) => {
|
||||||
|
if (value == false) {
|
||||||
|
getDoctorInfo(pager);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const file = ref();
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
|
||||||
|
const currentPage = ref(1);
|
||||||
|
// Pager
|
||||||
|
const pager = {
|
||||||
|
total: 0,
|
||||||
|
page: 1,
|
||||||
|
page_size: 10,
|
||||||
|
};
|
||||||
|
// form
|
||||||
|
const queryForm = reactive({
|
||||||
|
inquiry_service: ''
|
||||||
|
});
|
||||||
|
const modalCheckForm = reactive({
|
||||||
|
option:null,
|
||||||
|
reasons:[]
|
||||||
|
|
||||||
|
});
|
||||||
|
const modalForm = reactive({
|
||||||
|
hospital: {},
|
||||||
|
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'
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// 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: '住院医师'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
const resasonData=ref([
|
||||||
|
{
|
||||||
|
value:1,
|
||||||
|
label:'头像原因',
|
||||||
|
key:'avatar_reason',
|
||||||
|
content:''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:2,
|
||||||
|
label:'科室电话原因',
|
||||||
|
key:'department_custom_mobile_reason',
|
||||||
|
content:''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:3,
|
||||||
|
label:'科室名称原因',
|
||||||
|
key:'department_custom_name_reason',
|
||||||
|
content:''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:4,
|
||||||
|
label:'医生简介原因',
|
||||||
|
key:'brief_introduction_reason',
|
||||||
|
content:''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:5,
|
||||||
|
label:'擅长原因',
|
||||||
|
key:'be_good_at_reason'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:5,
|
||||||
|
label:'医师执业证原因',
|
||||||
|
key:'icense_cert_reason',
|
||||||
|
content:''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:6,
|
||||||
|
label:'医师资格原因',
|
||||||
|
key:'qualification_cert_reason',
|
||||||
|
content:''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value:6,
|
||||||
|
label:'医师工作证原因',
|
||||||
|
key:'work_cert_reason',
|
||||||
|
content:''
|
||||||
|
}
|
||||||
|
])
|
||||||
|
// rules
|
||||||
|
const rules = reactive({
|
||||||
|
option: [{
|
||||||
|
required: true,
|
||||||
|
message: '请选择原因'
|
||||||
|
}],
|
||||||
|
roleKey: [{
|
||||||
|
required: true,
|
||||||
|
message: '请输入权限字符'
|
||||||
|
}],
|
||||||
|
});
|
||||||
|
// Batch Del List
|
||||||
|
let batchList = [];
|
||||||
|
|
||||||
|
// Table Columns
|
||||||
|
const columns = [
|
||||||
|
{ title: '编号', dataIndex: 'doctor_id', slotName: 'doctor_id', width: '90' },
|
||||||
|
{ title: '医生名字', dataIndex: 'user_name' },
|
||||||
|
{ title: '手机号码', dataIndex: 'mobile' },
|
||||||
|
{ title: '医院', dataIndex: 'hospital_name', width: 160, slotName: 'hospital_name' },
|
||||||
|
{ title: '科室', dataIndex: 'department_custom_name',},
|
||||||
|
{ title: '职称', dataIndex: 'doctor_title', slotName: 'doctor_title' },
|
||||||
|
{ title: '申请时间', dataIndex: 'created_at', slotName: 'created_at' },
|
||||||
|
{ title: '审核状态', dataIndex: 'iden_auth_status', slotName: 'iden_auth_status' },
|
||||||
|
{ title: '操作', slotName: 'action' },
|
||||||
|
];
|
||||||
|
|
||||||
|
// Table Data
|
||||||
|
const tableData = ref([]);
|
||||||
|
//改变科室
|
||||||
|
const changeSelect = (value) => {
|
||||||
|
let arr = departmentData.value.filter((item) => {
|
||||||
|
return item.department_custom_id == value
|
||||||
|
})
|
||||||
|
modalForm.department_custom_name = arr[0].department_custom_name
|
||||||
|
}
|
||||||
|
watch(() => modalForm.user_id, (value) => {
|
||||||
|
if (value) {
|
||||||
|
handelDecryptCard(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//详情
|
||||||
|
const handleDetail = async (record) => {
|
||||||
|
modalVisible.value = true;
|
||||||
|
modalTitle.value = '医生详情';
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const changeReason=(value)=>{
|
||||||
|
console.log(value)
|
||||||
|
modalCheckForm.reasons=value;
|
||||||
|
value.forEach((item,index)=>{
|
||||||
|
rules[item.key]=[{required: true,message: '请输入'+item.label}]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//开启服务处理
|
||||||
|
const filterService = (record) => {
|
||||||
|
let arr = [];
|
||||||
|
let str = '';
|
||||||
|
if (record.is_img_expert_reception == 1) {
|
||||||
|
arr.push("专家问诊");
|
||||||
|
}
|
||||||
|
if (record.is_img_welfare_reception == 1) {
|
||||||
|
arr.push("公益问诊")
|
||||||
|
}
|
||||||
|
if (record.is_img_quick_reception == 1) {
|
||||||
|
arr.push("快速问诊")
|
||||||
|
};
|
||||||
|
if (record.multi_point_status == 1) {
|
||||||
|
arr.push("问诊购药")
|
||||||
|
}
|
||||||
|
arr.forEach((item) => {
|
||||||
|
if (!str) {
|
||||||
|
str += item
|
||||||
|
} else {
|
||||||
|
str += ',' + item
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return str ? str : "暂无"
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 分页改变
|
||||||
|
* @param {Number} [page]
|
||||||
|
*/
|
||||||
|
const handlePageChange = (page) => {
|
||||||
|
pager.page = page;
|
||||||
|
|
||||||
|
// 修改当前页码
|
||||||
|
currentPage.value = page;
|
||||||
|
getDoctorInfo({ ...pager, ...queryForm });
|
||||||
|
};
|
||||||
|
|
||||||
|
// 每页数据量
|
||||||
|
const handlepage_sizeChange = (page_size) => {
|
||||||
|
pager.page_size = page_size;
|
||||||
|
getDoctorInfo({ ...pager, ...queryForm });
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取医生信息
|
||||||
|
const getDoctorInfo = async (params = {}) => {
|
||||||
|
const { data, code, message } = await getDoctorList(params);
|
||||||
|
if (code == 200) {
|
||||||
|
tableData.value = data.data;
|
||||||
|
Object.assign(pager, { total: data.total, page: data.page, page_size: data.page_size });
|
||||||
|
} else {
|
||||||
|
proxy.$notification.error(message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 查询医生信息
|
||||||
|
const handleQuery = async () => {
|
||||||
|
const params = {
|
||||||
|
page: pager.page,
|
||||||
|
page_size: pager.page_size,
|
||||||
|
...queryForm,
|
||||||
|
};
|
||||||
|
|
||||||
|
getDoctorInfo(params);
|
||||||
|
};
|
||||||
|
|
||||||
|
const departmentData = ref([]);
|
||||||
|
//获取科室列表
|
||||||
|
const getDepartmentList = () => {
|
||||||
|
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 = 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 = () => {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 异步关闭Modal需要调用 done()
|
||||||
|
const handleSubmit = (done) => {
|
||||||
|
proxy.$refs.checkFormRef.validate(async (valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
const {code,message,data}= await checkDoctor(modalCheckForm,modalForm.doctor_id);
|
||||||
|
if (code == 200) {
|
||||||
|
proxy.$notification.success("提交成功");
|
||||||
|
} else {
|
||||||
|
proxy.$notification.error(message);
|
||||||
|
}
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
console.log(valid)
|
||||||
|
proxy.$message.error('表单校验失败');
|
||||||
|
done(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
//审核
|
||||||
|
const handleCheck= async(type)=>{
|
||||||
|
if(type=="ok"){
|
||||||
|
modalCheckForm.iden_auth_status=1;
|
||||||
|
if(!modalForm.user_doctor_info.qualification_cert_num){
|
||||||
|
proxy.$message.error("请填写资格证编号");
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
const {code,message,data}= await checkDoctor(modalCheckForm,modalForm.doctor_id);
|
||||||
|
if (code == 200) {
|
||||||
|
proxy.$notification.success("审核通过");
|
||||||
|
} else {
|
||||||
|
proxy.$notification.error(message);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
modalCheckForm.iden_auth_status=3;
|
||||||
|
modalCheckVisible.value=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// 重置搜索
|
||||||
|
const handleResetQuery = () => {
|
||||||
|
proxy.$refs.queryFormRef.resetFields();
|
||||||
|
getDoctorInfo(queryForm);
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
getDoctorInfo(pager);
|
||||||
|
handleHospitalList();
|
||||||
|
getDepartmentList();
|
||||||
|
handlExpertiseList();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.action {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hospital_name {
|
||||||
|
width: 160px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headImg {
|
||||||
|
margin-right: 20px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arco-form-item-layout-horizontal:first-child,
|
||||||
|
.arco-form-item-layout-horizontal:nth-child(2) {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.upload {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.eye {
|
||||||
|
margin-left: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cert .arco-form-item-label-col {
|
||||||
|
flex: 0 0 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.red {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: red;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.cardNum{
|
||||||
|
width: 148px;
|
||||||
|
}
|
||||||
|
.codbox{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -42,16 +42,15 @@
|
|||||||
<!-- action -->
|
<!-- action -->
|
||||||
<div class="action">
|
<div class="action">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button v-has="'admin:sysDoctor:add'" type="primary" @click="handleAdd"><icon-plus /> 新增 </a-button>
|
<a-button v-has="'admin:sysDoctorList:add'" type="primary" @click="handleAdd"><icon-plus /> 新增 </a-button>
|
||||||
<a-button v-has="'admin:sysDoctor:remove'" type="primary" status="danger"
|
<!-- <a-button v-has="'admin:sysDoctorList:remove'" type="primary" status="danger"><icon-delete /> 批量删除 </a-button> -->
|
||||||
@click="() => { deleteVisible = true; }"><icon-delete /> 批量删除 </a-button>
|
|
||||||
</a-space>
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- table -->
|
<!-- table -->
|
||||||
<a-table :columns="columns" :scroll="{ x: 2000 }" :data="tableData"
|
<a-table :columns="columns" :data="tableData" :scroll="{ x: 1500 }"
|
||||||
:pagination="{ 'show-total': true, 'show-jumper': true, 'show-page-size': true, total: pager.total, current: currentPage }"
|
:pagination="{ 'show-total': true, 'show-jumper': true, 'show-page-size': true, total: pager.total, current: currentPage }"
|
||||||
:row-selection="{ type: 'checkbox', showCheckedAll: true }" row-key="doctor_id"
|
row-key="doctor_id"
|
||||||
@selection-change="(selection) => {deleteData = selection;}" @page-change="handlePageChange"
|
@selection-change="(selection) => {deleteData = selection;}" @page-change="handlePageChange"
|
||||||
@page-size-change="handlepage_sizeChange">
|
@page-size-change="handlepage_sizeChange">
|
||||||
<template #doctor_id="{record,rowIndex}">
|
<template #doctor_id="{record,rowIndex}">
|
||||||
@ -72,13 +71,13 @@
|
|||||||
<template #inquiry_service="{ record }">
|
<template #inquiry_service="{ record }">
|
||||||
<span>{{filterService(record)}}</span>
|
<span>{{filterService(record)}}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #iden_auth_status="{ record }">
|
<template #multi_point_status="{ record }">
|
||||||
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
||||||
<a-tag v-if="record.iden_auth_status == 0" color="gray">未认证</a-tag>
|
<a-tag v-if="record.multi_point_status == 0" color="gray">未认证</a-tag>
|
||||||
<a-tag v-else-if="record.iden_auth_status == 1" color="green">正常</a-tag>
|
<a-tag v-else-if="record.multi_point_status == 1" color="green">认证通过</a-tag>
|
||||||
<a-tag v-else-if="record.iden_auth_status == 2" color="yellow">审核中</a-tag>
|
<a-tag v-else-if="record.multi_point_status == 2" color="#ffb400">审核中</a-tag>
|
||||||
<a-tag v-else color="red">认证失败)</a-tag>
|
<a-tag v-else-if="record.multi_point_status == 3" color="red">认证失败</a-tag>
|
||||||
</template>
|
</template>
|
||||||
<template #is_recommend="{ record }">
|
<template #is_recommend="{ record }">
|
||||||
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
||||||
<a-tag v-if="record.is_recommend == 0" color="gray">否</a-tag>
|
<a-tag v-if="record.is_recommend == 0" color="gray">否</a-tag>
|
||||||
@ -90,11 +89,11 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #action="{ record }">
|
<template #action="{ record }">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button v-has="'admin:sysDoctor:detail'" type="text"
|
<a-button v-has="'admin:sysDoctorList:detail'" type="text"
|
||||||
@click="handleDetail(record)"><icon-book />详情</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:sysDoctorList:edit'" type="text" @click="handleUpdate(record)"><icon-edit /> 修改</a-button>
|
||||||
<a-button v-has="'admin:sysDoctor:remove'" type="text"
|
<!-- <a-button v-has="'admin:sysDoctorList:remove'" type="text"
|
||||||
@click="() => { deleteVisible = true; deleteData = [record.doctor_id]; }"><icon-delete /> 删除</a-button>
|
@click="() => { deleteVisible = true; deleteData = [record.doctor_id]; }"><icon-delete /> 删除</a-button> -->
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
@ -112,15 +111,15 @@
|
|||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item field="avatar" label="医生头像:">
|
<a-form-item field="avatar" label="医生头像:">
|
||||||
<a-space size="large">
|
<a-space size="large">
|
||||||
<a-avatar :size="80" :imageUrl="modalForm.avatar">
|
<a-image width="80" height="80" class="headImg" :src="modalForm.avatar">
|
||||||
</a-avatar>
|
</a-image>
|
||||||
</a-space>
|
</a-space>
|
||||||
<a-upload action="/" :fileList="file ? [file] : []" class="upload" :auto-upload="false"
|
<a-upload action="/" :fileList="file ? [file] : []" class="upload" :auto-upload="false"
|
||||||
@change="onChangeFile" accept="image/*" @before-upload="beforeUpload" :show-file-list="false"
|
@change="onChangeFile" accept="image/*" @before-upload="beforeUpload" :show-file-list="false"
|
||||||
v-if="modalSatus!='detail'" />
|
v-if="modalSatus!='detail'" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12" v-if="modalSatus=='add'">
|
<a-col :span="12" v-if="modalSatus=='add'" style="margin-top: 10px;">
|
||||||
<a-form-item field="user.mobile" label="联系电话:">
|
<a-form-item field="user.mobile" label="联系电话:">
|
||||||
<a-input v-model="modalForm.user.mobile" placeholder="请输入联系电话" />
|
<a-input v-model="modalForm.user.mobile" placeholder="请输入联系电话" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@ -129,7 +128,7 @@
|
|||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item field="user_name" label="医生名字:">
|
<a-form-item field="user_name" label="医生名字:">
|
||||||
<a-input v-model="modalForm.user_name" placeholder="请输入医生名字" :disabled="modalSatus=='edit'"/>
|
<a-input v-model="modalForm.user_name" placeholder="请输入医生名字" :disabled="modalSatus=='edit'" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
@ -138,11 +137,11 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item field="idCard" label="身份证号:" v-else>
|
<a-form-item field="idCard" label="身份证号:" v-else>
|
||||||
<div class="box" v-show="!showEye && modalSatus!='add'">
|
<div class="box" v-show="!showEye && modalSatus!='add'">
|
||||||
<div>{{modalForm.user_doctor_info.card_num_mask}}</div>
|
<div class="cardNum">{{modalForm.user_doctor_info.card_num_mask}}</div>
|
||||||
<icon-eye-invisible class="eye" @click="()=>{showEye=true}" />
|
<icon-eye-invisible class="eye" @click="()=>{showEye=true}" />
|
||||||
</div>
|
</div>
|
||||||
<div class="box" v-show="showEye && modalSatus!='add'">
|
<div class="box" v-show="showEye && modalSatus!='add'">
|
||||||
<div>{{id_card_num}}</div>
|
<div class="cardNum">{{id_card_num}}</div>
|
||||||
<icon-eye class="eye" @click="()=>{showEye=false}" />
|
<icon-eye class="eye" @click="()=>{showEye=false}" />
|
||||||
</div>
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@ -211,14 +210,6 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<!-- <a-row :gutter="24">
|
|
||||||
<a-col :span="24">
|
|
||||||
<a-form-item field="license_cert_num" label="执业证编码:">
|
|
||||||
<a-input v-model="modalForm.license_cert.license_cert_num" placeholder="请输入部门名称" />
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
|
|
||||||
</a-row> -->
|
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<a-form-item field="user_doctor_info.qualification_cert_num" label="资格证编码:">
|
<a-form-item field="user_doctor_info.qualification_cert_num" label="资格证编码:">
|
||||||
@ -240,14 +231,16 @@
|
|||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<a-form-item field="be_good_at" label="擅长信息:">
|
<a-form-item field="be_good_at" label="擅长信息:">
|
||||||
<a-textarea v-model="modalForm.be_good_at" placeholder="请填写医生擅长信息。内容为医生专业领域、擅长疾病、研究方法等信息(字数在10-1000字)" />
|
<a-textarea :auto-size="{minRows:2}" :max-length="{length:1000,errorOnly:true}" allow-clear
|
||||||
</a-form-item>
|
show-word-limit v-model="modalForm.be_good_at" placeholder="请填写医生擅长信息。内容为医生专业领域、擅长疾病、研究方法等信息(字数在10-1000字)" />
|
||||||
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<a-form-item field="brief_introduction" label="个人简介:">
|
<a-form-item field="brief_introduction" label="个人简介:">
|
||||||
<a-textarea v-model="modalForm.brief_introduction" placeholder="请填写医生从业经历,职称和所获荣誉等信息(字数在10-1000字)" />
|
<a-textarea :auto-size="{minRows:2}" :max-length="{length:1000,errorOnly:true}" allow-clear
|
||||||
|
show-word-limit v-model="modalForm.brief_introduction" placeholder="请填写医生从业经历,职称和所获荣誉等信息(字数在10-1000字)" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@ -285,7 +278,7 @@
|
|||||||
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="20" >
|
<a-col :span="20">
|
||||||
<a-form-item field="is_sys_diagno_cooperation" label="先思达合作医生:">
|
<a-form-item field="is_sys_diagno_cooperation" label="先思达合作医生:">
|
||||||
<a-space size="large">
|
<a-space size="large">
|
||||||
<a-switch checked-color="#14C9C9" :checked-value="1" :unchecked-value="0"
|
<a-switch checked-color="#14C9C9" :checked-value="1" :unchecked-value="0"
|
||||||
@ -304,8 +297,9 @@
|
|||||||
v-if="(modalForm.user_doctor_info.license_cert && modalForm.user_doctor_info.license_cert.length>0) || modalSatus!='detail'">
|
v-if="(modalForm.user_doctor_info.license_cert && modalForm.user_doctor_info.license_cert.length>0) || modalSatus!='detail'">
|
||||||
|
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<div class="titletip"><span class="arco-form-item-label-required-symbol">*</span>医师执业证<span>(点击图片查看大图)</span></div>
|
<div class="titletip"><span
|
||||||
<a-form-item field="license_cert" :hide-label="true" :validate-trigger="['change']" >
|
class="arco-form-item-label-required-symbol red">*</span>医师执业证<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-form-item field="license_cert" :hide-label="true" :validate-trigger="['change']">
|
||||||
<a-image-preview-group infinite>
|
<a-image-preview-group infinite>
|
||||||
<a-space v-show="modalSatus=='detail'">
|
<a-space v-show="modalSatus=='detail'">
|
||||||
<a-image width="120" height="120" fit="cover" v-for="item in modalForm.user_doctor_info.license_cert"
|
<a-image width="120" height="120" fit="cover" v-for="item in modalForm.user_doctor_info.license_cert"
|
||||||
@ -323,8 +317,9 @@
|
|||||||
<a-row :gutter="24" style="margin-top: 35px;"
|
<a-row :gutter="24" style="margin-top: 35px;"
|
||||||
v-if="(modalForm.user_doctor_info.qualification_cert && modalForm.user_doctor_info.qualification_cert.length>0) || modalSatus!='detail'">
|
v-if="(modalForm.user_doctor_info.qualification_cert && modalForm.user_doctor_info.qualification_cert.length>0) || modalSatus!='detail'">
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<div class="titletip"><span class="arco-form-item-label-required-symbol">*</span>医师资格证<span>(点击图片查看大图)</span></div>
|
<div class="titletip"><span
|
||||||
<a-form-item field="qualification_cert" label="" :hide-label="true" >
|
class="arco-form-item-label-required-symbol red">*</span>医师资格证<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-form-item field="qualification_cert" label="" :hide-label="true">
|
||||||
<a-image-preview-group infinite>
|
<a-image-preview-group infinite>
|
||||||
<a-space v-show="modalSatus=='detail'">
|
<a-space v-show="modalSatus=='detail'">
|
||||||
<a-image width="120" height="120" fit="cover"
|
<a-image width="120" height="120" fit="cover"
|
||||||
@ -332,17 +327,19 @@
|
|||||||
</a-space>
|
</a-space>
|
||||||
</a-image-preview-group>
|
</a-image-preview-group>
|
||||||
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="qualification_cert_list"
|
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="qualification_cert_list"
|
||||||
:dataType="'qualification_cert_list'" @changeData="changeData"></upload>
|
:dataType="'qualification_cert_list'" @changeData="changeData"></upload>
|
||||||
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" :auto-upload="false"
|
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" :auto-upload="false"
|
||||||
@change="onChangeFile" accept="image/*" :file-list="qualification_cert_list"
|
@change="onChangeFile" accept="image/*" :file-list="qualification_cert_list"
|
||||||
@before-upload="beforeUpload" action="/" image-preview /> -->
|
@before-upload="beforeUpload" action="/" image-preview /> -->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</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-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">
|
<a-col :span="24">
|
||||||
<div class="titletip"><span class="arco-form-item-label-required-symbol">*</span>医师职称证<span>(点击图片查看大图)</span></div>
|
<div class="titletip"><span
|
||||||
<a-form-item field="work_cert" label="" :hide-label="true" >
|
class="arco-form-item-label-required-symbol red">*</span>医师职称证<span>(点击图片查看大图)</span></div>
|
||||||
|
<a-form-item field="work_cert" label="" :hide-label="true">
|
||||||
<a-image-preview-group infinite>
|
<a-image-preview-group infinite>
|
||||||
<a-space v-show="modalSatus=='detail'">
|
<a-space v-show="modalSatus=='detail'">
|
||||||
<a-image width="120" height="120" fit="cover" v-for="item in modalForm.user_doctor_info.work_cert"
|
<a-image width="120" height="120" fit="cover" v-for="item in modalForm.user_doctor_info.work_cert"
|
||||||
@ -350,7 +347,7 @@
|
|||||||
</a-space>
|
</a-space>
|
||||||
</a-image-preview-group>
|
</a-image-preview-group>
|
||||||
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="work_cert_list"
|
<upload v-show="modalSatus!='detail'" :isMultiple="true" :fileList="work_cert_list"
|
||||||
:dataType="'work_cert_list'" @changeData="changeData"></upload>
|
:dataType="'work_cert_list'" @changeData="changeData"></upload>
|
||||||
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" :auto-upload="false"
|
<!-- <a-upload v-show="modalSatus!='detail'" list-type="picture-card" :auto-upload="false"
|
||||||
@change="onChangeFile" accept="image/*" :file-list="work_cert_list"
|
@change="onChangeFile" accept="image/*" :file-list="work_cert_list"
|
||||||
@before-upload="beforeUpload('avatar')" action="/" image-preview /> -->
|
@before-upload="beforeUpload('avatar')" action="/" image-preview /> -->
|
||||||
@ -369,7 +366,7 @@
|
|||||||
</a-space>
|
</a-space>
|
||||||
</a-image-preview-group>
|
</a-image-preview-group>
|
||||||
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="id_card_front_list"
|
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="id_card_front_list"
|
||||||
:dataType="'id_card_front_list'" @changeData="changeData"></upload>
|
:dataType="'id_card_front_list'" @changeData="changeData"></upload>
|
||||||
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="id_card_front_list" list-type="picture-card"
|
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="id_card_front_list" list-type="picture-card"
|
||||||
action="/" :auto-upload="false" image-preview /> -->
|
action="/" :auto-upload="false" image-preview /> -->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@ -387,7 +384,7 @@
|
|||||||
</a-space>
|
</a-space>
|
||||||
</a-image-preview-group>
|
</a-image-preview-group>
|
||||||
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="id_card_back_list"
|
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="id_card_back_list"
|
||||||
:dataType="'id_card_back_list'" @changeData="changeData"></upload>
|
: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="/"
|
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="id_card_back_list" list-type="picture-card" action="/"
|
||||||
:auto-upload="false" image-preview /> -->
|
:auto-upload="false" image-preview /> -->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@ -406,7 +403,7 @@
|
|||||||
</a-space>
|
</a-space>
|
||||||
</a-image-preview-group>
|
</a-image-preview-group>
|
||||||
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="sign_image_list"
|
<upload v-show="modalSatus!='detail'" :isMultiple="false" :fileList="sign_image_list"
|
||||||
:dataType="'sign_image_list'" @changeData="changeData"></upload>
|
:dataType="'sign_image_list'" @changeData="changeData"></upload>
|
||||||
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="sign_image_list" list-type="picture-card" action="/"
|
<!-- <a-upload v-show="modalSatus!='detail'" :file-list="sign_image_list" list-type="picture-card" action="/"
|
||||||
:auto-upload="false" image-preview /> -->
|
:auto-upload="false" image-preview /> -->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@ -436,15 +433,10 @@
|
|||||||
<a-space v-if="modalSatus!='detail'" style="margin-right: 8px;">
|
<a-space v-if="modalSatus!='detail'" style="margin-right: 8px;">
|
||||||
<a-button type="primary" @click="handleSubmit">保存</a-button>
|
<a-button type="primary" @click="handleSubmit">保存</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
<!-- <a-space v-if="modalSatus=='detail'">
|
<!-- <a-space v-if="modalSatus=='edit'">
|
||||||
<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="warning">拉黑</a-button>
|
||||||
<a-button type="primary" status="danger">删除</a-button>
|
<a-button type="primary" status="danger">删除</a-button>
|
||||||
</a-space>
|
</a-space> -->
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@ -459,7 +451,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch, computed } from 'vue';
|
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch, computed } from 'vue';
|
||||||
import { getDoctorList, addDoctor, removeDoctor, updateDoctor, getDoctorDetail, departmentList, decryptCard, hospitalList,expertiseList} 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 { ossSign, ossUpload } from '@/api/oss';
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
// Akiraka 20230210 删除数据
|
// Akiraka 20230210 删除数据
|
||||||
@ -472,10 +464,10 @@
|
|||||||
getDoctorInfo(pager);
|
getDoctorInfo(pager);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const file = ref();
|
|
||||||
const { proxy } = getCurrentInstance();
|
|
||||||
|
|
||||||
|
const file = ref();
|
||||||
|
const oldFrontImg='',OldBackFrontImg='',oldSignImg='';
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
const currentPage = ref(1);
|
const currentPage = ref(1);
|
||||||
// Pager
|
// Pager
|
||||||
const pager = {
|
const pager = {
|
||||||
@ -497,18 +489,18 @@
|
|||||||
license_cert: [],
|
license_cert: [],
|
||||||
qualification_cert: [],
|
qualification_cert: [],
|
||||||
work_cert: [],
|
work_cert: [],
|
||||||
department_custom_name:'',
|
department_custom_name: '',
|
||||||
user_id: '',
|
user_id: '',
|
||||||
status: 1,
|
status: 1,
|
||||||
id_card_front:'',
|
id_card_front: '',
|
||||||
id_card_back:'',
|
id_card_back: '',
|
||||||
sign_image:'',
|
sign_image: '',
|
||||||
card_num: null,
|
card_num: null,
|
||||||
cur_doctor_expertise:[],
|
cur_doctor_expertise: [],
|
||||||
avatar: 'https://img.applets.igandanyiyuan.com/basic/file/doctor_avatar.png'
|
avatar: 'https://img.applets.igandanyiyuan.com/basic/file/doctor_avatar.png'
|
||||||
});
|
});
|
||||||
|
|
||||||
//const doctor_expertise=ref([]);
|
//const doctor_expertise=ref([]);
|
||||||
//证书计算
|
//证书计算
|
||||||
const transArr = (arr) => {
|
const transArr = (arr) => {
|
||||||
let newArr = [];
|
let newArr = [];
|
||||||
@ -534,8 +526,8 @@
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'qualification_cert_list':
|
case 'qualification_cert_list':
|
||||||
if (value.dealType == "add") {
|
if (value.dealType == "add") {
|
||||||
qualification_cert_list.value.push({
|
qualification_cert_list.value.push({
|
||||||
url: value.url
|
url: value.url
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -543,8 +535,8 @@
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'work_cert_list':
|
case 'work_cert_list':
|
||||||
if (value.dealType == "add") {
|
if (value.dealType == "add") {
|
||||||
work_cert_list.value.push({
|
work_cert_list.value.push({
|
||||||
url: value.url
|
url: value.url
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -552,7 +544,7 @@
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'id_card_front_list':
|
case 'id_card_front_list':
|
||||||
if(value.dealType == "add") {
|
if (value.dealType == "add") {
|
||||||
id_card_front_list.value.push({
|
id_card_front_list.value.push({
|
||||||
url: value.url
|
url: value.url
|
||||||
})
|
})
|
||||||
@ -561,8 +553,8 @@
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'id_card_back_list':
|
case 'id_card_back_list':
|
||||||
if(value.dealType == "add") {
|
if (value.dealType == "add") {
|
||||||
id_card_back_list.value.push({
|
id_card_back_list.value.push({
|
||||||
url: value.url
|
url: value.url
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -570,7 +562,7 @@
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'sign_image_list':
|
case 'sign_image_list':
|
||||||
if(value.dealType == "add") {
|
if (value.dealType == "add") {
|
||||||
sign_image_list.value.push({
|
sign_image_list.value.push({
|
||||||
url: value.url
|
url: value.url
|
||||||
})
|
})
|
||||||
@ -597,46 +589,47 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
watch(() => license_cert_list.value, (value) => {
|
watch(() => license_cert_list.value, (value) => {
|
||||||
let arr=[]
|
let arr = []
|
||||||
value.forEach((item)=>{
|
value.forEach((item) => {
|
||||||
arr.push(item.url)
|
arr.push(item.url)
|
||||||
});
|
});
|
||||||
modalForm.license_cert=arr;
|
|
||||||
|
modalForm.license_cert = arr;
|
||||||
},{deep: true});
|
|
||||||
|
}, { deep: true });
|
||||||
watch(() => qualification_cert_list.value, (value) => {
|
watch(() => qualification_cert_list.value, (value) => {
|
||||||
let arr=[]
|
let arr = []
|
||||||
value.forEach((item)=>{
|
value.forEach((item) => {
|
||||||
arr.push(item.url)
|
arr.push(item.url)
|
||||||
});
|
});
|
||||||
modalForm.qualification_cert=arr;
|
modalForm.qualification_cert = arr;
|
||||||
},{deep: true });
|
}, { deep: true });
|
||||||
|
|
||||||
watch(() => work_cert_list.value, (value) => {
|
watch(() => work_cert_list.value, (value) => {
|
||||||
let arr=[]
|
let arr = []
|
||||||
value.forEach((item)=>{
|
value.forEach((item) => {
|
||||||
arr.push(item.url)
|
arr.push(item.url)
|
||||||
});
|
});
|
||||||
modalForm.work_cert=arr;
|
modalForm.work_cert = arr;
|
||||||
},{deep: true});
|
}, { deep: true });
|
||||||
|
|
||||||
watch(() =>id_card_front_list.value, (value) => {
|
watch(() => id_card_front_list.value, (value) => {
|
||||||
if(value.length>0){
|
if (value.length > 0) {
|
||||||
modalForm.id_card_front=value[0].url;
|
modalForm.id_card_front = value[0].url;
|
||||||
}else{
|
} else {
|
||||||
modalForm.id_card_front=''
|
modalForm.id_card_front = ''
|
||||||
}
|
}
|
||||||
},{deep: true});
|
}, { deep: true });
|
||||||
watch(() =>id_card_back_list.value, (value) => {
|
watch(() => id_card_back_list.value, (value) => {
|
||||||
value.length>0? modalForm.id_card_back=value[0].url:modalForm.id_card_back=''
|
value.length > 0 ? modalForm.id_card_back = value[0].url : modalForm.id_card_back = ''
|
||||||
},{deep: true});
|
}, { deep: true });
|
||||||
watch(() =>sign_image_list.value, (value) => {
|
watch(() => sign_image_list.value, (value) => {
|
||||||
if(value.length>0){
|
if (value.length > 0) {
|
||||||
modalForm.sign_image=value[0].url;
|
modalForm.sign_image = value[0].url;
|
||||||
}else{
|
} else {
|
||||||
modalForm.sign_image=''
|
modalForm.sign_image = ''
|
||||||
}
|
}
|
||||||
},{deep: true});
|
}, { deep: true });
|
||||||
// Rules
|
// Rules
|
||||||
const rules = {
|
const rules = {
|
||||||
avatar: [{ required: true, message: '请上传医生头像' }],
|
avatar: [{ required: true, message: '请上传医生头像' }],
|
||||||
@ -644,17 +637,17 @@
|
|||||||
{ required: true, message: '请输入医生名字' },
|
{ required: true, message: '请输入医生名字' },
|
||||||
{
|
{
|
||||||
validator: (value, cb) => {
|
validator: (value, cb) => {
|
||||||
let reg=/^([\u4e00-\u9fa5\·]{2,10})$/;
|
let reg = /^([\u4e00-\u9fa5\·]{2,10})$/;
|
||||||
if (!reg.test(value)) {
|
if (!reg.test(value)) {
|
||||||
cb('姓名要求在2-10个汉字');
|
cb('姓名要求在2-10个汉字');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
card_num: [
|
card_num: [
|
||||||
{ required: true, message: '请输入身份证号' },
|
{ required: true, message: '请输入身份证号' },
|
||||||
{
|
{
|
||||||
validator: (value, cb) => {
|
validator: (value, cb) => {
|
||||||
let reg=/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
||||||
if (!reg.test(value)) {
|
if (!reg.test(value)) {
|
||||||
cb('身份证号码格式不正确');
|
cb('身份证号码格式不正确');
|
||||||
}
|
}
|
||||||
@ -665,31 +658,65 @@
|
|||||||
{ required: true, message: '请输入手机号' },
|
{ required: true, message: '请输入手机号' },
|
||||||
{
|
{
|
||||||
validator: (value, cb) => {
|
validator: (value, cb) => {
|
||||||
let reg=/^1[3456789]\d{9}$/;
|
let reg = /^1[3456789]\d{9}$/;
|
||||||
if (!reg.test(value)) {
|
if (!reg.test(value)) {
|
||||||
cb('手机号码格式不正确');
|
cb('手机号码格式不正确');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
'hospital.address': [{ required: true, message: '请输入医院地址' }],
|
'hospital.address': [{ required: true, message: '请输入医院地址' }],
|
||||||
'hospital.hospital_name': [{ required: true, message: '请选择医院名称' }],
|
'hospital.hospital_name': [{ required: true, message: '请选择医院名称' }],
|
||||||
department_custom_id: [{ required: true, message: '请选择所在科室' }],
|
department_custom_id: [{ required: true, message: '请选择所在科室' }],
|
||||||
department_custom_name: [{ required: true, message: '请输入科室名称' }],
|
department_custom_name: [{ required: true, message: '请输入科室名称' }],
|
||||||
doctor_title: [{ required: true, message: '请选择职称' }],
|
doctor_title: [{ required: true, message: '请选择职称' }],
|
||||||
'user_doctor_info.qualification_cert_num': [{ required: true, message: '请输入资格证编码' }],
|
'user_doctor_info.qualification_cert_num': [{ required: true, message: '请输入资格证编码' }],
|
||||||
cur_doctor_expertise:[{ type:'array',minLength:1,required: true, message: '请选择专长' }],
|
cur_doctor_expertise: [{ type: 'array', minLength: 1, required: true, message: '请选择专长' }],
|
||||||
be_good_at: [{ required: true, message: '请输入擅长内容',maxLength:1000,minLength:2 }],
|
be_good_at: [{ required: true, message: '请输入擅长内容', maxLength: 1000, minLength: 2 }],
|
||||||
brief_introduction: [{ required: true, message: '请输入简介',maxLength:1000,minLength:2 }],
|
brief_introduction: [{ required: true, message: '请输入简介', maxLength: 1000, minLength: 2 }],
|
||||||
// license_cert: [
|
license_cert: [
|
||||||
// {
|
{
|
||||||
// validator: (value, cb) => {
|
validator: (value, cb) => {
|
||||||
// if(license_cert_list.value.length==0){
|
return new Promise(resolve => {
|
||||||
// cb("请上传医师执业证")
|
window.setTimeout(() => {
|
||||||
// }
|
if (license_cert_list.value.length == 0) {
|
||||||
// }
|
cb("请上传医师执业证")
|
||||||
// }],
|
}
|
||||||
// qualification_cert: [{ type:'array',required: true, message: '请上传医师资格证' }],
|
resolve()
|
||||||
// work_cert: [{ type:'array',required: true, message: '请上传医师职称证' }],
|
}, 1000)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
qualification_cert: [
|
||||||
|
{
|
||||||
|
validator: (value, cb) => {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
if (qualification_cert_list.value.length == 0) {
|
||||||
|
cb("请上传医师资格证")
|
||||||
|
}
|
||||||
|
resolve()
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
work_cert: [
|
||||||
|
{
|
||||||
|
validator: (value, cb) => {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
if (work_cert_list.value.length == 0) {
|
||||||
|
cb("请上传医师职称证")
|
||||||
|
}
|
||||||
|
resolve()
|
||||||
|
}, 1000)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
// is_platform_deep_cooperation:[{required: true, message: '请选择是否是平台深度合作'}],
|
// is_platform_deep_cooperation:[{required: true, message: '请选择是否是平台深度合作'}],
|
||||||
// is_platform_deep_cooperation:[{required: true, message: '请选择是否是平台深度合作'}],
|
// is_platform_deep_cooperation:[{required: true, message: '请选择是否是平台深度合作'}],
|
||||||
//is_recommend
|
//is_recommend
|
||||||
@ -732,18 +759,18 @@
|
|||||||
|
|
||||||
// Table Columns
|
// Table Columns
|
||||||
const columns = [
|
const columns = [
|
||||||
{ title: '编号', dataIndex: 'doctor_id', slotName: 'doctor_id', width: '100' },
|
{ title: '编号', dataIndex: 'doctor_id', slotName: 'doctor_id', width: '90' },
|
||||||
{ title: '医生名字', dataIndex: 'user_name' },
|
{ title: '医生名字', dataIndex: 'user_name' },
|
||||||
{ title: '手机号码', dataIndex: 'mobile' },
|
{ title: '手机号码', dataIndex: 'mobile',width:125 },
|
||||||
{ title: '医院', dataIndex: 'hospital_name', width: '180', slotName: 'hospital_name' },
|
{ title: '医院', dataIndex: 'hospital_name', width: '150', slotName: 'hospital_name' },
|
||||||
{ title: '职称', dataIndex: 'doctor_title', slotName: 'doctor_title' },
|
{ title: '职称', dataIndex: 'doctor_title', slotName: 'doctor_title' },
|
||||||
{ title: '开启服务', dataIndex: 'inquiry_service', slotName: 'inquiry_service' },
|
{ title: '开启服务', dataIndex: 'inquiry_service', slotName: 'inquiry_service' },
|
||||||
{ title: '审核状态', dataIndex: 'iden_auth_status', slotName: 'iden_auth_status' },
|
{ title: '审核状态', dataIndex: 'multi_point_status', slotName: 'multi_point_status' },
|
||||||
{ title: '是否推荐', dataIndex: 'is_recommend', slotName: 'is_recommend' },
|
{ title: '是否推荐', dataIndex: 'is_recommend', slotName: 'is_recommend' },
|
||||||
{ title: '申请人', dataIndex: 'user_name' },
|
{ title: '申请人', dataIndex: 'user_name' },
|
||||||
{ title: '启用状态', dataIndex: 'status', slotName: 'status' },
|
{ title: '启用状态', dataIndex: 'status', slotName: 'status' },
|
||||||
// { title: '创建时间', dataIndex: 'created_at', slotName: 'created_at' },
|
// { title: '创建时间', dataIndex: 'created_at', slotName: 'created_at' },
|
||||||
{ title: '操作', slotName: 'action', fixed: 'right', width: '300' },
|
{ title: '操作', slotName: 'action',fixed:"right",width:180 },
|
||||||
];
|
];
|
||||||
|
|
||||||
// Table Data
|
// Table Data
|
||||||
@ -775,15 +802,15 @@
|
|||||||
modalTitle.value = '医生详情';
|
modalTitle.value = '医生详情';
|
||||||
modalSatus.value = 'detail';
|
modalSatus.value = 'detail';
|
||||||
const { code, data, message } = await getDoctorDetail(record.doctor_id);
|
const { code, data, message } = await getDoctorDetail(record.doctor_id);
|
||||||
|
|
||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
Object.assign(modalForm, data);
|
Object.assign(modalForm, data);
|
||||||
if(data.doctor_expertise && data.doctor_expertise.length>0){
|
if (data.doctor_expertise && data.doctor_expertise.length > 0) {
|
||||||
let arr=[];
|
let arr = [];
|
||||||
data.doctor_expertise.forEach((item)=>{
|
data.doctor_expertise.forEach((item) => {
|
||||||
arr.push(item.expertise_id)
|
arr.push(item.expertise_id)
|
||||||
})
|
})
|
||||||
modalForm.cur_doctor_expertise=arr;
|
modalForm.cur_doctor_expertise = arr;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
proxy.$notification.error(message);
|
proxy.$notification.error(message);
|
||||||
@ -804,13 +831,15 @@
|
|||||||
id_card_front_list.value = transArr(id_card_front);
|
id_card_front_list.value = transArr(id_card_front);
|
||||||
id_card_back_list.value = transArr(id_card_back);
|
id_card_back_list.value = transArr(id_card_back);
|
||||||
sign_image_list.value = transArr(sign_image);
|
sign_image_list.value = transArr(sign_image);
|
||||||
|
oldFrontImg=id_card_front;
|
||||||
if(data.doctor_expertise && data.doctor_expertise.length>0){
|
OldBackFrontImg=id_card_back;
|
||||||
let arr=[];
|
oldSignImg=sign_image;
|
||||||
data.doctor_expertise.forEach((item)=>{
|
if (data.doctor_expertise && data.doctor_expertise.length > 0) {
|
||||||
|
let arr = [];
|
||||||
|
data.doctor_expertise.forEach((item) => {
|
||||||
arr.push(item.expertise_id)
|
arr.push(item.expertise_id)
|
||||||
})
|
})
|
||||||
modalForm.cur_doctor_expertise=arr;
|
modalForm.cur_doctor_expertise = arr;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
proxy.$notification.error(message);
|
proxy.$notification.error(message);
|
||||||
@ -849,32 +878,31 @@
|
|||||||
proxy.$refs.modalFormRef.validate(async (valid) => {
|
proxy.$refs.modalFormRef.validate(async (valid) => {
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
let res;
|
let res;
|
||||||
//alert(modalForm.id_card_front);
|
let modalData = {
|
||||||
let modalData={
|
card_name: modalForm.user_name,
|
||||||
card_name:modalForm.user_name,
|
mobile: modalForm.user.mobile,
|
||||||
mobile:modalForm.user.mobile,
|
mobile: modalForm.user.mobile,
|
||||||
mobile:modalForm.user.mobile,
|
is_recommend: modalForm.is_recommend,
|
||||||
is_recommend:modalForm.is_recommend,
|
avatar: modalForm.avatar,
|
||||||
avatar:modalForm.avatar,
|
doctor_title: modalForm.doctor_title,
|
||||||
doctor_title:modalForm.doctor_title,
|
department_custom_id: modalForm.department_custom_id,
|
||||||
department_custom_id:modalForm.department_custom_id,
|
department_custom_name: modalForm.department_custom_name,
|
||||||
department_custom_name:modalForm.department_custom_name,
|
department_custom_mobile: modalForm.department_custom_mobile,
|
||||||
department_custom_mobile:modalForm.department_custom_mobile,
|
hospital_id: modalForm.hospital_id,
|
||||||
hospital_id:modalForm.hospital_id,
|
be_good_at: modalForm.be_good_at,
|
||||||
be_good_at:modalForm.be_good_at,
|
brief_introduction: modalForm.brief_introduction,
|
||||||
brief_introduction:modalForm.brief_introduction,
|
license_cert: modalForm.license_cert,
|
||||||
license_cert:modalForm.license_cert,
|
qualification_cert: modalForm.qualification_cert,
|
||||||
qualification_cert:modalForm.qualification_cert,
|
work_cert: modalForm.work_cert,
|
||||||
work_cert:modalForm.work_cert,
|
qualification_cert_num: modalForm.user_doctor_info.qualification_cert_num,
|
||||||
qualification_cert_num:modalForm.user_doctor_info.qualification_cert_num,
|
id_card_front: modalForm.id_card_front,
|
||||||
id_card_front:modalForm.id_card_front,
|
id_card_back: modalForm.id_card_back,
|
||||||
id_card_back:modalForm.id_card_back,
|
sign_image: modalForm.sign_image,
|
||||||
sign_image:modalForm.sign_image,
|
card_num: modalForm.card_num,
|
||||||
card_num:modalForm.card_num,
|
doctor_expertise: modalForm.cur_doctor_expertise,
|
||||||
doctor_expertise:modalForm.cur_doctor_expertise,
|
is_platform_deep_cooperation: modalForm.is_platform_deep_cooperation,
|
||||||
is_platform_deep_cooperation:modalForm.is_platform_deep_cooperation,
|
is_sys_diagno_cooperation: modalForm.is_sys_diagno_cooperation
|
||||||
is_sys_diagno_cooperation :modalForm.is_sys_diagno_cooperation
|
}
|
||||||
}
|
|
||||||
if (!modalForm.doctor_id) {
|
if (!modalForm.doctor_id) {
|
||||||
const { code, message } = await addDoctor(modalData);
|
const { code, message } = await addDoctor(modalData);
|
||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
@ -883,6 +911,19 @@
|
|||||||
proxy.$notification.error(message);
|
proxy.$notification.error(message);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if(oldFrontImg && !modalForm.id_card_front){
|
||||||
|
proxy.$notification.error("请上传医师身份证正面照片");
|
||||||
|
return false
|
||||||
|
};
|
||||||
|
if(oldBackImg && !modalForm.id_card_back){
|
||||||
|
proxy.$notification.error("请上传医师身份证反面照片");
|
||||||
|
return false
|
||||||
|
};
|
||||||
|
if(oldSignImg && !modalForm.sign_image){
|
||||||
|
proxy.$notification.error("请上传医师手写签名照片");
|
||||||
|
return false
|
||||||
|
};
|
||||||
|
|
||||||
const { code, message } = await updateDoctor(modalData, modalForm.doctor_id);
|
const { code, message } = await updateDoctor(modalData, modalForm.doctor_id);
|
||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
proxy.$notification.success('更新成功');
|
proxy.$notification.success('更新成功');
|
||||||
@ -1000,9 +1041,9 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
const expertiseData=ref([]);
|
const expertiseData = ref([]);
|
||||||
// 获取专长列表
|
// 获取专长列表
|
||||||
const handlExpertiseList= () =>{
|
const handlExpertiseList = () => {
|
||||||
expertiseList().then((res) => {
|
expertiseList().then((res) => {
|
||||||
const { data, code, message } = res;
|
const { data, code, message } = res;
|
||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
@ -1010,8 +1051,8 @@
|
|||||||
} else {
|
} else {
|
||||||
proxy.$notification.error(message);
|
proxy.$notification.error(message);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 重置搜索
|
// 重置搜索
|
||||||
const handleResetQuery = () => {
|
const handleResetQuery = () => {
|
||||||
proxy.$refs.queryFormRef.resetFields();
|
proxy.$refs.queryFormRef.resetFields();
|
||||||
@ -1033,14 +1074,10 @@
|
|||||||
formData.append('policy', policy);
|
formData.append('policy', policy);
|
||||||
formData.append('signature', signature);
|
formData.append('signature', signature);
|
||||||
formData.append('key', dir + time + filename);
|
formData.append('key', dir + time + filename);
|
||||||
|
formData.append('success_action_status',200);
|
||||||
formData.append('file', File, filename);
|
formData.append('file', File, filename);
|
||||||
ossUpload(host, formData).then((res) => {
|
ossUpload(host, formData).then((res) => {
|
||||||
modalForm.avatar = host + "/" + dir + time + filename;
|
modalForm.avatar = host + "/" + dir + time + filename;
|
||||||
|
|
||||||
// if(res.code==204){
|
|
||||||
// alert('22')
|
|
||||||
// modalForm.avatar=host+dir+time+filename
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -1077,7 +1114,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.hospital_name {
|
.hospital_name {
|
||||||
width: 100%;
|
width: 160px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
@ -1086,6 +1123,8 @@
|
|||||||
.headImg {
|
.headImg {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
width:80px;
|
||||||
|
height:80px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.arco-form-item-layout-horizontal:first-child,
|
.arco-form-item-layout-horizontal:first-child,
|
||||||
@ -1107,7 +1146,19 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
.cert .arco-form-item-label-col{
|
|
||||||
flex: 0 0 8px!important;
|
.cert .arco-form-item-label-col {
|
||||||
|
flex: 0 0 8px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.red {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: red;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.cardNum{
|
||||||
|
width: 148px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
Loading…
x
Reference in New Issue
Block a user