提交 df4d6788 编写于 作者: qian.jie's avatar qian.jie

发布dev

上级 394f1165
此差异已折叠。
......@@ -167,7 +167,20 @@ export const callDirect = async (data) => {
method: 'post',
});
};
export const manualCall = async (data) => {
return request({
url: '/diagnose/admin/diagnose/manual/call',
data: data,
method: 'post',
});
};
// 获取申请取消备注
export const outbounNote = async () => {
return request({
url: '/diagnose/admin/diagnose/outbound/note',
method: 'post',
});
};
export const usersigTrtc = async (data) => {
return request({
url: '/coupler/usersig/trtc',
......
src/assets/image/workbench/appointment.png

256 字节 | W: | H:

src/assets/image/workbench/appointment.png

252 字节 | W: | H:

src/assets/image/workbench/appointment.png
src/assets/image/workbench/appointment.png
src/assets/image/workbench/appointment.png
src/assets/image/workbench/appointment.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/image/workbench/calling.png

928 字节 | W: | H:

src/assets/image/workbench/calling.png

825 字节 | W: | H:

src/assets/image/workbench/calling.png
src/assets/image/workbench/calling.png
src/assets/image/workbench/calling.png
src/assets/image/workbench/calling.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/image/workbench/photo.png

299 字节 | W: | H:

src/assets/image/workbench/photo.png

276 字节 | W: | H:

src/assets/image/workbench/photo.png
src/assets/image/workbench/photo.png
src/assets/image/workbench/photo.png
src/assets/image/workbench/photo.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/image/workbench/video.png

262 字节 | W: | H:

src/assets/image/workbench/video.png

239 字节 | W: | H:

src/assets/image/workbench/video.png
src/assets/image/workbench/video.png
src/assets/image/workbench/video.png
src/assets/image/workbench/video.png
  • 2-up
  • Swipe
  • Onion skin
src/assets/image/workbench/voice.png

260 字节 | W: | H:

src/assets/image/workbench/voice.png

243 字节 | W: | H:

src/assets/image/workbench/voice.png
src/assets/image/workbench/voice.png
src/assets/image/workbench/voice.png
src/assets/image/workbench/voice.png
  • 2-up
  • Swipe
  • Onion skin
<template>
<div>
<el-dialog
title="申请取消/退款"
:visible.sync="dialogFormVisible"
@close="cancel"
>
<el-form
ref="setForm"
:model="form"
:rules="addRules"
>
<el-form-item
label="申请取消/退款原因:"
:label-width="formLabelWidth"
prop="region"
>
<el-select
v-model="form.region"
placeholder="请选择申请取消/退款"
style="width: 50%"
>
<el-option
v-for="(item, index) of noteList"
:key="index"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
</el-form>
<div
slot="footer"
class="dialog-footer"
>
<el-button @click="cancel">
取 消
</el-button>
<el-button
type="primary"
@click="confirm"
>
提 交
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
// import {outbounNote} from '../../api/diagnosis';
import { updateDiagnosis } from '../../utils/diagnosis';
let vm = null;
export default {
props: {
dialogFormVisible: {
type: Boolean,
default: false,
},
diagnoseLogId: {
type: Number,
default: 0,
},
noteList: {
type: Array,
default: () => {
return [];
},
},
},
data() {
return {
form: {
region: '',
},
formLabelWidth: '200px',
addRules: {
region: [
{
required: true,
message: '请选择申请取消/退款原因',
trigger: 'blur',
},
],
},
};
},
watch: {},
created() {
vm = this;
},
mounted() {
// this.getOutboundNote();
},
methods: {
// getOutboundNote() {
// outbounNote().then(res => {
// if(res.code == '000000') {
// this.noteList = res.data || [];
// }
// });
// },
confirm() {
this.$refs.setForm.validate((valid) => {
if (valid) {
console.log(this.form.region, '22');
const req = {
id: this.diagnoseLogId,
bizType: 17,
refundRemark: this.form.region,
};
updateDiagnosis(req)
.then(function (res) {
if (res.code == '000000') {
vm.cancel();
vm.$emit('search');
} else {
vm.$message.error(res.message);
}
})
.catch(function (error) {
vm.$message.error(error.message);
});
}
});
},
cancel() {
this.form.region = '';
this.$emit('update:dialogFormVisible', false);
},
},
};
</script>
<style lang="scss" scoped></style>
......@@ -123,11 +123,18 @@
@click="openDiagnosisStartTimeDialog"
>
<i class="el-icon-alarm-clock" />
<span v-if="startTimeValue === ''">请选择问诊时间</span>
<span
v-else
>{{ dayFormatWithoutSecond(startTimeValue) }} --
{{ dayFormatWithoutSecond(endTimeValue) }}</span>
<span v-if="!rangeTimeData">请选择问诊时间</span>
<span v-else>
{{
rangeTimeData
? rangeTimeData
: dayFormatWithoutSecond(startTimeValue)
}}
{{
dayFormatWithoutSecond(endTimeValue)
? ' -- ' + dayFormatWithoutSecond(endTimeValue)
: ''
}}</span>
</div>
</el-col>
</el-form-item>
......@@ -301,6 +308,10 @@
type: Boolean,
default: false,
},
rangeTimeData: {
type: String,
default: '',
},
diagnoseLogId: {
type: Number,
default: 0,
......@@ -381,6 +392,8 @@
},
},
created() {
// this.startTimeValue = this.rangeTimeData;
console.log('``````', this.rangeTimeData);
vm = this;
this.getDoctorList();
},
......@@ -456,7 +469,7 @@
cancel() {
this.doctorId = '';
this.formData.outsideDoctor = '';
this.startTimeValue = '';
// this.startTimeValue = this.rangeTimeData;
this.endTimeValue = '';
this.timeRange = '';
this.$emit('update:diagnosisDoctorVisible', false);
......@@ -512,12 +525,13 @@
}
},
openDiagnosisStartTimeDialog() {
this.startTimeValue = this.rangeTimeData;
this.diagnosisStartTimeDialog = true;
},
startTimeConfirm(isCancle) {
console.log('isCancle-', isCancle);
if (isCancle == 'cancel') {
this.startTimeValue = '';
// this.startTimeValue = '';
this.endTimeValue = '';
this.timeRange = '';
}
......@@ -542,6 +556,7 @@
.add(this.timeRange, 'minute')
.format('YYYY-MM-DD HH:mm:ss');
}
this.$emit('changeStartTime', { time: this.startTimeValue });
this.diagnosisStartTimeDialog = false;
},
dayFormat(v) {
......
......@@ -80,17 +80,25 @@
</div>
</div>
</div>
<div
v-if="diagnoseTypeIcon == 'voice' && doctorTrtcEntryStatus == 2"
class="call-status"
>
<img
v-if="isCall"
:src="isDoctorChat ? callouting : callout"
alt=""
@click="drivingCall(item.doctorId, 2)"
<div class="manual-call-status">
<div class="manual-dialing">
<img
:src="isManuacall ? manuacallIng : manuacall"
alt=""
@click="manualDialing(1)"
>
</div>
<div
v-if="diagnoseTypeIcon == 'voice' && doctorTrtcEntryStatus == 2"
class="call-status"
>
<img
v-if="isCall"
:src="isDoctorChat ? callouting : callout"
alt=""
@click="drivingCall(item.doctorId, 2)"
>
</div>
</div>
</div>
<div class="inquiry-user-status">
......@@ -162,17 +170,25 @@
</div>
</div>
</div>
<div
v-if="diagnoseTypeIcon == 'voice' && userTrtcEntryStatus == 2"
class="call-status"
>
<img
v-if="isCall"
:src="isUserChat ? callouting : callout"
alt=""
@click="drivingCall(item.userId, 1)"
<div class="manual-call-status">
<div class="manual-dialing">
<img
:src="isManuacallType ? manuacallIng : manuacall"
alt=""
@click="manualDialing(2)"
>
</div>
<div
v-if="diagnoseTypeIcon == 'voice' && userTrtcEntryStatus == 2"
class="call-status"
>
<img
v-if="isCall"
:src="isUserChat ? callouting : callout"
alt=""
@click="drivingCall(item.userId, 1)"
>
</div>
</div>
</div>
<div class="inquiry-user-status">
......@@ -202,7 +218,12 @@
</template>
<script>
import { teamDetail, callDirect, doctorAdviceList } from '@/api/diagnosis';
import {
teamDetail,
callDirect,
doctorAdviceList,
manualCall,
} from '@/api/diagnosis';
import { createNamespacedHelpers } from 'vuex';
const { mapState } = createNamespacedHelpers('main');
export default {
......@@ -217,14 +238,18 @@
data() {
return {
infocallImg: require('@/assets/image/workbench/calling.png'),
callout: require('@/assets/image/workbench/callout.png'),
callouting: require('@/assets/image/workbench/callouting.png'),
callout: require('@/assets/image/workbench/appremind.png'),
callouting: require('@/assets/image/workbench/remindalready.png'),
offline: require('@/assets/image/workbench/offline.png'),
manuacall: require('@/assets/image/workbench/maulcall.png'),
manuacallIng: require('@/assets/image/workbench/calling.gif'),
timer: null,
isChat: false,
isUserChat: false,
isDoctorChat: false,
isCall: false,
isManuacall: false,
isManuacallType: false,
accId: '',
};
},
......@@ -349,6 +374,7 @@
},
watch: {
item(newVal, oldVal) {
console.log(newVal, oldVal, 'newVal, oldVal');
if (newVal !== oldVal) {
if (newVal.doctorTrtcEntryStatus == 2) {
this.isDoctorChat = false;
......@@ -375,6 +401,52 @@
},
methods: {
manualDialing(type) {
this.$confirm('确认要电话通知该医生吗?', '提示', {
confirmButtonText: '电话通知',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
let userMobilePhone = '';
let userId = '';
let doctorId = '';
let doctorMobilePhone = '';
if (type === 1) {
userMobilePhone = null;
userId = null;
doctorId = this.item.doctorId;
doctorMobilePhone = this.item.doctorMobile;
} else {
userMobilePhone = this.item.userMobile;
userId = this.item.userId;
doctorId = null;
doctorMobilePhone = null;
}
const params = {
diagnoseId: this.item.diagnoseLogId,
doctorId: doctorId,
doctorMobilePhone: doctorMobilePhone,
userId: userId,
userMobilePhone: userMobilePhone,
};
manualCall(params).then((res) => {
if (res.code === '000000') {
if (type === 1) {
this.isManuacall = true;
} else {
this.isManuacallType = true;
}
}
});
})
.catch(() => {
this.$message({
type: 'info',
message: '取消拨打电话',
});
});
},
formatDateData(time) {
const now_data = new Date().getTime();
const my_time = now_data - time;
......@@ -630,14 +702,24 @@
}
}
}
.call-status {
width: 45px;
height: 46px;
img {
.manual-call-status {
display: flex;
.manual-dialing {
margin-right: 5px;
cursor: pointer;
width: 45px;
height: 46px;
img {
width: 27px;
height: 48px;
}
}
.call-status {
// width: 45px;
// height: 46px;
img {
cursor: pointer;
width: 27px;
height: 48px;
}
}
}
}
......@@ -746,7 +828,7 @@
width: 12px;
height: 12px;
display: inline-block;
background: url("../../assets/image/workbench/appointment.png") no-repeat;
background: url('../../assets/image/workbench/appointment.png') no-repeat;
background-size: cover;
margin-right: 5px;
}
......@@ -754,21 +836,21 @@
width: 12px;
height: 12px;
display: inline-block;
background: url("../../assets/image/workbench/video.png") no-repeat;
background: url('../../assets/image/workbench/video.png') no-repeat;
background-size: cover;
}
.photo {
width: 12px;
height: 12px;
display: inline-block;
background: url("../../assets/image/workbench/photo.png") no-repeat;
background: url('../../assets/image/workbench/photo.png') no-repeat;
background-size: cover;
}
.voice {
width: 12px;
height: 12px;
display: inline-block;
background: url("../../assets/image/workbench/voice.png") no-repeat;
background: url('../../assets/image/workbench/voice.png') no-repeat;
background-size: cover;
}
}
......
......@@ -72,8 +72,7 @@
</el-button>
<el-button
v-if="
showBtn(scope.row, 21, 22, 23, 24, 25, 26, 3, 2) &&
menuType == 1
showBtn(scope.row, 21, 22, 23, 24, 25, 26, 3, 2) && menuType == 1
"
type="primary"
size="small"
......@@ -92,8 +91,7 @@
</el-button>
<el-button
v-if="
showBtn(scope.row, 2, 21, 22, 23, 24, 25, 26, 3) &&
menuType == 1
showBtn(scope.row, 2, 21, 22, 23, 24, 25, 26, 3) && menuType == 1
"
type="primary"
size="small"
......@@ -139,9 +137,7 @@
加入问诊
</el-button>
<el-button
v-if="
showBtn(scope.row, 2, 3, 4, 6, 21, 22, 23, 24, 25, 26, 5, 6)
"
v-if="showBtn(scope.row, 2, 3, 4, 6, 21, 22, 23, 24, 25, 26, 5, 6)"
type="primary"
size="small"
class="btn"
......@@ -149,6 +145,15 @@
>
编辑
</el-button>
<el-button
v-if="showBtn(scope.row, 21)"
type="primary"
size="small"
class="btn"
@click="applyCancel(scope.row)"
>
申请取消/退款
</el-button>
<el-button
v-if="showBtn(scope.row, 23)"
type="primary"
......@@ -285,11 +290,10 @@
return {
dtTableData: DIAGNOS_LIST_NEW,
showTableData: DIAGNOS_LIST_NEW,
isFreash:true,
isFreash: true,
};
},
watch: {
},
watch: {},
mounted() {
this.showTableData = this.saveTableData;
},
......@@ -344,6 +348,10 @@
witeGo(row) {
this.$emit('witeGo', row);
},
// 申请取消
applyCancel(row) {
this.$emit('applyCancel', row);
},
// 设为待匹配医生
waitMatchDot(row) {
this.$emit('waitMatchDot', row);
......@@ -399,7 +407,7 @@
</script>
<style lang="scss" scoped>
.btn {
margin-top: 5px;
}
.btn {
margin-top: 5px;
}
</style>
......@@ -20,6 +20,11 @@ export const DIAGNOS_LIST_NEW = [
showtooltip: false,
with: '200',
},
{
prop: 'refundRemark',
label: '订单状态',
showtooltip: false,
},
{
prop: 'statusStr',
label: '状态',
......
此差异已折叠。
......@@ -70,12 +70,12 @@
</div>
<div>
<el-form-item
label="订单筛选"
label="订单价格"
class="t-b"
>
<el-select
v-model="searchParam.price"
placeholder="请选择订单筛选"
placeholder="请选择订单价格"
style="width: 220px"
>
<el-option
......@@ -138,6 +138,26 @@
/>
</el-form-item>
</div>
<div>
<el-form-item
label="订单状态"
class="t-b"
>
<el-select
v-model="searchParam.refundRemark"
placeholder="请选择订单状态"
clearable
style="width: 220px"
>
<el-option
v-for="(item, index) of noteList"
:key="index"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
</div>
</div>
<div class="form-li">
<div>
......@@ -338,6 +358,7 @@
@cancelRefund="cancelRefund"
@witeGo="witeGo"
@waitMatchDot="waitMatchDot"
@applyCancel="applyCancel"
@sendMessage="sendMessage"
@joinDiagnose="joinDiagnose"
@matchRun="matchRun"
......@@ -399,7 +420,9 @@
:diagnose-log-id="diagnoseLogId"
:diagnose-type="diagnoseType"
:doctor-id="doctorId"
:range-time-data="rangeTimeData"
@search="search"
@changeStartTime="changeStartTime"
/>
<appointment-time
:appointment-time-visible.sync="appointmentTimeVisible"
......@@ -420,6 +443,13 @@
:biz-type="bizType"
@search="search"
/>
<!-- 申请取消/退款 -->
<applyCancelComponent
:dialog-form-visible.sync="dialogFormVisible"
:diagnose-log-id="diagnoseLogId"
:note-list="noteList"
@search="search"
/>
</div>
<a
ref="target"
......@@ -432,6 +462,7 @@
<script>
let vm = null;
import { updateDiagnosis } from '../../../utils/diagnosis';
import { outbounNote } from '../../../api/diagnosis';
import { base64decode } from '../../../utils/utils.js';
import { DIAGNOS_LIST_NEW } from '@/utils/GeneralData/diagnosis-list-new';
import {
......@@ -443,7 +474,7 @@
RECEPTION_TAB_LIST,
RUN_TAB_LIST,
MATCH_TAB_LIST,
ORDER_PRICE
ORDER_PRICE,
} from '@/utils/constants';
import {
getCountQuery,
......@@ -463,6 +494,7 @@
import DiagnosisTime from '../../../components/common/diagnosis-time';
import RematchingDoctor from '../../../components/common/rematching-doctor';
import TableSetComponent from '@/components/list/table-set-component';
import applyCancelComponent from '../../../components/common/applyCancel';
export default {
components: {
TableSetComponent,
......@@ -476,6 +508,7 @@
AppointmentTime,
DiagnosisTime,
RematchingDoctor,
applyCancelComponent,
},
data() {
return {
......@@ -514,13 +547,15 @@
pageNo: 1,
menuType: 1, // 菜单类型:1、all 2、运营 3、待分诊 4、待接诊 5、外呼
status: '',
price:''
price: '',
refundRemark: '',
},
noteList: [],
alltabslist: [],
tyleList: TYPE_LIST,
fllowList: IS_FLLOW,
sourceList: SOURCE_LIST,
priceList:ORDER_PRICE,
priceList: ORDER_PRICE,
tabpaneList: [],
rematchingOptions: [], // 备注信息
Raw_tabpaneList: [],
......@@ -538,11 +573,13 @@
coordinatingVisible: false,
diagnosisDoctorVisible: false,
diagnoseFlag: false,
rangeTimeData: '',
appointmentTimeVisible: false,
diagnosisTimeVisible: false,
rematchingVisible: false,
multipleSelection: [],
batchFlag: false,
dialogFormVisible: false,
bizType: 0,
diagnoseType: 0,
doctorId: 0,
......@@ -582,11 +619,18 @@
},
mounted() {
this.setTableHeight();
this.getOutboundNote();
},
destroyed() {
clearInterval(this.timer);
},
methods: {
changeStartTime(time) {
console.log(time, '1233212321`');
this.rangeTimeData = time
? new Date(time.time).format('yyyy-MM-dd hh:mm:ss')
: '';
},
getTableData(val) {
this.saveTableData = val || [];
},
......@@ -637,7 +681,13 @@
this.contrastData();
},
getOutboundNote() {
outbounNote().then((res) => {
if (res.code == '000000') {
this.noteList = res.data || [];
}
});
},
// 不同也main切换不同的tab
setTable(data) {
let tabs = ALL_TAB_LIST;
......@@ -836,10 +886,10 @@
diagnoseList(this.searchParam).then((res) => {
this.loading = false;
if (res.code == '000000') {
this.tableData = (res.data.list || []).map(item => {
this.tableData = (res.data.list || []).map((item) => {
return {
...item,
price:item.price > 0 ? item.price / 100 : 0
price: item.price > 0 ? item.price / 100 : 0,
};
});
this.totalRows = res.data.allSize;
......@@ -873,7 +923,8 @@
assistantVal: '',
receptionVal: '',
triageDepartmentId: '',
price:'',
price: '',
refundRemark: '',
diagnoseType: '', // 预约问诊类型:1、音频 2、视频 3、图文
createdTimeBegin: '',
createdTimeEnd: '',
......@@ -943,6 +994,12 @@
this.toFollowReason = row.toFollowReason;
this.diagnoseLogId = row.diagnoseLogId;
},
// 申请取消
applyCancel(row) {
this.diagnoseLogId = row.diagnoseLogId;
this.dialogFormVisible = true;
console.log(row);
},
// 设为待匹配医生
waitMatchDot(row) {
this.diagnoseLogId = row.diagnoseLogId;
......@@ -1023,8 +1080,11 @@
},
// 设为待确认时间
waitMatchTime(row) {
console.log(row, 'row');
this.rangeTimeData = row.assistantBeginTime;
this.diagnoseFlag = true;
this.diagnosisDoctorVisible = true;
this.diagnoseLogId = row.diagnoseLogId;
this.diagnoseType = row.diagnoseType;
if (row.doctorId == 0) {
......@@ -1032,6 +1092,10 @@
} else {
this.doctorId = row.doctorId;
}
// this.$nextTick(() => {
// this.diagnoseFlag = true;
// this.diagnosisDoctorVisible = true;
// });
},
// 重新匹配医生
reMatchDot(row, type) {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册