feature 订单管理,药品管理
This commit is contained in:
parent
9c88f454a4
commit
c53cd6763f
@ -2,6 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
|
||||
24
src/api/order/examine.js
Normal file
24
src/api/order/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
|
||||
})
|
||||
}
|
||||
29
src/api/order/list.js
Normal file
29
src/api/order/list.js
Normal file
@ -0,0 +1,29 @@
|
||||
import request from '../../utils/request'
|
||||
const url = '/admin/order/inquiry';
|
||||
export function getOrderList(params){
|
||||
return request({
|
||||
url:'/admin/order/inquiry',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
export function getList(){
|
||||
return request({
|
||||
url:'https://twx.igandan.org/book/drughand/getDrugList',
|
||||
method: 'GET',
|
||||
dataType: 'json'
|
||||
})
|
||||
}
|
||||
export function getOrderDetail(id){
|
||||
return request({
|
||||
url:`${url}/${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function productList(params){ //药品列表
|
||||
return request({
|
||||
url:'/admin/order/product',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
24
src/api/order/multipoint.js
Normal file
24
src/api/order/multipoint.js
Normal file
@ -0,0 +1,24 @@
|
||||
import request from '../../utils/request'
|
||||
|
||||
const url = '/admin/doctor/multi';
|
||||
|
||||
export function getDoctorList(params){
|
||||
return request({
|
||||
url:'/admin/doctor/multi',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
export function getDoctorDetail(id){
|
||||
return request({
|
||||
url:'/admin/doctor/multi/'+id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
export function checkDoctor(data,id){
|
||||
return request({
|
||||
url:'/admin/doctor/multi/'+id,
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
@ -23,7 +23,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, toRefs, watch, unref, getCurrentInstance } from 'vue';
|
||||
import { ref, reactive, toRefs, watch, getCurrentInstance } from 'vue';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
1009
src/components/doctorModal.vue
Normal file
1009
src/components/doctorModal.vue
Normal file
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ import '@arco-design/web-vue/dist/arco.css';
|
||||
import router from './router/';
|
||||
import { parseTime } from '@/utils/parseTime';
|
||||
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
|
||||
|
||||
import {getList} from "./api/order/list"
|
||||
// Directive
|
||||
import permission from '@/directive/permission/permission';
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ const service = axios.create({
|
||||
timeout: 8000,
|
||||
headers:{
|
||||
'Content-Type':'application/json',
|
||||
'Authorization':''
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
868
src/views/doctor copy/doctor-examine/index.vue
Normal file
868
src/views/doctor copy/doctor-examine/index.vue
Normal file
@ -0,0 +1,868 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<a-form :model="queryForm" ref="queryFormRef" layout="inline">
|
||||
|
||||
<a-form-item field="user_name" 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' }">
|
||||
<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"
|
||||
: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;}" @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:check'" type="text"
|
||||
@click="handleDetail(record)"><icon-book />审核</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
</a-table>
|
||||
|
||||
<!-- Modal -->
|
||||
<a-modal v-model:visible="modalVisible" body-class="myModal" 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="handelDecryptCard(modalForm.user_id)" />
|
||||
</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.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-col :span="12">
|
||||
<a-form-item field="hospital.address" label="医院地址:">
|
||||
<a-input v-model="modalForm.hospital.address" placeholder="请输入医院地址" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="department_custom_id" label="所在科室:">
|
||||
<a-select placeholder="请选择所在科室" v-model="modalForm.department_custom_id" @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 class="codebox_cert" :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"><span
|
||||
class="arco-form-item-label-required-symbol red">*</span>资格证编号:</div>
|
||||
<a-input v-model="modalForm.user_doctor_info.qualification_cert_num" style="width:500px" placeholder="请输入资格证编码" />
|
||||
</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" v-has="'admin:sysDoctorExamine:ok'" @click="handleCheck('ok')">审核通过</a-button>
|
||||
<a-button type="primary" status="danger" v-has="'admin:sysDoctorExamine:deny'" @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();}">
|
||||
<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:6,
|
||||
label:'医师执业证原因',
|
||||
key:'license_cert_reason',
|
||||
content:''
|
||||
},
|
||||
{
|
||||
value:7,
|
||||
label:'医师资格证原因',
|
||||
key:'qualification_cert_reason',
|
||||
content:''
|
||||
},
|
||||
{
|
||||
value:8,
|
||||
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
|
||||
}
|
||||
|
||||
//详情
|
||||
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.user_doctor_info) {
|
||||
data.user_doctor_info = {};
|
||||
modalForm.user_doctor_info = {};
|
||||
}
|
||||
if (!data.hospital) {
|
||||
modalForm.hospital = {};
|
||||
}
|
||||
if (!data.doctor_bank_card) {
|
||||
modalForm.doctor_bank_card = {
|
||||
province_id: '',
|
||||
city_id: '',
|
||||
county_id: '',
|
||||
bank_id: ''
|
||||
}
|
||||
};
|
||||
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.doctor_expertise && data.doctor_expertise.length > 0) {
|
||||
let arr = [];
|
||||
data.doctor_expertise.forEach((item) => {
|
||||
arr.push(item.expertise_id)
|
||||
})
|
||||
modalForm.cur_doctor_expertise = arr;
|
||||
}
|
||||
}
|
||||
};
|
||||
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 });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// 查询医生信息
|
||||
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 handleHospitalList = () => {
|
||||
hospitalList().then((res) => {
|
||||
const { data, code, message } = res;
|
||||
if (code == 200) {
|
||||
hospitalData.value = data;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
const expertiseData = ref([]);
|
||||
// 获取专长列表
|
||||
const handlExpertiseList = () => {
|
||||
expertiseList().then((res) => {
|
||||
const { data, code, message } = res;
|
||||
if (code == 200) {
|
||||
expertiseData.value = data;
|
||||
}
|
||||
})
|
||||
}
|
||||
// 异步关闭Modal需要调用 done()
|
||||
const handleSubmit = (done) => {
|
||||
proxy.$refs.checkFormRef.validate(async (valid) => {
|
||||
if (!valid) {
|
||||
proxy.$loading.show();
|
||||
const {code,message,data}= await checkDoctor(modalCheckForm,modalForm.doctor_id);
|
||||
if (code == 200) {
|
||||
proxy.$notification.success("提交成功");
|
||||
getDoctorInfo(pager);
|
||||
modalVisible.value=false;
|
||||
}
|
||||
proxy.$loading.hide();
|
||||
done();
|
||||
} else {
|
||||
console.log(valid)
|
||||
proxy.$message.error('表单校验失败');
|
||||
done(false);
|
||||
}
|
||||
});
|
||||
};
|
||||
const getElementTop=(elem)=> {
|
||||
let elemTop = elem.offsetTop; // 获取当前元素顶部距离父元素顶部的距离
|
||||
let parentElem = elem.offsetParent; // 获取当前元素的父元素
|
||||
|
||||
while (parentElem) {
|
||||
elemTop += parentElem.offsetTop;
|
||||
parentElem = parentElem.offsetParent;
|
||||
}
|
||||
|
||||
return elemTop;
|
||||
}
|
||||
//审核
|
||||
const handleCheck= async(type)=>{
|
||||
if(type=="ok"){
|
||||
let id=modalForm.user_doctor_info.qualification_cert_num;
|
||||
if(!id){
|
||||
proxy.$message.error("请填写资格证编号");
|
||||
let top=getElementTop(document.querySelector(".codebox_cert"));
|
||||
document.querySelector(".myModal").scrollTo(0,top)
|
||||
return false
|
||||
}
|
||||
proxy.$loading.show();
|
||||
const {code,message,data}= await checkDoctor({
|
||||
iden_auth_status:1,
|
||||
qualification_cert_num:id
|
||||
},modalForm.doctor_id);
|
||||
if (code == 200) {
|
||||
proxy.$notification.success("审核通过");
|
||||
getDoctorInfo(pager);
|
||||
proxy.$loading.hide();
|
||||
modalVisible.value=false;
|
||||
}
|
||||
|
||||
}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>
|
||||
1541
src/views/doctor copy/doctor-list/index.vue
Normal file
1541
src/views/doctor copy/doctor-list/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
641
src/views/doctor copy/doctor-multipoint/index.vue
Normal file
641
src/views/doctor copy/doctor-multipoint/index.vue
Normal file
@ -0,0 +1,641 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<a-form :model="queryForm" ref="queryFormRef" layout="inline">
|
||||
|
||||
<a-form-item field="user_name" 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="multi_point_status" label="审核状态">
|
||||
<a-select v-model="queryForm.multi_point_status" placeholder="请选择审核状态" :style="{ width: '180px' }">
|
||||
<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"
|
||||
: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;}" @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 #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 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:sysDoctorMultipoint:check'" 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="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="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-col :span="12">
|
||||
<a-form-item field="hospital.address" label="医院地址:">
|
||||
<a-input v-model="modalForm.hospital.address" placeholder="请输入医院地址" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="department_custom_id" label="所在科室:">
|
||||
<a-select placeholder="请选择所在科室" v-model="modalForm.department_custom_id" @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-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.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" v-has="'admin:sysDoctorMultipoint:ok'" @click="handleCheck('ok')">审核通过</a-button>
|
||||
<a-button type="primary" v-has="'admin:sysDoctorMultipoint:deny'" 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();}">
|
||||
<a-form :model="modalCheckForm" ref="checkFormRef"
|
||||
:auto-label-width="true" :mask-closable="false" :rules="rules">
|
||||
<a-form-item field="multi_point_fail_reason" label="原因:">
|
||||
<a-textarea v-model="modalCheckForm.multi_point_fail_reason" placeholder="请输入多点认证失败原因" />
|
||||
</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/multipoint';
|
||||
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({
|
||||
multi_point_fail_reason:'',
|
||||
});
|
||||
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: '住院医师'
|
||||
}
|
||||
];
|
||||
|
||||
// rules
|
||||
const rules = reactive({
|
||||
multi_point_fail_reason: [{
|
||||
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: 'multi_point_status', slotName: 'multi_point_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
|
||||
}
|
||||
|
||||
//详情
|
||||
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_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.hospital) {
|
||||
modalForm.hospital = {};
|
||||
}
|
||||
if (!data.doctor_bank_card) {
|
||||
modalForm.doctor_bank_card = {
|
||||
province_id: '',
|
||||
city_id: '',
|
||||
county_id: '',
|
||||
bank_id: ''
|
||||
}
|
||||
};
|
||||
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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//开启服务处理
|
||||
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 });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// 查询医生信息
|
||||
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 handleHospitalList = () => {
|
||||
hospitalList().then((res) => {
|
||||
const { data, code, message } = res;
|
||||
if (code == 200) {
|
||||
hospitalData.value = data;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
const expertiseData = ref([]);
|
||||
// 获取专长列表
|
||||
const handlExpertiseList = () => {
|
||||
expertiseList().then((res) => {
|
||||
const { data, code, message } = res;
|
||||
if (code == 200) {
|
||||
expertiseData.value = data;
|
||||
}
|
||||
})
|
||||
}
|
||||
// 异步关闭Modal需要调用 done()
|
||||
const handleSubmit = (done) => {
|
||||
proxy.$refs.checkFormRef.validate(async (valid) => {
|
||||
if (!valid) {
|
||||
proxy.$loading.show();
|
||||
const {code,message,data}= await checkDoctor({
|
||||
multi_point_status:3,
|
||||
multi_point_fail_reason:modalCheckForm.multi_point_fail_reason
|
||||
},modalForm.doctor_id);
|
||||
if (code == 200) {
|
||||
proxy.$loading.hide();
|
||||
proxy.$notification.success("提交成功");
|
||||
modalVisible.value=false;
|
||||
}
|
||||
done();
|
||||
getDoctorInfo(pager);
|
||||
|
||||
} else {
|
||||
console.log(valid)
|
||||
proxy.$message.error('表单校验失败');
|
||||
done(false);
|
||||
}
|
||||
});
|
||||
};
|
||||
//审核
|
||||
const handleCheck= async(type)=>{
|
||||
|
||||
if(type=="ok"){
|
||||
proxy.$loading.show();
|
||||
const {code,message,data}= await checkDoctor({
|
||||
multi_point_status:1
|
||||
},modalForm.doctor_id);
|
||||
if (code == 200) {
|
||||
proxy.$notification.success("审核通过");
|
||||
modalVisible.value=false;
|
||||
};
|
||||
proxy.$loading.hide();
|
||||
getDoctorInfo(pager);
|
||||
|
||||
}else{
|
||||
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>
|
||||
555
src/views/order/medince-list/index.vue
Normal file
555
src/views/order/medince-list/index.vue
Normal file
@ -0,0 +1,555 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<a-form :model="queryForm" ref="queryFormRef" layout="inline">
|
||||
|
||||
<a-form-item field="order_product_no" label="订单编号">
|
||||
<a-input :style="{ width: '182px' }" v-model="queryForm.order_product_no" placeholder="请输入订单编号" @press-enter="handleQuery" />
|
||||
</a-form-item>
|
||||
<a-form-item field="mobile" label="医生姓名">
|
||||
<a-input :style="{ width: '182px' }" v-model="queryForm.doctor_name" placeholder="请输入医生姓名" @press-enter="handleQuery" />
|
||||
</a-form-item>
|
||||
<a-form-item field="hospital_name" label="就诊人姓名">
|
||||
<a-input :style="{ width: '182px' }" v-model="queryForm.patient_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-input :style="{ width: '182px' }" v-model="queryForm.mobile" placeholder="请输入医生电话号码" @press-enter="handleQuery" />
|
||||
</a-form-item>
|
||||
<a-form-item field="order_product_status" label="订单状态">
|
||||
<a-select v-model="queryForm.order_product_status" placeholder="请选择订单状态" :style="{ width: '182px' }">
|
||||
<!-- 1:待支付 2:待发货 3:已发货 4:已签收 5:已取消 -->
|
||||
<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-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 -->
|
||||
<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:remove'" type="primary" status="danger"><icon-delete /> 批量删除 </a-button> -->
|
||||
</a-space>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- table -->
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:data="tableData"
|
||||
:pagination="{ 'show-total': true, 'show-jumper': true, 'show-page-size': true, total: pager.total, current: currentPage }"
|
||||
:row-selection="{ type: 'checkbox', showCheckedAll: true }"
|
||||
row-key="post_id"
|
||||
@selection-change="(selection) => {deleteData = selection;}"
|
||||
@page-change="handlePageChange"
|
||||
@page-size-change="handlepage_sizeChange"
|
||||
>
|
||||
<template #post_id="{record,rowIndex}">
|
||||
<div>{{(rowIndex+1)+(pager.page-1)*10}}</div>
|
||||
</template>
|
||||
<template #pay_channel="{record}">
|
||||
<div v-if="record.pay_channel==1">小程序支付</div>
|
||||
<div v-else-if="record.pay_channel==2">微信扫码支付</div>
|
||||
<div v-else-if="record.pay_channel==3">模拟支付</div>
|
||||
</template>
|
||||
<!-- 1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) -->
|
||||
<template #order_product_status="{record}">
|
||||
<div>{{formatProductStatus(record.order_product_status)}}</div>
|
||||
<!-- <div v-if="==1">待支付</div>
|
||||
<div v-else-if="record.order_product_status==2">待分配</div>
|
||||
<div v-else-if="record.order_product_status==3">待接诊</div>
|
||||
<div v-else-if="record.order_product_status==4">已接诊</div>
|
||||
<div v-else-if="record.order_product_status==5">已完成</div>
|
||||
<div v-else-if="record.order_product_status==6">已结束</div>
|
||||
<div v-else-if="record.order_product_status==7">已取消</div> -->
|
||||
</template>
|
||||
<template #pay_time="{ record }">
|
||||
{{ parseTime(record.pay_time) }}
|
||||
</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:sysPost:remove'" type="text" @click="() => { deleteVisible = true; deleteData = [record.post_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;}">
|
||||
<div class="titlebox">
|
||||
<div class="bar"></div>
|
||||
<div class="name">订单信息</div>
|
||||
</div>
|
||||
<a-form :model="modalForm" :disabled="true" :rules="rules" ref="modalFormRef" :auto-label-width="true">
|
||||
<a-row :gutter="24" style="margin-top: 35px;">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_no" label="订单编号:">
|
||||
<span>{{ modalForm.inquiry_no }}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="order_product_status" label="订单状态:" >
|
||||
<span>{{ formatRefundStatus(modalForm.order_product_status) }}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" >
|
||||
<a-col :span="12">
|
||||
<a-form-item field="user.created_at" label="下单时间:">
|
||||
<span >{{modalForm.created_at}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="pay_time" label="支付时间:">
|
||||
<span >{{modalForm.pay_time}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="amount_total" label="订单金额:">
|
||||
<span>{{modalForm.amount_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="coupon_amount_total" label="优惠卷:">
|
||||
<span>{{modalForm.coupon_amount_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="payment_amount_total" label="实付金额:">
|
||||
<span>{{modalForm.payment_amount_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_type" label="问诊类型:">
|
||||
<span>{{formatInquiryType(modalForm.inquiry_type)}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.cancel_remarks">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="department_custom_name" label="备 注 :">
|
||||
<span>{{ modalForm.cancel_remarks}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider />
|
||||
<div class="titlebox" v-if="modalForm.order_inquiry_refund">
|
||||
<div class="bar"></div>
|
||||
<div class="name">退款信息</div>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_refund_no" label="退款编号:">
|
||||
<span>{{modalForm.order_inquiry_refund.inquiry_refund_no}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="escrow_trade_no" label=" 第三方订单编号:">
|
||||
<span>{{modalForm.escrow_trade_no}}</span>
|
||||
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_refund_no" label="退款金额:">
|
||||
<span>{{modalForm.order_inquiry_refund.refund_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="escrow_trade_no" label="退款状态:">
|
||||
<span>{{formatRefundStatus(modalForm.order_inquiry_refund.inquiry_refund_status)}}</span>
|
||||
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="inquiry_refund_no" label="退款时间:">
|
||||
<span>{{modalForm.order_inquiry_refund.success_time}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="inquiry_refund_no" label="退款原因:">
|
||||
<span>{{modalForm.order_inquiry_refund.refund_reason}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="modalForm.order_inquiry_refund"/>
|
||||
<div class="titlebox" v-if="modalForm.user_doctor">
|
||||
<div class="bar"></div>
|
||||
<div class="name">医生信息</div>
|
||||
<a-space style="margin-right: 8px;flex:1;display: flex;justify-content: flex-end;">
|
||||
<a-button type="primary" @click="openDcotor">查看医生完整信息1</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.user_doctor">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="license_cert" :hide-label="true" >
|
||||
<div class="doctorInfo">
|
||||
<a-space size="large">
|
||||
<a-image width="80" height="80" class="headImg" :src="modalForm.user_doctor.avatar" v-if="modalForm.user_doctor.avatar">
|
||||
</a-image>
|
||||
<a-image width="80" height="80" class="headImg" src="https://img.applets.igandanyiyuan.com/basic/file/doctor_avatar.png" v-else>
|
||||
</a-image>
|
||||
</a-space>
|
||||
<div class="infobox">
|
||||
<div class="name">{{modalForm.user_doctor.user_name}} {{modalForm.user_doctor.doctor_title}}</div>
|
||||
<div class="hospital">{{modalForm.user_doctor.hospital.hospital_name}} {{modalForm.user_doctor.department_custom_name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="modalForm.user_doctor"/>
|
||||
<div class="titlebox">
|
||||
<div class="bar"></div>
|
||||
<div class="name">就诊人信息</div>
|
||||
<a-space style="margin-right: 8px;flex:1;display: flex;justify-content: flex-end;">
|
||||
<a-button type="primary" status="warning" @click="()=>okVisible=true">查看就诊人完整信息</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.user_doctor">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="license_cert" :hide-label="true" >
|
||||
<div class="doctorInfo">
|
||||
<div class="infobox">
|
||||
<div class="row">
|
||||
<div class="nameDesc">就诊人姓名:</div>
|
||||
<div class="desc">{{modalForm.patient_name_mask}} ({{modalForm.patient_sex=1?'男':'女'}} {{modalForm.patient_age}}岁)</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">确诊疾病:</div>
|
||||
<div class="desc">{{modalForm.order_inquiry_case.disease_class_name}} {{modalForm.user_doctor.department_custom_name}}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">病情描述:</div>
|
||||
<div class="desc">{{modalForm.order_inquiry_case.disease_desc}} {{modalForm.user_doctor.department_custom_name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<a-divider v-if="modalForm.user_doctor"/>
|
||||
<div class="titlebox" v-if="modalForm.order_evaluation">
|
||||
<div class="bar"></div>
|
||||
<div class="name">评价信息</div>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.order_evaluation">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="" label="" no-style>
|
||||
<div class="infobox commentbox">
|
||||
<div class="row">
|
||||
<div class="nameDesc">回复质量:</div>
|
||||
<div class="desc"><a-rate :default-value="modalForm.order_evaluation.reply_quality" readonly /></div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">服务态度:</div>
|
||||
<div class="desc"><a-rate :default-value="modalForm.order_evaluation.service_attitude" readonly /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">回复速度:</div>
|
||||
<div class="desc"><a-rate :default-value="modalForm.order_evaluation.reply_progress" readonly /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">评价内容:</div>
|
||||
<div class="desc">{{ modalForm.order_evaluation.content }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="modalForm.order_evaluation"/>
|
||||
<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 style="margin-right: 8px;">
|
||||
<a-button type="primary" @click="()=>okVisible=true">问诊记录</a-button>
|
||||
</a-space>
|
||||
<a-space style="margin-right: 8px;">
|
||||
<a-button type="primary" status="danger" @click="()=>okVisible=true">删除订单</a-button>
|
||||
</a-space>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-modal>
|
||||
|
||||
<!-- 医生详情弹框 -->
|
||||
<doctorModal :visable="doctorVisible" @doctorVisibleChange="() => {doctorVisible = false;doctor_id='';}"></doctorModal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch } from 'vue';
|
||||
import {productList} from '@/api/order/list';
|
||||
import { parseTime } from '@/utils/parseTime';
|
||||
|
||||
// Akiraka 20230210 删除数据
|
||||
const deleteData = ref([])
|
||||
// Akiraka 20230210 删除对话框
|
||||
const deleteVisible = ref(false)
|
||||
// Akiraka 20230210 监听删除事件
|
||||
|
||||
const doctorVisible=ref(false);
|
||||
const doctor_id=ref('');
|
||||
watch(() => deleteVisible.value ,(value) => {
|
||||
if ( value == false ) {
|
||||
getProductInfo(pager);
|
||||
}
|
||||
})
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
const currentPage = ref(1);
|
||||
// Pager
|
||||
const pager = {
|
||||
total: 0,
|
||||
page: 1,
|
||||
page_size: 10,
|
||||
};
|
||||
// form
|
||||
const queryForm = reactive({});
|
||||
const modalForm = reactive({
|
||||
sort: 0,
|
||||
status: 1,
|
||||
order_inquiry_refund:{},
|
||||
order_evaluation:null
|
||||
|
||||
});
|
||||
|
||||
// Rules
|
||||
const rules = {
|
||||
post_name: [{ required: true, message: '请输入岗位名称' }]
|
||||
};
|
||||
|
||||
// Modal
|
||||
const modalVisible = ref(false);
|
||||
const modalTitle = ref('默认标题');
|
||||
|
||||
// Batch Del List
|
||||
let batchList = [];
|
||||
|
||||
// Table Columns
|
||||
const columns = [
|
||||
{ title: '排序', dataIndex: 'post_id',slotName: 'post_id' },
|
||||
{ title: '订单编号', dataIndex: 'order_product_no' },
|
||||
{ title: '处方编号', dataIndex: 'order_prescription_id' },
|
||||
{ title: '医生姓名', dataIndex: 'doctor_name' },
|
||||
{ title: '就诊人姓名', dataIndex: 'patient_name_mask' },
|
||||
// { title: '医生联系电话', dataIndex: 'patient_name' },
|
||||
{ title: '订单金额', dataIndex: 'amount_total' },
|
||||
{ title: '实付金额', dataIndex: 'payment_amount_total' },
|
||||
{ title: '支付方式', dataIndex: 'pay_channel',slotName: 'pay_channel'},
|
||||
{ title: '订单状态', dataIndex: 'order_product_status', slotName:'order_product_status' },
|
||||
{ title: '支付时间', dataIndex: 'pay_time', slotName: 'pay_time' },
|
||||
{ title: '操作', slotName: 'action' },
|
||||
];
|
||||
|
||||
// Table Data
|
||||
const tableData = ref([]);
|
||||
|
||||
// 新增
|
||||
const handleAdd = () => {
|
||||
modalVisible.value = true;
|
||||
modalTitle.value = '新增岗位';
|
||||
};
|
||||
|
||||
// 修改
|
||||
const handleUpdate = async (record) => {
|
||||
modalVisible.value = true;
|
||||
modalTitle.value = '修改岗位';
|
||||
|
||||
await nextTick();
|
||||
Object.assign(modalForm, record);
|
||||
};
|
||||
|
||||
// Modal ok
|
||||
// 异步关闭Modal需要调用 done()
|
||||
const handleSubmit = (done) => {
|
||||
proxy.$refs.modalFormRef.validate(async (valid) => {
|
||||
if (!valid) {
|
||||
let res;
|
||||
if (!modalForm.post_id) {
|
||||
const { code, message } = await addPost(modalForm);
|
||||
if (code == 200 ) {
|
||||
proxy.$notification.success('新增成功');
|
||||
} else {
|
||||
proxy.$notification.error(message);
|
||||
}
|
||||
} else {
|
||||
console.log("post_id:"+modalForm.post_id)
|
||||
|
||||
const { code, message } = await updatePost(modalForm, modalForm.post_id);
|
||||
if (code == 200 ) {
|
||||
proxy.$notification.success('更新成功');
|
||||
} else {
|
||||
proxy.$notification.error(message);
|
||||
}
|
||||
}
|
||||
done();
|
||||
getProductInfo(pager);
|
||||
} else {
|
||||
proxy.$message.error('表单校验失败');
|
||||
done(false);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 分页改变
|
||||
* @param {Number} [page]
|
||||
*/
|
||||
const handlePageChange = (page) => {
|
||||
pager.page = page;
|
||||
|
||||
// 修改当前页码
|
||||
currentPage.value = page;
|
||||
getProductInfo({ ...pager, ...queryForm });
|
||||
};
|
||||
|
||||
// 每页数据量
|
||||
const handlepage_sizeChange = (page_size) => {
|
||||
pager.page_size = page_size;
|
||||
getProductInfo({ ...pager, ...queryForm });
|
||||
};
|
||||
|
||||
// 获取岗位信息
|
||||
const getProductInfo = async (params = {}) => {
|
||||
const { data, code, message } = await productList(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 () => {
|
||||
pager.page=1;
|
||||
const params = {
|
||||
page: pager.page,
|
||||
page_size: pager.page_size,
|
||||
...queryForm,
|
||||
};
|
||||
|
||||
getProductInfo(params);
|
||||
};
|
||||
//获取订单详情
|
||||
const handleDetail = async (record) => {
|
||||
alert("开发中");return;
|
||||
modalVisible.value = true;
|
||||
modalTitle.value = '订单详情';
|
||||
const { code, data, message } = await getOrderDetail(record.order_inquiry_id);
|
||||
if (code == 200) {
|
||||
Object.assign(modalForm, data);
|
||||
}
|
||||
};
|
||||
const formatProductStatus=(val)=>{
|
||||
//订单状态(<!-- 1:待支付 2:待发货 3:已发货 4:已签收 5:已取消 -->
|
||||
let data={1:'待支付', 2:'待发货', 3:'已发货', 4:'已签收', 5:'已取消'}
|
||||
if(val){
|
||||
return data[val]
|
||||
}else{
|
||||
return ''
|
||||
}
|
||||
}
|
||||
const formatRefundStatus=(val)=>{
|
||||
//问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
|
||||
let data={0:'无退款', 1:'申请退款', 2:'退款中',3:'退款成功', 4:'拒绝退款', 5:'退款关闭', 6:'退款异常'}
|
||||
if(val || val==0){
|
||||
return data[val]
|
||||
}else{
|
||||
return ''
|
||||
}
|
||||
}
|
||||
const formatInquiryType=(val)=>{
|
||||
//订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测)
|
||||
let data={1:'专家问诊', 2:'快速问诊', 3:'公益问诊', 4:'问诊购药', 5:'糖组检测'}
|
||||
if(val){
|
||||
return data[val]
|
||||
}else{
|
||||
return ''
|
||||
}
|
||||
}
|
||||
// 重置搜索
|
||||
const handleResetQuery = () => {
|
||||
proxy.$refs.queryFormRef.resetFields();
|
||||
|
||||
getProductInfo(queryForm);
|
||||
}
|
||||
const openDcotor=()=>{
|
||||
alert("11")
|
||||
doctor_id.value=modalForm.doctor_id;
|
||||
doctorVisible.value=true;
|
||||
console.log(doctor_id.value,doctorVisible.value)
|
||||
}
|
||||
onMounted(() => {
|
||||
getProductInfo(pager);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.action {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.doctorInfo{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
.row{
|
||||
line-height:32px;
|
||||
display: flex;
|
||||
}
|
||||
.row .nameDesc{
|
||||
text-align: right;
|
||||
width:120px;
|
||||
color:#000;
|
||||
}
|
||||
.row .desc{
|
||||
color:#666;
|
||||
}
|
||||
.infobox{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.headImg {
|
||||
margin-right: 20px;
|
||||
border-radius: 50%;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
</style>
|
||||
564
src/views/order/order-list/index.vue
Normal file
564
src/views/order/order-list/index.vue
Normal file
@ -0,0 +1,564 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<a-form :model="queryForm" ref="queryFormRef" layout="inline">
|
||||
|
||||
<a-form-item field="inquiry_no" label="订单编号">
|
||||
<a-input :style="{ width: '182px' }" v-model="queryForm.inquiry_no" placeholder="请输入订单编号" @press-enter="handleQuery" />
|
||||
</a-form-item>
|
||||
<a-form-item field="mobile" label="医生姓名">
|
||||
<a-input :style="{ width: '182px' }" v-model="queryForm.doctor_name" placeholder="请输入医生姓名" @press-enter="handleQuery" />
|
||||
</a-form-item>
|
||||
<a-form-item field="hospital_name" label="就诊人姓名">
|
||||
<a-input :style="{ width: '182px' }" v-model="queryForm.patient_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-input :style="{ width: '182px' }" v-model="queryForm.mobile" placeholder="请输入医生电话号码" @press-enter="handleQuery" />
|
||||
</a-form-item>
|
||||
<a-form-item field="inquiry_service" label="订单状态">
|
||||
<a-select v-model="queryForm.inquiry_status" placeholder="请选择订单状态" :style="{ width: '182px' }">
|
||||
<!-- 1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) -->
|
||||
<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-option value="7">已取消</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 -->
|
||||
<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:remove'" type="primary" status="danger"><icon-delete /> 批量删除 </a-button> -->
|
||||
</a-space>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- table -->
|
||||
<a-table
|
||||
:columns="columns"
|
||||
:data="tableData"
|
||||
:pagination="{ 'show-total': true, 'show-jumper': true, 'show-page-size': true, total: pager.total, current: currentPage }"
|
||||
:row-selection="{ type: 'checkbox', showCheckedAll: true }"
|
||||
row-key="post_id"
|
||||
@selection-change="(selection) => {deleteData = selection;}"
|
||||
@page-change="handlePageChange"
|
||||
@page-size-change="handlepage_sizeChange"
|
||||
>
|
||||
<template #post_id="{record,rowIndex}">
|
||||
<div>{{(rowIndex+1)+(pager.page-1)*10}}</div>
|
||||
</template>
|
||||
<template #inquiry_pay_channel="{record}">
|
||||
<div v-if="record.inquiry_pay_channel==1">小程序支付</div>
|
||||
<div v-else-if="record.inquiry_pay_channel==2">微信扫码支付</div>
|
||||
<div v-else-if="record.inquiry_pay_channel==3">模拟支付</div>
|
||||
</template>
|
||||
<!-- 1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) -->
|
||||
<template #inquiry_status="{record}">
|
||||
<div v-if="record.inquiry_status==1">待支付</div>
|
||||
<div v-else-if="record.inquiry_status==2">待分配</div>
|
||||
<div v-else-if="record.inquiry_status==3">待接诊</div>
|
||||
<div v-else-if="record.inquiry_status==4">已接诊</div>
|
||||
<div v-else-if="record.inquiry_status==5">已完成</div>
|
||||
<div v-else-if="record.inquiry_status==6">已结束</div>
|
||||
<div v-else-if="record.inquiry_status==7">已取消</div>
|
||||
</template>
|
||||
<template #pay_time="{ record }">
|
||||
{{ parseTime(record.pay_time) }}
|
||||
</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:sysPost:remove'" type="text" @click="() => { deleteVisible = true; deleteData = [record.post_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;}">
|
||||
<div class="titlebox">
|
||||
<div class="bar"></div>
|
||||
<div class="name">订单信息</div>
|
||||
</div>
|
||||
<a-form :model="modalForm" :disabled="true" :rules="rules" ref="modalFormRef" :auto-label-width="true">
|
||||
<a-row :gutter="24" style="margin-top: 35px;">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_no" label="订单编号:">
|
||||
<span>{{ modalForm.inquiry_no }}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_status" label="订单状态:" >
|
||||
<span>{{ formatInquiryStatus(modalForm.inquiry_status) }}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" >
|
||||
<a-col :span="12">
|
||||
<a-form-item field="user.created_at" label="下单时间:">
|
||||
<span >{{modalForm.created_at}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="pay_time" label="支付时间:">
|
||||
<span >{{modalForm.pay_time}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="amount_total" label="订单金额:">
|
||||
<span>{{modalForm.amount_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="coupon_amount_total" label="优惠卷:">
|
||||
<span>{{modalForm.coupon_amount_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="payment_amount_total" label="实付金额:">
|
||||
<span>{{modalForm.payment_amount_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_type" label="问诊类型:">
|
||||
<span>{{formatInquiryType(modalForm.inquiry_type)}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.cancel_remarks">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="department_custom_name" label="备 注 :">
|
||||
<span>{{ modalForm.cancel_remarks}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider />
|
||||
<div class="titlebox" v-if="modalForm.order_inquiry_refund">
|
||||
<div class="bar"></div>
|
||||
<div class="name">退款信息</div>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_refund_no" label="退款编号:">
|
||||
<span>{{modalForm.order_inquiry_refund.inquiry_refund_no}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="escrow_trade_no" label=" 第三方订单编号:">
|
||||
<span>{{modalForm.escrow_trade_no}}</span>
|
||||
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="12">
|
||||
<a-form-item field="inquiry_refund_no" label="退款金额:">
|
||||
<span>{{modalForm.order_inquiry_refund.refund_total}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item field="escrow_trade_no" label="退款状态:">
|
||||
<span>{{formatRefundStatus(modalForm.order_inquiry_refund.inquiry_refund_status)}}</span>
|
||||
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="inquiry_refund_no" label="退款时间:">
|
||||
<span>{{modalForm.order_inquiry_refund.success_time}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="24" v-if="modalForm.order_inquiry_refund">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="inquiry_refund_no" label="退款原因:">
|
||||
<span>{{modalForm.order_inquiry_refund.refund_reason}}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="modalForm.order_inquiry_refund"/>
|
||||
<div class="titlebox" v-if="modalForm.user_doctor">
|
||||
<div class="bar"></div>
|
||||
<div class="name">医生信息</div>
|
||||
<a-space style="margin-right: 8px;flex:1;display: flex;justify-content: flex-end;">
|
||||
<a-button type="primary" @click="openDcotor">查看医生完整信息</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.user_doctor">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="license_cert" :hide-label="true" >
|
||||
<div class="doctorInfo">
|
||||
<a-space size="large">
|
||||
<a-image width="80" height="80" class="headImg" :src="modalForm.user_doctor.avatar" v-if="modalForm.user_doctor.avatar">
|
||||
</a-image>
|
||||
<a-image width="80" height="80" class="headImg" src="https://img.applets.igandanyiyuan.com/basic/file/doctor_avatar.png" v-else>
|
||||
</a-image>
|
||||
</a-space>
|
||||
<div class="infobox">
|
||||
<div class="name">{{modalForm.user_doctor.user_name}} {{modalForm.user_doctor.doctor_title}}</div>
|
||||
<div class="hospital">{{modalForm.user_doctor.hospital.hospital_name}} {{modalForm.user_doctor.department_custom_name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="modalForm.user_doctor"/>
|
||||
<div class="titlebox">
|
||||
<div class="bar"></div>
|
||||
<div class="name">就诊人信息</div>
|
||||
<a-space style="margin-right: 8px;flex:1;display: flex;justify-content: flex-end;">
|
||||
<a-button type="primary" status="warning" @click="openPatient">查看就诊人完整信息</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.user_doctor">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="license_cert" :hide-label="true" >
|
||||
<div class="doctorInfo">
|
||||
<div class="infobox">
|
||||
<div class="row">
|
||||
<div class="nameDesc">就诊人姓名:</div>
|
||||
<div class="desc">{{modalForm.patient_name_mask}} ({{modalForm.patient_sex=1?'男':'女'}} {{modalForm.patient_age}}岁)</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">确诊疾病:</div>
|
||||
<div class="desc">{{modalForm.order_inquiry_case.disease_class_name}} {{modalForm.user_doctor.department_custom_name}}</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">病情描述:</div>
|
||||
<div class="desc">{{modalForm.order_inquiry_case.disease_desc}} {{modalForm.user_doctor.department_custom_name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<a-divider v-if="modalForm.user_doctor"/>
|
||||
<div class="titlebox" v-if="modalForm.order_evaluation">
|
||||
<div class="bar"></div>
|
||||
<div class="name">评价信息</div>
|
||||
</div>
|
||||
<a-row :gutter="24" style="margin-top: 35px;" v-if="modalForm.order_evaluation">
|
||||
<a-col :span="24">
|
||||
<a-form-item field="" label="" no-style>
|
||||
<div class="infobox commentbox">
|
||||
<div class="row">
|
||||
<div class="nameDesc">回复质量:</div>
|
||||
<div class="desc"><a-rate :default-value="modalForm.order_evaluation.reply_quality" readonly /></div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">服务态度:</div>
|
||||
<div class="desc"><a-rate :default-value="modalForm.order_evaluation.service_attitude" readonly /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">回复速度:</div>
|
||||
<div class="desc"><a-rate :default-value="modalForm.order_evaluation.reply_progress" readonly /></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="nameDesc">评价内容:</div>
|
||||
<div class="desc">{{ modalForm.order_evaluation.content }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-divider v-if="modalForm.order_evaluation"/>
|
||||
<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 style="margin-right: 8px;">
|
||||
<a-button type="primary" @click="()=>okVisible=true">问诊记录</a-button>
|
||||
</a-space>
|
||||
<a-space style="margin-right: 8px;">
|
||||
<a-button type="primary" status="danger" @click="()=>okVisible=true">删除订单</a-button>
|
||||
</a-space>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-modal>
|
||||
|
||||
<!-- 医生详情弹框 -->
|
||||
<doctorModal :doctorVisible="doctorVisible" :doctor_id="doctor_id" @doctorVisibleChange="() => {doctorVisible = false;doctor_id='';}"></doctorModal>
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref, getCurrentInstance, onMounted, nextTick, watch } from 'vue';
|
||||
import { getOrderList,getOrderDetail} from '@/api/order/list';
|
||||
import { parseTime } from '@/utils/parseTime';
|
||||
|
||||
// Akiraka 20230210 删除数据
|
||||
const deleteData = ref([])
|
||||
// Akiraka 20230210 删除对话框
|
||||
const deleteVisible = ref(false)
|
||||
|
||||
const doctorVisible=ref(false);
|
||||
const doctor_id=ref('');
|
||||
// Akiraka 20230210 监听删除事件
|
||||
watch(() => deleteVisible.value ,(value) => {
|
||||
|
||||
if ( value == false ) {
|
||||
getOrderInfo(pager);
|
||||
}
|
||||
})
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
const currentPage = ref(1);
|
||||
// Pager
|
||||
const pager = {
|
||||
total: 0,
|
||||
page: 1,
|
||||
page_size: 10,
|
||||
};
|
||||
// form
|
||||
const queryForm = reactive({});
|
||||
const modalForm = reactive({
|
||||
sort: 0,
|
||||
status: 1,
|
||||
order_inquiry_refund:{},
|
||||
order_evaluation:null
|
||||
|
||||
});
|
||||
|
||||
// Rules
|
||||
const rules = {
|
||||
post_name: [{ required: true, message: '请输入岗位名称' }]
|
||||
};
|
||||
|
||||
// Modal
|
||||
const modalVisible = ref(false);
|
||||
const modalTitle = ref('默认标题');
|
||||
|
||||
// Batch Del List
|
||||
let batchList = [];
|
||||
|
||||
// Table Columns
|
||||
const columns = [
|
||||
{ title: '排序', dataIndex: 'post_id',slotName: 'post_id' },
|
||||
{ title: '订单编号', dataIndex: 'inquiry_no' },
|
||||
{ title: '医生姓名', dataIndex: 'doctor_name' },
|
||||
{ title: '就诊人姓名', dataIndex: 'patient_name' },
|
||||
{ title: '联系电话', dataIndex: 'patient_name' },
|
||||
{ title: '订单金额', dataIndex: 'amount_total' },
|
||||
{ title: '实付金额', dataIndex: 'payment_amount_total' },
|
||||
{ title: '支付方式', dataIndex: 'inquiry_pay_channel',slotName: 'inquiry_pay_channel'},
|
||||
{ title: '订单状态', dataIndex: 'inquiry_status', slotName:'inquiry_status' },
|
||||
{ title: '支付时间', dataIndex: 'pay_time', slotName: 'pay_time' },
|
||||
{ title: '操作', slotName: 'action' },
|
||||
];
|
||||
|
||||
// Table Data
|
||||
const tableData = ref([]);
|
||||
|
||||
// 新增
|
||||
const handleAdd = () => {
|
||||
modalVisible.value = true;
|
||||
modalTitle.value = '新增岗位';
|
||||
};
|
||||
|
||||
// 修改
|
||||
const handleUpdate = async (record) => {
|
||||
modalVisible.value = true;
|
||||
modalTitle.value = '修改岗位';
|
||||
|
||||
await nextTick();
|
||||
Object.assign(modalForm, record);
|
||||
};
|
||||
|
||||
// Modal ok
|
||||
// 异步关闭Modal需要调用 done()
|
||||
const handleSubmit = (done) => {
|
||||
proxy.$refs.modalFormRef.validate(async (valid) => {
|
||||
if (!valid) {
|
||||
let res;
|
||||
if (!modalForm.post_id) {
|
||||
const { code, message } = await addPost(modalForm);
|
||||
if (code == 200 ) {
|
||||
proxy.$notification.success('新增成功');
|
||||
} else {
|
||||
proxy.$notification.error(message);
|
||||
}
|
||||
} else {
|
||||
console.log("post_id:"+modalForm.post_id)
|
||||
|
||||
const { code, message } = await updatePost(modalForm, modalForm.post_id);
|
||||
if (code == 200 ) {
|
||||
proxy.$notification.success('更新成功');
|
||||
} else {
|
||||
proxy.$notification.error(message);
|
||||
}
|
||||
}
|
||||
done();
|
||||
getOrderInfo(pager);
|
||||
} else {
|
||||
proxy.$message.error('表单校验失败');
|
||||
done(false);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 分页改变
|
||||
* @param {Number} [page]
|
||||
*/
|
||||
const handlePageChange = (page) => {
|
||||
pager.page = page;
|
||||
|
||||
// 修改当前页码
|
||||
currentPage.value = page;
|
||||
getOrderInfo({ ...pager, ...queryForm });
|
||||
};
|
||||
|
||||
// 每页数据量
|
||||
const handlepage_sizeChange = (page_size) => {
|
||||
pager.page_size = page_size;
|
||||
getOrderInfo({ ...pager, ...queryForm });
|
||||
};
|
||||
|
||||
// 获取岗位信息
|
||||
const getOrderInfo = async (params = {}) => {
|
||||
const { data, code, message } = await getOrderList(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 () => {
|
||||
pager.page=1;
|
||||
const params = {
|
||||
page: pager.page,
|
||||
page_size: pager.page_size,
|
||||
...queryForm,
|
||||
};
|
||||
|
||||
getOrderInfo(params);
|
||||
};
|
||||
//获取订单详情
|
||||
const handleDetail = async (record) => {
|
||||
modalVisible.value = true;
|
||||
modalTitle.value = '订单详情';
|
||||
const { code, data, message } = await getOrderDetail(record.order_inquiry_id);
|
||||
if (code == 200) {
|
||||
Object.assign(modalForm, data);
|
||||
}
|
||||
};
|
||||
const formatInquiryStatus=(val)=>{
|
||||
//问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
|
||||
let data={1:'待支付', 2:'待分配', 3:'待接诊', 4:'已接诊', 5:'已完成', 6:'已结束', 7:'已取消'}
|
||||
if(val){
|
||||
return data[val]
|
||||
}else{
|
||||
return ''
|
||||
}
|
||||
}
|
||||
const formatRefundStatus=(val)=>{
|
||||
//问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常)
|
||||
let data={0:'无退款', 1:'申请退款', 2:'退款中',3:'退款成功', 4:'拒绝退款', 5:'退款关闭', 6:'退款异常'}
|
||||
if(val || val==0){
|
||||
return data[val]
|
||||
}else{
|
||||
return ''
|
||||
}
|
||||
}
|
||||
const formatInquiryType=(val)=>{
|
||||
//订单类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测)
|
||||
let data={1:'专家问诊', 2:'快速问诊', 3:'公益问诊', 4:'问诊购药', 5:'糖组检测'}
|
||||
if(val){
|
||||
return data[val]
|
||||
}else{
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
const openDcotor=()=>{
|
||||
|
||||
doctor_id.value=modalForm.doctor_id;
|
||||
doctorVisible.value=true;
|
||||
}
|
||||
const openPatient=()=>{
|
||||
alert('开发中')
|
||||
}
|
||||
// 重置搜索
|
||||
const handleResetQuery = () => {
|
||||
proxy.$refs.queryFormRef.resetFields();
|
||||
|
||||
getOrderInfo(queryForm);
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getOrderInfo(pager);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.action {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.doctorInfo{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
.row{
|
||||
line-height:32px;
|
||||
display: flex;
|
||||
}
|
||||
.row .nameDesc{
|
||||
text-align: right;
|
||||
width:120px;
|
||||
color:#000;
|
||||
}
|
||||
.row .desc{
|
||||
color:#666;
|
||||
}
|
||||
.infobox{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.headImg {
|
||||
margin-right: 20px;
|
||||
border-radius: 50%;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@ -48,11 +48,11 @@ export default defineConfig({
|
||||
port: 1798,
|
||||
//secure: false,
|
||||
proxy: {
|
||||
// '/api': {
|
||||
// target: 'https://vue3.go-admin.dev',
|
||||
// changeOrigin: true, //开启跨域
|
||||
// rewrite: (path) => path.replace(/^\/api/, '')
|
||||
// },
|
||||
'/book': {
|
||||
target: 'http://twx.igandan.org',
|
||||
changeOrigin: true, //开启跨域
|
||||
rewrite: (path) => path.replace(/^\/book/, '')
|
||||
},
|
||||
'/admin': {
|
||||
target: 'http://dev.hospital.admin.igandanyiyuan.com',
|
||||
changeOrigin: true, //开启跨域
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user