From 30898b3fcc871f58f0d49200bd50de30cd6b12ad Mon Sep 17 00:00:00 2001 From: WXL (wul) <wl_5969728@163.com> Date: 星期四, 11 九月 2025 17:51:40 +0800 Subject: [PATCH] 测试完成 --- src/views/followvisit/record/detailpage/index.vue | 340 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 331 insertions(+), 9 deletions(-) diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue index 426e933..4d9d873 100644 --- a/src/views/followvisit/record/detailpage/index.vue +++ b/src/views/followvisit/record/detailpage/index.vue @@ -18,7 +18,7 @@ >鍙睍绀烘湰娆℃湇鍔′俊鎭�</el-button > </div> - <div style="margin-left: 20px; color: #59a0f0"> + <!-- <div style="margin-left: 20px; color: #59a0f0"> <el-link href="https://9.208.2.207:6060/search-homepage" target="_blank" @@ -26,7 +26,7 @@ > 鍓嶅線CDSS鏌ヨ </el-link> - </div> + </div> --> <div class="merge-controls" v-if="Whetherall"> <el-button type="primary" @@ -317,7 +317,7 @@ </el-radio-group> </div> <div - v-if="item.showAppendInput||item.answerps" + v-if="item.showAppendInput || item.answerps" class="append-input-container" > <el-input @@ -381,8 +381,18 @@ {{ index + 1 }}銆乕闂瓟]<span>{{ item.scriptContent }}</span> + <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span> </div> - <div class="dev-xx"> + <div class="dev-xx" v-if="item.valueType == 3"> + <el-input + type="text" + v-numeric-only + placeholder="璇疯緭鍏ョ瓟妗�" + v-model="item.scriptResult" + > + </el-input> + </div> + <div class="dev-xx" v-else> <el-input type="textarea" :rows="2" @@ -437,15 +447,25 @@ <div class="scriptTopic-dev" :key="index" v-else> <div class="dev-text"> {{ index + 1 }}銆乕闂瓟]<span>{{ - item.questiontext + item.scriptContent }}</span> + <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span> </div> - <div class="dev-xx"> + <div class="dev-xx" v-if="item.valueType == 3"> + <el-input + type="text" + v-numeric-only + placeholder="璇疯緭鍏ョ瓟妗�" + v-model="item.scriptResult" + > + </el-input> + </div> + <div class="dev-xx" v-else> <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ョ瓟妗�" - v-model="item.matchedtext" + v-model="item.scriptResult" clearable > </el-input> @@ -557,6 +577,46 @@ >鍐嶆闅忚</el-button > </div> + <div class="tag-selector-container"> + <el-select + v-model="selectedTag" + placeholder="璇烽�夋嫨寮傚父鐘舵��" + clearable + style="width: 150px; margin-right: 10px" + > + <el-option + v-for="item in tagOptions" + :key="item.value" + :label="item.label" + :value="item.value" + > + <span style="display: flex; align-items: center"> + <span + class="color-indicator" + :style="{ backgroundColor: item.color }" + ></span> + <span>{{ item.label }}</span> + </span> + </el-option> + </el-select> + + <!-- 褰撳墠閫夋嫨鐨勯鑹叉寚绀哄櫒 --> + <div + v-if="selectedTag" + class="color-indicator selected-indicator" + :style="{ backgroundColor: getSelectedTagColor() }" + ></div> + + <!-- 鏍囪璇存槑鎻愮ず --> + <el-tooltip + v-if="selectedTag" + effect="light" + :content="getSelectedDescription()" + placement="top" + > + <i class="el-icon-info tag-info-icon"></i> + </el-tooltip> + </div> </div> <el-row> <el-col :span="14" @@ -652,6 +712,9 @@ <el-button plain type="info" @click="Editsingletaskson('5')" >涓績闅忚</el-button > + <el-button type="primary" round @click="sendAgainmsg" + >鐭俊鍙戦��</el-button + > </div> </el-form-item> </el-form> @@ -713,7 +776,53 @@ </div> </div> </div> - + <!-- 鐭俊鍙戦�佸璇濇 --> + <el-dialog title="鐭俊鍙戦��" :visible.sync="smsDialogVisible"> + <!-- 娉ㄦ剰杩欓噷浣跨敤浜� smsDialogVisible 浠ュ尯鍒嗗凡鏈夌殑 dialogFormVisible --> + <el-form ref="smsForm" :model="form" label-width="80px"> + <el-form-item label="鎮h�呭悕绉�"> + <el-input + style="width: 400px" + disabled + v-model="form.sendname" + ></el-input> + </el-form-item> + <el-form-item label="骞撮緞"> + <el-input style="width: 400px" disabled v-model="form.age"></el-input> + </el-form-item> + <el-form-item label="鐢佃瘽"> + <el-input + style="width: 400px" + disabled + v-model="userform.telcode" + ></el-input> + <!-- 娉ㄦ剰杩欓噷鍙兘浣跨敤 userform.telcode --> + </el-form-item> + <el-form-item label="绉戝"> + <el-input + style="width: 400px" + disabled + v-model="form.deptname" + ></el-input> + </el-form-item> + <el-form-item label="鐥呭尯"> + <el-input + style="width: 400px" + disabled + v-model="form.leavehospitaldistrictname" + ></el-input> + </el-form-item> + <el-form-item label="鐭俊鍐呭"> + <el-input type="textarea" v-model="smsContent"></el-input> + <!-- 寤鸿浣跨敤鐙珛鐨� smsContent 鍙橀噺 --> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="smsDialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="sendSms">纭鍙戦��</el-button> + <!-- 娉ㄦ剰鏂规硶鍚嶆敼涓� sendSms --> + </div> + </el-dialog> <el-dialog title="鎮h�呭啀娆¢殢璁�" v-dialogDrags @@ -875,6 +984,7 @@ updatePersonVoices, addPersonVoices, query360PatInfo, + sendMsg, } from "@/api/AiCentre/index"; import { messagelistpatient, @@ -888,7 +998,67 @@ CallButton, MergeAndModify, }, + directives: { + numericOnly: { + bind(el, binding, vnode) { + // 灏濊瘯鑾峰彇瀹為檯鐨刬nput鍏冪礌 + const input = el.tagName === "INPUT" ? el : el.querySelector("input"); + if (!input) { + console.warn("v-numeric-only: 鏈壘鍒癷nput鍏冪礌"); + return; + } + const handleInput = function (event) { + const oldValue = input.value; + const newValue = oldValue.replace(/[^\d]/g, ""); + if (newValue !== oldValue) { + input.value = newValue; + // 瑙﹀彂input浜嬩欢锛岄�氱煡v-model鏇存柊 + input.dispatchEvent(new Event("input", { bubbles: true })); // 娉ㄦ剰bubbles + } + }; + + const handlePaste = function (event) { + event.preventDefault(); + const clipboardData = event.clipboardData || window.clipboardData; + const pastedData = clipboardData.getData("text"); + const numericValue = pastedData.replace(/[^\d]/g, ""); + + // 妯℃嫙鍦ㄥ厜鏍囦綅缃彃鍏ョ函鏁板瓧鏂囨湰 + const start = input.selectionStart; + const end = input.selectionEnd; + input.value = + input.value.substring(0, start) + + numericValue + + input.value.substring(end); + // 璋冩暣鍏夋爣浣嶇疆 + const newCursorPos = start + numericValue.length; + input.setSelectionRange(newCursorPos, newCursorPos); + + // 瑙﹀彂input浜嬩欢 + input.dispatchEvent(new Event("input", { bubbles: true })); + }; + + input.addEventListener("input", handleInput); + input.addEventListener("paste", handlePaste); + + // 瀛樺偍寮曠敤浠ヤ究瑙g粦 + el._numericOnly = { + inputHandle: handleInput, + pasteHandle: handlePaste, + inputEl: input, + }; + }, + unbind(el) { + if (el._numericOnly) { + const { inputHandle, pasteHandle, inputEl } = el._numericOnly; + inputEl.removeEventListener("input", inputHandle); + inputEl.removeEventListener("paste", pasteHandle); + delete el._numericOnly; + } + }, + }, + }, dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], data() { const validatePhone = (rule, value, callback) => { @@ -926,6 +1096,30 @@ isMergeMode: false, mergeDialogVisible: false, selectedServices: [], // 閫変腑鐨勬湇鍔″垪琛� + selectedTag: "", + tagOptions: [ + { + value: "0", + label: "姝e父", + type: "normal", + color: "#7ff5e1", + description: "鎮h�呮儏鍐垫甯革紝鏃犻渶鐗瑰埆鍏虫敞", + }, + { + value: "1", + label: "寮傚父", + type: "abnormal", + color: "#f75c5c", + description: "鎮h�呭瓨鍦ㄥ紓甯告儏鍐碉紝闇�瑕侀噸鐐瑰叧娉�", + }, + { + value: "2", + label: "璀﹀憡", + type: "warning", + color: "#fbfb4a", + description: "鎮h�呮儏鍐甸渶瑕佽鍛婃敞鎰忥紝鍙兘瀛樺湪椋庨櫓", + }, + ], zcrules: { resource: [ { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" }, @@ -1053,6 +1247,8 @@ }, ], userform: {}, + smsDialogVisible: false, // 鎺у埗鐭俊瀵硅瘽妗嗘樉绀� + smsContent: "", // 瀛樺偍鐭俊鍐呭 Whetherall: true, //鏄惁鍏ㄩ儴璁板綍灞曠ず dialogFormVisible: false, Voicetype: 0, //鏄惁涓鸿闊虫湇鍔� @@ -1141,6 +1337,8 @@ }, //鎮h��360璺宠浆 gettoken360(sfzh, drcode, drname) { + this.$modal.msgWarning("360鍔熻兘鏆傛湭寮�閫�"); + return; // 闃绘鍚庣画浠g爜鎵ц this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; if (this.postData.XiaoXiTou.ZuHuMC == "涓芥按甯備腑鍖婚櫌") { this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728"; @@ -1159,7 +1357,7 @@ getuserinfo() { const queryParams = { pid: Number(this.patid), - allhosp: "0", + allhosp: "0", //1浣忛櫌2闂ㄨ瘖3浣撴4鍑洪櫌 }; // 鎮h�呭熀纭�淇℃伅 messagelistpatient(queryParams).then((response) => { @@ -1266,6 +1464,13 @@ let excep = ""; const promises = []; this.tableDatatop.forEach((item) => { + if (item.valueType == 3 && item.scriptResult) { + // 楠岃瘉鏄惁涓烘湁鏁堟暟瀛� + if (!/^\d+$/.test(item.scriptResult)) { + this.$message.error(`闂 "${item.scriptContent}" 蹇呴』杈撳叆鏁板瓧`); + return; + } + } var objs = item.svyLibTemplateTargetoptions.find( (items) => items.optioncontent == item.scriptResult ); @@ -1296,6 +1501,7 @@ promises.push(serviceSubtaskDetailadd(obj)); } }); + // 浣跨敤 Promise.all 绛夊緟鎵�鏈夊紓姝ユ搷浣滃畬鎴� Promise.all(promises) .then((results) => { @@ -1539,6 +1745,7 @@ this.logsheetlist = res.rows[0].serviceSubtaskList; this.templateid = this.logsheetlist[0].templateid; + this.selectedTag = this.logsheetlist[0].excep; const targetDate = new Date(this.form.longSendTime); // 鐩爣鏃ユ湡 const now = new Date(); // 褰撳墠鏃堕棿 if (now < targetDate && this.form.sendstate == 2) { @@ -1558,6 +1765,34 @@ this.getsearchrResults(); } }); + }, + // 璋冭捣鐭俊鍙戦�佸璇濇 + sendAgainmsg() { + this.smsDialogVisible = true; + // 鍙互鍦ㄨ繖閲屽垵濮嬪寲 smsContent锛屼緥濡� this.smsContent = ''; + }, + + // 鍙戦�佺煭淇$殑鏂规硶 + sendSms() { + // 杩欓噷璋冪敤浣犵殑鐭俊鍙戦�� API + // 鍋囪 API 涓� sendMsg锛屽弬鏁板彲鑳介渶瑕佹牴鎹疄闄呮儏鍐佃皟鏁� + sendMsg({ + phone: this.userform.telcode, // 纭繚鐢佃瘽鍙风爜瀛楁姝g‘ + content: this.smsContent, + }) + .then((res) => { + if (res.code == 200) { + this.$modal.msgSuccess("鍙戦�佹垚鍔�"); + this.smsDialogVisible = false; // 鍏抽棴瀵硅瘽妗� + this.smsContent = ""; // 娓呯┖鍐呭 + } else { + this.$modal.msgError("鍙戦�佸け璐�"); + } + }) + .catch((error) => { + console.error("鍙戦�佺煭淇″け璐�:", error); + this.$modal.msgError("鍙戦�佸け璐�"); + }); }, Editsingletaskson(son) { let objson = {}; @@ -1588,6 +1823,7 @@ (item) => item.id == this.id ); objson.remark = this.form.remark; + objson.excep = this.selectedTag; if (sendstate) objson.sendstate = sendstate; Editsingletaskson(objson).then((res) => { if (res.code) { @@ -1612,6 +1848,30 @@ } return ""; }, + getSelectedTagType() { + if (!this.selectedTag) return ""; + const tag = this.tagOptions.find( + (item) => item.value === this.selectedTag + ); + return tag ? tag.type : ""; + }, + + getSelectedTagColor() { + if (!this.selectedTag) return ""; + const tag = this.tagOptions.find( + (item) => item.value === this.selectedTag + ); + return tag ? tag.color : ""; + }, + + getSelectedDescription() { + if (!this.selectedTag) return ""; + const tag = this.tagOptions.find( + (item) => item.value === this.selectedTag + ); + return tag ? tag.description : ""; + }, + // 璋冭捣鍐嶆鍙戦�� sendAgain() { document.querySelector("#app").scrollTo(0, 0); @@ -1918,7 +2178,22 @@ height: 100%; /* 纭繚楂樺害缁ф壙 */ } } +.numeric-input { + position: relative; +} +.numeric-input::after { + content: "鍙兘杈撳叆鏁板瓧"; + position: absolute; + right: 8px; + top: 50%; + transform: translateY(-50%); + font-size: 12px; + color: #999; + background: #f5f5f5; + padding: 2px 6px; + border-radius: 4px; +} .call-container { padding: 20px; background: #fff; @@ -2161,7 +2436,54 @@ top: 0; } } +.tag-selector-container { + display: flex; + align-items: center; + margin: 0 30px; +} +.color-indicator { + width: 16px; + height: 16px; + border-radius: 3px; + margin-right: 8px; + display: inline-block; +} + +.selected-indicator { + margin-left: 10px; + width: 20px; + height: 20px; +} + +.tag-info-icon { + margin-left: 10px; + color: #909399; + cursor: pointer; + font-size: 16px; +} + +/* 纭繚閫夋嫨鍣ㄩ�夐」涓篃鏄剧ず棰滆壊鍧� */ +.el-select-dropdown__item { + display: flex; + align-items: center; +} + +.tag-normal { + background-color: #7ff5e1; +} +.tag-abnormal { + background-color: #f75c5c; +} +.tag-warning { + background-color: #fbfb4a; +} + +.tag-info { + margin-left: 10px; + color: #909399; + cursor: pointer; +} ::v-deep.offside-value .el-radio__label { color: #fff; } -- Gitblit v1.9.3