From 7c71fcb61dd0bfc6a179a973f9cab5ef979ad5f2 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期一, 02 二月 2026 17:11:56 +0800
Subject: [PATCH] 测试完成
---
src/api/smartor/patouthosp.js | 8
vue.config.js | 4
src/views/sfstatistics/percentage/index.vue | 667 +++++++++++++++++++++++-------
src/utils/sipService.js | 1
lishui.zip | 0
shiyi.zip | 0
src/views/patient/patient/AwaitingAdmission.vue | 224 ++++------
src/views/login-sy.vue | 322 +++++++++++++++
8 files changed, 919 insertions(+), 307 deletions(-)
diff --git a/lishui.zip b/lishui.zip
new file mode 100644
index 0000000..e4da5f6
--- /dev/null
+++ b/lishui.zip
Binary files differ
diff --git a/shiyi.zip b/shiyi.zip
new file mode 100644
index 0000000..f28a6c7
--- /dev/null
+++ b/shiyi.zip
Binary files differ
diff --git a/src/api/smartor/patouthosp.js b/src/api/smartor/patouthosp.js
index ebe3d70..353c440 100644
--- a/src/api/smartor/patouthosp.js
+++ b/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
+ })
+}
// 鏌ヨ鎮h�呴棬璇婅褰曡缁�
export function getPatouthosp(id) {
diff --git a/src/utils/sipService.js b/src/utils/sipService.js
index 0f62840..4fc4f96 100644
--- a/src/utils/sipService.js
+++ b/src/utils/sipService.js
@@ -1,6 +1,7 @@
import JsSIP from "jssip";
import { Notification, MessageBox, Message, Loading } from "element-ui";
// 鍖婚櫌鏈烘瀯涓嶴IP鏈嶅姟鍣ㄦ槧灏勯厤缃�
+// 鍏徃鏈嶅姟鍣�192.168.100.6
const HOSPITAL_CONFIG = {
涓芥按甯備腑鍖婚櫌: {
wsUrl: "wss://192.168.10.124:7443",
diff --git a/src/views/login-sy.vue b/src/views/login-sy.vue
new file mode 100644
index 0000000..0515b81
--- /dev/null
+++ b/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;
+ /* 褰撳唴瀹归珮搴﹀ぇ浜庡浘鐗囬珮搴︽椂锛岃儗鏅浘鍍忕殑浣嶇疆鐩稿浜巚iewport鍥哄畾 */
+ 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>
diff --git a/src/views/patient/patient/AwaitingAdmission.vue b/src/views/patient/patient/AwaitingAdmission.vue
index f692a80..6a72312 100644
--- a/src/views/patient/patient/AwaitingAdmission.vue
+++ b/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="鎮h�呰寖鍥�" 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="鎮h�呮爣绛撅紙缂猴級"
- 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 @@
/** 鏌ヨ鎮h�呭垪琛� */
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;
});
},
- // 鎮h�呰寖鍥村鐞�
- 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();
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 89b81a6..745f8f0 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/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">鎮h�呭鍚嶆煡璇�:</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">
<!-- 閫夋嫨鎮h�呭垪琛� -->
- <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="璐d换鎶ゅ+"
- 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="璐d换鎶ゅ+"
+ 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 {
+ // 鏍规嵁鎮h�呭鍚嶈繘琛岀瓫閫夛紙涓嶅尯鍒嗗ぇ灏忓啓锛�
+ 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,
// 濡傛灉閫夋嫨浜�"鍏ㄩ儴"锛屽垯浼犳墍鏈夌梾鍖�/绉戝浠g爜
+ 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;
diff --git a/vue.config.js b/vue.config.js
index 5a49e1f..7ce923e 100644
--- a/vue.config.js
+++ b/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`,
--
Gitblit v1.9.3