From 1cb1fbf80c955986385377b5f84e8915d1e655d6 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期三, 15 一月 2025 15:04:00 +0800
Subject: [PATCH] 测试完成
---
src/views/followvisit/record/detailpage/index.vue | 606 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 548 insertions(+), 58 deletions(-)
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 8837754..3856a72 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -6,20 +6,19 @@
<div class="userinfo-text">
<!-- <span>鎮h�呮湇鍔¤鎯�</span> -->
<div class="headline">
- <div>鎮h�呮湇鍔¤鎯�</div>
- <div style="margin-left: 20px">
- <el-button
- v-if="!Whetherall"
- type="primary"
- @click="getTaskservelist()"
- >鏌ョ湅鎮h�呭叏閮ㄦ湇鍔�</el-button>
- <el-button
- v-else
- type="success"
- @click="getTaskservelist(taskid)"
- >鏌ョ湅鎮h�呮湰娆℃湇鍔′俊鎭�</el-button>
- </div>
+ <div>鎮h�呮湇鍔¤鎯�</div>
+ <div style="margin-left: 20px">
+ <el-button
+ v-if="!Whetherall"
+ type="primary"
+ @click="getTaskservelist()"
+ >鏌ョ湅鎮h�呭叏閮ㄦ湇鍔�</el-button
+ >
+ <el-button v-else type="success" @click="getTaskservelist(taskid)"
+ >鏌ョ湅鎮h�呮湰娆℃湇鍔′俊鎭�</el-button
+ >
</div>
+ </div>
<!-- <el-button type="success">闅忚鍚庣煭淇�</el-button> -->
</div>
</div>
@@ -27,7 +26,37 @@
<el-table :data="logsheetlist" style="width: 100%">
<el-table-column prop="sendname" align="center" label="濮撳悕">
</el-table-column>
- <el-table-column prop="sendstate" align="center" label="鏈嶅姟鐘舵��">
+ <el-table-column
+ prop="sendstate"
+ align="center"
+ width="200"
+ label="鏈嶅姟鐘舵��"
+ >
+ <template slot-scope="scope">
+ <div v-if="scope.row.sendstate == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >琚鍙�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呭彂閫�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 3">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插彂閫佹湭棰嗗彇</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 4">
+ <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+ </div>
+ <div v-if="scope.row.sendstate == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鍙戦�佸け璐�</el-tag
+ >
+ </div>
+ </template>
</el-table-column>
<el-table-column
prop="finishtime"
@@ -38,6 +67,60 @@
>
</el-table-column>
<el-table-column
+ label="鍑洪櫌鏃ユ湡"
+ width="200"
+ align="center"
+ key="endtime"
+ prop="endtime"
+ >
+ <template slot-scope="scope">
+ <span>{{ formatTime(scope.row.endtime) }}</span>
+ </template></el-table-column
+ >
+ <el-table-column
+ label="璐d换鎶ゅ+"
+ width="120"
+ align="center"
+ key="nurseName"
+ prop="nurseName"
+ />
+ <el-table-column
+ label="涓绘不鍖荤敓"
+ width="120"
+ align="center"
+ key="drname"
+ prop="drname"
+ />
+
+ <el-table-column
+ label="缁撴灉鐘舵��"
+ align="center"
+ key="excep"
+ prop="excep"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_yujing"
+ :value="scope.row.excep"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="澶勭悊鎰忚"
+ align="center"
+ key="suggest"
+ prop="suggest"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_suggest"
+ :value="scope.row.suggest"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
prop="taskName"
align="center"
width="200"
@@ -45,6 +128,7 @@
label="浠诲姟鍚嶇О"
>
</el-table-column>
+
<el-table-column
prop="templatename"
align="center"
@@ -83,23 +167,52 @@
</el-table>
</div>
</div>
+ <div class="Followuserinfo">
+ <div>
+ <div class="headline">
+ <div>浜哄伐澶勭悊鎰忚</div>
+ </div>
+ <div style="margin-left: 30px">
+ <el-button type="warning" @click="Editsingletaskson('1')"
+ >鏆備笉澶勭悊</el-button
+ >
+ <el-button type="success" @click="Editsingletaskson('2')"
+ >鐥呮儏绋冲畾</el-button
+ >
+ <el-button type="primary" @click="Editsingletaskson('3')"
+ >閫氱煡灏辫瘖</el-button
+ >
+ <!-- <el-button type="danger" @click="Editsingletaskson('4')"
+ >澶辫</el-button
+ > -->
+ <el-button type="info" @click="Editsingletaskson('5')"
+ >浜哄伐闅忚</el-button
+ >
+ </div>
+ </div>
+ </div>
<div>
- <el-tabs type="border-card">
- <el-tab-pane>
+ <el-tabs v-model="activeName" type="border-card">
+ <el-tab-pane name="wj">
<span class="mulsz" slot="label"
><i class="el-icon-notebook-1"></i> 闂嵎闅忚缁撴灉</span
>
<div class="CONTENT">
<div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
- <div class="preview-left">
+ <!-- 闂嵎浠诲姟灞曠ず -->
+ <div class="preview-left" v-if="!Voicetype">
<!-- 鍗曢�� -->
<div
class="topic-dev"
v-for="(item, index) in tableDatatop"
- :key="item.aaa"
+ :key="item.id"
>
<div
- class="scriptTopic-dev"
+ :class="
+ item.isabnormal
+ ? 'scriptTopic-isabnormal'
+ : 'scriptTopic-dev'
+ "
:key="index"
v-if="item.scriptType == 1"
>
@@ -115,6 +228,7 @@
v-for="(
items, index
) in item.svyLibTemplateTargetoptions"
+ :class="items.isabnormal ? 'red-star' : ''"
:key="index"
:label="items.optioncontent"
>{{ items.optioncontent }}</el-radio
@@ -127,7 +241,11 @@
</div>
<!-- 澶氶�� -->
<div
- class="scriptTopic-dev"
+ :class="
+ item.isabnormal
+ ? 'scriptTopic-isabnormal'
+ : 'scriptTopic-dev'
+ "
:key="index"
v-if="item.scriptType == 2"
>
@@ -140,6 +258,7 @@
@change="updateScore($event, index, item)"
>
<el-checkbox
+ :class="items.isabnormal ? 'red-star' : ''"
@change="$forceUpdate()"
v-for="(
items, indexs
@@ -177,29 +296,121 @@
</div>
</div>
</div>
+ <!-- 璇煶闂嵎褰㈠紡灞曠ず -->
+ <div class="preview-left" v-else>
+ <!-- 鍗曢�� -->
+ <div
+ class="topic-dev"
+ v-for="(item, index) in tableDatatop"
+ :key="item.id"
+ >
+ <div v-if="item.targetvalue">
+ <div class="dev-text">
+ {{ index + 1 }}銆乕鍗曢�塢<span>{{ item.questiontext }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group
+ v-model="item.matchedtext"
+ @change="handleOptionChange($event, index, item)"
+ >
+ <el-radio
+ v-for="(items, index) in item.scriptResult"
+ :key="items"
+ :label="items"
+ >{{ items }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ <div v-show="item.prompt">
+ <el-alert :title="item.prompt" type="warning"> </el-alert>
+ </div>
+ </div>
+
+ <!-- 濉┖ -->
+ <div class="scriptTopic-dev" :key="index" v-else>
+ <div class="dev-text">
+ {{ index + 1 }}銆乕闂瓟]<span>{{ item.questiontext }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-input
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="item.matchedtext"
+ clearable
+ >
+ </el-input>
+ </div>
+ </div>
+ </div>
+ </div>
+ <el-button v-if="Voicetype" type="primary" @click="yuyingetdetail"
+ >淇濆瓨鏈嶅姟璇︽儏</el-button
+ >
+ <el-button v-else type="primary" @click="getdetail"
+ >淇濆瓨鏈嶅姟璇︽儏</el-button
+ >
</div>
</el-tab-pane>
- <el-tab-pane>
+ <!-- 璇煶闅忚璇︽儏---------------------- -->
+ <el-tab-pane name="yy">
<span class="mulsz" slot="label"
><i class="el-icon-headset"></i> 璇煶闅忚璇︽儏</span
>
<div class="borderdiv">
- <div>
- <div class="leftside">
- <i class="el-icon-phone-outline"></i
- ><span>鎮ㄤ粖澶╄韩浣撴儏鍐垫�庝箞鏍�</span>
- </div>
- <div class="offside">
- <i class="el-icon-user"></i>
- <div class="offside-value">
- <el-input v-model="input"></el-input>
- <el-radio v-model="radio" label="1">寰堟</el-radio>
- <el-radio v-model="radio" label="2">杩樺彲浠�</el-radio>
- <el-radio v-model="radio" label="3">涓嶅お濂�</el-radio>
- <el-radio v-model="radio" label="4">姣旇緝宸�</el-radio>
+ <div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
+ <div
+ style="
+ display: flex;
+ text-align: center;
+ align-items: center;
+ color: #59a0f0;
+ "
+ >
+ 瀹屾暣璇煶锛�
+ <mini-audio
+ :audio-source="
+ voice ? voice : 'https://example.com/example.mp3'
+ "
+ ></mini-audio>
+ </div>
+ <div class="preview-left">
+ <div v-for="item in voiceDatatop">
+ <div class="leftside">
+ <i class="el-icon-phone-outline"></i
+ ><span>{{ item.questiontext }}</span>
+ </div>
+ <div class="offside">
+ <i class="el-icon-user"></i>
+ <div class="offside-value">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 1 }"
+ v-model="item.asrtext"
+ ></el-input>
+ <!-- <el-radio v-model="radio" label="1">寰堟</el-radio>
+ <el-radio v-model="radio" label="2">杩樺彲浠�</el-radio>
+ <el-radio v-model="radio" label="3">涓嶅お濂�</el-radio>
+ <el-radio v-model="radio" label="4">姣旇緝宸�</el-radio> -->
+ <div>
+ <mini-audio
+ :audio-source="
+ item.questionvoice
+ ? item.questionvoice
+ : 'https://example.com/example.mp3'
+ "
+ ></mini-audio>
+ </div>
+ </div>
</div>
</div>
</div>
+ <el-button v-if="Voicetype" type="primary" @click="yuyingetdetail"
+ >淇濆瓨闅忚璇︽儏</el-button
+ >
+ <el-button v-else type="primary" @click="getdetail"
+ >淇濆瓨闅忚璇︽儏</el-button
+ >
</div>
</el-tab-pane>
</el-tabs>
@@ -208,20 +419,37 @@
</template>
<script>
-import { getsearchrResults, getTaskservelist } from "@/api/AiCentre/index";
+import {
+ getsearchrResults,
+ getPersonVoices,
+ getTaskservelist,
+ getTaskFollowup,
+ Editsingletaskson,
+ serviceSubtaskDetailedit,
+ serviceSubtaskDetailadd,
+ updatePersonVoices,
+ addPersonVoices,
+} from "@/api/AiCentre/index";
export default {
+ dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
data() {
return {
- radio: "1",
userid: "",
input: "浠婂ぉ韬綋杩樹笉閿�",
radio: "2",
taskname: "",
+ activeName: "wj",
+ voice: "",
+ templateid: "",
tableDatatop: [], //棰樼洰琛�
- Whetherall:false, //鏄惁鍏ㄩ儴璁板綍灞曠ず
+ voiceDatatop: [], //棰樼洰琛�
+ Whetherall: false, //鏄惁鍏ㄩ儴璁板綍灞曠ず
+ Voicetype: 0, //鏄惁涓鸿闊虫湇鍔�
logsheetlist: [],
+ topicobj: {},
sendname: null,
serviceType: null,
+ id: null,
taskid: null,
patid: null,
};
@@ -229,10 +457,12 @@
created() {
this.taskid = this.$route.query.taskid;
+ this.id = this.$route.query.id;
this.sendname = this.$route.query.sendname;
this.patid = this.$route.query.patid;
+ this.Voicetype = this.$route.query.Voicetype;
this.serviceType = this.$route.query.serviceType;
- this.getsearchrResults();
+
this.getTaskservelist(this.taskid);
},
@@ -242,41 +472,264 @@
getsearchrResults({
taskid: this.taskid,
patid: this.patid,
+ subId: this.id,
+ isFinish: false,
}).then((res) => {
if (res.code === 200) {
this.tableDatatop = res.data.scriptResult.script;
this.tableDatatop.forEach((item) => {
if (item.scriptResult && item.scriptType != 2) {
+ item.isoption = 3;
item.scriptResult = JSON.parse(item.scriptResult);
} else if (item.scriptResult && item.scriptType == 2) {
item.scriptResult = item.scriptResult.split("&");
+ item.isoption = 3;
}
});
this.taskname = res.data.taskName;
+ this.overdata();
}
});
},
+ // 鑾峰彇璇煶鏁版嵁
+ getPersonVoices() {
+ let obj = {
+ taskid: this.taskid,
+ patid: this.patid,
+ subId: this.id,
+ };
+ console.log(this.voiceDatatop, "111");
+
+ getPersonVoices(obj).then((res) => {
+ console.log("222");
+ if (res.code == 200) {
+ this.voiceDatatop = res.data.serviceSubtaskDetails;
+ this.voice = res.data.voice;
+ this.activeName = "yy";
+ this.taskname = res.data.taskName;
+ // 闂嵎灞曠ず鏁版嵁澶勭悊
+ this.tableDatatop = res.data.filteredDetails;
+ this.tableDatatop.forEach((item) => {
+ if (item.targetvalue) {
+ item.scriptResult = item.targetvalue.split("&");
+ } else {
+ item.scriptResult = [];
+ }
+ });
+ if (!this.tableDatatop.length) {
+ this.puttaskid(this.templateid);
+ }
+ }
+ });
+ },
+ // 鑾峰彇闂嵎瀹屾暣鏁版嵁姣斿
+ puttaskid(id) {
+ getTaskFollowup(id).then((res) => {
+ if (res.code == 200) {
+ this.tableDatatop = res.data.ivrTaskTemplateScriptVOList;
+ this.tableDatatop.forEach((item) => {
+ item.id = null;
+ // 绫诲瀷鍒ゆ柇璧嬪��
+ if (item.ivrTaskScriptTargetoptionList) {
+ item.targetvalue = 1;
+ item.questiontext = item.scriptContent;
+ item.targetvalue = item.ivrTaskScriptTargetoptionList
+ .map((obj) => obj.targetvalue)
+ .join("&");
+ }
+ if (item.targetvalue) {
+ item.scriptResult = item.targetvalue.split("&");
+ } else {
+ item.scriptResult = [];
+ }
+ });
+ console.log(this.tableDatatop, "this.tableDatatop");
+ }
+ });
+ },
+ // 鍖绘姢浜哄憳瀛樺偍鏁版嵁
+ getdetail() {
+ let excep = "";
+ this.tableDatatop.forEach((item) => {
+ var objs = item.svyLibTemplateTargetoptions.find(
+ (items) => items.optioncontent == item.scriptResult
+ );
+
+ if (objs.isabnormal) {
+ excep = 1;
+ }
+
+ let obj = {
+ asrtext: null,
+ patid: this.patid,
+ subId: this.id,
+ taskid: this.taskid,
+ scriptid: item.id,
+ questiontext: item.scriptContent,
+ };
+ if (item.scriptType == 2 && item.scriptResult[0]) {
+ obj.asrtext = item.scriptResult.join("&");
+ } else if (item.scriptType != 2 && item.scriptResult) {
+ obj.asrtext = JSON.stringify(item.scriptResult);
+ }
+
+ if (item.isoption == 3) {
+ serviceSubtaskDetailedit(obj).then((res) => {
+ if (res.code == 200) {
+ } else {
+ this.$modal.error("淇敼澶辫触");
+ }
+ });
+ } else {
+ serviceSubtaskDetailadd(obj).then((res) => {
+ if (res.code == 200) {
+ console.log(res);
+ } else {
+ this.$modal.error("淇敼澶辫触");
+ }
+ });
+ }
+ });
+ this.Editsingletasksonyic(excep);
+ },
+ yuyingetdetail() {
+ this.tableDatatop.forEach((item,index) => {
+ console.log(item.scriptResult, "scriptResult");
+ item.scriptResult = item.scriptResult.join("&");
+ item.templatequestionnum=index+1;
+ item.subId = this.id;
+ item.taskid = this.taskid;
+ item.asrtext = item.matchedtext;
+ item.isoperation = 1;
+ item.patid = this.patid;
+ item.templateid = item.templateID;
+ });
+ if (this.tableDatatop[0].id) {
+ updatePersonVoices(this.tableDatatop).then((res) => {
+ if (res.code == 200) {
+ this.$modal.msgSuccess("鏈嶅姟淇敼鎴愬姛");
+ }
+ });
+ } else {
+ addPersonVoices(this.tableDatatop).then((res) => {
+ if (res.code == 200) {
+ this.$modal.msgSuccess("鏈嶅姟淇濆瓨鎴愬姛");
+ }
+ });
+ }
+ },
// 鑾峰彇鎮h�呰褰�
getTaskservelist(taskid) {
+ this.taskid = taskid;
if (taskid) {
- this.Whetherall=false;
- }else{
- this.Whetherall=true;
+ this.Whetherall = false;
+ } else {
+ this.Whetherall = true;
}
getTaskservelist({
patid: this.patid,
taskid: taskid,
}).then((res) => {
if (res.code == 200) {
- this.logsheetlist = res.rows;
+ this.logsheetlist = res.rows[0].serviceSubtaskList;
+ this.templateid = this.logsheetlist[0].templateid;
+ }
+ if (this.Voicetype) {
+ this.getPersonVoices();
+ } else {
+ this.getsearchrResults();
}
});
},
+ Editsingletaskson(son) {
+ let objson = {};
+ getTaskservelist({
+ patid: this.patid,
+ taskid: this.taskid,
+ }).then((res) => {
+ if (res.code == 200) {
+ objson = res.rows[0].serviceSubtaskList[0];
+ objson.suggest = son;
+ Editsingletaskson(objson).then((res) => {
+ if (res.code) {
+ this.$modal.msgSuccess("璁板綍鎴愬姛");
+ this.getTaskservelist(this.taskid);
+ }
+ });
+ }
+ });
+ },
+ Editsingletasksonyic(excep) {
+ let objson = {};
+ getTaskservelist({
+ patid: this.patid,
+ taskid: this.taskid,
+ }).then((res) => {
+ if (res.code == 200) {
+ objson = res.rows[0].serviceSubtaskList[0];
+ console.log(objson, "obj");
+
+ objson.excep = excep;
+ Editsingletaskson(objson).then((res) => {
+ if (res.code) {
+ this.$modal.msgSuccess("鏈嶅姟淇敼鎴愬姛");
+ this.getTaskservelist(this.taskid);
+ }
+ });
+ }
+ });
+ },
+ // 鏇存敼寮傚父鐘舵��
Seedetails(row) {
- this.$modal.confirm('鏄惁鏌ョ湅浠诲姟涓�"' + optionids + '"鐨勬湇鍔¢」锛�').then(function () {
- }).then(() => {
+ this.$modal
+ .confirm('鏄惁鏌ョ湅浠诲姟涓�"' + optionids + '"鐨勬湇鍔¢」锛�')
+ .then(function () {})
+ .then(() => {
this.getList();
- }).catch(() => { });
+ })
+ .catch(() => {});
+ },
+ handleOptionChange(a, b, c) {
+ console.log(this.tableDatatop[b], "this.tableDatatop[b]");
+
+ if (this.Voicetype) {
+ var obj = this.tableDatatop[b].ivrTaskScriptTargetoptionList.find(
+ (item) => item.optioncontent == a
+ );
+ } else {
+ var obj = this.tableDatatop[b].svyLibTemplateTargetoptions.find(
+ (item) => item.optioncontent == a
+ );
+ }
+ if (obj.isabnormal) {
+ this.tableDatatop[b].isabnormal = true;
+ } else {
+ this.tableDatatop[b].isabnormal = false;
+ }
+ this.$forceUpdate();
+ },
+ overdata() {
+ this.tableDatatop.forEach((item, index) => {
+ console.log(item.svyLibTemplateTargetoptions);
+
+ var obj = item.svyLibTemplateTargetoptions.find(
+ (items) => items.optioncontent == item.scriptResult
+ );
+ if (obj) {
+ if (obj.isabnormal) {
+ this.tableDatatop[index].isabnormal = true;
+ } else {
+ this.tableDatatop[index].isabnormal = false;
+ }
+ this.$forceUpdate();
+ }
+ });
+ },
+
+ updateScore(a, b, c) {
+ console.log(a);
+ console.log(b);
+ console.log(c);
},
},
};
@@ -310,8 +763,14 @@
min-height: 60vh;
font-size: 20px;
padding: 30px;
+ .title {
+ font-size: 22px;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+ }
.leftside {
- margin-bottom: 30px;
+ margin: 30px 0;
span {
width: 400px;
margin-left: 20px;
@@ -358,20 +817,51 @@
}
}
}
+.scriptTopic-isabnormal {
+ color: red;
+}
.headline {
- font-size: 24px;
- height: 40px;
- border-left: 5px solid #41a1be;
- padding-left: 5px;
- margin-bottom: 10px;
- display: flex;
- // justify-content: space-between;
- .Add-details {
- font-size: 18px;
- color: #02a7f0;
- cursor: pointer;
- }
+ font-size: 24px;
+ height: 40px;
+ border-left: 5px solid #41a1be;
+ padding-left: 5px;
+ margin-bottom: 10px;
+ display: flex;
+ // justify-content: space-between;
+ .Add-details {
+ font-size: 18px;
+ color: #02a7f0;
+ cursor: pointer;
}
+}
+.red-star {
+ ::v-deep.el-radio__label {
+ position: relative;
+ padding-right: 10px; /* 鏍规嵁闇�瑕佽皟鏁� */
+ }
+ ::v-deep.el-radio__label::after {
+ content: "*";
+ color: red;
+ position: absolute;
+ right: -5px; /* 鏍规嵁闇�瑕佽皟鏁� */
+ top: 0;
+ }
+ ::v-deep.el-input-group__textarea {
+ white-space: pre-wrap; /* 淇濇寔绌虹櫧绗﹀簭鍒楀苟姝e父鎹㈣ */
+ word-break: break-all; /* 鍦ㄩ暱鍗曡瘝鎴朥RL鍦板潃鍐呴儴杩涜鎹㈣ */
+ }
+ ::v-deep.el-checkbox__label {
+ position: relative;
+ padding-right: 10px; /* 鏍规嵁闇�瑕佽皟鏁� */
+ }
+ ::v-deep.el-checkbox__label::after {
+ content: "*";
+ color: red;
+ position: absolute;
+ right: -5px; /* 鏍规嵁闇�瑕佽皟鏁� */
+ top: 0;
+ }
+}
::v-deep.offside-value .el-radio__label {
color: #fff;
}
--
Gitblit v1.9.3