Quellcode durchsuchen

首页接口对接

like vor 6 Monaten
Ursprung
Commit
7306902992

+ 10 - 0
snowy-admin-web/src/api/basicset/homeApi.js

@@ -0,0 +1,10 @@
+import { baseRequest } from '@/utils/request'
+
+const request = (url, ...arg) => baseRequest(`/coldchain/monitordevice/` + url, ...arg)
+
+// 首页中的数据统计
+export default {
+	monitorDeviceCount(data) {
+		return request('getIndexCount', data, 'get')
+	}
+}

+ 5 - 0
snowy-admin-web/src/api/coldchain/monitornotice.js

@@ -27,6 +27,11 @@ export const addMonitornotice = (data) => {
 	return request('add', data)
 }
 
+/** 获取监控通知列表不分页 */
+export const getList = (data) => {
+	return request('list', data, 'get')
+}
+
 export default {
 	getPage,
 	getDetail,

BIN
snowy-admin-web/src/assets/images/home/06.png


BIN
snowy-admin-web/src/assets/images/home/08.png


BIN
snowy-admin-web/src/assets/images/home/09.png


+ 35 - 18
snowy-admin-web/src/components/HomeCard/SysCountCard/index.vue

@@ -2,8 +2,8 @@
 	<div class="home_count">
 		<div class="ant-card-body">
 			<div class="card-left">
-				<div class="left-title">监控点总数</div>
-				<div class="left-count">{{ dataSource.jkdzs }}</div>
+				<div class="left-title">监测器总数</div>
+				<div class="left-count">{{ data.deviceCount || 0 }}</div>
 			</div>
 			<div class="card-right">
 				<img src="/src/assets/images/home/01.png" class="right-img" />
@@ -12,7 +12,7 @@
 		<div class="ant-card-body">
 			<div class="card-left">
 				<div class="left-title">正常</div>
-				<div class="left-count">{{ dataSource.zc }}</div>
+				<div class="left-count">{{ data.onlineDeviceCount || 0 }}</div>
 			</div>
 			<div class="card-right">
 				<img src="/src/assets/images/home/02.png" class="right-img" />
@@ -21,8 +21,17 @@
 
 		<div class="ant-card-body">
 			<div class="card-left">
-				<div class="left-title">断线</div>
-				<div class="left-count">{{ dataSource.dx }}</div>
+				<div class="left-title">离线</div>
+				<div class="left-count">{{ data.offlineDeviceCount || 0 }}</div>
+			</div>
+			<div class="card-right">
+				<img src="/src/assets/images/home/03.png" class="right-img" />
+			</div>
+		</div>
+		<div class="ant-card-body">
+			<div class="card-left">
+				<div class="left-title">总路数</div>
+				<div class="left-count">{{ data.sensorCount || 0 }}</div>
 			</div>
 			<div class="card-right">
 				<img src="/src/assets/images/home/04.png" class="right-img" />
@@ -30,30 +39,38 @@
 		</div>
 		<div class="ant-card-body">
 			<div class="card-left">
-				<div class="left-title">未绑定</div>
-				<div class="left-count">{{ dataSource.xzwx }}</div>
+				<div class="left-title">已使用路数</div>
+				<div class="left-count">{{ data.usedSensorCount || 0 }}</div>
 			</div>
 			<div class="card-right">
 				<img src="/src/assets/images/home/05.png" class="right-img" />
 			</div>
 		</div>
+		<div class="ant-card-body">
+			<div class="card-left">
+				<div class="left-title">未使用路数</div>
+				<div class="left-count">{{ data.unusedSensorCount || 0 }}</div>
+			</div>
+			<div class="card-right">
+				<img src="/src/assets/images/home/06.png" class="right-img" />
+			</div>
+		</div>
 	</div>
 </template>
 
 <script setup name="SysCountCard">
-	import indexApi from '@/api/sys/indexApi'
+	import homeApi from '@/api/basicset/homeApi'
 
-	const apiLoading = ref(false)
-	const dataSource = ref({
-		jkdzs: 673,
-		zc: 136,
-		cx: 351,
-		dx: 94,
-		xzwx: 92
-	})
+	const data = ref({})
 	onMounted(() => {
-		apiLoading.value = true
+		loadData()
 	})
+
+	const loadData = () => {
+		homeApi.monitorDeviceCount().then((res) => {
+			data.value = res
+		})
+	}
 </script>
 
 <style lang="less" scoped>
@@ -64,7 +81,7 @@
 		justify-content: space-between;
 
 		.ant-card-body {
-			flex: 0 0 calc(25% - 10px);
+			flex: 0 0 calc(16.6% - 10px);
 			width: 100%;
 			height: 150px;
 			margin-bottom: 10px;

+ 3 - 3
snowy-admin-web/src/components/HomeCard/SysTrendCard/index.vue

@@ -4,7 +4,7 @@
 	<div class="home_count">
 		<div class="ant-card-body">
 			<div class="card-left">
-				<img src="/src/assets/images/home/06.png" class="right-img" />
+				<img src="/src/assets/images/home/07.png" class="right-img" />
 				<div class="left-title">前天</div>
 			</div>
 			<div class="card-right">
@@ -13,7 +13,7 @@
 		</div>
 		<div class="ant-card-body">
 			<div class="card-left">
-				<img src="/src/assets/images/home/07.png" class="right-img" />
+				<img src="/src/assets/images/home/08.png" class="right-img" />
 				<div class="left-title">昨天</div>
 			</div>
 			<div class="card-right">
@@ -22,7 +22,7 @@
 		</div>
 		<div class="ant-card-body">
 			<div class="card-left">
-				<img src="/src/assets/images/home/08.png" class="right-img" />
+				<img src="/src/assets/images/home/09.png" class="right-img" />
 				<div class="left-title">今天</div>
 			</div>
 			<div class="card-right">

+ 76 - 69
snowy-admin-web/src/components/HomeCard/SysWarningCard/index.vue

@@ -1,119 +1,126 @@
 <template>
 	<div class="home_count">
 		<div class="warning-title">
-			<div>报警管理</div>
+			<div>通知列表</div>
 			<a-button type="link" @click="leaveFor('/motoring/report')">更多</a-button>
 		</div>
-		<a-table :columns="columns" :data-source="dataSource" size="small" :pagination="false" :scroll="{ y: 260 }">
+		<a-table
+			:columns="columns"
+			:data-source="dataSource"
+			size="small"
+			:pagination="false"
+			:scroll="{ y: 260 }"
+			:loading="loading"
+		>
 			<template #bodyCell="{ column, record }">
-				<template v-if="column.dataIndex === 'state'">
-					<span>
-						<a-tag :color="record.state == '1' ? '#87d068' : record.state == '2' ? '#cd201f' : '#50cd7c'">
-							{{ record.stateVlaue }}
-						</a-tag>
-					</span>
-				</template>
 				<template v-if="column.dataIndex === 'action'">
-					<a-button type="link" size="small">编辑</a-button>
+					<a-button type="link" size="small" @click="handlerEdit(record)">编辑</a-button>
 					<a-divider type="vertical" />
 					<a-popconfirm title="删除此数据?" @confirm="deleteData(record)">
 						<a-button type="link" danger size="small">删除</a-button>
 					</a-popconfirm>
 					<a-divider type="vertical" />
-					<a-button type="link" size="small">记录</a-button>
 				</template>
 			</template>
 		</a-table>
+
+		<DetailModal ref="detailModalRef" @successful="loadData" />
 	</div>
 </template>
 
 <script setup name="SysWarningCard">
-	import bizIndexApi from '@/api/biz/bizIndexApi'
+	import { debounce } from 'lodash-es'
+	import DetailModal from '@/views/motoring/report/components/DetailModal.vue'
+	import { getList, deleteMonitornotice } from '@/api/coldchain/monitornotice'
 	import router from '@/router'
 	const columns = [
 		{
-			title: '时间',
-			dataIndex: 'createTime',
-			ellipsis: true
-		},
-		{
-			title: '名称',
+			title: '通知标题',
 			dataIndex: 'title',
+			align: 'center',
 			ellipsis: true
 		},
 		{
-			title: '报警原因',
-			dataIndex: 'reason',
-			ellipsis: true
+			title: '通知类型',
+			dataIndex: 'type',
+			align: 'center',
+			ellipsis: true,
+			customRender({ value }) {
+				return value == '1' ? '系统' : '预警'
+			}
 		},
 		{
-			title: '状态',
-			dataIndex: 'state',
+			title: '通知内容',
+			dataIndex: 'content',
+			align: 'center',
 			ellipsis: true
 		},
 		{
-			title: '操作',
-			dataIndex: 'action',
+			title: '传感器路数',
+			dataIndex: 'sensorRoute',
 			align: 'center',
-			width: '200px'
-		}
-	]
-	const dataSource = ref([
-		{
-			createTime: '2024-09-28 07:03:24',
-			title: 'ABSL-1超低温冰箱',
-			reason: '温度异常',
-			state: '1',
-			stateVlaue: '异常'
-		},
-		{
-			createTime: '2024-09-28 09:21:51',
-			title: 'ABSL-2超低温冰箱',
-			reason: '温度异常',
-			state: '1',
-			stateVlaue: '异常'
-		},
-		{
-			createTime: '2024-09-28 11:06:20',
-			title: 'ABSL-3超低温冰箱',
-			reason: '温度异常',
-			state: '1',
-			stateVlaue: '异常'
+			ellipsis: true
 		},
 		{
-			createTime: '2024-09-28 11:54:19',
-			title: 'ABSL-4超低温冰箱',
-			reason: '温度异常',
-			state: '1',
-			stateVlaue: '异常'
+			title: '创建人',
+			dataIndex: 'createUserName',
+			align: 'center',
+			ellipsis: true
 		},
 		{
-			createTime: '2024-09-28 16:17:36',
-			title: 'ABSL-5超低温冰箱',
-			reason: '温度异常',
-			state: '1',
-			stateVlaue: '异常'
+			title: '创建时间',
+			dataIndex: 'createTime',
+			align: 'center',
+			ellipsis: true
 		},
 		{
-			createTime: '2024-09-28 19:35:58',
-			title: 'ABSL-6超低温冰箱',
-			reason: '温度异常',
-			state: '1',
-			stateVlaue: '异常'
+			title: '操作',
+			dataIndex: 'action',
+			align: 'center'
 		}
-	])
-	const apiLoading = ref(false)
-	onMounted(() => {})
-	const leaveFor = (url = '/') => {
+	]
+	const dataSource = ref([])
+	const loading = ref(false)
+	onMounted(() => {
+		loadData()
+	})
+	const leaveFor = (url) => {
 		router.replace({
 			path: url
 		})
 	}
 
+	const loadData = () => {
+		loading.value = true
+		return getList()
+			.then((res) => {
+				dataSource.value = res
+				loading.value = false
+			})
+			.catch((e) => {
+				loading.value = false
+			})
+	}
+
 	// 删除
 	const deleteData = (record) => {
-		console.log(record.title, 'params')
+		if (loading.value) return
+		loading.value = true
+
+		deleteMonitornotice({ id: record.id })
+			.then(() => {
+				loading.value = false
+				loadData()
+			})
+			.catch(() => {
+				loading.value = false
+			})
 	}
+	const detailModalRef = ref()
+	/** 编辑 */
+	const handlerEdit = debounce((rowItem) => {
+		detailModalRef.value.open(rowItem, 'edit')
+	}, 300)
 </script>
 
 <style lang="less" scoped>