| | |
| | | >只展示本次服务信息</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" |
| | |
| | | > |
| | | 前往CDSS查询 |
| | | </el-link> |
| | | </div> |
| | | </div> --> |
| | | <div class="merge-controls" v-if="Whetherall"> |
| | | <el-button |
| | | type="primary" |
| | |
| | | {{ 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" |
| | |
| | | <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> |
| | |
| | | @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> |
| | |
| | | <el-form-item label="年龄"> |
| | | <el-input style="width: 400px" disabled v-model="form.age"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="科室"> |
| | | <el-form-item label="课题组"> |
| | | <el-input |
| | | style="width: 400px" |
| | | disabled |
| | |
| | | CallButton, |
| | | MergeAndModify, |
| | | }, |
| | | directives: { |
| | | numericOnly: { |
| | | bind(el, binding, vnode) { |
| | | // 尝试获取实际的input元素 |
| | | const input = el.tagName === "INPUT" ? el : el.querySelector("input"); |
| | | if (!input) { |
| | | console.warn("v-numeric-only: 未找到input元素"); |
| | | 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); |
| | | |
| | | // 存储引用以便解绑 |
| | | 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) => { |
| | |
| | | isMergeMode: false, |
| | | mergeDialogVisible: false, |
| | | selectedServices: [], // 选中的服务列表 |
| | | selectedTag: "", |
| | | tagOptions: [ |
| | | { |
| | | value: "0", |
| | | label: "正常", |
| | | type: "normal", |
| | | color: "#7ff5e1", |
| | | description: "患者情况正常,无需特别关注", |
| | | }, |
| | | { |
| | | value: "1", |
| | | label: "异常", |
| | | type: "abnormal", |
| | | color: "#f75c5c", |
| | | description: "患者存在异常情况,需要重点关注", |
| | | }, |
| | | { |
| | | value: "2", |
| | | label: "警告", |
| | | type: "warning", |
| | | color: "#fbfb4a", |
| | | description: "患者情况需要警告注意,可能存在风险", |
| | | }, |
| | | ], |
| | | zcrules: { |
| | | resource: [ |
| | | { required: true, message: "请选择随访方式", trigger: "change" }, |
| | |
| | | }, |
| | | //患者360跳转 |
| | | gettoken360(sfzh, drcode, drname) { |
| | | this.$modal.msgWarning('360功能暂未开通'); |
| | | this.$modal.msgWarning("360功能暂未开通"); |
| | | return; // 阻止后续代码执行 |
| | | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; |
| | | if (this.postData.XiaoXiTou.ZuHuMC == "丽水市中医院") { |
| | |
| | | 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 |
| | | ); |
| | |
| | | promises.push(serviceSubtaskDetailadd(obj)); |
| | | } |
| | | }); |
| | | |
| | | // 使用 Promise.all 等待所有异步操作完成 |
| | | Promise.all(promises) |
| | | .then((results) => { |
| | |
| | | |
| | | 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) { |
| | |
| | | (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) { |
| | |
| | | } |
| | | 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); |
| | |
| | | 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; |
| | |
| | | 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; |
| | | } |