提交 6709cc87 编写于 作者: guangjun.yang's avatar guangjun.yang

Merge branch 'dev-20200510' into dev-consultation-0506-all

* dev-20200510:
  优化
  优化逻辑
  增加跟进状态
  优化逻辑
  增加编辑等功能

# Conflicts:
#	src/router/router.js
#	src/views/IM/diagnosis-admin/diagnosis-list.vue
......@@ -1270,7 +1270,6 @@
"resolved": "http://192.168.110.93:4873/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"optional": true,
"requires": {
"hoek": "2.x.x"
}
......@@ -2735,8 +2734,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"aproba": {
"version": "1.2.0",
......@@ -2757,14 +2755,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
......@@ -2779,20 +2775,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
......@@ -2909,8 +2902,7 @@
"inherits": {
"version": "2.0.4",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
......@@ -2922,7 +2914,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
......@@ -2937,7 +2928,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
......@@ -2945,14 +2935,12 @@
"minimist": {
"version": "1.2.5",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.9.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
......@@ -2971,7 +2959,6 @@
"version": "0.5.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "^1.2.5"
}
......@@ -3033,8 +3020,7 @@
"npm-normalize-package-bin": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"npm-packlist": {
"version": "1.4.8",
......@@ -3062,8 +3048,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
......@@ -3075,7 +3060,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
......@@ -3153,8 +3137,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
......@@ -3190,7 +3173,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
......@@ -3210,7 +3192,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
......@@ -3254,14 +3235,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"yallist": {
"version": "3.1.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
}
}
},
......@@ -3622,8 +3601,7 @@
"version": "2.16.3",
"resolved": "http://192.168.110.93:4873/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
"dev": true,
"optional": true
"dev": true
},
"home-or-tmp": {
"version": "2.0.0",
......
<template>
<div>
<el-upload
:action="actionurl"
:headers="headers"
:disabled="isDisable"
list-type="picture-card"
:before-upload="fileUpload"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="sucess"
:limit="15"
:on-exceed="handleExceed"
:file-list="imgArr"
:accept="accept"
>
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="" />
</el-dialog>
</div>
</template>
<script>
import { getBaseUrl } from "@/utils/index";
export default {
props: {
isDisable: {
type: Boolean,
default: false
},
imgList: {
type: Array,
default: []
}
},
data() {
return {
dialogImageUrl: "",
dialogVisible: false,
imgArr: [
],
headers: {
token: localStorage.getItem("storageToken"),
},
actionurl: "#",
accept: '.png,.jpeg'
};
},
created() {
this.actionurl = getBaseUrl("/diagnose/illness/file")
},
watch:{
imgList(newv, oldv) {
this.imgArr = newv;
}
},
methods: {
handleRemove(file, fileList) {
this.imgArr = fileList;
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
fileUpload(file) {
const isJPG = file.type === "image/jpeg" || file.type === "image/img";
if (!isJPG) {
this.$message.error("请上传只能是 JPG或PNG 格式!");
return;
}
// const formData = new FormData();
// formData.append('file', file);
// fetch({
// url: getBaseUrl("/diagnose/illness/file"),
// method: "post",
// data: formData,
// fileHeader: true,
// withCredentials: true,
// })
// .then((res) => {
// this.imgArr.push({
// url: `${res.data}`,
// });
// })
// .catch(() => {});
},
sucess(response, file, fileList) {
this.imgArr = fileList;
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 15 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
setNewArr() {
let newArr = []
if (this.imgArr && this.imgArr.length) {
this.imgArr.forEach(item => {
newArr.push(item.response.data)
});
}
return newArr
}
},
};
</script>
<style>
</style>
\ No newline at end of file
<template>
<div class="music-wrap" v-loading="loading">
<el-upload
class="upload-demo"
:disabled="isDisable"
:before-upload="beforeMusicUpload"
:action="actionurl"
:headers="headers"
:on-remove="handleRemove"
:on-success="sucess"
:file-list="musicArr"
:on-error="errfn"
:before-remove="beforeRemove"
:accept="accept"
>
<el-button size="small" type="primary">点击上传</el-button>
<p slot="tip" class="el-upload__tip">音频格式:mp3</p>
<ul slot="tip" class="el-upload__tip music-box">
<audio
v-for="(item) of musicArr"
:key="item.uid"
class="audio"
controls
:src='musicUrl(item)'
ref="audioWrap"
>您的浏览器不支持mp3播放</audio>
</ul>
</el-upload>
</div>
</template>
<script>
import fetch from "@/utils/fetch";
import { getBaseUrl } from "@/utils/index";
export default {
props: {
isDisable: {
type: Boolean,
default: false
},
musicList: {
type: Array,
default: []
}
},
data() {
return {
dialogImageUrl: "",
dialogVisible: false,
musicArr: [],
actionUrl: '',
headers: {
token: localStorage.getItem("storageToken"),
},
loading: false,
accept: '.mp3,.mpeg'
};
},
created() {
this.actionurl = getBaseUrl("/diagnose/illness/audio/upload");
},
watch:{
musicList(newv, oldv) {
this.musicArr = newv;
}
},
computed: {
},
methods: {
musicUrl(item) {
if (item.url) {
return item.url
}
return item.response.data.domainPath + item.response.data.path
},
beforeRemove() {
this.loading = true
},
handleRemove(file, fileList) {
this.loading = true
this.musicArr = fileList;
let time = setTimeout(() => {
this.loading = false
clearTimeout(time)
},1000)
},
sucess(response, file, fileList) {
this.musicArr = fileList;
this.loading = false
},
errfn(response, file, fileList) {
this.loading = false
},
// 上传mp3
beforeMusicUpload(file) {
this.loading = true
if (file.type !== 'audio/mp3' && file.type !== 'audio/mpeg') {
vm.$message.error("请上传MP3格式文件");
this.loading = false
return;
}
// const formData = new FormData()
// formData.append('file', file)
// fetch({
// url: getBaseUrl("/diagnose/illness/audio/upload"),
// method: "post",
// data: formData,
// fileHeader: true,
// withCredentials: true,
// })
// .then((res) => {
// this.imgArr.push({
// url: `${res.data}`,
// });
// })
// .catch(() => {});
},
setNewArr() {
let newArr = []
if (this.musicArr && this.musicArr.length) {
this.musicArr.forEach(item => {
if (item.url) {
newArr.push(item.url)
} else if (item.response){
newArr.push(item.response.data.domainPath + item.response.data.path)
}
});
}
return newArr
},
},
};
</script>
<style lang="scss">
.music-wrap {
position: relative;
.wrap {
position: absolute;
left: 90px;
top: 10px;
bottom: 0;
right: 0;
background: #000;
opacity: .3;
}
.audio {
display: block;
height: 40px;
margin-top: 8px;
}
.music-box {
display: inline-block;
overflow: hidden;
}
.el-upload-list__item {
line-height: 40px;
// margin: 20px 0;
}
.el-icon-close {
top: 15px;
}
.el-upload-list {
display: inline-block;
}
}
</style>
\ No newline at end of file
<template>
<div class="table">
<el-table
class="search-table"
:data="tData"
v-loading="loading"
style="width: 100%"
>
<el-table-column prop="diagnoseLogId" label="ID" min-width="100" align="left"></el-table-column>
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="diagnoseTypeStr" label="预约类型" min-width="150" align="left"></el-table-column>
<el-table-column prop="statusStr" label="状态" min-width="80" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="patientName" label="患者姓名" min-width="150" align="left"></el-table-column>
<el-table-column prop="idCard" label="证件号" min-width="170" align="left"></el-table-column>
<el-table-column prop="patientMobilePhone" label="患者电话" min-width="100" align="left"></el-table-column>
<el-table-column prop="userName" label="助诊医生" min-width="150" align="left"></el-table-column>
<el-table-column prop="userMobile" label="助诊电话" min-width="170" align="left"></el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="150" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="150" align="left"></el-table-column>
<el-table-column prop="userMobile" label="预约时间" min-width="200" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="diagnoseStageStr" label="初/复诊" min-width="150" align="left"></el-table-column>
<el-table-column prop="determineFlagStr" label="是否确诊" min-width="150" align="left"></el-table-column>
<el-table-column prop="diagnoseDisease" label="确诊疾病" min-width="150" align="left"></el-table-column>
<el-table-column prop="illnessDetail" label="病情描述" min-width="200" align="left" show-overflow-tooltip></el-table-column>
<el-table-column prop="diagnoseAdvice" label="诊断建议" min-width="150" align="left" show-overflow-tooltip></el-table-column>
<el-table-column prop="followFlagStr" label="是否跟进" min-width="150" align="left"></el-table-column>
<el-table-column prop="drugFollow" label="药品跟进" min-width="200" align="left" show-overflow-tooltip></el-table-column>
<el-table-column prop="checkFollow" label="检查跟进" min-width="200" align="left" show-overflow-tooltip></el-table-column>
<el-table-column prop="otherFollow" label="其他跟进事项" min-width="200" align="left" show-overflow-tooltip></el-table-column>
<el-table-column prop="createTypeStr" label="创建方式" min-width="150" align="left"></el-table-column>
<el-table-column prop="appointSourceStr" label="预约来源" min-width="150" align="left"></el-table-column>
<el-table-column prop="createdTime" label="创建时间" min-width="150" align="left"></el-table-column>
<el-table-column prop="operateTime" label="匹配时间" min-width="150" align="left"></el-table-column>
<el-table-column prop="doneTime" label="完成时间" min-width="150" align="left"></el-table-column>
<el-table-column prop="price" label="问诊价格" min-width="150" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="payTypeStr" label="支付方式" min-width="150" align="left"></el-table-column>
<el-table-column prop="sexStr" label="性别" min-width="150" align="left"></el-table-column>
<el-table-column prop="age" label="年龄" min-width="150" align="left"></el-table-column>
<el-table-column prop="idCardTypeStr" label="证件类型" min-width="150" align="left"></el-table-column>
<el-table-column prop="userTitle" label="助诊医生职称" min-width="150" align="left"></el-table-column>
<el-table-column prop="userHospital" label="助诊医生所在机构" min-width="150" align="left"></el-table-column>
<el-table-column prop="userDepartment" label="助诊医生所在科室" min-width="150" align="left"></el-table-column>
<el-table-column prop="patientRelationStr" label="与患者关系" min-width="150" align="left"></el-table-column>
<el-table-column prop="doctorTitle" label="接诊医生职称" min-width="150" align="left"></el-table-column>
<el-table-column prop="doctorHospital" label="接诊医生所在机构" min-width="150" align="left"></el-table-column>
<el-table-column prop="doctorDepartment" label="接诊医生所在科室" min-width="150" align="left"></el-table-column>
<el-table-column prop="doctorSourceStr" label="接诊医生来源" min-width="150" align="left"></el-table-column>
<el-table-column prop="serviceFeeStr" label="接诊医生服务费" min-width="150" align="left"></el-table-column>
<el-table-column prop="crrsName" label="招募人" min-width="150" align="left"></el-table-column>
<el-table-column prop="remark" label="备注" min-width="150" align="left" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="200">
<template slot-scope="scope">
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
<div v-if="!scope.row.operateUserID">
<el-button v-if="scope.row.status != 4" type="primary" size="small" @click="timeHandle(scope.row)" style="margin-top: 10px;">修改时间</el-button>
<el-button v-if="scope.row.status == 3" type="primary" size="small" @click="endDiagnosis(scope.row)" style="margin-top: 10px;">结束</el-button>
</div>
<div v-if="!scope.row.operateUserID">
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 1" type="primary" size="small" @click="callAll(scope.row)" style="margin-top: 10px;">呼叫双方</el-button>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 2" type="primary" size="small" @click="jionCommunicate(scope.row)" style="margin-top: 10px;">加入问诊</el-button>
<el-button type="primary" size="small" @click="sendMessage(scope.row)" style="margin-top: 10px;" v-if="!((scope.row.status==2 || scope.row.status==4) && scope.row.createType == 2)">发送消息</el-button>
</div>
<div v-if="scope.row.operateUserID">
<el-button type="primary" size="small" @click="selectBtn(scope.row)">匹配</el-button>
</div>
<div>
<el-button type="primary" size="small" style="margin-top: 10px;" @click="goEditor(scope.row,1)">编辑</el-button>
<el-button type="primary" size="small" style="margin-top: 10px;" @click="goEditor(scope.row,2)">预约详情</el-button>
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
</div>
</template>
<script>
export default {
props: {
tData: {
type: Array,
default: []
},
pageNo: {
type: Number,
default: 1
},
pageSize: {
type: Number,
default: 20
},
totalRows: {
type: Number,
default: 0
},
loading : {
type: Boolean,
default: false
}
},
data() {
return {
};
},
methods: {
timeHandle(row) {
this.$emit('timeHandle',row)
},
endDiagnosis(row) {
this.$emit('endDiagnosis',row)
},
callAll(row) {
this.$emit('callAll',row)
},
jionCommunicate(row) {
this.$emit('jionCommunicate',row)
},
sendMessage(row) {
this.$emit('sendMessage',row)
},
selectBtn(row) {
this.$emit('selectBtn',row)
},
goEditor(row,flag) {
this.$emit('goEditor',row,flag)
},
handleSizeChange(value) {
this.$emit('handleSizeChange',value)
},
handleCurrentChange(value) {
this.$emit('handleCurrentChange',value)
}
},
};
</script>
<style>
</style>
\ No newline at end of file
......@@ -5,6 +5,8 @@ const diagnosisList = r => require.ensure([], () => r(require('../views/IM/diagn
const diagnosisIm = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/diagnosis-im.vue')), 'diagnosisIm')
const diagnosisLive = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/diagnosis-live.vue')), 'diagnosisLive')
const serviceList = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/service-list.vue')), 'serviceList')
const diagnosisEditor = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/diagnosis-editor.vue')), 'diagnosisEditor')
const diagnosisListLod = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/diagnosis-list-old.vue')), 'diagnosisListLod')
export default [{
path: '/',
......@@ -13,18 +15,25 @@ export default [{
{
path: '',
redirect: '/diagnosis-list'
},{
}, {
path: '/diagnosis-list',
component: diagnosisList
},{
}, {
path: '/diagnosis-im',
component: diagnosisIm
},{
}, {
path: '/diagnosis-live',
component: diagnosisLive
},{
}, {
path: '/service-List',
component: serviceList
}
]
}
}, {
path: '/diagnosis-editor',
component: diagnosisEditor
}, {
path: '/diagnosis-list-old',
component: diagnosisListLod
}
]
}]
......@@ -3,59 +3,199 @@
*
*/
// 分页大小
export const PAGE_SIZE = 10
//预约类型list
export const TYPE_LIST = [
{
label: '语音问诊',
value: 1
},
{
label: '视频问诊',
value: 2
},
{
label: '图文问诊',
value: 3
}
]
// 支付方式
export const PAY_LIST = [
{
label: '代付',
value: 1
},
{
label: '扫码支付',
value: 2
},
{
label: '分享支付',
value: 3
}
]
// 订单来源
export const SOURCE_LIST = [
{
label: '铁军反馈',
value: 1
},
{
label: '主动联系',
value: 2
},
{
label: '问卷收集',
value: 3
},
{
label: '微信群反馈',
value: 4
},
{
label: '话题讨论与回复',
value: 5
}
]
// 问卷--模板下载
export const QUESTION_UPLOAD_TEMPLATE = 'https://files.yunqueyi.com/discuss/question/templet/questionTemplet1010.xlsx'
// 订单状态
export const STATUS_LIST = [
{
label: '初始状态(未支付)',
value: 1
},
{
label: '待问诊(支付成功待完善)',
value: 2
},
{
label: '问诊中(已完善)',
value: 3
},
{
label: '已问诊',
value: 4
}
]
/* 是否使用Mock数据 */
export const IS_MOCK_DATAS = true
//证件类型
export const CAR_LIST = [
{
label: '居民身份证',
value: 1
}
// {
// label: '护照',
// value: 2
// },
// {
// label: '港澳通行证',
// value: 3
// }
]
// 通用状态 全部/正常/停用
export const COMMON_STATUS_OPTIONS = [
// 性别
export const SEX_LIST = [
{
value: '',
label: '启用状态'
}, {
value: 0,
label: '正常'
}, {
value: 1,
label: '停用'
label: '男',
value: 1
},
{
label: '女',
value: 2
}
]
// 识别状态 全部/未标记/正常/误识
export const RECORD_STATUS_OPTIONS = [
// 与患者关系
export const RELATION_LIST = [
{
label: '自己',
value: 1
},
{
value: '',
label: '标记状态'
}, {
value: '0',
label: '未标记'
}, {
value: '1',
label: '正常'
}, {
value: '2',
label: '误识'
label: '患者',
value: 2
},
{
label: '家属',
value: 3
},
{
label: '朋友',
value: 4
}
]
// 用户类型 全部/普通用户/VIP/黑名单
export const USER_TYPE_OPTIONS = [
// 医生来源
export const D_S_LIST = [
{
label: '京东',
value: 1
},
{
value: '',
label: '用户类型'
}, {
value: 1,
label: '普通用户'
}, {
value: 2,
label: 'VIP'
}, {
value: 3,
label: '黑名单'
label: '同事推荐',
value: 2
},
{
label: '云鹊医平台',
value: 3
}
]
// 是否跟进
export const IS_FLLOW = [
{
label: '是',
value: 1
},
{
label: '否',
value: 2
},
]
// 创建订单方式
export const CREATE_TYPE = [
{
label: '系统创建',
value: 1
},
{
label: '手动创建',
value: 2
},
]
// 是否匹配
export const OPERATE_LIST = [
{
label: '已分配',
value: 1
},
{
label: '未分配',
value: 2
},
]
// 跟进状态
export const FOLLW_LIST = [
{
label: '待跟进',
value: 1
},
{
label: '跟进中(协调资源)',
value: 2
},
{
label: '已完成(跟进结束',
value: 3
},
{
label: '长期跟进',
value: 4
},
]
\ No newline at end of file
......@@ -15,6 +15,11 @@ service.interceptors.request.use(config => {
config.headers['sysCode'] = 26
config.headers['token'] = localStorage.getItem('storageToken')
config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
Object.assign(config.headers, config.changeHeader)
if (config.fileHeader) {
config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
}
// if (config.data && config.data.setEntry) {
// config.headers['sysCode'] = config.data.sysCode || 10
// if(config.data.token){
......@@ -23,6 +28,7 @@ service.interceptors.request.use(config => {
// config.headers['deviceInfo'] = JSON.stringify({ "app_channel": "", "app_mac": "", "app_uuid": "", "app_version": "", "device_brand": "", "device_ip": "", "device_model": "", "device_net": "", "device_ops": "", "resolution_wh": "", "system_level": "", "device_type": '10' })
// }
return config
}, error => {
Promise.reject(error)
......
......@@ -162,4 +162,20 @@ export function getPhomeDemain() {
return getConfigByEnvType('phomeDemain')
}
// 根据身份证获取生日
export function getBirth(idCard) {
let birthday = ""
if (idCard != null && idCard != "") {
if (idCard.length == 15) {
birthday = "19" + idCard.slice(6, 12);
} else if (idCard.length == 18) {
birthday = idCard.slice(6, 14);
}
birthday = birthday.replace(/(.{4})(.{2})/, "$1-$2-");
//通过正则表达式来指定输出格式为:1990-01-01
}
console.log('=============birthday=======================');
console.log(birthday);
console.log('====================================');
return birthday;
}
<template>
<div class="diagnosis-list-content">
<div class="component-content screenSet" id="screenSet">
<div class="title">编辑</div>
<el-form ref="form" :model="formData" label-width="130px" :rules="rules" v-loading='loading'>
<h1>预约单信息</h1>
<el-form-item label="预约类型">
<el-select v-model="formData.diagnoseType" placeholder="请选择预约类型" disabled class="set-width">
<el-option v-for="item of tyleList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="预约来源" disabled>
<el-select v-model="formData.appointSource" placeholder="请选择预约来源" disabled class="set-width">
<el-option v-for="item of sourceList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
disabled
class="set-width"
type="datetime"
placeholder="创建时间"
v-model="formData.createdTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="匹配时间" >
<el-date-picker
disabled
class="set-width"
type="datetime"
placeholder="匹配时间"
v-model="formData.operateTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="完成时间" >
<el-date-picker
disabled
class="set-width"
type="datetime"
placeholder="匹配时间"
v-model="formData.doneTime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
>
</el-date-picker>
</el-form-item>
<el-form-item label="问诊价格" prop="price">
<el-input v-model="formData.price" placeholder="请输入问诊价格" disabled class="set-width"></el-input> (单位分)
</el-form-item>
<el-form-item label="支付方式">
<el-select v-model="formData.payType" placeholder="请选择支付方式" disabled class="set-width">
<el-option v-for="item of payList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="招募人">
<el-input v-model="formData.crrsName" placeholder="请输入招募人" disabled class="set-width"></el-input>
</el-form-item>
<h1>预约信息</h1>
<el-form-item label="当前状态">
<el-select v-model="formData.status" placeholder="请选择状态" disabled class="set-width">
<el-option v-for="item of statusList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="运营人员">
<el-input v-model="formData.operateUserName" placeholder="请输入患者姓名" disabled class="set-width"></el-input>
</el-form-item>
<el-form-item label="预约时间" prop="appointBeginTime" >
<el-date-picker
:disabled="inquiryStatus == 4 || editorType== 2"
type="datetime"
placeholder="开始时间"
v-model="formData.appointBeginTime"
style="width: 200px;"
:picker-options="endDateOpt"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
@change="continueBeginChange"
>
</el-date-picker>
<span>-</span>
<el-date-picker
:disabled="inquiryStatus == 4 || editorType== 2"
type="datetime"
placeholder="结束时间"
v-model="formData.appointEndTime"
style="width: 200px;"
format="yyyy-MM-dd HH:mm:ss"
:picker-options="endDateOpt1"
value-format="yyyy-MM-dd HH:mm:ss"
@change="continueEndChange"
>
</el-date-picker>
</el-form-item>
<h1>患者信息</h1>
<el-form-item label="患者姓名" prop="patientName" >
<el-input v-model="formData.patientName" placeholder="请输入患者姓名" class="set-width" :disabled="noable || editorType== 2" minlength='2' maxlength="20"></el-input>
</el-form-item>
<el-form-item label="证件类型" prop="idCardType">
<el-select v-model="formData.idCardType" placeholder="请选择证件类型" class="set-width" :disabled="noable || editorType== 2" @change="blurFn">
<el-option v-for="item of carList" :key="item.value" :label="item.label" :value="item.value" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="证件号" prop="idCard" >
<el-input v-model="formData.idCard" placeholder="请输入证件号" class="set-width" :disabled="noable || editorType== 2" maxlength="18" @blur="blurFn"></el-input>
</el-form-item>
<el-form-item label="出生日期" prop="birthday" >
<el-date-picker
class="set-width"
:disabled="noable || birthDisable || editorType== 2"
type="date"
placeholder="出生日期"
v-model="formData.birthday"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="性别" prop="sex" required>
<el-select v-model="formData.sex" placeholder="请选择性别" class="set-width" :disabled="noable || editorType== 2">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="患者电话" prop="patientMobilePhone" required >
<el-input v-model="formData.patientMobilePhone" placeholder="请输入手机号" class="set-width" :disabled="noable || editorType== 2" maxlength="11"></el-input>
</el-form-item>
<h1>助诊信息</h1>
<el-form-item label="助诊医生" prop="helpDoctor">
<el-input v-model="formData.helpDoctor" placeholder="请选择助诊医生" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.helpDoctor" placeholder="请选择助诊医生" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="助诊医生职称" >
<el-input v-model="formData.userTitle" placeholder="请选择职称" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.userTitle" placeholder="请选择职称" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="助诊医生所在机构" >
<el-input v-model="formData.userHospital" placeholder="请选择机构" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.userHospital" placeholder="请选择机构" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="助诊医生所在科室" >
<el-input v-model="formData.userDepartment" placeholder="请选择科室" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.userDepartment" placeholder="请选择科室" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="助诊电话">
<el-input v-model="formData.userMobile" placeholder="请输入助诊医生手机号" disabled class="set-width"></el-input>
</el-form-item>
<el-form-item label="与患者关系" >
<el-select v-model="formData.patientRelation" placeholder="请选择与患者关系" class="set-width" :disabled="editorType== 2">
<el-option v-for="item of relationList" :key="item.value" :label="item.label" :value="item.value" ></el-option>
</el-select>
</el-form-item>
<h1>接诊信息</h1>
<el-form-item label="接诊医生" prop="receiveDoctor" required>
<el-input v-model="formData.receiveDoctor" placeholder="请选择接诊医生" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.receiveDoctor" placeholder="请选择接诊医生" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="接诊医生职称" >
<el-input v-model="formData.doctorTitle" placeholder="请选择职称" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.doctorTitle" placeholder="请选择职称" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="接诊医生所在机构" >
<el-input v-model="formData.doctorHospital" placeholder="请选择机构" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.doctorHospital" placeholder="请选择机构" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="接诊医生所在科室" >
<el-input v-model="formData.doctorDepartment" placeholder="请选择机构" class="set-width" disabled></el-input>
<!-- <el-select v-model="formData.doctorDepartment" placeholder="请选择科室" disabled class="set-width">
<el-option v-for="item of sexList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
</el-form-item>
<el-form-item label="接诊医生电话">
<el-input v-model="formData.doctorMobile" placeholder="请输入接诊医生手机号" disabled class="set-width"></el-input>
</el-form-item>
<el-form-item label="接诊医生来源" >
<el-select v-model="formData.doctorSource" placeholder="请选择医生来源" class="set-width" disabled>
<el-option v-for="item of doctorSourceList" :key="item.value" :label="item.label" :value="item.value" ></el-option>
</el-select>
</el-form-item>
<el-form-item label="医生服务费" prop="serviceFee">
<el-input v-model="formData.serviceFee" placeholder="请输入医生服务费" class="set-width" :disabled="editorType== 2"></el-input> (单位分)
</el-form-item>
<h1>问诊信息</h1>
<el-form-item label="初/复诊" prop="diagnoseStage" required>
<el-radio-group v-model="formData.diagnoseStage" :disabled="inquiryStatus==4 || editorType== 2">
<el-radio :label="1">初诊(就此病没有去过医院)</el-radio>
<el-radio :label="2">复诊(就此病去过医院)</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="是否确诊" prop="determineFlag" required>
<el-radio-group v-model="formData.determineFlag" :disabled="inquiryStatus==4 || editorType== 2">
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="确诊疾病" >
<el-input v-model="formData.diagnoseDisease" placeholder="请输入确诊疾病名称" :disabled="inquiryStatus==4 || editorType== 2" class="set-width"></el-input>
</el-form-item>
<el-form-item label="病情描述" prop="illnessDetail" required>
<el-input type="textarea" v-model="formData.illnessDetail" placeholder="请输入病情描述" maxlength="1000" :disabled="editorType== 2"></el-input>
</el-form-item>
<el-form-item label="病情照片" >
<p class="img-title">请上传患处照片、所用药品、与病情相关的线上诊疗记录截图、检查检测报告,请保证图片清晰完整,以便医生确认病情</p>
<upload-img :isDisable="editorType== 2" :imgList="formData.illnessImageUrls" ref="imgComponent"></upload-img>
</el-form-item>
<el-form-item label="诊断建议" prop="diagnoseAdvice" required>
<p class="old-diagnoseAdvice">{{formData.diagnoseAdvice}}</p>
<el-input type="textarea" v-model="formData.diagnoseAdvice" placeholder="请输入更新建议(更新后原建议将被删除)" :disabled="inquiryStatus==4 || editorType== 2" maxlength="1000"></el-input>
</el-form-item>
<el-form-item label="音频" >
<upload-music :isDisable="editorType== 2" :musicList="formData.illnessAudioUrls" ref="musicComponent"></upload-music>
</el-form-item>
<el-form-item label="是否跟进" >
<el-radio-group v-model="formData.followFlag" :disabled="editorType== 2">
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="药品跟进状态" >
<el-select v-model="formData.drugFollowStatus" placeholder="请跟进状态" class="set-width" >
<el-option v-for="item of followList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="药品跟进" >
<el-input type="textarea" v-model="formData.drugFollow" placeholder="请输入可跟进的事项" maxlength="1000" :disabled="editorType== 2"></el-input>
</el-form-item>
<el-form-item label="检查跟进状态" >
<el-select v-model="formData.checkFollowStatus" placeholder="请跟进状态" class="set-width">
<el-option v-for="item of followList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="检查跟进" >
<el-input type="textarea" v-model="formData.checkFollow" placeholder="请输入可跟进的事项" maxlength="1000" :disabled="editorType== 2"></el-input>
</el-form-item>
<el-form-item label="其他跟进状态" >
<el-select v-model="formData.otherFollowStatus" placeholder="请跟进状态" class="set-width">
<el-option v-for="item of followList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="其他跟进" >
<el-input type="textarea" v-model="formData.otherFollow" placeholder="请输入可跟进的事项" maxlength="1000" :disabled="editorType== 2"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注信息,如沟通协商记录等" maxlength="1000" :disabled="editorType== 2"></el-input>
</el-form-item>
</el-form>
<el-row :gutter="60" type="flex" justify="center" align="center">
<el-button @click="cancle">{{editorType== 1 ? '取消' : '返回'}}</el-button>
<el-button type="primary" @click="save" v-if="editorType== 1">保存</el-button>
</el-row>
</div>
</div>
</template>
<script>
import uploadImg from '@/components/editor/upload-img'
import uploadMusic from '@/components/editor/upload-music'
import { TYPE_LIST, PAY_LIST, SOURCE_LIST, STATUS_LIST, CAR_LIST, SEX_LIST, RELATION_LIST, D_S_LIST, FOLLW_LIST } from '@/utils/constants'
import { getBirth } from '@/utils/index'
let getcarMatch = function(rule, value, callback, message) {
if(!/ [0-9A-Za-z]{6,24}$/.test(value)) {
callback(new Error(message))
}else{
callback()
}
}
export default {
components: {
uploadImg,
uploadMusic
},
data(){
return {
diagnoseLogId: '',
birthDisable: false,
noable: false,
//2、待问诊3、问诊中 4、已问诊"
inquiryStatus: 4,
editorType: 1, // //1为编辑状态,2为查看
loading: true,
formData: {
// 预约单信息
diagnoseType: '',
appointSource: '',
createdTime: '',
operateTime: '',
doneTime: '',
payType: '',
crrsName: '',
// 预约信息
status: 1,
operateUserName: '',
appointBeginTime: '',
appointEndTime: '',
// 患者信息
patientName: '',
idCardType: 1,
idCard: '',
birthday: '',
sex: 1,
patientMobilePhone: '',
//助诊信息
helpDoctor: '',
userTitle: '',
userHospital: '',
userDepartment: '',
userMobile: '',
patientRelation: '',
//医生信息
receiveDoctor: '',
doctorTitle: '',
doctorHospital: '',
doctorDepartment: '',
doctorMobile: '',
doctorSource: '',
serviceFee: '',
// 问诊信息
diagnoseStage: '',
determineFlag: '',
diagnoseDisease: '',
illnessDetail: '',
illnessImageUrls: [],
diagnoseAdvice: '',
illnessAudioUrls: [],
followFlag: 1,
drugFollow: '',
drugFollowStatus: '',
checkFollow: '',
checkFollowStatus: '',
otherFollowStatus: '',
otherFollow: '',
remark: '',
createType: 1 ////创建方式1.系统创建 2.手动创建
},
tyleList: TYPE_LIST,
payList: PAY_LIST,
sourceList: SOURCE_LIST,
statusList: STATUS_LIST,
carList: CAR_LIST,
sexList: SEX_LIST,
relationList: RELATION_LIST,
doctorSourceList: D_S_LIST,
followList: FOLLW_LIST,
rules: {
appointBeginTime: [
{ required: true, message: '请输入预约时间', trigger: 'change' }
],
patientName: [
{ required: true, message: '请输入患姓名', trigger: ['blur','change'] },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: ['blur','change'] }
],
idCardType: [
{ required: true, message: '请选择证件类型', trigger: 'change' }
],
idCard: [
{ required: true, message: '请输入证件号', trigger: 'blur' },
{ min: 18, message: '长度18个字符', trigger: 'blur' },
{ validator: function(rule, value, callback) { getcarMatch(rule, value, callback, '只能是数字或字母')},
trigger: 'change' }
],
birthday: [
{ required: true, message: '请选择生日', trigger: 'change' }
],
sex: [
{ required: true, message: '请选择性别', trigger: 'change' }
],
patientMobilePhone: [
{ required: true, message: '请输入患者电话', trigger: ['blur','change'] }
],
receiveDoctor: [
{ required: true, message: '请选择接诊医生', trigger: 'change' }
],
serviceFee: [
{ required: false, message: '请输入医生服务费', trigger: 'change'},
{ pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入正确额格式,可保留两位小数' }
],
diagnoseStage: [
{ required: true, message: '请选择初/复诊', trigger: 'change' }
],
determineFlag: [
{ required: true, message: '是否确诊', trigger: 'change' }
],
illnessDetail: [
{ required: true, message: '请输入病情描述', trigger: 'change' }
],
diagnoseAdvice: [
{ required: true, message: '请输入诊断建议', trigger: 'change' }
],
},
endDateOpt: {
disabledData: (time) => {
if ( this.formData.appointEndTime != "" && this.formData.appointEndTime != null) {
return (
time.getTime() > new Date(this.formData.appointEndTime).getTime()
);
}
}
},
endDateOpt1: {
disabledDate: time => {
return (
time.getTime() < new Date(this.formData.appointBeginTime).getTime()
);
}
}
}
},
created() {
this.editorType = this.$route.query.editorType
this.diagnoseLogId = this.$route.query.id
this.search()
},
mounted() {
},
methods: {
search() {
this.loading = true
let url = `/diagnose/admin/diagnose/${this.diagnoseLogId}`
this.GET(url).then(res => {
this.loading = false
if (res.code == '000000') {
this.formData = res.data
if (!this.formData.illnessImageUrls) {
this.formData.illnessImageUrls = []
} else {
this.formData.illnessImageUrls = this.setObjectArr(this.formData.illnessImageUrls)
}
if (!this.formData.illnessAudioUrls) {
this.formData.illnessAudioUrls = []
} else {
this.formData.illnessAudioUrls = this.setObjectArr(this.formData.illnessAudioUrls)
}
} else {
this.$message.info('请稍后重试')
}
}).catch(() => {
this.$message.info('请稍后重试')
});
},
// 预约开始时间选择时
continueBeginChange(val) {
if(this.formData.appointEndTime) {
if(new Date(val).getTime() > new Date(this.formData.appointEndTime).getTime()) {
this.$message.info('开始时间要小于结束时间');
this.formData.appointBeginTime = '';
return;
}
}
},
// 预约结束时间选择时
continueEndChange(val) {
if(this.formData.appointBeginTime) {
if(new Date(val).getTime() <= new Date(this.formData.appointBeginTime).getTime()) {
this.$message.info('结束时间要大于开始时间');
this.formData.appointEndTime = '';
return;
}
}
},
blurFn() {
if (this.formData.idCardType == 1 && this.formData.idCard && this.formData.idCard.length == 18) {
this.formData.birthday = getBirth(this.formData.idCard)
this.birthDisable = true
} else {
this.formData.birthday = ''
this.birthDisable = false
}
},
cancle() {
this.$router.back()
},
save() {
// return
this.$refs.form.validate((valid) => {
let url = `/diagnose/admin/diagnose/update`
let params = JSON.parse(JSON.stringify(this.formData))
params.illnessImageUrls = this.$refs.imgComponent ? [...this.$refs.imgComponent.setNewArr()] : []
params.illnessAudioUrls = this.$refs.musicComponent ? [...this.$refs.musicComponent.setNewArr()] : []
this.POST(url, params).then(res => {
this.loading = false
if (res.code == "000000") {
this.$message.success('保存成功');
this.$router.back()
}
});
return
if (valid) {
let url = `/diagnose/admin/diagnose/update`
let params = JSON.parse(JSON.stringify(this.formData))
params.illnessImageUrls = this.$refs.imgComponent ? [...this.$refs.imgComponent.setNewArr()] : []
params.illnessAudioUrls = this.$refs.musicComponent ? [...this.$refs.musicComponent.setNewArr()] : []
this.POST(url, params).then(res => {
this.loading = false
if (res.code == "000000") {
this.$message.success('保存成功');
// this.$router.back()
}
});
} else {
this.$message.info('请将信息填写完整')
}
});
},
// 格式话音频/视频数组
setObjectArr(array) {
let newArr = []
array.forEach(element => {
newArr.push(
{
url: element
}
)
});
return newArr
}
}
}
</script>
<style lang="scss" scoped>
.diagnosis-list-content {
.component-content {
padding: 10px;
background: #fff;
overflow: hidden !important;
.title {
margin-bottom: 30px;
}
.img-title {
margin-top: 20px;
font-size: 14px;
color: #6d8bc7;
line-height: 40px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
.old-diagnoseAdvice {
margin-top: 20px;
font-size: 14px;
color: #9197a3;
line-height: 40px;
}
.set-width {
width: 300px;
}
}
.btn-wrap {
padding: 40px 0 60px;
margin: 0 auto;
}
}
</style>
\ No newline at end of file
<template>
<div class="diagnosis-list-content">
<div class="component-content screenSet" id="screenSet">
<div class="title">咨询订单管理后台</div>
<el-form :inline="true" class="demo-form-inline" :model="searchParam" label-width="80px">
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="姓名">
<el-input
v-model="searchParam.searchVal"
clearable
placeholder="请输入助诊医生、接诊医生姓名、运营人员"
style="width:280px;"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约类型">
<el-select v-model="searchParam.diagnoseType" placeholder="请选择预约类型" style="width:280px;">
<el-option v-for="item of tyleList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="创建方式">
<el-select v-model="searchParam.createType" placeholder="创建方式" style="width:280px;">
<el-option v-for="item of createList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="是否跟进">
<el-select v-model="searchParam.followFlag" placeholder="请选择是否跟进" style="width:280px;">
<el-option v-for="item of fllowList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约来源">
<el-select v-model="searchParam.appointSource" placeholder="请选择预约来源" style="width:280px;">
<el-option v-for="item of sourceList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="是否匹配">
<el-select v-model="searchParam.operateFlag" placeholder="是否匹配" style="width:280px;">
<el-option v-for="item of operateList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="创建日期">
<el-date-picker
type="date"
placeholder="开始时间"
v-model="searchParam.createdTimeBegin"
style="width: 135px;"
:picker-options="endDateOpt"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<span>-</span>
<el-date-picker
type="date"
placeholder="结束时间"
v-model="searchParam.createdTimeEnd"
style="width: 135px;"
format="yyyy-MM-dd"
:picker-options="endDateOpt1"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="匹配日期">
<el-date-picker
type="date"
placeholder="开始时间"
v-model="searchParam.operateTimeBegin"
style="width: 135px;"
:picker-options="endDateOpt2"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<span>-</span>
<el-date-picker
type="date"
placeholder="结束时间"
v-model="searchParam.operateTimeEnd"
style="width: 135px;"
format="yyyy-MM-dd"
:picker-options="endDateOpt3"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约日期">
<el-date-picker
type="date"
placeholder="开始时间"
v-model="searchParam.appointBeginTime"
style="width: 135px;"
:picker-options="endDateOpt4"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<span>-</span>
<el-date-picker
type="date"
placeholder="结束时间"
v-model="searchParam.appointEndTime"
style="width: 135px;"
format="yyyy-MM-dd"
:picker-options="endDateOpt5"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="center" align="center">
<el-col :span="24" class="btn-wrap">
<el-button type="primary" class="submit-btn" @click="search">搜索</el-button>
<el-button type="warning" class="submit-btn" @click="reset">重置</el-button>
<el-button type="info" class="submit-btn" @click="download">导出</el-button>
</el-col>
</el-row>
</el-form>
<<<<<<< HEAD
<!-- 表格 -->
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="已接诊" name="first">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading">
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="specialName" label="专区名称" min-width="120" align="left"></el-table-column>
<el-table-column prop="diagnoseType" label="问诊类型" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.diagnoseType | diagnosisTypeFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="100" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="120" align="left"></el-table-column>
<el-table-column prop="userName" label="问诊患者" min-width="120" align="left">
<template slot-scope="scope">
<span>{{scope.row.patientName}}</span>
<span></span>
<span>({{scope.row.userName}})</span>
</template>
</el-table-column>
<el-table-column prop="userMobile" label="问诊电话" min-width="120" align="left"></el-table-column>
<el-table-column prop="price" label="价格" min-width="60" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="appointBeginTime" label="预约时间" min-width="160" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="createdTime" label="创建时间" min-width="160" align="left">
<template slot-scope="scope">
<p>创建:{{scope.row.createdTime}}</p>
<p v-if="scope.row.operateTime">匹配:{{scope.row.operateTime}}</p>
</template>
</el-table-column>
<el-table-column prop="statusStr" label="问诊状态" min-width="80" align="left"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="150">
<template slot-scope="scope">
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
<div>
<el-button v-if="scope.row.status != 4" type="primary" size="small" @click="timeHandle(scope.row)" style="margin-top: 10px;">修改时间</el-button>
<el-button v-if="scope.row.status == 3" type="primary" size="small" @click="endDiagnosis(scope.row)" style="margin-top: 10px;">结束</el-button>
</div>
<div>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 1" type="primary" size="small" @click="callAll(scope.row)" style="margin-top: 10px;">呼叫双方</el-button>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 2" type="primary" size="small" @click="jionCommunicate(scope.row)" style="margin-top: 10px;">加入问诊</el-button>
<el-button type="primary" size="small" @click="sendMessage(scope.row)" style="margin-top: 10px;">发送消息</el-button>
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
</el-tab-pane>
<el-tab-pane label="未匹配" name="second">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading">
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="specialName" label="专区名称" min-width="120" align="left"></el-table-column>
<el-table-column prop="diagnoseType" label="问诊类型" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.diagnoseType | diagnosisTypeFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="100" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="120" align="left"></el-table-column>
<el-table-column label="问诊患者" min-width="120" align="left">
<template slot-scope="scope">
<span>{{scope.row.patientName}}</span>
<span></span>
<span>({{scope.row.userName}})</span>
</template>
</el-table-column>
<el-table-column prop="userMobile" label="问诊电话" min-width="120" align="left"></el-table-column>
<el-table-column label="价格" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="appointBeginTime" label="预约时间" min-width="160" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="createdTime" label="创建时间" min-width="160" align="left">
<template slot-scope="scope">
<p>创建:{{scope.row.createdTime}}</p>
</template>
</el-table-column>
<el-table-column prop="statusStr" label="问诊状态" min-width="80" align="left"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="selectBtn(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
=======
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="全部" name="first">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
<el-tab-pane label="待问诊" name="second">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
<el-tab-pane label="问诊中" name="three">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
<el-tab-pane label="已问诊" name="four">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
>>>>>>> dev-20200510
</el-tab-pane>
</el-tabs>
<!-- 预约时间 -->
<el-dialog
title="预约时间"
:visible.sync="timeVisible"
width="40%">
<el-row :gutter="30" class="row search" type="flex" style="margin-bottom:0;">
<el-form ref="timeForm"
:rules="timeRules"
:model="timeForm"
label-width="150px"
label-suffix=":"
label-position="right"
size="mini"
style="width: 100%;">
<el-col :span="24">
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="timeForm.beginTime"
type="datetime"
placeholder="请选择开始时间"
value-format="yyyy-MM-dd HH:mm:ss"
@change="changeBeginTime">
</el-date-picker>
<p v-if="beginFlag" style="color: red;font-size: 12px">开始时间不能大于结束时间</p>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="timeForm.endTime"
type="datetime"
placeholder="请选择结束时间"
value-format="yyyy-MM-dd HH:mm:ss"
@change="changeEndTime">
</el-date-picker>
<p v-if="endFlag" style="color: red;font-size: 12px">结束时间不能小于开始时间</p>
</el-form-item>
</el-col>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="timeVisible = false">取 消</el-button>
<el-button type="primary" @click="confirmTime">确 定</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import TableComponent from '@/components/list/table-component'
import { TYPE_LIST, IS_FLLOW, CREATE_TYPE, SOURCE_LIST, OPERATE_LIST } from '@/utils/constants'
export default {
components: {
TableComponent
},
data(){
return {
hcd: [{
diagnoseLogId: '问诊id',
orderNo: '123', // 订单id
diagnoseType: 1, //预约类型1.语音问诊、2.视频问诊、3.图文问诊
diagnoseTypeStr: '语音问诊', //预约类型1.语音问诊、2.视频问诊、3.图文问诊
status: 1,//问诊状态:1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊
statusStr: '初始状态(未支付)',
operateUserName: '运营人员name',
patientName: '患者name',
idCard: '证件号码',
patientMobilePhone: '患者手机号',
userId: '助诊医生id',
userName: '助诊医生名称',
userMobile: '助诊医生电话',
doctorId: '接诊医生id',
doctorName: '接诊医生名称',
doctorMobile: '接诊医生电话',
appointBeginTime: '预约开始时间',
appointEndTime: '预约结束时间',
diagnoseStage: 1, //诊断阶段1.初诊 2.复诊"
diagnoseStageStr: '初诊',
determineFlag: 1, //是否确诊1.确诊 2.没有确诊
determineFlagStr: 1,
diagnoseDisease: '确诊疾病',
illnessDetail: '病情描述',
diagnoseAdvice: '诊断建议',
followFlag: 1,//是否跟进1.跟进 2不跟进
followFlagStr: '跟进',
drugFollow: '药品跟进',
drugFollowStatus: 1,//药物跟进状态:1 待跟进、2 跟进中(协调资源)、3 已完成(跟进结束)、4 长期跟进")
drugFollowStatusStr: '待跟进',
checkFollow: "检查跟进",
checkFollowStatus: 1,//检查跟进状态:1 待跟进、2 跟进中(协调资源)、3 已完成(跟进结束)、4 长期跟进")
checkFollowStatusStr: '待跟进',
otherFollow: '其他跟进事项',
otherFollowStatus: 1,
otherFollowStatusStr: '待跟进',
createType: 1,//创建方式1.系统创建 2.手动创建
createTypeStr: '系统创建',
appointSource: 1,//预约来源1.铁军反馈、2.主动联系、3.问卷收集、4.微信群反馈、5.话题讨论与回复"
appointSourceStr: '铁军反馈',
createdTime: '创建时间',
operateTime: '匹配时间',
doneTime: '完成时间',
price: '问诊价格单位分',
priceStr: '123',
payType: 1,//支付方式1.代付、2.扫码支付、3.分享支付
payTypeStr: '代付',
sex: 1, //患者性别:1、男 2、女
sexStr: '男',
age:12,//患者年龄
idCardType: 1,//证件类型1居民身份证2护照3港澳通行证
idCardTypeStr: '居民身份证',
userTitle: '助诊医生职称',
userHospital: '助诊医生机构',
userDepartment: '助诊医生科室',
patientRelation: 1,//与患者关系1.自己、2.患者、3.家属、4.朋友
patientRelationStr: '自己',
doctorTitle: '接诊医生职称',
doctorHospital: '接诊医生机构',
doctorDepartment: '接诊医生科室',
doctorSource: 1,//接诊医生来源1.京东、2.同事推荐、3.云鹊医平台
doctorSourceStr: '京东',
serviceFee: '医生服务费单位分',
serviceFeeStr: '12',
crrsName: '招募人',
remark: '备注'
}],
endFlag: false,
beginFlag: false,
loading: false,
activeName: 'first',
timeVisible: false,
searchParam:{
searchVal: '',
diagnoseType: '',
createType: '',
followFlag: '',
appointSource: '',
operateFlag: '',
createdTimeBegin: '',
createdTimeEnd: '',
operateTimeBegin: '',
operateTimeEnd: '',
appointBeginTime: '',
appointEndTime: '',
status: '', //1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊")
bizType: 1, //1、分页查询 2、导出"
pageSize: 15,
pageNo: 1
},
tyleList: TYPE_LIST,
fllowList: IS_FLLOW,
sourceList: SOURCE_LIST,
createList: CREATE_TYPE,
operateList: OPERATE_LIST,
timeForm:{
diagnoseLogId: '',
beginTime: '',
endTime: ''
},
tableData: [],
totalRows: 0,
timeRules: {
'beginTime': [
{ required: true, message: '请选择预约开始时间', trigger: 'change'}
],
'endTime': [
{ required: true, message: '请选择预约结束时间', trigger: 'change'}
]
},
liveBack: false,
timeClickFlag: true,
endDateOpt: {
disabledData: (time) => {
if ( this.searchParam.createdTimeEnd != "" && this.searchParam.createdTimeEnd != null) {
return (
time.getTime() > new Date(this.searchParam.createdTimeEnd).getTime()
);
}
}
},
endDateOpt1: {
disabledDate: time => {
return (
time.getTime() < new Date(this.searchParam.createdTimeBegin).getTime()
);
}
},
endDateOpt2: {
disabledData: (time) => {
if ( this.searchParam.operateTimeEnd != "" && this.searchParam.operateTimeEnd != null) {
return (
time.getTime() > new Date(this.searchParam.operateTimeEnd).getTime()
);
}
}
},
endDateOpt3: {
disabledDate: time => {
return (
time.getTime() < new Date(this.searchParam.operateTimeBegin).getTime()
);
}
},
endDateOpt4: {
disabledData: (time) => {
if ( this.searchParam.appointEndTime != "" && this.searchParam.appointEndTime != null) {
return (
time.getTime() > new Date(this.searchParam.appointEndTime).getTime()
);
}
}
},
endDateOpt5: {
disabledDate: time => {
return (
time.getTime() < new Date(this.searchParam.appointBeginTime).getTime()
);
}
}
}
},
mounted() {
this.liveBack = this.$route.query.liveBack || false
// if(this.liveBack) {
// this.activeName = 'first'
// this.searchParam.status = ''
// }else {
// this.activeName = 'second'
// this.searchParam.status = 2
// }
this.search()
},
methods: {
changeBeginTime(val) {
this.beginFlag = false
this.endFlag = false
let b = new Date(val).getTime(), e
if(this.timeForm.endTime) {
e = new Date(this.timeForm.endTime).getTime()
}
if(val) this.beginFlag = b > e ? true : false
},
changeEndTime(val) {
this.beginFlag = false
this.endFlag = false
let b = new Date(val).getTime(), e
if(this.timeForm.beginTime) {
e = new Date(this.timeForm.beginTime).getTime()
}
if(val) this.endFlag = b < e ? true : false
},
// tab切换
handleClick(val) {
let tab = 1
switch (val.name) {
case 'first':
tab = ''
break
case 'second':
tab = 2
break
case 'three':
tab = 3
break
case 'four':
tab = 4
break
default:
break
}
this.searchParam.status = tab
this.search()
},
search() {
this.loading = true
let url = `/diagnose/admin/diagnose/list`
this.searchParam.bizType = 1
let params = this.searchParam
this.POST(url, params).then(res => {
this.loading = false
if (res.code == "000000") {
this.tableData = res.data.list
this.totalRows = res.data.allSize
}
});
},
// 重置
reset() {
this.searchParam = {
searchVal: '',
diagnoseType: '',
createType: '',
followFlag: '',
appointSource: '',
operateFlag: '',
createdTimeBegin: '',
createdTimeEnd: '',
operateTimeBegin: '',
operateTimeEnd: '',
appointBeginTime: '',
appointEndTime: '',
status: '', //1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊")
bizType: 1, //1、分页查询 2、导出"
pageSize: 15,
pageNo: 1
}
this.search()
},
// 导出
download() {
this.searchParam.bizType = 2
let params = this.searchParam
// let url = `/diagnose/admin/diagnose/`
// this.searchParam.bizType = 1
// let params = this.searchParam
// this.POST(url, params).then(res => {
// this.loading = false
// if (res.code == "000000") {
// this.tableData = res.data.list
// this.totalRows = res.data.allSize
// }
// });
downLoadMember(param).then(res => {
if (res.data) {
this.downloadFile(res.data.attachments.base64,res.data.attachments.name);
}
}).catch(err => {
console.log('网络出现点儿问题,稍后重试')
})
},
/* 文件下载*/
downloadFile(base64,name) {
let a = document.createElement('a');
let href = 'data:application/xls;base64,' + base64;
a.setAttribute('href',href);
a.setAttribute('download',name);
a.click();
},
// 预约时间
timeHandle(row) {
this.beginFlag = false
this.endFlag = false
this.timeVisible = true
if(this.$refs.timeForm) {
this.$refs.timeForm.resetFields()
}
this.timeForm.diagnoseLogId = row.diagnoseLogId
this.timeForm.beginTime = row.appointBeginTime
this.timeForm.endTime = row.appointEndTime
},
confirmTime() {
let timeoutId = null
if(this.timeClickFlag) {
this.timeClickFlag = false
timeoutId && clearTimeout(timeoutId)
timeoutId = setTimeout(() => {
this.clickHandle()
}, 2000)
}
},
// 防止按钮多次点击
clickHandle() {
this.$refs.timeForm.validate((valid) => {
if(valid) {
if(this.beginFlag || this.endFlag) {
return
}
this.loading = true
this.POST('/diagnose/admin/diagnose/appointTime', this.timeForm).then(res => {
this.loading = false
this.timeClickFlag = true
if (res.code == "000000") {
this.$message({
message: '修改预约时间成功',
type: "success"
});
this.activeName = 'first'
this.searchParam.status = ''
this.timeVisible = false
this.search()
}else {
this.$message({
message: res.message,
type: "error"
})
}
});
}
})
},
// 结束问诊
endDiagnosis(row) {
this.$confirm('确定结束问诊吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.POST(`/diagnose/admin/diagnose/end/${row.diagnoseLogId}`, '').then(res => {
if (res.code == "000000") {
this.$message({
message: '成功结束问诊',
type: "success"
})
this.activeName = 'first'
this.searchParam.status = ''
this.search()
}else {
this.$message({
message: res.message,
type: "error"
})
}
});
})
},
// 呼叫双方
callAll(row) {
this.$confirm('确定呼叫双方吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.POST(`/diagnose/admin/diagnose/call/${row.diagnoseLogId}`, '').then(res => {
if (res.code != "000000") {
this.$message({
message: res.message,
type: "error"
})
}
})
})
},
// 加入问诊
jionCommunicate(row) {
this.$confirm('确定加入问诊吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.clearSession()
this.$router.push({path: '/diagnosis-live', query: {tid: row.imTeamId, diagnoseLogId: row.diagnoseLogId}})
})
},
// 发送消息
sendMessage(row) {
this.$router.push({path: '/diagnosis-im', query: {tid: row.imTeamId}})
},
// 选择
selectBtn(row) {
this.POST(`/diagnose/admin/diagnose/choose/${row.diagnoseLogId}`, '')
.then(res => {
if (res.code == "000000") {
this.$message({
message: '选择成功',
type: "success"
});
this.searchParam.status = ''
this.search()
}else {
this.$message({
message: res.message,
type: "error"
})
}
})
.catch((error) => {
this.$message({
message: error,
type: "error"
})
})
this.activeName = 'first'
this.searchParam.status = ''
this.search()
},
goEditor(row,flag) {
this.$router.push({path: '/diagnosis-editor', query: {id:row.diagnoseLogId,editorType: flag}})
},
handleSizeChange(value) {
this.searchParam.pageSize = value
this.search()
},
handleCurrentChange(value) {
this.searchParam.pageNo = value
this.search()
},
// 清除直播时间相关的seession
clearSession() {
sessionStorage.removeItem('TIME_askTime')
sessionStorage.removeItem('TIME_answerTime')
sessionStorage.removeItem('TIME_useTime')
sessionStorage.removeItem('TIME_loseTime')
},
}
}
</script>
<style lang="scss" scoped>
.diagnosis-list-content {
.component-content {
padding: 10px;
background: #fff;
overflow: hidden !important;
.title {
margin-bottom: 30px;
}
.t-c {
text-align: center;
}
.btn-wrap {
text-align: right;
}
.submit-btn {
margin-right: 50px;
margin-top: 10px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="diagnosis-list-content">
<div class="component-content screenSet" id="screenSet">
<div class="title">咨询订单管理后台</div>
<el-form ref="form" :inline="true" :model="searchParam" label-suffix=":" label-width="120px" label-position="right" style="width:100%;">
<el-row :gutter="30" type="flex" style="margin-bottom:0;">
<el-col :span="21">
<el-form-item label="搜索">
<el-input
v-model="searchParam.searchVal"
clearable
placeholder="支付订单、医生姓名、运营姓名搜索"
style="width:300px;"
@change="search(1)"></el-input>
</el-form-item>
<el-form-item label="">
<el-select v-model="searchParam.status" @change="search(1)" clearable placeholder="问诊状态" style="width:150px">
<el-option
v-for="(eItem,eIndex) in diagnosisSelect"
:key="eIndex"
:label="eItem.value"
:value="eItem.no">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="">
<el-select v-model="searchParam.diagnoseType" @change="search(1)" clearable placeholder="问诊类型" style="width:150px">
<el-option
v-for="(eItem,eIndex) in diagnosisTypeSelect"
:key="eIndex"
:label="eItem.value"
:value="eItem.no">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3" style="padding:0;text-align:right;padding-right:15px;">
<el-button type="primary" size="small" @click="search(1)">搜索</el-button>
</el-col>
</el-row>
</el-form>
<!-- 表格 -->
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="已接诊" name="first">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading">
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="specialName" label="专区名称" min-width="120" align="left"></el-table-column>
<el-table-column prop="diagnoseType" label="问诊类型" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.diagnoseType | diagnosisTypeFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="100" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="120" align="left"></el-table-column>
<el-table-column prop="userName" label="问诊患者" min-width="120" align="left">
<template slot-scope="scope">
<span>{{scope.row.patientName}}</span>
<span></span>
<span>({{scope.row.userName}})</span>
</template>
</el-table-column>
<el-table-column prop="userMobile" label="问诊电话" min-width="120" align="left"></el-table-column>
<el-table-column prop="price" label="价格" min-width="60" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="appointBeginTime" label="预约时间" min-width="160" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="statusStr" label="问诊状态" min-width="80" align="left"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="150">
<template slot-scope="scope">
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
<div>
<el-button v-if="scope.row.status != 4" type="primary" size="small" @click="timeHandle(scope.row)" style="margin-top: 10px;">修改时间</el-button>
<el-button v-if="scope.row.status == 3" type="primary" size="small" @click="endDiagnosis(scope.row)" style="margin-top: 10px;">结束</el-button>
</div>
<div>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 1" type="primary" size="small" @click="callAll(scope.row)" style="margin-top: 10px;">呼叫双方</el-button>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 2" type="primary" size="small" @click="jionCommunicate(scope.row)" style="margin-top: 10px;">加入问诊</el-button>
<el-button type="primary" size="small" @click="sendMessage(scope.row)" style="margin-top: 10px;">发送消息</el-button>
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
</el-tab-pane>
<el-tab-pane label="未匹配" name="second">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading">
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="specialName" label="专区名称" min-width="120" align="left"></el-table-column>
<el-table-column prop="diagnoseType" label="问诊类型" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.diagnoseType | diagnosisTypeFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="100" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="120" align="left"></el-table-column>
<el-table-column label="问诊患者" min-width="120" align="left">
<template slot-scope="scope">
<span>{{scope.row.patientName}}</span>
<span></span>
<span>({{scope.row.userName}})</span>
</template>
</el-table-column>
<el-table-column prop="userMobile" label="问诊电话" min-width="120" align="left"></el-table-column>
<el-table-column label="价格" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="appointBeginTime" label="预约时间" min-width="160" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="statusStr" label="问诊状态" min-width="80" align="left"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="selectBtn(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
</el-tab-pane>
</el-tabs>
<!-- 预约时间 -->
<el-dialog
title="预约时间"
:visible.sync="timeVisible"
width="40%">
<el-row :gutter="30" class="row search" type="flex" style="margin-bottom:0;">
<el-form ref="timeForm"
:rules="timeRules"
:model="timeForm"
label-width="150px"
label-suffix=":"
label-position="right"
size="mini"
style="width: 100%;">
<el-col :span="24">
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="timeForm.beginTime"
type="datetime"
placeholder="请选择开始时间"
value-format="yyyy-MM-dd HH:mm:ss"
@change="changeBeginTime">
</el-date-picker>
<p v-if="beginFlag" style="color: red;font-size: 12px">开始时间不能大于结束时间</p>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
<el-date-picker
v-model="timeForm.endTime"
type="datetime"
placeholder="请选择结束时间"
value-format="yyyy-MM-dd HH:mm:ss"
@change="changeEndTime">
</el-date-picker>
<p v-if="endFlag" style="color: red;font-size: 12px">结束时间不能小于开始时间</p>
</el-form-item>
</el-col>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="timeVisible = false">取 消</el-button>
<el-button type="primary" @click="confirmTime">确 定</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
export default {
data(){
return {
endFlag: false,
beginFlag: false,
loading: false,
activeName: 'second',
timeVisible: false,
searchParam: {
searchVal: '',
status: '', // 2、待问诊3、问诊中 4、已问诊"
diagnoseType: '', // 1、音频 2、视频
tab: 2, // 1、已分配 2、未分配
pageSize: 15,
pageNo: 1
},
timeForm:{
diagnoseLogId: '',
beginTime: '',
endTime: ''
},
timeSelect: [],
diagnosisSelect: [],
diagnosisTypeSelect: [],
tableData: [],
totalRows: 0,
timeRules: {
'beginTime': [
{ required: true, message: '请选择预约开始时间', trigger: 'change'}
],
'endTime': [
{ required: true, message: '请选择预约结束时间', trigger: 'change'}
]
},
liveBack: false,
timeClickFlag: true
}
},
mounted() {
this.liveBack = this.$route.query.liveBack || false
if(this.liveBack) {
this.activeName = 'first'
this.searchParam.tab = 1
}else {
this.activeName = 'second'
this.searchParam.tab = 2
}
this.getDiagnoseTypeList()
this.getDiagnoseList()
this.search()
},
methods: {
changeBeginTime(val) {
this.beginFlag = false
this.endFlag = false
let b = new Date(val).getTime(), e
if(this.timeForm.endTime) {
e = new Date(this.timeForm.endTime).getTime()
}
if(val) this.beginFlag = b > e ? true : false
},
changeEndTime(val) {
this.beginFlag = false
this.endFlag = false
let b = new Date(val).getTime(), e
if(this.timeForm.beginTime) {
e = new Date(this.timeForm.beginTime).getTime()
}
if(val) this.endFlag = b < e ? true : false
},
// 问诊类型
getDiagnoseTypeList() {
let url = `/basic-data/constants?typeCode=P253`
this.GET(url).then(res => {
if (res.code == "000000") {
this.diagnosisTypeSelect = res.data
}
})
},
// 问诊状态
getDiagnoseList() {
let url = `/basic-data/constants?typeCode=P254`
this.GET(url).then(res => {
if (res.code == "000000") {
this.diagnosisSelect = res.data
}
});
},
// tab切换
handleClick(val) {
this.searchParam.tab = val.name == 'second' ? 2: 1
this.search()
},
search(a) {
if(a) this.searchParam.pageNo = 1
this.loading = true
let url = `/diagnose/admin/diagnose/`
let params = this.searchParam
this.POST(url, params).then(res => {
this.loading = false
if (res.code == "000000") {
this.tableData = res.data.list
this.totalRows = res.data.allSize
}
});
},
// 预约时间
timeHandle(row) {
this.beginFlag = false
this.endFlag = false
this.timeVisible = true
if(this.$refs.timeForm) {
this.$refs.timeForm.resetFields()
}
this.timeForm.diagnoseLogId = row.diagnoseLogId
this.timeForm.beginTime = row.appointBeginTime
this.timeForm.endTime = row.appointEndTime
},
confirmTime() {
let timeoutId = null
if(this.timeClickFlag) {
this.timeClickFlag = false
timeoutId && clearTimeout(timeoutId)
timeoutId = setTimeout(() => {
this.clickHandle()
}, 2000)
}
},
// 防止按钮多次点击
clickHandle() {
this.$refs.timeForm.validate((valid) => {
if(valid) {
if(this.beginFlag || this.endFlag) {
return
}
this.loading = true
this.POST('/diagnose/admin/diagnose/appointTime', this.timeForm).then(res => {
this.loading = false
this.timeClickFlag = true
if (res.code == "000000") {
this.$message({
message: '修改预约时间成功',
type: "success"
});
this.searchParam.tab = 1
this.timeVisible = false
this.search()
}else {
this.$message({
message: res.message,
type: "error"
})
}
});
}
})
},
// 结束问诊
endDiagnosis(row) {
this.$confirm('确定结束问诊吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.POST(`/diagnose/admin/diagnose/end/${row.diagnoseLogId}`, '').then(res => {
if (res.code == "000000") {
this.$message({
message: '成功结束问诊',
type: "success"
})
this.searchParam.tab = 1
this.search()
}else {
this.$message({
message: res.message,
type: "error"
})
}
});
})
},
// 呼叫双方
callAll(row) {
this.$confirm('确定呼叫双方吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.POST(`/diagnose/admin/diagnose/call/${row.diagnoseLogId}`, '').then(res => {
if (res.code != "000000") {
this.$message({
message: res.message,
type: "error"
})
}
})
})
},
// 加入问诊
jionCommunicate(row) {
this.$confirm('确定加入问诊吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.clearSession()
this.$router.push({path: '/diagnosis-live', query: {tid: row.imTeamId, diagnoseLogId: row.diagnoseLogId}})
})
},
// 发送消息
sendMessage(row) {
this.$router.push({path: '/diagnosis-im', query: {tid: row.imTeamId}})
},
// 选择
selectBtn(row) {
this.POST(`/diagnose/admin/diagnose/choose/${row.diagnoseLogId}`, '')
.then(res => {
if (res.code == "000000") {
this.$message({
message: '选择成功',
type: "success"
});
this.searchParam.tab = 1
this.search()
}else {
this.$message({
message: res.message,
type: "error"
})
}
})
.catch((error) => {
this.$message({
message: error,
type: "error"
})
})
this.activeName = 'first'
this.searchParam.tab = 1
this.search()
},
handleSizeChange(value) {
this.searchParam.pageSize = value
this.search()
},
handleCurrentChange(value) {
this.searchParam.pageNo = value
this.search()
},
// 清除直播时间相关的seession
clearSession() {
sessionStorage.removeItem('TIME_askTime')
sessionStorage.removeItem('TIME_answerTime')
sessionStorage.removeItem('TIME_useTime')
sessionStorage.removeItem('TIME_loseTime')
}
}
}
</script>
<style lang="scss" scoped>
.diagnosis-list-content {
.component-content {
padding: 10px;
background: #fff;
overflow: hidden !important;
.title {
margin-bottom: 30px;
}
}
}
</style>
\ No newline at end of file
......@@ -2,177 +2,218 @@
<div class="diagnosis-list-content">
<div class="component-content screenSet" id="screenSet">
<div class="title">咨询订单管理后台</div>
<el-form ref="form" :inline="true" :model="searchParam" label-suffix=":" label-width="120px" label-position="right" style="width:100%;">
<el-row :gutter="30" type="flex" style="margin-bottom:0;">
<el-col :span="21">
<el-form-item label="搜索">
<el-form :inline="true" class="demo-form-inline" :model="searchParam" label-width="80px">
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="姓名">
<el-input
v-model="searchParam.searchVal"
clearable
placeholder="支付订单、医生姓名、运营姓名搜索"
style="width:300px;"
@change="search(1)"></el-input>
v-model="searchParam.searchVal"
clearable
placeholder="请输入助诊医生、接诊医生姓名、运营人员"
style="width:280px;"
></el-input>
</el-form-item>
<el-form-item label="">
<el-select v-model="searchParam.status" @change="search(1)" clearable placeholder="问诊状态" style="width:150px">
<el-option
v-for="(eItem,eIndex) in diagnosisSelect"
:key="eIndex"
:label="eItem.value"
:value="eItem.no">
</el-option>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约类型">
<el-select v-model="searchParam.diagnoseType" placeholder="请选择预约类型" style="width:280px;">
<el-option v-for="item of tyleList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="">
<el-select v-model="searchParam.diagnoseType" @change="search(1)" clearable placeholder="问诊类型" style="width:150px">
<el-option
v-for="(eItem,eIndex) in diagnosisTypeSelect"
:key="eIndex"
:label="eItem.value"
:value="eItem.no">
</el-option>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="创建方式">
<el-select v-model="searchParam.createType" placeholder="创建方式" style="width:280px;">
<el-option v-for="item of createList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="是否跟进">
<el-select v-model="searchParam.followFlag" placeholder="请选择是否跟进" style="width:280px;">
<el-option v-for="item of fllowList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3" style="padding:0;text-align:right;padding-right:15px;">
<el-button type="primary" size="small" @click="search(1)">搜索</el-button>
<el-col :span="8" class="t-c">
<el-form-item label="预约来源">
<el-select v-model="searchParam.appointSource" placeholder="请选择预约来源" style="width:280px;">
<el-option v-for="item of sourceList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="是否匹配">
<el-select v-model="searchParam.operateFlag" placeholder="是否匹配" style="width:280px;">
<el-option v-for="item of operateList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="创建日期">
<el-date-picker
type="date"
placeholder="开始时间"
v-model="searchParam.createdTimeBegin"
style="width: 135px;"
:picker-options="endDateOpt"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<span>-</span>
<el-date-picker
type="date"
placeholder="结束时间"
v-model="searchParam.createdTimeEnd"
style="width: 135px;"
format="yyyy-MM-dd"
:picker-options="endDateOpt1"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="匹配日期">
<el-date-picker
type="date"
placeholder="开始时间"
v-model="searchParam.operateTimeBegin"
style="width: 135px;"
:picker-options="endDateOpt2"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<span>-</span>
<el-date-picker
type="date"
placeholder="结束时间"
v-model="searchParam.operateTimeEnd"
style="width: 135px;"
format="yyyy-MM-dd"
:picker-options="endDateOpt3"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约日期">
<el-date-picker
type="date"
placeholder="开始时间"
v-model="searchParam.appointBeginTime"
style="width: 135px;"
:picker-options="endDateOpt4"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
>
</el-date-picker>
<span>-</span>
<el-date-picker
type="date"
placeholder="结束时间"
v-model="searchParam.appointEndTime"
style="width: 135px;"
format="yyyy-MM-dd"
:picker-options="endDateOpt5"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="center" align="center">
<el-col :span="24" class="btn-wrap">
<el-button type="primary" class="submit-btn" @click="search">搜索</el-button>
<el-button type="warning" class="submit-btn" @click="reset">重置</el-button>
<el-button type="info" class="submit-btn" @click="download">导出</el-button>
</el-col>
</el-row>
</el-form>
<!-- 表格 -->
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="已接诊" name="first">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading">
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="specialName" label="专区名称" min-width="120" align="left"></el-table-column>
<el-table-column prop="diagnoseType" label="问诊类型" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.diagnoseType | diagnosisTypeFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="100" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="120" align="left"></el-table-column>
<el-table-column prop="userName" label="问诊患者" min-width="120" align="left">
<template slot-scope="scope">
<span>{{scope.row.patientName}}</span>
<span></span>
<span>({{scope.row.userName}})</span>
</template>
</el-table-column>
<el-table-column prop="userMobile" label="问诊电话" min-width="120" align="left"></el-table-column>
<el-table-column prop="price" label="价格" min-width="60" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="appointBeginTime" label="预约时间" min-width="160" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="createdTime" label="创建时间" min-width="160" align="left">
<template slot-scope="scope">
<p>创建:{{scope.row.createdTime}}</p>
<p v-if="scope.row.operateTime">匹配:{{scope.row.operateTime}}</p>
</template>
</el-table-column>
<el-table-column prop="statusStr" label="问诊状态" min-width="80" align="left"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="150">
<template slot-scope="scope">
<!-- 1 初始状态 2待咨询 3 咨询中 4已结束 -->
<div>
<el-button v-if="scope.row.status != 4" type="primary" size="small" @click="timeHandle(scope.row)" style="margin-top: 10px;">修改时间</el-button>
<el-button v-if="scope.row.status == 3" type="primary" size="small" @click="endDiagnosis(scope.row)" style="margin-top: 10px;">结束</el-button>
</div>
<div>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 1" type="primary" size="small" @click="callAll(scope.row)" style="margin-top: 10px;">呼叫双方</el-button>
<el-button v-if="scope.row.status == 3 && scope.row.imStatus == 2" type="primary" size="small" @click="jionCommunicate(scope.row)" style="margin-top: 10px;">加入问诊</el-button>
<el-button type="primary" size="small" @click="sendMessage(scope.row)" style="margin-top: 10px;">发送消息</el-button>
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="全部" name="first">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
<el-tab-pane label="待问诊" name="second">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
<el-tab-pane label="问诊中" name="three">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
<el-tab-pane label="未匹配" name="second">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading">
<el-table-column prop="orderNo" label="订单ID" min-width="170" align="left"></el-table-column>
<el-table-column prop="operateUserName" label="运营人员" min-width="100" align="left"></el-table-column>
<el-table-column prop="specialName" label="专区名称" min-width="120" align="left"></el-table-column>
<el-table-column prop="diagnoseType" label="问诊类型" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.diagnoseType | diagnosisTypeFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="doctorName" label="接诊医生" min-width="100" align="left"></el-table-column>
<el-table-column prop="doctorMobile" label="接诊电话" min-width="120" align="left"></el-table-column>
<el-table-column label="问诊患者" min-width="120" align="left">
<template slot-scope="scope">
<span>{{scope.row.patientName}}</span>
<span></span>
<span>({{scope.row.userName}})</span>
</template>
</el-table-column>
<el-table-column prop="userMobile" label="问诊电话" min-width="120" align="left"></el-table-column>
<el-table-column label="价格" min-width="80" align="left">
<template slot-scope="scope">
<span>{{scope.row.price | priceFilter}}</span>
</template>
</el-table-column>
<el-table-column prop="appointBeginTime" label="预约时间" min-width="160" align="left">
<template slot-scope="scope">
<p>{{scope.row.appointBeginTime}}</p>
<p>{{scope.row.appointEndTime}}</p>
</template>
</el-table-column>
<el-table-column prop="createdTime" label="创建时间" min-width="160" align="left">
<template slot-scope="scope">
<p>创建:{{scope.row.createdTime}}</p>
</template>
</el-table-column>
<el-table-column prop="statusStr" label="问诊状态" min-width="80" align="left"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="selectBtn(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
<el-tab-pane label="已问诊" name="four">
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
@timeHandle="timeHandle"
@endDiagnosis="endDiagnosis"
@callAll="callAll"
@jionCommunicate="jionCommunicate"
@sendMessage="sendMessage"
@selectBtn="selectBtn"
@goEditor="goEditor"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
</el-tabs>
</el-tabs>
<!-- 预约时间 -->
<el-dialog
title="预约时间"
......@@ -220,30 +261,116 @@
</div>
</template>
<script>
import TableComponent from '@/components/list/table-component'
import { TYPE_LIST, IS_FLLOW, CREATE_TYPE, SOURCE_LIST, OPERATE_LIST } from '@/utils/constants'
export default {
components: {
TableComponent
},
data(){
return {
hcd: [{
diagnoseLogId: '问诊id',
orderNo: '123', // 订单id
diagnoseType: 1, //预约类型1.语音问诊、2.视频问诊、3.图文问诊
diagnoseTypeStr: '语音问诊', //预约类型1.语音问诊、2.视频问诊、3.图文问诊
status: 1,//问诊状态:1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊
statusStr: '初始状态(未支付)',
operateUserName: '运营人员name',
patientName: '患者name',
idCard: '证件号码',
patientMobilePhone: '患者手机号',
userId: '助诊医生id',
userName: '助诊医生名称',
userMobile: '助诊医生电话',
doctorId: '接诊医生id',
doctorName: '接诊医生名称',
doctorMobile: '接诊医生电话',
appointBeginTime: '预约开始时间',
appointEndTime: '预约结束时间',
diagnoseStage: 1, //诊断阶段1.初诊 2.复诊"
diagnoseStageStr: '初诊',
determineFlag: 1, //是否确诊1.确诊 2.没有确诊
determineFlagStr: 1,
diagnoseDisease: '确诊疾病',
illnessDetail: '病情描述',
diagnoseAdvice: '诊断建议',
followFlag: 1,//是否跟进1.跟进 2不跟进
followFlagStr: '跟进',
drugFollow: '药品跟进',
drugFollowStatus: 1,//药物跟进状态:1 待跟进、2 跟进中(协调资源)、3 已完成(跟进结束)、4 长期跟进")
drugFollowStatusStr: '待跟进',
checkFollow: "检查跟进",
checkFollowStatus: 1,//检查跟进状态:1 待跟进、2 跟进中(协调资源)、3 已完成(跟进结束)、4 长期跟进")
checkFollowStatusStr: '待跟进',
otherFollow: '其他跟进事项',
otherFollowStatus: 1,
otherFollowStatusStr: '待跟进',
createType: 1,//创建方式1.系统创建 2.手动创建
createTypeStr: '系统创建',
appointSource: 1,//预约来源1.铁军反馈、2.主动联系、3.问卷收集、4.微信群反馈、5.话题讨论与回复"
appointSourceStr: '铁军反馈',
createdTime: '创建时间',
operateTime: '匹配时间',
doneTime: '完成时间',
price: '问诊价格单位分',
priceStr: '123',
payType: 1,//支付方式1.代付、2.扫码支付、3.分享支付
payTypeStr: '代付',
sex: 1, //患者性别:1、男 2、女
sexStr: '男',
age:12,//患者年龄
idCardType: 1,//证件类型1居民身份证2护照3港澳通行证
idCardTypeStr: '居民身份证',
userTitle: '助诊医生职称',
userHospital: '助诊医生机构',
userDepartment: '助诊医生科室',
patientRelation: 1,//与患者关系1.自己、2.患者、3.家属、4.朋友
patientRelationStr: '自己',
doctorTitle: '接诊医生职称',
doctorHospital: '接诊医生机构',
doctorDepartment: '接诊医生科室',
doctorSource: 1,//接诊医生来源1.京东、2.同事推荐、3.云鹊医平台
doctorSourceStr: '京东',
serviceFee: '医生服务费单位分',
serviceFeeStr: '12',
crrsName: '招募人',
remark: '备注'
}],
endFlag: false,
beginFlag: false,
loading: false,
activeName: 'second',
activeName: 'first',
timeVisible: false,
searchParam: {
searchParam:{
searchVal: '',
status: '', // 2、待问诊3、问诊中 4、已问诊"
diagnoseType: '', // 1、音频 2、视频
tab: 2, // 1、已分配 2、未分配
diagnoseType: '',
createType: '',
followFlag: '',
appointSource: '',
operateFlag: '',
createdTimeBegin: '',
createdTimeEnd: '',
operateTimeBegin: '',
operateTimeEnd: '',
appointBeginTime: '',
appointEndTime: '',
status: '', //1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊")
bizType: 1, //1、分页查询 2、导出"
pageSize: 15,
pageNo: 1
},
tyleList: TYPE_LIST,
fllowList: IS_FLLOW,
sourceList: SOURCE_LIST,
createList: CREATE_TYPE,
operateList: OPERATE_LIST,
timeForm:{
diagnoseLogId: '',
beginTime: '',
endTime: ''
},
timeSelect: [],
diagnosisSelect: [],
diagnosisTypeSelect: [],
tableData: [],
totalRows: 0,
timeRules: {
......@@ -255,21 +382,67 @@ export default {
]
},
liveBack: false,
timeClickFlag: true
timeClickFlag: true,
endDateOpt: {
disabledData: (time) => {
if ( this.searchParam.createdTimeEnd != "" && this.searchParam.createdTimeEnd != null) {
return (
time.getTime() > new Date(this.searchParam.createdTimeEnd).getTime()
);
}
}
},
endDateOpt1: {
disabledDate: time => {
return (
time.getTime() < new Date(this.searchParam.createdTimeBegin).getTime()
);
}
},
endDateOpt2: {
disabledData: (time) => {
if ( this.searchParam.operateTimeEnd != "" && this.searchParam.operateTimeEnd != null) {
return (
time.getTime() > new Date(this.searchParam.operateTimeEnd).getTime()
);
}
}
},
endDateOpt3: {
disabledDate: time => {
return (
time.getTime() < new Date(this.searchParam.operateTimeBegin).getTime()
);
}
},
endDateOpt4: {
disabledData: (time) => {
if ( this.searchParam.appointEndTime != "" && this.searchParam.appointEndTime != null) {
return (
time.getTime() > new Date(this.searchParam.appointEndTime).getTime()
);
}
}
},
endDateOpt5: {
disabledDate: time => {
return (
time.getTime() < new Date(this.searchParam.appointBeginTime).getTime()
);
}
}
}
},
mounted() {
this.liveBack = this.$route.query.liveBack || false
if(this.liveBack) {
this.activeName = 'first'
this.searchParam.tab = 1
}else {
this.activeName = 'second'
this.searchParam.tab = 2
}
// if(this.liveBack) {
// this.activeName = 'first'
// this.searchParam.status = ''
// }else {
// this.activeName = 'second'
// this.searchParam.status = 2
// }
this.getDiagnoseTypeList()
this.getDiagnoseList()
this.search()
},
methods: {
......@@ -292,33 +465,32 @@ export default {
}
if(val) this.endFlag = b < e ? true : false
},
// 问诊类型
getDiagnoseTypeList() {
let url = `/basic-data/constants?typeCode=P253`
this.GET(url).then(res => {
if (res.code == "000000") {
this.diagnosisTypeSelect = res.data
}
})
},
// 问诊状态
getDiagnoseList() {
let url = `/basic-data/constants?typeCode=P254`
this.GET(url).then(res => {
if (res.code == "000000") {
this.diagnosisSelect = res.data
}
});
},
// tab切换
handleClick(val) {
this.searchParam.tab = val.name == 'second' ? 2: 1
let tab = 1
switch (val.name) {
case 'first':
tab = ''
break
case 'second':
tab = 2
break
case 'three':
tab = 3
break
case 'four':
tab = 4
break
default:
break
}
this.searchParam.status = tab
this.search()
},
search(a) {
if(a) this.searchParam.pageNo = 1
search() {
this.loading = true
let url = `/diagnose/admin/diagnose/`
let url = `/diagnose/admin/diagnose/list`
this.searchParam.bizType = 1
let params = this.searchParam
this.POST(url, params).then(res => {
this.loading = false
......@@ -328,6 +500,58 @@ export default {
}
});
},
// 重置
reset() {
this.searchParam = {
searchVal: '',
diagnoseType: '',
createType: '',
followFlag: '',
appointSource: '',
operateFlag: '',
createdTimeBegin: '',
createdTimeEnd: '',
operateTimeBegin: '',
operateTimeEnd: '',
appointBeginTime: '',
appointEndTime: '',
status: '', //1、初始状态(未支付) 2、待问诊(支付成功待完善) 3、问诊中(已完善) 4、已问诊")
bizType: 1, //1、分页查询 2、导出"
pageSize: 15,
pageNo: 1
}
this.search()
},
// 导出
download() {
this.searchParam.bizType = 2
let params = this.searchParam
// let url = `/diagnose/admin/diagnose/`
// this.searchParam.bizType = 1
// let params = this.searchParam
// this.POST(url, params).then(res => {
// this.loading = false
// if (res.code == "000000") {
// this.tableData = res.data.list
// this.totalRows = res.data.allSize
// }
// });
downLoadMember(param).then(res => {
if (res.data) {
this.downloadFile(res.data.attachments.base64,res.data.attachments.name);
}
}).catch(err => {
console.log('网络出现点儿问题,稍后重试')
})
},
/* 文件下载*/
downloadFile(base64,name) {
let a = document.createElement('a');
let href = 'data:application/xls;base64,' + base64;
a.setAttribute('href',href);
a.setAttribute('download',name);
a.click();
},
// 预约时间
timeHandle(row) {
this.beginFlag = false
......@@ -366,7 +590,8 @@ export default {
message: '修改预约时间成功',
type: "success"
});
this.searchParam.tab = 1
this.activeName = 'first'
this.searchParam.status = ''
this.timeVisible = false
this.search()
}else {
......@@ -392,7 +617,8 @@ export default {
message: '成功结束问诊',
type: "success"
})
this.searchParam.tab = 1
this.activeName = 'first'
this.searchParam.status = ''
this.search()
}else {
this.$message({
......@@ -444,7 +670,7 @@ export default {
message: '选择成功',
type: "success"
});
this.searchParam.tab = 1
this.searchParam.status = ''
this.search()
}else {
this.$message({
......@@ -460,9 +686,12 @@ export default {
})
})
this.activeName = 'first'
this.searchParam.tab = 1
this.searchParam.status = ''
this.search()
},
goEditor(row,flag) {
this.$router.push({path: '/diagnosis-editor', query: {id:row.diagnoseLogId,editorType: flag}})
},
handleSizeChange(value) {
this.searchParam.pageSize = value
this.search()
......@@ -477,7 +706,7 @@ export default {
sessionStorage.removeItem('TIME_answerTime')
sessionStorage.removeItem('TIME_useTime')
sessionStorage.removeItem('TIME_loseTime')
}
},
}
}
</script>
......@@ -490,6 +719,16 @@ export default {
.title {
margin-bottom: 30px;
}
.t-c {
text-align: center;
}
.btn-wrap {
text-align: right;
}
.submit-btn {
margin-right: 50px;
margin-top: 10px;
}
}
}
</style>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册