From 7ae4f8a626802bc8f027aa091046db97635da879 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 19 八月 2024 19:16:35 +0800
Subject: [PATCH] 完成首页母版

---
 package-lock.json                        |    8 
 src/assets/imgs/huanzheliebiao.png       |    0 
 src/layout/main/defaults.vue             |    4 
 src/utils/request.ts                     |   18 
 src/api/Patients/index.ts                |   17 
 src/stores/themeConfig.ts                |    2 
 src/main.ts                              |    6 
 .env.development                         |    2 
 src/layout/navBars/topBar/breadcrumb.vue |   22 
 src/stores/userInfo.ts                   |   31 
 src/views/home/index.vue                 |  832 +++++++---------------------
 src/router/route.ts                      |    2 
 src/types/pinia.d.ts                     |    2 
 src/assets/imgs/logo.png                 |    0 
 src/layout/navBars/topBar/index.vue      |    1 
 .env.production                          |    2 
 src/views/login/component/account.vue    |   54 +
 src/api/login/index.ts                   |   50 +
 src/views/home/index222.vue              |  633 +++++++++++++++++++++
 19 files changed, 1,019 insertions(+), 667 deletions(-)

diff --git a/.env.development b/.env.development
index 86f9384..bb87784 100644
--- a/.env.development
+++ b/.env.development
@@ -2,4 +2,4 @@
 ENV = development
 
 # 本地环境接口地址
-VITE_API_URL = http://localhost:8181/
\ No newline at end of file
+VITE_API_URL = 'http://testbs.ihemodialysis.com/'
\ No newline at end of file
diff --git a/.env.production b/.env.production
index 478a841..270412d 100644
--- a/.env.production
+++ b/.env.production
@@ -2,4 +2,4 @@
 ENV = production
 
 # 线上环境接口地址
-VITE_API_URL = https://lyt-top.gitee.io/vue-next-admin-preview/
\ No newline at end of file
+VITE_API_URL = 'https://hemobs.icoldchain.cn/'
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 1a944f7..ee4feda 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,11 +1,11 @@
 {
-	"name": "vue-next-admin",
+	"name": "vue-nutritional-management",
 	"version": "2.4.33",
 	"lockfileVersion": 2,
 	"requires": true,
 	"packages": {
 		"": {
-			"name": "vue-next-admin",
+			"name": "vue-nutritional-management",
 			"version": "2.4.33",
 			"license": "MIT",
 			"dependencies": {
@@ -103,7 +103,7 @@
 		},
 		"node_modules/@element-plus/icons-vue": {
 			"version": "2.3.1",
-			"resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+			"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
 			"integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
 			"peerDependencies": {
 				"vue": "^3.2.0"
@@ -4360,7 +4360,7 @@
 		},
 		"@element-plus/icons-vue": {
 			"version": "2.3.1",
-			"resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+			"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
 			"integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
 			"requires": {}
 		},
diff --git a/src/api/Patients/index.ts b/src/api/Patients/index.ts
new file mode 100644
index 0000000..b5df8c4
--- /dev/null
+++ b/src/api/Patients/index.ts
@@ -0,0 +1,17 @@
+import request from "/@/utils/request";
+
+/** 
+* 查询检索血透患者
+*@param params 要传的参数值
+*@return 返回的接口数据
+*/
+export function QueryList(params: object) {
+    return request({
+        url: '/patient/info/list',
+        method: 'post',
+        headers: {
+            'Content-Type': 'application/x-www-form-urlencoded'
+            },
+        params
+    });
+}
\ No newline at end of file
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
index 71ed946..6840349 100644
--- a/src/api/login/index.ts
+++ b/src/api/login/index.ts
@@ -1,27 +1,35 @@
 import request from '/@/utils/request';
 
 /**
- * (不建议写成 request.post(xxx),因为这样 post 时,无法 params 与 data 同时传参)
- *
- * 登录api接口集合
- * @method signIn 用户登录
- * @method signOut 用户退出登录
+ * 用户登录
+ * @param params 要传的参数值
+ * @returns 返回接口数据
  */
-export function useLoginApi() {
-	return {
-		signIn: (data: object) => {
-			return request({
-				url: '/user/signIn',
-				method: 'post',
-				data,
-			});
+export function signIn(params: string) {
+	return request({
+		url: '/user/info/login',
+		method: 'post',
+		headers: {
+		'Content-Type': 'application/x-www-form-urlencoded'
 		},
-		signOut: (data: object) => {
-			return request({
-				url: '/user/signOut',
-				method: 'post',
-				data,
-			});
-		},
-	};
+		data: params,
+	});
+}
+/**
+ * 用户退出登录
+ * @param params 要传的参数值
+ * @returns 返回接口数据
+ */
+export function signOut(params: object) {
+	return request({
+		url: '/user/signOut',
+		method: 'post',
+		data: params,
+	});
+}
+export function getuserinfo() {
+	return request({
+		url: '/user/info/getUserInfo',
+		method: 'post'
+	})
 }
diff --git a/src/assets/imgs/huanzheliebiao.png b/src/assets/imgs/huanzheliebiao.png
new file mode 100644
index 0000000..167d4d1
--- /dev/null
+++ b/src/assets/imgs/huanzheliebiao.png
Binary files differ
diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png
new file mode 100644
index 0000000..f918d98
--- /dev/null
+++ b/src/assets/imgs/logo.png
Binary files differ
diff --git a/src/layout/main/defaults.vue b/src/layout/main/defaults.vue
index 8122aef..b6ba0e8 100644
--- a/src/layout/main/defaults.vue
+++ b/src/layout/main/defaults.vue
@@ -1,7 +1,9 @@
 <template>
 	<el-container class="layout-container">
-		<LayoutAside />
+		<!-- 不要菜单栏 -->
+		<!-- <LayoutAside /> -->
 		<el-container class="layout-container-view h100">
+			
 			<el-scrollbar ref="layoutScrollbarRef" class="layout-backtop">
 				<LayoutHeader />
 				<LayoutMain ref="layoutMainRef" />
diff --git a/src/layout/navBars/topBar/breadcrumb.vue b/src/layout/navBars/topBar/breadcrumb.vue
index 7dfaca6..0105f4c 100644
--- a/src/layout/navBars/topBar/breadcrumb.vue
+++ b/src/layout/navBars/topBar/breadcrumb.vue
@@ -1,5 +1,5 @@
 <template>
-	<div v-if="isShowBreadcrumb" class="layout-navbars-breadcrumb">
+	<!-- <div v-if="isShowBreadcrumb" class="layout-navbars-breadcrumb">
 		<SvgIcon
 			class="layout-navbars-breadcrumb-icon"
 			:name="themeConfig.isCollapse ? 'ele-Expand' : 'ele-Fold'"
@@ -20,6 +20,12 @@
 				</el-breadcrumb-item>
 			</transition-group>
 		</el-breadcrumb>
+	</div> -->
+	<div class="layout-navbars-breadcrumb">
+		
+		<el-avatar shape="square" style="width: 48px; height: 35px;background-color: #ffffff;margin-right: 10px;margin-left: 10px;" fit="contain" :src="logo" />
+
+		<div class="titleHome">营养管理系统</div>
 	</div>
 </template>
 
@@ -31,6 +37,7 @@
 import { storeToRefs } from 'pinia';
 import { useThemeConfig } from '/@/stores/themeConfig';
 import { useRoutesList } from '/@/stores/routesList';
+import logo from '/@/assets/imgs/logo.png'
 
 // 定义变量内容
 const stores = useRoutesList();
@@ -116,7 +123,7 @@
 		font-size: 18px;
 		color: var(--next-bg-topBarColor);
 		height: 100%;
-		width: 40px;
+		width: 48px;
 		opacity: 0.8;
 		&:hover {
 			opacity: 1;
@@ -142,5 +149,16 @@
 			color: var(--el-color-primary) !important;
 		}
 	}
+	.titleHome{
+		height: 25px;
+		font-family: HYYakuHei, HYYakuHei;
+		font-weight: normal;
+		font-size: 21px;
+		color: #333333;
+		line-height: 25px;
+		letter-spacing: 1px;
+		text-align: left;
+		font-style: normal;
+	}
 }
 </style>
diff --git a/src/layout/navBars/topBar/index.vue b/src/layout/navBars/topBar/index.vue
index bd8804a..0b9c973 100644
--- a/src/layout/navBars/topBar/index.vue
+++ b/src/layout/navBars/topBar/index.vue
@@ -2,6 +2,7 @@
 	<div class="layout-navbars-breadcrumb-index">
 		<Logo v-if="setIsShowLogo" />
 		<Breadcrumb />
+		
 		<Horizontal :menuList="state.menuList" v-if="isLayoutTransverse" />
 		<User />
 	</div>
diff --git a/src/main.ts b/src/main.ts
index 4373425..e979762 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -7,11 +7,15 @@
 import other from '/@/utils/other';
 
 import ElementPlus from 'element-plus';
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
 import '/@/theme/index.scss';
 import VueGridLayout from 'vue-grid-layout';
 
 const app = createApp(App);
-
+//您需要从 @element-plus/icons-vue 中导入所有图标并进行全局注册。
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+app.component(key, component)
+}
 directive(app);
 other.elSvg(app);
 
diff --git a/src/router/route.ts b/src/router/route.ts
index 21a9f3f..b4576af 100644
--- a/src/router/route.ts
+++ b/src/router/route.ts
@@ -50,7 +50,7 @@
 			{
 				path: '/home',
 				name: 'home',
-				component: () => import('/@/views/home/index.vue'),
+				component: () => import('../views/home/index.vue'),
 				meta: {
 					title: 'message.router.home',
 					isLink: '',
diff --git a/src/stores/themeConfig.ts b/src/stores/themeConfig.ts
index 0a4ebf7..3adef00 100644
--- a/src/stores/themeConfig.ts
+++ b/src/stores/themeConfig.ts
@@ -64,7 +64,7 @@
 			// 是否开启菜单手风琴效果
 			isUniqueOpened: true,
 			// 是否开启固定 Header
-			isFixedHeader: false,
+			isFixedHeader: true,
 			// 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除
 			isFixedHeaderChange: false,
 			// 是否开启经典布局分割菜单(仅经典布局生效)
diff --git a/src/stores/userInfo.ts b/src/stores/userInfo.ts
index 33e7970..887d209 100644
--- a/src/stores/userInfo.ts
+++ b/src/stores/userInfo.ts
@@ -1,6 +1,7 @@
 import { defineStore } from 'pinia';
 import Cookies from 'js-cookie';
 import { Session } from '/@/utils/storage';
+import { getuserinfo } from '../api/login';
 
 /**
  * 用户信息
@@ -14,6 +15,8 @@
 			time: 0,
 			roles: [],
 			authBtnList: [],
+			clientCode:'',
+			clientName:''
 		},
 	}),
 	actions: {
@@ -22,6 +25,7 @@
 			if (Session.get('userInfo')) {
 				this.userInfos = Session.get('userInfo');
 			} else {
+				console.log('Session里没有userInfo')
 				const userInfos = <UserInfos>await this.getApiUserInfo();
 				this.userInfos = userInfos;
 			}
@@ -29,10 +33,14 @@
 		// 模拟接口数据
 		// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
 		async getApiUserInfo() {
+			const userinfoRes = await getuserinfo()
+			console.log('-----------用token 换用户信息---------------')
+			console.log(userinfoRes.data)
+			const userRet=userinfoRes.data
 			return new Promise((resolve) => {
 				setTimeout(() => {
 					// 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入
-					const userName = Cookies.get('userName');
+					const userName = userRet.userName
 					// 模拟数据
 					let defaultRoles: Array<string> = [];
 					let defaultAuthBtnList: Array<string> = [];
@@ -45,7 +53,17 @@
 					// test 按钮权限标识
 					let testAuthBtnList: Array<string> = ['btn.add', 'btn.link'];
 					// 不同用户模拟不同的用户权限
-					if (userName === 'admin') {
+					let isadmin=false;
+					if(userRet.roles.length > 0){
+						const x=userRet.roles.findIndex(e=>{return e.roleName==='admin'})
+						if(x>=0){
+							isadmin=true
+						}
+						else{
+							isadmin=false
+						}
+					}
+					if (isadmin) {
 						defaultRoles = adminRoles;
 						defaultAuthBtnList = adminAuthBtnList;
 					} else {
@@ -55,15 +73,16 @@
 					// 用户信息模拟数据
 					const userInfos = {
 						userName: userName,
-						photo:
-							userName === 'admin'
+						photo:userRet.userAvatar===''
 								? 'https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500'
-								: 'https://img2.baidu.com/it/u=2370931438,70387529&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
+								: userRet.userAvatar,
 						time: new Date().getTime(),
 						roles: defaultRoles,
 						authBtnList: defaultAuthBtnList,
+						clientCode:userRet.currentClientInfo.code,
+						clientName:userRet.currentClientInfo.clientName,
 					};
-					Session.set('userInfo', userInfos);
+					// Session.set('userInfo', userInfos);
 					resolve(userInfos);
 				}, 0);
 			});
diff --git a/src/types/pinia.d.ts b/src/types/pinia.d.ts
index f7c32ad..806a210 100644
--- a/src/types/pinia.d.ts
+++ b/src/types/pinia.d.ts
@@ -9,6 +9,8 @@
 	roles: string[];
 	time: number;
 	userName: string;
+	clientCode:string,
+	clientName:string
 	[key: string]: T;
 }
 declare interface UserInfosState {
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 6212fc4..792f154 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -20,7 +20,7 @@
 	(config) => {
 		// 在发送请求之前做些什么 token
 		if (Session.get('token')) {
-			config.headers!['Authorization'] = `${Session.get('token')}`;
+			config.headers!['Authorization'] = `Bearer ${Session.get('token')}`;
 		}
 		return config;
 	},
@@ -44,6 +44,15 @@
 					.then(() => {})
 					.catch(() => {});
 			}
+			if(res.code===200){
+				return response.data;
+			}
+			if(res.code === 400){
+				ElMessage.error(res.message);
+			}
+			if(res.code === 500){
+				ElMessage.error(res.message);
+			}
 			return Promise.reject(service.interceptors.response);
 		} else {
 			return res;
@@ -55,10 +64,15 @@
 			ElMessage.error('网络超时');
 		} else if (error.message == 'Network Error') {
 			ElMessage.error('网络连接错误');
-		} else {
+		} else if (error.message.indexOf('status code 401') != -1) {
+			ElMessage.error('token 过期了');
+			Session.clear(); // 清除浏览器全部临时缓存
+			window.location.href = '/'; // 去登录页
+		}else {
 			if (error.response.data) ElMessage.error(error.response.statusText);
 			else ElMessage.error('接口路径找不到');
 		}
+		console.log
 		return Promise.reject(error);
 	}
 );
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index d351e1e..3c14bf2 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -1,85 +1,130 @@
 <template>
-	<div class="home-container layout-pd">
-		<el-row :gutter="15" class="home-card-one mb15">
-			<el-col
-				:xs="24"
-				:sm="12"
-				:md="12"
-				:lg="6"
-				:xl="6"
-				v-for="(v, k) in state.homeOne"
-				:key="k"
-				:class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }"
-			>
-				<div class="home-card-item flex">
-					<div class="flex-margin flex w100" :class="` home-one-animation${k}`">
-						<div class="flex-auto">
-							<span class="font30">{{ v.num1 }}</span>
-							<span class="ml5 font16" :style="{ color: v.color1 }">{{ v.num2 }}%</span>
-							<div class="mt10">{{ v.num3 }}</div>
-						</div>
-						<div class="home-card-item-icon flex" :style="{ background: `var(${v.color2})` }">
-							<i class="flex-margin font32" :class="v.num4" :style="{ color: `var(${v.color3})` }"></i>
-						</div>
-					</div>
-				</div>
-			</el-col>
-		</el-row>
-		<el-row :gutter="15" class="home-card-two mb15">
-			<el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16">
-				<div class="home-card-item">
-					<div style="height: 100%" ref="homeLineRef"></div>
-				</div>
-			</el-col>
-			<el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8" class="home-media">
-				<div class="home-card-item">
-					<div style="height: 100%" ref="homePieRef"></div>
-				</div>
-			</el-col>
-		</el-row>
-		<el-row :gutter="15" class="home-card-three">
-			<el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8">
-				<div class="home-card-item">
-					<div class="home-card-item-title">快捷导航工具</div>
-					<div class="home-monitor">
-						<div class="flex-warp">
-							<div class="flex-warp-item" v-for="(v, k) in state.homeThree" :key="k">
-								<div class="flex-warp-item-box" :class="`home-animation${k}`">
-									<div class="flex-margin">
-										<i :class="v.icon" :style="{ color: v.iconColor }"></i>
-										<span class="pl5">{{ v.label }}</span>
-										<div class="mt10">{{ v.value }}</div>
-									</div>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-			</el-col>
-			<el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16" class="home-media">
-				<div class="home-card-item">
-					<div style="height: 100%" ref="homeBarRef"></div>
-				</div>
-			</el-col>
-		</el-row>
+	<div class="home-container layout-pd ">
+        <el-row :gutter="15" >
+            <el-col :span="4"  class="patTabel">
+                <el-table :data="state.filterTableData" 
+                stripe 
+                :height="state.tableHeight.left"
+                size="default"
+                highlight-current-row
+                @current-change="handleCurrentChange"
+                style="width: 100%">
+                    <el-table-column>
+                        <template #header>
+                            <div class="home-title">
+                                    <el-avatar shape="square" style="width: 16px; height: 16px;background-color: #ffffff;margin-right: 10px;margin-left: 10px;" fit="contain" :src="huanzheliebiao" />
+                          
+                                    <div class="titleHome">患者列表</div>
+                            </div>
+                            <el-input size="default"  @change="getPatients"  v-model="state.search" placeholder="支持模糊查询"  :prefix-icon="Search"/>
+                        </template>
+                        <template #default="scope">
+                            <el-row>
+                                <el-col :span="12">{{scope.row.patientName}}</el-col>
+                                <el-col :span="6">{{scope.row.patientGenderText}}</el-col>
+                                <el-col :span="6">{{scope.row.age}}</el-col>
+                            </el-row>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </el-col>
+            <el-col :span="20" class="detailRight">
+                <el-tabs v-model="state.activeName" class="demo-tabs" @tab-click="handleClick">
+                    <el-tab-pane label="患者档案" name="患者档案">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><Avatar /></el-icon>
+                                <span style="margin-left: 5px">患者档案</span>
+                            </span>
+                        </template>
+                        患者档案
+                    </el-tab-pane>
+                    <el-tab-pane label="生化数据" name="生化数据">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><Aim /></el-icon>
+                                <span style="margin-left: 5px">生化数据</span>
+                            </span>
+                        </template>
+                        Config
+                    </el-tab-pane>
+                    <el-tab-pane label="用药记录" name="用药记录">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><Edit /></el-icon>
+                                <span style="margin-left: 5px">用药记录</span>
+                            </span>
+                        </template>
+                        Role
+                    </el-tab-pane>
+                    <el-tab-pane label="历史服务" name="历史服务">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><ZoomIn /></el-icon>
+                                <span style="margin-left: 5px">历史服务</span>
+                            </span>
+                        </template>
+                        Task
+                    </el-tab-pane>
+                    <el-tab-pane label="膳食调查" name="膳食调查">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><Notification /></el-icon>
+                                <span style="margin-left: 5px">膳食调查</span>
+                            </span>
+                        </template>
+                        Task
+                    </el-tab-pane>
+                    <el-tab-pane label="营养筛查评估" name="营养筛查评估">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><Histogram /></el-icon>
+                                <span style="margin-left: 5px">营养筛查评估</span>
+                            </span>
+                        </template>
+                        Task
+                    </el-tab-pane>
+                    <el-tab-pane label="方案" name="方案">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><Grid /></el-icon>
+                                <span style="margin-left: 5px">方案</span>
+                            </span>
+                        </template>
+                        Task
+                    </el-tab-pane>
+                    <el-tab-pane label="随访记录" name="随访记录">
+                        <template #label>
+                            <span class="custom-tabs-label home-title">
+                                <el-icon><ChatDotRound /></el-icon>
+                                <span style="margin-left: 5px">随访记录</span>
+                            </span>
+                        </template>
+                        Task
+                    </el-tab-pane>
+                </el-tabs>
+            </el-col>
+        </el-row>
 	</div>
 </template>
 
 <script setup lang="ts" name="home">
+import huanzheliebiao from '/@/assets/imgs/huanzheliebiao.png'
 import { reactive, onMounted, ref, watch, nextTick, onActivated, markRaw } from 'vue';
-import * as echarts from 'echarts';
+import {QueryList} from '/@/api/Patients'
 import { storeToRefs } from 'pinia';
-import { useThemeConfig } from '/@/stores/themeConfig';
-import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
-
-// 定义变量内容
-const homeLineRef = ref();
-const homePieRef = ref();
-const homeBarRef = ref();
-const storesTagsViewRoutes = useTagsViewRoutes();
-const storesThemeConfig = useThemeConfig();
-const { themeConfig } = storeToRefs(storesThemeConfig);
-const { isTagsViewCurrenFull } = storeToRefs(storesTagsViewRoutes);
+import { useUserInfo } from '/@/stores/userInfo';
+const stores = useUserInfo();
+const { userInfos } = storeToRefs(stores);
+import { ElLoading, TabsPaneContext } from 'element-plus'
+import { Search } from '@element-plus/icons-vue'
+interface User {
+    code:string,
+    patientName: string
+    patientGenderText: string
+    age: string
+}
+const currentRow=ref()
 const state = reactive({
 	global: {
 		homeChartOne: null,
@@ -87,547 +132,116 @@
 		homeCharThree: null,
 		dispose: [null, '', undefined],
 	} as any,
-	homeOne: [
-		{
-			num1: '125,12',
-			num2: '-12.32',
-			num3: '订单统计信息',
-			num4: 'fa fa-meetup',
-			color1: '#FF6462',
-			color2: '--next-color-primary-lighter',
-			color3: '--el-color-primary',
-		},
-		{
-			num1: '653,33',
-			num2: '+42.32',
-			num3: '月度计划信息',
-			num4: 'iconfont icon-ditu',
-			color1: '#6690F9',
-			color2: '--next-color-success-lighter',
-			color3: '--el-color-success',
-		},
-		{
-			num1: '125,65',
-			num2: '+17.32',
-			num3: '年度计划信息',
-			num4: 'iconfont icon-zaosheng',
-			color1: '#6690F9',
-			color2: '--next-color-warning-lighter',
-			color3: '--el-color-warning',
-		},
-		{
-			num1: '520,43',
-			num2: '-10.01',
-			num3: '访问统计信息',
-			num4: 'fa fa-github-alt',
-			color1: '#FF6462',
-			color2: '--next-color-danger-lighter',
-			color3: '--el-color-danger',
-		},
-	],
-	homeThree: [
-		{
-			icon: 'iconfont icon-yangan',
-			label: '浅粉红',
-			value: '2.1%OBS/M',
-			iconColor: '#F72B3F',
-		},
-		{
-			icon: 'iconfont icon-wendu',
-			label: '深红(猩红)',
-			value: '30℃',
-			iconColor: '#91BFF8',
-		},
-		{
-			icon: 'iconfont icon-shidu',
-			label: '淡紫红',
-			value: '57%RH',
-			iconColor: '#88D565',
-		},
-		{
-			icon: 'iconfont icon-shidu',
-			label: '弱紫罗兰红',
-			value: '107w',
-			iconColor: '#88D565',
-		},
-		{
-			icon: 'iconfont icon-zaosheng',
-			label: '中紫罗兰红',
-			value: '57DB',
-			iconColor: '#FBD4A0',
-		},
-		{
-			icon: 'iconfont icon-zaosheng',
-			label: '紫罗兰',
-			value: '57PV',
-			iconColor: '#FBD4A0',
-		},
-		{
-			icon: 'iconfont icon-zaosheng',
-			label: '暗紫罗兰',
-			value: '517Cpd',
-			iconColor: '#FBD4A0',
-		},
-		{
-			icon: 'iconfont icon-zaosheng',
-			label: '幽灵白',
-			value: '12kg',
-			iconColor: '#FBD4A0',
-		},
-		{
-			icon: 'iconfont icon-zaosheng',
-			label: '海军蓝',
-			value: '64fm',
-			iconColor: '#FBD4A0',
-		},
-	],
-	myCharts: [] as EmptyArrayType,
-	charts: {
-		theme: '',
-		bgColor: '',
-		color: '#303133',
-	},
+    filterTableData:[
+        {
+            name: '张山',
+            sex: '男',
+            age: '12',
+        },
+        {
+            name: '张山二',
+            sex: '男',
+            age: '12',
+        },
+        {
+            name: '王二小',
+            sex: '男',
+            age: '12',
+        },
+    ],
+    activeName:'患者档案',
+    tableHeight:{
+        left:0,
+        detailRight:0
+    },
+    search:''
 });
+onMounted(()=>{
+    setTableHeight()
+    getPatients()
+})
+const handleCurrentChange = (val: User | undefined) => {
+  currentRow.value = val
+}
+const getPatients=()=>{
+    const loading = ElLoading.service({
+        lock: true,
+        text: 'Loading',
+        background: 'rgba(0, 0, 0, 0.7)',
+    })
+    var ps= {
+        page: 0,
+        size: 0,
+        wherecondition:`client_code="${userInfos.value.clientCode}" and (patient_name like "%${state.search.toLowerCase()}%"
+        OR patient_name_py like "%${state.search.toLowerCase()}%")`
+    }
+    QueryList(ps).then(res=>{
+        console.log('----------------患者--------')
+        console.log(res.data)
+        state.filterTableData=res.data.list
+    }).finally(e=>{
+        loading.close()
+    })
+}
+/**设置高度 */
+const setTableHeight = () => {
+	let height = document.documentElement.clientHeight;
+    console.log('窗口高度')
+	const navDom = document.querySelector('.layout-navbars-breadcrumb-index');
+	if (navDom) {
+		height -= navDom.scrollHeight;
+	}
+    state.tableHeight.detailRight=height
+    state.tableHeight.left = height-77;
+	// const demoFormDom = document.querySelector('.card_box_search')
 
-// 折线图
-const initLineChart = () => {
-	if (!state.global.dispose.some((b: any) => b === state.global.homeChartOne)) state.global.homeChartOne.dispose();
-	state.global.homeChartOne = markRaw(echarts.init(homeLineRef.value, state.charts.theme));
-	const option = {
-		backgroundColor: state.charts.bgColor,
-		title: {
-			text: '政策补贴额度',
-			x: 'left',
-			textStyle: { fontSize: '15', color: state.charts.color },
-		},
-		grid: { top: 70, right: 20, bottom: 30, left: 30 },
-		tooltip: { trigger: 'axis' },
-		legend: { data: ['预购队列', '最新成交价'], right: 0 },
-		xAxis: {
-			data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
-		},
-		yAxis: [
-			{
-				type: 'value',
-				name: '价格',
-				splitLine: { show: true, lineStyle: { type: 'dashed', color: '#f5f5f5' } },
-			},
-		],
-		series: [
-			{
-				name: '预购队列',
-				type: 'line',
-				symbolSize: 6,
-				symbol: 'circle',
-				smooth: true,
-				data: [0, 41.1, 30.4, 65.1, 53.3, 53.3, 53.3, 41.1, 30.4, 65.1, 53.3, 10],
-				lineStyle: { color: '#fe9a8b' },
-				itemStyle: { color: '#fe9a8b', borderColor: '#fe9a8b' },
-				areaStyle: {
-					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-						{ offset: 0, color: '#fe9a8bb3' },
-						{ offset: 1, color: '#fe9a8b03' },
-					]),
-				},
-			},
-			{
-				name: '最新成交价',
-				type: 'line',
-				symbolSize: 6,
-				symbol: 'circle',
-				smooth: true,
-				data: [0, 24.1, 7.2, 15.5, 42.4, 42.4, 42.4, 24.1, 7.2, 15.5, 42.4, 0],
-				lineStyle: { color: '#9E87FF' },
-				itemStyle: { color: '#9E87FF', borderColor: '#9E87FF' },
-				areaStyle: {
-					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-						{ offset: 0, color: '#9E87FFb3' },
-						{ offset: 1, color: '#9E87FF03' },
-					]),
-				},
-				emphasis: {
-					itemStyle: {
-						color: {
-							type: 'radial',
-							x: 0.5,
-							y: 0.5,
-							r: 0.5,
-							colorStops: [
-								{ offset: 0, color: '#9E87FF' },
-								{ offset: 0.4, color: '#9E87FF' },
-								{ offset: 0.5, color: '#fff' },
-								{ offset: 0.7, color: '#fff' },
-								{ offset: 0.8, color: '#fff' },
-								{ offset: 1, color: '#fff' },
-							],
-						},
-						borderColor: '#9E87FF',
-						borderWidth: 2,
-					},
-				},
-			},
-		],
-	};
-	state.global.homeChartOne.setOption(option);
-	state.myCharts.push(state.global.homeChartOne);
 };
-// 饼图
-const initPieChart = () => {
-	if (!state.global.dispose.some((b: any) => b === state.global.homeChartTwo)) state.global.homeChartTwo.dispose();
-	state.global.homeChartTwo = markRaw(echarts.init(homePieRef.value, state.charts.theme));
-	var getname = ['房屋及结构物', '专用设备', '通用设备', '文物和陈列品', '图书、档案'];
-	var getvalue = [34.2, 38.87, 17.88, 9.05, 2.05];
-	var data = [];
-	for (var i = 0; i < getname.length; i++) {
-		data.push({ name: getname[i], value: getvalue[i] });
-	}
-	const colorList = ['#51A3FC', '#36C78B', '#FEC279', '#968AF5', '#E790E8'];
-	const option = {
-		backgroundColor: state.charts.bgColor,
-		title: {
-			text: '房屋建筑工程',
-			x: 'left',
-			textStyle: { fontSize: '15', color: state.charts.color },
-		},
-		tooltip: { trigger: 'item', formatter: '{b} <br/> {c}%' },
-		graphic: {
-			elements: [
-				{
-					type: 'image',
-					z: -1,
-					style: {
-						image: themeConfig.value.isIsDark
-							? ''
-							: 'data:image/png;base64,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',
-						width: 230,
-						height: 230,
-					},
-					left: '16.5%',
-					top: 'center',
-				},
-			],
-		},
-		legend: {
-			type: 'scroll',
-			orient: 'vertical',
-			right: '0%',
-			left: '65%',
-			top: 'center',
-			itemWidth: 14,
-			itemHeight: 14,
-			data: getname,
-			textStyle: {
-				rich: {
-					name: {
-						fontSize: 14,
-						fontWeight: 400,
-						width: 200,
-						height: 35,
-						padding: [0, 0, 0, 60],
-						color: state.charts.color,
-					},
-					rate: {
-						fontSize: 15,
-						fontWeight: 500,
-						height: 35,
-						width: 40,
-						padding: [0, 0, 0, 30],
-						color: state.charts.color,
-					},
-				},
-			},
-		},
-		series: [
-			{
-				type: 'pie',
-				radius: ['82', themeConfig.value.isIsDark ? '50' : '102'],
-				center: ['32%', '50%'],
-				itemStyle: {
-					color: function (params: any) {
-						return colorList[params.dataIndex];
-					},
-				},
-				label: { show: false },
-				labelLine: { show: false },
-				data: data,
-			},
-		],
-	};
-	state.global.homeChartTwo.setOption(option);
-	state.myCharts.push(state.global.homeChartTwo);
-};
-// 柱状图
-const initBarChart = () => {
-	if (!state.global.dispose.some((b: any) => b === state.global.homeCharThree)) state.global.homeCharThree.dispose();
-	state.global.homeCharThree = markRaw(echarts.init(homeBarRef.value, state.charts.theme));
-	const option = {
-		backgroundColor: state.charts.bgColor,
-		title: {
-			text: '地热开发利用',
-			x: 'left',
-			textStyle: { fontSize: '15', color: state.charts.color },
-		},
-		tooltip: { trigger: 'axis' },
-		legend: { data: ['供温', '回温', '压力值(Mpa)'], right: 0 },
-		grid: { top: 70, right: 80, bottom: 30, left: 80 },
-		xAxis: [
-			{
-				type: 'category',
-				data: ['1km', '2km', '3km', '4km', '5km', '6km'],
-				boundaryGap: true,
-				axisTick: { show: false },
-			},
-		],
-		yAxis: [
-			{
-				name: '供回温度(℃)',
-				nameLocation: 'middle',
-				nameTextStyle: { padding: [3, 4, 50, 6] },
-				splitLine: { show: true, lineStyle: { type: 'dashed', color: '#f5f5f5' } },
-				axisLine: { show: false },
-				axisTick: { show: false },
-				axisLabel: { color: state.charts.color, formatter: '{value} ' },
-			},
-			{
-				name: '压力值(Mpa)',
-				nameLocation: 'middle',
-				nameTextStyle: { padding: [50, 4, 5, 6] },
-				splitLine: { show: false },
-				axisLine: { show: false },
-				axisTick: { show: false },
-				axisLabel: { color: state.charts.color, formatter: '{value} ' },
-			},
-		],
-		series: [
-			{
-				name: '供温',
-				type: 'line',
-				smooth: true,
-				showSymbol: true,
-				// 矢量画五角星
-				symbol: 'path://M150 0 L80 175 L250 75 L50 75 L220 175 Z',
-				symbolSize: 12,
-				yAxisIndex: 0,
-				areaStyle: {
-					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-						{ offset: 0, color: 'rgba(250,180,101,0.3)' },
-						{ offset: 1, color: 'rgba(250,180,101,0)' },
-					]),
-					shadowColor: 'rgba(250,180,101,0.2)',
-					shadowBlur: 20,
-				},
-				itemStyle: { color: '#FF8000' },
-				// data中可以使用对象,value代表相应的值,另外可加入自定义的属性
-				data: [
-					{ value: 1, stationName: 's1' },
-					{ value: 3, stationName: 's2' },
-					{ value: 4, stationName: 's3' },
-					{ value: 9, stationName: 's4' },
-					{ value: 3, stationName: 's5' },
-					{ value: 2, stationName: 's6' },
-				],
-			},
-			{
-				name: '回温',
-				type: 'line',
-				smooth: true,
-				showSymbol: true,
-				symbol: 'emptyCircle',
-				symbolSize: 12,
-				yAxisIndex: 0,
-				areaStyle: {
-					color: new echarts.graphic.LinearGradient(
-						0,
-						0,
-						0,
-						1,
-						[
-							{ offset: 0, color: 'rgba(199, 237, 250,0.5)' },
-							{ offset: 1, color: 'rgba(199, 237, 250,0.2)' },
-						],
-						false
-					),
-				},
-				itemStyle: {
-					color: '#3bbc86',
-				},
-				data: [
-					{ value: 31, stationName: 's1' },
-					{ value: 36, stationName: 's2' },
-					{ value: 54, stationName: 's3' },
-					{ value: 24, stationName: 's4' },
-					{ value: 73, stationName: 's5' },
-					{ value: 22, stationName: 's6' },
-				],
-			},
-			{
-				name: '压力值(Mpa)',
-				type: 'bar',
-				barWidth: 30,
-				yAxisIndex: 1,
-				itemStyle: {
-					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
-						{ offset: 0, color: 'rgba(108,80,243,0.3)' },
-						{ offset: 1, color: 'rgba(108,80,243,0)' },
-					]),
-					//柱状图圆角
-					borderRadius: [30, 30, 0, 0],
-				},
-				data: [
-					{ value: 11, stationName: 's1' },
-					{ value: 34, stationName: 's2' },
-					{ value: 54, stationName: 's3' },
-					{ value: 39, stationName: 's4' },
-					{ value: 63, stationName: 's5' },
-					{ value: 24, stationName: 's6' },
-				],
-			},
-		],
-	};
-	state.global.homeCharThree.setOption(option);
-	state.myCharts.push(state.global.homeCharThree);
-};
-// 批量设置 echarts resize
-const initEchartsResizeFun = () => {
-	nextTick(() => {
-		for (let i = 0; i < state.myCharts.length; i++) {
-			setTimeout(() => {
-				state.myCharts[i].resize();
-			}, i * 1000);
-		}
-	});
-};
-// 批量设置 echarts resize
-const initEchartsResize = () => {
-	window.addEventListener('resize', initEchartsResizeFun);
-};
-// 页面加载时
-onMounted(() => {
-	initEchartsResize();
-});
-// 由于页面缓存原因,keep-alive
-onActivated(() => {
-	initEchartsResizeFun();
-});
-// 监听 pinia 中的 tagsview 开启全屏变化,重新 resize 图表,防止不出现/大小不变等
-watch(
-	() => isTagsViewCurrenFull.value,
-	() => {
-		initEchartsResizeFun();
-	}
-);
-// 监听 pinia 中是否开启深色主题
-watch(
-	() => themeConfig.value.isIsDark,
-	(isIsDark) => {
-		nextTick(() => {
-			state.charts.theme = isIsDark ? 'dark' : '';
-			state.charts.bgColor = isIsDark ? 'transparent' : '';
-			state.charts.color = isIsDark ? '#dadada' : '#303133';
-			setTimeout(() => {
-				initLineChart();
-			}, 500);
-			setTimeout(() => {
-				initPieChart();
-			}, 700);
-			setTimeout(() => {
-				initBarChart();
-			}, 1000);
-		});
-	},
-	{
-		deep: true,
-		immediate: true,
-	}
-);
+/** 切换明细tabs*/
+const handleClick=(tab: TabsPaneContext, event: Event)=>{
+    console.log(tab, event)
+}
 </script>
 
-<style scoped lang="scss">
+<style  lang="scss">
 $homeNavLengh: 8;
 .home-container {
 	overflow: hidden;
-	.home-card-one,
-	.home-card-two,
-	.home-card-three {
-		.home-card-item {
-			width: 100%;
-			height: 130px;
-			border-radius: 4px;
-			transition: all ease 0.3s;
-			padding: 20px;
-			overflow: hidden;
-			background: var(--el-color-white);
-			color: var(--el-text-color-primary);
-			border: 1px solid var(--next-border-color-light);
-			&:hover {
-				box-shadow: 0 2px 12px var(--next-color-dark-hover);
-				transition: all ease 0.3s;
-			}
-			&-icon {
-				width: 70px;
-				height: 70px;
-				border-radius: 100%;
-				flex-shrink: 1;
-				i {
-					color: var(--el-text-color-placeholder);
-				}
-			}
-			&-title {
-				font-size: 15px;
-				font-weight: bold;
-				height: 30px;
-			}
-		}
-	}
-	.home-card-one {
-		@for $i from 0 through 3 {
-			.home-one-animation#{$i} {
-				opacity: 0;
-				animation-name: error-num;
-				animation-duration: 0.5s;
-				animation-fill-mode: forwards;
-				animation-delay: calc($i/4) + s;
-			}
-		}
-	}
-	.home-card-two,
-	.home-card-three {
-		.home-card-item {
-			height: 400px;
-			width: 100%;
-			overflow: hidden;
-			.home-monitor {
-				height: 100%;
-				.flex-warp-item {
-					width: 25%;
-					height: 111px;
-					display: flex;
-					.flex-warp-item-box {
-						margin: auto;
-						text-align: center;
-						color: var(--el-text-color-primary);
-						display: flex;
-						border-radius: 5px;
-						background: var(--next-bg-color);
-						cursor: pointer;
-						transition: all 0.3s ease;
-						&:hover {
-							background: var(--el-color-primary-light-9);
-							transition: all 0.3s ease;
-						}
-					}
-					@for $i from 0 through $homeNavLengh {
-						.home-animation#{$i} {
-							opacity: 0;
-							animation-name: error-num;
-							animation-duration: 0.5s;
-							animation-fill-mode: forwards;
-							animation-delay: calc($i/10) + s;
-						}
-					}
-				}
-			}
-		}
-	}
+    .patTabel{
+        .el-table th.el-table__cell {
+            background-color: #6babfa; 
+            color:#606266;
+        }
+        .el-table__body tr.current-row>td.el-table__cell{
+            background: #E4F6DE;
+            color: #5FCD00;
+            /* height: 25px; */
+            /* border: tomato solid 1px; */
+         }
+    }
+	
 }
+.patTitle{
+    height: 25px;
+    font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
+    font-weight: 500;
+    font-size: 18px;
+    color: #333333;
+    line-height: 20px;
+    letter-spacing: 1px;
+    text-align: left;
+    font-style: normal;
+    // margin-top: -10px;
+}
+.home-title{
+    margin-bottom: 4px;
+    flex: 1;
+    height: inherit;
+    display: flex;
+    align-items: center;
+}
+.detailRight{
+    background-color: #ffffff;
+}
+
 </style>
+
diff --git a/src/views/home/index222.vue b/src/views/home/index222.vue
new file mode 100644
index 0000000..d351e1e
--- /dev/null
+++ b/src/views/home/index222.vue
@@ -0,0 +1,633 @@
+<template>
+	<div class="home-container layout-pd">
+		<el-row :gutter="15" class="home-card-one mb15">
+			<el-col
+				:xs="24"
+				:sm="12"
+				:md="12"
+				:lg="6"
+				:xl="6"
+				v-for="(v, k) in state.homeOne"
+				:key="k"
+				:class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }"
+			>
+				<div class="home-card-item flex">
+					<div class="flex-margin flex w100" :class="` home-one-animation${k}`">
+						<div class="flex-auto">
+							<span class="font30">{{ v.num1 }}</span>
+							<span class="ml5 font16" :style="{ color: v.color1 }">{{ v.num2 }}%</span>
+							<div class="mt10">{{ v.num3 }}</div>
+						</div>
+						<div class="home-card-item-icon flex" :style="{ background: `var(${v.color2})` }">
+							<i class="flex-margin font32" :class="v.num4" :style="{ color: `var(${v.color3})` }"></i>
+						</div>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<el-row :gutter="15" class="home-card-two mb15">
+			<el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16">
+				<div class="home-card-item">
+					<div style="height: 100%" ref="homeLineRef"></div>
+				</div>
+			</el-col>
+			<el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8" class="home-media">
+				<div class="home-card-item">
+					<div style="height: 100%" ref="homePieRef"></div>
+				</div>
+			</el-col>
+		</el-row>
+		<el-row :gutter="15" class="home-card-three">
+			<el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8">
+				<div class="home-card-item">
+					<div class="home-card-item-title">快捷导航工具</div>
+					<div class="home-monitor">
+						<div class="flex-warp">
+							<div class="flex-warp-item" v-for="(v, k) in state.homeThree" :key="k">
+								<div class="flex-warp-item-box" :class="`home-animation${k}`">
+									<div class="flex-margin">
+										<i :class="v.icon" :style="{ color: v.iconColor }"></i>
+										<span class="pl5">{{ v.label }}</span>
+										<div class="mt10">{{ v.value }}</div>
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</el-col>
+			<el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16" class="home-media">
+				<div class="home-card-item">
+					<div style="height: 100%" ref="homeBarRef"></div>
+				</div>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script setup lang="ts" name="home">
+import { reactive, onMounted, ref, watch, nextTick, onActivated, markRaw } from 'vue';
+import * as echarts from 'echarts';
+import { storeToRefs } from 'pinia';
+import { useThemeConfig } from '/@/stores/themeConfig';
+import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
+
+// 定义变量内容
+const homeLineRef = ref();
+const homePieRef = ref();
+const homeBarRef = ref();
+const storesTagsViewRoutes = useTagsViewRoutes();
+const storesThemeConfig = useThemeConfig();
+const { themeConfig } = storeToRefs(storesThemeConfig);
+const { isTagsViewCurrenFull } = storeToRefs(storesTagsViewRoutes);
+const state = reactive({
+	global: {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	} as any,
+	homeOne: [
+		{
+			num1: '125,12',
+			num2: '-12.32',
+			num3: '订单统计信息',
+			num4: 'fa fa-meetup',
+			color1: '#FF6462',
+			color2: '--next-color-primary-lighter',
+			color3: '--el-color-primary',
+		},
+		{
+			num1: '653,33',
+			num2: '+42.32',
+			num3: '月度计划信息',
+			num4: 'iconfont icon-ditu',
+			color1: '#6690F9',
+			color2: '--next-color-success-lighter',
+			color3: '--el-color-success',
+		},
+		{
+			num1: '125,65',
+			num2: '+17.32',
+			num3: '年度计划信息',
+			num4: 'iconfont icon-zaosheng',
+			color1: '#6690F9',
+			color2: '--next-color-warning-lighter',
+			color3: '--el-color-warning',
+		},
+		{
+			num1: '520,43',
+			num2: '-10.01',
+			num3: '访问统计信息',
+			num4: 'fa fa-github-alt',
+			color1: '#FF6462',
+			color2: '--next-color-danger-lighter',
+			color3: '--el-color-danger',
+		},
+	],
+	homeThree: [
+		{
+			icon: 'iconfont icon-yangan',
+			label: '浅粉红',
+			value: '2.1%OBS/M',
+			iconColor: '#F72B3F',
+		},
+		{
+			icon: 'iconfont icon-wendu',
+			label: '深红(猩红)',
+			value: '30℃',
+			iconColor: '#91BFF8',
+		},
+		{
+			icon: 'iconfont icon-shidu',
+			label: '淡紫红',
+			value: '57%RH',
+			iconColor: '#88D565',
+		},
+		{
+			icon: 'iconfont icon-shidu',
+			label: '弱紫罗兰红',
+			value: '107w',
+			iconColor: '#88D565',
+		},
+		{
+			icon: 'iconfont icon-zaosheng',
+			label: '中紫罗兰红',
+			value: '57DB',
+			iconColor: '#FBD4A0',
+		},
+		{
+			icon: 'iconfont icon-zaosheng',
+			label: '紫罗兰',
+			value: '57PV',
+			iconColor: '#FBD4A0',
+		},
+		{
+			icon: 'iconfont icon-zaosheng',
+			label: '暗紫罗兰',
+			value: '517Cpd',
+			iconColor: '#FBD4A0',
+		},
+		{
+			icon: 'iconfont icon-zaosheng',
+			label: '幽灵白',
+			value: '12kg',
+			iconColor: '#FBD4A0',
+		},
+		{
+			icon: 'iconfont icon-zaosheng',
+			label: '海军蓝',
+			value: '64fm',
+			iconColor: '#FBD4A0',
+		},
+	],
+	myCharts: [] as EmptyArrayType,
+	charts: {
+		theme: '',
+		bgColor: '',
+		color: '#303133',
+	},
+});
+
+// 折线图
+const initLineChart = () => {
+	if (!state.global.dispose.some((b: any) => b === state.global.homeChartOne)) state.global.homeChartOne.dispose();
+	state.global.homeChartOne = markRaw(echarts.init(homeLineRef.value, state.charts.theme));
+	const option = {
+		backgroundColor: state.charts.bgColor,
+		title: {
+			text: '政策补贴额度',
+			x: 'left',
+			textStyle: { fontSize: '15', color: state.charts.color },
+		},
+		grid: { top: 70, right: 20, bottom: 30, left: 30 },
+		tooltip: { trigger: 'axis' },
+		legend: { data: ['预购队列', '最新成交价'], right: 0 },
+		xAxis: {
+			data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+		},
+		yAxis: [
+			{
+				type: 'value',
+				name: '价格',
+				splitLine: { show: true, lineStyle: { type: 'dashed', color: '#f5f5f5' } },
+			},
+		],
+		series: [
+			{
+				name: '预购队列',
+				type: 'line',
+				symbolSize: 6,
+				symbol: 'circle',
+				smooth: true,
+				data: [0, 41.1, 30.4, 65.1, 53.3, 53.3, 53.3, 41.1, 30.4, 65.1, 53.3, 10],
+				lineStyle: { color: '#fe9a8b' },
+				itemStyle: { color: '#fe9a8b', borderColor: '#fe9a8b' },
+				areaStyle: {
+					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+						{ offset: 0, color: '#fe9a8bb3' },
+						{ offset: 1, color: '#fe9a8b03' },
+					]),
+				},
+			},
+			{
+				name: '最新成交价',
+				type: 'line',
+				symbolSize: 6,
+				symbol: 'circle',
+				smooth: true,
+				data: [0, 24.1, 7.2, 15.5, 42.4, 42.4, 42.4, 24.1, 7.2, 15.5, 42.4, 0],
+				lineStyle: { color: '#9E87FF' },
+				itemStyle: { color: '#9E87FF', borderColor: '#9E87FF' },
+				areaStyle: {
+					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+						{ offset: 0, color: '#9E87FFb3' },
+						{ offset: 1, color: '#9E87FF03' },
+					]),
+				},
+				emphasis: {
+					itemStyle: {
+						color: {
+							type: 'radial',
+							x: 0.5,
+							y: 0.5,
+							r: 0.5,
+							colorStops: [
+								{ offset: 0, color: '#9E87FF' },
+								{ offset: 0.4, color: '#9E87FF' },
+								{ offset: 0.5, color: '#fff' },
+								{ offset: 0.7, color: '#fff' },
+								{ offset: 0.8, color: '#fff' },
+								{ offset: 1, color: '#fff' },
+							],
+						},
+						borderColor: '#9E87FF',
+						borderWidth: 2,
+					},
+				},
+			},
+		],
+	};
+	state.global.homeChartOne.setOption(option);
+	state.myCharts.push(state.global.homeChartOne);
+};
+// 饼图
+const initPieChart = () => {
+	if (!state.global.dispose.some((b: any) => b === state.global.homeChartTwo)) state.global.homeChartTwo.dispose();
+	state.global.homeChartTwo = markRaw(echarts.init(homePieRef.value, state.charts.theme));
+	var getname = ['房屋及结构物', '专用设备', '通用设备', '文物和陈列品', '图书、档案'];
+	var getvalue = [34.2, 38.87, 17.88, 9.05, 2.05];
+	var data = [];
+	for (var i = 0; i < getname.length; i++) {
+		data.push({ name: getname[i], value: getvalue[i] });
+	}
+	const colorList = ['#51A3FC', '#36C78B', '#FEC279', '#968AF5', '#E790E8'];
+	const option = {
+		backgroundColor: state.charts.bgColor,
+		title: {
+			text: '房屋建筑工程',
+			x: 'left',
+			textStyle: { fontSize: '15', color: state.charts.color },
+		},
+		tooltip: { trigger: 'item', formatter: '{b} <br/> {c}%' },
+		graphic: {
+			elements: [
+				{
+					type: 'image',
+					z: -1,
+					style: {
+						image: themeConfig.value.isIsDark
+							? ''
+							: 'data:image/png;base64,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',
+						width: 230,
+						height: 230,
+					},
+					left: '16.5%',
+					top: 'center',
+				},
+			],
+		},
+		legend: {
+			type: 'scroll',
+			orient: 'vertical',
+			right: '0%',
+			left: '65%',
+			top: 'center',
+			itemWidth: 14,
+			itemHeight: 14,
+			data: getname,
+			textStyle: {
+				rich: {
+					name: {
+						fontSize: 14,
+						fontWeight: 400,
+						width: 200,
+						height: 35,
+						padding: [0, 0, 0, 60],
+						color: state.charts.color,
+					},
+					rate: {
+						fontSize: 15,
+						fontWeight: 500,
+						height: 35,
+						width: 40,
+						padding: [0, 0, 0, 30],
+						color: state.charts.color,
+					},
+				},
+			},
+		},
+		series: [
+			{
+				type: 'pie',
+				radius: ['82', themeConfig.value.isIsDark ? '50' : '102'],
+				center: ['32%', '50%'],
+				itemStyle: {
+					color: function (params: any) {
+						return colorList[params.dataIndex];
+					},
+				},
+				label: { show: false },
+				labelLine: { show: false },
+				data: data,
+			},
+		],
+	};
+	state.global.homeChartTwo.setOption(option);
+	state.myCharts.push(state.global.homeChartTwo);
+};
+// 柱状图
+const initBarChart = () => {
+	if (!state.global.dispose.some((b: any) => b === state.global.homeCharThree)) state.global.homeCharThree.dispose();
+	state.global.homeCharThree = markRaw(echarts.init(homeBarRef.value, state.charts.theme));
+	const option = {
+		backgroundColor: state.charts.bgColor,
+		title: {
+			text: '地热开发利用',
+			x: 'left',
+			textStyle: { fontSize: '15', color: state.charts.color },
+		},
+		tooltip: { trigger: 'axis' },
+		legend: { data: ['供温', '回温', '压力值(Mpa)'], right: 0 },
+		grid: { top: 70, right: 80, bottom: 30, left: 80 },
+		xAxis: [
+			{
+				type: 'category',
+				data: ['1km', '2km', '3km', '4km', '5km', '6km'],
+				boundaryGap: true,
+				axisTick: { show: false },
+			},
+		],
+		yAxis: [
+			{
+				name: '供回温度(℃)',
+				nameLocation: 'middle',
+				nameTextStyle: { padding: [3, 4, 50, 6] },
+				splitLine: { show: true, lineStyle: { type: 'dashed', color: '#f5f5f5' } },
+				axisLine: { show: false },
+				axisTick: { show: false },
+				axisLabel: { color: state.charts.color, formatter: '{value} ' },
+			},
+			{
+				name: '压力值(Mpa)',
+				nameLocation: 'middle',
+				nameTextStyle: { padding: [50, 4, 5, 6] },
+				splitLine: { show: false },
+				axisLine: { show: false },
+				axisTick: { show: false },
+				axisLabel: { color: state.charts.color, formatter: '{value} ' },
+			},
+		],
+		series: [
+			{
+				name: '供温',
+				type: 'line',
+				smooth: true,
+				showSymbol: true,
+				// 矢量画五角星
+				symbol: 'path://M150 0 L80 175 L250 75 L50 75 L220 175 Z',
+				symbolSize: 12,
+				yAxisIndex: 0,
+				areaStyle: {
+					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+						{ offset: 0, color: 'rgba(250,180,101,0.3)' },
+						{ offset: 1, color: 'rgba(250,180,101,0)' },
+					]),
+					shadowColor: 'rgba(250,180,101,0.2)',
+					shadowBlur: 20,
+				},
+				itemStyle: { color: '#FF8000' },
+				// data中可以使用对象,value代表相应的值,另外可加入自定义的属性
+				data: [
+					{ value: 1, stationName: 's1' },
+					{ value: 3, stationName: 's2' },
+					{ value: 4, stationName: 's3' },
+					{ value: 9, stationName: 's4' },
+					{ value: 3, stationName: 's5' },
+					{ value: 2, stationName: 's6' },
+				],
+			},
+			{
+				name: '回温',
+				type: 'line',
+				smooth: true,
+				showSymbol: true,
+				symbol: 'emptyCircle',
+				symbolSize: 12,
+				yAxisIndex: 0,
+				areaStyle: {
+					color: new echarts.graphic.LinearGradient(
+						0,
+						0,
+						0,
+						1,
+						[
+							{ offset: 0, color: 'rgba(199, 237, 250,0.5)' },
+							{ offset: 1, color: 'rgba(199, 237, 250,0.2)' },
+						],
+						false
+					),
+				},
+				itemStyle: {
+					color: '#3bbc86',
+				},
+				data: [
+					{ value: 31, stationName: 's1' },
+					{ value: 36, stationName: 's2' },
+					{ value: 54, stationName: 's3' },
+					{ value: 24, stationName: 's4' },
+					{ value: 73, stationName: 's5' },
+					{ value: 22, stationName: 's6' },
+				],
+			},
+			{
+				name: '压力值(Mpa)',
+				type: 'bar',
+				barWidth: 30,
+				yAxisIndex: 1,
+				itemStyle: {
+					color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+						{ offset: 0, color: 'rgba(108,80,243,0.3)' },
+						{ offset: 1, color: 'rgba(108,80,243,0)' },
+					]),
+					//柱状图圆角
+					borderRadius: [30, 30, 0, 0],
+				},
+				data: [
+					{ value: 11, stationName: 's1' },
+					{ value: 34, stationName: 's2' },
+					{ value: 54, stationName: 's3' },
+					{ value: 39, stationName: 's4' },
+					{ value: 63, stationName: 's5' },
+					{ value: 24, stationName: 's6' },
+				],
+			},
+		],
+	};
+	state.global.homeCharThree.setOption(option);
+	state.myCharts.push(state.global.homeCharThree);
+};
+// 批量设置 echarts resize
+const initEchartsResizeFun = () => {
+	nextTick(() => {
+		for (let i = 0; i < state.myCharts.length; i++) {
+			setTimeout(() => {
+				state.myCharts[i].resize();
+			}, i * 1000);
+		}
+	});
+};
+// 批量设置 echarts resize
+const initEchartsResize = () => {
+	window.addEventListener('resize', initEchartsResizeFun);
+};
+// 页面加载时
+onMounted(() => {
+	initEchartsResize();
+});
+// 由于页面缓存原因,keep-alive
+onActivated(() => {
+	initEchartsResizeFun();
+});
+// 监听 pinia 中的 tagsview 开启全屏变化,重新 resize 图表,防止不出现/大小不变等
+watch(
+	() => isTagsViewCurrenFull.value,
+	() => {
+		initEchartsResizeFun();
+	}
+);
+// 监听 pinia 中是否开启深色主题
+watch(
+	() => themeConfig.value.isIsDark,
+	(isIsDark) => {
+		nextTick(() => {
+			state.charts.theme = isIsDark ? 'dark' : '';
+			state.charts.bgColor = isIsDark ? 'transparent' : '';
+			state.charts.color = isIsDark ? '#dadada' : '#303133';
+			setTimeout(() => {
+				initLineChart();
+			}, 500);
+			setTimeout(() => {
+				initPieChart();
+			}, 700);
+			setTimeout(() => {
+				initBarChart();
+			}, 1000);
+		});
+	},
+	{
+		deep: true,
+		immediate: true,
+	}
+);
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+.home-container {
+	overflow: hidden;
+	.home-card-one,
+	.home-card-two,
+	.home-card-three {
+		.home-card-item {
+			width: 100%;
+			height: 130px;
+			border-radius: 4px;
+			transition: all ease 0.3s;
+			padding: 20px;
+			overflow: hidden;
+			background: var(--el-color-white);
+			color: var(--el-text-color-primary);
+			border: 1px solid var(--next-border-color-light);
+			&:hover {
+				box-shadow: 0 2px 12px var(--next-color-dark-hover);
+				transition: all ease 0.3s;
+			}
+			&-icon {
+				width: 70px;
+				height: 70px;
+				border-radius: 100%;
+				flex-shrink: 1;
+				i {
+					color: var(--el-text-color-placeholder);
+				}
+			}
+			&-title {
+				font-size: 15px;
+				font-weight: bold;
+				height: 30px;
+			}
+		}
+	}
+	.home-card-one {
+		@for $i from 0 through 3 {
+			.home-one-animation#{$i} {
+				opacity: 0;
+				animation-name: error-num;
+				animation-duration: 0.5s;
+				animation-fill-mode: forwards;
+				animation-delay: calc($i/4) + s;
+			}
+		}
+	}
+	.home-card-two,
+	.home-card-three {
+		.home-card-item {
+			height: 400px;
+			width: 100%;
+			overflow: hidden;
+			.home-monitor {
+				height: 100%;
+				.flex-warp-item {
+					width: 25%;
+					height: 111px;
+					display: flex;
+					.flex-warp-item-box {
+						margin: auto;
+						text-align: center;
+						color: var(--el-text-color-primary);
+						display: flex;
+						border-radius: 5px;
+						background: var(--next-bg-color);
+						cursor: pointer;
+						transition: all 0.3s ease;
+						&:hover {
+							background: var(--el-color-primary-light-9);
+							transition: all 0.3s ease;
+						}
+					}
+					@for $i from 0 through $homeNavLengh {
+						.home-animation#{$i} {
+							opacity: 0;
+							animation-name: error-num;
+							animation-duration: 0.5s;
+							animation-fill-mode: forwards;
+							animation-delay: calc($i/10) + s;
+						}
+					}
+				}
+			}
+		}
+	}
+}
+</style>
diff --git a/src/views/login/component/account.vue b/src/views/login/component/account.vue
index a646f5a..03b0338 100644
--- a/src/views/login/component/account.vue
+++ b/src/views/login/component/account.vue
@@ -27,7 +27,7 @@
 				</template>
 			</el-input>
 		</el-form-item>
-		<el-form-item class="login-animation3">
+		<!-- <el-form-item class="login-animation3">
 			<el-col :span="15">
 				<el-input
 					text
@@ -46,7 +46,7 @@
 			<el-col :span="8">
 				<el-button class="login-content-code" v-waves>1234</el-button>
 			</el-col>
-		</el-form-item>
+		</el-form-item> -->
 		<el-form-item class="login-animation4">
 			<el-button type="primary" class="login-content-submit" round v-waves @click="onSignIn" :loading="state.loading.signIn">
 				<span>{{ $t('message.account.accountBtnText') }}</span>
@@ -68,6 +68,8 @@
 import { Session } from '/@/utils/storage';
 import { formatAxis } from '/@/utils/formatTime';
 import { NextLoading } from '/@/utils/loading';
+import { signIn } from '/@/api/login';
+import { error } from 'console';
 
 // 定义变量内容
 const { t } = useI18n();
@@ -93,22 +95,40 @@
 });
 // 登录
 const onSignIn = async () => {
-	state.loading.signIn = true;
-	// 存储 token 到浏览器缓存
-	Session.set('token', Math.random().toString(36).substr(0));
-	// 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
-	Cookies.set('userName', state.ruleForm.userName);
-	if (!themeConfig.value.isRequestRoutes) {
-		// 前端控制路由,2、请注意执行顺序
-		const isNoPower = await initFrontEndControlRoutes();
-		signInSuccess(isNoPower);
-	} else {
-		// 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由
-		// 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path "/"
-		const isNoPower = await initBackEndControlRoutes();
-		// 执行完 initBackEndControlRoutes,再执行 signInSuccess
-		signInSuccess(isNoPower);
+	try{
+		state.loading.signIn = true;
+    	const signInRes = await signIn(`user_no=${state.ruleForm.userName}&user_password=${state.ruleForm.password}`)
+		if(signInRes.data){
+			// 存储 token 到浏览器缓存
+			Session.set('token', signInRes.data);
+			// 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
+			Cookies.set('userName', state.ruleForm.userName);
+			// 前端控制路由,2、请注意执行顺序
+			const isNoPower = await initFrontEndControlRoutes();
+			signInSuccess(isNoPower);
+
+		}
+	}catch(err){
+		console.log(err)
+		state.loading.signIn = false
 	}
+	
+
+	// 存储 token 到浏览器缓存
+	// Session.set('token', '999');
+	// 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
+	// Cookies.set('userName', state.ruleForm.userName);
+	// if (!themeConfig.value.isRequestRoutes) {
+	// 	// 前端控制路由,2、请注意执行顺序
+	// 	const isNoPower = await initFrontEndControlRoutes();
+	// 	signInSuccess(isNoPower);
+	// } else {
+	// 	// 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由
+	// 	// 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path "/"
+	// 	const isNoPower = await initBackEndControlRoutes();
+	// 	// 执行完 initBackEndControlRoutes,再执行 signInSuccess
+	// 	signInSuccess(isNoPower);
+	// }
 };
 // 登录成功后的跳转
 const signInSuccess = (isNoPower: boolean | undefined) => {

--
Gitblit v1.8.0