dist.zipBinary files differ
src/api/AiCentre/EChartsdata.js
@@ -65,6 +65,7 @@ return request({ url: "/smartor/organization/list", method: "get", params: data, }); } // åéçä¿¡ src/components/CallButton/index.vue
@@ -200,7 +200,7 @@ this.sipConfig.sipUri = `${this.randomNum}@192.168.10.124`; } else if (orgName == "龿³å¸äººæ°å»é¢") { this.sipConfig.sipUri = `${this.randomNum}@10.10.0.220`; } else if (orgName == "æå·å¸ç¬¬ä¸äººæ°å»é¢æ¹æ»¨é¢åº"||orgName == "æå·å¸ç¬¬ä¸äººæ°å»é¢å´å±±é¢åº") { } else if (orgName == "第ä¸äººæ°å»é¢æ¹æ»¨é¢åº"||orgName == "第ä¸äººæ°å»é¢å´å±±é¢åº") { this.sipConfig.sipUri = `${this.randomNum}@192.169.129.198`; } } catch (error) { src/main.js
@@ -92,6 +92,14 @@ Vue.filter(key, filters[key]); } import moment from "moment" // 1. å¨main.js䏿·»å é误çå¬ window.addEventListener('unhandledrejection', (event) => { if (event.reason && event.reason.message && event.reason.message.includes('Loading chunk')) { // éæ°å è½½é¡µé¢ window.location.reload(); } }); Vue.prototype.$moment = moment; src/store/modules/user.js
@@ -209,13 +209,13 @@ localStorage.setItem("YongHuID", "1512710152715767808"); localStorage.setItem("YongHuXM", "LDRMYY"); } else if (orgid == "1" && campusid == 1) { localStorage.setItem("orgname", "æå·å¸ç¬¬ä¸äººæ°å»é¢æ¹æ»¨é¢åº"); localStorage.setItem("orgname", "第ä¸äººæ°å»é¢æ¹æ»¨é¢åº"); localStorage.setItem("ZuHuID", ""); localStorage.setItem("deptCode", ""); localStorage.setItem("YongHuID", ""); localStorage.setItem("YongHuXM", ""); } else if (orgid == "1" && campusid == 2) { localStorage.setItem("orgname", "æå·å¸ç¬¬ä¸äººæ°å»é¢å´å±±é¢åº"); localStorage.setItem("orgname", "第ä¸äººæ°å»é¢å´å±±é¢åº"); localStorage.setItem("ZuHuID", ""); localStorage.setItem("deptCode", ""); localStorage.setItem("YongHuID", ""); @@ -223,6 +223,12 @@ } else if (orgid == "47246116333112211A1001") { localStorage.setItem("orgname", "ç¼äºå¿äººæ°å»é¢"); localStorage.setItem("ZuHuID", "1429338802177000010"); localStorage.setItem("deptCode", ""); localStorage.setItem("YongHuID", ""); localStorage.setItem("YongHuXM", ""); } else if (orgid == "47226079133110211G1001") { localStorage.setItem("orgname", "丽水å¸å¦å¹¼ä¿å¥é¢"); localStorage.setItem("ZuHuID", "1429338802177000014"); localStorage.setItem("deptCode", ""); localStorage.setItem("YongHuID", ""); localStorage.setItem("YongHuXM", ""); @@ -256,6 +262,14 @@ commit("SET_nickNAME", user.nickName); commit("SET_Id", user.userId); commit("SET_hisUserId", user.hisUserId); // if (user.userName == "admin") { // commit("SET_leaveldeptcodes", []); // commit("SET_leavehospitaldistrictcodes", []); // } else { // commit("SET_leavehospitaldistrictcodes", user.belongWards); // commit("SET_leaveldeptcodes", user.belongDepts); // } commit("SET_leavehospitaldistrictcodes", user.belongWards); commit("SET_leaveldeptcodes", user.belongDepts); commit("SET_AVATAR", avatar); src/utils/sipService.js
@@ -11,11 +11,11 @@ wsUrl: "wss://10.10.0.220:7443", domain: "10.10.0.220", }, æå·å¸ç¬¬ä¸äººæ°å»é¢æ¹æ»¨é¢åº: { 第ä¸äººæ°å»é¢æ¹æ»¨é¢åº: { wsUrl: "wss://192.169.129.198:7443", domain: "192.169.129.198", }, æå·å¸ç¬¬ä¸äººæ°å»é¢å´å±±é¢åº: { 第ä¸äººæ°å»é¢å´å±±é¢åº: { wsUrl: "wss://192.169.129.198:7443", domain: "192.169.129.198", }, src/views/followvisit/Continue/ContinueFordetails.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,2389 @@ <template> <!-- å»¶ç»æ¤çé¡µé¢ --> <div class="ContinuityCarePage" id="app-container"> <!-- 第ä¸é¨åï¼æ£è åºç¡ä¿¡æ¯ --> <div class="patient-info-section"> <div class="headline"> <div>æ£è åºç¡ä¿¡æ¯</div> </div> <div class="patient-info-form"> <el-form ref="patientForm" :model="patientForm" :rules="patientRules" label-width="120px" > <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="æ£è å§å" prop="name"> <el-input v-model="patientForm.name" placeholder="请è¾å ¥æ£è å§å" maxlength="30" clearable ></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="æ§å«" prop="sex"> <el-select v-model="patientForm.sex" placeholder="è¯·éæ©" clearable > <el-option label="ç·" :value="1"></el-option> <el-option label="女" :value="2"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="å¹´é¾" prop="age"> <el-input v-model="patientForm.age" placeholder="请è¾å ¥å¹´é¾" maxlength="3" clearable ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="èç³»çµè¯" prop="telcode"> <el-input v-model="patientForm.telcode" placeholder="请è¾å ¥èç³»çµè¯" maxlength="20" clearable ></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="ä½é¢å·" prop="hospitalNumber"> <el-input v-model="patientForm.hospitalNumber" placeholder="请è¾å ¥ä½é¢å·" maxlength="50" clearable ></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="åºé¢æ¥æ" prop="dischargeDate"> <el-date-picker v-model="patientForm.dischargeDate" type="date" placeholder="éæ©åºé¢æ¥æ" value-format="yyyy-MM-dd" style="width: 100%" > </el-date-picker> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="è¯æåç§°" prop="diagnosis"> <el-input v-model="patientForm.diagnosis" placeholder="请è¾å ¥è¯æåç§°" maxlength="100" clearable ></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="责任æ¤å£«" prop="nurseName"> <el-input v-model="patientForm.nurseName" placeholder="请è¾å ¥è´£ä»»æ¤å£«" maxlength="50" clearable ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="å± ä½å°å" prop="address"> <el-input v-model="patientForm.address" placeholder="请è¾å ¥è¯¦ç»å± ä½å°å" maxlength="200" clearable ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="亲å±å§å" prop="relativeName"> <el-input v-model="patientForm.relativeName" placeholder="请è¾å ¥äº²å±å§å" maxlength="30" clearable ></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="亲å±çµè¯" prop="relativeTel"> <el-input v-model="patientForm.relativeTel" placeholder="请è¾å ¥äº²å±çµè¯" maxlength="20" clearable ></el-input> </el-form-item> </el-col> </el-row> <!-- å»¶ç»æ¤çæ±æ»ä¿¡æ¯ --> <el-row :gutter="20" v-if="continuitySummary.continueCount > 0"> <el-col :span="24"> <el-form-item label="å»¶ç»æ¤çæ±æ»"> <div class="continuity-summary"> <div class="summary-item"> <span class="label">å»¶ç»æ¬¡æ°ï¼</span> <span class="value" >{{ continuitySummary.continueCount }} 次</span > </div> <div class="summary-item"> <span class="label">ææ°æå¡ï¼</span> <span class="value">{{ formatDisplayTime(continuitySummary.continueTimeNow) }}</span> </div> <div class="summary-item"> <span class="label">䏿¬¡æå¡ï¼</span> <span class="value">{{ formatDisplayTime(continuitySummary.continueTimeNext) }}</span> </div> </div> </el-form-item> </el-col> </el-row> <!-- æä½æé® --> <el-form-item> <el-button type="primary" @click="savePatientInfo" :loading="savingPatientInfo" > ä¿åæ£è ä¿¡æ¯ </el-button> <el-button @click="resetPatientInfo">éç½®</el-button> </el-form-item> </el-form> </div> </div> <!-- 第äºé¨åï¼æå¡åºç¡ä¿¡æ¯ --> <div class="basic-info-section"> <div class="headline"> <div>æå¡åºç¡ä¿¡æ¯</div> </div> <div class="basic-info-container"> <!-- å·¦åé¨åï¼å½åæå¡é访å 容ï¼åªè¯»ï¼ --> <div class="followup-content readonly-content"> <div class="sub-headline"> <i class="el-icon-document"></i> å½åæå¡é访å 容ï¼åªè¯»ï¼ <el-button type="text" size="small" @click="toggleQuestionSelection" style="margin-left: 10px" > {{ showQuestionSelector ? "éèé®é¢éå" : "éåå»¶ç»é®é¢" }} </el-button> </div> <!-- é®é¢éå颿¿ --> <div v-if="showQuestionSelector" class="question-selector-panel"> <div class="selector-header"> <span>è¯·éæ©å»¶ç»é®é¢ï¼å¯å¤éï¼ï¼</span> <el-button type="primary" size="small" @click="confirmQuestionSelection" > 确认éå </el-button> </div> <div class="question-list"> <el-checkbox-group v-model="selectedQuestionIds"> <div v-for="(question, index) in availableQuestions" :key="question.id" class="question-item" > <el-checkbox :label="question.id"> <div class="question-content"> <span class="question-index" >{{ question.index + 1 }}.</span > <span class="question-text">{{ question.text }}</span> </div> </el-checkbox> </div> </el-checkbox-group> </div> </div> <div class="content-container"> <el-tabs v-model="activeName" type="border-card"> <el-tab-pane name="wj"> <span slot="label" ><i class="el-icon-notebook-1"></i> é®å·éè®¿ç»æ</span > <div class="CONTENT"> <div class="title">{{ taskname ? taskname : "é®å·" }}</div> <div class="preview-left" v-if="!Voicetype"> <div class="topic-dev" v-for="(item, index) in tableDatatop" :key="item.id" > <!-- åé --> <div :class="getTopicClass(item)" :key="index" v-if="item.scriptType == 1 && !item.astrict" > <div class="dev-text"> {{ index + 1 }}ã[åé]<span>{{ item.scriptContent }}</span> </div> <div class="dev-xx"> <el-radio-group v-model="item.scriptResult" disabled> <el-radio v-for="( items, indexs ) in item.svyTaskTemplateTargetoptions" :class="getOptionClass(items)" :key="indexs" :label="items.optioncontent" >{{ items.optioncontent }}</el-radio > </el-radio-group> </div> <div v-if="item.showAppendInput || item.answerps" class="append-input-container" > <el-input type="textarea" :rows="2" placeholder="请è¾å ¥å ·ä½ä¿¡æ¯" v-model="item.answerps" readonly ></el-input> </div> <div v-show="item.prompt"> <el-alert :title="item.prompt" type="warning"> </el-alert> </div> </div> <!-- å¤é --> <div :class=" item.isabnormal ? 'scriptTopic-isabnormal' : 'scriptTopic-dev' " :key="index" v-if="item.scriptType == 2 && !item.astrict" > <div class="dev-text"> {{ index + 1 }}ã[å¤é]<span>{{ item.scriptContent }}</span> </div> <div class="dev-xx"> <el-checkbox-group v-model="item.scriptResult" disabled > <el-checkbox :class="items.isabnormal ? 'red-star' : ''" v-for="( items, indexs ) in item.svyTaskTemplateTargetoptions" :key="indexs" :label="items.optioncontent" > {{ items.optioncontent }} </el-checkbox> </el-checkbox-group> </div> <div v-show="item.prompt && item.scriptResult[0]"> <el-alert :title="item.prompt" type="warning"> </el-alert> </div> </div> <!-- 填空 --> <div class="scriptTopic-dev" :key="index" v-if="item.scriptType == 4 && !item.astrict" > <div class="dev-text"> {{ index + 1 }}ã[é®ç]<span>{{ item.scriptContent }}</span> <span v-if="item.valueType == 3">(åªè½è¾å ¥æ°å)</span> </div> <div class="dev-xx" v-if="item.valueType == 3"> <el-input type="text" placeholder="请è¾å ¥çæ¡" v-model="item.scriptResult" readonly > </el-input> </div> <div class="dev-xx" v-else> <el-input type="textarea" :rows="2" placeholder="请è¾å ¥çæ¡" v-model="item.scriptResult" readonly > </el-input> </div> </div> </div> </div> <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" disabled> <el-radio v-for="(items, index) in item.scriptResult" :key="index" :label="items" :class="items.isabnormal ? 'red-star' : ''" >{{ 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.scriptContent }}</span> <span v-if="item.valueType == 3">(åªè½è¾å ¥æ°å)</span> </div> <div class="dev-xx" v-if="item.valueType == 3"> <el-input type="text" placeholder="请è¾å ¥çæ¡" v-model="item.scriptResult" readonly > </el-input> </div> <div class="dev-xx" v-else> <el-input type="textarea" :rows="2" placeholder="请è¾å ¥çæ¡" v-model="item.scriptResult" readonly > </el-input> </div> </div> </div> </div> </div> </el-tab-pane> <el-tab-pane name="yy"> <span slot="label" ><i class="el-icon-headset"></i> è¯é³é访详æ </span > <div class="borderdiv"> <div class="title">{{ taskname ? taskname : "é®å·" }}</div> <div class="voice-audio"> 宿´è¯é³ï¼ <mini-audio :audio-source=" voice ? voice : '@assets/order/example.mp3' " ></mini-audio> </div> <div class="preview-left"> <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" readonly ></el-input> <div> <mini-audio :audio-source=" item.questionvoice ? item.questionvoice : '@assets/order/example.mp3' " ></mini-audio> </div> </div> </div> </div> </div> </div> </el-tab-pane> </el-tabs> </div> </div> <!-- å³åé¨åï¼åæ¬¡å»¶ç»æ¤çæå¡ --> <!-- å³åé¨åï¼åæ¬¡å»¶ç»æ¤çæå¡ --> <div class="continuity-history"> <div class="sub-headline"> <i class="el-icon-time"></i> 忬¡å»¶ç»æ¤çæå¡ <el-button type="primary" size="small" icon="el-icon-plus" @click="addContinuityTab" style="margin-left: 10px" >æ°å¢å»¶ç»æ¤ç</el-button > </div> <div class="history-content"> <el-tabs v-model="activeContinuityTab" type="card" closable @tab-remove="removeContinuityTab" @tab-click="handleTabClick" > <el-tab-pane v-for="(item, index) in continuityTabs" :key="item.name" :label="item.title" :name="item.name" > <div class="continuity-form"> <el-form :ref="'continuityForm' + index" :model="item.form" :rules="continuityRules" label-width="120px" > <!-- å»¶ç»é®é¢è¡¨å --> <el-form-item label="å»¶ç»é®é¢" prop="continuityProblems"> <div class="continuity-problems-form"> <div class="problems-header"> <span>å·²éåçå»¶ç»é®é¢ï¼</span> <el-button type="text" size="small" icon="el-icon-plus" @click="addContinuityProblem(index)" > æ°å¢é®é¢ </el-button> </div> <!-- å·²éåçé®é¢å表 --> <div v-if=" item.form.continuityProblems && item.form.continuityProblems.length > 0 " class="problems-list-container" > <div v-for="(problem, problemIndex) in item.form .continuityProblems" :key="problemIndex" class="problem-item" > <div class="problem-content"> <div class="problem-meta"> <span class="problem-index" >é®é¢ {{ problemIndex + 1 }}</span > <el-select v-model="problem.questionId" placeholder="éæ©é®é¢" size="small" style="width: 300px; margin: 0 10px" @change=" handleProblemChange( index, problemIndex, $event ) " > <el-option v-for="q in availableQuestions" :key="q.id" :label="q.text" :value="q.id" > <span >{{ q.index + 1 }}. {{ truncateText(q.text, 40) }}</span > </el-option> </el-select> <!-- ä¿®å¤ï¼ä¼ éæ£ç¡®çç´¢å¼ --> <el-button type="danger" icon="el-icon-delete" size="mini" circle @click=" removeContinuityProblem(index, problemIndex) " > </el-button> </div> <!-- é®å·å¼é®é¢å±ç¤ºåºå --> <div v-if="problem.questionId" class="question-display-area" > <!-- æ ¹æ®é®é¢ç±»åå¨ææ¸²æ --> <div v-if=" getQuestionOriginalData(problem.questionId) " class="question-render" > <!-- åéç±»å --> <div v-if=" getQuestionOriginalData( problem.questionId ).scriptType == 1 " class="question-item-render" > <div class="question-text"> <strong>[åé]</strong> <span>{{ getQuestionOriginalData( problem.questionId ).scriptContent }}</span> </div> <div class="question-options"> <el-radio-group v-model="problem.selectedOption" > <el-radio v-for="option in getQuestionOriginalData( problem.questionId ).svyTaskTemplateTargetoptions" :key="option.optioncontent" :label="option.optioncontent" :class="getOptionClass(option)" > {{ option.optioncontent }} </el-radio> </el-radio-group> </div> <!-- éå è¾å ¥æ¡ --> <div v-if="problem.showAppendInput" class="append-input" style="margin-top: 10px" > <el-input type="textarea" :rows="2" placeholder="请è¾å ¥å ·ä½ä¿¡æ¯" v-model="problem.appendInput" ></el-input> </div> </div> <!-- å¤éç±»å --> <div v-else-if=" getQuestionOriginalData( problem.questionId ).scriptType == 2 " class="question-item-render" > <div class="question-text"> <strong>[å¤é]</strong> <span>{{ getQuestionOriginalData( problem.questionId ).scriptContent }}</span> </div> <div class="question-options"> <el-checkbox-group v-model="problem.selectedOptions" > <el-checkbox v-for="option in getQuestionOriginalData( problem.questionId ).svyTaskTemplateTargetoptions" :key="option.optioncontent" :label="option.optioncontent" :class=" option.isabnormal ? 'red-star' : '' " > {{ option.optioncontent }} </el-checkbox> </el-checkbox-group> </div> </div> <!-- 填空/é®çç±»å --> <div v-else-if=" getQuestionOriginalData( problem.questionId ).scriptType == 4 " class="question-item-render" > <div class="question-text"> <strong>[é®ç]</strong> <span>{{ getQuestionOriginalData( problem.questionId ).scriptContent }}</span> <span v-if=" getQuestionOriginalData( problem.questionId ).valueType == 3 " >(åªè½è¾å ¥æ°å)</span > </div> <div class="question-options"> <el-input v-if=" getQuestionOriginalData( problem.questionId ).valueType == 3 " type="text" placeholder="请è¾å ¥çæ¡" v-model="problem.answer" style="width: 200px" ></el-input> <el-input v-else type="textarea" :rows="2" placeholder="请è¾å ¥çæ¡" v-model="problem.answer" style="width: 100%" ></el-input> </div> </div> </div> <div v-else class="no-question-data"> é®é¢æ°æ®å è½½ä¸... </div> </div> <!-- åæçé®é¢æè¿°çåæ®µ --> <div class="problem-detail"> <div class="detail-row"> <span class="detail-label">å½åç¶æï¼</span> <el-select v-model="problem.status" placeholder="éæ©ç¶æ" size="small" style="width: 120px; margin-right: 20px" > <el-option label="æªå¤ç" value="pending" ></el-option> <el-option label="å¤çä¸" value="processing" ></el-option> <el-option label="已解å³" value="resolved" ></el-option> <el-option label="æç»å ³æ³¨" value="watching" ></el-option> </el-select> <span class="detail-label" v-if="problem.status === 'resolved'" style="margin-left: 20px" > è§£å³æ¥æï¼ </span> <el-date-picker v-if="problem.status === 'resolved'" v-model="problem.resolvedDate" type="date" placeholder="éæ©è§£å³æ¥æ" value-format="yyyy-MM-dd" size="small" style="width: 150px; margin-left: 10px" ></el-date-picker> </div> <!-- <div class="detail-row"> <span class="detail-label">é®é¢æè¿°ï¼</span> <el-input type="textarea" :rows="2" v-model="problem.description" placeholder="è¯·è¯¦ç»æè¿°è¯¥å»¶ç»é®é¢ï¼å¯è®°å½è¯ä¼°ç»æãå¤ç建议çï¼" size="small" style="flex: 1" ></el-input> </div> --> </div> </div> </div> </div> </div> </el-form-item> <!-- å»¶ç»æ§æ¤çè®°å½ --> <el-form-item label="æ¤çè®°å½" prop="careRecord"> <el-input type="textarea" :rows="4" v-model="item.form.careRecord" placeholder="请è¾å ¥å»¶ç»æ§æ¤çè®°å½" clearable ></el-input> </el-form-item> <!-- 责任æ¤å£«ãå访形å¼ãæå¡æ¶é´ --> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="责任æ¤å£«" prop="dutyNurse"> <el-input v-model="item.form.dutyNurse" placeholder="请è¾å ¥è´£ä»»æ¤å£«" clearable ></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="å访形å¼" prop="visitType"> <el-select v-model="item.form.visitType" placeholder="è¯·éæ©å访形å¼" style="width: 100%" clearable > <el-option label="çµè¯å访" value="phone" ></el-option> <el-option label="ä¸é¨å访" value="home" ></el-option> <el-option label="é¨è¯å访" value="clinic" ></el-option> <el-option label="微信å访" value="wechat" ></el-option> <el-option label="å ¶ä»" value="other"></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="䏿¬¡æå¡æ¶é´" prop="nextServiceTime" > <el-date-picker v-model="item.form.nextServiceTime" type="datetime" placeholder="鿩䏿¬¡å»¶ç»æå¡æ¶é´" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%" > </el-date-picker> <div class="time-tip" v-if="item.form.nextServiceTime" > è·ä¸æ¬¡æå¡è¿æ {{ calculateDaysLeft(item.form.nextServiceTime) }} 天 </div> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="æå¡æ¶é´" prop="serviceTime"> <el-date-picker v-model="item.form.serviceTime" type="datetime" placeholder="éæ©æå¡æ¶é´" value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%" > </el-date-picker> </el-form-item> </el-col> </el-row> <!-- 䏿¬¡å»¶ç»æå¡æ¶é´ --> <!-- æä½æé® --> <el-form-item> <el-button type="primary" @click="saveContinuityTab(index)" :loading="item.saving" > ä¿å </el-button> <el-button @click="resetContinuityTab(index)"> éç½® </el-button> </el-form-item> </el-form> </div> </el-tab-pane> </el-tabs> </div> </div> </div> </div> </div> </template> <script> import { getsearchrResults, getPersonVoices, getTaskservelist, Editsingletaskson, } from "@/api/AiCentre/index"; import { messagelistpatient, alterpatient, listcontactinformation, } from "@/api/patient/homepage"; export default { dicts: ["sys_yujing"], data() { return { // è·¯ç±åæ° taskid: "", id: "", sendname: "", patid: "", Voicetype: 0, serviceType: "", // é访å 容ç¸å ³ activeName: "wj", taskname: "", voice: "", tableDatatop: [], voiceDatatop: [], form: {}, userform: {}, // æ°å¢ï¼é®é¢éæ©ç¸å ³ showQuestionSelector: false, selectedQuestionIds: [], // æ£è åºç¡ä¿¡æ¯è¡¨å patientForm: { name: "", sex: "", age: "", telcode: "", hospitalNumber: "", dischargeDate: "", diagnosis: "", nurseName: "", address: "", relativeName: "", relativeTel: "", }, patientRules: { name: [{ required: true, message: "请è¾å ¥æ£è å§å", trigger: "blur" }], age: [ { required: true, message: "请è¾å ¥å¹´é¾", trigger: "blur" }, { pattern: /^\d+$/, message: "å¹´é¾å¿ 须为æ°å", trigger: "blur" }, ], telcode: [ { required: true, message: "请è¾å ¥èç³»çµè¯", trigger: "blur" }, { pattern: /^1[3-9]\d{9}$/, message: "请è¾å ¥æ£ç¡®çææºå·ç ", trigger: "blur", }, ], }, savingPatientInfo: false, // å»¶ç»æ¤çç¸å ³ activeContinuityTab: "continuity-0", continuityTabs: [], continuityTabIndex: 0, continuityRules: { // ç§»é¤continuityProblemsçéªè¯è§å careRecord: [ { required: true, message: "请è¾å ¥æ¤çè®°å½", trigger: "blur" }, ], dutyNurse: [ { required: true, message: "请è¾å ¥è´£ä»»æ¤å£«", trigger: "blur" }, ], visitType: [ { required: true, message: "è¯·éæ©å访形å¼", trigger: "change" }, ], serviceTime: [ { required: true, message: "è¯·éæ©æå¡æ¶é´", trigger: "change" }, ], nextServiceTime: [ { required: true, message: "è¯·éæ©ä¸æ¬¡æå¡æ¶é´", trigger: "change" }, ], }, // å¯éçå»¶ç»é®é¢ï¼ä»å·¦ä¾§é®å·ä¸æåï¼ availableQuestions: [], // å»¶ç»æ¤çæ±æ»ä¿¡æ¯ continuitySummary: { continueCount: 0, continueTimeNow: "", continueTimeNext: "", continueContent: "", }, // å ¶ä» logsheetlist: [], }; }, created() { this.taskid = this.$route.query.taskid; this.id = this.$route.query.id; this.sendname = this.$route.query.sendname; this.patid = this.$route.query.patid; this.Voicetype = this.$route.query.Voicetype || 0; this.serviceType = this.$route.query.serviceType; this.getTaskservelist(this.id); }, methods: { // è·å䏻颿 ·å¼ç±» getTopicClass(item) { console.log(item.isabnormal, "getTopicClass"); if (item.isabnormal == 1) { return "scriptTopic-isabnormal"; } else if (item.isabnormal == 2) { return "scriptTopic-warning"; } else { return "scriptTopic-dev"; } }, // è·åéé¡¹æ ·å¼ç±» getOptionClass(items) { if (items.isabnormal == 1) { return "red-star"; } else if (items.isabnormal == 2) { return "yellow-star"; } return ""; }, // è·åé®å·æ°æ® getsearchrResults(id) { getsearchrResults({ taskid: this.taskid, patid: this.patid, subId: id ? id : this.id, isFinish: false, }).then((res) => { if (res.code === 200) { this.tableDatatop = res.data.scriptResult; this.tableDatatop.forEach((item) => { if (item.scriptType == 2) item.scriptResult = []; if (item.scriptResultId && item.scriptType != 2) { item.isoption = 3; item.scriptResult = item.scriptResult; } else if (item.scriptResultId && item.scriptType == 2) { item.scriptResult = item.scriptResult.split("&"); item.isoption = 3; } }); this.taskname = res.data.taskName; this.overdata(); // æåå¯éçå»¶ç»é®é¢ this.extractAvailableQuestions(); } }); }, overdata() { this.tableDatatop.forEach((item, index) => { var obj = item.svyTaskTemplateTargetoptions.find( (items) => items.optioncontent == item.scriptResult ); if (obj) { console.log(obj, "obj"); if (obj.isabnormal) { this.tableDatatop[index].isabnormal = obj.isabnormal; } this.$forceUpdate(); } }); }, // æåå¯éçå»¶ç»é®é¢ extractAvailableQuestions() { this.availableQuestions = this.tableDatatop .filter( (item) => item.scriptContent && item.scriptContent.trim() !== "" ) .map((item, index) => ({ id: `question-${index}`, index: index, text: item.scriptContent, originalIndex: index, })); }, // 忢é®é¢éæ©é¢æ¿æ¾ç¤º toggleQuestionSelection() { this.showQuestionSelector = !this.showQuestionSelector; if (this.showQuestionSelector) { // éç½®éæ© this.selectedQuestionIds = []; } }, // æ·»å å»¶ç»é®é¢ addContinuityProblem(tabIndex) { this.continuityTabs[tabIndex].form.continuityProblems.push({ questionId: "", status: "pending", description: "", resolvedDate: "", createTime: new Date().toISOString(), // æ°å¢å段ï¼ç¨äºé®å·å¼äº¤äº selectedOption: "", // åéçæ¡ selectedOptions: [], // å¤éçæ¡ answer: "", // å¡«ç©ºçæ¡ showAppendInput: false, // æ¯å¦æ¾ç¤ºéå è¾å ¥æ¡ appendInput: "", // éå è¾å ¥å 容 }); }, // æ ¹æ®é®é¢IDè·ååå§é®é¢æ°æ® getQuestionOriginalData(questionId) { if (!questionId) return null; const originalIndex = this.availableQuestions.find( (q) => q.id === questionId )?.originalIndex; if (originalIndex !== undefined && this.tableDatatop[originalIndex]) { return this.tableDatatop[originalIndex]; } return null; }, // ç§»é¤å»¶ç»é®é¢ removeContinuityProblem(tabIndex, problemIndex) { this.continuityTabs[tabIndex].form.continuityProblems.splice( problemIndex, 1 ); }, // å¤çé®é¢éæ©åæ´ handleProblemChange(tabIndex, problemIndex, questionId) { const problem = this.continuityTabs[tabIndex].form.continuityProblems[problemIndex]; if (!questionId) { problem.description = ""; // æ¸ ç©ºçæ¡åæ®µ problem.selectedOption = ""; problem.selectedOptions = []; problem.answer = ""; problem.showAppendInput = false; problem.appendInput = ""; return; } // èªå¨å¡«å é®é¢æè¿° const question = this.availableQuestions.find((q) => q.id === questionId); if (question) { problem.description = `é®é¢ï¼${question.text}`; } // æ ¹æ®é®é¢ç±»ååå§åçæ¡åæ®µ const originalData = this.getQuestionOriginalData(questionId); if (originalData) { // åå§ååéçæ¡ if (originalData.scriptType === 1) { problem.selectedOption = originalData.scriptResult || ""; // æ£æ¥æ¯å¦éè¦æ¾ç¤ºéå è¾å ¥æ¡ problem.showAppendInput = originalData.showAppendInput || false; problem.appendInput = originalData.answerps || ""; } // åå§åå¤éçæ¡ else if (originalData.scriptType === 2) { problem.selectedOptions = Array.isArray(originalData.scriptResult) ? [...originalData.scriptResult] : originalData.scriptResult ? originalData.scriptResult.split("&") : []; } // åå§åå¡«ç©ºçæ¡ else if (originalData.scriptType === 4) { problem.answer = originalData.scriptResult || ""; } } }, // æ ¹æ®é®é¢IDè·åé®é¢ææ¬ getQuestionText(questionId) { if (!questionId) return "æªéæ©é®é¢"; const question = this.availableQuestions.find((q) => q.id === questionId); return question ? `${question.index + 1}. ${question.text}` : "é®é¢å·²å é¤"; }, // æªæææ¬ truncateText(text, length) { if (!text) return ""; return text.length > length ? text.substring(0, length) + "..." : text; }, // 确认é®é¢éæ© confirmQuestionSelection() { if (this.selectedQuestionIds.length === 0) { this.$modal.msgWarning("请è³å°éæ©ä¸ä¸ªå»¶ç»é®é¢"); return; } // è·åå½åæ¿æ´»çæ ç¾é¡µç´¢å¼ const activeTabIndex = this.continuityTabs.findIndex( (tab) => tab.name === this.activeContinuityTab ); if (activeTabIndex === -1) { this.$modal.msgError("æªæ¾å°æ¿æ´»çå»¶ç»æ¤çæ ç¾é¡µ"); return; } // æ·»å éä¸çé®é¢å°å½åæ ç¾é¡µ this.selectedQuestionIds.forEach((questionId) => { // æ£æ¥æ¯å¦å·²åå¨ç¸åé®é¢ const exists = this.continuityTabs[ activeTabIndex ].form.continuityProblems.some( (problem) => problem.questionId === questionId ); if (!exists) { this.continuityTabs[activeTabIndex].form.continuityProblems.push({ questionId: questionId, status: "pending", description: "", resolvedDate: "", createTime: new Date().toISOString(), }); } }); // å ³é鿩颿¿ this.showQuestionSelector = false; this.selectedQuestionIds = []; this.$modal.msgSuccess( `已添å ${this.selectedQuestionIds.length} 个延ç»é®é¢` ); }, // ç§»é¤å»¶ç»é®é¢ removeContinuityProblem(tabIndex, problemIndex) { this.continuityTabs[tabIndex].form.continuityProblems.splice( problemIndex, 1 ); }, // è·åè¯é³æ°æ® getPersonVoices(id) { let obj = { taskid: this.taskid, patid: this.patid, subId: id ? id : this.id, }; getPersonVoices(obj).then((res) => { 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 = []; } }); // æåå¯éçå»¶ç»é®é¢ this.extractAvailableQuestions(); } }); }, // è·ååºç¡ä¿¡æ¯ getuserinfo() { const queryParams = { pid: Number(this.patid), allhosp: "0", }; messagelistpatient(queryParams).then((response) => { if (response.rows[0]) { this.userform = response.rows[0]; this.initPatientForm(); } }); listcontactinformation({ patid: this.patid }).then((response) => { this.tableData = response.rows; if (this.tableData.length) { this.patientForm.relativeName = this.tableData[0].relation || ""; this.patientForm.relativeTel = this.tableData[0].contactway || ""; } }); }, // åå§åæ£è 表å initPatientForm() { if (this.userform) { this.patientForm.name = this.userform.name || ""; this.patientForm.sex = this.userform.sex || ""; this.patientForm.age = this.userform.age || ""; this.patientForm.telcode = this.userform.telcode || ""; this.patientForm.address = this.userform.placeOfResidence || ""; this.patientForm.hospitalNumber = this.userform.medicalRecordNo || ""; } if (this.form) { this.patientForm.dischargeDate = this.formatTime(this.form.endtime) || ""; this.patientForm.diagnosis = this.form.leavediagname || ""; this.patientForm.nurseName = this.form.nurseName || ""; } }, // è·åæ£è è®°å½ getTaskservelist(id) { getTaskservelist({ patid: this.patid, subId: id, pageSize: 100, }).then((res) => { if (res.code == 200) { this.form = res.rows[0].serviceSubtaskList.find( (item) => item.id == this.id ); this.logsheetlist = res.rows[0].serviceSubtaskList; // åå§åæ£è ä¿¡æ¯ this.initPatientForm(); // å è½½åå²å»¶ç»æ¤çæ°æ® this.loadContinuityHistory(); this.getuserinfo(); } if (this.Voicetype) { this.getPersonVoices(); } else { this.getsearchrResults(); } }); }, // å è½½åå²å»¶ç»æ¤çæ°æ® loadContinuityHistory() { if (this.form && this.form.continueContent) { try { const historyData = JSON.parse(this.form.continueContent); this.continuityTabs = historyData.map((item, index) => ({ name: `continuity-${index}`, title: `å»¶ç»æ¤ç${index + 1}`, form: { continuityProblems: item.continuityProblems || [], careRecord: item.careRecord || "", dutyNurse: item.dutyNurse || "", visitType: item.visitType || "", serviceTime: item.serviceTime || "", nextServiceTime: item.nextServiceTime || "", }, saving: false, })); if (this.continuityTabs.length > 0) { this.activeContinuityTab = this.continuityTabs[0].name; } // æ´æ°æ±æ»ä¿¡æ¯ this.updateContinuitySummary(); } catch (error) { console.error("è§£æå»¶ç»æ¤çå岿°æ®å¤±è´¥:", error); } } }, // æ´æ°å»¶ç»æ¤çæ±æ»ä¿¡æ¯ updateContinuitySummary() { if (this.form) { this.continuitySummary.continueCount = this.form.continueCount || 0; this.continuitySummary.continueTimeNow = this.form.continueTimeNow || ""; this.continuitySummary.continueTimeNext = this.form.continueTimeNext || ""; this.continuitySummary.continueContent = this.form.continueContent || ""; } }, // æ·»å å»¶ç»æ¤çæ ç¾é¡µ addContinuityTab() { console.log(this.continuityTabs.length); if (this.continuityTabs.length) { this.continuityTabIndex = this.continuityTabs.length; } const newIndex = this.continuityTabIndex + 1; const newTab = { name: `continuity-${newIndex}`, title: `å»¶ç»æ¤ç${newIndex}`, form: { continuityProblems: [], careRecord: "", dutyNurse: "", visitType: "", serviceTime: "", nextServiceTime: "", }, saving: false, }; this.continuityTabs.push(newTab); this.continuityTabIndex = newIndex; this.activeContinuityTab = newTab.name; }, // ç§»é¤å»¶ç»æ¤çæ ç¾é¡µ removeContinuityTab(targetName) { const tabs = this.continuityTabs; let activeName = this.activeContinuityTab; if (activeName === targetName) { tabs.forEach((tab, index) => { if (tab.name === targetName) { const nextTab = tabs[index + 1] || tabs[index - 1]; if (nextTab) { activeName = nextTab.name; } } }); } this.activeContinuityTab = activeName; this.continuityTabs = tabs.filter((tab) => tab.name !== targetName); }, // å¤çæ ç¾é¡µç¹å» handleTabClick(tab) { this.activeContinuityTab = tab.name; }, // 计ç®è·ç¦»ä¸æ¬¡æå¡è¿æå¤å°å¤© calculateDaysLeft(nextServiceTime) { if (!nextServiceTime) return 0; const nextTime = new Date(nextServiceTime); const now = new Date(); const diffTime = nextTime - now; const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); return diffDays > 0 ? diffDays : 0; }, // ä¿åå»¶ç»æ¤çæ ç¾é¡µ saveContinuityTab(index) { const formRef = this.$refs[`continuityForm${index}`]; if (!formRef) return; // éªè¯åºæ¬è¡¨å formRef[0].validate((valid) => { if (valid) { // éªè¯å»¶ç»é®é¢æ¯å¦å®æ´ const problems = this.continuityTabs[index].form.continuityProblems; let hasError = false; problems.forEach((problem, problemIndex) => { if (!problem.questionId) { hasError = true; this.$modal.msgError(`第${problemIndex + 1}个延ç»é®é¢æªéæ©`); } }); if (hasError) { return false; } this.continuityTabs[index].saving = true; // æ´æ°æ±æ»ä¿¡æ¯ this.updateContinuitySummaryFromTabs(); // è°ç¨ä¿åAPI this.saveContinuityData(); } else { this.$modal.msgError("请填å宿´ä¿¡æ¯"); return false; } }); }, // æ´æ°å»¶ç»æ¤çæ±æ»ä¿¡æ¯ updateContinuitySummaryFromTabs() { if (this.continuityTabs.length === 0) return; // æ¾å°ææ°çæå¡æ¶é´ let latestTime = ""; let nextTime = ""; let totalProblems = 0; this.continuityTabs.forEach((tab) => { if (tab.form.serviceTime) { if ( !latestTime || new Date(tab.form.serviceTime) > new Date(latestTime) ) { latestTime = tab.form.serviceTime; } } if (tab.form.nextServiceTime) { if ( !nextTime || new Date(tab.form.nextServiceTime) < new Date(nextTime) ) { nextTime = tab.form.nextServiceTime; } } // ç»è®¡é®é¢æ°é totalProblems += tab.form.continuityProblems.length; }); this.continuitySummary.continueCount = this.continuityTabs.length; this.continuitySummary.continueTimeNow = latestTime; this.continuitySummary.continueTimeNext = nextTime; // æå»ºå®æ´çå»¶ç»æ¤çæ°æ® const continuityData = this.continuityTabs.map((tab) => ({ ...tab.form, tabTitle: tab.title, tabName: tab.name, })); this.continuitySummary.continueContent = JSON.stringify(continuityData); this.continuitySummary.totalProblems = totalProblems; }, // ä¿åå»¶ç»æ¤çæ°æ® saveContinuityData() { const vm = this; // éªè¯æ¯ä¸ªé®é¢çquestionIdæ¯å¦å·²éæ© let hasEmptyQuestion = false; this.continuityTabs.forEach((tab, tabIndex) => { tab.form.continuityProblems.forEach((problem, problemIndex) => { if (!problem.questionId) { hasEmptyQuestion = true; vm.$modal.msgError( `第${tabIndex + 1}个æ ç¾é¡µç第${problemIndex + 1}个é®é¢æªéæ©` ); } }); }); if (hasEmptyQuestion) { return; } const formData = { id: vm.id, patid: vm.patid, taskid: vm.taskid, continueFlag: 2, continueCount: vm.continuitySummary.continueCount, continueTimeNow: vm.continuitySummary.continueTimeNow, continueTimeNext: vm.continuitySummary.continueTimeNext, continueContent: vm.continuitySummary.continueContent, // å¯ä»¥æ·»å é®å·çæ¡çæ´å // questionnaireAnswers: vm.continuityTabs.map((tab) => ({ // tabName: tab.name, // problems: tab.form.continuityProblems.map((problem) => ({ // questionId: problem.questionId, // answer: // problem.selectedOption || // problem.selectedOptions || // problem.answer, // status: problem.status, // description: problem.description, // })), // })), }; Editsingletaskson(formData) .then((res) => { if (res.code === 200) { vm.$modal.msgSuccess("å»¶ç»æ¤çè®°å½ä¿åæå"); // éç½®ä¿åç¶æ vm.continuityTabs.forEach((tab) => { tab.saving = false; }); } else { vm.$modal.msgError("ä¿å失败"); } }) .catch((error) => { console.error("ä¿å失败:", error); vm.$modal.msgError("ä¿å失败"); vm.continuityTabs.forEach((tab) => { tab.saving = false; }); }); }, // éç½®å»¶ç»æ¤çæ ç¾é¡µ resetContinuityTab(index) { this.continuityTabs[index].form = { continuityProblems: [], careRecord: "", dutyNurse: "", visitType: "", serviceTime: "", nextServiceTime: "", }; this.$refs[`continuityForm${index}`][0].clearValidate(); }, // ä¿åæ£è ä¿¡æ¯ savePatientInfo() { this.$refs.patientForm.validate((valid) => { if (valid) { this.savingPatientInfo = true; // æ´æ°userformæ°æ® const updatedUserform = { ...this.userform, name: this.patientForm.name, sex: this.patientForm.sex, age: this.patientForm.age, telcode: this.patientForm.telcode, placeOfResidence: this.patientForm.address, medicalRecordNo: this.patientForm.hospitalNumber, }; alterpatient(updatedUserform) .then((res) => { if (res.code == 200) { this.$modal.msgSuccess("æ£è ä¿¡æ¯ä¿åæå"); this.userform = updatedUserform; } else { this.$modal.msgError("æ£è ä¿¡æ¯ä¿®æ¹å¤±è´¥"); } this.savingPatientInfo = false; }) .catch((error) => { console.error("ä¿å失败:", error); this.$modal.msgError("ä¿å失败"); this.savingPatientInfo = false; }); } else { this.$modal.msgError("请填å宿´ä¿¡æ¯"); return false; } }); }, // éç½®æ£è ä¿¡æ¯ resetPatientInfo() { this.initPatientForm(); this.$refs.patientForm.clearValidate(); }, // æ¶é´æ ¼å¼å formatTime(time) { if (!time) return ""; return time.split(" ")[0]; }, // æ ¼å¼åæ¾ç¤ºæ¶é´ formatDisplayTime(time) { if (!time) return "æªè®¾ç½®"; return time.replace(" ", " "); }, // å¼å¸¸å渲æ tableRowClassName({ row }) { if (row.id == this.id) { return "warning-row"; } return ""; }, }, }; </script> <style lang="scss" scoped> .ContinuityCarePage { margin: 10px; display: flex; flex-direction: column; gap: 20px; } .headline { font-size: 20px; height: 40px; border-left: 5px solid #41a1be; padding-left: 10px; margin-bottom: 20px; display: flex; align-items: center; color: #333; font-weight: 600; } .sub-headline { font-size: 16px; height: 36px; padding-left: 8px; margin-bottom: 15px; display: flex; align-items: center; color: #409eff; font-weight: 500; border-bottom: 2px solid #e4e7ed; padding-bottom: 8px; i { margin-right: 8px; font-size: 18px; } } /* 第ä¸é¨åï¼æå¡åºç¡ä¿¡æ¯ */ .basic-info-section { margin: 0 10px; padding: 20px; background: #fff; 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); border-radius: 4px; .basic-info-container { display: flex; gap: 20px; min-height: 1000px; @media screen and (max-width: 1200px) { flex-direction: column; } } .followup-content { flex: 1; min-width: 0; &.readonly-content { background: #f8f9fa; border-radius: 8px; padding: 15px; border: 1px solid #e4e7ed; } .content-container { height: calc(1000px - 60px); overflow: hidden; display: flex; flex-direction: column; ::v-deep .el-tabs { flex: 1; display: flex; flex-direction: column; .el-tabs__content { flex: 1; overflow: hidden; .el-tab-pane { height: 100%; overflow: hidden; display: flex; flex-direction: column; } } } } } .continuity-history { flex: 1; min-width: 0; background: #fff; border-radius: 8px; padding: 15px; border: 1px solid #e4e7ed; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); .history-content { height: calc(1000px - 60px); overflow: hidden; display: flex; flex-direction: column; ::v-deep .el-tabs { flex: 1; display: flex; flex-direction: column; .el-tabs__content { flex: 1; overflow-y: auto; padding: 15px 0; .continuity-form { padding: 0 10px; .el-form { .selected-problems { margin-top: 10px; padding: 10px; background: #f5f7fa; border-radius: 4px; border: 1px solid #e4e7ed; } .time-tip { margin-top: 5px; font-size: 12px; color: #67c23a; font-style: italic; } } } } } } } } .patient-info-section { margin: 0 10px 20px 10px; padding: 20px; background: #fff; 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); border-radius: 4px; .patient-info-form { .continuity-summary { padding: 15px; background: #ddf0f8; border-radius: 8px; border: 1px solid #b3e0f2; .summary-item { display: inline-block; margin-right: 30px; margin-bottom: 8px; .label { font-weight: 500; color: #333; } .value { color: #409eff; font-weight: 500; } } } } } /* å ±äº«æ ·å¼ */ .CONTENT { padding: 10px; height: 100%; display: flex; flex-direction: column; .title { font-size: 18px; font-weight: bold; margin-bottom: 20px; text-align: center; color: #333; } } .preview-left { margin: 10px; padding: 20px; border: 1px solid #dcdfe6; border-radius: 4px; max-height: 800px; overflow-y: auto; background: #fff; flex: 1; .topic-dev { margin-bottom: 20px; font-size: 16px; .dev-text { margin-bottom: 10px; font-weight: 500; color: #333; } } } .scriptTopic-dev { padding: 15px; border-radius: 4px; background: #fafafa; border: 1px solid #e4e7ed; margin-bottom: 15px; } .scriptTopic-isabnormal { padding: 15px; border-radius: 4px; background: #fff5f5; border: 1px solid #f56c6c; color: #f56c6c; margin-bottom: 15px; } .scriptTopic-warning { padding: 15px; border-radius: 4px; background: #fff9e6; border: 1px solid #e6a23c; color: #e6a23c; margin-bottom: 15px; } .red-star { ::v-deep.el-radio__label { position: relative; padding-right: 10px; } ::v-deep.el-radio__label::after { content: "*"; color: #f56c6c; position: absolute; right: -5px; top: 0; } } .yellow-star { ::v-deep.el-radio__label { position: relative; padding-right: 10px; } ::v-deep.el-radio__label::after { content: "*"; color: #e6a23c; position: absolute; right: -5px; top: 0; font-weight: bold; } } .borderdiv { height: 100%; padding: 10px; display: flex; flex-direction: column; .title { font-size: 18px; font-weight: bold; margin-bottom: 20px; text-align: center; } .voice-audio { display: flex; align-items: center; color: #59a0f0; margin-bottom: 20px; padding: 10px; background: #f5f7fa; border-radius: 4px; } .preview-left { flex: 1; margin: 0; .leftside { margin: 15px 0; span { display: inline-block; padding: 8px 12px; background: #409eff; color: #fff; border-radius: 8px; max-width: 80%; margin-left: 10px; } } .offside { display: flex; flex-direction: row-reverse; margin: 15px 0; .offside-value { padding: 8px 12px; background: #67c23a; color: #fff; border-radius: 8px; max-width: 80%; margin-right: 10px; } } } } /* ååºå¼è®¾è®¡ */ @media (max-width: 768px) { .ContinuityCarePage { margin: 5px; gap: 10px; } .basic-info-section, .patient-info-section { margin: 0 5px; padding: 10px; } .basic-info-container { gap: 10px !important; } .patient-info-form { .el-row { flex-direction: column; } .el-col { width: 100% !important; margin-bottom: 10px; } } .preview-left { margin: 5px; padding: 10px; } } /* é®é¢éæ©å¨é¢æ¿ */ .question-selector-panel { margin-bottom: 20px; padding: 15px; background: #f8f9fa; border: 1px solid #e4e7ed; border-radius: 8px; .selector-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #e4e7ed; span { font-weight: 500; color: #333; } } .question-list { max-height: 200px; overflow-y: auto; padding-right: 10px; .question-item { margin-bottom: 10px; padding: 8px 12px; background: #fff; border-radius: 6px; border: 1px solid #e4e7ed; transition: all 0.3s; &:hover { border-color: #409eff; background: #f0f7ff; } .question-content { display: flex; align-items: flex-start; .question-index { font-weight: 600; color: #409eff; min-width: 30px; } .question-text { flex: 1; line-height: 1.5; } } } } } /* å»¶ç»é®é¢è¡¨å */ .continuity-problems-form { .problems-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #e4e7ed; span { font-weight: 500; color: #333; } } .problems-list { .problem-item { margin-bottom: 20px; padding: 15px; background: #f8f9fa; border-radius: 8px; border: 1px solid #e4e7ed; &:last-child { margin-bottom: 0; } .problem-content { .problem-meta { display: flex; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px dashed #e4e7ed; .problem-index { font-weight: 500; color: #409eff; min-width: 80px; } } .problem-detail { .detail-row { display: flex; align-items: flex-start; margin-bottom: 10px; &:last-child { margin-bottom: 0; } .detail-label { font-weight: 500; color: #666; min-width: 100px; line-height: 32px; } .detail-value { flex: 1; line-height: 1.5; color: #333; padding: 5px 0; } } } } } } .empty-problems { text-align: center; padding: 30px 0; background: #fafafa; border-radius: 8px; border: 1px dashed #e4e7ed; } } /* å»¶ç»é®é¢åè¡¨å®¹å¨ - æ·»å æ»å¨ */ .problems-list-container { max-height: 400px; /* æ§å¶æå¤§é«åº¦ */ overflow-y: auto; padding-right: 10px; margin-bottom: 15px; &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 3px; } &::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 3px; &:hover { background: #a8a8a8; } } } /* é®å·å¼é®é¢å±ç¤º */ .question-display-area { margin: 15px 0; padding: 15px; background: #fff; border-radius: 8px; border: 1px solid #e4e7ed; .question-item-render { .question-text { margin-bottom: 15px; font-size: 14px; line-height: 1.5; color: #333; strong { color: #409eff; margin-right: 5px; } span { color: #666; } } .question-options { margin-left: 20px; .el-radio, .el-checkbox { display: block; margin-bottom: 8px; margin-right: 20px; } } .append-input { margin-left: 20px; margin-top: 10px; } } .no-question-data { text-align: center; color: #999; padding: 20px; font-style: italic; } } /* è°æ´é®é¢è¯¦æ å¸å± */ .problem-detail { margin-top: 5px; padding-top: 5px; padding-bottom: 20px; margin-bottom: 10px; border-bottom: 1px dashed #6e9af4; .detail-row { display: flex; align-items: center; margin-bottom: 15px; &:last-child { margin-bottom: 0; } .detail-label { font-weight: 500; color: #666; min-width: 80px; white-space: nowrap; } } } /* ååºå¼è°æ´ */ @media (max-width: 768px) { .problems-list-container { max-height: 300px; } .problem-detail { .detail-row { flex-direction: column; align-items: flex-start; .detail-label { margin-bottom: 5px; min-width: auto; } .el-select, .el-date-picker { width: 100% !important; margin: 5px 0 !important; } } } } /* ååºå¼è°æ´ */ @media (max-width: 768px) { .question-selector-panel { padding: 10px; .question-list { .question-item { padding: 6px 8px; } } } .continuity-problems-form { .problems-list { .problem-item { padding: 10px; .problem-content { .problem-meta { flex-direction: column; align-items: flex-start; .el-select { width: 100% !important; margin: 10px 0; } } .problem-detail { .detail-row { flex-direction: column; align-items: flex-start; .detail-label { margin-bottom: 5px; min-width: auto; } } } } } } } } /* æ»å¨æ¡ç¾å */ .preview-left, .history-content .el-tabs__content, .content-container .el-tabs__content { &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 3px; } &::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 3px; &:hover { background: #a8a8a8; } } } </style> src/views/followvisit/Continue/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,2094 @@ <template> <div class="app-container"> <!-- <div class="leftvlue" style="margin-bottom: 20px"> <el-row :gutter="10"> <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index"> <el-card shadow="hover" :body-style="item.router ? ' cursor: pointer' : 'cursor: default'" > <div style="padding: 8px" @click="$router.push(item.router)"> <span>{{ item.name }}</span> <div style=" text-align: center; font-size: 18px; margin-top: 10px; font-weight: 600; " > {{ item.value ? item.value : 0 }} </div> </div> </el-card> </el-col> <el-col :span="2.5"> <div class="ysfleftvlue"> <el-card shadow="hover"> <div style="padding: 8px"> <span>表åå·²åé</span> <div style=" text-align: center; font-size: 18px; margin-top: 10px; font-weight: 600; " > {{ yfsvalue }} </div> </div> </el-card> </div> </el-col> <el-col :span="2.5"> <div class="errleftvlue"> <el-card shadow="hover"> <div style="padding: 8px"> <span>å¼å¸¸</span> <div style=" text-align: center; font-size: 18px; margin-top: 10px; font-weight: 600; " > {{ ycvalue }} </div> </div> </el-card> </div> </el-col> <el-col :span="2.5" v-if="orgname == 'çç«åå¾·ç¿ èé¢åº'"> <div class="jgleftvlue"> <el-card shadow="hover "> <div style="padding: 8px"> <span>è¦å</span> <div style=" text-align: center; font-size: 18px; margin-top: 10px; font-weight: 600; " > {{ jgvalue }} </div> </div> </el-card> </div> </el-col> </el-row> </div> --> <el-row :gutter="20"> <!--ç¨æ·æ°æ®--> <el-form :model="topqueryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px" > <el-form-item label="ä»»å¡åç§°"> <el-input v-model="topqueryParams.taskName" placeholder="è¯·éæ©ä»»å¡åç§°" ></el-input> </el-form-item> <el-form-item label="åºé¢æ¶é´"> <el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" ></el-date-picker> </el-form-item> <el-form-item label="åºé访æ¶é´"> <el-date-picker v-model="dateRangefs" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" ></el-date-picker> </el-form-item> <el-form-item label="æ£è å§å" prop="sendname"> <el-input v-model="topqueryParams.sendname" placeholder="请è¾å ¥æ£è å§å" ></el-input> </el-form-item> <el-form-item label="è¯æåç§°" prop="leavediagname"> <el-input v-model="topqueryParams.leavediagname" placeholder="请è¾å ¥è¯æåç§°" ></el-input> </el-form-item> <el-form-item label="é访人å" prop="updateBy"> <el-input v-model="topqueryParams.updateBy" placeholder="请è¾å ¥é访人å" ></el-input> </el-form-item> <!-- <el-form-item label="主治å»ç" prop="drname"> <el-input v-model="topqueryParams.drname" placeholder="请è¾å ¥ä¸»æ²»å»ç" ></el-input> </el-form-item> --> <!-- <el-form-item label="ç»ç®¡å»ç" prop="managementDoctor"> <el-input v-model="topqueryParams.managementDoctor" placeholder="请è¾å ¥ä¸»æ²»å»ç" ></el-input> </el-form-item> --> <!-- <el-form-item label="æ¥æéå¶" prop="status"> <el-select v-model="endOut" placeholder="è¯·éæ©"> <el-option v-for="item in endOuts" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> </el-form-item> --> <el-form-item label="æ£è èå´" prop="status"> <el-cascader v-model="topqueryParams.scopetype" placeholder="é»è®¤å ¨é¨" :options="sourcetype" :props="{ expandTrigger: 'hover' }" @change="handleChange" ></el-cascader> </el-form-item> <el-form-item label="ä»»å¡ç¶æ" prop="status"> <el-select v-model="topqueryParams.sendstate" placeholder="è¯·éæ©"> <el-option v-for="item in topicoptions" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> </el-form-item> <!-- <el-form-item label="æåºæ¹å¼" prop="status"> <el-select v-model="topqueryParams.sort" placeholder="è¯·éæ©"> <el-option v-for="item in topicoptionssort" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> </el-form-item> --> <el-form-item> <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery(1)" >æç´¢</el-button > <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" >éç½®</el-button > </el-form-item> </el-form> <el-divider></el-divider> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> <div class="documentf"> <div class="document"> <el-button type="warning" plain icon="el-icon-warning-outline" size="medium" @click="toleadExport(1)" >æ§è¡å¤±è´¥</el-button > </div> </div> </el-col> <el-col :span="1.5"> <div class="documentf"> <div class="document"> <el-button type="danger" plain icon="el-icon-warning" size="medium" @click="toleadExport(2)" >ç»æå¼å¸¸</el-button > </div> </div> </el-col> </el-row> <el-table v-loading="loading" ref="userform" :data="userList" :row-class-name="tableRowClassName" @selection-change="handleSelectionChange" > <el-table-column type="selection" width="50" align="center" /> <el-table-column label="ä»»å¡åç§°" fixed width="150" show-overflow-tooltip align="center" key="taskName" prop="taskName" /> <!-- <el-table-column label="åºå·" fixed align="center" key="id" prop="id" /> --> <el-table-column label="å§å" width="100" align="center" key="sendname" prop="sendname" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" gettoken360(scope.row.sfzh, scope.row.drcode, scope.row.drname) " ><span class="button-textsc">{{ scope.row.sendname }}</span></el-button > </template> </el-table-column> <el-table-column label="è¯æåç§°" align="center" key="leavediagname" prop="leavediagname" width="120" :show-overflow-tooltip="true" > </el-table-column> <el-table-column label="å»¶ç»æ¤ç次æ°" align="center" key="continueCount" prop="continueCount" width="120" :show-overflow-tooltip="true" > </el-table-column> <el-table-column label="ææ°å»¶ç»æ¤çæ¶é´" sortable align="center" prop="finishtime" width="160" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.continueTimeNext) }}</span> </template> </el-table-column> <el-table-column label="䏿¬¡å»¶ç»æ¤çæ¶é´" sortable align="center" prop="finishtime" width="160" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.continueTimeNow) }}</span> </template> </el-table-column> <el-table-column label="ä»»å¡ç¶æ" align="center" key="sendstate" prop="sendstate" width="120" > <template slot-scope="scope"> <el-tooltip class="item" effect="dark" :content="scope.row.remark" placement="top-start" > <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> <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> <div v-if="scope.row.sendstate == 6"> <el-tag type="success" :disable-transitions="false" >已宿</el-tag > </div> </el-tooltip> </template> </el-table-column> <!-- <el-table-column label="ä»»å¡å¼å¸¸è¯´æ" width="120" align="center" key="remark" prop="remark" --> /> <el-table-column label="å¤çæè§" align="center" key="suggest" prop="suggest" width="120" > <template slot-scope="scope"> <dict-tag :options="dict.type.sys_suggest" :value="scope.row.suggest" /> </template> </el-table-column> <el-table-column label="馿¬¡éè®¿å®ææ¶é´" sortable align="center" prop="finishtime" width="160" > <template slot-scope="scope"> <span>{{ parseTime(scope.row.finishtime) }}</span> </template> </el-table-column> <el-table-column label="åºé¢æ¥æ" width="200" align="center" key="endtime" prop="endtime" > <template slot-scope="scope"> <span>{{ formatTime(scope.row.endtime) }}</span> </template></el-table-column > <el-table-column label="åºéè®¿æ¥æ" width="200" align="center" key="longSendTime" prop="longSendTime" > <template slot-scope="scope"> <span>{{ formatTime(scope.row.longSendTime) }}</span> </template></el-table-column > <el-table-column label="主治å»ç" width="120" align="center" key="drname" prop="drname" /> <el-table-column v-if="orgname != '丽水å¸ä¸å»é¢'" label="é访人å" align="center" key="updateBy" prop="updateBy" width="120" /> <el-table-column v-if="orgname != '丽水å¸ä¸å»é¢'" label="ç»ç®¡å»ç" align="center" key="managementDoctor" prop="managementDoctor" width="120" /> <el-table-column label="åºé¢å¤©æ°" width="120" align="center" key="endDay" prop="endDay" > <template slot-scope="scope"> <span>{{ scope.row.endDay ? scope.row.endDay + "天" : "" }}</span> </template> </el-table-column> <el-table-column label="身份è¯å·ç " width="200" align="center" key="sfzh" prop="sfzh" /> <el-table-column label="èç³»çµè¯" width="200" align="center" key="phone" prop="phone" /> <el-table-column label="责任æ¤å£«" width="120" align="center" key="nurseName" prop="nurseName" /> <el-table-column label="ç§å®¤" align="center" key="deptname" prop="deptname" width="120" > </el-table-column> <el-table-column label="ç åº" align="center" key="leavehospitaldistrictname" prop="leavehospitaldistrictname" width="120" > </el-table-column> <el-table-column label="åºé¢é访模æ¿åç§°" align="center" key="templatename" prop="templatename" width="200" /> <el-table-column label="任塿§è¡æ¹å¼" align="center" key="preachform" prop="preachform" width="160" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-for="item in scope.row.preachform">{{ item }}ã </span> </template> </el-table-column> <!-- <el-table-column label="ä»»å¡åéæµç¨" align="center" key="serviceSubtaskRecordList" prop="serviceSubtaskRecordList" width="160" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-for="item in scope.row.serviceSubtaskRecordList" >{{ item.remark }}ã </span> </template> </el-table-column> --> <el-table-column label="ä»»å¡ç»æè¯´æ" width="220" align="center" key="remark" prop="remark" > <template slot-scope="scope" v-if="scope.row.remark"> <el-tooltip :content="scope.row.remark" placement="top" effect="dark" > <el-tag type="warning" v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4" >{{ scope.row.remark }}</el-tag > <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag> </el-tooltip> </template> </el-table-column> <el-table-column label="æä½" align="center" fixed="right" width="120" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="medium" type="text" @click="Seedetails(scope.row)" ><span class="button-zx" ><i class="el-icon-s-order"></i>æ¥ç详æ </span ></el-button > </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="topqueryParams.pageNum" :limit.sync="topqueryParams.pageSize" @pagination="getList" /> </el-row> <!-- 满æåº¦å¼¹æ¡ --> <el-dialog title="é访满æåº¦è¯å" :visible.sync="scoreDialogVisible" width="80%" :close-on-click-modal="false" > <el-table :data="selectedRows" border style="width: 100%"> <el-table-column label="å§å" width="100" align="center" prop="sendname" /> <el-table-column label="ä»»å¡åç§°" width="180" align="center" prop="taskName" /> <!-- æ°å¢è¯åå --> <el-table-column label="ç宿§(20)" align="center" key="authenticity" prop="authenticity" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.authenticity" :min="0" :max="20" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="ä¸å¨å 宿(20)" align="center" key="weekFinish" prop="weekFinish" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.weekFinish" :min="0" :max="20" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="è§èæ§(10)" align="center" key="standard" prop="standard" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.standard" :min="0" :max="10" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="åæ¶æ§(10)" align="center" key="timeliness" prop="timeliness" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.timeliness" :min="0" :max="10" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="å®£ææ åµ(10)" align="center" key="library" prop="library" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.library" :min="0" :max="10" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="ç¯å¢æ»¡æåº¦(10)" align="center" key="environment" prop="environment" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.environment" :min="0" :max="10" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="å»ç满æåº¦(10)" align="center" key="doctorSatisfaction" prop="doctorSatisfaction" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.doctorSatisfaction" :min="0" :max="10" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="æ¤å£«æ»¡æåº¦(10)" align="center" key="nurseSatisfaction" prop="nurseSatisfaction" width="150" > <template slot-scope="scope"> <el-input-number v-model="scope.row.nurseSatisfaction" :min="0" :max="10" :step="1" size="small" /> </template> </el-table-column> <el-table-column label="æ»å" align="center" key="total" prop="total" fixed="right" > <template slot-scope="scope"> <span>{{ calculateTotal(scope.row) }}</span> </template> </el-table-column> </el-table> <div slot="footer" class="dialog-footer"> <el-button @click="scoreDialogVisible = false">åæ¶</el-button> <el-button type="primary" @click="saveScores">ä¿å</el-button> </div> </el-dialog> <!-- æ·»å æä¿®æ¹å½±åéè®¿å¯¹è¯æ¡ --> <el-dialog :title="amendtag ? 'ä¿®æ¹æ£è ä¿¡æ¯' : 'æ°å¢æ£è '" :visible.sync="Labelchange" width="900px" > <el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-row> <el-col :span="8"> <el-form-item label="å§å" width="100" prop="name"> <el-input v-model="form.name" placeholder="请è¾å ¥å§å" maxlength="30" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="æ§å«" width="100" prop="sex"> <el-select v-model="form.sex" placeholder="è¯·éæ©æ§å«"> <el-option v-for="dict in sextype" :key="dict.value" :label="dict.label" :value="dict.value" ></el-option> </el-select> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="å¹´é¾" prop="age"> <el-input v-model="form.age" placeholder="请è¾å ¥å¹´é¾" maxlength="30" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="8"> <el-form-item label="è¿æ»¤å»ç" width="100" prop="filterDrname"> <el-input v-model="form.filterDrname" placeholder="请è¾å ¥å»çå§å" maxlength="30" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item label="è¿æ»¤åå "> <el-input v-model="form.notrequiredreason" type="textarea" placeholder="请è¾å ¥è¿æ»¤åå " ></el-input> </el-form-item> </el-col> </el-row> </el-form> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">ç¡® å®</el-button> <el-button @click="cancel">å æ¶</el-button> </div> </el-dialog> <!-- ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ --> <el-dialog title="åéæ¶é´è®¾ç½®" :visible.sync="modificationVisible" width="45%" > <div style="margin-bottom: 20px; color: red"> ç»ä¸ä¿®æ¹å½å¤©æªåéç任塿¶é´ </div> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm" > <el-form-item label="å鿥æ"> <el-date-picker v-model="ruleForm.value1" type="date" placeholder="éæ©æ¥æ" > </el-date-picker> </el-form-item> <el-form-item label="æ¶é´æ®µ" prop="type"> <el-checkbox-group v-model="ruleForm.type"> <el-checkbox label="ä¸å" name="type"></el-checkbox> <el-checkbox label="ä¸å" name="type"></el-checkbox> <el-checkbox label="æä¸" name="type"></el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="ä¸åæ¶é´åºé´" required> <el-time-picker is-range v-model="ruleForm.value2" range-separator="è³" start-placeholder="å¼å§æ¶é´" end-placeholder="ç»ææ¶é´" placeholder="éæ©æ¶é´èå´" > </el-time-picker> </el-form-item> <el-form-item label="ä¸åæ¶é´åºé´" required> <el-time-picker is-range v-model="ruleForm.value3" range-separator="è³" start-placeholder="å¼å§æ¶é´" end-placeholder="ç»ææ¶é´" placeholder="éæ©æ¶é´èå´" > </el-time-picker> </el-form-item> <el-form-item label="æä¸æ¶é´åºé´" required> <el-time-picker is-range v-model="ruleForm.value4" range-separator="è³" start-placeholder="å¼å§æ¶é´" end-placeholder="ç»ææ¶é´" placeholder="éæ©æ¶é´èå´" > </el-time-picker> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="modificationVisible = false">å æ¶</el-button> <el-button type="primary" @click="modificationVisible = false" >ç¡® å®</el-button > </span> </el-dialog> <!-- 忬¡é访 --> <el-dialog title="æ£è 忬¡é访" :visible.sync="dialogFormVisible"> <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px"> <el-form-item label="ä»»å¡åç§°"> <el-input style="width: 400px" disabled v-model="zcform.taskName" ></el-input> </el-form-item> <el-form-item label="æ£è åç§°"> <el-input style="width: 400px" disabled v-model="zcform.sendname" ></el-input> </el-form-item> <el-form-item label="å¹´é¾"> <el-input style="width: 400px" disabled v-model="zcform.age" ></el-input> </el-form-item> <el-form-item label="ç§å®¤"> <el-input style="width: 400px" disabled v-model="zcform.deptname" ></el-input> </el-form-item> <el-form-item label="ç åº"> <el-input style="width: 400px" disabled v-model="zcform.leavehospitaldistrictname" ></el-input> </el-form-item> <el-form-item label="é访æ¹å¼" prop="resource"> <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="åºé¢æ¶é´"> <el-input style="width: 400px" disabled v-model="zcform.endtime" ></el-input> </el-form-item> <el-form-item label="éè®¿å®ææ¶é´" prop="date1"> <el-date-picker type="date" placeholder="éæ©æ¥æ" v-model="zcform.date1" style="width: 100%" ></el-date-picker> </el-form-item> <el-form-item label="é访记å½"> <el-input type="textarea" v-model="zcform.remark"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">å æ¶</el-button> <el-button type="primary" @click="setupsubtask">确认å建æå¡</el-button> </div> </el-dialog> </div> </template> <script> import { delUser, addUser, updateUser, resetUserPwd, changeUserStatus, } from "@/api/system/user"; import { getTaskservelist, buidegetTasklist, addserviceSubtask, query360PatInfo, addsatisfaction, } from "@/api/AiCentre/index"; import { alterpatient, particularpatient } from "@/api/patient/homepage"; import Treeselect from "@riophae/vue-treeselect"; import store from "@/store"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; export default { name: "Discharge", dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"], components: { Treeselect }, data() { return { // é®ç½©å± loading: true, // é䏿°ç» ids: [], // éå个ç¦ç¨ single: true, // éå¤ä¸ªç¦ç¨ multiple: true, // æ¾ç¤ºæç´¢æ¡ä»¶ showSearch: true, dialogFormVisible: false, // æ»æ¡æ° total: 0, // ç¨æ·è¡¨æ ¼æ°æ® userList: null, // å¼¹åºå±æ é¢ title: "æ°å¢å½±åé访", // æ¯å¦æ¾ç¤ºä¿®æ¹ãæ·»å å¼¹åºå± addalteropen: false, // ä¿®æ¹åéæ¶é´å¯¹è¯æ¡ modificationVisible: false, // é¨é¨åç§° deptName: undefined, // é»è®¤å¯ç initPassword: undefined, // æ¥æèå´ dateRange: [], dateRangefs: [], // å²ä½é项 postOptions: [], ruleForm: { type: [], }, zcform: {}, dynamicTags: ["é项ä¸", "é项äº", "é项ä¸"], //é项 inputVisible: false, Labelchange: false, ycvalue: "", jgvalue: "", yfsvalue: "", inputValue: "", preachform: "", previewVisible: false, //å½±åé访é¢è§å¼¹æ¡ radio: "", radios: [], previewtype: 2, //é¢è§å½±åé访类å total: 0, // æ»æ¡æ° // 满æåº¦è°æ¥æ°æ® scoreDialogVisible: false, selectedRows: [], value: [], list: [], sourcetype: [ { value: 1, label: "ç§å®¤", children: [], }, { value: 2, label: "ç åº", children: [], }, { value: 3, label: "å ¨é¨", }, ], loading: false, cardlist: [ { name: "åºé¢æå¡æ»é", value: 0, }, // { // name: "æ£è è¿æ»¤", // value: 0, // }, { name: "éé访", value: 0, }, { name: "åé失败", value: 0, }, { name: "å¾ é访", value: 0, }, // { // name: "å·²åé", // value: 0, // }, // { // name: "表åå·²åé", // value: 0, // }, ], zcrules: { date1: [ { required: true, message: "è¯·éæ©é访æ¹å¼", trigger: "change" }, ], resource: [ { required: true, message: "è¯·éæ©é访æ¶é´", trigger: "blur" }, ], }, // 表ååæ° form: { phonenumber: "", totagid: "", types: "", nickName: "", qystatus: "", btstatus: "", }, // endOut: 1, endOut: localStorage.getItem("orgname") == "丽水å¸ä¸å»é¢" ? 0 : 1, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) 7åºéè®¿æ¥æ(ååº) åºéè®¿æ¥æ(æ£åº) endOuts: [ { value: 0, label: "æªæ¢è³å½æ¥æå¡", }, { value: 1, label: "å ¨é¨æå¡", }, ], topicoptionssort: [ { value: 0, label: "åºé¢æ¶é´(æ£åº)", }, { value: 1, label: "åºé¢æ¶é´(ååº)", }, { value: 2, label: "åéæ¶é´(æ£åº)", }, { value: 3, label: "åéæ¶é´(ååº)", }, { value: 7, label: "åºéè®¿æ¥æ(æ£åº)", }, { value: 8, label: "åºéè®¿æ¥æ(ååº)", }, ], // æ¥è¯¢åæ° topqueryParams: { pageNum: 1, pageSize: 10, sort: localStorage.getItem("orgname") == "丽水å¸ä¸å»é¢" ? 8 : 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) 7åºéè®¿æ¥æ(ååº) åºéè®¿æ¥æ(æ£åº) searchscope: 3, continueFlag: 2, visitCount: 1, scopetype: [], leaveldeptcodes: [], leavehospitaldistrictcodes: [], }, orgname: "", propss: { multiple: true }, options: [], topicoptions: [ { value: null, label: "å ¨é¨", }, { value: 1, label: "表åå·²é¢å", }, { value: 2, label: "å¾ é访", }, { value: 3, label: "表åå·²åé", }, { value: 4, label: "䏿§è¡", }, { value: 5, label: "åé失败", }, { value: 6, label: "已宿", }, ], sextype: [ { value: 1, label: "ç·", }, { value: 2, label: "女", }, ], topicoptionsyj: [ { value: 1, label: "å¼å¸¸", }, { value: 2, label: "è¦å", }, { value: 0, label: "æ£å¸¸", }, ], url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo", postData: { XiaoXiTou: { FaSongFCSJC: "ZJHES", FaSongJGID: localStorage.getItem("orgid"), FaSongJGMC: localStorage.getItem("orgname"), FaSongSJ: "2025-01-09 17:29:36", FaSongXTJC: "SUIFANGXT", FaSongXTMC: "é访系ç»", XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", XiaoXiLX: "SC_LC_360STCX", XiaoXiMC: "360 è§å¾æ¥è¯¢", ZuHuID: localStorage.getItem("ZuHuID"), ZuHuMC: localStorage.getItem("orgname"), }, YeWuXX: { BingRenXX: { ZhengJianHM: "", ZhengJianLXDM: "01", ZhengJianLXMC: "å± æ°èº«ä»½è¯", ZuZhiJGID: localStorage.getItem("orgid"), ZuZhiJGMC: localStorage.getItem("orgname"), }, YongHuXX: { XiTongID: "SUIFANGXT", XiTongMC: "é访系ç»", YongHuID: localStorage.getItem("YongHuID"), YongHuXM: localStorage.getItem("YongHuXM"), ZuZhiJGID: localStorage.getItem("orgid"), ZuZhiJGMC: localStorage.getItem("orgname"), idp: "lyra", }, }, }, amendtag: false, errtype: "", leavehospitaldistrictcode: "", serviceState: [], checkboxlist: [], // è¡¨åæ ¡éª rules: {}, }; }, watch: {}, created() { this.serviceState = store.getters.serviceState; this.checkboxlist = store.getters.checkboxlist; this.errtype = this.$route.query.errtype; this.orgname = localStorage.getItem("orgname"); this.leavehospitaldistrictcode = this.$route.query.leavehospitaldistrictcode; this.sourcetype[0].children = store.getters.belongDepts.map((dept) => { return { label: dept.deptName, value: dept.deptCode, }; }); this.sourcetype[1].children = store.getters.belongWards.map((dept) => { return { label: dept.districtName, value: dept.districtCode, }; }); if (this.errtype) { this.toleadExport(2); } else { this.getList(1); } this.getConfigKey("sys.user.initPassword").then((response) => { this.initPassword = response.msg; }); }, activated() { this.getList(1); }, methods: { /** æ¥è¯¢é访æå¡å表 */ getList(refresh) { // é»è®¤å ¨é¨ if (this.topqueryParams.searchscope == 3) { this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); this.topqueryParams.leavehospitaldistrictcodes = store.getters.belongWards.map((obj) => obj.districtCode); } if (this.endOut == 0) { this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS( this.getEndOfDay() ); } else { // this.topqueryParams.endSendDateTime = null; } // æ¥åå¼å¸¸è·³è½¬ if (this.errtype) { this.topqueryParams.leavehospitaldistrictcodes.push( this.leavehospitaldistrictcode ); console.log(this.topqueryParams.leavehospitaldistrictcodes, "11"); } this.loading = true; if ( this.topqueryParams.leavehospitaldistrictcodes[0] && this.topqueryParams.leaveldeptcodes[0] ) { this.topqueryParams.deptOrDistrict = 2; } else { this.topqueryParams.deptOrDistrict = 1; } getTaskservelist(this.topqueryParams).then((response) => { this.userList = response.rows[0].serviceSubtaskList; this.total = response.total; if (refresh) { this.cardlist[0].value = Number(response.rows[0].wzx) + Number(response.rows[0].ysf); // this.cardlist[1].value = response.rows[0].wzx; this.cardlist[1].value = response.rows[0].ysf; this.ycvalue = response.rows[0].yc; this.jgvalue = response.rows[0].jg; this.cardlist[2].value = response.rows[0].fssb; this.cardlist[3].value = response.rows[0].dsf; // this.cardlist[4].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; this.userList.forEach((item) => { let idArray = null; if (item.endtime) { item.endDay = this.daysBetween(item.endtime); } if (item.preachform) { if (item.endtime) { item.preachformson = item.preachform; idArray = item.preachform.split(","); } item.preachform = idArray.map((value) => { // æ¥æ¾id对åºç对象 const item = this.checkboxlist.find( (item) => item.value == value ); // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull return item ? item.label : null; }); } }); this.total = response.total; }); }, // æ¶é´ getEndOfDay() { const date = new Date(); // å建ä¸ä¸ªè¡¨ç¤ºå½åæ¶é´çDate对象 date.setHours(23, 59, 59, 0); // å°æ¶é´è®¾ç½®ä¸º23:59:59.000 return date; }, formatDateToYYYYMMDDHHMMSS(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); // æä»½è¡¥é¶ const day = String(date.getDate()).padStart(2, "0"); // æ¥æè¡¥é¶ const hours = String(date.getHours()).padStart(2, "0"); const minutes = String(date.getMinutes()).padStart(2, "0"); const seconds = String(date.getSeconds()).padStart(2, "0"); return `${year}-${month}-${day}`; }, affiliation() { this.topqueryParams.managementDoctorCode = store.getters.hisUserId; this.getList(1); }, onthatday() { this.topqueryParams.startSendDateTime = this.getCurrentDate(); this.topqueryParams.endSendDateTime = this.getCurrentDate(); this.getList(1); }, getCurrentDate() { const now = new Date(); return now.toISOString().slice(0, 10); // æªåå10个å符ï¼å³ YYYY-MM-DD }, buidegetTasklist(type) { if (this.topqueryParams.searchscope == 3) { this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); this.topqueryParams.leavehospitaldistrictcodes = store.getters.belongWards.map((obj) => obj.districtCode); } // æ¥åå¼å¸¸è·³è½¬ if (this.errtype) { this.topqueryParams.leavehospitaldistrictcodes.push( this.leavehospitaldistrictcode ); } let obj = { pageNum: 1, pageSize: 10, leavehospitaldistrictcodes: this.topqueryParams.leavehospitaldistrictcodes, sendstates: [2, 3], leaveldeptcodes: this.topqueryParams.leaveldeptcodes, }; buidegetTasklist(obj).then((response) => { this.userList = response.rows[0].serviceSubtaskList; this.total = response.total; if (refresh) { this.cardlist[0].value = Number(response.rows[0].wzx) + Number(response.rows[0].ysf); this.cardlist[1].value = response.rows[0].wzx; this.cardlist[2].value = response.rows[0].ysf; this.ycvalue = response.rows[0].yc; this.jgvalue = response.rows[0].jg; this.cardlist[3].value = response.rows[0].fssb; this.cardlist[4].value = response.rows[0].dsf; // this.cardlist[5].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; this.userList.forEach((item) => { let idArray = null; if (item.endtime) { item.endDay = this.daysBetween(item.endtime); } if (item.preachform) { if (item.endtime) { item.preachformson = item.preachform; idArray = item.preachform.split(","); } item.preachform = idArray.map((value) => { // æ¥æ¾id对åºç对象 const item = this.checkboxlist.find( (item) => item.value == value ); // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull return item ? item.label : null; }); } }); this.total = response.total; }); }, // æ¥çé¨è¯é访详æ Referencequestion(row) { this.previewVisible = true; }, // æ·»å å¼¹æ¡æç´¢ remoteMethod(query) { if (query !== "") { this.loading = true; setTimeout(() => { this.loading = false; this.options = this.list.filter((item) => { return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1; }); }, 200); } else { this.options = []; } }, // å½±åéè®¿ç¶æä¿®æ¹ handleStatusChange(row) { let text = row.status === "0" ? "å¯ç¨" : "åç¨"; this.$modal .confirm('确认è¦"' + text + '""' + row.userName + '"ç¨æ·åï¼') .then(function () { return changeUserStatus(row.userId, row.status); }) .then(() => { this.$modal.msgSuccess(text + "æå"); }) .catch(function () { row.status = row.status === "0" ? "1" : "0"; }); }, // 表åéç½® reset() { this.form = { userId: undefined, deptId: undefined, userName: undefined, nickName: undefined, password: undefined, phonenumber: undefined, email: undefined, sex: undefined, status: "0", remark: undefined, postIds: [], roleIds: [], }; this.resetForm("form"); }, /** æç´¢æé®æä½ */ handleQuery(refresh) { if (this.topqueryParams.searchscope == 3) { this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); this.topqueryParams.leavehospitaldistrictcodes = store.getters.belongWards.map((obj) => obj.districtCode); } this.topqueryParams.pageNum = 1; this.topqueryParams.startOutHospTime = this.dateRange[0]; this.topqueryParams.endOutHospTime = this.dateRange[1]; this.topqueryParams.startSendDateTime = this.dateRangefs[0]; this.topqueryParams.endSendDateTime = this.dateRangefs[1]; this.getList(refresh); }, // æ£è èå´å¤ç handleChange(value) { let type = value[0]; let code = value.slice(-1)[0]; this.topqueryParams.leavehospitaldistrictcodes = []; this.topqueryParams.leaveldeptcodes = []; if (type == 1) { this.topqueryParams.leaveldeptcodes.push(code); this.topqueryParams.leavehospitaldistrictcodes = []; this.topqueryParams.searchscope = 1; } else if (type == 2) { this.topqueryParams.leavehospitaldistrictcodes.push(code); this.topqueryParams.leaveldeptcodes = []; this.topqueryParams.searchscope = 2; } else { this.topqueryParams.searchscope = 3; } }, /** éç½®æé®æä½ */ resetQuery() { this.dateRange = []; this.dateRangefs = []; this.topqueryParams = { pageNum: 1, pageSize: 10, sort: 2, //0 åºé¢æ¶é´(æ£åº) 1 åºé¢æ¶é´(ååº) 2 åéæ¶é´(æ£åº) 3 åéæ¶é´(ååº) searchscope: 3, continueFlag: 2, visitCount: 1, scopetype: [], leaveldeptcodes: [], leavehospitaldistrictcodes: [], }; this.handleQuery(1); }, handleSelectionChange(rows) { this.selectedRows = rows.map((row) => { // åå§åè¯ååæ®µ return { ...row, authenticity: row.authenticity || 0, weekFinish: row.weekFinish || 0, standard: row.standard || 0, timeliness: row.timeliness || 0, library: row.library || 0, environment: row.environment || 0, doctorSatisfaction: row.doctorSatisfaction || 0, nurseSatisfaction: row.nurseSatisfaction || 0, }; }); if (this.selectedRows.length > 0) { this.multiple = false; } else { this.multiple = true; } }, // è®¡ç®æ»å calculateTotal(row) { return ( (row.authenticity || 0) + (row.weekFinish || 0) + (row.standard || 0) + (row.timeliness || 0) + (row.library || 0) + (row.environment || 0) + (row.doctorSatisfaction || 0) + (row.nurseSatisfaction || 0) ); }, // ä¿åè¯å saveScores() { this.selectedRows.forEach((item) => { item.createBy = null; item.patName = item.sendname; item.hospitaldistrictname = item.leavehospitaldistrictname; }); addsatisfaction(this.selectedRows).then((res) => { if (res.code == 200) { this.$message.success("è¯åä¿åæå"); this.scoreDialogVisible = false; this.selectedRows = []; this.$refs.userform.clearSelection(); } else { this.$modal.msgWarning("è¯åä¿å失败"); this.scoreDialogVisible = false; this.selectedRows = []; this.$refs.userform.clearSelection(); } }); // è¿éå¯ä»¥æ·»å ä¿åé»è¾ï¼å¦è°ç¨APIä¿åè¯å }, //å é¤é项 handleClose(tag) { this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1); }, //è§¦åæ°å¢è¾å ¥ showInput() { this.inputVisible = true; this.$nextTick((_) => { this.$refs.saveTagInput.$refs.input.focus(); }); }, //è·å失å»ç¦ç¹è§¦å handleInputConfirm() { let inputValue = this.inputValue; if (inputValue) { this.dynamicTags.push(inputValue); } this.inputVisible = false; this.inputValue = ""; }, /** æ°å¢æé®æä½ */ handleAdd() { this.$router.push({ path: "/followvisit/QuestionnaireTask", query: { type: 2, serviceType: 2, }, }); }, //æ£è 360跳转 gettoken360(sfzh, drcode, drname) { // this.$modal.msgWarning("360åè½ææªå¼é"); this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; query360PatInfo(this.postData).then((res) => { if (res.data.url) { window.open(res.data.url, "_blank"); // this.linkUrl = res.data.url; } else { this.$modal.msgWarning("360æ¥è¯¢æ ç»æ"); } }); }, /** éç½®å¯ç æé®æä½ */ handleResetPwd(row) { this.$prompt('请è¾å ¥"' + row.userName + '"çæ°å¯ç ', "æç¤º", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", closeOnClickModal: false, inputPattern: /^.{5,20}$/, inputErrorMessage: "ç¨æ·å¯ç é¿åº¦å¿ é¡»ä»äº 5 å 20 ä¹é´", }) .then(({ value }) => { resetUserPwd(row.userId, value).then((response) => { this.$modal.msgSuccess("ä¿®æ¹æåï¼æ°å¯ç æ¯ï¼" + value); }); }) .catch(() => {}); }, // åæ¶æé® cancel() { this.Labelchange = false; this.reset(); }, /** æäº¤æé® */ submitForm: function () { this.$refs["form"].validate((valid) => { if (valid) { this.form.isoperation = 2; this.form.notrequiredFlag = 1; alterpatient(this.form) .then((response) => { console.log(response); }) .then(() => { this.getList(1); this.$modal.msgSuccess("æ£è è¿æ»¤æå"); }); this.reset(); this.Labelchange = false; } }); }, /** å é¤æé®æä½ */ handleDelete(row) { const userIds = row.userId || this.ids; this.$modal .confirm('æ¯å¦ç¡®è®¤å é¤ç¨æ·ç¼å·ä¸º"' + userIds + '"çæ°æ®é¡¹ï¼') .then(function () { return delUser(userIds); }) .then(() => { this.getList(1); this.$modal.msgSuccess("å 餿å"); }) .catch(() => {}); }, // å ¨é¨åæ¢ AllStop() { this.$modal .confirm("æ¯å¦åæ¢å ¨é¨ä»»å¡ï¼") .then(function () { return console.log("忢æå"); }) .then(() => { this.getList(1); this.$modal.msgWarning("忢æå"); }) .catch(() => {}); }, // å ¨é¨å¼å§ AllStarted() { this.$modal .confirm("æ¯å¦å¼å¯å ¨é¨ä»»å¡ï¼") .then(function () { return console.log("å¼å¯æå"); }) .then(() => { this.getList(1); this.$modal.msgSuccess("å¼å¯æå"); }) .catch(() => {}); }, // ä»»å¡éç½® TaskReset() { this.$modal .confirm("æ¯å¦éç½®éä¸çä»»å¡é¡¹ï¼") .then(function () { return console.log("é䏿å"); }) .then(() => { this.getList(1); this.$modal.msgSuccess("éç½®æå"); }) .catch(() => {}); }, // 设置åéæ¶é´ Sendtimesetting() { this.modificationVisible = true; }, // 跳转详æ 页 Seedetails(row) { let type = ""; console.log(row, "rwo"); if (row.type == 1) { type = 1; } this.$router.push({ path: "/followvisit/ContinueFordetails/", query: { taskid: row.taskid, patid: row.patid, id: row.id, Voicetype: type, visitCount: this.topqueryParams.visitCount, }, }); }, // 忬¡é访 followupvisit(row) { this.zcform = row; this.zcform.endtime = this.formatTime(this.zcform.endtime); this.dialogFormVisible = true; }, onSubmit() {}, // æåæå¡ handlestop(row) { let objson = row; this.$modal .confirm( 'æ¯å¦ç¡®è®¤æåä»»å¡å称为"' + row.taskName + 'æ£è å称为"' + row.sendname + '"çæ°æ®é¡¹ï¼' ) .then(() => { getTaskservelist({ patid: row.patid, taskid: row.taskid, }).then((res) => { if (res.code == 200) { objson.sendstate = 4; objson.remark = "æå¡æå"; Editsingletaskson(objson).then((res) => { if (res.code) { this.$modal.msgSuccess("è®°å½æå"); this.getList(1); } }); } }); }) .catch(() => {}); }, // æ£è è¿æ»¤è§¦å handleUpdate(row) { particularpatient(row.patid).then((response) => { this.form = response.data; this.form.filterDrname = store.getters.nickName; }); this.amendtag = true; this.Labelchange = true; }, // ä¾¿æ·æé® toleadExport(too) { if (too == 1) { this.topqueryParams.sendstate = 4; this.topqueryParams.excep = null; } else if (too == 2) { this.topqueryParams.excep = 1; } this.handleQuery(); }, /** å¯¼åºæé®æä½ */ handleExport() { this.topqueryParams.pageNum = null; this.topqueryParams.pageSize = null; this.download( "smartor/serviceSubtask/patItemExport", { ...this.topqueryParams, }, `user_${new Date().getTime()}.xlsx` ); }, // å¼å¸¸å渲æ tableRowClassName({ row, rowIndex }) { if (row.excep == 1) { return "warning-row"; } else if (row.excep == 2) { return "remind-row"; } return ""; }, // åå»ºåæ¬¡é访æå¡ setupsubtask() { this.$refs["zcform"].validate((valid) => { if (valid) { this.zcform.remark = this.zcform.remark + "ã" + this.getCurrentTime() + "ã"; let form = structuredClone(this.zcform); form.longSendTime = this.formatTime(form.date1); form.finishtime = ""; if (form.resource) { if (form.resource == 2) { form.serviceType = 13; } } else { this.$modal.msgError("æªéæ©é访æ¹å¼"); } form.id = null; form.sendstate = 2; form.preachform = form.preachformson; form.longTask = 0; addserviceSubtask(form).then((res) => { if (res.code == 200) { this.$modal.msgSuccess("å建æå"); } else { this.$modal.msgError("å建失败"); } this.dialogFormVisible = false; }); } }); }, getCurrentTime() { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, "0"); const day = String(now.getDate()).padStart(2, "0"); const hours = String(now.getHours()).padStart(2, "0"); const minutes = String(now.getMinutes()).padStart(2, "0"); const seconds = String(now.getSeconds()).padStart(2, "0"); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; }, }, }; </script> <style lang="scss" scoped> .el-button--primary.is-plain { color: #ffffff; background: #409eff; border-color: #4fabe9; } .document { // width: 100px; height: 50px; } ::v-deep.el-table .warning-row { background: #eec4c4; } ::v-deep.el-table .remind-row { background: #fcf5aa; } .documentf { display: flex; justify-content: flex-end; } .download { text-align: center; .el-upload__tip { font-size: 23px; } .el-upload__text { font-size: 23px; } } .uploading { margin-top: 20px; margin: 20px; padding: 30px; background: #ffffff; 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); } .el-tag + .el-tag { margin-left: 10px; } .button-new-tag { margin-left: 10px; height: 32px; line-height: 30px; padding-top: 0; padding-bottom: 0; } .input-new-tag { width: 90px; margin-left: 10px; vertical-align: bottom; } .drexamine { display: flex; align-items: center; justify-content: center; padding: 30px; background: #daeaf5; img { width: 100px; height: 100px; } } .qrcode-dialo { // text-align: center; // display: flex; margin: 20px; padding: 30px; background: #edf1f7; 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); .topic-dev { margin-bottom: 25px; font-size: 20px !important; .dev-text { margin-bottom: 10px; } } } ::v-deep.leftvlue .el-card__body { background: #f2f8ff; color: #324a9b; } ::v-deep.leftvlue .el-card__body:hover { background: #3664d9; color: #fff; cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ } ::v-deep.errleftvlue .el-card__body { background: #fdd0d7; } ::v-deep.errleftvlue .el-card__body:hover { background: #f88d96; cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ } ::v-deep.jgleftvlue .el-card__body:hover { background: #f7f075; cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ } ::v-deep.ysfleftvlue .el-card__body { background: #d0fdd8; } ::v-deep.ysfleftvlue .el-card__body:hover { background: #0abc54; cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ } .button-bb { font-weight: 500; background-color: #2ba05c; padding: 5px; border-radius: 1px; color: #ffffff; } .button-xq { font-weight: 500; background-color: #409eff; padding: 5px; border-radius: 1px; color: #ffffff; } .button-sc { font-weight: 500; background-color: #b3a21f; padding: 5px; border-radius: 1px; color: #ffffff; } .button-zx { background: #324a9b; padding: 5px; border-radius: 1px; color: #ffffff; } ::v-deep.el-radio-group { span { font-size: 24px; } } .purple-button { background-color: #7e22ce; border-color: #7e22ce; color: #fff; } .purple-button:hover, .purple-button:focus { background-color: #9333ea; border-color: #9333ea; } .purple-button:active { background-color: #6b21a8; border-color: #6b21a8; } .button-textxga { color: #de7897; } .purple-button.is-disabled { background-color: #d8b4fe; border-color: #d8b4fe; opacity: 1; /* ä¿æç¦ç¨ç¶æéæåº¦ */ } // é项å使¾å¤§ // ::v-deep.el-checkbox-group { // span { // font-size: 24px; // } // } </style> src/views/followvisit/discharge/index.vue
@@ -60,6 +60,25 @@ </el-card> </div> </el-col> <el-col :span="2.5" v-if="orgname == 'çç«åå¾·ç¿ èé¢åº'"> <div class="jgleftvlue"> <el-card shadow="hover "> <div style="padding: 8px"> <span>è¦å</span> <div style=" text-align: center; font-size: 18px; margin-top: 10px; font-weight: 600; " > {{ jgvalue }} </div> </div> </el-card> </div> </el-col> </el-row> </div> <el-row :gutter="20"> @@ -274,7 +293,7 @@ </div> </div> </el-col> <el-col :span="1.5"> <el-col :span="1.5" v-if="orgname == 'æ¯å®ç²æèªæ²»å¿äººæ°å»é¢'"> <div class="documentf"> <div class="document"> <el-tooltip @@ -1107,6 +1126,7 @@ inputVisible: false, Labelchange: false, ycvalue: "", jgvalue: "", yfsvalue: "", inputValue: "", preachform: "", @@ -1414,6 +1434,7 @@ // this.cardlist[1].value = response.rows[0].wzx; this.cardlist[1].value = response.rows[0].ysf; this.ycvalue = response.rows[0].yc; this.jgvalue = response.rows[0].jg; this.cardlist[2].value = response.rows[0].fssb; this.cardlist[3].value = response.rows[0].dsf; // this.cardlist[4].value = response.rows[0].yfs2; @@ -1499,17 +1520,16 @@ buidegetTasklist(obj).then((response) => { this.userList = response.rows[0].serviceSubtaskList; this.total = response.total; if (refresh) { this.cardlist[0].value = Number(response.rows[0].wzx) + Number(response.rows[0].ysf); this.cardlist[1].value = response.rows[0].wzx; this.cardlist[2].value = response.rows[0].ysf; this.ycvalue = response.rows[0].yc; this.jgvalue = response.rows[0].jg; this.cardlist[3].value = response.rows[0].fssb; this.cardlist[4].value = response.rows[0].dsf; // this.cardlist[5].value = response.rows[0].yfs2; this.yfsvalue = response.rows[0].yfs; } this.loading = false; this.userList.forEach((item) => { let idArray = null; @@ -1915,7 +1935,7 @@ } else if (too == 2) { this.topqueryParams.excep = 1; } this.handleQuery(); this.handleQuery(1); }, /** å¯¼åºæé®æä½ */ handleExport() { @@ -2095,6 +2115,10 @@ background: #f88d96; cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ } ::v-deep.jgleftvlue .el-card__body:hover { background: #f7f075; cursor: pointer; /* é¼ æ æ¬æµ®æ¶å为æå½¢ */ } ::v-deep.ysfleftvlue .el-card__body { background: #d0fdd8; src/views/followvisit/record/detailpage/index.vue
@@ -549,33 +549,42 @@ <!-- 人工å¤ç --> <div class="manual-action"> <div class="Followuserinfos"> <div> <el-form ref="userform" :model="form" :rules="userrules" label-width="120px" > <div class="headline"> <div>人工å¤ç</div> <div style="margin: 0 30px"> <!-- 顶鍿ä½åºå --> <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 > </div> <div> ä¿ååºç¡ä¿¡æ¯ </el-button> <!-- æ°å¢ï¼å»¶ç»æ¤çæé® --> <el-button type="success" plain @click="handleContinuationCare" v-if="showContinuationCareBtn" > å»¶ç»æ¤ç </el-button> <el-button type="primary" round v-if="this.form.isVisitAgain != 2" @click="sendAgain()" >忬¡é访</el-button @click="sendAgain" v-if="form.isVisitAgain != 2" > 忬¡é访 </el-button> </div> <div class="tag-selector-container"> <!-- å¼å¸¸ç¶æéæ©å¨ --> <div class="action-group tag-selector"> <el-select v-model="selectedTag" placeholder="è¯·éæ©å¼å¸¸ç¶æ" @@ -616,9 +625,20 @@ </el-tooltip> </div> </div> </div> <!-- 表ååºå --> <div class="form-content"> <el-form ref="userform" :model="form" :rules="userrules" label-width="100px" > <!-- è系信æ¯è¡ --> <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" @@ -629,12 +649,15 @@ @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" @@ -646,17 +669,21 @@ 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" @@ -708,13 +735,15 @@ /> </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 @@ -722,40 +751,48 @@ :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"> @@ -766,54 +803,60 @@ v-model="userform.name" placeholder="请è¾å ¥å§å" maxlength="30" ></el-input> </el-form-item ></el-col> ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12" ><el-form-item label="æ§å«" prop="telcode"> <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-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="å¹´é¾" prop="name"> <el-form-item label="å¹´é¾" prop="age"> <el-input v-model="userform.age" placeholder="请è¾å ¥å§å" placeholder="请è¾å ¥å¹´é¾" maxlength="20" ></el-input> </el-form-item ></el-col> ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="12" ><el-form-item label="èç³»æ¹å¼" prop="telcode"> <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-form-item> </el-col> <el-col :span="12"> <el-form-item label="亲å±èç³»æ¹å¼" prop="name"> <el-form-item label="亲å±èç³»æ¹å¼" prop="relativetelcode"> <el-input v-model="userform.relativetelcode" placeholder="请è¾å ¥å§å" placeholder="请è¾å ¥äº²å±èç³»æ¹å¼" maxlength="20" ></el-input> </el-form-item ></el-col> ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> <el-form-item label="è¯æåç§°" prop="name"> <el-form-item label="è¯æåç§°" prop="leavediagname"> <el-input v-model="form.leavediagname" placeholder="请è¾å ¥è¯æ" maxlength="50" ></el-input> </el-form-item ></el-col> ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24"> @@ -822,21 +865,22 @@ v-model="userform.birthplace" placeholder="å½ãçãå°å¸ãåºå¿ãè¡éç详ç»ä¿¡æ¯" maxlength="50" /> </el-form-item ></el-col> /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="24" ><el-form-item label="å± ä½å°" prop="placeOfResidence"> <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-form-item> </el-col> </el-row> </el-form> </div> </div> </div> </div> @@ -1165,6 +1209,9 @@ isEndingCall: false, CaldialogVisible: false, currentCall: null, // å½åéè¯å¯¹è±¡ // æ°å¢åè½æ°æ® showPatientInfo: true, showContinuationCareBtn: false, // æ§å¶å»¶ç»æ¤çæé®æ¾ç¤º // è·¯ç±çå¬ç¸å ³ routeWatcher: null, lastRoutePath: this.$route.path, @@ -1439,6 +1486,10 @@ 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 = [ { @@ -1498,6 +1549,8 @@ methods: { // è·å䏻颿 ·å¼ç±» getTopicClass(item) { console.log(item.isabnormal, "getTopicClass"); // æ ¹æ®ç¶æå¼è¿å对åºçæ ·å¼ç±» if (item.isabnormal == 1) { return "scriptTopic-isabnormal"; // å¼å¸¸ - çº¢è² @@ -1736,6 +1789,7 @@ scriptid: item.id, excep: excep, questiontext: item.scriptContent, categoryid: item.categoryid, answerps: item.answerps || null, // æ·»å éå ä¿¡æ¯ }; if (item.scriptType == 2 && item.scriptResult[0]) { @@ -2496,6 +2550,34 @@ // å·æ°æ°æ® 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() { // console.log(11); @@ -2826,7 +2908,7 @@ 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; /* å å®¹è¶ è¿é«åº¦æ¶æ¾ç¤ºæ»å¨æ¡ */ @@ -3234,4 +3316,366 @@ 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> src/views/login-sy.vue
ÎļþÃû´Ó src/views/login-ls.vue ÐÞ¸Ä @@ -37,10 +37,10 @@ </el-input> </el-form-item> <!-- 丽===================æ°´ --> <el-form-item prop="orgid"> <el-form-item prop="medicalCode"> <el-select style="width: 100%" v-model="loginForm.orgid" v-model="loginForm.medicalCode" placeholder="è¯·éæ©é¢åº" > <el-option @@ -165,10 +165,11 @@ }); }, getorganization() { getorganization().then((res) => { getorganization({ pageSize: 30 }).then((res) => { if (res.code == 200) { this.options = res.rows.map((item) => ({ value: item.orgid, value: item.medicalCode, // value: item.medicalCode, label: item.organizationName, })); } @@ -205,14 +206,19 @@ } // å¨æè®¾ç½® campusid åæ° const selectedOrg = this.options.find(item => item.value === this.loginForm.orgid); const selectedOrg = this.options.find(item => item.value === this.loginForm.medicalCode); console.log(selectedOrg); if (selectedOrg) { if (selectedOrg.label.includes('æ¹æ»¨')) { this.loginForm.campusid = 1; this.loginForm.orgid = 1; } else if (selectedOrg.label.includes('å´å±±')) { this.loginForm.campusid = 2; this.loginForm.orgid = 1; } else { this.loginForm.campusid = 1; // é»è®¤å¼æå ¶ä»å¤ç this.loginForm.orgid = 1; } } src/views/login.vue
@@ -37,10 +37,10 @@ </el-input> </el-form-item> <!-- 丽===================æ°´ --> <el-form-item prop="medicalCode"> <el-form-item prop="orgid"> <el-select style="width: 100%" v-model="loginForm.medicalCode" v-model="loginForm.orgid" placeholder="è¯·éæ©é¢åº" > <el-option @@ -118,8 +118,7 @@ code: "", orgid: "H41010500003", }, options: [ ], options: [], loginRules: { username: [ { required: true, trigger: "blur", message: "请è¾å ¥æ¨çè´¦å·" }, @@ -165,11 +164,10 @@ }); }, getorganization() { getorganization().then((res) => { getorganization({ pageSize: 30 }).then((res) => { if (res.code == 200) { this.options = res.rows.map((item) => ({ value: item.medicalCode, // value: item.medicalCode, value: item.orgid, label: item.organizationName, })); } @@ -206,19 +204,16 @@ } // å¨æè®¾ç½® campusid åæ° const selectedOrg = this.options.find(item => item.value === this.loginForm.medicalCode); console.log(selectedOrg); const selectedOrg = this.options.find( (item) => item.value === this.loginForm.orgid ); if (selectedOrg) { if (selectedOrg.label.includes('æ¹æ»¨')) { if (selectedOrg.label.includes("æ¹æ»¨")) { this.loginForm.campusid = 1; this.loginForm.orgid = 1; } else if (selectedOrg.label.includes('å´å±±')) { } else if (selectedOrg.label.includes("å´å±±")) { this.loginForm.campusid = 2; this.loginForm.orgid = 1; } else { this.loginForm.campusid = 1; // é»è®¤å¼æå ¶ä»å¤ç this.loginForm.orgid = 1; } } @@ -241,7 +236,7 @@ }); } }); } }, }, }; </script> src/views/patient/patient/behospitalized.vue
@@ -637,6 +637,9 @@ this.queryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); this.queryParams.leavehospitaldistrictcodes = store.getters.belongWards.map( (obj) => obj.districtCode ); this.getList(); // this.listDept(); this.gettabList(); @@ -948,6 +951,6 @@ } } .button-textsc { color: #3664D9; color: #3664d9; } </style> src/views/patient/patient/hospital.vue
@@ -630,6 +630,9 @@ this.queryParams.leaveldeptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); this.queryParams.leavehospitaldistrictcodes = store.getters.belongWards.map( (obj) => obj.districtCode ); this.getList(); // this.listDept(); this.gettabList(); src/views/sfstatistics/percentage/index.vue
@@ -1168,6 +1168,20 @@ </template> </el-table-column> <el-table-column label="任塿§è¡æ¹å¼" align="center" key="preachform" prop="preachform" width="160" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-for="item in scope.row.preachform" >{{ item }}ã </span> </template> </el-table-column> <el-table-column prop="visitTime" align="center" label="åºé访æ¶é´" @@ -1420,6 +1434,7 @@ allDeptCodes: [], // å卿æç åºä»£ç allWardCodes: [], checkboxlist: [], // 表ååæ° form: {}, forms: { @@ -1469,6 +1484,7 @@ created() { this.getDeptTree(); this.getList(); this.checkboxlist = store.getters.checkboxlist; this.orgname = localStorage.getItem("orgname"); }, @@ -1487,12 +1503,14 @@ ? this.allDeptCodes : this.queryParams.deptcodes, }; this.loading = true; // ç§»é¤å¯è½åå¨ç"all"å¼ delete params.leavehospitaldistrictcodes.all; delete params.deptcodes.all; getSfStatistics(params).then((response) => { console.log(response); this.loading = false; // this.total = response.total; this.userList = this.customSort(response.data); }); @@ -1851,7 +1869,25 @@ this.infotitleVisible = true; this.infotitle = title; this.infotitlelist = row; // å设rowå°±æ¯éè¦å±ç¤ºçè¯¦ç»æ°ç» console.log(this.infotitlelist, "this.infotitlelist"); this.infotitlelist.forEach((item) => { let idArray = null; if (item.preachform) { if (item.endtime) { item.preachformson = item.preachform; idArray = item.preachform.split(","); } item.preachform = idArray.map((value) => { // æ¥æ¾id对åºç对象 const item = this.checkboxlist.find((item) => item.value == value); // 妿æ¾å°å¯¹åºçidï¼è¿ålabelå¼ï¼å¦åè¿ånull return item ? item.label : null; }); } }); // åå§åå è½½ this.loadIndex = 0; this.currentDisplayList = []; @@ -1865,6 +1901,8 @@ // 模æå¼æ¥å è½½ï¼å®é å¯è½æ¯ç´æ¥åçæ¬å°æ°æ® setTimeout(() => { console.log(this.infotitlelist, "this.infotitlelist"); const nextChunk = this.infotitlelist.slice( this.loadIndex, this.loadIndex + this.pageSize vue.config.js
@@ -36,7 +36,7 @@ // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { // target: `https://www.health-y.cn/lssf`, // target: `http://192.168.100.10:8098`, // target: `http://192.168.100.10:8096`, // target: `http://192.168.100.10:8094`,//çç«åå¾· // target: `http://192.168.100.10:8095`,//æ°å target:`http://localhost:8095`,