提交 455e5f76 编写于 作者: changdi.hao's avatar changdi.hao

新增列表页面

上级 6c61fa4e
<template>
<div class="table">
<el-table
v-loading="loading"
class="search-table"
:data="tData"
:height="tableHeight"
style="width: 100%"
border
@selection-change="handleSelectionChange"
>
<el-table-column
fixed
type="selection"
width="55">
</el-table-column>
<el-table-column
v-for="item in tableColumn"
:key="item.prop"
:prop="item.prop"
:label="item.label"
:show-overflow-tooltip="item.showtooltip"
min-width="170"
align="center"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
min-width="400"
>
<template slot-scope="scope">
<el-button type="primary" size="small" class="btn" v-if="a" @click="witeDiagnose(scope.row)">设为待问诊</el-button>
<el-button type="primary" size="small" class="btn" v-if="b" @click="changeRun(scope.row)">更换运营</el-button>
<el-button type="primary" size="small" class="btn" v-if="c" @click="goDetail(scope.row)">查看详情</el-button>
<el-button type="primary" size="small" class="btn" v-if="d" @click="goDetail(scope.row)">取消/退款</el-button>
<el-button type="primary" size="small" class="btn" v-if="e" @click="witeGo(scope.row)">设为稍后跟进</el-button>
<el-button type="primary" size="small" class="btn" v-if="f" @click="waitMatchDot(scope.row)">设为待匹配医生</el-button>
<el-button type="primary" size="small" class="btn" v-if="g" @click="sendMessage(scope.row)">发送消息</el-button>
<el-button type="primary" size="small" class="btn" v-if="h" @click="joinDiagnose(scope.row)">加入问诊</el-button>
<el-button type="primary" size="small" class="btn" v-if="i" @click="matchRun(scope.row)">匹配运营</el-button>
<el-button type="primary" size="small" class="btn" v-if="j" @click="goEditor(scope.row)" >编辑</el-button>
<el-button type="primary" size="small" class="btn" v-if="k" @click="waitDiagnose(scope.row)">设为待分诊</el-button>
<el-button type="primary" size="small" class="btn" v-if="l" @click="waitHzeDot(scope.row)">设为待协调医生</el-button>
<el-button type="primary" size="small" class="btn" v-if="m" @click="waitMatchTime(scope.row)">设为待确认时间</el-button>
<el-button type="primary" size="small" class="btn" v-if="n" @click="reMatchDot(scope.row)">重新匹配医生</el-button>
<el-button type="primary" size="small" class="btn" v-if="o" @click="changeTime(scope.row)">修改时间</el-button>
<el-button type="primary" size="small" class="btn" v-if="p" @click="call(scope.row)">发起问诊</el-button>
<el-button type="primary" size="small" class="btn" v-if="q" @click="doneHandle(scope.row)">设为已完成</el-button>
</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, 150, 200]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
>
</el-pagination>
</div>
</div>
</template>
<script>
import { TABLE_COLUMN } from "@/utils/constants";
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,
},
tableHeight: {
type: Number,
default: 500,
}
},
data() {
return {
tableColumn: TABLE_COLUMN,
multipleSelection: [],
status: 1
};
},
computed: {
//0 只填写了患者信息(急速问诊才会有的状态),1 初始状态(未支付),2待问诊(待匹配运营)(支付成功待完善)3 问诊中(已完善),4、已问诊 5、取消, 6 已结算
//21 已匹配, 22 待分诊, 23 待匹配接诊医生, 24 待协调医生 25 待设置问诊时间, 26 待问诊
a() { //设为待问诊
switch (this.status ) {
case 25:
return true
default:
return false
}
},
b() { // 更换运营
switch (this.status ) {
case 2:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 3:
return true
default:
return false
}
},
c() {
return true
},
d() { //取消/退款
switch (this.status ) {
case 2:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 3:
case 4:
return true
default:
return false
}
},
e() { //设为稍后跟进
switch (this.status ) {
case 21:
return true
default:
return false
}
},
f() { //设为待匹配医生
switch (this.status ) {
case 21:
case 22:
return true
default:
return false
}
},
g() { //发送消息
switch (this.status ) {
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 3:
case 4:
case 6:
case 5:
return true
default:
return false
}
},
h() { //加入问诊
switch (this.status ) {
case 3:
return true
default:
return false
}
},
i() { //匹配运营
switch (this.status ) {
case 2:
return true
default:
return false
}
},
j() { //编辑
// switch (this.status ) {
// case :
// return true
// default:
// return false
// }
return false
},
k() { //设为待分诊
switch (this.status ) {
case 21:
return true
default:
return false
}
},
l() { //设为待协调医生
switch (this.status ) {
case 23:
return true
default:
return false
}
},
m() { //设为待确认时间
switch (this.status ) {
case 23:
case 24:
return true
default:
return false
}
},
n() { //重新匹配医生
switch (this.status ) {
case 25:
case 26:
case 3:
return true
default:
return false
}
},
o() { //修改时间
switch (this.status ) {
case 26:
case 3:
return true
default:
return false
}
},
p() { //发起问诊
switch (this.status ) {
case 26:
return true
default:
return false
}
},
q() { //设为已完成
switch (this.status ) {
case 3:
return true
default:
return false
}
}
},
methods: {
// 选择
handleSelectionChange(val) {
this.multipleSelection = val;
},
//设为待问诊
witeDiagnose(row) {
this.$emit("witeDiagnose", row);
},
//更换运营
changeRun(row) {
this.$emit("changeRun", row);
},
//查看详情
goDetail(row) {
this.$emit("goDetail", row);
},
//取消/退款
cancelBtn(row) {
this.$emit("cancelBtn", row);
},
//设为稍后跟进
witeGo(row) {
this.$emit("witeGo", row);
},
//设为待匹配医生
waitMatchDot(row) {
this.$emit("waitMatchDot", row);
},
//发送消息
sendMessage(row) {
this.$emit("sendMessage", row);
},
//加入问诊
joinDiagnose(row) {
this.$emit("joinDiagnose", row);
},
//匹配运营
matchRun(row) {
this.$emit("matchRun", row);
},
//编辑
goEditor(row, flag) {
this.$emit("goEditor", row, flag);
},
//设为待分诊
waitDiagnose(row) {
this.$emit("waitDiagnose", row);
},
//设为待协调医生
waitHzeDot(row) {
this.$emit("waitHzeDot", row);
},
//设为待确认时间
waitMatchTime(row) {
this.$emit("waitMatchTime", row);
},
//重新匹配医生
reMatchDot(row) {
this.$emit("reMatchDot", row);
},
//修改时间
changeTime(row) {
this.$emit("changeTime", row);
},
//发起问诊
call(row) {
this.$emit("call", row);
},
//设为已完成
doneHandle(row) {
this.$emit("doneHandle", row);
},
handleSizeChange(value) {
this.$emit("handleSizeChange", value);
},
handleCurrentChange(value) {
this.$emit("handleCurrentChange", value);
},
},
};
</script>
<style>
</style>
......@@ -8,7 +8,8 @@ const serviceList = r => require.ensure([], () => r(require('../views/IM/diagnos
const assistList = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/assist-list.vue')), 'assistList')
const assistListTemp = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/assist-list-temp.vue')), 'assistListTemp')
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')
const diagnosisListNew = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/diagnosis-list-new.vue')), 'diagnosisListNew')
const downList = r => require.ensure([], () => r(require('../views/IM/diagnosis-admin/down-list.vue')), 'downList')
export default [{
path: '/',
......@@ -42,8 +43,12 @@ export default [{
path: '/diagnosis-editor',
component: diagnosisEditor
}, {
path: '/diagnosis-list-old',
component: diagnosisListLod
path: '/diagnosis-list-new',
component: diagnosisListNew
}, {
path: '/down-list',
component: downList
}
]
}]
......@@ -227,3 +227,301 @@ export const FOLLW_LIST = [
value: 4
},
]
//0 只填写了患者信息(急速问诊才会有的状态),1 初始状态(未支付),2待问诊(支付成功待完善)3 问诊中(已完善),4、已问诊 5、取消, 6 已结算
//21 已匹配 22 待分诊 23 待匹配接诊医生 24 待协调医生 25 待设置问诊时间 26 待问诊
//预约单列表
export const ALL_TAB_LIST = [
{
label: '全部',
active: '99'
},
{
label: '待匹配',
active: '2'
},
{
label: '已匹配',
active: '21'
},
{
label: '待分诊',
active: '22'
},
{
label: '待匹配医生',
active: '23'
},
{
label: '待协调医生',
active: '24'
},
{
label: '待确认时间',
active: '25'
},
{
label: '待问诊',
active: '16'
},
{
label: '问诊中',
active: '3'
},
{
label: '已完成',
active: '4'
},
{
label: '已结算',
active: '6'
},
{
label: '已取消',
active: '5'
}
]
// 分诊列表
export const TRIAGE_TAB_LIST = [
{
label: '全部',
active: '1'
},
{
label: '待诊断',
active: '13'
}
]
// 接诊列表
export const RECEPTION_TAB_LIST = [
{
label: '全部',
active: '1'
},
{
label: '待匹配医生',
active: '5'
},
{
label: '待协调医生',
active: '6'
},
]
export const TABLE_COLUMN = [
{
prop: "diagnoseLogId",
label: "ID",
showtooltip: false,
},
{
prop: "orderNo",
label: "订单ID",
showtooltip: false,
},
{
prop: "diagnoseTypeStr",
label: "预约类型",
showtooltip: false,
},
{
prop: "statusStr",
label: "状态",
showtooltip: false,
},
{
prop: "appointBeginTime",
label: "预约开始时间",
showtooltip: false,
},
{
prop: "appointEndTime",
label: "预约结束时间",
showtooltip: false,
},
{
prop: "operateUserID",
label: "运营人员ID",
showtooltip: false,
},
{
prop: "operateUserName",
label: "运营人员",
showtooltip: false,
},
{
prop: "userName",
label: "助诊医生",
showtooltip: false,
},
{
prop: "userMobile",
label: "助诊电话",
showtooltip: false,
},
{
prop: "assistantBeginTime",
label: "助诊医生意向时间",
showtooltip: false,
},
{
prop: "assistantRemark",
label: "助诊备注",
showtooltip: true,
},
{
prop: "triageDepartment",
label: "分诊科室",
showtooltip: false,
},
{
prop: "triageRemark",
label: "分诊备注",
showtooltip: true,
},
{
prop: "doctorName",
label: "接诊医生",
showtooltip: false,
},
{
prop: "doctorMobile",
label: "接诊电话",
showtooltip: false,
},
{
prop: "outsideDoctor",
label: "站外医生姓名",
showtooltip: false,
},
{
prop: "receptionBeginTime",
label: "接诊诊医生意向时间",
showtooltip: false,
},
{
prop: "patientName",
label: "患者姓名",
showtooltip: false,
},
{
prop: "patientMobilePhone",
label: "患者电话",
showtooltip: false,
},
{
prop: "illnessDetail",
label: "病情描述",
showtooltip: false,
},
{
prop: "idCard",
label: "证件号",
showtooltip: false,
},
{
prop: "sexStr",
label: "性别",
showtooltip: false,
},
{
prop: "diagnoseStageStr",
label: "初/复制",
showtooltip: false,
},
{
prop: "determineFlagStr",
label: "是否确诊",
showtooltip: false,
},
{
prop: "diagnoseDisease",
label: "确诊疾病",
showtooltip: true,
},
{
prop: "triageOperatorName",
label: "分诊运营",
showtooltip: false,
},
{
prop: "receptionOperatorName",
label: "接诊运营",
showtooltip: false,
},
{
prop: "diagnoseAdvice",
label: '诊断建议"',
showtooltip: true,
},
{
prop: "crrsName",
label: "招募人",
showtooltip: false,
},
{
prop: "diagnoseChannelStr",
label: "问诊方式",
showtooltip: false,
},
{
prop: "doneTime",
label: "完成时间",
showtooltip: false,
},
{
prop: "cancelTime",
label: "退款时间",
showtooltip: false,
},
{
prop: "createdTime",
label: "创建时间",
showtooltip: false,
},
{
prop: "followFlagStr",
label: "是否跟进",
showtooltip: false,
},
{
prop: "drugFollowStatusStr",
label: "药品跟进状态",
showtooltip: false,
},
{
prop: "drugFollow",
label: "药品跟进",
showtooltip: false,
},
{
prop: "checkFollowStatusStr",
label: "检查跟进状态",
showtooltip: false,
},
{
prop: "checkFollow",
label: "检查跟进",
showtooltip: false,
},
{
prop: "otherFollowStatusStr",
label: "其他跟进事项状态",
showtooltip: false,
},
{
prop: "otherFollow",
label: "其他跟进事项",
showtooltip: false,
},
{
prop: "remark",
label: "跟进备注",
showtooltip: false,
},
]
\ 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 from-box"
:model="searchParam"
label-width="80px"
ref="from"
>
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="8" class="t-c">
<el-form-item label="订单搜索" class="t-b">
<el-input
v-model="searchParam.searchVal"
clearable
placeholder="输入ID、订单ID或姓名搜索订单"
style="width: 280px"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约类型" class="t-b">
<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="创建方式" class="t-b">
<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="是否跟进" class="t-b">
<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="预约来源" class="t-b">
<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="是否匹配" class="t-b">
<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="创建日期" class="t-b">
<el-date-picker
v-model="createRangeTime"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 280px"
:picker-options="pickerOptions1"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="匹配日期" class="t-b">
<el-date-picker
v-model="matchRangeTime"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 280px"
:picker-options="pickerOptions1"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8" class="t-c">
<el-form-item label="预约日期" class="t-b">
<el-date-picker
v-model="orderRangeTime"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 280px"
:picker-options="pickerOptions1"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" type="flex" justify="left">
<el-col :span="8" class="t-c">
<el-form-item label="完成时间" class="t-b">
<el-date-picker
v-model="completeRangeTime"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 280px"
:picker-options="pickerOptions1"
>
</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="success" class="submit-btn"
>批量设置运营</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="item.label"
:name="item.active"
v-for="item in tabpaneList"
:key="item.active"
>
<table-component
:tData="tableData"
:pageNo="searchParam.pageNo"
:pageSize="searchParam.pageSize"
:totalRows="totalRows"
:loading="loading"
:tableHeight="tableHeight"
@witeDiagnose="witeDiagnose"
@changeRun="changeRun"
@goDetail="goDetail"
@witeGo="witeGo"
@waitMatchDot="waitMatchDot"
@sendMessage="sendMessage"
@joinDiagnose="joinDiagnose"
@matchRun="matchRun"
@goEditor="goEditor"
@waitDiagnose="waitDiagnose"
@waitHzeDot="waitHzeDot"
@waitMatchTime="waitMatchTime"
@reMatchDot="reMatchDot"
@changeTime="changeTime"
@call="call"
@doneHandle="doneHandle"
@handleSizeChange="handleSizeChange"
@handleCurrentChange="handleCurrentChange"
></table-component>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import TableComponent from "@/components/list/table-c";
import {
TYPE_LIST,
IS_FLLOW,
CREATE_TYPE,
SOURCE_LIST,
OPERATE_LIST,
ALL_TAB_LIST,
TRIAGE_TAB_LIST,
RECEPTION_TAB_LIST,
} from "@/utils/constants";
export default {
components: {
TableComponent,
},
data() {
return {
endFlag: false,
beginFlag: false,
loading: false,
activeName: "1",
createRangeTime: "",
matchRangeTime: "",
orderRangeTime: "",
completeRangeTime: "",
searchParam: {
searchVal: "",
diagnoseType: "",
createType: "",
followFlag: "",
appointSource: "",
operateFlag: "",
createdTimeBegin: "",
createdTimeEnd: "",
operateTimeBegin: "",
operateTimeEnd: "",
appointBeginTime: "",
appointEndTime: "",
doneTimeBegin: "",
doneTimeEnd: "",
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,
tabpaneList: [],
tableData: [],
totalRows: 0,
timeClickFlag: true,
tableHeight: 500,
pickerOptions1: {
disabledDate: (time) => {
return time.getTime() > new Date().getTime(); //减去一天的时间代表可以选择同一天;
},
},
fromType: 1, //1或不传为 为预约单列表 2为分诊台 3为接诊台
};
},
activated() {
this.search();
},
created() {
this.fromType = +(this.$route.query.fromType || 1);
this.setTable();
},
mounted() {
this.setTableHeight();
this.search();
},
methods: {
// 不同也main切换不同的tab
setTable() {
let tabs = ALL_TAB_LIST;
switch (this.fromType) {
case 1:
tabs = ALL_TAB_LIST;
break;
case 2:
tabs = TRIAGE_TAB_LIST;
break;
case 3:
tabs = RECEPTION_TAB_LIST;
break;
default:
tabs = ALL_TAB_LIST;
break;
}
this.tabpaneList = tabs;
},
// 设置table的高度
setTableHeight() {
setTimeout(() => {
this.$nextTick(() => {
if (
document.getElementsByClassName("from-box") &&
document.getElementsByClassName("from-box")[0].clientHeight
) {
let height =
window.innerHeight -
50 -
140 -
10 -
160 -
document.getElementsByClassName("from-box")[0].clientHeight;
if (height > 300) {
this.tableHeight = height;
}
}
});
}, 20);
},
// tab切换
handleClick(val) {
this.searchParam.status = val.paneName == 1 ? "" : val.paneName;
this.search();
},
search() {
this.searchParam.createdTimeBegin = this.createRangeTime[0];
this.searchParam.createdTimeEnd = this.createRangeTime[1];
this.searchParam.operateTimeBegin = this.matchRangeTime[0];
this.searchParam.operateTimeEnd = this.matchRangeTime[1];
this.searchParam.appointBeginTime = this.orderRangeTime[0];
this.searchParam.appointEndTime = this.orderRangeTime[1];
this.searchParam.doneTimeBegin = this.completeRangeTime[0];
this.searchParam.doneTimeEnd = this.completeRangeTime[1];
this.loading = true;
let url = `/diagnose/admin/diagnose/list`;
this.searchParam.bizType = 1;
this.searchParam.searchVal = this.searchParam.searchVal.trim();
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.createRangeTime = "";
this.matchRangeTime = "";
this.orderRangeTime = "";
this.completeRangeTime = "";
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() {
},
//设为待问诊
witeDiagnose(row) {
},
//更换运营
changeRun(row) {
},
//查看详情
goDetail(row) {
},
//取消/退款
cancelBtn(row) {
},
//设为稍后跟进
witeGo(row) {
},
//设为待匹配医生
waitMatchDot(row) {
},
//发送消息
sendMessage(row) {
},
//加入问诊
joinDiagnose(row) {
},
//匹配运营
matchRun(row) {
},
//设为待分诊
waitDiagnose(row) {
},
//设为待协调医生
waitHzeDot(row) {
},
//设为待确认时间
waitMatchTime(row) {
},
//重新匹配医生
reMatchDot(row) {
},
//修改时间
changeTime(row) {
},
//发起问诊
call(row) {
},
//设为已完成
doneHandle(row) {
},
// 编辑页面
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");
},
// 取消预约
cancelBtn(row) {
}
}
};
</script>
<style lang="scss" scoped>
.diagnosis-list-content {
.component-content {
padding: 10px;
background: #fff;
overflow: hidden !important;
.title {
margin-bottom: 20px;
}
.t-c {
//text-align: center;
}
.btn-wrap {
text-align: right;
}
.submit-btn {
margin-right: 50px;
margin-top: 10px;
}
.t-b {
margin-bottom: 10px;
}
}
}
</style>
<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
<template>
<div class="down-list">
<el-table
class="search-table"
:data="tableData"
style="width: 100%"
v-loading="loading"
>
<el-table-column
v-for="item in tableColumn"
:key="item.prop"
:prop="item.prop"
:label="item.label"
:show-overflow-tooltip="item.showtooltip"
min-width="170"
align="center"
></el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
min-width="400"
>
<template slot-scope="scope">
<el-button
type="primary"
size="small"
@click="download(scope.row)"
style="margin-top: 10px"
>下载</el-button
>
</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]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
>
</el-pagination>
</div>
</div>
</template>
<script>
export default {
data() {
return {
pageSize: 15,
pageNo: 1,
totalRows: 0,
loading: false,
tableData: [],
tableColumn: [
{
prop: "名称",
label: "名称",
showtooltip: false,
},
{
prop: "时间",
label: "时间",
showtooltip: false,
},
{
prop: "状态",
label: "状态",
showtooltip: false,
},
],
};
},
methods: {
// 导出
download() {
let url = `/diagnose/admin/diagnose/export`;
let params = this.searchParam;
params.bizType = 2;
this.POST(url, params)
.then((res) => {
if (res.code == "000000") {
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();
this.$message.success("导出成功");
},
handleSizeChange(value) {
this.pageSize = value;
},
handleCurrentChange(value) {
this.pageNo = value;
},
},
};
</script>
<style>
</style>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册