From 4cd2bfdb3778a94e339bb2ee6fad740bed20c582 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期四, 23 一月 2025 23:32:40 +0800 Subject: [PATCH] 测试完成 --- src/views/followvisit/record/detailpage/index.vue | 580 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 508 insertions(+), 72 deletions(-) diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue index 93964f2..cd911b9 100644 --- a/src/views/followvisit/record/detailpage/index.vue +++ b/src/views/followvisit/record/detailpage/index.vue @@ -18,6 +18,15 @@ >鏌ョ湅鎮h�呮湰娆℃湇鍔′俊鎭�</el-button > </div> + <div style="margin-left: 20px; color: #59a0f0"> + <el-link + href="https://9.208.2.207:6060/search-homepage" + target="_blank" + :underline="true" + > + 鍓嶅線CDSS鏌ヨ + </el-link> + </div> </div> <!-- <el-button type="success">闅忚鍚庣煭淇�</el-button> --> </div> @@ -26,22 +35,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 v-if="scope.row.sendstate == 1"> + <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> + <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" @@ -152,44 +176,147 @@ </el-table> </div> </div> - <div class="Followuserinfo"> + <div :class="form.serviceType == 2 ? 'Followuserinfo' : 'Followuserinfos'"> <div> <div class="headline"> - <div>浜哄伐澶勭悊鎰忚</div> + <div>浜哄伐澶勭悊</div> + <div style="margin-left: 30px"> + <el-button type="warning">涓�閿懠鍙�</el-button> + </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> + <el-form ref="form" :model="form" label-width="80px"> + <el-form-item label="闅忚璁板綍"> + <el-input type="textarea" v-model="form.remark"></el-input> + </el-form-item> + + <el-form-item label="澶勭悊鎰忚"> + <div> + <el-button plain type="warning" @click="Editsingletaskson('1')" + >鏆備笉澶勭悊</el-button + > + <el-button plain type="success" @click="Editsingletaskson('2')" + >鐥呮儏绋冲畾</el-button + > + <el-button plain type="primary" @click="Editsingletaskson('3')" + >閫氱煡灏辫瘖</el-button + > + <!-- <el-button type="danger" @click="Editsingletaskson('4')" + >澶辫</el-button + > --> + <el-button plain type="info" @click="Editsingletaskson('5')" + >涓績闅忚</el-button + > + <el-button type="primary" round @click="sendAgain()" + >鍐嶆闅忚</el-button + > + </div> + </el-form-item> + </el-form> + <el-collapse v-model="activeNames" @change="handleChange"> + <el-collapse-item title="鏌ョ湅褰撳墠鎮h�呬俊鎭�" name="1"> + <div class="detailed"> + <el-form ref="userform" :model="userform" label-width="100px"> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="鎮h�呭鍚�" prop="name"> + <el-input + v-model="userform.name" + placeholder="璇疯緭鍏ュ鍚�" + maxlength="30" + ></el-input> </el-form-item + ></el-col> + <el-col :span="12" + ><el-form-item label="鑱旂郴鏂瑰紡" prop="telcode"> + <el-input + v-model="userform.telcode" + placeholder="璇疯緭鍏ヨ仈绯绘柟寮�" + maxlength="30" + /> </el-form-item + ></el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="鍑虹敓鍦�" prop="birthplace"> + <el-input + v-model="userform.birthplace" + placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅" + maxlength="50" + /> </el-form-item + ></el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24" + ><el-form-item label="灞呬綇鍦�" prop="placeOfResidence"> + <el-input + v-model="userform.placeOfResidence" + placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅" + maxlength="50" + /> </el-form-item + ></el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="鏍囩" prop="desc"> + <div class="xinz-inf"> + <el-tag + :key="tag.tagname" + type="success" + v-for="tag in dynamicTags" + v-if="tag.isoperation != 3" + :disable-transitions="false" + > + {{ tag.tagname }} + </el-tag> + <el-select + v-if="inputVisible" + v-model="inputValue" + @change="handleInputConfirm" + filterable + allow-create + default-first-option + placeholder="璇烽�夋嫨/鏌ヨ" + > + <el-option + v-for="item in options" + :key="item.tagid" + :label="item.tagname" + :value="item.tagname" + > + </el-option> + </el-select> + + <el-button + v-else + class="button-new-tag" + size="small" + @click="showInput" + >+ 鏂板鏍囩</el-button + > + </div> + </el-form-item> + </el-col> + </el-row> + </el-form> + </div> + </el-collapse-item> + </el-collapse> </div> </div> - <div> - <el-tabs type="border-card"> - <el-tab-pane> + <div v-if="form.serviceType == 2"> + <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=" @@ -280,69 +407,212 @@ </div> </div> </div> - <el-button type="primary" @click="getdetail">淇濆瓨闂嵎</el-button> + + <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 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 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> - <mini-audio - :audio-source=" - topicobj.ivrVoice - ? topicobj.ivrVoice - : 'https://example.com/example.mp3' - " - ></mini-audio> + <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> + + <div> + <mini-audio + :audio-source=" + item.questionvoice + ? item.questionvoice + : 'https://example.com/example.mp3' + " + ></mini-audio> + </div> </div> </div> </div> </div> - <el-button type="primary" @click="getdetail">淇濆瓨闅忚璇︽儏</el-button> + <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> </div> + <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible"> + <el-form ref="form" :model="zcform" label-width="80px"> + <el-form-item label="鎮h�呭悕绉�"> + <el-input style="width: 400px" v-model="zcform.name"></el-input> + </el-form-item> + <el-form-item label="骞撮緞"> + <el-input style="width: 400px" v-model="zcform.name"></el-input> + </el-form-item> + <el-form-item label="璇婃柇"> + <el-input style="width: 400px" v-model="zcform.name"></el-input> + </el-form-item> + <el-form-item label="绉戝"> + <el-input style="width: 400px" v-model="zcform.name"></el-input> + </el-form-item> + <el-form-item label="鐥呭尯"> + <el-input style="width: 400px" v-model="zcform.name"></el-input> + </el-form-item> + + <el-form-item label="闅忚鏂瑰紡"> + <el-radio-group v-model="zcform.resource"> + <el-radio label="1">鏈梾鍖洪殢璁�</el-radio> + <el-radio label="2">闅忚涓績闅忚</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="鍗冲埢鍙戦��"> + <el-switch v-model="zcform.delivery"></el-switch> + </el-form-item> + <el-form-item label="闅忚鏃堕棿" v-if="!zcform.delivery"> + <el-col :span="11"> + <el-date-picker + type="date" + placeholder="閫夋嫨鏃ユ湡" + v-model="zcform.date1" + style="width: 100%" + ></el-date-picker> + </el-col> + <el-col class="line" :span="2">-</el-col> + <el-col :span="11"> + <el-time-picker + placeholder="閫夋嫨鏃堕棿" + v-model="zcform.date2" + style="width: 100%" + ></el-time-picker> + </el-col> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="dialogFormVisible = false" + >纭� 瀹�</el-button + > + </div> + </el-dialog> </div> </template> <script> import { getsearchrResults, + getPersonVoices, getTaskservelist, + getTaskFollowup, Editsingletaskson, serviceSubtaskDetailedit, serviceSubtaskDetailadd, + updatePersonVoices, + addPersonVoices, } from "@/api/AiCentre/index"; +import { messagelistpatient } from "@/api/patient/homepage"; 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: "", + zcform: {}, + form: {}, tableDatatop: [], //棰樼洰琛� + voiceDatatop: [], //棰樼洰琛� + dynamicTags: [], + + userform: {}, Whetherall: false, //鏄惁鍏ㄩ儴璁板綍灞曠ず + dialogFormVisible: false, + Voicetype: 0, //鏄惁涓鸿闊虫湇鍔� logsheetlist: [], - topicobj:{}, + topicobj: {}, sendname: null, serviceType: null, id: null, @@ -356,8 +626,9 @@ 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); }, @@ -368,7 +639,7 @@ taskid: this.taskid, patid: this.patid, subId: this.id, - isFinish:false, + isFinish: false, }).then((res) => { if (res.code === 200) { this.tableDatatop = res.data.scriptResult.script; @@ -383,6 +654,75 @@ }); this.taskname = res.data.taskName; this.overdata(); + } + }); + }, + // 鑾峰彇鍩虹淇℃伅 + getuserinfo() { + const queryParams = { + pid: Number(this.id), + allhosp: "0", + pageNum: 1, + }; + // 鎮h�呭熀纭�淇℃伅 + messagelistpatient(queryParams).then((response) => { + this.userform = response.rows[0]; + this.dynamicTags = response.rows[0].tagList.map(this.processElement); + }); + }, + // 鑾峰彇璇煶鏁版嵁 + 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"); } }); }, @@ -431,6 +771,35 @@ }); 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; + if (!item.id) { + item.isoperation = 1; + } + item.patid = this.patid; + item.templateid = item.templateID; + }); + let obj ={ + serviceSubtaskDetailList: this.tableDatatop, + param1: this.taskid, + param2: this.patid, + subId: this.id, + } + + addPersonVoices(obj).then((res) => { + if (res.code == 200) { + this.$modal.msgSuccess("鏈嶅姟淇濆瓨鎴愬姛"); + } + }); + + }, + // 鑾峰彇鎮h�呰褰� getTaskservelist(taskid) { this.taskid = taskid; @@ -439,12 +808,26 @@ } else { this.Whetherall = true; } + console.log("111"); + getTaskservelist({ patid: this.patid, taskid: taskid, }).then((res) => { if (res.code == 200) { + this.form = res.rows[0].serviceSubtaskList[0]; + console.log(this.form, "form3"); this.logsheetlist = res.rows[0].serviceSubtaskList; + this.templateid = this.logsheetlist[0].templateid; + console.log(this.form.serviceType, "serviceType"); + } + + if (this.form.scriptType == 2) { + if (this.Voicetype) { + this.getPersonVoices(); + } else { + this.getsearchrResults(); + } } }); }, @@ -455,7 +838,7 @@ taskid: this.taskid, }).then((res) => { if (res.code == 200) { - objson = res.rows[0]; + objson = res.rows[0].serviceSubtaskList[0]; objson.suggest = son; Editsingletaskson(objson).then((res) => { if (res.code) { @@ -474,8 +857,6 @@ }).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) { @@ -485,6 +866,10 @@ }); } }); + }, + // 璋冭捣鍐嶆鍙戦�� + sendAgain() { + this.dialogFormVisible = true; }, // 鏇存敼寮傚父鐘舵�� Seedetails(row) { @@ -497,9 +882,17 @@ .catch(() => {}); }, handleOptionChange(a, b, c) { - var obj = this.tableDatatop[b].svyLibTemplateTargetoptions.find( - (item) => item.optioncontent == a - ); + 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 { @@ -558,6 +951,27 @@ } } } +.Followuserinfos { + margin: 20px 10px; + align-items: center; + height: 300px; + padding: 30px; + background: #ffff; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); + .userinfo-text { + font-size: 20px; + margin-right: 20px; + margin-bottom: 10px; + } + .userinfo-value { + color: rgb(15, 139, 211); + span { + margin-right: 20px; + } + } +} .borderdiv { min-height: 60vh; font-size: 20px; @@ -569,7 +983,7 @@ text-align: center; } .leftside { - margin-bottom: 30px; + margin: 30px 0; span { width: 400px; margin-left: 20px; @@ -619,6 +1033,21 @@ .scriptTopic-isabnormal { color: red; } +.detailed { + width: 88%; + border-radius: 8px; + padding: 30px; + margin-bottom: 30px; + background-color: #ddf0f8; + .bg-purple { + margin-bottom: 20px; + } + .spanvalue { + display: inline-block; + min-width: 200px; + border-bottom: 1px solid rgb(172, 172, 172); + } +} .headline { font-size: 24px; height: 40px; @@ -645,6 +1074,10 @@ 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; /* 鏍规嵁闇�瑕佽皟鏁� */ @@ -660,6 +1093,9 @@ ::v-deep.offside-value .el-radio__label { color: #fff; } +::v-deep.el-link.el-link--default { + color: #02a7f0 !important; +} .mulsz { font-size: 25px; margin-top: 20px; -- Gitblit v1.9.3