| | |
| | | <!-- 人工处理 --> |
| | | <div class="manual-action"> |
| | | <div class="Followuserinfos"> |
| | | <div> |
| | | <!-- 顶部操作区域 --> |
| | | <div class="section-header"> |
| | | <h3><i class="el-icon-s-operation"></i> 人工处理</h3> |
| | | <div class="header-actions"> |
| | | <!-- 基础操作按钮组 --> |
| | | <div class="action-group basic-actions"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="Editsingletasksonyic('')" |
| | | > |
| | | 保存基础信息 |
| | | </el-button> |
| | | |
| | | <!-- 新增:延续护理按钮 --> |
| | | <el-button |
| | | type="success" |
| | | plain |
| | | @click="handleContinuationCare" |
| | | v-if="showContinuationCareBtn" |
| | | > |
| | | 延续护理 |
| | | </el-button> |
| | | |
| | | <el-button |
| | | type="primary" |
| | | round |
| | | @click="sendAgain" |
| | | v-if="form.isVisitAgain != 2" |
| | | > |
| | | 再次随访 |
| | | </el-button> |
| | | </div> |
| | | |
| | | <!-- 异常状态选择器 --> |
| | | <div class="action-group tag-selector"> |
| | | <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> |
| | | </div> |
| | | |
| | | <!-- 表单区域 --> |
| | | <div class="form-content"> |
| | | <el-form |
| | | ref="userform" |
| | | :model="form" |
| | | :rules="userrules" |
| | | label-width="120px" |
| | | label-width="100px" |
| | | > |
| | | <div class="headline"> |
| | | <div>人工处理</div> |
| | | <div style="margin: 0 30px"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | @click="Editsingletasksonyic('')" |
| | | >保存基础信息</el-button |
| | | > |
| | | </div> |
| | | <div> |
| | | <el-button |
| | | type="primary" |
| | | round |
| | | v-if="this.form.isVisitAgain != 2" |
| | | @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-col :span="14" |
| | | ><el-form-item label="联系电话"> |
| | | <el-col :span="14"> |
| | | <el-form-item label="联系电话"> |
| | | <el-input |
| | | placeholder="联系电话缺失" |
| | | v-model="userform.telcode" |
| | |
| | | @click="handleCall(userform.telcode, 'tel')" |
| | | :disabled="!isValidPhone(userform.telcode)" |
| | | ></el-button> |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 联系人信息行 --> |
| | | <el-row> |
| | | <el-col :span="14" |
| | | ><el-form-item label="联系人电话"> |
| | | <el-col :span="14"> |
| | | <el-form-item label="联系人电话"> |
| | | <el-input |
| | | placeholder="联系人电话缺失" |
| | | v-model="userform.relativetelcode" |
| | |
| | | handleCall(userform.relativetelcode, 'relative') |
| | | " |
| | | :disabled="!isValidPhone(userform.relativetelcode)" |
| | | ></el-button |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="10" |
| | | ><el-form-item label="联系人关系"> |
| | | ></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="9"> |
| | | <el-form-item label="关系"> |
| | | <el-input |
| | | placeholder="联系人关系缺失" |
| | | v-model="userform.relation" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 通话控制区域 --> |
| | | <div class="call-controls"> |
| | | <CallButton |
| | | ref="callButton" |
| | |
| | | /> |
| | | </div> |
| | | </div> |
| | | <el-form-item label="随访内容" v-if="orgname == '丽水市中医院'"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="随访记录" v-else> |
| | | |
| | | <!-- 随访内容/记录 --> |
| | | <el-form-item |
| | | :label="orgname == '丽水市中医院' ? '随访内容' : '随访记录'" |
| | | > |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | |
| | | <!-- 随访情况 --> |
| | | <el-form-item label="随访情况" v-if="orgname == '丽水市中医院'"> |
| | | <el-radio-group v-model="form.taskSituation"> |
| | | <el-radio |
| | |
| | | :label="city.value" |
| | | :value="city.value" |
| | | :key="city.value" |
| | | >{{ city.label }}</el-radio |
| | | > |
| | | {{ city.label }} |
| | | </el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <!-- 处理意见 --> |
| | | <el-form-item label="处理意见"> |
| | | <div> |
| | | <div class="opinion-buttons"> |
| | | <el-button |
| | | plain |
| | | type="warning" |
| | | @click="Editsingletaskson('1')" |
| | | >暂不处理</el-button |
| | | > |
| | | 暂不处理 |
| | | </el-button> |
| | | <el-button |
| | | plain |
| | | type="success" |
| | | @click="Editsingletaskson('2')" |
| | | >病情稳定</el-button |
| | | > |
| | | 病情稳定 |
| | | </el-button> |
| | | <el-button |
| | | plain |
| | | type="primary" |
| | | @click="Editsingletaskson('3')" |
| | | >通知就诊</el-button |
| | | > |
| | | <el-button plain type="info" @click="Editsingletaskson('5')" |
| | | >中心随访</el-button |
| | | > |
| | | <el-button type="primary" round @click="sendAgainmsg" |
| | | >短信发送</el-button |
| | | > |
| | | 通知就诊 |
| | | </el-button> |
| | | <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> |
| | | </div> |
| | | |
| | | <div class="detailed"> |
| | | <h3>患者档案信息</h3> |
| | | <el-form ref="userform" :model="userform" label-width="100px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="患者姓名" prop="name"> |
| | | <el-input |
| | | v-model="userform.name" |
| | | placeholder="请输入姓名" |
| | | maxlength="30" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="性别" prop="telcode"> |
| | | <el-select v-model="userform.sex" placeholder="请选择"> |
| | | <el-option label="男" :value="1"> </el-option> |
| | | <el-option label="女" :value="2"> </el-option> |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="年龄" prop="name"> |
| | | <el-input |
| | | v-model="userform.age" |
| | | placeholder="请输入姓名" |
| | | maxlength="20" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <!-- 患者档案信息 --> |
| | | <div class="detailed"> |
| | | <h3>患者档案信息</h3> |
| | | <el-form ref="userform" :model="userform" label-width="100px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="患者姓名" prop="name"> |
| | | <el-input |
| | | v-model="userform.name" |
| | | placeholder="请输入姓名" |
| | | maxlength="30" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="性别" prop="sex"> |
| | | <el-select v-model="userform.sex" placeholder="请选择"> |
| | | <el-option label="男" :value="1"> </el-option> |
| | | <el-option label="女" :value="2"> </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="年龄" prop="age"> |
| | | <el-input |
| | | v-model="userform.age" |
| | | placeholder="请输入年龄" |
| | | maxlength="20" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="联系方式" prop="telcode"> |
| | | <el-input |
| | | v-model="userform.telcode" |
| | | placeholder="请输入联系方式" |
| | | maxlength="20" |
| | | /> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="亲属联系方式" prop="name"> |
| | | <el-input |
| | | v-model="userform.relativetelcode" |
| | | placeholder="请输入姓名" |
| | | maxlength="20" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="诊断名称" prop="name"> |
| | | <el-input |
| | | v-model="form.leavediagname" |
| | | placeholder="请输入诊断" |
| | | maxlength="50" |
| | | ></el-input> </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-form> |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系方式" prop="telcode"> |
| | | <el-input |
| | | v-model="userform.telcode" |
| | | placeholder="请输入联系方式" |
| | | maxlength="20" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="亲属联系方式" prop="relativetelcode"> |
| | | <el-input |
| | | v-model="userform.relativetelcode" |
| | | placeholder="请输入亲属联系方式" |
| | | maxlength="20" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="诊断名称" prop="leavediagname"> |
| | | <el-input |
| | | v-model="form.leavediagname" |
| | | placeholder="请输入诊断" |
| | | maxlength="50" |
| | | ></el-input> |
| | | </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-form> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="随访方式" prop="resource"> |
| | | <el-form-item label="随访类型" prop="resource"> |
| | | <el-radio-group v-model="form.resource"> |
| | | <el-radio label="1">本病区随访</el-radio> |
| | | <el-radio label="2">随访中心随访</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="随访记录"> |
| | | <el-form-item label="随访记录" :required="form.resource == '2'"> |
| | | <el-input type="textarea" v-model="form.remark"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | isEndingCall: false, |
| | | CaldialogVisible: false, |
| | | currentCall: null, // 当前通话对象 |
| | | // 新增功能数据 |
| | | showPatientInfo: true, |
| | | showContinuationCareBtn: false, // 控制延续护理按钮显示 |
| | | // 路由监听相关 |
| | | routeWatcher: null, |
| | | lastRoutePath: this.$route.path, |
| | |
| | | this.visitCount = this.$route.query.visitCount; |
| | | this.serviceType = this.$route.query.serviceType; |
| | | this.orgname = localStorage.getItem("orgname"); |
| | | if (this.orgname == "省立同德翠苑院区") { |
| | | this.showContinuationCareBtn = true; |
| | | } |
| | | |
| | | if (this.orgname == "缙云县中医医院") { |
| | | this.options = [ |
| | | { |
| | |
| | | { |
| | | value: "一个月后", |
| | | label: "一个月后", |
| | | }, { |
| | | }, |
| | | { |
| | | value: "两个月后", |
| | | label: "两个月后", |
| | | }, |
| | |
| | | methods: { |
| | | // 获取主题样式类 |
| | | getTopicClass(item) { |
| | | console.log(item.isabnormal, "getTopicClass"); |
| | | |
| | | // 根据状态值返回对应的样式类 |
| | | if (item.isabnormal == 1) { |
| | | return "scriptTopic-isabnormal"; // 异常 - 红色 |
| | |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | // 针对再次随访服务进行删除结果赋值 |
| | | if (this.again && res.data.upScriptResult) { |
| | | res.data.upScriptResult.forEach((itemA) => { |
| | | const itemB = res.data.scriptResult.find( |
| | | (item) => item.scriptContent === itemA.scriptContent |
| | | ); |
| | | if (itemB) { |
| | | itemB.scriptResult = itemA.scriptResult; |
| | | } |
| | | }); |
| | | } |
| | | // if (this.again && res.data.upScriptResult) { |
| | | // res.data.upScriptResult.forEach((itemA) => { |
| | | // const itemB = res.data.scriptResult.find( |
| | | // (item) => item.scriptContent === itemA.scriptContent |
| | | // ); |
| | | // if (itemB) { |
| | | // itemB.scriptResult = itemA.scriptResult; |
| | | // } |
| | | // }); |
| | | // } |
| | | this.tableDatatop = res.data.scriptResult; |
| | | |
| | | this.tableDatatop.forEach((item) => { |
| | |
| | | // 根据选择的随访方式计算随访日期 |
| | | if (value.includes("七天后")) { |
| | | followupDate.setDate(dischargeDate.getDate() + 7); |
| | | } else if (value.includes("15天后")||value.includes("半个月后")) { |
| | | } else if (value.includes("15天后") || value.includes("半个月后")) { |
| | | followupDate.setDate(dischargeDate.getDate() + 15); |
| | | } else if (value.includes("一个月后")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 1); |
| | | }else if (value.includes("两个月后")) { |
| | | } else if (value.includes("两个月后")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 2); |
| | | } else if (value.includes("三个月后")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 3); |
| | | } else if (value.includes("六个月后")) { |
| | | followupDate.setMonth(dischargeDate.getMonth() + 6); |
| | | } else if (value.includes("一年后")||value.includes("12个月后")) { |
| | | } else if (value.includes("一年后") || value.includes("12个月后")) { |
| | | followupDate.setFullYear(dischargeDate.getFullYear() + 1); |
| | | } |
| | | |
| | |
| | | scriptid: item.id, |
| | | excep: excep, |
| | | questiontext: item.scriptContent, |
| | | categoryid: item.categoryid, |
| | | answerps: item.answerps || null, // 添加附加信息 |
| | | }; |
| | | if (item.scriptType == 2 && item.scriptResult[0]) { |
| | |
| | | } |
| | | }); |
| | | this.Editsingletasksonyic(6); |
| | | if (this.visitCount != 1) { |
| | | const orgName = localStorage.getItem("orgname"); |
| | | console.log(orgName, "orgName"); |
| | | |
| | | if (this.form.isVisitAgain != 1 || orgName == "丽水市中医院") { |
| | | this.Torouter(); |
| | | return; |
| | | } |
| | |
| | | param2: this.patid, |
| | | subId: this.id, |
| | | }; |
| | | if (this.visitCount != 1) { |
| | | const orgName = localStorage.getItem("orgname"); |
| | | console.log(orgName, "orgName"); |
| | | |
| | | if (this.form.isVisitAgain != 1 || orgName == "丽水市中医院") { |
| | | this.Torouter(); |
| | | return; |
| | | } |
| | |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | }); |
| | | } else { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | | this.formtidy(); |
| | | this.dialogFormVisible = true; |
| | | } |
| | | } else { |
| | | document.querySelector("#app").scrollTo(0, 0); |
| | |
| | | this.$message.error("随访时间不能小于当前时间"); |
| | | return false; |
| | | } |
| | | if (this.form.resource == "2" && !this.form.remark) { |
| | | this.$message.error("当前选择为随访中心随访需输入随访记录"); |
| | | return false; |
| | | } |
| | | this.form.remark = |
| | | this.form.remark + "【" + this.getCurrentTime() + "】"; |
| | | let form = structuredClone(this.form); |
| | |
| | | |
| | | // 刷新数据 |
| | | this.getTaskservelist(); |
| | | }, |
| | | // 延续护理 |
| | | handleContinuationCare() { |
| | | if (this.form.continueFlag != 2) { |
| | | this.$modal.confirm("是否为本次服务创建延续护理?").then(() => { |
| | | this.$router.push({ |
| | | path: "/followvisit/ContinueFordetails/", |
| | | query: { |
| | | taskid: this.taskid, |
| | | patid: this.patid, |
| | | id: this.id, |
| | | Voicetype: this.Voicetype, |
| | | visitCount: this.visitCount, |
| | | }, |
| | | }); |
| | | }); |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/followvisit/ContinueFordetails/", |
| | | query: { |
| | | taskid: this.taskid, |
| | | patid: this.patid, |
| | | id: this.id, |
| | | Voicetype: this.Voicetype, |
| | | visitCount: this.visitCount, |
| | | }, |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | // deactivated() { |
| | |
| | | padding: 30px; |
| | | border: 1px solid #dcdfe6; |
| | | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | max-height: 618px; |
| | | max-height: 716px; |
| | | /* 设置最大高度 */ |
| | | overflow-y: auto; |
| | | /* 内容超过高度时显示滚动条 */ |
| | |
| | | margin-bottom: 20px; |
| | | } |
| | | } |
| | | /* 人工处理部分样式 */ |
| | | .manual-action { |
| | | flex: 1; |
| | | min-width: 0; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | |
| | | .Followuserinfos { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 20px; |
| | | padding: 20px; |
| | | background: #fff; |
| | | border-radius: 8px; |
| | | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | } |
| | | |
| | | /* 头部区域 */ |
| | | .section-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding-bottom: 15px; |
| | | border-bottom: 2px solid #f0f0f0; |
| | | margin-bottom: 20px; |
| | | flex-wrap: wrap; |
| | | gap: 15px; |
| | | |
| | | h3 { |
| | | margin: 0; |
| | | color: #409eff; |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | |
| | | i { |
| | | font-size: 20px; |
| | | } |
| | | } |
| | | |
| | | .header-actions { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | gap: 15px; |
| | | |
| | | .action-group { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 10px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* 基础操作按钮 */ |
| | | .basic-actions { |
| | | .el-button { |
| | | min-width: 100px; |
| | | } |
| | | } |
| | | |
| | | /* 异常状态选择器 */ |
| | | .tag-selector { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 10px; |
| | | |
| | | .current-tag { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | padding: 6px 12px; |
| | | background: #f8f9fa; |
| | | border: 1px solid; |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | transition: all 0.3s; |
| | | |
| | | &:hover { |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | |
| | | /* 表单区域 */ |
| | | .form-content { |
| | | background: #f8f9fa; |
| | | border-radius: 8px; |
| | | padding: 20px; |
| | | margin-bottom: 20px; |
| | | |
| | | .el-form { |
| | | .el-row { |
| | | margin: 0 -10px; |
| | | } |
| | | |
| | | .el-col { |
| | | padding: 0 10px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* 通话控制区域 */ |
| | | .call-controls { |
| | | margin: 15px 0; |
| | | |
| | | .hangup-container { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | gap: 10px; |
| | | margin: 15px 0; |
| | | } |
| | | |
| | | .hangup-btn { |
| | | width: 120px; |
| | | height: 40px; |
| | | font-size: 14px; |
| | | border-radius: 20px; |
| | | box-shadow: 0 2px 8px rgba(244, 67, 54, 0.3); |
| | | transition: all 0.3s ease; |
| | | } |
| | | |
| | | .hangup-btn:hover:not(:disabled) { |
| | | transform: translateY(-2px); |
| | | box-shadow: 0 4px 12px rgba(244, 67, 54, 0.4); |
| | | } |
| | | |
| | | .call-timer { |
| | | font-size: 12px; |
| | | color: #666; |
| | | background: #f5f5f5; |
| | | padding: 4px 12px; |
| | | border-radius: 12px; |
| | | font-family: "Courier New", monospace; |
| | | } |
| | | |
| | | .call-status-container { |
| | | margin: 10px 0; |
| | | } |
| | | |
| | | .status-alert { |
| | | border-radius: 8px; |
| | | transition: all 0.3s ease; |
| | | } |
| | | |
| | | .status-alert.status-calling { |
| | | border-left: 4px solid #e6a23c; |
| | | } |
| | | |
| | | .status-alert.status-connected { |
| | | border-left: 4px solid #67c23a; |
| | | animation: pulse 2s infinite; |
| | | } |
| | | |
| | | .status-alert.status-ended { |
| | | border-left: 4px solid #909399; |
| | | } |
| | | |
| | | .sip-registering { |
| | | margin: 10px 0; |
| | | } |
| | | |
| | | .registering-alert { |
| | | border-radius: 8px; |
| | | background-color: #f4f4f5; |
| | | border-left: 4px solid #909399; |
| | | } |
| | | } |
| | | |
| | | /* 处理意见按钮组 */ |
| | | .opinion-buttons { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | gap: 10px; |
| | | align-items: center; |
| | | |
| | | .el-button { |
| | | flex: 1; |
| | | min-width: 120px; |
| | | } |
| | | } |
| | | |
| | | /* 患者档案信息 */ |
| | | .detailed { |
| | | width: 100%; |
| | | border-radius: 8px; |
| | | padding: 20px; |
| | | margin-bottom: 20px; |
| | | background-color: #ddf0f8; |
| | | border: 1px solid #b3e0f2; |
| | | |
| | | h3 { |
| | | margin: 0 0 20px 0; |
| | | color: #333; |
| | | font-size: 16px; |
| | | font-weight: 500; |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | |
| | | &:before { |
| | | content: ""; |
| | | display: block; |
| | | width: 4px; |
| | | height: 16px; |
| | | background: #409eff; |
| | | border-radius: 2px; |
| | | } |
| | | } |
| | | |
| | | .el-form { |
| | | .el-row { |
| | | margin: 0 -10px; |
| | | } |
| | | |
| | | .el-col { |
| | | padding: 0 10px; |
| | | margin-bottom: 15px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* 动画效果 */ |
| | | @keyframes pulse { |
| | | 0% { |
| | | opacity: 1; |
| | | } |
| | | 50% { |
| | | opacity: 0.7; |
| | | } |
| | | 100% { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | |
| | | /* 响应式设计 */ |
| | | @media screen and (max-width: 1200px) { |
| | | .section-header { |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | gap: 15px; |
| | | } |
| | | |
| | | .header-actions { |
| | | width: 100%; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .opinion-buttons { |
| | | .el-button { |
| | | min-width: calc(50% - 8px); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @media screen and (max-width: 768px) { |
| | | .Followuserinfos { |
| | | padding: 15px; |
| | | } |
| | | |
| | | .form-content, |
| | | .detailed { |
| | | padding: 15px; |
| | | } |
| | | |
| | | .header-actions { |
| | | flex-direction: column; |
| | | align-items: stretch; |
| | | |
| | | .action-group { |
| | | flex-direction: column; |
| | | align-items: stretch; |
| | | |
| | | .el-select { |
| | | width: 100%; |
| | | margin-right: 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .opinion-buttons { |
| | | flex-direction: column; |
| | | |
| | | .el-button { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .detailed { |
| | | .el-form { |
| | | .el-col { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* 滚动条美化 */ |
| | | .Followuserinfos { |
| | | &::-webkit-scrollbar { |
| | | width: 6px; |
| | | } |
| | | |
| | | &::-webkit-scrollbar-track { |
| | | background: #f1f1f1; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | &::-webkit-scrollbar-thumb { |
| | | background: #c1c1c1; |
| | | border-radius: 3px; |
| | | |
| | | &:hover { |
| | | background: #a8a8a8; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* 按钮图标优化 */ |
| | | .el-icon-phone { |
| | | transition: all 0.3s; |
| | | } |
| | | |
| | | .el-button[disabled] .el-icon-phone { |
| | | color: #c0c4cc; |
| | | } |
| | | |
| | | .el-button:not([disabled]) .el-icon-phone { |
| | | color: #409eff; |
| | | } |
| | | |
| | | .el-button:not([disabled]):hover .el-icon-phone { |
| | | color: #66b1ff; |
| | | transform: scale(1.1); |
| | | } |
| | | </style> |