like před 6 měsíci
rodič
revize
03ee729543

+ 114 - 0
snowy-admin-web/src/views/basicset/monitor/form.vue

@@ -0,0 +1,114 @@
+<template>
+	<xn-form-container
+		:title="formData.id ? '编辑监控对象' : '新增监控对象'"
+		:width="'500px'"
+		:visible="visible"
+		:destroy-on-close="true"
+		@close="onClose"
+	>
+		<a-form
+			ref="formRef"
+			:model="formData"
+			:rules="formRules"
+			layout="inline"
+			:label-col="{ style: { width: '100px', justifyContent: 'end' } }"
+		>
+			<a-form-item label="对象名称" name="name">
+				<a-input v-model:value="formData.name" placeholder="请输入对象名称" allow-clear />
+			</a-form-item>
+			<a-form-item label="对象状态" name="status">
+				<a-select ref="select" v-model:value="formData.status" placeholder="请选择对象状态">
+					<a-select-option value="1">正常</a-select-option>
+					<a-select-option value="2">停用</a-select-option>
+				</a-select>
+			</a-form-item>
+			<a-form-item label="监控位置区域">
+				<a-input v-model:value="formData.monitorPoint" placeholder="请输入监控位置区域" allow-clear />
+			</a-form-item>
+			<a-form-item label="报警上限℃">
+				<a-input-number
+					id="inputNumber"
+					v-model:value="formData.limitUp"
+					placeholder="请输入报警上限"
+					allow-clear
+					style="width: 100%"
+				/>
+			</a-form-item>
+			<a-form-item label="报警下限℃">
+				<a-input-number
+					id="inputNumber"
+					v-model:value="formData.limitDown"
+					placeholder="请输入报警下限"
+					allow-clear
+					style="width: 100%"
+				/>
+			</a-form-item>
+		</a-form>
+
+		<template #footer>
+			<a-button class="xn-mr8" @click="onClose">退出</a-button>
+			<a-button type="primary" @click="onSubmit">保存</a-button>
+		</template>
+	</xn-form-container>
+</template>
+
+<script setup>
+	import { required } from '@/utils/formRules'
+	import setupApi from '@/api/basicset/setupApi'
+
+	// 默认是关闭状态
+	const visible = ref(false)
+	const emit = defineEmits({ successful: null })
+	const formRef = ref()
+
+	// 默认要校验的
+	const formRules = {
+		name: [required('请输入对象名称')],
+		status: [required('请选择对象状态')]
+	}
+
+	// 表单数据
+	const formData = ref({})
+
+	// 打开抽屉
+	const onOpen = (record) => {
+		visible.value = true
+		if (record) {
+			formData.value = Object.assign({}, record)
+		} else {
+			formData.value = {}
+		}
+	}
+	// 关闭抽屉
+	const onClose = () => {
+		formRef.value.resetFields()
+		visible.value = false
+	}
+
+	// 验证并提交数据
+	const onSubmit = () => {
+		formRef.value
+			.validate()
+			.then(() => {
+				setupApi.submitForm(formData.value, formData.value.id).then(() => {
+					onClose()
+					emit('successful')
+				})
+			})
+			.catch((error) => {
+				console.log(error)
+			})
+	}
+
+	// 调用这个函数将子组件的一些数据和方法暴露出去
+	defineExpose({
+		onOpen
+	})
+</script>
+
+<style lang="less" scoped>
+	:deep(.ant-form-item) {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+</style>

+ 73 - 0
snowy-admin-web/src/views/basicset/monitor/index.vue

@@ -0,0 +1,73 @@
+<template>
+	<div class="query-box">
+		<div class="query-head">
+			<div class="query-tbas">
+				<div class="tbas-title" :class="activeKey == '1' ? 'active' : ''" @click="activeclick('1')">对象设置</div>
+				<a-divider type="vertical" style="height: 15px; background-color: #f4f5f7; margin: 8px 20px" />
+				<div class="tbas-title" :class="activeKey == '2' ? 'active' : ''" @click="activeclick('2')">维修记录</div>
+				<a-divider type="vertical" style="height: 15px; background-color: #f4f5f7; margin: 8px 20px" />
+				<div class="tbas-title" :class="activeKey == '3' ? 'active' : ''" @click="activeclick('3')">报废记录</div>
+			</div>
+		</div>
+
+		<div class="query-body">
+			<Setup ref="setupRef" v-if="activeKey == '1'" />
+			<Upkeep ref="upkeepRef" v-if="activeKey == '2'" />
+			<Scrap ref="scraplRef" v-if="activeKey == '3'" />
+		</div>
+	</div>
+</template>
+<script setup>
+	import Setup from './setup.vue'
+	import Upkeep from './upkeep.vue'
+	import Scrap from './scrap.vue'
+
+	const activeKey = ref('1')
+	const setupRef = ref(null)
+	const upkeepRef = ref(null)
+	const scraplRef = ref(null)
+
+	onMounted(() => {})
+
+	onBeforeMount(() => {})
+
+	// 点击标签
+	const activeclick = (v) => {
+		activeKey.value = v
+	}
+</script>
+<style lang="less" scoped>
+	.query-box {
+		width: 100%;
+
+		background-color: #fff;
+
+		// 顶部
+		.query-head {
+			width: 100%;
+			height: 50px;
+			display: flex;
+			justify-content: space-between;
+			padding: 15px;
+			border-bottom: 1px solid #e7e7e7;
+
+			.query-tbas {
+				width: 95%;
+				display: flex;
+
+				.tbas-title {
+					height: 35px;
+					line-height: 25px;
+					color: #a7a7a7;
+					font-size: 16px;
+					cursor: pointer;
+				}
+
+				.active {
+					color: #1b8fff;
+					border-bottom: 2px solid #1b8fff;
+				}
+			}
+		}
+	}
+</style>

+ 284 - 0
snowy-admin-web/src/views/basicset/monitor/scrap.vue

@@ -0,0 +1,284 @@
+<template>
+	<div class="table_item">
+		<s-table ref="tableRef" :columns="columns" :data="loadData" :row-key="(record) => record.code">
+			<template #operator>
+				<!-- 搜索区域 -->
+				<div class="table-search">
+					<div class="table-search-form">
+						<a-row :gutter="10">
+							<a-form
+								ref="searchFormRef"
+								name="advanced_search"
+								layout="inline"
+								:label-col="{ style: { width: '70px', justifyContent: 'end' } }"
+								:model="searchFormState"
+								class="ant-advanced-search-form"
+							>
+								<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"
+									><a-form-item label="对象编号" name="dxcode">
+										<a-input v-model:value="searchFormState.dxcode" placeholder="请输入对象编号" /> </a-form-item
+								></a-col>
+								<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"
+									><a-form-item label="对象名称" name="name">
+										<a-input v-model:value="searchFormState.name" placeholder="请输入对象名称" /> </a-form-item
+								></a-col>
+							</a-form>
+						</a-row>
+					</div>
+					<div class="table-search-buttons">
+						<a-button type="primary" @click="tableRef.refresh(true)">查询</a-button>
+						<a-button class="xn-mg08" @click="reset">重置</a-button>
+					</div>
+				</div>
+
+				<!-- 其他操作区域 -->
+				<div class="table-head-btn">
+					<div class="btn-left">
+						<a-button type="primary">
+							<template #icon><plus-outlined /></template>新增
+						</a-button>
+					</div>
+					<div class="btn-right">
+						<a-button>
+							<template #icon><download-outlined /></template>导出
+						</a-button>
+					</div>
+				</div>
+			</template>
+			<template #bodyCell="{ column, record }">
+				<template v-if="column.dataIndex === 'sfxf'">
+					<span>
+						<a-tag :color="record.sfxf == '1' ? '#87d068' : '#cd201f'">
+							{{ record.sfxf == '1' ? '是' : '否' }}
+						</a-tag>
+					</span>
+				</template>
+				<template v-if="column.dataIndex === 'action'">
+					<a-button type="link" size="small">编辑</a-button>
+					<a-popconfirm title="确定要删除吗?" @confirm="deleteData(record)">
+						<a-button type="link" danger size="small">删除</a-button>
+					</a-popconfirm>
+					<a-button type="link" size="small">记录</a-button>
+				</template>
+			</template>
+		</s-table>
+	</div>
+</template>
+
+<script setup>
+	import tool from '@/utils/tool'
+	import jobApi from '@/api/dev/jobApi'
+	const searchFormRef = ref()
+	const searchFormState = ref({})
+	const tableRef = ref()
+	const columns = [
+		{
+			title: '对象编号',
+			dataIndex: 'code',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '对象名称',
+			dataIndex: 'name',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '品牌',
+			dataIndex: 'pp',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '规则型号',
+			dataIndex: 'gzxh',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '所处位置',
+			dataIndex: 'scwz',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '设备折旧',
+			dataIndex: 'sbzj',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '设备净值',
+			dataIndex: 'wxrq',
+			align: 'center',
+			ellipsis: true
+		},
+
+		{
+			title: '单位负责人确认时间',
+			dataIndex: 'dwfzrqrsj',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '单位负责人',
+			dataIndex: 'dwfzr',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '检验部门负责人确认时间',
+			dataIndex: 'jybmfzrqrsj',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '检验部门负责人',
+			dataIndex: 'jybmfzr',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '报废时间',
+			dataIndex: 'bfsj',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '报废理由',
+			dataIndex: 'bfly',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '操作',
+			dataIndex: 'action',
+			align: 'center',
+			width: 150
+		}
+	]
+
+	const loadData = (parameter) => {
+		return jobApi.jobPage(Object.assign(parameter, searchFormState.value)).then((res) => {
+			// return res
+			const obj = {
+				current: 1,
+				pages: 1,
+				records: [
+					{
+						code: 'Y6578945621',
+						name: 'ABSL-1超低温冰箱',
+						pp: '海尔1',
+						dwfzrqrsj: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼301室',
+						sbzj: '',
+						wxrq: '',
+						shrq: '2024-09-28 01:03:24',
+						dwfzr: '欧阳天添',
+						jybmfzrqrsj: '2024-09-30 11:51:02',
+						jybmfzr: '欧阳天添',
+						bfsj: '2024-09-30 11:51:02',
+						bfly: '报废'
+					},
+					{
+						code: 'Y6578945622',
+						name: 'ABSL-2超低温冰箱',
+						pp: '海尔',
+						dwfzrqrsj: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼302室',
+						sbzj: '',
+						wxrq: '',
+						shrq: '2024-09-28 02:03:24',
+						dwfzr: '欧阳天添',
+						jybmfzrqrsj: '2024-09-30 11:51:02',
+						jybmfzr: '欧阳天添',
+						bfsj: '2024-09-30 11:51:02',
+						bfly: '报废'
+					},
+					{
+						code: 'Y6578945623',
+						name: 'ABSL-3超低温冰箱',
+						pp: '海尔',
+						dwfzrqrsj: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼303室',
+						sbzj: '',
+						wxrq: '',
+						shrq: '2024-09-28 03:03:24',
+						dwfzr: '欧阳天添',
+						jybmfzrqrsj: '2024-09-30 11:51:02',
+						jybmfzr: '欧阳天添',
+						bfsj: '2024-09-30 11:51:02',
+						bfly: '报废'
+					},
+					{
+						code: 'Y6578945624',
+						name: 'ABSL-4超低温冰箱',
+						pp: '海尔',
+						dwfzrqrsj: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼304室',
+						sbzj: '',
+						wxrq: '',
+						shrq: '2024-09-28 04:03:24',
+						dwfzr: '欧阳天添',
+						jybmfzrqrsj: '2024-09-30 11:51:02',
+						jybmfzr: '欧阳天添',
+						bfsj: '2024-09-30 11:51:02',
+						bfly: '报废'
+					},
+					{
+						code: 'Y6578945625',
+						name: 'ABSL-5超低温冰箱',
+						pp: '海尔',
+						dwfzrqrsj: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼305室',
+						sbzj: '',
+						wxrq: '',
+						shrq: '2024-09-28 05:03:24',
+						dwfzr: '欧阳天添',
+						jybmfzrqrsj: '2024-09-30 11:51:02',
+						jybmfzr: '欧阳天添',
+						bfsj: '2024-09-30 11:51:02',
+						bfly: '报废'
+					},
+					{
+						code: 'Y6578945626',
+						name: 'ABSL-6超低温冰箱',
+						pp: '海尔',
+						dwfzrqrsj: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼306室',
+						sbzj: '',
+						wxrq: '',
+						shrq: '2024-09-28 06:03:24',
+						dwfzr: '欧阳天添',
+						jybmfzrqrsj: '2024-09-30 11:51:02',
+						jybmfzr: '欧阳天添',
+						bfsj: '2024-09-30 11:51:02',
+						bfly: '报废'
+					}
+				],
+				size: 10,
+				total: 6
+			}
+			return obj
+		})
+	}
+	// 重置
+	const reset = () => {
+		searchFormRef.value.resetFields()
+		tableRef.value.refresh(true)
+	}
+	// 删除
+	const deleteData = (record) => {
+		console.log(record, '删除')
+	}
+</script>
+
+<style lang="less" scoped>
+	.table_item {
+		padding: 15px 20px;
+		:deep(.ant-table-pagination-right) {
+			justify-content: center !important;
+		}
+	}
+</style>

+ 234 - 0
snowy-admin-web/src/views/basicset/monitor/setup.vue

@@ -0,0 +1,234 @@
+<template>
+	<div class="table_item">
+		<s-table ref="tableRef" :columns="columns" :data="loadData" :row-key="(record) => record.code">
+			<template #operator>
+				<!-- 搜索区域 -->
+				<div class="table-search">
+					<div class="table-search-form">
+						<a-row :gutter="10">
+							<a-form
+								ref="searchFormRef"
+								name="advanced_search"
+								layout="inline"
+								:label-col="{ style: { width: '70px', justifyContent: 'end' } }"
+								:model="searchFormState"
+								class="ant-advanced-search-form"
+							>
+								<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"
+									><a-form-item label="对象名称" name="name">
+										<a-input v-model:value="searchFormState.name" placeholder="请输入对象名称" /> </a-form-item
+								></a-col>
+							</a-form>
+						</a-row>
+					</div>
+					<div class="table-search-buttons">
+						<a-button type="primary" @click="tableRef.refresh(true)">查询</a-button>
+						<a-button class="xn-mg08" @click="reset">重置</a-button>
+					</div>
+				</div>
+
+				<!-- 其他操作区域 -->
+				<div class="table-head-btn">
+					<div class="btn-left">
+						<a-button type="primary" @click="formRef.onOpen()">
+							<template #icon><plus-outlined /></template>新增
+						</a-button>
+					</div>
+					<div class="btn-right">
+						<a-button>
+							<template #icon><download-outlined /></template>导出
+						</a-button>
+					</div>
+				</div>
+			</template>
+			<template #bodyCell="{ column, record }">
+				<template v-if="column.dataIndex === 'status'">
+					<span>
+						<a-tag :color="record.status == '1' ? '#87d068' : '#cd201f'">
+							{{ record.status == '1' ? '正常' : '停用' }}
+						</a-tag>
+					</span>
+				</template>
+				<template v-if="column.dataIndex === 'sensorType'">
+					{{ $TOOL.dictTypeData('SENSORTYPE', record.sensorType) }}
+				</template>
+				<template v-if="column.dataIndex === 'action'">
+					<a-button type="link" size="small" @click="formRef.onOpen(record)">编辑</a-button>
+					<a-popconfirm title="确定要删除吗?" @confirm="deleteData(record)">
+						<a-button type="link" danger size="small">删除</a-button>
+					</a-popconfirm>
+					<a-button type="link" size="small">记录</a-button>
+				</template>
+			</template>
+			<!-- <template #expandedRowRender="{ record }">
+				<a-tabs v-model:activeKey="record.activeKey" size="small" type="card">
+					<a-tab-pane key="1" tab="基本信息">
+						<div class="list">
+							<a-descriptions bordered size="small">
+								<a-descriptions-item label="所属单位" :span="3">{{ record.ssbm }}</a-descriptions-item>
+								<a-descriptions-item label="对象名称" :span="2">{{ record.name }}</a-descriptions-item>
+								<a-descriptions-item label="对象编号" :span="2">{{ record.dxcode }}</a-descriptions-item>
+								<a-descriptions-item label="品牌">{{ record.pp }}</a-descriptions-item>
+								<a-descriptions-item label="型号">{{ record.xh }}</a-descriptions-item>
+								<a-descriptions-item label="类型">{{ record.type }}</a-descriptions-item>
+								<a-descriptions-item label="使用状态">{{ record.syzt }}</a-descriptions-item>
+								<a-descriptions-item label="报警状态">{{ record.bjzt }}</a-descriptions-item>
+								<a-descriptions-item label="位置">{{ record.wz }}</a-descriptions-item>
+							</a-descriptions>
+						</div>
+					</a-tab-pane>
+					<a-tab-pane key="2" tab="冷链设备">
+						<div class="list">
+							<a-descriptions bordered size="small">
+								<a-descriptions-item label="冷链编号" :span="2">{{ record.llcode }}</a-descriptions-item>
+								<a-descriptions-item label="对应路数" :span="2">{{ record.dyls }}</a-descriptions-item>
+								<a-descriptions-item label="所属中继" :span="2">{{ record.sszj }}</a-descriptions-item>
+
+							</a-descriptions>
+						</div>
+					</a-tab-pane>
+					<a-tab-pane key="3" tab="温湿度设定">
+						<div class="list">
+							<a-descriptions title="报警上下限" bordered size="small">
+								<a-descriptions-item label="温度上限(℃)" :span="2">{{ record.wdsx }}</a-descriptions-item>
+								<a-descriptions-item label="温度下限(℃)" :span="2">{{ record.wdxx }}</a-descriptions-item>
+								<a-descriptions-item label="湿度上限(%)" :span="2">{{ record.sdsx }}</a-descriptions-item>
+								<a-descriptions-item label="湿度下限(%)" :span="2">{{ record.sdxx }}</a-descriptions-item>
+							</a-descriptions>
+
+							<a-descriptions title="温湿度修正" bordered size="small">
+								<a-descriptions-item label="温度(-10~10)(℃)" :span="2">{{ record.wdxz }}</a-descriptions-item>
+								<a-descriptions-item label="湿度(-20~20)(%)" :span="2">{{ record.sdxz }}</a-descriptions-item>
+							</a-descriptions>
+						</div>
+					</a-tab-pane>
+					<a-tab-pane key="4" tab="报警信息">
+						<div class="list">
+							<a-descriptions title="对象信息" bordered size="small">
+								<a-descriptions-item label="对象名称" :span="2">{{ record.name }}</a-descriptions-item>
+								<a-descriptions-item label="监控点名称" :span="2">{{ record.jkd }}</a-descriptions-item>
+								<a-descriptions-item label="报警级别" :span="2">{{ '1' }}</a-descriptions-item>
+								<a-descriptions-item label="延时时间" :span="2">{{ '0' }}</a-descriptions-item>
+								<a-descriptions-item label="报警频率" :span="2">{{ '1' }}</a-descriptions-item>
+
+								<a-descriptions-item label="执行间隔" :span="2">{{ '10' }}</a-descriptions-item>
+								<a-descriptions-item label="是否逐级报警" :span="2">{{ '否' }}</a-descriptions-item>
+								<a-descriptions-item label="逐级报警时间间隔" :span="2">{{ '0' }}</a-descriptions-item>
+								<a-descriptions-item label="允许报警开始时间" :span="2"></a-descriptions-item>
+								<a-descriptions-item label="允许报警结束时间" :span="2"></a-descriptions-item>
+							</a-descriptions>
+
+							<a-descriptions title="短信报警" bordered size="small">
+								<a-descriptions-item label="提醒人姓名" :span="2">{{ '欧阳天添' }}</a-descriptions-item>
+								<a-descriptions-item label="接收电话" :span="2">{{ '13476548750' }}</a-descriptions-item>
+							</a-descriptions>
+						</div>
+					</a-tab-pane>
+					<a-tab-pane key="5" tab="温度记录">
+						<div class="list">温度记录</div>
+					</a-tab-pane>
+				</a-tabs>
+			</template> -->
+		</s-table>
+		<Form ref="formRef" @successful="tableRef.refresh(true)" />
+	</div>
+</template>
+
+<script setup>
+	import tool from '@/utils/tool'
+	import setupApi from '@/api/basicset/setupApi'
+	import Form from './form.vue'
+	const formRef = ref()
+	const searchFormRef = ref()
+	const searchFormState = ref({})
+	const tableRef = ref()
+	const columns = [
+		{
+			title: '对象名称',
+			dataIndex: 'name',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '对象状态',
+			dataIndex: 'status',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '监控位置区域',
+			dataIndex: 'monitorPoint',
+			align: 'center',
+			ellipsis: true
+		},
+
+		{
+			title: '报警上限',
+			dataIndex: 'limitUp',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '报警下限',
+			dataIndex: 'limitDown',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '操作',
+			dataIndex: 'action',
+			align: 'center',
+			width: 150
+		}
+	]
+
+	const loadData = (parameter) => {
+		return setupApi.setupPage(Object.assign(parameter, searchFormState.value)).then((res) => {
+			console.log(res, 'x')
+			return res
+		})
+	}
+	// 重置
+	const reset = () => {
+		searchFormRef.value.resetFields()
+		tableRef.value.refresh(true)
+	}
+	// 删除
+	const deleteData = (record) => {
+		let params = [
+			{
+				id: record.id
+			}
+		]
+		setupApi.setupDelete(params).then(() => {
+			tableRef.value.refresh(true)
+			reset()
+		})
+	}
+</script>
+
+<style lang="less" scoped>
+	.table_item {
+		padding: 15px 20px;
+
+		:deep(.ant-table-pagination-right) {
+			justify-content: center !important;
+		}
+	}
+	.list {
+		width: 60%;
+		padding: 10px 20px;
+		border-radius: 10px;
+		background-color: #ffffff;
+
+		:deep(.ant-descriptions) {
+			margin-bottom: 10px;
+		}
+		:deep(.ant-descriptions-header) {
+			margin: 0;
+			padding: 10px;
+			border: 1px solid #f0f0f0;
+			border-bottom: none;
+		}
+	}
+</style>

+ 334 - 0
snowy-admin-web/src/views/basicset/monitor/upkeep.vue

@@ -0,0 +1,334 @@
+<template>
+	<div class="table_item">
+		<s-table ref="tableRef" :columns="columns" :data="loadData" :row-key="(record) => record.code">
+			<template #operator>
+				<!-- 搜索区域 -->
+				<div class="table-search">
+					<div class="table-search-form">
+						<a-row :gutter="10">
+							<a-form
+								ref="searchFormRef"
+								name="advanced_search"
+								layout="inline"
+								:label-col="{ style: { width: '70px', justifyContent: 'end' } }"
+								:model="searchFormState"
+								class="ant-advanced-search-form"
+							>
+								<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"
+									><a-form-item label="对象编号" name="dxcode">
+										<a-input v-model:value="searchFormState.dxcode" placeholder="请输入对象编号" /> </a-form-item
+								></a-col>
+								<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"
+									><a-form-item label="对象名称" name="name">
+										<a-input v-model:value="searchFormState.name" placeholder="请输入对象名称" /> </a-form-item
+								></a-col>
+							</a-form>
+						</a-row>
+					</div>
+					<div class="table-search-buttons">
+						<a-button type="primary" @click="tableRef.refresh(true)">查询</a-button>
+						<a-button class="xn-mg08" @click="reset">重置</a-button>
+					</div>
+				</div>
+
+				<!-- 其他操作区域 -->
+				<div class="table-head-btn">
+					<div class="btn-left">
+						<a-button type="primary">
+							<template #icon><plus-outlined /></template>新增
+						</a-button>
+					</div>
+					<div class="btn-right">
+						<a-button>
+							<template #icon><download-outlined /></template>导出
+						</a-button>
+					</div>
+				</div>
+			</template>
+			<template #bodyCell="{ column, record }">
+				<template v-if="column.dataIndex === 'sfxf'">
+					<span>
+						<a-tag :color="record.sfxf == '1' ? '#87d068' : '#cd201f'">
+							{{ record.sfxf == '1' ? '是' : '否' }}
+						</a-tag>
+					</span>
+				</template>
+				<template v-if="column.dataIndex === 'action'">
+					<a-button type="link" size="small">编辑</a-button>
+					<a-popconfirm title="确定要删除吗?" @confirm="deleteData(record)">
+						<a-button type="link" danger size="small">删除</a-button>
+					</a-popconfirm>
+					<a-button type="link" size="small">记录</a-button>
+				</template>
+			</template>
+		</s-table>
+	</div>
+</template>
+
+<script setup>
+	import tool from '@/utils/tool'
+	import jobApi from '@/api/dev/jobApi'
+	const searchFormRef = ref()
+	const searchFormState = ref({})
+	const tableRef = ref()
+	const columns = [
+		{
+			title: '对象编号',
+			dataIndex: 'code',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '对象名称',
+			dataIndex: 'name',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '品牌',
+			dataIndex: 'pp',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '规则型号',
+			dataIndex: 'gzxh',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '所处位置',
+			dataIndex: 'scwz',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '损坏日期',
+			dataIndex: 'shrq',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '维修日期',
+			dataIndex: 'wxrq',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '维修人',
+			dataIndex: 'wxr',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '故障描述',
+			dataIndex: 'gzms',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '维修后情况',
+			dataIndex: 'wxhqk',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '是否修复',
+			dataIndex: 'sfxf',
+			align: 'center',
+			ellipsis: true
+		},
+		{
+			title: '操作',
+			dataIndex: 'action',
+			align: 'center',
+			width: 150
+		}
+	]
+
+	const loadData = (parameter) => {
+		return jobApi.jobPage(Object.assign(parameter, searchFormState.value)).then((res) => {
+			// return res
+			const obj = {
+				current: 1,
+				pages: 1,
+				records: [
+					{
+						code: 'Y6578945621',
+						name: 'ABSL-3超低温冰箱123456',
+						pp: '海尔',
+						gzxh: 'HEGZXH-202411120920',
+						scwz: '实验室一号楼301室',
+						shrq: '2024-09-28 07:03:24',
+						wxrq: '2024-09-30 11:51:02',
+						wxr: '欧阳天添',
+						gzms: '故障描述故障描述故障描述故障描述故障描述',
+						wxhqk: '正常',
+						sfxf: '是',
+						children: [
+							{
+								code: 'Y6578945621-01',
+								name: 'ABSL-3超低温冰箱123456-01',
+								pp: '海尔-01',
+								gzxh: 'HEGZXH-202411120920-01',
+								scwz: '实验室一号楼301室-01',
+								shrq: '2024-09-29 09:13:24',
+								wxrq: '2024-09-30 19:11:32',
+								wxr: '欧阳天添',
+								gzms: '故障描述故障描述故障描述故障描述故障描述-01',
+								wxhqk: '正常',
+								sfxf: '是'
+							}
+						]
+					},
+					{
+						code: 'Y6578945622',
+						name: 'ABSL-3超低温冰箱2',
+						pp: '海尔',
+						gzxh: 'HEGZXH-202411120922',
+						scwz: '实验室一号楼302室',
+						shrq: '2024-09-28 07:03:24',
+						wxrq: '2024-09-30 11:51:02',
+						wxr: '欧阳天添',
+						gzms: '故障描述故障描述故障描述故障描述故障描述',
+						wxhqk: '正常',
+						sfxf: '是',
+						children: [
+							{
+								code: 'Y6578945622-01',
+								name: 'ABSL-3超低温冰箱2-01',
+								pp: '海尔',
+								gzxh: 'HEGZXH-202411120922-01',
+								scwz: '实验室一号楼302室-01',
+								shrq: '2024-09-28 07:03:24',
+								wxrq: '2024-09-30 11:51:02',
+								wxr: '欧阳天添',
+								gzms: '故障描述故障描述故障描述故障描述故障描述',
+								wxhqk: '正常',
+								sfxf: '是'
+							}
+						]
+					},
+					{
+						code: 'Y6578945623',
+						name: 'ABSL-3超低温冰箱3',
+						pp: '海尔',
+						gzxh: 'HEGZXH-202411120923',
+						scwz: '实验室一号楼303室',
+						shrq: '2024-09-28 07:03:24',
+						wxrq: '2024-09-30 11:51:02',
+						wxr: '欧阳天添',
+						gzms: '故障描述故障描述故障描述故障描述故障描述',
+						wxhqk: '正常',
+						sfxf: '是',
+						children: [
+							{
+								code: 'Y6578945623-01',
+								name: 'ABSL-3超低温冰箱3-01',
+								pp: '海尔',
+								gzxh: 'HEGZXH-202411120923-01',
+								scwz: '实验室一号楼303室-01',
+								shrq: '2024-09-28 07:03:24',
+								wxrq: '2024-09-30 11:51:02',
+								wxr: '欧阳天添',
+								gzms: '故障描述故障描述故障描述故障描述故障描述',
+								wxhqk: '正常',
+								sfxf: '是'
+							}
+						]
+					},
+					{
+						code: 'Y6578945624',
+						name: 'ABSL-3超低温冰箱4',
+						pp: '海尔',
+						gzxh: 'HEGZXH-202411120924',
+						scwz: '实验室一号楼304室',
+						shrq: '2024-09-28 07:03:24',
+						wxrq: '2024-09-30 11:51:02',
+						wxr: '欧阳天添',
+						gzms: '故障描述故障描述故障描述故障描述故障描述',
+						wxhqk: '正常',
+						sfxf: '是',
+						children: [
+							{
+								code: 'Y6578945624-01',
+								name: 'ABSL-3超低温冰箱4-01',
+								pp: '海尔',
+								gzxh: 'HEGZXH-202411120924-01',
+								scwz: '实验室一号楼304室-01',
+								shrq: '2024-09-28 07:03:24',
+								wxrq: '2024-09-30 11:51:02',
+								wxr: '欧阳天添',
+								gzms: '故障描述故障描述故障描述故障描述故障描述',
+								wxhqk: '正常',
+								sfxf: '是'
+							}
+						]
+					},
+					{
+						code: 'Y6578945625',
+						name: 'ABSL-3超低温冰箱5',
+						pp: '海尔',
+						gzxh: 'HEGZXH-202411120925',
+						scwz: '实验室一号楼305室',
+						shrq: '2024-09-28 07:03:24',
+						wxrq: '2024-09-30 11:51:02',
+						wxr: '欧阳天添',
+						gzms: '故障描述故障描述故障描述故障描述故障描述',
+						wxhqk: '正常',
+						sfxf: '是',
+						children: [
+							{
+								code: 'Y6578945625-01',
+								name: 'ABSL-3超低温冰箱5-01',
+								pp: '海尔',
+								gzxh: 'HEGZXH-202411120925-01',
+								scwz: '实验室一号楼305室-01',
+								shrq: '2024-09-28 07:03:24',
+								wxrq: '2024-09-30 11:51:02',
+								wxr: '欧阳天添',
+								gzms: '故障描述故障描述故障描述故障描述故障描述',
+								wxhqk: '正常',
+								sfxf: '是'
+							}
+						]
+					},
+					{
+						code: 'Y6578945626',
+						name: 'ABSL-3超低温冰箱6',
+						pp: '海尔',
+						gzxh: 'HEGZXH-202411120926',
+						scwz: '实验室一号楼306室',
+						shrq: '2024-09-28 07:03:24',
+						wxrq: '2024-09-30 11:51:02',
+						wxr: '欧阳天添',
+						gzms: '故障描述故障描述故障描述故障描述故障描述',
+						wxhqk: '正常',
+						sfxf: '是'
+					}
+				],
+				size: 10,
+				total: 6
+			}
+			return obj
+		})
+	}
+	// 重置
+	const reset = () => {
+		searchFormRef.value.resetFields()
+		tableRef.value.refresh(true)
+	}
+	// 删除
+	const deleteData = (record) => {
+		console.log(record, '删除')
+	}
+</script>
+
+<style lang="less" scoped>
+	.table_item {
+		padding: 15px 20px;
+		:deep(.ant-table-pagination-right) {
+			justify-content: center !important;
+		}
+	}
+</style>