1792 lines
67 KiB
Vue
1792 lines
67 KiB
Vue
<template>
|
||
<div class="app-container">
|
||
<a-form :model="queryForm" ref="queryFormRef" layout="inline">
|
||
|
||
<a-form-item field="user_name" label="医生名字">
|
||
<a-input :style="{ width: '182px' }" v-model="queryForm.user_name" placeholder="请输入医生名字"
|
||
@press-enter="handleQuery" />
|
||
</a-form-item>
|
||
<a-form-item field="mobile" label="电话号码">
|
||
<a-input :style="{ width: '182px' }" v-model="queryForm.mobile" placeholder="请输入电话号码"
|
||
@press-enter="handleQuery" />
|
||
</a-form-item>
|
||
<a-form-item field="hospital_name" label="所属医院">
|
||
<a-input :style="{ width: '182px' }" v-model="queryForm.hospital_name" placeholder="请输入所属医院"
|
||
@press-enter="handleQuery" />
|
||
</a-form-item>
|
||
<!-- <a-form-item field="department_custom_name" label="科室名称">
|
||
<a-input v-model="queryForm.department_custom_name" placeholder="请输入科室名称" @press-enter="handleQuery" />
|
||
</a-form-item> -->
|
||
<a-form-item field="doctor_title" label="医生职称">
|
||
<a-select v-model="queryForm.doctor_title" placeholder="请选择医生职称" :style="{ width: '182px' }">
|
||
<!-- 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) -->
|
||
<a-option :value="1">主任医师</a-option>
|
||
<a-option :value="2">主任中医师</a-option>
|
||
<a-option :value="3">副主任医师</a-option>
|
||
<a-option :value="4">副主任中医师</a-option>
|
||
<a-option :value="5">主治医师</a-option>
|
||
<a-option :value="6">住院医师</a-option>
|
||
</a-select>
|
||
</a-form-item>
|
||
<a-form-item field="inquiry_service" label="服务类型">
|
||
<a-select v-model="queryForm.inquiry_service" placeholder="请选择服务类型" :style="{ width: '182px' }">
|
||
<!-- 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 -->
|
||
<a-option :value="1">专家问诊</a-option>
|
||
<a-option :value="2">快速问诊</a-option>
|
||
<a-option :value="3">公益问诊</a-option>
|
||
<a-option :value="4">问诊购药</a-option>
|
||
</a-select>
|
||
</a-form-item>
|
||
<a-form-item field="multi_point_status" label="多点认证">
|
||
<a-select v-model="queryForm.multi_point_status" placeholder="请选择多点认证状态" :style="{ width: '182px' }">
|
||
<!-- 医生多点执业认证状态(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 field="iden_auth_status" label="身份认证">
|
||
<a-select v-model="queryForm.iden_auth_status" placeholder="请选择身份认证状态" :style="{ width: '182px' }">
|
||
<!-- 医生多点执业认证状态(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 field="idcard_status" label="实名认证">
|
||
<a-select v-model="queryForm.idcard_status" placeholder="请选择实名认证状态" :style="{ width: '182px' }">
|
||
<!-- 实名认证状态(0:未认证 1:认证通过 2:认证失败) -->
|
||
<a-option :value="0">未认证</a-option>
|
||
<a-option :value="1">认证通过</a-option>
|
||
<a-option :value="2">认证失败</a-option>
|
||
</a-select>
|
||
</a-form-item>
|
||
<a-form-item field="is_recommend" label="首页推荐">
|
||
<a-select v-model="queryForm.is_recommend" placeholder="请选择是否首页推荐" :style="{ width: '182px' }">
|
||
<!-- 实名认证状态(0:未认证 1:认证通过 2:认证失败) -->
|
||
<a-option :value="0">否</a-option>
|
||
<a-option :value="1">是</a-option>
|
||
</a-select>
|
||
</a-form-item>
|
||
<a-form-item field="is_platform_deep_cooperation" label="深度合作">
|
||
<a-select v-model="queryForm.is_platform_deep_cooperation" placeholder="请选择是否是平台深度合作"
|
||
:style="{ width: '182px' }">
|
||
<!-- 实名认证状态(0:未认证 1:认证通过 2:认证失败) -->
|
||
<a-option :value="0">否</a-option>
|
||
<a-option :value="1">是</a-option>
|
||
</a-select>
|
||
</a-form-item>
|
||
<a-form-item field="is_sys_diagno_cooperation" label="先思达合作">
|
||
<a-select v-model="queryForm.is_sys_diagno_cooperation" placeholder="请选择是否是先思达合作" :style="{ width: '168px' }">
|
||
<!-- 实名认证状态(0:未认证 1:认证通过 2:认证失败) -->
|
||
<a-option :value="0">否</a-option>
|
||
<a-option :value="1">是</a-option>
|
||
</a-select>
|
||
</a-form-item>
|
||
<a-form-item field="create_range_time" label="创建时间范围">
|
||
<a-range-picker style="width: 330px" v-model="queryForm.create_range_time" />
|
||
</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 -->
|
||
<div class="action">
|
||
<a-space>
|
||
<a-button v-has="'admin:sysDoctorList:add'" type="primary" @click="handleAdd"><icon-plus /> 新增 </a-button>
|
||
<a-button v-has="'admin:sysDoctorList:selectExport'" type="primary" @click="handlExport(2)"><icon-export />
|
||
选择数据导出 </a-button>
|
||
<a-button v-has="'admin:sysDoctorList:searchExport'" type="primary" @click="handlExport(1)"><icon-export />
|
||
当前搜索全部导出</a-button>
|
||
<a-button v-has="'admin:sysDoctorList:allExport'" type="primary" @click="handlExport(3)"><icon-export />
|
||
全部导出</a-button>
|
||
</a-space>
|
||
</div>
|
||
|
||
<!-- table -->
|
||
<a-table :columns="columns" ref="tableRef" :data="tableData" :scroll="{ x: 2000 }"
|
||
:row-selection="{ type: 'checkbox', showCheckedAll: true }"
|
||
: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; console.log(selection) }"
|
||
@page-change="handlePageChange" @page-size-change="handlepage_sizeChange"
|
||
@selectAll="(checked) => { console.log(checked) }">
|
||
<template #doctor_id="{ record, rowIndex }">
|
||
<div>{{ (rowIndex + 1) + (pager.page - 1) * pager.page_size }}</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 #hospital_name="{ record }">
|
||
<div class="hospital_name" :title="record.hospital_name">{{ record.hospital_name }}</div>
|
||
</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 #multi_point_status="{ record }">
|
||
<!-- 身份认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) -->
|
||
<a-tag v-if="record.multi_point_status == 0" color="gray">未认证</a-tag>
|
||
<a-tag v-else-if="record.multi_point_status == 1" color="green">认证通过</a-tag>
|
||
<a-tag v-else-if="record.multi_point_status == 2" color="#ffb400">审核中</a-tag>
|
||
<a-tag v-else-if="record.multi_point_status == 3" color="red">认证失败</a-tag>
|
||
</template>
|
||
<template #is_recommend="{ record }">
|
||
|
||
<a-tag v-if="record.is_recommend == 0" color="gray">否</a-tag>
|
||
<a-tag v-else color="green">是</a-tag>
|
||
</template>
|
||
<template #is_platform_deep_cooperation="{ record }">
|
||
|
||
<a-tag v-if="record.is_platform_deep_cooperation == 0" color="gray">否</a-tag>
|
||
<a-tag v-else color="green">是</a-tag>
|
||
</template>
|
||
<template #idcard_status="{ record }">
|
||
<!-- 实名认证状态(0:未认证 1:认证通过2:认证失败) -->
|
||
<a-tag v-if="record.idcard_status == 0" color="gray">未认证</a-tag>
|
||
<a-tag v-else-if="record.idcard_status == 1" color="green">认证通过</a-tag>
|
||
<a-tag v-else-if="record.idcard_status == 2" color="red">认证失败</a-tag>
|
||
</template>
|
||
<template #status="{ record }">
|
||
<!-- 状态(0:禁用 1:正常 2:删除) -->
|
||
<a-tag v-if="record.status == 0" color="#ffb400">禁用</a-tag>
|
||
<a-tag v-else-if="record.status == 1" color="green">正常</a-tag>
|
||
<a-tag v-else color="red">删除</a-tag>
|
||
</template>
|
||
<template #action="{ record }">
|
||
<a-space>
|
||
<a-button v-has="'admin:sysDoctorList:detail'" type="text"
|
||
@click="handleDetail(record)"><icon-book />详情</a-button>
|
||
<a-button v-has="'admin:sysDoctorList:edit'" type="text" @click="handleUpdate(record)"><icon-edit />
|
||
修改</a-button>
|
||
<!-- <a-button v-has="'admin:sysDoctorList:remove'" type="text"
|
||
@click="() => { deleteVisible = true; deleteData = [record.doctor_id]; }"><icon-delete /> 删除</a-button> -->
|
||
</a-space>
|
||
</template>
|
||
</a-table>
|
||
|
||
<!-- Modal -->
|
||
<a-modal v-model:visible="modalVisible" fullscreen :title="modalTitle" title-align="start" :footer="false"
|
||
@before-ok="handleSubmit"
|
||
@close="() => { $refs.modalFormRef.resetFields(); modalForm.doctor_id = null; showEye = false }">
|
||
<div class="titlebox">
|
||
<div class="bar"></div>
|
||
<div class="name">医生信息</div>
|
||
</div>
|
||
<a-form :model="modalForm" :disabled="modalSatus == 'detail' || modalForm.iden_auth_status == 2
|
||
" :rules="rules" 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-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'" style="margin-top: 10px;">
|
||
<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="医生名字:">
|
||
<a-input v-model="modalForm.user_name" placeholder="请输入医生名字" :disabled="modalSatus == 'edit'" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :span="12">
|
||
|
||
<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 class="cardNum">{{ modalForm.user_doctor_info.card_num_mask }}</div>
|
||
<icon-eye-invisible class="eye" @click="handelDecryptCard(modalForm.user_id)" />
|
||
</div>
|
||
<div class="box" v-show="showEye && modalSatus != 'add'">
|
||
<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" v-if="modalSatus != 'add'">
|
||
<a-col :span="12">
|
||
<a-form-item field="user.mobile" label="联系电话:">
|
||
<a-input v-model="modalForm.user.mobile" placeholder="请输入联系电话" :disabled="modalSatus == 'edit'" />
|
||
</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_id" label="医院名称:">
|
||
<a-space direction="vertical" size="large">
|
||
<a-select :style="{ width: '400px' }" allow-search placeholder="请选择所在医院" v-model="hospital_name"
|
||
:loading="loading" @change="changeHospital" @search="handleHospitalList">
|
||
<a-option size="large" style="max-width:500px" v-for="item in hospitalData" :key="item.hospital_id"
|
||
:value="item.hospital_id" :label="item.hospital_name">
|
||
{{ item.hospital_name + '(' + item.province + item.city + item.county + ')' }}
|
||
</a-option>
|
||
</a-select>
|
||
</a-space>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :span="12">
|
||
<a-form-item field="hospital.address" label="医院地址:">
|
||
<a-input v-model="modalForm.hospital.address" placeholder="请输入医院地址" :disabled="true" />
|
||
</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-input v-model="doctor_title_name" placeholder="请输入职称" /> -->
|
||
</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="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.email" label="邮箱:">
|
||
<a-input v-model="modalForm.user.email" 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 }" :max-length="{ length: 1000, errorOnly: true }" allow-clear
|
||
show-word-limit 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 }" :max-length="{ length: 1000, errorOnly: true }" allow-clear
|
||
show-word-limit 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" v-if="modalForm.doctor_bank_card">
|
||
<div class="bar"></div>
|
||
<div class="name">银行卡信息</div>
|
||
</div>
|
||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.doctor_bank_card">
|
||
<a-col :span="12">
|
||
<a-form-item field="doctor_bank_card.province_id" label="开户银行所在地:">
|
||
<a-space size="large" style="margin-right: 12px;">
|
||
省<a-select placeholder="请选择省份" :style="{ minWidth: '120px' }"
|
||
v-model="modalForm.doctor_bank_card.province_id" @change="changeProvice">
|
||
<a-option v-for="item in provinceData" :key="item.area_id" :value="Number(item.area_id)"
|
||
:label="item.area_name">{{ item.area_name }}</a-option>
|
||
</a-select>
|
||
</a-space>
|
||
<a-space size="large" style="margin-right: 12px;">
|
||
市<a-select placeholder="请选择城市" :style="{ minWidth: '140px' }" v-model="modalForm.doctor_bank_card.city_id"
|
||
@change="changeCity">
|
||
<a-option v-for="item in cityData" :key="item.area_id" :value="Number(item.area_id)"
|
||
:label="item.area_name">{{ item.area_name }}</a-option>
|
||
</a-select>
|
||
</a-space>
|
||
<a-space size="large">
|
||
区<a-select placeholder="请选择地区" :style="{ minWidth: '140px' }"
|
||
v-model="modalForm.doctor_bank_card.county_id">
|
||
<a-option v-for="item in countryData" :key="item.area_id" :value="Number(item.area_id)"
|
||
:label="item.area_name">{{ item.area_name }}</a-option>
|
||
</a-select>
|
||
</a-space>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :span="12">
|
||
<a-form-item field="doctor_bank_card.bank_id" label="开户银行:">
|
||
<a-space size="large">
|
||
<a-select v-model="modalForm.doctor_bank_card.bank_id" :style="{ width: '220px' }">
|
||
<a-option v-for="item in bankData" :key="item.bank_id" :value="item.bank_id"
|
||
:label="item.bank_name"></a-option>
|
||
</a-select>
|
||
</a-space>
|
||
|
||
</a-form-item>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row :gutter="24" v-if="modalForm.doctor_bank_card">
|
||
<a-col :span="12">
|
||
<a-form-item field="bank_card_code" label="银行卡号:">
|
||
<a-input v-model="modalForm.bank_card_code" placeholder="请输入银行卡号" />
|
||
</a-form-item>
|
||
</a-col>
|
||
</a-row>
|
||
<a-divider v-if="modalForm.doctor_bank_card" />
|
||
<div class="titlebox"
|
||
v-if="((modalForm.user_doctor_info.license_cert && modalForm.user_doctor_info.license_cert.length > 0) && (modalForm.user_doctor_info.qualification_cert && modalForm.user_doctor_info.qualification_cert.length > 0) && (modalForm.user_doctor_info.work_cert && modalForm.user_doctor_info.work_cert.length > 0) && modalForm.user_doctor_info.id_card_front && modalForm.user_doctor_info.id_card_back && modalForm.user_doctor_info.sign_image && modalForm.qr_code) || modalSatus != 'detail'">
|
||
<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) || modalSatus != 'detail'">
|
||
|
||
<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 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) || modalSatus != 'detail'">
|
||
<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 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-form-item field="user_doctor_info.qualification_cert_num" v-show="modalSatus == 'detail'" label="资格证编号:"
|
||
:hide-label="true">
|
||
<div class="codbox">
|
||
<div class="labelname">资格证编号:</div>
|
||
<a-input v-model="modalForm.user_doctor_info.qualification_cert_num" style="width:500px"
|
||
placeholder="请输入资格证编码" />
|
||
</div>
|
||
</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 red">*</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.id_card_front || modalSatus != 'detail'">
|
||
<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 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_back || modalSatus != 'detail'">
|
||
<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 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: 35px;"
|
||
v-if="modalForm.user_doctor_info.sign_image || modalSatus != 'detail'">
|
||
<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 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: 35px;" v-if="modalForm.qr_code && modalSatus != 'add'">
|
||
<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
|
||
v-if="((modalForm.user_doctor_info.license_cert && modalForm.user_doctor_info.license_cert.length > 0) && (modalForm.user_doctor_info.qualification_cert && modalForm.user_doctor_info.qualification_cert.length > 0) && (modalForm.user_doctor_info.work_cert && modalForm.user_doctor_info.work_cert.length > 0) && modalForm.user_doctor_info.id_card_front && modalForm.user_doctor_info.id_card_back && modalForm.user_doctor_info.sign_image && modalForm.qr_code) || modalSatus != 'detail'" />
|
||
<div class="titlebox" v-if="modalForm.iden_auth_status == 1 && modalForm.user_ca_cert">
|
||
<div class="bar"></div>
|
||
<div class="name">CA证书配置</div>
|
||
</div>
|
||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.iden_auth_status == 1 && modalForm.user_ca_cert">
|
||
<a-col :span="24">
|
||
<a-form-item field="" label="" no-style>
|
||
<div v-if="modalForm.user_ca_cert">
|
||
证书有效期:{{ parseTime(modalForm.user_ca_cert.cert_application_time, '{y}-{m}-{d}') }}-{{ parseTime(modalForm.user_ca_cert.cert_expire_time, '{y}-{m}-{d}') }}
|
||
</div>
|
||
<a-space style="margin-top: 15px;">
|
||
<a-button type="primary" @click="() => { okVisible = true; okStatus = 6; }"
|
||
v-has="'admin:sysDoctorList:applyCA'">证书申请</a-button>
|
||
<a-button type="primary" status="success" @click="() => { okVisible = true; okStatus = 2; }"
|
||
v-has="'admin:sysDoctorList:updateCA'">证书续期</a-button>
|
||
<!-- <a-button type="primary" status="danger" @click="()=>{okVisible=true;okStatus=3;}" v-has="'admin:sysDoctorList:removeCA'">证书注销</a-button> -->
|
||
|
||
</a-space>
|
||
<a-divider />
|
||
<div class="title">签章配置</div>
|
||
<a-space style="margin-top: 15px;">
|
||
<a-button type="primary" status="success" @click="() => { okVisible = true; okStatus = 4; }"
|
||
v-has="'admin:sysDoctorList:applySign'"
|
||
:disabled="(modalForm.user_ca_cert && modalForm.user_ca_cert.is_sign_config == 1) ? true : false">签章申请</a-button>
|
||
<!-- <a-button type="primary" status="danger" @click="()=>{okVisible=true;okStatus=5;}">签章更新</a-button> -->
|
||
</a-space>
|
||
</a-form-item>
|
||
</a-col>
|
||
</a-row>
|
||
</a-form>
|
||
<a-divider v-show="modalSatus != 'detail'" v-if="modalForm.iden_auth_status == 1 && modalForm.user_ca_cert" />
|
||
<div class="titlebox" v-if="modalSatus != 'detail'">
|
||
<div class="bar"></div>
|
||
<div class="name">操作</div>
|
||
</div>
|
||
<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 v-if="modalSatus != 'detail'" style="margin-right: 8px;">
|
||
<a-button type="primary" @click="saveBefore" v-has="'admin:sysDoctorList:save'">保存</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>
|
||
|
||
<!-- Akiraka 20230223 删除与批量删除 开始 -->
|
||
<DeleteModal :data="deleteData" :visible="deleteVisible" :apiDelete="removeDoctor"
|
||
@deleteVisibleChange="() => deleteVisible = false" :cancelText="okStatus == 7 ? '未修改备案' : '取消'" />
|
||
<!-- Akiraka 20230223 删除与批量删除 结束 -->
|
||
<a-modal v-model:visible="okVisible" :modal-style="{ width: '320px' }" body-class="okmodal" @ok="handleSubmit"
|
||
@cancel="() => okVisible = false">
|
||
<template #title>
|
||
提示
|
||
</template>
|
||
<div v-if="okStatus == 1">确定保存当前信息?</div>
|
||
<div v-else-if="okStatus == 2">确定重新续期CA证书?</div>
|
||
<div v-else-if="okStatus == 3">确定注销CA证书?</div>
|
||
<div v-else-if="okStatus == 4">确定申请签章?</div>
|
||
<div v-else-if="okStatus == 5">确定更新签章?</div>
|
||
<div v-else-if="okStatus == 6">确定申请CA证书?</div>
|
||
<div v-else-if="okStatus == 7">修改职称或者执业证/资格证,需要先在【四川省互联网医疗服务监管平台】修改备案信息成功后,才可保存 (谨慎操作) 。</div>
|
||
</a-modal>
|
||
</div>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch } from 'vue';
|
||
import { getDoctorList, addDoctor, removeDoctor, updateDoctor, getDoctorDetail, departmentList, decryptCard, hospitalList, expertiseList, areaList, bankList, decryptBank, exportDoctor } from '@/api/doctor/list';
|
||
import { applyCA, updateCA, removeCA, updateSign, applySign } from '@/api/doctor/ca';
|
||
import { ossSign, ossUpload } from '@/api/oss';
|
||
import { parseTime } from '@/utils/parseTime';
|
||
import { Message } from '@arco-design/web-vue';
|
||
import { downloadFile } from '@/utils/downloadFile';
|
||
import dayjs from 'dayjs'
|
||
// Akiraka 20230210 删除数据
|
||
const deleteData = ref([])
|
||
// Akiraka 20230210 删除对话框
|
||
const deleteVisible = ref(false)
|
||
// Akiraka 20230210 监听删除事件
|
||
const okVisible = ref(false);
|
||
const okStatus = ref(1); //1保isChange_license存 2证书续期 3//证书注销 //4申请签章 //5更新签章 //7 更改科室职称执业证/资格证
|
||
watch(() => deleteVisible.value, (value) => {
|
||
if (value == false) {
|
||
getDoctorInfo(pager);
|
||
}
|
||
})
|
||
const oldTitle = ref('');//旧职称
|
||
const isChange_license = ref(false);
|
||
const isChange_qualification = ref(false);
|
||
const tableRef = ref();
|
||
const showCheckedAll = ref(true);
|
||
const file = ref();
|
||
const oldFrontImg = ref(''), oldBackImg = ref(''), oldSignImg = ref('');
|
||
const { proxy } = getCurrentInstance();
|
||
const currentPage = ref(1);
|
||
const loading = ref(false);
|
||
|
||
// Pager
|
||
const pager = {
|
||
total: 0,
|
||
page: 1,
|
||
page_size: 10,
|
||
};
|
||
// form
|
||
const queryForm = reactive({
|
||
inquiry_service: ''
|
||
});
|
||
const modalForm = reactive({
|
||
hospital: {
|
||
address: '',
|
||
hospital_name: '',
|
||
hospital_id: ''
|
||
},
|
||
user_doctor_info: {
|
||
card_num_mask: ''
|
||
},
|
||
user_ca_cert: null,
|
||
doctor_bank_card: {
|
||
province_id: '',
|
||
bank_card_province_id: '',
|
||
bank_card_city_id: '',
|
||
bank_card_county_id: '',
|
||
bank_id: '',
|
||
},
|
||
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',
|
||
bank_card_code: '',
|
||
});
|
||
const hospital_name = ref('');
|
||
watch(() => modalForm.hospital, () => {
|
||
if (modalForm.hospital && modalForm.hospital.hospital_name) {
|
||
hospital_name.value = modalForm.hospital.hospital_name + '(' + modalForm.hospital.province + modalForm.hospital.city + modalForm.hospital.county + ')'
|
||
} else {
|
||
hospital_name.value = ''
|
||
}
|
||
}, {
|
||
deep: true
|
||
})
|
||
//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
|
||
});
|
||
if (modalForm.doctor_id) {
|
||
isChange_license.value = true;
|
||
}
|
||
} 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
|
||
})
|
||
if (modalForm.doctor_id) {
|
||
isChange_qualification.value = true;
|
||
}
|
||
} 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(() => queryForm.create_range_time, (value) => {
|
||
if (value) {
|
||
let [startTime, endTime] = value
|
||
queryForm.created_at = startTime + "&" + endTime;
|
||
} else {
|
||
queryForm.created_at = ''
|
||
};
|
||
})
|
||
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 = {
|
||
avatar: [{ required: true, message: '请上传医生头像' }, {
|
||
validator: (value, cb) => {
|
||
|
||
if (value == 'https://img.applets.igandanyiyuan.com/basic/file/doctor_avatar.png') {
|
||
cb('请上传新的医生头像');
|
||
}
|
||
}
|
||
}],
|
||
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_id': [{ required: true, message: '请选择医院名称' }],
|
||
'department_custom_mobile': [{
|
||
required: true, message: '请输入科室电话'
|
||
}],
|
||
department_custom_id: [{ required: true, message: '请选择所在科室' }],
|
||
department_custom_name: [{ required: true, message: '请输入科室名称' }],
|
||
doctor_title: [{ required: true, message: '请选择职称' }],
|
||
'user.email': [
|
||
{ required: true, message: '请输入邮箱' },
|
||
{
|
||
validator: (value, cb) => {
|
||
let reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
|
||
if (!reg.test(value)) {
|
||
cb('邮箱格式不正确');
|
||
}
|
||
}
|
||
}],
|
||
cur_doctor_expertise: [
|
||
{ type: 'array', required: true, message: '请选择专长' },
|
||
{
|
||
validator: (value, cb) => {
|
||
if (value.length > 10) {
|
||
cb("专长不能超过10项")
|
||
}
|
||
}
|
||
}
|
||
],
|
||
be_good_at: [{ required: true, message: '请输入擅长内容', maxLength: 1000, minLength: 2 }],
|
||
brief_introduction: [{ required: true, message: '请输入简介', maxLength: 1000, minLength: 2 }],
|
||
license_cert: [
|
||
{
|
||
validator: (value, cb) => {
|
||
return new Promise(resolve => {
|
||
window.setTimeout(() => {
|
||
if (license_cert_list.value.length < 2) {
|
||
cb("至少上传2张医师执业证照片")
|
||
}
|
||
resolve()
|
||
}, 1000)
|
||
})
|
||
|
||
}
|
||
}],
|
||
qualification_cert: [
|
||
{
|
||
validator: (value, cb) => {
|
||
return new Promise(resolve => {
|
||
window.setTimeout(() => {
|
||
if (qualification_cert_list.value.length == 0) {
|
||
cb("请上传医师资格证")
|
||
}
|
||
if (qualification_cert_list.value.length < 2) {
|
||
cb("至少上传2张医师资格证")
|
||
}
|
||
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_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 = [];
|
||
|
||
// Table Columns
|
||
const columns = [
|
||
{ title: '编号', dataIndex: 'doctor_id', slotName: 'doctor_id', width: '90' },
|
||
{ title: '医生名字', dataIndex: 'user_name' },
|
||
{ title: '手机号码', dataIndex: 'mobile', width: 125 },
|
||
{ title: '医院', dataIndex: 'hospital_name', width: '300', slotName: 'hospital_name' },
|
||
{ title: '职称', dataIndex: 'doctor_title', slotName: 'doctor_title' },
|
||
{ title: '开启服务', dataIndex: 'inquiry_type' },
|
||
{ title: '多点审核状态', dataIndex: 'multi_point_status', slotName: 'multi_point_status', width: 140 },
|
||
{ title: '是否推荐', dataIndex: 'is_recommend', slotName: 'is_recommend' },
|
||
{ title: '深度合作', dataIndex: 'is_platform_deep_cooperation', slotName: 'is_platform_deep_cooperation' },
|
||
{ title: '申请人', dataIndex: 'created_by' },
|
||
{ title: '身份认证', dataIndex: 'iden_auth_status', slotName: 'iden_auth_status' },
|
||
{ title: '实名认证', dataIndex: 'idcard_status', slotName: 'idcard_status' },
|
||
|
||
{ title: '状态', dataIndex: 'status', slotName: 'status' },
|
||
// { title: '创建时间', dataIndex: 'created_at', slotName: 'created_at' },
|
||
{ title: '操作', slotName: 'action', fixed: "right", width: 180 },
|
||
];
|
||
|
||
// Table Data
|
||
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 = {
|
||
address: '',
|
||
hospital_name: '',
|
||
hospital_id: ''
|
||
};
|
||
modalForm.user_ca_cert = null;
|
||
modalForm.user = {};
|
||
modalForm.license_cert = '';
|
||
modalForm.qualification_cert = '';
|
||
modalForm.work_cert = '';
|
||
modalForm.user_doctor_info = {};
|
||
modalForm.id_card_front = '';
|
||
modalForm.id_card_back = '';
|
||
modalForm.sign_image = '';
|
||
modalForm.doctor_bank_card = {
|
||
}
|
||
|
||
license_cert_list.value = [];
|
||
qualification_cert_list.value = [];
|
||
work_cert_list.value = [];
|
||
id_card_front_list.value = [];
|
||
id_card_back_list.value = []
|
||
sign_image_list.value = [];
|
||
//$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.hospital) {
|
||
modalForm.hospital = {};
|
||
}
|
||
if (data.doctor_title == 0) {
|
||
modalForm.doctor_title = '';
|
||
};
|
||
if (data.hospital_id == 0) {
|
||
modalForm.hospital_id = '';
|
||
}
|
||
if (data.department_custom_id == 0) {
|
||
modalForm.department_custom_id = ''
|
||
}
|
||
if (!data.user_doctor_info) {
|
||
data.user_doctor_info = {};
|
||
modalForm.user_doctor_info = {};
|
||
}
|
||
if (data.doctor_expertise && data.doctor_expertise.length > 0) {
|
||
let arr = [];
|
||
data.doctor_expertise.forEach((item) => {
|
||
arr.push(item.expertise_id)
|
||
})
|
||
handleDecryptBank();
|
||
if (data.doctor_bank_card && data.doctor_bank_card.province_id) {
|
||
handelAreaList('', data.doctor_bank_card.province_id, 3);
|
||
} else {
|
||
modalForm.doctor_bank_card = {}
|
||
}
|
||
if (data.doctor_bank_card && data.doctor_bank_card.city_id) {
|
||
handelAreaList('', data.doctor_bank_card.city_id, 4);
|
||
} else {
|
||
modalForm.doctor_bank_card = {}
|
||
|
||
}
|
||
if (data.doctor_bank_card) {
|
||
let obj = data.doctor_bank_card;
|
||
for (const key in obj) {
|
||
if (obj[key] == 0) {
|
||
modalForm.doctor_bank_card[key] = ''
|
||
}
|
||
|
||
}
|
||
}
|
||
modalForm.cur_doctor_expertise = arr;
|
||
}
|
||
}
|
||
};
|
||
// 修改
|
||
const handleUpdate = async (record) => {
|
||
modalVisible.value = true;
|
||
modalTitle.value = '修改医生';
|
||
modalSatus.value = 'edit';
|
||
const { code, data, message } = await getDoctorDetail(record.doctor_id);
|
||
if (code == 200) {
|
||
Object.assign(modalForm, data);
|
||
handleDecryptBank();
|
||
|
||
if (data.doctor_bank_card && data.doctor_bank_card.province_id) {
|
||
handelAreaList('', data.doctor_bank_card.province_id, 3);
|
||
} else {
|
||
modalForm.doctor_bank_card = {}
|
||
}
|
||
if (data.doctor_bank_card && data.doctor_bank_card.city_id) {
|
||
handelAreaList('', data.doctor_bank_card.city_id, 4);
|
||
} else {
|
||
modalForm.doctor_bank_card = {}
|
||
}
|
||
if (!data.user_doctor_info) {
|
||
data.user_doctor_info = {};
|
||
modalForm.user_doctor_info = {};
|
||
}
|
||
if (!data.hospital) {
|
||
modalForm.hospital = {};
|
||
}
|
||
if (data.doctor_bank_card) {
|
||
let obj = data.doctor_bank_card;
|
||
for (const key in obj) {
|
||
if (obj[key] == 0) {
|
||
modalForm.doctor_bank_card[key] = ''
|
||
}
|
||
|
||
}
|
||
}
|
||
if (data.doctor_title == 0) {
|
||
modalForm.doctor_title = '';
|
||
}
|
||
oldTitle.value = data.doctor_title;
|
||
if (data.hospital_id == 0) {
|
||
modalForm.hospital_id = '';
|
||
}
|
||
if (data.department_custom_id == 0) {
|
||
modalForm.department_custom_id = ''
|
||
}
|
||
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 = id_card_front ? transArr(id_card_front) : [];
|
||
id_card_back_list.value = id_card_back ? transArr(id_card_back) : [];
|
||
sign_image_list.value = sign_image ? transArr(sign_image) : [];
|
||
oldFrontImg.value = id_card_front;
|
||
oldBackImg.value = id_card_back;
|
||
oldSignImg.value = sign_image;
|
||
if (modalForm.iden_auth_status == 2) {
|
||
Message.warning('正在审核中,暂时不能修改');
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
//await nextTick();
|
||
|
||
};
|
||
//申请证书
|
||
|
||
const handleApplyCA = () => {
|
||
applyCA(modalForm.user_doctor_info.user_id).then(data => {
|
||
if (data.code == 200) {
|
||
Message.success('证书申请成功');
|
||
handleUpdate({ doctor_id: modalForm.doctor_id })
|
||
}
|
||
})
|
||
}
|
||
const handleUpdateCA = () => {
|
||
updateCA(modalForm.user_doctor_info.user_id).then(data => {
|
||
|
||
if (data.code == 200) {
|
||
Message.success('证书更新成功');
|
||
handleUpdate({ doctor_id: modalForm.doctor_id })
|
||
}
|
||
})
|
||
}
|
||
const handleRemoveCA = () => {
|
||
removeCA(modalForm.user_doctor_info.user_id).then(data => {
|
||
if (data.code == 200) {
|
||
Message.success('证书注销成功');
|
||
handleUpdate({ doctor_id: modalForm.doctor_id })
|
||
}
|
||
})
|
||
}
|
||
const handleApplySign = () => {
|
||
applySign({
|
||
type: 2,
|
||
user_id: modalForm.user_doctor_info.user_id
|
||
}).then(data => {
|
||
if (data.code == 200) {
|
||
Message.success('签章申请成功');
|
||
}
|
||
})
|
||
}
|
||
const handleUpdateSign = () => {
|
||
updateSign(modalForm.user_doctor_info.user_id).then(data => {
|
||
if (data.code == 200) {
|
||
Message.success('签章更新成功');
|
||
}
|
||
})
|
||
}
|
||
|
||
|
||
//开启服务处理
|
||
// 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 : "暂无"
|
||
// }
|
||
// Modal ok
|
||
// 异步关闭Modal需要调用 done()
|
||
|
||
const saveBefore = () => {
|
||
if ((oldTitle.value != modalForm.doctor_title || isChange_license.value || isChange_qualification.value) && modalForm.doctor_id) {
|
||
okStatus.value = 7
|
||
} else {
|
||
okStatus.value = 1
|
||
}
|
||
okVisible.value = true;
|
||
|
||
}
|
||
const handleSubmit = (done) => {
|
||
if (okStatus.value == 1 || okStatus.value == 7) {
|
||
proxy.$refs.modalFormRef.validate(async (valid) => {
|
||
if (!valid) {
|
||
let res;
|
||
let modalData = {
|
||
card_name: modalForm.user_name,
|
||
mobile: modalForm.user.mobile,
|
||
email: modalForm.user.email,
|
||
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,
|
||
bank_card_code: modalForm.bank_card_code,
|
||
bank_card_province_id: modalForm.doctor_bank_card.province_id ? modalForm.doctor_bank_card.province_id : 0,
|
||
bank_card_city_id: modalForm.doctor_bank_card.city_id ? modalForm.doctor_bank_card.city_id : 0,
|
||
bank_card_county_id: modalForm.doctor_bank_card.county_id ? modalForm.doctor_bank_card.county_id : 0,
|
||
bank_id: modalForm.doctor_bank_card.bank_id
|
||
}
|
||
if (!modalForm.doctor_id) {
|
||
if (modalForm.id_card_front && modalForm.id_card_back && modalForm.sign_image) {
|
||
if (modalForm.doctor_bank_card) {
|
||
if (!modalForm.doctor_bank_card.province_id || !modalForm.doctor_bank_card.city_id || !modalForm.doctor_bank_card.county_id) {
|
||
proxy.$notification.error("请选择开户银行所在地省市区信息");
|
||
return false
|
||
};
|
||
if (!modalForm.doctor_bank_card.bank_id) {
|
||
proxy.$notification.error("请选择开户银行");
|
||
return false
|
||
};
|
||
|
||
};
|
||
if (!modalForm.bank_card_code) {
|
||
proxy.$notification.error("请输入银行卡号");
|
||
return false
|
||
}
|
||
if (modalForm.bank_card_code) {
|
||
const reg = /^[0-9]{9,19}$/;
|
||
if (!reg.test(modalForm.bank_card_code)) {
|
||
proxy.$notification.error("请输入正确的银行卡号");
|
||
return false
|
||
}
|
||
}
|
||
|
||
}
|
||
proxy.$loading.show();
|
||
const { code, message } = await addDoctor(modalData);
|
||
if (code == 200) {
|
||
proxy.$notification.success('新增成功');
|
||
modalVisible.value = false;
|
||
}
|
||
proxy.$loading.hide();
|
||
} else {
|
||
if (oldFrontImg.value && !modalForm.id_card_front) {
|
||
proxy.$notification.error("请上传医师身份证正面照片");
|
||
return false
|
||
};
|
||
if (oldBackImg.value && !modalForm.id_card_back) {
|
||
proxy.$notification.error("请上传医师身份证反面照片");
|
||
return false
|
||
};
|
||
if (oldSignImg.value && !modalForm.sign_image) {
|
||
proxy.$notification.error("请上传医师手写签名照片");
|
||
return false
|
||
};
|
||
if (modalForm.id_card_front && modalForm.id_card_back && modalForm.sign_image) {
|
||
if (modalForm.doctor_bank_card) {
|
||
if (!modalForm.doctor_bank_card.province_id || !modalForm.doctor_bank_card.city_id || !modalForm.doctor_bank_card.county_id) {
|
||
proxy.$notification.error("请选择开户银行所在地省市区信息");
|
||
return false
|
||
};
|
||
if (!modalForm.doctor_bank_card.bank_id) {
|
||
proxy.$notification.error("请选择开户银行");
|
||
return false
|
||
};
|
||
|
||
};
|
||
if (!modalForm.bank_card_code) {
|
||
proxy.$notification.error("请输入银行卡号");
|
||
return false
|
||
}
|
||
if (modalForm.bank_card_code) {
|
||
const reg = /^[0-9]{9,19}$/;
|
||
if (!reg.test(modalForm.bank_card_code)) {
|
||
proxy.$notification.error("请输入正确的银行卡号");
|
||
return false
|
||
}
|
||
}
|
||
|
||
}
|
||
proxy.$loading.show();
|
||
const { code, message } = await updateDoctor(modalData, modalForm.doctor_id);
|
||
if (code == 200) {
|
||
proxy.$notification.success('更新成功');
|
||
modalVisible.value = false;
|
||
isChange_license.value = false;
|
||
isChange_qualification.value = false;
|
||
}
|
||
proxy.$loading.hide();
|
||
}
|
||
//done();
|
||
getDoctorInfo(pager);
|
||
|
||
} else {
|
||
console.log(valid)
|
||
Message.error('表单校验失败');
|
||
//done(false);
|
||
}
|
||
});
|
||
} else if (okStatus.value == 2) {
|
||
//证书续期
|
||
handleUpdateCA();
|
||
} else if (okStatus.value == 3) {
|
||
//证书注销
|
||
handleRemoveCA();
|
||
} else if (okStatus.value == 4) {
|
||
//签章申请
|
||
handleApplySign();
|
||
} else if (okStatus.value == 5) {
|
||
//签章更新
|
||
handleUpdateSign();
|
||
} else if (okStatus.value == 6) {
|
||
handleApplyCA();
|
||
}
|
||
|
||
|
||
};
|
||
|
||
// 批量删除
|
||
const handleBatchDelete = () => {
|
||
if (batchList.length !== 0) {
|
||
proxy.$modal.warning({
|
||
title: '提示',
|
||
content: '是否批量删除以下选中的数据?',
|
||
hideCancel: false,
|
||
onOk: async () => {
|
||
const res = await removeDoctor({ ids: batchList });
|
||
Message.success(res.message);
|
||
getDoctorInfo(pager);
|
||
},
|
||
onCancel: () => {
|
||
Message.info('已取消批量删除数据');
|
||
},
|
||
});
|
||
} else {
|
||
Message.error('请勾选需要删除的数据!');
|
||
}
|
||
};
|
||
|
||
/**
|
||
* 分页改变
|
||
* @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 });
|
||
}
|
||
};
|
||
|
||
// 查询医生信息
|
||
const handleQuery = async () => {
|
||
pager.page = 1;
|
||
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;
|
||
}
|
||
});
|
||
}
|
||
//切换小眼睛
|
||
const showEye = ref(false);
|
||
const id_card_num = ref('');
|
||
//解密身份证号码
|
||
const handelDecryptCard = async (user_id) => {
|
||
showEye.value = true;
|
||
const { data, code, message } = await decryptCard({
|
||
user_id
|
||
});
|
||
if (code == 200) {
|
||
id_card_num.value = data;
|
||
}
|
||
};
|
||
const hospitalData = ref([]);
|
||
const changeHospital = (value) => {
|
||
let arr = hospitalData.value.filter((item) => item.hospital_id == value);
|
||
modalForm.hospital_id = arr[0].hospital_id;
|
||
modalForm.hospital = arr[0];
|
||
}
|
||
//获取医院列表
|
||
const handleHospitalList = (value) => {
|
||
loading.value = true;
|
||
hospitalList({
|
||
hospital_name: value,
|
||
}).then((res) => {
|
||
const { data, code, message } = res;
|
||
if (code == 200) {
|
||
|
||
hospitalData.value = data;
|
||
loading.value = false;
|
||
}
|
||
});
|
||
|
||
}
|
||
const expertiseData = ref([]);
|
||
// 获取专长列表
|
||
const handlExpertiseList = () => {
|
||
expertiseList().then((res) => {
|
||
const { data, code, message } = res;
|
||
if (code == 200) {
|
||
expertiseData.value = data;
|
||
}
|
||
})
|
||
}
|
||
const provinceData = ref([]);
|
||
const cityData = ref([]);
|
||
const countryData = ref([]);
|
||
//获取区域列表
|
||
const handelAreaList = (area_id = '', parent_id = '', area_type) => {
|
||
areaList({
|
||
area_id,
|
||
area_type,
|
||
parent_id
|
||
}).then((res) => {
|
||
const { data, code, message } = res;
|
||
if (code == 200) {
|
||
if (area_type == 2) {
|
||
provinceData.value = data;
|
||
}
|
||
if (area_type == 3) {
|
||
cityData.value = data;
|
||
};
|
||
if (area_type == 4) {
|
||
countryData.value = data;
|
||
};
|
||
|
||
|
||
}
|
||
})
|
||
}
|
||
//切换省份
|
||
const changeProvice = (value) => {
|
||
modalForm.doctor_bank_card.city_id = '';
|
||
modalForm.doctor_bank_card.county_id = '';
|
||
handelAreaList('', value, 3);
|
||
};
|
||
//切换省份
|
||
const changeCity = (value) => {
|
||
modalForm.doctor_bank_card.county_id = '';
|
||
handelAreaList("", value, 4);
|
||
|
||
}
|
||
const handleDecryptBank = () => {
|
||
decryptBank(modalForm.doctor_id).then((res) => {
|
||
const { data, code, message } = res;
|
||
if (code == 200) {
|
||
modalForm.bank_card_code = data;
|
||
}
|
||
})
|
||
}
|
||
const bankData = ref([])
|
||
const handleBankList = () => {
|
||
bankList().then((res) => {
|
||
const { data, code, message } = res;
|
||
if (code == 200) {
|
||
bankData.value = data;
|
||
}
|
||
})
|
||
}
|
||
// 重置搜索
|
||
const handleResetQuery = () => {
|
||
proxy.$refs.queryFormRef.resetFields();
|
||
pager.page = 1;
|
||
pager.page_size = 10;
|
||
currentPage.value = 1;
|
||
getDoctorInfo({ ...pager, ...queryForm });
|
||
}
|
||
//获取oss签名
|
||
const getOssSign = async (scene, File) => {
|
||
const { data, code, message } = await ossSign({
|
||
user_type: 4,
|
||
scene,
|
||
});
|
||
if (code == 200) {
|
||
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('policy', policy);
|
||
formData.append('signature', signature);
|
||
formData.append('key', dir + time + filename);
|
||
formData.append('success_action_status', 200);
|
||
formData.append('file', File, filename);
|
||
ossUpload(host, formData).then((res) => {
|
||
modalForm.avatar = host + "/" + dir + time + filename;
|
||
});
|
||
|
||
}
|
||
}
|
||
//上传前验证
|
||
const beforeUpload = (file, type) => {
|
||
return new Promise((resolve, reject) => {
|
||
if (file.size >= 10 * 1024 * 1024) {
|
||
proxy.$notification.error("图片大小不能超过10M");
|
||
reject('cancel')
|
||
} else {
|
||
resolve(true)
|
||
}
|
||
});
|
||
};
|
||
const filterOption = (value, options) => {
|
||
console.log(value, options)
|
||
}
|
||
//上传文件
|
||
const onChangeFile = (fileList) => {
|
||
|
||
getOssSign(1, fileList[0].file);
|
||
}
|
||
const handlExport = async (type) => {
|
||
proxy.$loading.show();
|
||
let fromData = null;
|
||
if (type == 1) {
|
||
|
||
fromData = {
|
||
type,
|
||
...queryForm
|
||
}
|
||
} else if (type == 2) {
|
||
if (deleteData.value.length == 0) {
|
||
proxy.$message.warning('请勾选数据');
|
||
proxy.$loading.hide();
|
||
return false;
|
||
};
|
||
let id = '';
|
||
deleteData.value.forEach((item) => {
|
||
if (id) {
|
||
id += "," + item
|
||
} else {
|
||
id = item;
|
||
}
|
||
})
|
||
fromData = {
|
||
type,
|
||
id
|
||
}
|
||
} else if (type == 3) {
|
||
|
||
//tableRef.value.selectAll(false)
|
||
fromData = {
|
||
type
|
||
}
|
||
}
|
||
const { code, data } = await exportDoctor(fromData);
|
||
if (code == 200) {
|
||
downloadFile(data, '医生列表');
|
||
}
|
||
proxy.$loading.hide();
|
||
}
|
||
//ca证书
|
||
onMounted(() => {
|
||
getDoctorInfo(pager);
|
||
handleHospitalList();
|
||
getDepartmentList();
|
||
handlExpertiseList();
|
||
handelAreaList("", "", 2);
|
||
handleBankList();
|
||
|
||
|
||
});
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.action {
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.okmodal div {
|
||
text-align: center;
|
||
}
|
||
|
||
.hospital_name {
|
||
width: 290px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.headImg {
|
||
margin-right: 20px;
|
||
border-radius: 50%;
|
||
width: 80px;
|
||
height: 80px;
|
||
}
|
||
|
||
.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> |