From 9fd8b6d713fd000c8912c7a105724d1e6315ac94 Mon Sep 17 00:00:00 2001 From: WXL (wul) <wl_5969728@163.com> Date: 星期三, 17 九月 2025 10:38:50 +0800 Subject: [PATCH] 缩放 --- src/views/followvisit/record/detailpage/index.vue | 445 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 437 insertions(+), 8 deletions(-) diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue index 89698ee..0f11d3e 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" @@ -254,6 +254,7 @@ /> </el-dialog> <div class="action-container"> + <!-- 闅忚鍐呭 --> <div class="call-action"> <div class="call-container"> <!-- <div class="call-header"> @@ -381,8 +382,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 +448,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> @@ -529,6 +550,7 @@ </div> </div> </div> + <!-- 浜哄伐澶勭悊 --> <div class="manual-action"> <div class="Followuserinfos"> <div> @@ -556,6 +578,46 @@ @click="sendAgain()" >鍐嶆闅忚</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> @@ -938,7 +1000,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) => { @@ -976,6 +1098,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" }, @@ -1193,6 +1339,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"; @@ -1211,7 +1359,7 @@ getuserinfo() { const queryParams = { pid: Number(this.patid), - allhosp: "0", + allhosp: "0", //1浣忛櫌2闂ㄨ瘖3浣撴4鍑洪櫌 }; // 鎮h�呭熀纭�淇℃伅 messagelistpatient(queryParams).then((response) => { @@ -1318,6 +1466,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 ); @@ -1348,6 +1503,7 @@ promises.push(serviceSubtaskDetailadd(obj)); } }); + // 浣跨敤 Promise.all 绛夊緟鎵�鏈夊紓姝ユ搷浣滃畬鎴� Promise.all(promises) .then((results) => { @@ -1591,6 +1747,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) { @@ -1622,7 +1779,7 @@ // 杩欓噷璋冪敤浣犵殑鐭俊鍙戦�� API // 鍋囪 API 涓� sendMsg锛屽弬鏁板彲鑳介渶瑕佹牴鎹疄闄呮儏鍐佃皟鏁� sendMsg({ - phone: "0" + this.userform.telcode, // 纭繚鐢佃瘽鍙风爜瀛楁姝g‘ + phone: this.userform.telcode, // 纭繚鐢佃瘽鍙风爜瀛楁姝g‘ content: this.smsContent, }) .then((res) => { @@ -1668,6 +1825,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) { @@ -1692,6 +1850,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); @@ -1998,7 +2180,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; @@ -2241,7 +2438,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; } @@ -2291,4 +2535,189 @@ color: #080808 !important; cursor: not-allowed; } +/* 鍘熸湁鐨勬牱寮忎繚鎸佷笉鍙橈紝娣诲姞浠ヤ笅鍝嶅簲寮忎唬鐮� */ + +.Followupdetailspage { + margin: 10px; + display: flex; + flex-direction: column; + gap: 20px; +} + +.action-container { + display: flex; + flex-direction: row; /* 榛樿妯悜鎺掑垪 */ + gap: 20px; + margin: 0 10px 20px 10px; + + /* 褰撶缉鏀炬瘮渚嬪ぇ浜�100%鎴栧睆骞曞搴﹁緝灏忔椂鏀逛负涓婁笅鎺掑垪 */ + @media screen and (max-width: 1200px), (min-resolution: 1.1dppx) { + flex-direction: column; + + .call-action, .manual-action { + width: 100% !important; + } + } +} + +.call-action { + width: 65%; + min-width: 0; +} + +.manual-action { + flex: 1; + min-width: 0; +} + +/* 璋冩暣鍐呴儴鍏冪礌鐨勫搷搴斿紡甯冨眬 */ +.Followuserinfos { + .el-form { + /* 琛ㄥ崟鍝嶅簲寮忚皟鏁� */ + .el-row { + margin: 0 -10px; + } + + .el-col { + padding: 0 10px; + } + + @media screen and (max-width: 768px) { + .el-col { + width: 100%; + margin-bottom: 15px; + + &:last-child { + margin-bottom: 0; + } + } + } + } +} + +/* 璋冩暣琛ㄦ牸鐨勫搷搴斿紡琛ㄧ幇 */ +.el-table { + ::v-deep .el-table__body-wrapper { + overflow-x: auto; + } + + /* 鍦ㄥ皬灞忓箷涓婅皟鏁磋〃鏍煎垪瀹� */ + @media screen and (max-width: 992px) { + .el-table-column { + min-width: 120px; + } + } +} + +/* 璋冩暣鏍囩閫夋嫨鍣ㄧ殑鍝嶅簲寮忓竷灞� */ +.tag-selector-container { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 10px; + + @media screen and (max-width: 576px) { + flex-direction: column; + align-items: flex-start; + + .el-select { + width: 100%; + margin-right: 0 !important; + } + } +} + +/* 璋冩暣鎸夐挳缁勭殑鍝嶅簲寮忓竷灞� */ +.el-form-item.label-processing-opinion { + .el-button-group { + display: flex; + flex-wrap: wrap; + gap: 10px; + + .el-button { + flex: 1; + min-width: 120px; + } + } +} + +/* 璋冩暣閫夐」鍗$殑鍝嶅簲寮忚〃鐜� */ +.el-tabs { + ::v-deep .el-tabs__nav-wrap { + overflow-x: auto; + white-space: nowrap; + + &::after { + display: none; + } + } +} + +/* 璋冩暣棰勮鍖哄煙鐨勫搷搴斿紡琛ㄧ幇 */ +.preview-left { + @media screen and (max-width: 768px) { + margin: 10px; + padding: 15px; + + .topic-dev, .scriptTopic-dev { + margin-bottom: 15px; + } + } +} + +/* 璋冩暣瀵硅瘽妗嗙殑鍝嶅簲寮忚〃鐜� */ +.el-dialog { + @media screen and (max-width: 992px) { + width: 90% !important; + margin-top: 5vh !important; + + .el-dialog__body { + padding: 15px; + } + } + + @media screen and (max-width: 576px) { + width: 95% !important; + + .el-form-item { + margin-bottom: 15px; + } + } +} + +/* 纭繚鍐呭鍦ㄧ缉鏀炬椂淇濇寔鍙鎬� */ +.headline { + font-size: clamp(18px, 2vw, 24px); /* 浣跨敤clamp鍑芥暟纭繚瀛椾綋澶у皬鍦ㄥ悎鐞嗚寖鍥村唴 */ +} + +/* 涓虹Щ鍔ㄨ澶囦紭鍖栨粴鍔ㄤ綋楠� */ +@media screen and (max-width: 768px) { + .Followuserinfo, .Followuserinfos { + padding: 15px; + margin: 5px; + } + + .CONTENT { + min-height: auto; + padding: 5px; + } +} + +/* 缂╂斁妫�娴嬫牱寮� */ +@media screen and (min-resolution: 1.1dppx), + screen and (-webkit-min-device-pixel-ratio: 1.1), + screen and (max-width: 1200px) { + .action-container { + flex-direction: column; + } + + .call-action, .manual-action { + width: 100%; + } + + /* 璋冩暣鍐呴儴鍏冪礌闂磋窛 */ + .call-container, .Followuserinfos { + margin-bottom: 20px; + } +} </style> -- Gitblit v1.9.3