提交 7dd7016a 编写于 作者: xinglee23's avatar xinglee23

feat: 新增小程序后台诊室跳转路径

...@@ -17,4 +17,4 @@ VUE_APP_IS_LOCAL=true ...@@ -17,4 +17,4 @@ VUE_APP_IS_LOCAL=true
VUE_APP_APPID=wxf4e66242d31c81c2 VUE_APP_APPID=wxf4e66242d31c81c2
#本地token #本地token
VUE_APP_TOKEN=26D1BA0C935C4C92BB5BB33EF61D4AD9 VUE_APP_TOKEN=E214A2D6B40345F98DE538DA793CF918
...@@ -96,7 +96,7 @@ export const getCountQuery = async (params) => { ...@@ -96,7 +96,7 @@ export const getCountQuery = async (params) => {
return request({ return request({
url: '/diagnose/admin/diagnose/countQuery', url: '/diagnose/admin/diagnose/countQuery',
method: 'post', method: 'post',
data: params data: params,
}); });
}; };
...@@ -331,3 +331,17 @@ export const savePCDayCount = async (data) => { ...@@ -331,3 +331,17 @@ export const savePCDayCount = async (data) => {
method: 'post', method: 'post',
}); });
}; };
export const personnelList = async () => {
return request({
url: '/contents/admin/homepage/floor/personnelList',
method: 'get',
});
};
// 根据订单id获取群ID和群用户名
export const getUserIdByDiagnoseLogId = async (diagnoseLogId) => {
return request({
url: `/admin/diagnose/team/${diagnoseLogId}`,
method: 'get',
});
};
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<span>未选定医生</span> <span>未选定医生</span>
</div> </div>
<div class="work-info-Num"> <div class="work-info-Num">
<div v-if="diagnoseType != 4"> <div v-if="diagnoseType != 4 && formData.diagnoseChannel != 3">
<span <span
class="work-info-Num-span" class="work-info-Num-span"
>可选排班时间(预约已满需要沟通确定时间)</span> >可选排班时间(预约已满需要沟通确定时间)</span>
...@@ -194,6 +194,10 @@ ...@@ -194,6 +194,10 @@
return {}; return {};
}, },
}, },
diagnoseChannel: {
type: Number,
default: 0,
},
}, },
data() { data() {
return { return {
...@@ -218,7 +222,7 @@ ...@@ -218,7 +222,7 @@
receptionBeginTime: '', receptionBeginTime: '',
receptionEndTime: '', receptionEndTime: '',
bizType: '', bizType: '',
diagnoseChannel: 1, diagnoseChannel: null,
doctorDepartmentId: '', doctorDepartmentId: '',
}, },
doctorList: [], doctorList: [],
...@@ -291,6 +295,7 @@ ...@@ -291,6 +295,7 @@
) { ) {
this.refreshData(); this.refreshData();
} }
this.formData.diagnoseChannel = !this.diagnoseChannel ? 1 : this.diagnoseChannel;
}, },
methods: { methods: {
getChooseTimeValue(value, index) { getChooseTimeValue(value, index) {
...@@ -326,7 +331,6 @@ ...@@ -326,7 +331,6 @@
}); });
}, },
confirm() { confirm() {
console.log(this.startTime, 'starrrr');
if (this.formData.receptionName == '') { if (this.formData.receptionName == '') {
this.$message({ this.$message({
message: '请先选择接诊医生', message: '请先选择接诊医生',
...@@ -335,7 +339,7 @@ ...@@ -335,7 +339,7 @@
}); });
return false; return false;
} }
if (this.startTime == '' && this.diagnoseType != 4) { if (this.startTime == '' && this.diagnoseType != 4 && this.formData.diagnoseChannel != 3) {
this.$message({ this.$message({
message: '请选择排班时间', message: '请选择排班时间',
type: 'warning', type: 'warning',
...@@ -409,7 +413,6 @@ ...@@ -409,7 +413,6 @@
doctorChanged(value) { doctorChanged(value) {
const selected = this.doctorList.find((item) => item.doctorId === value); const selected = this.doctorList.find((item) => item.doctorId === value);
if (selected) { if (selected) {
console.log(selected, 'selected');
this.formData.receptionId = value; this.formData.receptionId = value;
this.formData.receptionName = selected.doctorName; this.formData.receptionName = selected.doctorName;
this.formData.doctorTitle = selected.doctorTitle; this.formData.doctorTitle = selected.doctorTitle;
......
<template> <template>
<div> <div>
<el-upload <el-upload
:action="actionurl" action="#"
:headers="headers" :headers="headers"
:disabled="isDisable" :disabled="isDisable"
list-type="picture-card" list-type="picture-card"
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
:file-list="imgArr" :file-list="imgArr"
:accept="accept" :accept="accept"
:before-upload="beforeUploadFile"
> >
<i class="el-icon-plus" /> <i class="el-icon-plus" />
</el-upload> </el-upload>
...@@ -26,7 +27,10 @@ ...@@ -26,7 +27,10 @@
</template> </template>
<script> <script>
import { getBaseUrl } from '@/utils/index'; import { doUpload, getFilePath } from '@/utils/qiniu-util';
import { openLoading, closeLoading } from '@/utils/utils';
let _this = null;
export default { export default {
props: { props: {
isDisable: { isDisable: {
...@@ -48,17 +52,20 @@ ...@@ -48,17 +52,20 @@
headers: { headers: {
token: localStorage.getItem('token'), token: localStorage.getItem('token'),
}, },
actionurl: '#', accept: 'image/png,image/jpeg,image/jpg',
accept: '.png,.jpeg',
}; };
}, },
watch: { watch: {
imgList(newv) { imgList(newv) {
this.imgArr = newv; const newImageList = newv?.filter(item => {
const videoUrl = item?.url.endsWith('.jpeg') || item?.url.endsWith('.png') || item?.url.endsWith('.jpg');
if(videoUrl) return item;
});
this.imgArr = newImageList;
}, },
}, },
created() { created() {
this.actionurl = getBaseUrl('/diagnose/illness/file'); _this = this;
}, },
methods: { methods: {
handleRemove(file, fileList) { handleRemove(file, fileList) {
...@@ -85,15 +92,34 @@ ...@@ -85,15 +92,34 @@
const newArr = []; const newArr = [];
if (this.imgArr && this.imgArr.length) { if (this.imgArr && this.imgArr.length) {
this.imgArr.forEach((item) => { this.imgArr.forEach((item) => {
if (item.response) { if (item.url && item.status === 'success') {
newArr.push(item.response.data);
} else if (item.url && item.from) {
newArr.push(item.url); newArr.push(item.url);
} }
}); });
} }
return newArr; return newArr;
}, },
beforeUploadFile(file) {
openLoading(_this);
doUpload(
_this,
file,
getFilePath(file, null),
null,
null,
1
).then(function(res) {
closeLoading(_this);
const fileItem = {
name: res.name,
size: res.size,
status: 'success',
url: res.fullPath
};
_this.imgArr.push(fileItem);
_this.$message.success('上传成功');
});
},
}, },
}; };
</script> </script>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
class="upload-demo" class="upload-demo"
:disabled="isDisable" :disabled="isDisable"
:before-upload="beforeMusicUpload" :before-upload="beforeMusicUpload"
:action="actionurl" action="#"
:headers="headers" :headers="headers"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-success="sucess" :on-success="sucess"
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
slot="tip" slot="tip"
class="el-upload__tip" class="el-upload__tip"
> >
音频格式:mp3 音频格式:mp3、mp4
</p> </p>
<ul <ul
slot="tip" slot="tip"
...@@ -48,7 +48,9 @@ ...@@ -48,7 +48,9 @@
</template> </template>
<script> <script>
import { getBaseUrl } from '@/utils/index'; import { doUpload, getFilePath } from '@/utils/qiniu-util';
import { openLoading, closeLoading } from '@/utils/utils';
let _this = null;
export default { export default {
props: { props: {
isDisable: { isDisable: {
...@@ -67,24 +69,28 @@ ...@@ -67,24 +69,28 @@
dialogImageUrl: '', dialogImageUrl: '',
dialogVisible: false, dialogVisible: false,
musicArr: [], musicArr: [],
actionUrl: '',
headers: { headers: {
token: localStorage.getItem('token'), token: localStorage.getItem('token'),
}, },
loading: false, loading: false,
accept: '.mp3,.mpeg', accept: '.mp3,.mpeg,.mp4',
}; };
}, },
watch: { watch: {
musicList(newv) { musicList(newv) {
console.log(newv); console.log(newv);
this.musicArr = newv || []; const newVideoList = newv?.filter(item => {
const suffixUrl = item?.url.substring(item?.url.lastIndexOf('/') + 1); // 接口不返回name,上传数据列表名称展示为截取url最后“/”后面的内容
item.name = suffixUrl;
return item;
});
this.musicArr = newVideoList || [];
}, },
}, },
created() { created() {
_this = this;
this.musicArr = this.musicList; this.musicArr = this.musicList;
console.log(console.log('this.musicList', this.musicArr)); console.log(console.log('this.musicList', this.musicArr));
this.actionurl = getBaseUrl('/diagnose/illness/audio/upload');
}, },
methods: { methods: {
musicUrl(item) { musicUrl(item) {
...@@ -114,14 +120,32 @@ ...@@ -114,14 +120,32 @@
this.loading = false; this.loading = false;
}, },
// 上传mp3 // 上传mp3
beforeMusicUpload() {}, beforeMusicUpload(file) {
openLoading(_this);
doUpload(
_this,
file,
getFilePath(file, null),
null,
null,
''
).then(function(res) {
closeLoading(_this);
const fileItem = {
name: res.name ? res.name : res.fullPath,
size: res.size,
status: 'success',
url: res.fullPath
};
_this.musicArr.push(fileItem);
_this.$message.success('上传成功');
});
},
setNewArr() { setNewArr() {
const newArr = []; const newArr = [];
if (this.musicArr && this.musicArr.length) { if (this.musicArr && this.musicArr.length) {
this.musicArr.forEach((item) => { this.musicArr.forEach((item) => {
if (item.data) { if (item.url && item.status === 'success') {
newArr.push(item.data.domainPath + item.data.path);
} else if (item.url && item.from) {
newArr.push(item.url); newArr.push(item.url);
} }
}); });
......
<template>
<div class="upload">
<el-upload
action="#"
:headers="headers"
:disabled="isDisable"
:on-remove="handleRemove"
:on-success="sucess"
:on-exceed="handleExceed"
:file-list="imgArr"
accept="video/mp4"
:limit="15"
:before-upload="beforeUploadFile"
multiple
>
<el-button
size="small"
type="primary"
>
点击上传
</el-button>
</el-upload>
<div class="upload-main">
<video
v-for="(value, index) in imgArr"
:key="index"
:src="value.url"
class="upload-main__video"
controls
preload
/>
</div>
</div>
</template>
<script>
import { doUpload, getFilePath } from '@/utils/qiniu-util';
import { openLoading, closeLoading } from '@/utils/utils';
let _this = null;
export default {
props: {
isDisable: {
type: Boolean,
default: false,
},
imgList: {
type: Array,
default: () => {
return [];
},
},
},
data() {
return {
dialogImageUrl: '',
imgArr: [],
headers: {
token: localStorage.getItem('token'),
},
};
},
watch: {
imgList(newv) {
const newVideoList = newv?.filter(item => {
const videoUrl = item?.url.endsWith('.mp4');
if(videoUrl) {
const suffixUrl = item?.url.substring(item?.url.lastIndexOf('/') + 1); // 接口不返回name,上传数据列表名称展示为截取url最后“/”后面的内容
item.name = suffixUrl;
return item;
}
});
this.imgArr = newVideoList;
},
},
created() {
_this = this;
},
methods: {
handleRemove(file, fileList) {
console.log(file);
this.imgArr = fileList;
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
sucess(response, file, fileList) {
console.log(response);
console.log(file);
this.imgArr = fileList;
},
setNewArr() {
const newArr = [];
if (this.imgArr && this.imgArr.length) {
this.imgArr.forEach((item) => {
if (item.url && item.status === 'success') {
newArr.push(item.url);
}
});
}
return newArr;
},
beforeUploadFile(file) {
openLoading(_this);
doUpload(
_this,
file,
getFilePath(file, null),
null,
null,
''
).then(function(res) {
closeLoading(_this);
const fileItem = {
name: res.name ? res.name : res.fullPath,
size: res.size,
status: 'success',
url: res.fullPath
};
_this.imgArr.push(fileItem);
_this.$message.success('上传成功');
});
}
},
};
</script>
<style lang="scss" scoped>
.upload {
&-main {
overflow-y: scroll;
&__video {
margin-top: 5px;
margin-right: 25px;
width: 200px;
height: 200px;
object-fit: fill;
}
}
}
/* 隐藏滚动条 */
::-webkit-scrollbar {
display: none;
}
</style>
...@@ -29,12 +29,16 @@ ...@@ -29,12 +29,16 @@
:label="item.label" :label="item.label"
:show-overflow-tooltip="item.showtooltip" :show-overflow-tooltip="item.showtooltip"
:sortable=" :sortable="
item.prop == 'appointBeginTime' || item.prop == 'assistantBeginTime' item.prop == 'appointBeginTime' ||
item.prop == 'assistantBeginTime' ||
item.prop == 'assistantTime' ||
item.prop == 'receptionTime'
? 'custom' ? 'custom'
: false : false
" "
min-width="170" min-width="170"
align="center" align="center"
:fixed="item.fixed || false"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.column.property == 'appointBeginTime'"> <div v-if="scope.column.property == 'appointBeginTime'">
...@@ -49,6 +53,31 @@ ...@@ -49,6 +53,31 @@
<p>{{ scope.row.receptionBeginTime }}</p> <p>{{ scope.row.receptionBeginTime }}</p>
<p>{{ scope.row.receptionEndTime }}</p> <p>{{ scope.row.receptionEndTime }}</p>
</div> </div>
<div v-else-if="scope.column.property == 'assistantTime'">
<div
:style="{
color:
scope.row.diagnoseChannel === 3 && scope.row.status === 3
? 'red'
: '',
}"
>
<p
v-if="scope.row.diagnoseChannel === 3 && scope.row.status === 3"
>
距自动结束还剩
</p>
<p>{{ goTime(scope.row.assistantTime) }}</p>
</div>
</div>
<div v-else-if="scope.column.property == 'receptionTime'">
<div :style="{ color: isReceptionTime(scope) ? 'red' : '' }">
<p v-if="isReceptionTime(scope)">
距自动取消还剩
</p>
<p>{{ goTime(scope.row.receptionTime) }}</p>
</div>
</div>
<div v-else> <div v-else>
<p>{{ scope.row[scope.column.property] }}</p> <p>{{ scope.row[scope.column.property] }}</p>
</div> </div>
...@@ -127,6 +156,7 @@ ...@@ -127,6 +156,7 @@
> >
修改科室 修改科室
</el-button> </el-button>
<!-- 问诊方式不能为小程序问诊 scope.row.diagnoseChannel!==3隐藏发送消息 -->
<el-button <el-button
v-if="showBtn(scope.row, 3, 4, 5, 6, 21, 22, 23, 24, 25, 26)" v-if="showBtn(scope.row, 3, 4, 5, 6, 21, 22, 23, 24, 25, 26)"
type="primary" type="primary"
...@@ -192,7 +222,11 @@ ...@@ -192,7 +222,11 @@
手动打回 手动打回
</el-button> </el-button>
<el-button <el-button
v-if="scope.row.diagnoseType !== 4 && showBtn(scope.row, 3, 26)" v-if="
scope.row.diagnoseType !== 4 &&
showBtn(scope.row, 3, 26) &&
scope.row.diagnoseChannel !== 3
"
type="primary" type="primary"
size="small" size="small"
class="btn" class="btn"
...@@ -251,6 +285,9 @@ ...@@ -251,6 +285,9 @@
<script> <script>
import { DIAGNOS_LIST_NEW } from '@/utils/GeneralData/diagnosis-list-new'; import { DIAGNOS_LIST_NEW } from '@/utils/GeneralData/diagnosis-list-new';
import TabSet from '@/components/common/tab-set'; import TabSet from '@/components/common/tab-set';
import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration';
dayjs.extend(duration);
export default { export default {
components: { components: {
TabSet, TabSet,
...@@ -406,9 +443,9 @@ export default { ...@@ -406,9 +443,9 @@ export default {
this.$emit('changeTime', row); this.$emit('changeTime', row);
}, },
// 发起问诊 // 发起问诊
call(row) { // call(row) {
this.$emit('call', row); // this.$emit("call", row);
}, // },
// 设为已完成 // 设为已完成
doneHandle(row) { doneHandle(row) {
this.$emit('doneHandle', row); this.$emit('doneHandle', row);
...@@ -422,6 +459,23 @@ export default { ...@@ -422,6 +459,23 @@ export default {
callAssistant(row) { callAssistant(row) {
this.$emit('callAssistant', row); this.$emit('callAssistant', row);
}, },
// 转成时分秒
goTime(time) {
return dayjs.duration(time, 'seconds').format('HH:mm:ss');
},
isReceptionTime(scope) {
if (
scope.row.diagnoseChannel === 3 &&
(scope.row.status === 2 ||
scope.row.status === 21 ||
scope.row.status === 22 ||
scope.row.status === 23 ||
scope.row.status === 24 ||
scope.row.status === 25 ||
scope.row.status === 26)
)
return true;
},
}, },
}; };
</script> </script>
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
.flex{ .flex{
display: flex; display: flex;
} }
.flex-1{
flex: 1;
}
.space-between{ .space-between{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
......
export const DIAGNOS_LIST_NEW = [ export const DIAGNOS_LIST_NEW = [
{ {
prop: 'diagnoseLogId', prop: 'diagnoseLogId',
label: 'ID', label: '问诊ID',
showtooltip: false, showtooltip: false,
fixed: 'left',
}, },
{ {
prop: 'orderNo', prop: 'userName',
label: '订单ID', label: '助诊医生',
showtooltip: false, showtooltip: false,
fixed: 'left',
}, },
{ {
prop: 'price', prop: 'doctorName',
label: '订单金额', label: '接诊医生',
showtooltip: false, showtooltip: false,
fixed: 'left',
}, },
{ {
prop: 'orderPlacer', prop: 'triageDepartment',
label: '下单人', label: '分诊科室',
showtooltip: false,
},
{
prop: 'patientName',
label: '患者姓名',
showtooltip: false,
},
{
prop: 'statusStr',
label: '状态',
showtooltip: false,
},
{
prop: 'price',
label: '订单金额',
showtooltip: false, showtooltip: false,
}, },
{ {
...@@ -37,13 +55,43 @@ export const DIAGNOS_LIST_NEW = [ ...@@ -37,13 +55,43 @@ export const DIAGNOS_LIST_NEW = [
with: '200', with: '200',
}, },
{ {
prop: 'refundRemark', prop: 'diagnoseChannelStr',
label: '外呼状态', label: '问诊方式',
showtooltip: false, showtooltip: false,
}, },
{ {
prop: 'statusStr', prop: 'appointBeginTime',
label: '状态', label: '预约时间',
showtooltip: false,
},
{
prop: 'doneTime',
label: '完成时间',
showtooltip: false,
},
{
prop: 'createdTime',
label: '创建时间',
showtooltip: false,
},
{
prop: 'assistantBeginTime',
label: '助诊医生意向时间',
showtooltip: false,
},
{
prop: 'orderNo',
label: '订单ID',
showtooltip: false,
},
{
prop: 'orderPlacer',
label: '下单人',
showtooltip: false,
},
{
prop: 'refundRemark',
label: '外呼状态',
showtooltip: false, showtooltip: false,
}, },
{ {
...@@ -62,11 +110,15 @@ export const DIAGNOS_LIST_NEW = [ ...@@ -62,11 +110,15 @@ export const DIAGNOS_LIST_NEW = [
showtooltip: false, showtooltip: false,
}, },
{ {
prop: 'appointBeginTime', prop: 'assistantTime',
label: '预约时间', label: '问诊时长',
showtooltip: false,
},
{
prop: 'receptionTime',
label: '接诊时长',
showtooltip: false, showtooltip: false,
}, },
// appointBeginTime appointEndTime 预约时间
{ {
prop: 'operateUserId', prop: 'operateUserId',
label: '运营人员ID', label: '运营人员ID',
...@@ -77,21 +129,11 @@ export const DIAGNOS_LIST_NEW = [ ...@@ -77,21 +129,11 @@ export const DIAGNOS_LIST_NEW = [
label: '运营人员', label: '运营人员',
showtooltip: false, showtooltip: false,
}, },
{
prop: 'userName',
label: '助诊医生',
showtooltip: false,
},
{ {
prop: 'userMobile', prop: 'userMobile',
label: '助诊电话', label: '助诊电话',
showtooltip: false, showtooltip: false,
}, },
{
prop: 'assistantBeginTime',
label: '助诊医生意向时间',
showtooltip: false,
},
// assistantBeginTime assistantEndTime 助诊医生意向时间 // assistantBeginTime assistantEndTime 助诊医生意向时间
{ {
prop: 'assistantRemark', prop: 'assistantRemark',
...@@ -103,21 +145,11 @@ export const DIAGNOS_LIST_NEW = [ ...@@ -103,21 +145,11 @@ export const DIAGNOS_LIST_NEW = [
label: '预约科室', label: '预约科室',
showtooltip: false, showtooltip: false,
}, },
{
prop: 'triageDepartment',
label: '分诊科室',
showtooltip: false,
},
{ {
prop: 'triageRemark', prop: 'triageRemark',
label: '分诊备注', label: '分诊备注',
showtooltip: true, showtooltip: true,
}, },
{
prop: 'doctorName',
label: '接诊医生',
showtooltip: false,
},
{ {
prop: 'outsideDoctor', prop: 'outsideDoctor',
label: '站外医生姓名', label: '站外医生姓名',
...@@ -134,11 +166,7 @@ export const DIAGNOS_LIST_NEW = [ ...@@ -134,11 +166,7 @@ export const DIAGNOS_LIST_NEW = [
showtooltip: false, showtooltip: false,
}, },
// receptionBeginTime receptionEndTime 接诊医生意向时间 // receptionBeginTime receptionEndTime 接诊医生意向时间
{
prop: 'patientName',
label: '患者姓名',
showtooltip: false,
},
{ {
prop: 'age', prop: 'age',
label: '患者年龄', label: '患者年龄',
...@@ -199,26 +227,11 @@ export const DIAGNOS_LIST_NEW = [ ...@@ -199,26 +227,11 @@ export const DIAGNOS_LIST_NEW = [
label: '招募人', label: '招募人',
showtooltip: false, showtooltip: false,
}, },
{
prop: 'diagnoseChannelStr',
label: '问诊方式',
showtooltip: false,
},
{
prop: 'doneTime',
label: '完成时间',
showtooltip: false,
},
{ {
prop: 'cancelTime', prop: 'cancelTime',
label: '退款时间', label: '退款时间',
showtooltip: false, showtooltip: false,
}, },
{
prop: 'createdTime',
label: '创建时间',
showtooltip: false,
},
{ {
prop: 'followFlagStr', prop: 'followFlagStr',
label: '是否跟进', label: '是否跟进',
......
...@@ -5,10 +5,6 @@ ...@@ -5,10 +5,6 @@
// 预约类型list // 预约类型list
export const TYPE_LIST = [ export const TYPE_LIST = [
{
label: '全部',
value: '',
},
{ {
label: '语音问诊', label: '语音问诊',
value: 1, value: 1,
...@@ -667,3 +663,104 @@ export const TABLE_COLUMN = [ ...@@ -667,3 +663,104 @@ export const TABLE_COLUMN = [
showtooltip: true, showtooltip: true,
}, },
]; ];
export const DIAGNOSE_CHANNEL = [
{
label: 'app问诊',
value: 1,
},
{
label: '线下问诊',
value: 2,
},
{
label: '小程序问诊',
value: 3,
},
];
// 跟进状态
export const FOLLOW_STATUS_LIST = [
{
label: '待跟进',
value: 1,
},
{
label: '跟进中',
value: 2,
},
{
label: '已完成',
value: 3,
},
];
// 药品跟进结果
export const MEDICINE_FOLLOW_STATUS_LIST = [
{
label: '成交中药',
value: 1,
},
{
label: '成交西药',
value: 2,
},
{
label: '自备中药',
value: 3,
},
{
label: '自备西药',
value: 4,
},
];
// 治疗效果跟进状态
export const HEALING_EFFECT_FOLLOW_STATUS = [
{
label: '待跟进',
value: 1,
},
{
label: '跟进中',
value: 2,
},
{
label: '跟进完成',
value: 3,
},
{
label: '长期跟进',
value: 4,
},
];
// 治疗效果跟进结果
export const HEALING_EFFECT_FOLLOW_RESULT = [
{
label: '效果显著',
value: 1,
},
{
label: '有效果,不明显',
value: 2,
},
{
label: '无效果',
value: 3,
},
{
label: '治疗后更差了',
value: 4,
},
];
// 检查跟进结果
export const CHECK_FOLLOW_RESULT = [
{
label: '成交',
value: 1,
},
{
label: '未成交',
value: 2,
},
{
label: '线下自己做',
value: 3,
},
];
\ No newline at end of file
...@@ -81,6 +81,18 @@ ...@@ -81,6 +81,18 @@
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
/> />
</el-form-item> </el-form-item>
<el-form-item
label="订单金额"
prop="orderTotalPrice"
>
<el-input
v-model="formData.orderTotalPrice"
placeholder="请输入问诊价格"
disabled
class="set-width"
/>
(单位元)
</el-form-item>
<el-form-item <el-form-item
label="问诊价格" label="问诊价格"
prop="price" prop="price"
...@@ -93,6 +105,33 @@ ...@@ -93,6 +105,33 @@
/> />
(单位元) (单位元)
</el-form-item> </el-form-item>
<el-form-item
label="诊疗费"
prop="additionPrice"
>
<el-input
v-model="formData.additionPrice"
placeholder="请输入诊疗费"
disabled
class="set-width"
/>
(单位元)
</el-form-item>
<el-form-item label="问诊方式">
<el-select
v-model="formData.diagnoseChannel"
placeholder="请选择问诊方式"
class="set-width"
disabled
>
<el-option
v-for="item of diagnoseChannelList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="支付方式"> <el-form-item label="支付方式">
<el-select <el-select
v-model="formData.payType" v-model="formData.payType"
...@@ -645,7 +684,7 @@ ...@@ -645,7 +684,7 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="确诊疾病"> <el-form-item label="诊断疾病(运营填)">
<el-input <el-input
v-model="formData.diagnoseDisease" v-model="formData.diagnoseDisease"
placeholder="请输入确诊疾病名称" placeholder="请输入确诊疾病名称"
...@@ -673,14 +712,20 @@ ...@@ -673,14 +712,20 @@
<upload-img <upload-img
ref="imgComponent" ref="imgComponent"
:is-disable="editorType == 2" :is-disable="editorType == 2"
:img-list=" :img-list="formData.illnessImageUrls"
formData.illnessImageUrls.filter((i) => {
return i && !i.url.includes('.pdf');
})
"
/> />
</el-form-item> </el-form-item>
<el-form-item label="检测报告"> <el-form-item label="病情视频">
<p class="img-title">
请上传患处视频、所用药品、与病情相关的线上诊疗记录视频、检查检测报告,请保证视频清晰完整,以便医生确认病情
</p>
<upload-video
ref="videoComponent"
:is-disable="editorType == 2"
:img-list="formData.illnessImageUrls"
/>
</el-form-item>
<el-form-item label="病情文件">
<div <div
v-for="item in formData.illnessPdfUrls" v-for="item in formData.illnessPdfUrls"
:key="item.name" :key="item.name"
...@@ -703,6 +748,14 @@ ...@@ -703,6 +748,14 @@
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="诊断疾病(医生填)">
<el-input
v-model="formData.diseaseName"
disabled
placeholder="请输入确诊疾病名称"
class="set-width"
/>
</el-form-item>
<el-form-item <el-form-item
label="诊断建议" label="诊断建议"
prop="diagnoseAdvice" prop="diagnoseAdvice"
...@@ -713,13 +766,80 @@ ...@@ -713,13 +766,80 @@
<el-input <el-input
v-model="formData.diagnoseAdvice" v-model="formData.diagnoseAdvice"
type="textarea" type="textarea"
placeholder="请输入更新建议(更新后原建议将被删除)" placeholder="请填写您对患者病情的诊断描述和建议"
:disabled="editorType == 2"
maxlength="1000"
show-word-limit
/>
</el-form-item>
<el-form-item
label="中药建议"
prop="tcmAdvice"
>
<p class="old-diagnoseAdvice">
{{ oldTcmAdvice }}
</p>
<el-input
v-model="formData.tcmAdvice"
type="textarea"
placeholder="请输入建议使用的中药名称及用量、频次等"
:disabled="editorType == 2" :disabled="editorType == 2"
maxlength="1000" maxlength="1000"
show-word-limit show-word-limit
/> />
</el-form-item> </el-form-item>
<el-form-item label="系统录音/录像"> <el-form-item
label="西药建议"
prop="westernAdvice"
>
<p class="old-diagnoseAdvice">
{{ oldWesternAdvice }}
</p>
<el-input
v-model="formData.westernAdvice"
type="textarea"
placeholder="请输入建议使用的西药名称及用量、频次等"
:disabled="editorType == 2"
maxlength="1000"
show-word-limit
/>
</el-form-item>
<el-form-item
label="检查建议"
prop="inspectionAdvice"
>
<p class="old-diagnoseAdvice">
{{ oldInspectionAdvice }}
</p>
<el-input
v-model="formData.inspectionAdvice"
type="textarea"
placeholder="建议患者进一步作何检查"
:disabled="editorType == 2"
maxlength="1000"
show-word-limit
/>
</el-form-item>
<el-form-item
label="生活建议"
prop="lifeAdvice"
>
<p class="old-diagnoseAdvice">
{{ oldLifeAdvice }}
</p>
<el-input
v-model="formData.lifeAdvice"
type="textarea"
placeholder="生活作息、饮食、日常运动等方面的建议"
:disabled="editorType == 2"
maxlength="1000"
show-word-limit
/>
</el-form-item>
<el-form-item
v-if="formData.vodList.length > 0"
label="系统录音/录像"
>
<el-form-item <el-form-item
v-for="item in formData.vodList" v-for="item in formData.vodList"
:key="item.url" :key="item.url"
...@@ -739,6 +859,20 @@ ...@@ -739,6 +859,20 @@
'.mp4' '.mp4'
}} }}
</el-link> </el-link>
<el-popover
trigger="hover"
placement="top"
width="1000"
>
<p>{{ item.text }}</p>
<div
slot="reference"
class="vod"
>
<span class="vod-txt">语音转文字:</span>
<span class="vod-text">{{ item.text }}</span>
</div>
</el-popover>
</el-form-item> </el-form-item>
</el-form-item> </el-form-item>
<el-form-item label="音频"> <el-form-item label="音频">
...@@ -829,6 +963,82 @@ ...@@ -829,6 +963,82 @@
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="跟进状态">
<el-select
v-model="formData.followStatus"
placeholder="请选择跟进状态"
class="set-width"
:disabled="editorType == 2"
>
<el-option
v-for="item of followStatusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="计划跟进时间">
<el-date-picker
v-model="formData.followDate"
:disabled="editorType == 2"
class="set-width"
type="datetime"
placeholder="创建时间"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</el-form-item>
<el-form-item label="治疗效果跟进状态">
<el-select
v-model="formData.treatmentFollowStatus"
placeholder="请选择治疗效果跟进状态"
class="set-width"
:disabled="editorType == 2"
>
<el-option
v-for="item of healingStatusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="治疗效果跟进点">
<el-input
v-model="formData.treatmentFollow"
placeholder="请输入治疗效果跟进点"
type="textarea"
maxlength="1000"
:disabled="editorType == 2"
show-word-limit
/>
</el-form-item>
<el-form-item label="治疗效果跟进结果">
<el-select
v-model="formData.treatmentFollowResult"
placeholder="请选择治疗效果跟进结果"
class="set-width"
:disabled="editorType == 2"
>
<el-option
v-for="item of healingResultList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="药品跟进点">
<el-input
v-model="formData.drugFollow"
placeholder="请输入药品跟进点"
type="textarea"
maxlength="1000"
:disabled="editorType == 2"
show-word-limit
/>
</el-form-item>
<el-form-item label="药品跟进状态"> <el-form-item label="药品跟进状态">
<el-select <el-select
v-model="formData.drugFollowStatus" v-model="formData.drugFollowStatus"
...@@ -844,11 +1054,37 @@ ...@@ -844,11 +1054,37 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="药品跟进"> <el-form-item label="药品跟进结果">
<div class="flex">
<el-select
v-model="formData.drugFollowResult"
placeholder="请选择药品跟进结果"
class="set-width"
:disabled="editorType == 2"
>
<el-option
v-for="item of medicineFollowStatusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-input
v-model="formData.drugFollowResultContent"
placeholder=""
class="set-width flex-1"
style="margin-left:30px"
:disabled="editorType == 2"
maxlength="1000"
show-word-limit
/>
</div>
</el-form-item>
<el-form-item label="检查跟进点">
<el-input <el-input
v-model="formData.drugFollow" v-model="formData.checkFollow"
placeholder="请输入检查跟进点"
type="textarea" type="textarea"
placeholder="请输入可跟进的事项"
maxlength="1000" maxlength="1000"
:disabled="editorType == 2" :disabled="editorType == 2"
show-word-limit show-word-limit
...@@ -869,15 +1105,37 @@ ...@@ -869,15 +1105,37 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="检查跟进"> <el-form-item label="检查跟进结果">
<div class="flex">
<el-select
v-model="formData.checkFollowResult"
placeholder="请选择检查跟进结果"
class="set-width"
:disabled="editorType == 2"
>
<el-option
v-for="item of checkFollowResultList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<span
class="flex flex-1"
style="margin-left:30px"
>
检查结果
<el-input <el-input
v-model="formData.checkFollow" v-model="formData.checkResult"
type="textarea" placeholder=""
placeholder="请输入可跟进的事项" show-word-limit
maxlength="1000" maxlength="1000"
class="set-width flex-1"
style="margin-left:12px"
:disabled="editorType == 2" :disabled="editorType == 2"
show-word-limit
/> />
</span>
</div>
</el-form-item> </el-form-item>
<el-form-item label="其他跟进状态"> <el-form-item label="其他跟进状态">
<el-select <el-select
...@@ -989,6 +1247,7 @@ import { ...@@ -989,6 +1247,7 @@ import {
} from '@/api/diagnosis'; } from '@/api/diagnosis';
import uploadImg from '@/components/editor/upload-img'; import uploadImg from '@/components/editor/upload-img';
import uploadMusic from '@/components/editor/upload-music'; import uploadMusic from '@/components/editor/upload-music';
import uploadVideo from '@/components/editor/upload-video';
import { import {
CAR_LIST, CAR_LIST,
D_S_LIST, D_S_LIST,
...@@ -999,6 +1258,12 @@ import { ...@@ -999,6 +1258,12 @@ import {
SOURCE_LIST, SOURCE_LIST,
STATUS_LIST, STATUS_LIST,
TYPE_LIST, TYPE_LIST,
DIAGNOSE_CHANNEL,
FOLLOW_STATUS_LIST,
MEDICINE_FOLLOW_STATUS_LIST,
HEALING_EFFECT_FOLLOW_STATUS,
HEALING_EFFECT_FOLLOW_RESULT,
CHECK_FOLLOW_RESULT
} from '@/utils/constants'; } from '@/utils/constants';
import { getBirth } from '@/utils/index'; import { getBirth } from '@/utils/index';
...@@ -1010,6 +1275,7 @@ export default { ...@@ -1010,6 +1275,7 @@ export default {
components: { components: {
uploadImg, uploadImg,
uploadMusic, uploadMusic,
uploadVideo
}, },
data() { data() {
return { return {
...@@ -1021,6 +1287,10 @@ export default { ...@@ -1021,6 +1287,10 @@ export default {
loading: true, loading: true,
btnDisable: false, btnDisable: false,
oldDiagnoseAdvice: '', // 旧的诊断建议 oldDiagnoseAdvice: '', // 旧的诊断建议
oldTcmAdvice: '', // 旧的中药建议
oldWesternAdvice: '',
oldInspectionAdvice: '',
oldLifeAdvice: '',
formData: { formData: {
// 预约单信息 // 预约单信息
diagnoseType: '', diagnoseType: '',
...@@ -1074,17 +1344,27 @@ export default { ...@@ -1074,17 +1344,27 @@ export default {
diagnoseStage: '', diagnoseStage: '',
determineFlag: '', determineFlag: '',
diagnoseDisease: '', diagnoseDisease: '',
diseaseName:'',
illnessDetail: '', illnessDetail: '',
illnessImageUrls: [], illnessImageUrls: [],
diagnoseAdvice: '', diagnoseAdvice: '',
illnessAudioUrls: [], illnessAudioUrls: [],
followFlag: 1, followFlag: 1,
drugFollow: '',
drugFollowStatus: '', drugFollowStatus: '',
checkFollow: '',
checkFollowStatus: '', checkFollowStatus: '',
otherFollowStatus: '', otherFollowStatus: '',
otherFollow: '', otherFollow: '',
followStatus:'', // 跟进状态
followDate:'', // 计划跟进时间
drugFollow:'', // 药品跟进点
drugFollowResult:'', // 药品跟进结果
drugFollowResultContent:'', // 药品跟进结果描述
treatmentFollow:'', // 治疗效果跟进点
treatmentFollowStatus:'', // 治疗效果跟进状态
treatmentFollowResult:'', // 治疗效果跟进结果
checkFollow: '', // 检查跟进点
checkFollowResult: '', // 检查跟进结果
checkResult: '', // 检测结果
remark: '', remark: '',
maritalStatus: 2, maritalStatus: 2,
createType: 1, // //创建方式1.系统创建 2.手动创建 createType: 1, // //创建方式1.系统创建 2.手动创建
...@@ -1106,10 +1386,15 @@ export default { ...@@ -1106,10 +1386,15 @@ export default {
vodList: { vodList: {
name: '', name: '',
url: '', url: '',
text: ''
}, },
additionPrice: null, // 诊疗费
orderTotalPrice: null,
diagnoseChannel: null
}, },
tyleList: TYPE_LIST, tyleList: TYPE_LIST,
payList: PAY_LIST, payList: PAY_LIST,
diagnoseChannelList: DIAGNOSE_CHANNEL,
sourceList: SOURCE_LIST, sourceList: SOURCE_LIST,
statusList: STATUS_LIST, statusList: STATUS_LIST,
carList: CAR_LIST, carList: CAR_LIST,
...@@ -1117,6 +1402,11 @@ export default { ...@@ -1117,6 +1402,11 @@ export default {
relationList: RELATION_LIST, relationList: RELATION_LIST,
doctorSourceList: D_S_LIST, doctorSourceList: D_S_LIST,
followList: FOLLW_LIST, followList: FOLLW_LIST,
followStatusList: FOLLOW_STATUS_LIST,
medicineFollowStatusList: MEDICINE_FOLLOW_STATUS_LIST,
healingStatusList: HEALING_EFFECT_FOLLOW_STATUS,
healingResultList: HEALING_EFFECT_FOLLOW_RESULT,
checkFollowResultList: CHECK_FOLLOW_RESULT,
doctorList: [], doctorList: [],
rules: { rules: {
appointBeginTime: [ appointBeginTime: [
...@@ -1273,6 +1563,8 @@ export default { ...@@ -1273,6 +1563,8 @@ export default {
if (res.code == '000000') { if (res.code == '000000') {
this.formData = res.data; this.formData = res.data;
this.formData.price = this.priceFilter(this.formData.price); this.formData.price = this.priceFilter(this.formData.price);
this.formData.additionPrice = this.priceFilter(this.formData.additionPrice);
this.formData.orderTotalPrice = this.formData.price + this.formData.additionPrice;
this.formData.serviceFee = this.priceFilter( this.formData.serviceFee = this.priceFilter(
this.formData.serviceFee this.formData.serviceFee
); );
...@@ -1298,6 +1590,22 @@ export default { ...@@ -1298,6 +1590,22 @@ export default {
this.oldDiagnoseAdvice = this.formData.diagnoseAdvice; this.oldDiagnoseAdvice = this.formData.diagnoseAdvice;
this.formData.diagnoseAdvice = ''; this.formData.diagnoseAdvice = '';
} }
if (this.formData.tcmAdvice) {
this.oldTcmAdvice = this.formData.tcmAdvice;
this.formData.tcmAdvice = '';
}
if (this.formData.westernAdvice) {
this.oldWesternAdvice = this.formData.westernAdvice;
this.formData.westernAdvice = '';
}
if (this.formData.inspectionAdvice) {
this.oldInspectionAdvice = this.formData.inspectionAdvice;
this.formData.inspectionAdvice = '';
}
if (this.formData.lifeAdvice) {
this.oldLifeAdvice = this.formData.lifeAdvice;
this.formData.lifeAdvice = '';
}
if (!this.formData.sex) { if (!this.formData.sex) {
this.formData.sex = 1; this.formData.sex = 1;
} }
...@@ -1417,9 +1725,13 @@ export default { ...@@ -1417,9 +1725,13 @@ export default {
this.formData.birthday = new Date(this.formData.birthdayStr); this.formData.birthday = new Date(this.formData.birthdayStr);
// this.formData.birthday = this.formData.birthdayStr; // this.formData.birthday = this.formData.birthdayStr;
const params = JSON.parse(JSON.stringify(this.formData)); const params = JSON.parse(JSON.stringify(this.formData));
params.illnessImageUrls = this.$refs.imgComponent const newImageList = this.$refs.imgComponent
? [...this.$refs.imgComponent.setNewArr()] ? [...this.$refs.imgComponent.setNewArr()]
: []; : [];
const newVideoList = this.$refs.videoComponent
? [...this.$refs.videoComponent.setNewArr()]
: [];
params.illnessImageUrls = newImageList.concat(newVideoList);
params.illnessAudioUrls = this.$refs.musicComponent params.illnessAudioUrls = this.$refs.musicComponent
? [...this.$refs.musicComponent.setNewArr()] ? [...this.$refs.musicComponent.setNewArr()]
: []; : [];
...@@ -1428,6 +1740,18 @@ export default { ...@@ -1428,6 +1740,18 @@ export default {
if (!params.diagnoseAdvice) { if (!params.diagnoseAdvice) {
params.diagnoseAdvice = this.oldDiagnoseAdvice; params.diagnoseAdvice = this.oldDiagnoseAdvice;
} }
if (!params.tcmAdvice) {
params.tcmAdvice = this.oldTcmAdvice;
}
if (!params.westernAdvice) {
params.westernAdvice = this.oldWesternAdvice;
}
if (!params.inspectionAdvice) {
params.inspectionAdvice = this.oldInspectionAdvice;
}
if (!params.lifeAdvice) {
params.lifeAdvice = this.oldLifeAdvice;
}
this.loading = true; this.loading = true;
this.btnDisable = true; this.btnDisable = true;
diagnoseUpdate(params) diagnoseUpdate(params)
...@@ -1437,6 +1761,7 @@ export default { ...@@ -1437,6 +1761,7 @@ export default {
if (res.code == '000000') { if (res.code == '000000') {
this.$message.success('保存成功'); this.$message.success('保存成功');
this.$router.back(); this.$router.back();
window.location.reload();
} else { } else {
this.$message({ this.$message({
message: res.message, message: res.message,
...@@ -1474,7 +1799,6 @@ export default { ...@@ -1474,7 +1799,6 @@ export default {
margin-bottom: 30px; margin-bottom: 30px;
} }
.img-title { .img-title {
margin-top: 20px;
font-size: 14px; font-size: 14px;
color: #6d8bc7; color: #6d8bc7;
line-height: 40px; line-height: 40px;
...@@ -1497,6 +1821,27 @@ export default { ...@@ -1497,6 +1821,27 @@ export default {
.log-info-pagin { .log-info-pagin {
margin: 0 15px; margin: 0 15px;
} }
.vod {
display: flex;
flex-direction: row;
align-items: center;
&-txt {
width: 90px;
}
&-text {
width: 100%;
background: #ccc;
line-height: 20px;
-webkit-line-clamp: 5;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
white-space: normal;
}
}
} }
.btn-wrap { .btn-wrap {
padding: 40px 0 60px; padding: 40px 0 60px;
......
...@@ -117,21 +117,49 @@ ...@@ -117,21 +117,49 @@
> >
<span>该消息类型PC端暂不支持</span> <span>该消息类型PC端暂不支持</span>
</div> </div>
<!-- 安排接诊医生 -->
<div
v-if="item.showType === 13"
class="time-box"
>
<div class="physician-left">
{{ item.title }}
</div>
<div class="physician">
<div class="physician-right">
<div class="physician-right__top">
<span>{{ item.text.doctorName }}</span>
<span>{{ item.text.title }} {{ item.text.department }}</span>
</div>
<div class="physician-right__center">
{{ item.text.hospital }}
</div>
<div class="physician-right__center">
擅长:{{ item.text.goodAt }}
</div>
</div>
</div>
</div>
<!-- 语音消息 --> <!-- 语音消息 -->
<div <div
v-if="item.showType == 6" v-if="item.showType == 6"
class="audio-box" class="audio-box"
> >
<audio controls> <!-- <audio controls>
<source <source
:src="item.url" :src="item.url"
type="audio/mpeg" type="audio/mpeg"
> >
</audio> </audio> -->
<audio
controls
:src="item.url"
/>
</div> </div>
<!-- 问诊开始与病例模块 --> <!-- 问诊开始与病例模块 showType == 7-->
<!-- 患者病情 showType == 12-->
<div <div
v-if="item.showType == 7" v-if="item.showType == 7 || item.showType == 12"
class="diagnosis-box" class="diagnosis-box"
> >
<div class="title"> <div class="title">
...@@ -641,7 +669,15 @@ ...@@ -641,7 +669,15 @@
showType = 11; showType = 11;
title = content.title; title = content.title;
text = content.content; text = content.content;
}else { } else if(content.bizType === 29) { // 患者病情
showType = 12;
title = content.title;
text = JSON.parse(content.content);
} else if(content.bizType === 30) { // 接诊医生
showType = 13;
title = content.title;
text = JSON.parse(content.content);
} else {
showType = 5; showType = 5;
} }
} else if( msg.type.toLowerCase() == 'image' || msg.type.toLowerCase() == 'picture') { // 图片 } else if( msg.type.toLowerCase() == 'image' || msg.type.toLowerCase() == 'picture') { // 图片
......
...@@ -37,9 +37,10 @@ ...@@ -37,9 +37,10 @@
class="t-b" class="t-b"
> >
<el-select <el-select
v-model="searchParam.type" v-model="searchParam.typeList"
placeholder="请选择问诊类型" placeholder="请选择问诊类型"
style="width: 220px" style="width: 220px"
multiple
> >
<el-option <el-option
v-for="item of consultationTypeList" v-for="item of consultationTypeList"
...@@ -55,19 +56,6 @@ ...@@ -55,19 +56,6 @@
label="分诊科室" label="分诊科室"
class="t-b" class="t-b"
> >
<!-- <el-select
v-model="searchParam.triageDepartmentId"
placeholder="请选择科室"
style="width: 220px"
filterable
>
<el-option
v-for="item of depList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> -->
<el-cascader <el-cascader
ref="cascader" ref="cascader"
v-model="searchParam.triageDepartmentId" v-model="searchParam.triageDepartmentId"
...@@ -131,6 +119,27 @@ ...@@ -131,6 +119,27 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</div> </div>
<div>
<el-form-item
label="跟进运营"
class="t-b"
>
<el-select
v-model="searchParam.followOperatorId"
placeholder="请选择跟进运营"
clearable
filterable
style="width: 220px"
>
<el-option
v-for="item of allPersonnelList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</div>
</div> </div>
<div class="form-li"> <div class="form-li">
<div> <div>
...@@ -152,9 +161,10 @@ ...@@ -152,9 +161,10 @@
class="t-b" class="t-b"
> >
<el-select <el-select
v-model="searchParam.diagnoseType" v-model="searchParam.diagnoseTypeList"
placeholder="请选择预约类型" placeholder="请选择预约类型"
style="width: 220px" style="width: 220px"
multiple
> >
<el-option <el-option
v-for="item of tyleList" v-for="item of tyleList"
...@@ -222,6 +232,27 @@ ...@@ -222,6 +232,27 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</div> </div>
<div>
<el-form-item
label="跟进状态"
class="t-b"
>
<el-select
v-model="searchParam.followStatusList"
placeholder="请选择跟进状态"
clearable
multiple
style="width: 220px"
>
<el-option
v-for="item of followStatusLists"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
</div> </div>
<div class="form-li"> <div class="form-li">
<div> <div>
...@@ -300,12 +331,28 @@ ...@@ -300,12 +331,28 @@
<el-input <el-input
v-model.trim="searchParam.patientName" v-model.trim="searchParam.patientName"
clearable clearable
placeholder="仅可查询报告解读患者" placeholder="请输入"
style="width: 220px" style="width: 220px"
@change="patientNameChange" @change="patientNameChange"
/> />
</el-form-item> </el-form-item>
</div> </div>
<div>
<el-form-item
label="计划跟进时间"
class="t-b"
>
<el-date-picker
v-model="followDateTime"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 220px"
/>
</el-form-item>
</div>
</div> </div>
<div class="form-li"> <div class="form-li">
<div> <div>
...@@ -343,16 +390,6 @@ ...@@ -343,16 +390,6 @@
label="基层意向时间" label="基层意向时间"
class="t-b" class="t-b"
> >
<!-- <el-date-picker
v-model="assistantTime"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 220px"
:picker-options="pickerOptions1"
/> -->
<el-date-picker <el-date-picker
v-model="assistantTime" v-model="assistantTime"
type="daterange" type="daterange"
...@@ -370,10 +407,11 @@ ...@@ -370,10 +407,11 @@
class="t-b" class="t-b"
> >
<el-select <el-select
v-model="searchParam.consultRoad" v-model="searchParam.consultRoadList"
placeholder="请选择业务类型" placeholder="请选择业务类型"
clearable clearable
style="width: 220px" style="width: 220px"
multiple
> >
<el-option <el-option
v-for="item of orderBusinessList" v-for="item of orderBusinessList"
...@@ -384,6 +422,27 @@ ...@@ -384,6 +422,27 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</div> </div>
<div>
<el-form-item
label="问诊方式"
class="t-b"
>
<el-select
v-model="searchParam.diagnoseChannelList"
placeholder="请选择问诊方式"
clearable
multiple
style="width: 220px"
>
<el-option
v-for="item of newDiagnoseChannelList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</div>
</div> </div>
<div class="form-btn"> <div class="form-btn">
<div class="form-btn-li"> <div class="form-btn-li">
...@@ -539,6 +598,7 @@ ...@@ -539,6 +598,7 @@
:diagnosis-doctor-visible.sync="diagnosisDoctorVisible" :diagnosis-doctor-visible.sync="diagnosisDoctorVisible"
:diagnose-log-id="diagnoseLogId" :diagnose-log-id="diagnoseLogId"
:diagnose-type="diagnoseType" :diagnose-type="diagnoseType"
:diagnose-channel="diagnoseChannel"
:only-change-time="onlyChangeTime" :only-change-time="onlyChangeTime"
:doctor-id="doctorId" :doctor-id="doctorId"
:range-time-data="rangeTimeData" :range-time-data="rangeTimeData"
...@@ -610,6 +670,8 @@ import { ...@@ -610,6 +670,8 @@ import {
getCountQuery, getCountQuery,
getDepartments, getDepartments,
reMatchDoctor, reMatchDoctor,
personnelList,
getUserIdByDiagnoseLogId,
} from '@/api/diagnosis'; } from '@/api/diagnosis';
import { DIAGNOS_LIST_NEW } from '@/utils/GeneralData/diagnosis-list-new'; import { DIAGNOS_LIST_NEW } from '@/utils/GeneralData/diagnosis-list-new';
import { import {
...@@ -623,6 +685,8 @@ import { ...@@ -623,6 +685,8 @@ import {
SOURCE_LIST, SOURCE_LIST,
TRIAGE_TAB_LIST, TRIAGE_TAB_LIST,
TYPE_LIST, TYPE_LIST,
DIAGNOSE_CHANNEL,
FOLLOW_STATUS_LIST,
} from '@/utils/constants'; } from '@/utils/constants';
import { outbounNote } from '../../../api/diagnosis'; import { outbounNote } from '../../../api/diagnosis';
import { callAssistantDoctor, updateDiagnosis } from '../../../utils/diagnosis'; import { callAssistantDoctor, updateDiagnosis } from '../../../utils/diagnosis';
...@@ -671,17 +735,18 @@ export default { ...@@ -671,17 +735,18 @@ export default {
orderRangeTime: '', orderRangeTime: '',
completeRangeTime: '', completeRangeTime: '',
assistantTime: '', assistantTime: '',
followDateTime: '',
depList: [], depList: [],
tabrefresh: true, tabrefresh: true,
searchParam: { searchParam: {
id: '', id: '',
type: '', typeList: [],
operateName: '', operateName: '',
assistantVal: '', assistantVal: '',
receptionVal: '', receptionVal: '',
sort: null, sort: null,
triageDepartmentId: '', triageDepartmentId: '',
diagnoseType: '', // 预约问诊类型:1、音频 2、视频 3、图文 diagnoseTypeList: [], // 预约问诊类型:1、音频 2、视频 3、图文
createdTimeBegin: '', createdTimeBegin: '',
createdTimeEnd: '', createdTimeEnd: '',
operateTimeBegin: '', operateTimeBegin: '',
...@@ -692,6 +757,8 @@ export default { ...@@ -692,6 +757,8 @@ export default {
doneTimeEnd: '', doneTimeEnd: '',
assistantBeginTime: '', assistantBeginTime: '',
assistantEndTime: '', assistantEndTime: '',
followDateBegin: '',
followDateEnd: '',
pageSize: 15, pageSize: 15,
pageNo: 1, pageNo: 1,
menuType: 1, // 菜单类型:1、all 2、运营 3、待分诊 4、待接诊 5、外呼 menuType: 1, // 菜单类型:1、all 2、运营 3、待分诊 4、待接诊 5、外呼
...@@ -700,8 +767,11 @@ export default { ...@@ -700,8 +767,11 @@ export default {
refundRemark: '', refundRemark: '',
orderPlacer: '', orderPlacer: '',
matchingWay: null, matchingWay: null,
consultRoad: null, consultRoadList: [],
diagnoseChannelList: [],
patientName: null, patientName: null,
followOperatorId: '', // 运营id
followStatusList: [], // 跟进状态
}, },
noteList: [], noteList: [],
alltabslist: [], alltabslist: [],
...@@ -710,6 +780,7 @@ export default { ...@@ -710,6 +780,7 @@ export default {
sourceList: SOURCE_LIST, sourceList: SOURCE_LIST,
priceList: ORDER_PRICE, priceList: ORDER_PRICE,
matchingWayList: MATCHING_LIST, matchingWayList: MATCHING_LIST,
followStatusLists: FOLLOW_STATUS_LIST,
orderBusinessList: [ orderBusinessList: [
{ {
label: '中医实践', label: '中医实践',
...@@ -724,6 +795,7 @@ export default { ...@@ -724,6 +795,7 @@ export default {
value: 2, value: 2,
}, },
], ],
newDiagnoseChannelList: DIAGNOSE_CHANNEL,
nextPersonList: [ nextPersonList: [
{ {
label: '基层医生', label: '基层医生',
...@@ -761,6 +833,7 @@ export default { ...@@ -761,6 +833,7 @@ export default {
dialogFormVisible: false, dialogFormVisible: false,
bizType: 0, bizType: 0,
diagnoseType: 0, diagnoseType: 0,
diagnoseChannel: 0,
consultRoad: '', consultRoad: '',
doctorId: 0, doctorId: 0,
operateUserID: '', operateUserID: '',
...@@ -784,12 +857,9 @@ export default { ...@@ -784,12 +857,9 @@ export default {
triageDepartment: '', triageDepartment: '',
departmentId: '', departmentId: '',
allTilst: [], allTilst: [],
allPersonnelList: [],
allList: {}, allList: {},
consultationTypeList: [ consultationTypeList: [
{
label: '全部',
value: '',
},
{ {
label: '名医问诊', label: '名医问诊',
value: 2, value: 2,
...@@ -826,6 +896,7 @@ export default { ...@@ -826,6 +896,7 @@ export default {
this.setTableHeight(); this.setTableHeight();
this.getOutboundNote(); this.getOutboundNote();
this.departmentAll(); this.departmentAll();
this.personnelList();
}, },
destroyed() { destroyed() {
clearInterval(this.timer); clearInterval(this.timer);
...@@ -839,6 +910,13 @@ export default { ...@@ -839,6 +910,13 @@ export default {
} }
}); });
}, },
personnelList() {
personnelList().then((res) => {
if (res.code == '000000') {
this.allPersonnelList = res.data || {};
}
});
},
showListALL() { showListALL() {
const arr = []; const arr = [];
const { departmentMapList, parentDepartmentList } = this.allList; const { departmentMapList, parentDepartmentList } = this.allList;
...@@ -1087,12 +1165,14 @@ export default { ...@@ -1087,12 +1165,14 @@ export default {
orderRangeTime, orderRangeTime,
completeRangeTime, completeRangeTime,
assistantTime, assistantTime,
followDateTime,
} = this; } = this;
this.setTime('createdTimeBegin', 'createdTimeEnd', createRangeTime); this.setTime('createdTimeBegin', 'createdTimeEnd', createRangeTime);
this.setTime('cancelTimeBegin', 'cancelTimeEnd', cancelRangeTime); this.setTime('cancelTimeBegin', 'cancelTimeEnd', cancelRangeTime);
this.setTime('appointBeginTime', 'appointEndTime', orderRangeTime); this.setTime('appointBeginTime', 'appointEndTime', orderRangeTime);
this.setTime('doneTimeBegin', 'doneTimeEnd', completeRangeTime); this.setTime('doneTimeBegin', 'doneTimeEnd', completeRangeTime);
this.setTime('assistantBeginTime', 'assistantEndTime', assistantTime); this.setTime('assistantBeginTime', 'assistantEndTime', assistantTime);
this.setTime('followDateBegin', 'followDateEnd', followDateTime);
}, },
/** /**
* btime开始时间 * btime开始时间
...@@ -1129,6 +1209,24 @@ export default { ...@@ -1129,6 +1209,24 @@ export default {
data.order == 'descending' data.order == 'descending'
) { ) {
this.searchParam.sort = 4; this.searchParam.sort = 4;
} else if (data.prop == 'assistantTime') {
if (data.order == 'ascending') {
this.searchParam.sort = 5;
} else {
this.searchParam.sort = 6;
}
} else if (data.prop == 'receptionTime') {
if (data.order == 'ascending') {
this.searchParam.sort = 7;
} else {
this.searchParam.sort = 8;
}
} else if (data.prop == 'followDateTime') {
if (data.order == 'ascending') {
this.searchParam.sort = 9;
} else {
this.searchParam.sort = 10;
}
} else { } else {
this.searchParam.sort = null; this.searchParam.sort = null;
} }
...@@ -1175,9 +1273,10 @@ export default { ...@@ -1175,9 +1273,10 @@ export default {
this.orderRangeTime = ''; this.orderRangeTime = '';
this.completeRangeTime = ''; this.completeRangeTime = '';
this.assistantTime = ''; this.assistantTime = '';
this.followDateTime = '';
this.searchParam = Object.assign(this.searchParam, { this.searchParam = Object.assign(this.searchParam, {
id: '', id: '',
type: '', typeList: [],
operateName: '', operateName: '',
assistantVal: '', assistantVal: '',
receptionVal: '', receptionVal: '',
...@@ -1186,7 +1285,7 @@ export default { ...@@ -1186,7 +1285,7 @@ export default {
refundRemark: '', refundRemark: '',
orderPlacer: '', orderPlacer: '',
matchingWay: null, matchingWay: null,
diagnoseType: '', // 预约问诊类型:1、音频 2、视频 3、图文 diagnoseTypeList: [], // 预约问诊类型:1、音频 2、视频 3、图文
createdTimeBegin: '', createdTimeBegin: '',
createdTimeEnd: '', createdTimeEnd: '',
operateTimeBegin: '', operateTimeBegin: '',
...@@ -1198,10 +1297,16 @@ export default { ...@@ -1198,10 +1297,16 @@ export default {
doneTimeEnd: '', doneTimeEnd: '',
assistantBeginTime: '', assistantBeginTime: '',
assistantEndTime: '', assistantEndTime: '',
followDateBegin: '',
followDateEnd: '',
inNewTimeObj: {}, inNewTimeObj: {},
consultRoad: null, consultRoadList: [],
patientName: null, patientName: null,
diagnoseChannelList: [],
followStatusList: [],
followOperatorId: '',
}); });
this.getsearch();
}, },
// 导出 // 导出
download() { download() {
...@@ -1326,16 +1431,28 @@ export default { ...@@ -1326,16 +1431,28 @@ export default {
}, },
// 发送消息 // 发送消息
sendMessage(row) { sendMessage(row) {
// this.$router.push({ console.log('sendMessage', row);
// path: '/diagnosis-im',
// query: { tid: row.imTeamId },
// });
const target = this.$refs.target; const target = this.$refs.target;
const { origin } = window.location; const { origin } = window.location;
const u = `${origin}/consultation/pica-admin-consultation/diagnosis-im?tid=${row.imTeamId}`; let url = `${origin}/consultation/pica-admin-consultation/diagnosis-im?tid=${row.imTeamId}`;
target.setAttribute('href', u); // 小程序问诊跳新的项目,本地跳转会不生效。 需要启动该项目 http://192.168.110.53/com.pica.cloud.education.frontend/pica-turborepo/tree/release/apps/pica-chat
if (row.diagnoseChannel === 3) {
getUserIdByDiagnoseLogId(row.diagnoseLogId)
.then((res) => {
if (res.code === '000000') {
const { userId } = res.data;
url = `${origin}/new-pica-consultation?userId=${userId}`;
target.setAttribute('href', url);
target.click(); target.click();
}
})
.catch((err) => {
console.log('err', err);
});
} else {
target.setAttribute('href', url);
target.click();
}
}, },
// 加入问诊 // 加入问诊
...@@ -1404,6 +1521,7 @@ export default { ...@@ -1404,6 +1521,7 @@ export default {
this.diagnoseLogId = row.diagnoseLogId; this.diagnoseLogId = row.diagnoseLogId;
this.diagnoseType = row.diagnoseType; this.diagnoseType = row.diagnoseType;
this.consultRoad = row.consultRoad; this.consultRoad = row.consultRoad;
this.diagnoseChannel = row.diagnoseChannel;
if (row.doctorId == 0) { if (row.doctorId == 0) {
this.doctorId = ''; this.doctorId = '';
} else { } else {
...@@ -1416,12 +1534,21 @@ export default { ...@@ -1416,12 +1534,21 @@ export default {
}, },
// 重新匹配医生 // 重新匹配医生
reMatchDot(row, type) { reMatchDot(row, type) {
if (row.diagnoseChannel === 3) {
this.rematchingOptions = [
'接诊医生爽约',
'上级医生日程改变,提前取消',
'操作失误,重新匹配医生',
];
} else {
this.rematchingOptions = [ this.rematchingOptions = [
'接诊医生爽约', '接诊医生爽约',
'上级医生日程改变,提前取消', '上级医生日程改变,提前取消',
'操作失误,重新匹配医生', '操作失误,重新匹配医生',
'助诊医生爽约', '助诊医生爽约',
'科室不对',
]; ];
}
// this.rematchingOptions= // this.rematchingOptions=
// this.options= // this.options=
this.rematchingVisible = true; this.rematchingVisible = true;
......
...@@ -342,8 +342,7 @@ ...@@ -342,8 +342,7 @@
} }
} }
} }
.msg-content::-webkit-scrollbar .msg-content::-webkit-scrollbar {
{
width: 0px; width: 0px;
height: 0px; height: 0px;
background-color: #fff; background-color: #fff;
...@@ -423,6 +422,37 @@ ...@@ -423,6 +422,37 @@
-o-animation: rotate 3s linear infinite; -o-animation: rotate 3s linear infinite;
animation: rotate 3s linear infinite; animation: rotate 3s linear infinite;
} }
.physician {
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: flex-start;
&-left {
font-size: 14px;
font-weight: 600;
padding-bottom: 10px;
}
&-right {
&__top {
span {
&:nth-child(1) {
font-size: 14px;
}
&:nth-child(2) {
font-size: 12px;
}
}
}
&__center {
color: #999999;
}
}
}
@-webkit-keyframes rotate{from{-webkit-transform: rotate(0deg)} @-webkit-keyframes rotate{from{-webkit-transform: rotate(0deg)}
to{-webkit-transform: rotate(360deg)} to{-webkit-transform: rotate(360deg)}
} }
......
...@@ -70,7 +70,7 @@ module.exports = { ...@@ -70,7 +70,7 @@ module.exports = {
port: 8080, port: 8080,
proxy: { proxy: {
'/proxy': { '/proxy': {
target: 'https://test1-sc.yunqueyi.com/', target: 'https://uat-sc.yunqueyi.com/',
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
secure: true, secure: true,
......
因为 它太大了无法显示 源差异 。您可以改为 查看blob
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册