| lishui.zip | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| shiyi.zip | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/api/smartor/patouthosp.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/utils/sipService.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/login-sy.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/patient/patient/AwaitingAdmission.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/sfstatistics/percentage/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| vue.config.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
lishui.zipBinary files differ
shiyi.zipBinary files differ
src/api/smartor/patouthosp.js
@@ -8,6 +8,14 @@ data: query }) } // æ¥è¯¢å¾ å ¥é¢è®°å½å表 export function listPatMedInhosp(query) { return request({ url: '/smartor/patinhosp/selectPatMedInhospList', method: 'post', data: query }) } // æ¥è¯¢æ£è é¨è¯è®°å½è¯¦ç» export function getPatouthosp(id) { src/utils/sipService.js
@@ -1,6 +1,7 @@ import JsSIP from "jssip"; import { Notification, MessageBox, Message, Loading } from "element-ui"; // å»é¢æºæä¸SIPæå¡å¨æ å°é ç½® // å ¬å¸æå¡å¨192.168.100.6 const HOSPITAL_CONFIG = { 丽水å¸ä¸å»é¢: { wsUrl: "wss://192.168.10.124:7443", src/views/login-sy.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,322 @@ <template> <div class="login"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" > <h3 class="title">æºæ §é访系ç»</h3> <el-form-item prop="username"> <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="è´¦å·" > <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> </el-input> </el-form-item> <el-form-item prop="password"> <el-input v-model="loginForm.password" type="password" auto-complete="off" placeholder="å¯ç " @keyup.enter.native="handleLogin" > <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> </el-input> </el-form-item> <!-- 丽===================æ°´ --> <el-form-item prop="medicalCode"> <el-select style="width: 100%" v-model="loginForm.medicalCode" placeholder="è¯·éæ©é¢åº" > <el-option v-for="item in options" :label="item.label" :value="item.value" > </el-option> <i slot="prefix" class="el-icon-mobile"></i> </el-select> </el-form-item> <!-- <el-form-item prop="code" v-if="captchaEnabled"> <el-input v-model="loginForm.code" auto-complete="off" placeholder="éªè¯ç " style="width: 63%" @keyup.enter.native="handleLogin" > <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> </el-input> <div class="login-code"> <img :src="codeUrl" @click="getCode" class="login-code-img" /> </div> </el-form-item> --> <el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px" >è®°ä½å¯ç </el-checkbox > <el-form-item style="width: 100%"> <el-button :loading="loading" size="medium" type="primary" style="width: 100%" @click.native.prevent="handleLogin" > <span v-if="!loading">ç» å½</span> <span v-else>ç» å½ ä¸...</span> </el-button> <div style="float: right" v-if="register"> <router-link class="link-type" :to="'/register'" >ç«å³æ³¨å1</router-link > </div> </el-form-item> </el-form> <!-- åºé¨ --> <!-- <div class="el-login-footer"> <span style="color: #568FBD; font-size: 25px;">Copyright © 2018-2022 ruoyi.vip All Rights Reserved.</span> </div> --> </div> </template> <script> import { getCodeImg } from "@/api/login"; import Cookies from "js-cookie"; import { encrypt, decrypt } from "@/utils/jsencrypt"; import { getorganization } from "@/api/AiCentre/index"; export default { name: "Login", data() { return { codeUrl: "", loginForm: { username: "", password: "", rememberMe: false, code: "", orgid: "H41010500003", }, options: [ ], loginRules: { username: [ { required: true, trigger: "blur", message: "请è¾å ¥æ¨çè´¦å·" }, ], password: [ { required: true, trigger: "blur", message: "请è¾å ¥æ¨çå¯ç " }, ], orgid: [{ required: true, trigger: "blur", message: "è¯·éæ©é¢åº" }], }, loading: false, // éªè¯ç å¼å ³ captchaEnabled: true, // 注åå¼å ³ register: false, redirect: undefined, }; }, watch: { $route: { handler: function (route) { this.redirect = route.query && route.query.redirect; }, immediate: true, }, }, created() { this.getorganization(); this.getCode(); this.getCookie(); // if (localStorage.getItem('orgid')) { // this.loginForm.orgid = localStorage.getItem('orgid'); // } }, methods: { getCode() { getCodeImg().then((res) => { this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled; if (this.captchaEnabled) { this.codeUrl = "data:image/gif;base64," + res.img; this.loginForm.uuid = res.uuid; } }); }, getorganization() { getorganization().then((res) => { if (res.code == 200) { this.options = res.rows.map((item) => ({ value: item.medicalCode, // value: item.medicalCode, label: item.organizationName, })); } }); }, getCookie() { const username = Cookies.get("username"); const password = Cookies.get("password"); const rememberMe = Cookies.get("rememberMe"); this.loginForm = { username: username === undefined ? this.loginForm.username : username, password: password === undefined ? this.loginForm.password : decrypt(password), rememberMe: rememberMe === undefined ? false : Boolean(rememberMe), }; }, handleLogin() { this.$refs.loginForm.validate((valid) => { if (valid) { this.loading = true; if (this.loginForm.rememberMe) { Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("password", encrypt(this.loginForm.password), { expires: 30, }); Cookies.set("rememberMe", this.loginForm.rememberMe, { expires: 30, }); } else { Cookies.remove("username"); Cookies.remove("password"); Cookies.remove("rememberMe"); } // å¨æè®¾ç½® campusid åæ° 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; } } this.$store .dispatch("Login", this.loginForm) .then((res) => { if (this.loginForm.username == "admin") { this.$router.push({ path: "/index" }).catch(() => {}); } else { this.$router .push({ path: "/followvisit/discharge" }) .catch(() => {}); } }) .catch(() => { this.loading = false; if (this.captchaEnabled) { this.getCode(); } }); } }); } }, }; </script> <style rel="stylesheet/scss" lang="scss"> .login { display: flex; justify-content: center; align-items: center; height: 100%; overflow: hidden !important; background-position: center center; /* èæ¯å¾ä¸å¹³éº */ background-repeat: no-repeat; /* å½å 容é«åº¦å¤§äºå¾çé«åº¦æ¶ï¼èæ¯å¾åçä½ç½®ç¸å¯¹äºviewportåºå® */ background-attachment: fixed; /* è®©èæ¯å¾åºäºå®¹å¨å¤§å°ä¼¸ç¼© */ background-size: cover; /* è®¾ç½®èæ¯é¢è²ï¼èæ¯å¾å è½½è¿ç¨ä¸ä¼æ¾ç¤ºèæ¯è² */ background-color: #464646; background-image: url("../assets/images/login-background.jpg"); background-size: cover; } .title { margin: 0px auto 30px auto; text-align: center; color: #707070; } .login-form { border-radius: 6px; background: #ffffff; width: 400px; padding: 25px 25px 5px 25px; .el-input { height: 38px; input { height: 38px; } } .input-icon { height: 39px; width: 14px; margin-left: 2px; } } .login-tip { font-size: 13px; text-align: center; color: #bfbfbf; } .login-code { width: 33%; height: 38px; float: right; img { cursor: pointer; vertical-align: middle; } } .el-login-footer { height: 40px; line-height: 40px; position: fixed; bottom: 0; width: 100%; text-align: center; color: #fff; font-family: Arial; font-size: 12px; letter-spacing: 1px; } .login-code-img { height: 38px; } </style> src/views/patient/patient/AwaitingAdmission.vue
@@ -11,42 +11,6 @@ v-show="showSearch" label-width="98px" > <el-form-item label="å§å" width="100" prop="name"> <el-input v-model="queryParams.patname" placeholder="请è¾å ¥å§å" clearable style="width: 200px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="è¯æ" width="100" prop="name"> <el-input v-model="queryParams.diagname" placeholder="请è¾å ¥è¯æ" clearable style="width: 200px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="ç§å®¤" width="100" prop="name"> <el-input v-model="queryParams.deptname" placeholder="请è¾å ¥ç§å®¤åç§°" clearable style="width: 200px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="å»ç" width="100" prop="name"> <el-input v-model="queryParams.drname" placeholder="请è¾å ¥å»çå§å" clearable style="width: 200px" @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="ç æ¡å·" prop="outhospno"> <el-input v-model="queryParams.outhospno" @@ -56,17 +20,7 @@ @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="æ£è èå´" prop="status"> <el-cascader v-model="queryParams.scopetype" placeholder="é»è®¤å ¨é¨" :options="sourcetype" :props="{ expandTrigger: 'hover' }" @change="handleChange" ></el-cascader> </el-form-item> <el-form-item label="å°±è¯æ¥æ"> <el-form-item label="é¢çº¦ä½é¢æ¥æ"> <el-date-picker v-model="dateRange" style="width: 240px" @@ -76,28 +30,31 @@ start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" ></el-date-picker> <!-- <el-date-picker v-model="dateRange" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss" start-placeholder="å¼å§æ¥æ" end-placeholder="ç»ææ¥æ" :default-time="['12:00:00']" </el-form-item> <el-form-item label="ææ é¢åæ£æ¥" prop="status"> <el-select v-model="queryParams.examine" placeholder="è¯·éæ©"> <el-option label="æ" :value="1"> </el-option> <el-option label="æ " :value="2"> </el-option> </el-select> </el-form-item> <el-form-item label="æ¶æ²»ç±»å" prop="status"> <el-select v-model="queryParams.cureType" placeholder="è¯·éæ©"> <el-option v-for="item in dict.type.receive_and_cure" :key="item.value" :label="item.label" :value="item.value" > </el-date-picker> --> </el-option> </el-select> </el-form-item> <el-form-item label="å®æç¶æ" prop="status"> <el-select v-model="queryParams.arrange" placeholder="è¯·éæ©"> <el-option label="已宿" :value="1"> </el-option> <el-option label="æªå®æ" :value="2"> </el-option> </el-select> </el-form-item> <el-row> <!-- <el-form-item label=" å°±è¯æ¥æ " prop="admitdate"> <el-date-picker clearable v-model="queryParams.admitdate" type="date" value-format="yyyy-MM-dd" placeholder="è¯·éæ© å°±è¯æ¥æ " > </el-date-picker> </el-form-item> --> <el-form-item> <el-button type="primary" @@ -207,6 +164,12 @@ prop="id" /> --> <el-table-column label="ç æ¡å·" align="center" key="outhospno" prop="outhospno" /> <el-table-column label="å°±è¯æ¶é´" align="center" key="admitdate" @@ -217,18 +180,29 @@ <span>{{ formatTime(scope.row.admitdate) }}</span> </template> </el-table-column> <!-- <el-table-column label="ç æ¡å·" align="center" key="patno" prop="patno" /> --> <el-table-column label="ç æ¡å·" label="é¢çº¦ä½é¢æ¥æ" align="center" key="outhospno" prop="outhospno" /> key="admitdate" prop="admitdate" width="160" > <template slot-scope="scope"> <span>{{ formatTime(scope.row.admitdate) }}</span> </template> </el-table-column> <el-table-column label="é¢çº¦è¯ææ¥æ" align="center" key="admitdate" prop="admitdate" width="160" > <template slot-scope="scope"> <span>{{ formatTime(scope.row.admitdate) }}</span> </template> </el-table-column> <el-table-column label="å§å" width="100" @@ -272,48 +246,49 @@ width="120" /> <el-table-column label="身份è¯å·" align="center" key="idcardno" prop="idcardno" width="220" /> <el-table-column label="èç³»çµè¯" align="center" key="telcode" prop="telcode" width="120" /> <!-- <el-table-column label="æ£è æ ç¾ï¼ç¼ºï¼" align="center" key="tagList" prop="tagList" width="160" :show-overflow-tooltip="true" > <template slot-scope="scope"> <span v-for="item in scope.row.tagList">{{ item }} </span> </template> </el-table-column> --> <el-table-column label="è¯æ" align="center" key="diagname" prop="diagname" width="190" /> <!-- <el-table-column label="主述" align="center" key="mainsuit" prop="mainsuit" width="120" /> --> <el-table-column label="å°±è¯ç§å®¤" label="ç§å®¤" align="center" key="deptname" prop="deptname" width="120" /> <el-table-column label="æ¥è¯å»ç" label="ææ é¢åæ£æ¥" align="center" key="deptname" prop="deptname" width="120" /> <el-table-column label="æ¶æ²»ç±»å" align="center" key="deptname" prop="deptname" width="120" > <template slot-scope="scope"> <dict-tag :options="dict.type.receive_and_cure" :value="scope.row.sendState" /> </template ></el-table-column> <el-table-column label="å®æç¶æ" align="center" key="drname" prop="drname" @@ -559,7 +534,7 @@ import { delUser } from "@/api/system/user"; import { listPatouthosp, listPatMedInhosp, getPatouthosp, addPatouthosp, updatePatouthosp, @@ -577,7 +552,7 @@ export default { name: "Userhuanze", dicts: ["sys_normal_disable", "sys_user_sex"], dicts: ["sys_normal_disable", "sys_user_sex", "receive_and_cure"], components: { Treeselect }, data() { return { @@ -722,9 +697,7 @@ queryParams: { pageNum: 1, pageSize: 10, searchscope: 3, scopetype: [], deptcodes: [], }, // è¡¨åæ ¡éª rules: { @@ -800,13 +773,6 @@ /** æ¥è¯¢æ£è å表 */ getList() { this.loading = true; if (this.queryParams.searchscope == 3) { this.queryParams.deptcodes = store.getters.belongDepts.map( (obj) => obj.deptCode ); // this.queryParams.leavehospitaldistrictcodes = // store.getters.belongWards.map((obj) => obj.districtCode); } if (this.dateRange) { this.queryParams.beginTime = this.dateRange[0]; this.queryParams.endTime = this.dateRange[1]; @@ -814,7 +780,9 @@ this.queryParams.beginTime = ""; this.queryParams.endTime = ""; } listPatouthosp(this.queryParams).then((response) => { this.loading = false; listPatMedInhosp(this.queryParams).then((response) => { this.userList = response.rows; this.total = response.total; this.loading = false; @@ -834,25 +802,7 @@ this.optionstag = response.rows; }); }, // æ£è èå´å¤ç handleChange(value) { let type = value[0]; let code = value.slice(-1)[0]; // this.queryParams.leavehospitaldistrictcodes = []; this.queryParams.deptcodes = []; if (type == 1) { this.queryParams.deptcodes.push(code); // this.queryParams.leavehospitaldistrictcodes = []; this.queryParams.searchscope = 1; } else if (type == 2) { // this.queryParams.leavehospitaldistrictcodes.push(code); this.queryParams.deptcodes = []; this.queryParams.searchscope = 2; } else { this.queryParams.searchscope = 3; } }, // æ¥è¯¢å¯¼å ¥å±ç¤ºå表 geterryList() { this.loading = true; @@ -919,9 +869,7 @@ this.queryParams = { pageNum: 1, pageSize: 10, searchscope: 3, scopetype: [], deptcodes: [], // leavehospitaldistrictcodes: [], }; this.handleQuery(); src/views/sfstatistics/percentage/index.vue
@@ -395,6 +395,21 @@ key="needFollowUp" prop="needFollowUp" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.needFollowUpInfo, scope.row.leavehospitaldistrictname + 'éé访å表' ) " ><span class="button-zx">{{ scope.row.needFollowUp }}</span></el-button > </template> </el-table-column> <el-table-column label="å¾ é访" @@ -424,6 +439,21 @@ key="followUpSuccess" prop="followUpSuccess" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.followUpSuccessInfo, scope.row.leavehospitaldistrictname + 'é访æåå表' ) " ><span class="button-zx">{{ scope.row.followUpSuccess }}</span></el-button > </template> </el-table-column> <el-table-column label="é访失败" @@ -488,6 +518,21 @@ key="manual" prop="manual" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.manualInfo, scope.row.leavehospitaldistrictname + '人工é访å表' ) " ><span class="button-zx">{{ scope.row.manual }}</span></el-button > </template> </el-table-column> <el-table-column label="çä¿¡" @@ -495,6 +540,21 @@ key="sms" prop="sms" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.smsInfo, scope.row.leavehospitaldistrictname + 'çä¿¡é访å表' ) " ><span class="button-zx">{{ scope.row.sms }}</span></el-button > </template> </el-table-column> <el-table-column label="微信" @@ -502,6 +562,21 @@ key="weChat" prop="weChat" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.weChatInfo, scope.row.leavehospitaldistrictname + '微信é访å表' ) " ><span class="button-zx">{{ scope.row.weChat }}</span></el-button > </template> </el-table-column> </el-table-column> <el-table-column align="center" label="忬¡åºé¢é访"> @@ -511,6 +586,22 @@ key="needFollowUpAgain" prop="needFollowUpAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.needFollowUpAgainInfo, scope.row.leavehospitaldistrictname + '忬¡é访éé访å表' ) " ><span class="button-zx">{{ scope.row.needFollowUpAgain }}</span></el-button > </template> </el-table-column> <el-table-column label="å¾ é访" @@ -518,6 +609,22 @@ key="pendingFollowUpAgain" prop="pendingFollowUpAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.pendingFollowUpAgainInfo, scope.row.leavehospitaldistrictname + '忬¡éè®¿å¾ é访å表' ) " ><span class="button-zx">{{ scope.row.pendingFollowUpAgain }}</span></el-button > </template> </el-table-column> <el-table-column label="é访æå" @@ -525,6 +632,22 @@ key="followUpSuccessAgain" prop="followUpSuccessAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.followUpSuccessAgainInfo, scope.row.leavehospitaldistrictname + '忬¡é访é访æåå表' ) " ><span class="button-zx">{{ scope.row.followUpSuccessAgain }}</span></el-button > </template> </el-table-column> <el-table-column label="é访失败" @@ -532,6 +655,22 @@ key="followUpFailAgain" prop="followUpFailAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.followUpFailAgainInfo, scope.row.leavehospitaldistrictname + '忬¡é访é访失败å表' ) " ><span class="button-zx">{{ scope.row.followUpFailAgain }}</span></el-button > </template> </el-table-column> <el-table-column label="é访ç" @@ -554,6 +693,22 @@ key="manualAgain" prop="manualAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.manualAgainInfo, scope.row.leavehospitaldistrictname + '忬¡é访人工é访å表' ) " ><span class="button-zx">{{ scope.row.manualAgain }}</span></el-button > </template> </el-table-column> <el-table-column label="çä¿¡" @@ -561,6 +716,22 @@ key="smsAgain" prop="smsAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.smsAgainInfo, scope.row.leavehospitaldistrictname + '忬¡é访çä¿¡é访å表' ) " ><span class="button-zx">{{ scope.row.smsAgain }}</span></el-button > </template> </el-table-column> <el-table-column label="微信" @@ -568,6 +739,22 @@ key="weChatAgain" prop="weChatAgain" > <template slot-scope="scope"> <el-button size="medium" type="text" @click=" viewDetails( scope.row.weChatAgainInfo, scope.row.leavehospitaldistrictname + '忬¡é访微信é访å表' ) " ><span class="button-zx">{{ scope.row.weChatAgain }}</span></el-button > </template> </el-table-column> </el-table-column> <el-table-column @@ -894,179 +1081,207 @@ width="70%" :close-on-click-modal="false" > <div style="margin-bottom: 16px; display: flex; align-items: center"> <span style="margin-right: 10px; font-weight: bold">æ£è å§åæ¥è¯¢:</span> <el-input v-model="searchName" placeholder="请è¾å ¥æ£è å§åè¿è¡çé" clearable style="width: 300px" @input="handleSearch" @clear="handleSearch" > </el-input> <span style="margin-left: 10px; color: rgb(35, 81, 233); font-size: 16px" > å ± {{ infotitlelist.length }} æ¡è®°å½ </span> </div> <div class="examine-jic"> <div class="jic-value"> <el-row :gutter="20"> <!-- éæ©æ£è å表 --> <el-table :data="infotitlelist" height="660" style="width: 100%"> <el-table-column prop="sendname" align="center" label="å§å" width="100" <div class="data-list" ref="dataList" @scroll="handleScroll" v-loading="infotitloading" > <el-table :data="currentDisplayList" height="660" style="width: 100%" > </el-table-column> <el-table-column prop="taskName" align="center" width="200" show-overflow-tooltip label="ä»»å¡åç§°" > </el-table-column> <el-table-column prop="sendstate" align="center" width="200" label="ä»»å¡ç¶æ" > <template slot-scope="scope"> <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> </template> </el-table-column> <el-table-column prop="visitTime" align="center" label="åºé访æ¶é´" width="200" show-overflow-tooltip > </el-table-column> <el-table-column prop="finishtime" align="center" label="éè®¿å®ææ¶é´" width="200" show-overflow-tooltip > </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="120" align="center" key="nurseName" prop="nurseName" /> <el-table-column label="主治å»ç" width="120" align="center" key="drname" prop="drname" /> <el-table-column prop="sendname" align="center" label="å§å" width="100" > </el-table-column> <el-table-column prop="taskName" align="center" width="200" show-overflow-tooltip label="ä»»å¡åç§°" > </el-table-column> <el-table-column prop="sendstate" align="center" width="200" label="ä»»å¡ç¶æ" > <template slot-scope="scope"> <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> </template> </el-table-column> <el-table-column prop="visitTime" align="center" label="åºé访æ¶é´" width="200" show-overflow-tooltip > </el-table-column> <el-table-column prop="finishtime" align="center" label="éè®¿å®ææ¶é´" width="200" show-overflow-tooltip > </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="120" align="center" key="nurseName" prop="nurseName" /> <el-table-column label="主治å»ç" width="120" align="center" key="drname" prop="drname" /> <el-table-column label="ç»æç¶æ" align="center" key="excep" prop="excep" width="120" > <template slot-scope="scope"> <dict-tag :options="dict.type.sys_yujing" :value="scope.row.excep" /> </template> </el-table-column> <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="ç»æç¶æ" align="center" key="excep" prop="excep" width="120" > <template slot-scope="scope"> <dict-tag :options="dict.type.sys_yujing" :value="scope.row.excep" /> </template> </el-table-column> <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 prop="templatename" align="center" label="æå¡æ¨¡æ¿" width="200" show-overflow-tooltip > </el-table-column> <el-table-column prop="remark" align="center" label="æå¡è®°å½" width="200" show-overflow-tooltip > </el-table-column> <el-table-column prop="templatename" align="center" label="æå¡æ¨¡æ¿" width="200" show-overflow-tooltip > </el-table-column> <el-table-column prop="remark" align="center" label="æå¡è®°å½" width="200" show-overflow-tooltip > </el-table-column> <el-table-column prop="bankcardno" align="center" label="å¼å«ç¶æ" width="210" > </el-table-column> <el-table-column label="æä½" fixed="right" align="center" width="200" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="medium" type="text" @click="SeedetailsgGo(scope.row)" ><span class="button-zx" ><i class="el-icon-s-order"></i>æ¥ç</span ></el-button > </template> </el-table-column> </el-table> <el-table-column prop="bankcardno" align="center" label="å¼å«ç¶æ" width="210" > </el-table-column> <el-table-column label="æä½" fixed="right" align="center" width="200" class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="medium" type="text" @click="SeedetailsgGo(scope.row)" ><span class="button-zx" ><i class="el-icon-s-order"></i>æ¥ç</span ></el-button > </template> </el-table-column> </el-table> </div> </el-row> <pagination v-show="patienttotal > 0 && this.patientqueryParams.allhosp != 6" @@ -1131,11 +1346,16 @@ orgname: "", expands: [], infotitlelist: [], currentDisplayList: [], // å½åæ¾ç¤ºçæ°æ® loadIndex: 0, // å½åå·²å è½½çæ°æ®ç´¢å¼ pageSize: 100, // æ¯æ¬¡å è½½çæ°æ®é isLoading: false, // 鲿¢æ»å¨æ¶éå¤å è½½ // é®ç½©å± loading: false, Seedloading: false, chartDialogVisible: false, infotitleVisible: false, searchName: "", // æç´¢å ³é®è¯ infotitloading: false, infotitle: "", pieChart: null, @@ -1274,7 +1494,72 @@ getSfStatistics(params).then((response) => { console.log(response); // this.total = response.total; this.userList = response.data; this.userList = this.customSort(response.data); }); }, // æç´¢å¤ç彿° handleSearch() { if (!this.searchName.trim()) { // 妿æç´¢æ¡ä¸ºç©ºï¼æ¾ç¤ºæææ°æ® this.currentDisplayList = [...this.infotitlelist]; } else { // æ ¹æ®æ£è å§åè¿è¡çéï¼ä¸åºå大å°åï¼ const keyword = this.searchName.toLowerCase(); this.currentDisplayList = this.infotitlelist.filter((item) => { return item.sendname && item.sendname.toLowerCase().includes(keyword); }); } }, customSort(data) { // å®ä¹æ¨ææçç åºé¡ºåºï¼æ©å±å°ä¸åï¼ const order = [ "äº", "ä¸", "å", "äº", "å ", "ä¸", "å «", "ä¹", "å", "åä¸", "åäº", "åä¸", "åå", "åäº", "åå ", "åä¸", "åå «", "åä¹", "äºå", "äºåä¸", "äºåäº", "äºåä¸", "äºåå", "äºåäº", "äºåå ", "äºåä¸", "äºåå «", "äºåä¹", "ä¸å", ]; return data.sort((a, b) => { // æåç åºåç§°ä¸ç䏿æ°åé¨å[6](@ref) const getIndex = (name) => { const numStr = name.match( /^(äº|ä¸|å|äº|å |ä¸|å «|ä¹|å|åä¸|åäº|åä¸|åå|åäº|åå |åä¸|åå «|åä¹|äºå|äºåä¸|äºåäº|äºåä¸|äºåå|äºåäº|äºåå |äºåä¸|äºåå «|äºåä¹|ä¸å)/ )?.[1]; return order.indexOf(numStr); }; const indexA = getIndex(a.leavehospitaldistrictname); const indexB = getIndex(b.leavehospitaldistrictname); // 妿é½å¨å®ä¹ç顺åºä¸ï¼æå®ä¹é¡ºåºæï¼å¦åï¼æªå®ä¹çæå¨åé¢[2](@ref) if (indexA === -1) return 1; if (indexB === -1) return -1; return indexA - indexB; }); }, getRowKey(row) { @@ -1296,9 +1581,16 @@ const params = { ...this.queryParams, // 妿鿩äº"å ¨é¨"ï¼åä¼ ææç åº/ç§å®¤ä»£ç deptcodes: this.queryParams.deptcodes.includes("all") ? this.allDeptCodes : this.queryParams.deptcodes, leavehospitaldistrictcodes: [row.leavehospitaldistrictcode], drcode: "1", }; // ç§»é¤å¯è½åå¨ç"all"å¼ delete params.leavehospitaldistrictcodes.all; delete params.deptcodes.all; // å¦æè¯¥è¡è¿æ²¡æå è½½å»çæ°æ®ï¼åå è½½ if (!row.doctorStats) { this.loading = true; @@ -1558,7 +1850,44 @@ viewDetails(row, title) { this.infotitleVisible = true; this.infotitle = title; this.infotitlelist = row; this.infotitlelist = row; // å设rowå°±æ¯éè¦å±ç¤ºçè¯¦ç»æ°ç» // åå§åå è½½ this.loadIndex = 0; this.currentDisplayList = []; this.$nextTick(() => { this.loadMoreData(); }); }, loadMoreData() { if (this.isLoading) return; this.isLoading = true; // 模æå¼æ¥å è½½ï¼å®é å¯è½æ¯ç´æ¥åçæ¬å°æ°æ® setTimeout(() => { const nextChunk = this.infotitlelist.slice( this.loadIndex, this.loadIndex + this.pageSize ); this.currentDisplayList = this.currentDisplayList.concat(nextChunk); this.loadIndex += this.pageSize; this.isLoading = false; }, 200); }, handleScroll(event) { const scrollContainer = event.target; // 夿æ¯å¦æ»å¨å°åºé¨ const isAtBottom = scrollContainer.scrollTop + scrollContainer.clientHeight >= scrollContainer.scrollHeight - 10; if ( isAtBottom && !this.isLoading && this.loadIndex < this.infotitlelist.length ) { this.loadMoreData(); } }, SeedetailsgGo(row) { this.SeedetailsVisible = false; @@ -2588,6 +2917,10 @@ width: 100px; height: 50px; } .data-list { max-height: 800px; overflow-y: auto; } .documentf { display: flex; justify-content: flex-end; vue.config.js
@@ -36,10 +36,10 @@ // 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:8096`, // 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`, target:`http://localhost:8095`, // target:`http://35z1t16164.qicp.vip`, // target: `http://192.168.100.172:8095`, // target: `http://192.168.101.166:8093`,