外呼记录
This commit is contained in:
parent
e778ef4d3b
commit
0c94916941
@ -112,6 +112,64 @@
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务执行状态" prop="nodeExecuteStatus">
|
||||
<el-select
|
||||
v-model="queryParams.nodeExecuteStatus"
|
||||
placeholder="请选择任务执行状态"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in nodeExecutList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务执行类型" prop="taskExcuteType">
|
||||
<el-select
|
||||
v-model="queryParams.taskExcuteType"
|
||||
placeholder="请选择任务执行类型"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in taskExcuteTypelist"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="调查结果" prop="contentedFlag">
|
||||
<el-select
|
||||
v-model="queryParams.contentedFlag"
|
||||
placeholder="请选择调查结果"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contentedFlaglist"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="批次" prop="sn">
|
||||
<span>
|
||||
<sn
|
||||
@on-template="messageontemplateword"
|
||||
:templateId="queryParams.sn"
|
||||
></sn>
|
||||
</span>
|
||||
|
||||
</el-form-item>
|
||||
</SearchFilter>
|
||||
</div>
|
||||
<div ref="table">
|
||||
@ -123,32 +181,42 @@
|
||||
>
|
||||
<!-- <el-table-column type="selection" width="55" /> -->
|
||||
<el-table-column label="序号" type="index" width="48" align="center" />
|
||||
<el-table-column label="患者姓名" align="center" prop="patientName" />
|
||||
<el-table-column label="患者电话" align="center" prop="patientPhone" />
|
||||
<el-table-column label="患者姓名" align="center" prop="patientName" width="110"/>
|
||||
<el-table-column label="患者电话" align="center" prop="patientPhone" width="110"/>
|
||||
<el-table-column
|
||||
label="路径名称"
|
||||
align="center"
|
||||
prop="manageRouteName"
|
||||
width="110"
|
||||
|
||||
/>
|
||||
<el-table-column
|
||||
label="问卷模板名称"
|
||||
align="center"
|
||||
prop="questionnaireName"
|
||||
width="120"
|
||||
|
||||
/>
|
||||
<el-table-column
|
||||
label="话术名称"
|
||||
align="center"
|
||||
prop="scriptTemplateName"
|
||||
width="110"
|
||||
|
||||
/>
|
||||
<el-table-column
|
||||
label="医院"
|
||||
align="center"
|
||||
prop="hospitalAgencyName"
|
||||
width="110"
|
||||
|
||||
/>
|
||||
<el-table-column
|
||||
label="科室名称"
|
||||
align="center"
|
||||
prop="departmentName"
|
||||
width="110"
|
||||
|
||||
/>
|
||||
<el-table-column
|
||||
label="节点任务执行状态"
|
||||
@ -157,10 +225,25 @@
|
||||
width="150"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.nodeExecuteStatus == "EXECUTED" ? "已执行" : "" }}
|
||||
{{ scope.row.nodeExecuteStatus == "UNEXECUTED" ? "未执行" : "" }}
|
||||
<span style="color: #67c23a">
|
||||
{{
|
||||
scope.row.nodeExecuteStatus == "EXECUTED" ? "已执行" : ""
|
||||
}}</span
|
||||
>
|
||||
<span style="color: #f56c6c">
|
||||
{{
|
||||
scope.row.nodeExecuteStatus == "UNEXECUTED" ? "未执行" : ""
|
||||
}}</span
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="反馈意见"
|
||||
align="center"
|
||||
prop="fillBlanksAnswer"
|
||||
width="150"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
label="就诊时间"
|
||||
align="center"
|
||||
@ -175,11 +258,44 @@
|
||||
/>
|
||||
|
||||
<el-table-column label="调查结果" align="center" prop="contentedFlag" />
|
||||
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
class-name="small-padding fixed-width"
|
||||
fixed="right"
|
||||
width="150"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="handdatile(scope.row)">详情</el-button>
|
||||
<el-button
|
||||
v-if="
|
||||
|
||||
((scope.row.phoneDialMethod == 'AI' &&
|
||||
scope.row.nodeExecuteStatus == 'EXECUTED') || (
|
||||
scope.row.phoneDialMethod == 'COMMON' &&
|
||||
scope.row.nodeExecuteStatus == 'EXECUTED'
|
||||
)) &&
|
||||
scope.row.phoneNodeExecuteResultStatus == 'SUCCESS'
|
||||
"
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="playback(scope.row)"
|
||||
icon="el-icon-headset"
|
||||
>回放</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="
|
||||
scope.row.nodeExecuteStatus == 'EXECUTED' &&
|
||||
scope.row.taskNodeType == 'QUESTIONNAIRE_SCALE'
|
||||
"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-notebook-2"
|
||||
@click="questionlook(scope.row)"
|
||||
>问卷查看</el-button
|
||||
>
|
||||
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<!-- <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
|
||||
@ -191,6 +307,167 @@
|
||||
:indexFromWrap="queryParams.pageNum"
|
||||
@updateCPage="updateCPage"
|
||||
></myPagination>
|
||||
|
||||
<el-dialog title="问卷查看" :visible.sync="questionshow" width="40%">
|
||||
<div class="bottomheader">
|
||||
<div class="right">
|
||||
<div class="title">总分:{{ questiondata.totalScore }}分</div>
|
||||
<div
|
||||
class="words"
|
||||
v-for="(item, index) in questiondata.subjectResultList"
|
||||
:key="index"
|
||||
>
|
||||
{{ index + 1 }}.{{ item.questionName }}
|
||||
<span v-if="item.questionType == 'MULTIPLE_CHOICE'"
|
||||
>(单选题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'MULTIPLE_CHOICE_QUESTIONS'"
|
||||
>(多选题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'SCORING_QUESTIONS'"
|
||||
>(打分题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'COMBINATION_RADIO_SUBJECT'"
|
||||
>(组合单选题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'"
|
||||
>(组合多选题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'COMBINATION_BLANKS_SUBJECT'"
|
||||
>(组合填空题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'FILL_IN_THE_BLANKS'"
|
||||
>(填空题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'COMBINATION_SCORING_SUBJECT'"
|
||||
>(组合打分题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'DATE_BLANKS_SUBJECT'"
|
||||
>(日期填空题)</span
|
||||
>
|
||||
<span v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
|
||||
>(时间填空题)</span
|
||||
>
|
||||
<el-radio-group
|
||||
v-if="
|
||||
item.questionType == 'MULTIPLE_CHOICE' ||
|
||||
item.questionType == 'COMBINATION_RADIO_SUBJECT' ||
|
||||
item.questionType == 'SCORING_QUESTIONS' ||
|
||||
item.questionType == 'COMBINATION_SCORING_SUBJECT'
|
||||
"
|
||||
v-model="item.checked"
|
||||
class="custom-radio-group"
|
||||
@change="radioGroupChange($event, item)"
|
||||
>
|
||||
<el-radio
|
||||
disabled
|
||||
class="custom"
|
||||
v-for="(aitem, aindex) in item.optionResults"
|
||||
:key="aindex"
|
||||
:label="aitem.id"
|
||||
@change="radioChange($event, aitem, index)"
|
||||
>
|
||||
{{ aitem.optionName }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
<el-checkbox-group
|
||||
v-model="checkeddata"
|
||||
@change="radioGroupChange($event, item, 'checkbox')"
|
||||
v-if="
|
||||
item.questionType == 'MULTIPLE_CHOICE_QUESTIONS' ||
|
||||
item.questionType == 'COMBINATION_MULTIPLE_SUBJECT'
|
||||
"
|
||||
>
|
||||
<el-checkbox
|
||||
disabled
|
||||
v-for="(aitem, aindex) in item.optionResults"
|
||||
:key="aindex"
|
||||
:label="aitem.id"
|
||||
@change="radioChangecheck($event, aitem, index, aindex)"
|
||||
>
|
||||
{{ aitem.optionName }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<div
|
||||
v-if="
|
||||
item.questionType == 'FILL_IN_THE_BLANKS' ||
|
||||
item.questionType == 'COMBINATION_BLANKS_SUBJECT'
|
||||
"
|
||||
class="tk"
|
||||
>
|
||||
<el-input
|
||||
disabled
|
||||
v-model="item.fillBlanksAnswer"
|
||||
placeholder="请输入答案"
|
||||
type="textarea"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
v-if="item.questionType == 'DATE_BLANKS_SUBJECT'"
|
||||
style="margin: 20px 0 10px 30px"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
@change="timepicker($event, index)"
|
||||
clearable
|
||||
v-model="item.fillBlanksAnswer"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div
|
||||
style="margin: 20px 0 10px 30px"
|
||||
v-if="item.questionType == 'TIME_BLANKS_SUBJECT'"
|
||||
>
|
||||
<el-time-select
|
||||
disabled
|
||||
@change="timepickerselect($event, index)"
|
||||
clearable
|
||||
v-model="item.fillBlanksAnswer"
|
||||
:picker-options="{
|
||||
start: '08:30',
|
||||
step: '00:30',
|
||||
end: '23:30',
|
||||
}"
|
||||
placeholder="选择时间"
|
||||
>
|
||||
</el-time-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog
|
||||
title="回放"
|
||||
:visible.sync="audioshow"
|
||||
width="800px"
|
||||
:before-close="audiohandleClose"
|
||||
>
|
||||
<div class="audio">
|
||||
<div style="display: flex">
|
||||
<span class="name">姓名:{{ patientName }}</span>
|
||||
<audio ref="audioPlayer" :src="audiourl" controls></audio>
|
||||
</div>
|
||||
<div v-for="(item, index) in formlist" :key="index">
|
||||
<div class="imagelist" v-if="item.role == 'speech'">
|
||||
<img src="@/assets/manage/chat.png" alt="" />
|
||||
<div class="question">
|
||||
<span class="questionname">问题:</span>
|
||||
<span class="content">{{ item.contextText }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="imagelistright" v-if="item.role == 'voice'">
|
||||
<div class="question">
|
||||
<span class="questionname">{{ item.contextText }}</span>
|
||||
</div>
|
||||
<img src="@/assets/manage/solution.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -198,10 +475,16 @@
|
||||
import { uploadRobotPublishRecord, selectQuestionInfoList } from "@/api/manage/Satisfactionsurvey"
|
||||
import SearchFilter from "../../components/SearchForm.vue";
|
||||
import { getAgencyList, selectAgencyList, } from "@/api/manage/selectAgencyList";
|
||||
import { selectPatientQuestionSubmit } from "@/api/system/taskExecuteRecord";
|
||||
import {
|
||||
getPhoneDialVideo,
|
||||
} from "@/api/system/followup";
|
||||
import sn from "../components/sn";
|
||||
|
||||
|
||||
export default {
|
||||
name: "visitout",
|
||||
components: { SearchFilter },
|
||||
components: { SearchFilter ,sn},
|
||||
data() {
|
||||
return {
|
||||
maxTableHeight: undefined,
|
||||
@ -209,6 +492,60 @@ export default {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
// 节点任务执行状态
|
||||
nodeExecutList: [
|
||||
{
|
||||
value: "EXECUTED",
|
||||
label: "已执行",
|
||||
},
|
||||
{
|
||||
value: "UNEXECUTED",
|
||||
label: "未执行",
|
||||
},
|
||||
],
|
||||
// 任务类型
|
||||
taskExcuteTypelist: [
|
||||
{
|
||||
value: "BATCH_TASK",
|
||||
label: "批量任务",
|
||||
},
|
||||
{
|
||||
value: "ACTUAL_TIME_TASK",
|
||||
label: "单通电话",
|
||||
},
|
||||
|
||||
],
|
||||
// 调查结果
|
||||
contentedFlaglist: [
|
||||
{
|
||||
value: "CONTENTED",
|
||||
label: "满意",
|
||||
},
|
||||
{
|
||||
value: "DISCONTENTED",
|
||||
label: "不满意",
|
||||
},
|
||||
|
||||
],
|
||||
//播放回放
|
||||
audiourl: undefined,
|
||||
audioshow: false,
|
||||
whshow: null,
|
||||
AItrue: null,
|
||||
COMMONtrue: null,
|
||||
foldshow: null,
|
||||
questiondata: {
|
||||
totalScore: 0, //总分
|
||||
routeHandlePerson: null,
|
||||
routeHandleId: null,
|
||||
},
|
||||
// 问卷弹框
|
||||
questionshow: false,
|
||||
checkeddata: [],
|
||||
formlist: [],
|
||||
patientName:null,
|
||||
|
||||
|
||||
// 问卷名称
|
||||
questionnaireList: [],
|
||||
//医院list
|
||||
@ -254,6 +591,10 @@ export default {
|
||||
hospitalAgencyId: null,
|
||||
departmentId: null,
|
||||
questionInfoId: null,
|
||||
nodeExecuteStatus: 'UNEXECUTED',
|
||||
taskExcuteType: null,
|
||||
contentedFlag: null,
|
||||
sn: null,
|
||||
},
|
||||
show: false,
|
||||
|
||||
@ -289,6 +630,66 @@ export default {
|
||||
this.queryParams.pageSize = size;
|
||||
this.getList();
|
||||
},
|
||||
// 回放关闭
|
||||
audiohandleClose() {
|
||||
this.$refs.audioPlayer.pause();
|
||||
this.audioshow = false;
|
||||
this.audiourl = null;
|
||||
},
|
||||
// 回放点击事件
|
||||
async playback(row) {
|
||||
console.log(row,'row')
|
||||
this.patientName=row.patientName
|
||||
// await this.$confirm("是否确认回放?", "提示", {
|
||||
// confirmButtonText: "确认",
|
||||
// cancelButtonText: "取消",
|
||||
// type: "warning",
|
||||
// }).then(() => {
|
||||
getPhoneDialVideo(row.manageRouteNodeId).then((res) => {
|
||||
console.log(res, "res");
|
||||
this.audioshow = true;
|
||||
this.audiourl = process.env.VUE_APP_BASE_API + res.data.phoneDialRecordVideo;
|
||||
this.formlist = res.data.record;
|
||||
setTimeout(() => {
|
||||
this.$refs.audioPlayer.load(); // 重新加载音频,以确保每次播放都是新的音频文件
|
||||
// this.$refs.audioPlayer.play();
|
||||
// }, 1000);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 问卷查看
|
||||
async questionlook(row) {
|
||||
await selectPatientQuestionSubmit(row.taskExecuteRecordId).then((res) => {
|
||||
this.questiondata = res.data;
|
||||
this.questiondata.subjectResultList.forEach((e) => {
|
||||
e.optionResults.forEach((el) => {
|
||||
if (
|
||||
(el.optionChooseSign == "0" &&
|
||||
e.questionType == "MULTIPLE_CHOICE") ||
|
||||
e.questionType == "COMBINATION_RADIO_SUBJECT"
|
||||
) {
|
||||
e.checked = el.id;
|
||||
} else if (
|
||||
el.optionChooseSign == "0" &&
|
||||
e.questionType == "MULTIPLE_CHOICE_QUESTIONS"
|
||||
) {
|
||||
this.checkeddata.push(el.id);
|
||||
} else if (
|
||||
el.optionChooseSign == "0" &&
|
||||
e.questionType == "SCORING_QUESTIONS"
|
||||
) {
|
||||
e.checked = el.id;
|
||||
} else if (
|
||||
e.questionType == "COMBINATION_MULTIPLE_SUBJECT" &&
|
||||
el.optionChooseSign == "0"
|
||||
) {
|
||||
this.checkeddata.push(el.id);
|
||||
}
|
||||
});
|
||||
});
|
||||
this.questionshow = true;
|
||||
});
|
||||
},
|
||||
changeTime(e) {
|
||||
this.show = false;
|
||||
},
|
||||
@ -318,9 +719,26 @@ export default {
|
||||
getList() {
|
||||
this.loading = true;
|
||||
uploadRobotPublishRecord(this.queryParams).then((response) => {
|
||||
// response.rows.forEach((e) => {
|
||||
// e.birthDate ? (e.age = getAge(e.birthDate)) : e.age;
|
||||
// });
|
||||
// response.rows.forEach(item=>{
|
||||
// if (
|
||||
// item.phoneDialMethod == "AI" &&
|
||||
// item.nodeExecuteStatus == "EXECUTED"
|
||||
// ) {
|
||||
// this.AItrue = true;
|
||||
// } else {
|
||||
// this.AItrue = false;
|
||||
// }
|
||||
// if (
|
||||
// item.phoneDialMethod == "COMMON" &&
|
||||
// item.nodeExecuteStatus == "EXECUTED"
|
||||
// ) {
|
||||
// this.COMMONtrue = true;
|
||||
// } else {
|
||||
// this.COMMONtrue = false;
|
||||
// }
|
||||
// })
|
||||
|
||||
|
||||
this.patientInfoList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
@ -441,6 +859,12 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
//批次
|
||||
messageontemplateword(item) {
|
||||
console.log(item,'sn');
|
||||
this.queryParams.sn = item.sn;
|
||||
},
|
||||
|
||||
// 详情
|
||||
handdatile(row) {
|
||||
@ -475,6 +899,50 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-input.is-disabled .el-input__inner {
|
||||
background-color: #fff !important;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
::v-deep .el-textarea.is-disabled .el-textarea__inner {
|
||||
background-color: #fff !important;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
|
||||
border: 1px solid #dcdfe6 !important;
|
||||
border-color: #1890ff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox__input.is-disabled + span.el-checkbox__label {
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after {
|
||||
border-color: #1890ff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox__input.is-disabled .el-checkbox__inner {
|
||||
background-color: #fff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-radio__input.is-disabled .el-radio__inner {
|
||||
border: 1px solid #dcdfe6 !important;
|
||||
background-color: #fff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner {
|
||||
border-color: #1890ff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-radio__input.is-disabled.is-checked .el-radio__inner::after {
|
||||
color: #1890ff !important;
|
||||
background-color: #1890ff !important;
|
||||
}
|
||||
|
||||
::v-deep .el-radio__input.is-disabled + span.el-radio__label {
|
||||
color: black !important;
|
||||
}
|
||||
.titlenew {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
@ -485,4 +953,134 @@ export default {
|
||||
::v-deep .el-table__fixed-right::before {
|
||||
height: 0px !important;
|
||||
}
|
||||
.bottomheader {
|
||||
width: 99%;
|
||||
background-color: #fff;
|
||||
margin: 0 auto;
|
||||
|
||||
.title {
|
||||
line-height: 40px;
|
||||
font-size: 20px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.words {
|
||||
font-size: 15px;
|
||||
padding: 10px 50px 10px 10px;
|
||||
}
|
||||
}
|
||||
.audio {
|
||||
margin: 10px 0px 10px 0;
|
||||
.name {
|
||||
display: inline-block;
|
||||
margin: 20px
|
||||
}
|
||||
|
||||
.imagelist {
|
||||
padding-top: 10px;
|
||||
display: flex;
|
||||
img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.question {
|
||||
// width: 1000px;
|
||||
// height: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
background: #fafbff;
|
||||
box-shadow: 5px 5px 10px #dbe5f4;
|
||||
border-radius: 5px;
|
||||
line-height: 30px;
|
||||
margin-top: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.questionname {
|
||||
color: #559ca6;
|
||||
padding-left: 10px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.content {
|
||||
color: #939394;
|
||||
}
|
||||
}
|
||||
.imagelistright {
|
||||
padding-top: 10px;
|
||||
display: flex;
|
||||
// float: right;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.question {
|
||||
// width: 200px;
|
||||
// height: 30px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
|
||||
background: #51b9ff;
|
||||
box-shadow: 5px 5px 10px #dbe5f4;
|
||||
border-radius: 5px;
|
||||
line-height: 30px;
|
||||
margin-top: 5px;
|
||||
margin-left: 5px;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
// .questionname {
|
||||
// color: #5da0aa;
|
||||
// padding-left: 10px;
|
||||
// }
|
||||
.content {
|
||||
color: #dcdfe6;
|
||||
}
|
||||
}
|
||||
}
|
||||
audio {
|
||||
width: 350px;
|
||||
}
|
||||
.tk {
|
||||
::v-deep .el-textarea__inner {
|
||||
margin: 20px 0 10px 30px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-radio {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 10px 0px 10px 24px;
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox {
|
||||
padding: 10px 0 10px 0px;
|
||||
// padding: 10px;
|
||||
}
|
||||
|
||||
.custom-radio-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 10px 0 10px 10px;
|
||||
|
||||
.custom {
|
||||
padding: 10px 0 10px 10px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.custom-radio-group {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 10px 0 10px 10px;
|
||||
|
||||
.custom {
|
||||
padding: 10px 0 10px 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
403
src/views/manage/components/sn.vue
Normal file
403
src/views/manage/components/sn.vue
Normal file
@ -0,0 +1,403 @@
|
||||
<template>
|
||||
<div class="app-containers">
|
||||
<el-button
|
||||
size="small"
|
||||
@click="classificationOpen = true"
|
||||
style="
|
||||
width: 220px;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
"
|
||||
:style="handleselectId ? 'color:black' : 'color:#C0C4CC'"
|
||||
>{{ handleselectId ? handleselectId : "请选择批次" }}</el-button
|
||||
>
|
||||
<el-dialog
|
||||
title="批次选择"
|
||||
:visible.sync="classificationOpen"
|
||||
width="70%"
|
||||
:before-close="classificationOpenfalse"
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<!--用户数据-->
|
||||
<el-col :span="24" :xs="24">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="导入日期" prop="" label-width="120px">
|
||||
<el-date-picker v-model="createTime" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||||
style="width: 220px" value-format="yyyy-MM-dd" end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="医院" prop="">
|
||||
<el-select v-model="queryParams.hospitalAgencyId" filterable placeholder="请选择医院" style="width:220px" clearable
|
||||
@clear="clearhospitalAgency" @change="changehospitalAgency">
|
||||
<el-option v-for="item in hospitalAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="院区" prop="">
|
||||
<el-select v-model="queryParams.campusAgencyId" filterable placeholder="请选择院区" style="width:220px" clearable
|
||||
@clear="clearcampusAgency" >
|
||||
<el-option v-for="item in campusAgencylist" :key="item.id" :label="item.agencyName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
size="mini"
|
||||
@click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
||||
>重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="PatientInfoImportBatchlist"
|
||||
@row-dblclick="handleselect"
|
||||
>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="48"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column label="流水号" prop="sn" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="handsn(scope.row)">{{
|
||||
scope.row.sn
|
||||
}}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="患者数"
|
||||
align="center"
|
||||
prop="patientCount"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column label="操作人" align="center" prop="createBy" />
|
||||
<el-table-column label="导入日期" align="center" prop="createTime">
|
||||
<template slot-scope="scope">
|
||||
<span>{{
|
||||
parseTime(scope.row.createTime, "{y}-{m}-{d}")
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleselect(scope.row)"
|
||||
v-if="handleselectId != scope.row.sn"
|
||||
>选择</el-button
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="nohandleselect(scope.row)"
|
||||
v-if="handleselectId == scope.row.sn"
|
||||
>取消选择</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getlist"
|
||||
/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { patientInfoImportBatchlist} from "@/api/manage/patientInfoImport";
|
||||
|
||||
import stationAcatar from "../../system/stationAvatar/index.vue";
|
||||
import { selectAgencyList, getAgencyList } from "@/api/manage/selectAgencyList";
|
||||
|
||||
export default {
|
||||
props: ["templateId"],
|
||||
components: { stationAcatar },
|
||||
name: "Script",
|
||||
data() {
|
||||
return {
|
||||
createTime:"",
|
||||
//医院list
|
||||
hospitalAgencylist: [],
|
||||
// 院区list
|
||||
campusAgencylist: [],
|
||||
// 导入列表
|
||||
PatientInfoImportBatchlist: [],
|
||||
lookshow: false,
|
||||
phoneNodeContent: {
|
||||
scriptInfoId: null,
|
||||
flowScheme: null,
|
||||
nodes: [],
|
||||
edges: [],
|
||||
},
|
||||
handleselectId: "",
|
||||
classificationOpen: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
hospitalAgencyId: null,
|
||||
importTimeStart: "",
|
||||
importTimeEnd: "",
|
||||
campusAgencyId: null,
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getlist();
|
||||
this.selectAgencyinfo();
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.handleselectId = this.templateId;
|
||||
},
|
||||
watch: {
|
||||
|
||||
templateId(newValue, oldValue) {
|
||||
this.handleselectId = newValue;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
//获取医院list
|
||||
selectAgencyinfo() {
|
||||
let query = {
|
||||
agencyStatus: 'ON',
|
||||
nodeType: 'HOSPITAL',
|
||||
}
|
||||
selectAgencyList(query).then(res => {
|
||||
this.hospitalAgencylist = res.data
|
||||
})
|
||||
},
|
||||
//获取下级单位
|
||||
getAgencyListinfo(nodeType, id, type) {
|
||||
let query = {
|
||||
nodeType: nodeType,
|
||||
}
|
||||
if (nodeType == 'HOSPITAL') {
|
||||
query.hospitalId = id
|
||||
} else if (nodeType == 'CAMPUS') {
|
||||
query.campusId = id
|
||||
}
|
||||
getAgencyList(query).then(res => {
|
||||
// if (type)
|
||||
console.log(nodeType );
|
||||
console.log(res.data.campusList);
|
||||
{
|
||||
if (nodeType == 'HOSPITAL') {
|
||||
this.campusAgencylist = res.data.campusList;
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
//选中医院获取院区
|
||||
changehospitalAgency(id, type, typetwo) {
|
||||
this.getAgencyListinfo('HOSPITAL', id, type)
|
||||
// let query = {
|
||||
// agencyStatus: 'ON',
|
||||
// nodeType: 'CAMPUS',
|
||||
// parentId: id,
|
||||
// }
|
||||
// selectAgencyList(query).then(res => {
|
||||
if (type) {
|
||||
if (!typetwo) {
|
||||
this.form.campusAgencyId = null
|
||||
}
|
||||
} else {
|
||||
this.queryParams.campusAgencyId = null
|
||||
}
|
||||
// })
|
||||
},
|
||||
//选中院区获取科室
|
||||
changecampusAgency(id, type, typetwo) {
|
||||
this.getAgencyListinfo('CAMPUS', id, type)
|
||||
},
|
||||
//清空医院
|
||||
clearhospitalAgency(type) {
|
||||
if (type) {
|
||||
this.form.campusAgencyId = null
|
||||
this.form.departmentId = null
|
||||
this.form.wardId = null
|
||||
} else {
|
||||
this.queryParams.campusAgencyId = null
|
||||
this.queryParams.departmentId = null
|
||||
this.queryParams.wardId = null
|
||||
}
|
||||
},
|
||||
//清空院区
|
||||
clearcampusAgency(type) {
|
||||
if (type) {
|
||||
this.form.departmentId = null
|
||||
this.form.wardId = null
|
||||
this.getAgencyListinfo('HOSPITAL', this.form.hospitalAgencyId, type)
|
||||
} else {
|
||||
this.queryParams.departmentId = null
|
||||
this.queryParams.wardId = null
|
||||
this.getAgencyListinfo('HOSPITAL', this.queryParams.hospitalAgencyId)
|
||||
}
|
||||
},
|
||||
// 取消选择
|
||||
nohandleselect() {
|
||||
this.handleselectId = "";
|
||||
this.$emit("on-template", {
|
||||
sn: '',
|
||||
});
|
||||
},
|
||||
// 选择
|
||||
handleselect(item) {
|
||||
console.log(item,'0000000000');
|
||||
this.handleselectId = item.sn;
|
||||
this.$emit("on-template", {
|
||||
sn: item.sn,
|
||||
});
|
||||
this.classificationOpen = false;
|
||||
},
|
||||
classificationOpenfalse() {
|
||||
this.classificationOpen = false;
|
||||
},
|
||||
/** 查询话术信息列表 */
|
||||
getlist() {
|
||||
this.loading = true;
|
||||
patientInfoImportBatchlist(this.queryParams).then(response => {
|
||||
this.PatientInfoImportBatchlist = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
if (this.createTime?.length > 0) {
|
||||
this.queryParams.importTimeStart = this.createTime[0];
|
||||
this.queryParams.importTimeEnd = this.createTime[1];
|
||||
} else {
|
||||
this.queryParams.importTimeStart = null;
|
||||
this.queryParams.importTimeEnd = null;
|
||||
}
|
||||
this.getlist();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.queryParams = {
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
}
|
||||
this.createTime ='';
|
||||
this.handleQuery();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-input-number .el-input__inner {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__body {
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
|
||||
.app-containers {
|
||||
display: inline-block;
|
||||
padding: 0 !important;
|
||||
// background: red;
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
::v-deep .el-textarea__inner {
|
||||
width: 206px;
|
||||
}
|
||||
|
||||
.leftscript {
|
||||
// width: 30%;
|
||||
height: 650px;
|
||||
overflow: auto;
|
||||
|
||||
.name {
|
||||
font-weight: 700;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.listitem {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-bottom: 1px solid #dcdfe6;
|
||||
position: relative;
|
||||
|
||||
.count {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
left: 210px;
|
||||
color: #a4a6aa;
|
||||
top: 10px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.all {
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
padding-left: 13px;
|
||||
}
|
||||
|
||||
.allactive {
|
||||
background: #e8f4ff;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
padding-left: 13px;
|
||||
border-left: 3px solid #4d9de7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
left: 20px;
|
||||
top: -11px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -495,20 +495,20 @@
|
||||
>
|
||||
<!-- && scope.row.taskNodeType == 'PHONE_OUTBOUND' -->
|
||||
<el-button
|
||||
v-if="(AItrue || COMMONtruep) && scope.row.phoneNodeExecuteResultStatus=='SUCCESS'"
|
||||
v-if="(AItrue || COMMONtrue) && scope.row.phoneNodeExecuteResultStatus=='SUCCESS'"
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="playback(scope.row)"
|
||||
icon="el-icon-headset"
|
||||
>回放</el-button
|
||||
>
|
||||
<div v-else-if="(AItrue || COMMONtruep) && scope.row.phoneNodeExecuteResultStatus=='FAILURE'">
|
||||
<div v-else-if="(AItrue || COMMONtrue) &&scope.row.phoneNodeExecuteResultStatus=='FAILURE'">
|
||||
未接通
|
||||
</div>
|
||||
<div v-else-if="(AItrue || COMMONtruep) && scope.row.phoneNodeExecuteResultStatus=='EXPIRED'">
|
||||
<div v-else-if="(AItrue || COMMONtrue) && scope.row.phoneNodeExecuteResultStatus=='EXPIRED'">
|
||||
超期
|
||||
</div>
|
||||
<div v-else-if="(AItrue || COMMONtruep)">{{scope.row.phoneNodeExecuteResultStatus}}</div>
|
||||
<div v-else-if="(AItrue || COMMONtrue)">{{scope.row.phoneNodeExecuteResultStatus}}</div>
|
||||
|
||||
<el-button
|
||||
v-if="
|
||||
|
||||
Loading…
Reference in New Issue
Block a user