like 6 ヶ月 前
コミット
1f4df11b71

+ 0 - 265
snowy-admin-web/src/views/basicset/devicetype/form.vue

@@ -1,265 +0,0 @@
-<template>
-	<xn-form-container
-		:title="formData.id ? '编辑设备型号' : '新增设备型号'"
-		:width="'800px'"
-		:visible="visible"
-		:destroy-on-close="true"
-		@close="onClose"
-	>
-		<a-form
-			ref="formRef"
-			:model="formData"
-			:rules="formRules"
-			layout="inline"
-			:label-col="{ style: { width: '105px', justifyContent: 'end' } }"
-		>
-			<a-row :gutter="10">
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="型号名称" name="name">
-						<a-input v-model:value="formData.name" placeholder="请输入型号名称" allow-clear />
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="传感器类型" name="sensorType">
-						<a-select
-							ref="select"
-							v-model:value="formData.sensorType"
-							:options="sensorOptions"
-							placeholder="请选择传感器类型"
-						/>
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="型号编号" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入型号编号" allow-clear :maxlength="10" />
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="传感器总路数" name="sensorCount">
-						<a-input-number
-							v-model:value="formData.sensorCount"
-							placeholder="请输入传感器总路数"
-							allow-clear
-							:min="1"
-							:max="4"
-							style="width: 100%"
-							:precision="0"
-						/>
-					</a-form-item>
-				</a-col>
-
-				<div
-					class="form_item"
-					v-if="formData.sensorType == 'W' || formData.sensorType == 'WS' || formData.sensorType == 'WSC'"
-				>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="温度上限" name="temperatureUp">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.temperatureUp"
-								placeholder="请输入温度上限"
-								allow-clear
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="温度下限" name="temperatureDown">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.temperatureDown"
-								placeholder="请输入温度下限"
-								allow-clear
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-				<div class="form_item" v-if="formData.sensorType == 'WS' || formData.sensorType == 'WSC'">
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="湿度上限" name="humidityUp">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.humidityUp"
-								placeholder="请输入湿度上限"
-								allow-clear
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="湿度下限" name="humidityDown">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.humidityDown"
-								placeholder="请输入湿度下限"
-								allow-clear
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-				<div class="form_item" v-if="formData.sensorType == 'WSC'">
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="CO2上限" name="co2Up">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.co2Up"
-								placeholder="请输入CO2上限"
-								allow-clear
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="CO2下限" name="co2Down">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.co2Down"
-								placeholder="请输入CO2下限"
-								allow-clear
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-
-				<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-					<a-form-item label="排序:" name="sortCode">
-						<a-input-number class="xn-wd" v-model:value="formData.sortCode" :max="100" />
-					</a-form-item>
-				</a-col>
-			</a-row>
-		</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 tool from '@/utils/tool'
-
-	import { required, rules } from '@/utils/formRules'
-	import devicetypeApi from '@/api/basicset/devicetypeApi'
-	const emit = defineEmits({ successful: null })
-	const visible = ref(false) // 默认是关闭状态
-	const formRef = ref()
-	const formData = ref({ sortCode: 99 }) // 表单数据
-	const sensorOptions = tool.dictList('SENSORTYPE') // 传感器类型
-
-	// 默认要校验的
-	const formRules = {
-		name: [required('请输入型号名称')],
-		sensorType: [required('请选择传感器类型')],
-		code: [required('请输入型号编号'), rules.number],
-		sensorCount: [required('请输入传感器总路数')],
-		temperatureUp: [required('请输入温度上限'), { validator: validateTemperature, trigger: ['change', 'blur'] }],
-		temperatureDown: [required('请输入温度下限'), { validator: validateTemperature, trigger: ['change', 'blur'] }],
-		humidityUp: [required('请输入湿度上限'), { validator: validateHumidity, trigger: ['change', 'blur'] }],
-		humidityDown: [required('请输入湿度下限'), { validator: validateHumidity, trigger: ['change', 'blur'] }],
-		co2Up: [required('请输入CO2上限'), { validator: validateCo2, trigger: ['change', 'blur'] }],
-		co2Down: [required('请输入CO2下限'), { validator: validateCo2, trigger: ['change', 'blur'] }]
-	}
-	// 温度上下限校验
-	function validateTemperature(rule, value, callback) {
-		if (rule.field == 'temperatureDown') {
-			if (formData.value.temperatureUp !== null && value >= formData.value.temperatureUp) {
-				callback(new Error('温度下限不能大于或等于温度上限'))
-			} else {
-				callback()
-			}
-		} else if (rule.field == 'temperatureUp') {
-			if (formData.value.temperatureDown !== null && value <= formData.value.temperatureDown) {
-				callback(new Error('温度上限不能小于或等于温度下限'))
-			} else {
-				callback()
-			}
-		}
-	}
-
-	// 湿度上下限校验
-	function validateHumidity(rule, value, callback) {
-		if (rule.field == 'humidityDown') {
-			if (formData.value.humidityUp !== null && value >= formData.value.humidityUp) {
-				callback(new Error('湿度下限不能大于或等于湿度上限'))
-			} else {
-				callback()
-			}
-		} else if (rule.field == 'humidityUp') {
-			if (formData.value.humidityDown !== null && value <= formData.value.humidityDown) {
-				callback(new Error('湿度上限不能小于或等于湿度下限'))
-			} else {
-				callback()
-			}
-		}
-	}
-
-	// CO2上下限校验
-	function validateCo2(rule, value, callback) {
-		if (rule.field == 'co2Down') {
-			if (formData.value.co2Up !== null && value >= formData.value.co2Up) {
-				callback(new Error('CO2下限不能大于或等于CO2上限'))
-			} else {
-				callback()
-			}
-		} else if (rule.field == 'co2Up') {
-			if (formData.value.co2Down !== null && value <= formData.value.co2Down) {
-				callback(new Error('CO2上限不能小于或等于CO2下限'))
-			} else {
-				callback()
-			}
-		}
-	}
-
-	// 打开抽屉
-	const onOpen = (record) => {
-		visible.value = true
-		if (record) {
-			formData.value = Object.assign({}, record)
-		} else {
-			formData.value = { sortCode: 99 }
-		}
-	}
-	// 关闭抽屉
-	const onClose = () => {
-		formRef.value.resetFields()
-		visible.value = false
-	}
-
-	// 验证并提交数据
-	const onSubmit = () => {
-		formRef.value
-			.validate()
-			.then(() => {
-				devicetypeApi.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;
-	}
-	.form_item {
-		width: 100%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-wrap: wrap;
-	}
-</style>

+ 0 - 211
snowy-admin-web/src/views/basicset/devicetype/index.vue

@@ -1,211 +0,0 @@
-<template>
-	<div class="table_item">
-		<s-table
-			ref="tableRef"
-			:columns="columns"
-			:data="loadData"
-			:row-key="(record) => record.id"
-			bordered
-			@resizeColumn="handleResizeColumn"
-		>
-			<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>
-			</template>
-			<template #bodyCell="{ column, record, index }">
-				<!-- 序号 -->
-				<template v-if="column.dataIndex === 'index'">{{ index + 1 }} </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>
-				</template>
-			</template>
-		</s-table>
-
-		<Form ref="formRef" @successful="tableRef.refresh(true)" />
-	</div>
-</template>
-
-<script setup>
-	import devicetypeApi from '@/api/basicset/devicetypeApi'
-	import Form from './form.vue'
-	const formRef = ref()
-	const searchFormRef = ref()
-	const searchFormState = ref({})
-	const tableRef = ref()
-
-	const columns = [
-		{
-			title: '序号',
-			dataIndex: 'index',
-			align: 'center',
-			width: 50
-		},
-		{
-			title: '型号名称',
-			dataIndex: 'name',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '型号编号',
-			dataIndex: 'code',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '传感器总路数',
-			dataIndex: 'sensorCount',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '温度上限',
-			dataIndex: 'temperatureUp',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '温度下限',
-			dataIndex: 'temperatureDown',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '湿度上限',
-			dataIndex: 'humidityUp',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-
-		{
-			title: '湿度下限',
-			dataIndex: 'humidityDown',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: 'CO2上限',
-			dataIndex: 'co2Up',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: 'CO2下限',
-			dataIndex: 'co2Down',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-
-		{
-			title: '排序码',
-			dataIndex: 'sortCode',
-			align: 'center',
-			ellipsis: true,
-			resizable: true,
-			sorter: true
-		},
-
-		{
-			title: '操作',
-			dataIndex: 'action',
-			align: 'center',
-			width: 150
-		}
-	]
-	// 可伸缩列
-	const handleResizeColumn = (w, col) => {
-		col.width = w
-	}
-
-	const loadData = (parameter) => {
-		return devicetypeApi.devicetypePage(Object.assign(parameter, searchFormState.value)).then((res) => {
-			return res
-		})
-	}
-	// 重置
-	const reset = () => {
-		searchFormRef.value.resetFields()
-		tableRef.value.refresh(true)
-	}
-	// 删除
-	const deleteData = (record) => {
-		let params = [
-			{
-				id: record.id
-			}
-		]
-		devicetypeApi.devicetypeDelete(params).then(() => {
-			tableRef.value.refresh(true)
-			reset()
-		})
-	}
-</script>
-
-<style lang="less" scoped>
-	.table_item {
-		padding: 15px 20px;
-		background-color: #ffffff;
-		: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>

+ 0 - 151
snowy-admin-web/src/views/basicset/intervals/index.vue

@@ -1,151 +0,0 @@
-<template>
-	<div class="table_item">
-		<div class="table_left">
-			<a-input-search v-model:value="searchValue" style="margin-bottom: 8px" placeholder="请输入采集名称" />
-			<a-tree
-				:expanded-keys="expandedKeys"
-				:auto-expand-parent="autoExpandParent"
-				:tree-data="gData"
-				@expand="onExpand"
-			>
-				<template #title="{ title }">
-					<span v-if="title.indexOf(searchValue) > -1">
-						{{ title.substring(0, title.indexOf(searchValue)) }}
-						<span style="color: #f50">{{ searchValue }}</span>
-						{{ title.substring(title.indexOf(searchValue) + searchValue.length) }}
-					</span>
-					<span v-else>{{ title }}</span>
-				</template>
-			</a-tree>
-		</div>
-		<div class="table_right">
-			<a-card title="采集器频率" style="width: 100%">
-				<a-form
-					ref="searchFormRef"
-					name="advanced_search"
-					:label-col="{ style: { width: '100px', justifyContent: 'end' } }"
-					:model="searchFormState"
-					class="ant-advanced-search-form"
-				>
-					<a-form-item label="采集频率" name="cjpl">
-						<a-input v-model:value="searchFormState.cjpl" placeholder="请输入采集频率" />
-					</a-form-item>
-					<a-form-item label="报警采集频率" name="bjcjpl">
-						<a-input v-model:value="searchFormState.bjcjpl" placeholder="请输入报警采集频率" />
-					</a-form-item>
-				</a-form>
-				<a-button type="primary">保存</a-button>
-			</a-card>
-		</div>
-	</div>
-</template>
-<script lang="ts" setup>
-	import type { TreeProps } from 'ant-design-vue'
-	const searchFormState = ref({
-		cjpl: '',
-		bjcjpl: ''
-	})
-
-	const x = 3
-	const y = 2
-	const z = 1
-	const genData: TreeProps['treeData'] = []
-
-	const generateData = (_level: number, _preKey?: string, _tns?: TreeProps['treeData']) => {
-		const preKey = _preKey || '0'
-		const tns = _tns || genData
-
-		const children = []
-		for (let i = 0; i < x; i++) {
-			const key = `${preKey}-${i}`
-			tns.push({ title: key, key })
-			if (i < y) {
-				children.push(key)
-			}
-		}
-		if (_level < 0) {
-			return tns
-		}
-		const level = _level - 1
-		children.forEach((key, index) => {
-			tns[index].children = []
-			return generateData(level, key, tns[index].children)
-		})
-	}
-	generateData(z)
-
-	const dataList: TreeProps['treeData'] = []
-	const generateList = (data: TreeProps['treeData']) => {
-		for (let i = 0; i < data.length; i++) {
-			const node = data[i]
-			const key = node.key
-			dataList.push({ key, title: key })
-			if (node.children) {
-				generateList(node.children)
-			}
-		}
-	}
-	generateList(genData)
-
-	const getParentKey = (key: string | number, tree: TreeProps['treeData']): string | number | undefined => {
-		let parentKey
-		for (let i = 0; i < tree.length; i++) {
-			const node = tree[i]
-			if (node.children) {
-				if (node.children.some((item) => item.key === key)) {
-					parentKey = node.key
-				} else if (getParentKey(key, node.children)) {
-					parentKey = getParentKey(key, node.children)
-				}
-			}
-		}
-		return parentKey
-	}
-	const expandedKeys = ref<(string | number)[]>([])
-	const searchValue = ref<string>('')
-	const autoExpandParent = ref<boolean>(true)
-	const gData = ref<TreeProps['treeData']>(genData)
-
-	const onExpand = (keys: string[]) => {
-		expandedKeys.value = keys
-		autoExpandParent.value = false
-	}
-
-	watch(searchValue, (value) => {
-		const expanded = dataList
-			.map((item: TreeProps['treeData'][number]) => {
-				if (item.title.indexOf(value) > -1) {
-					return getParentKey(item.key, gData.value)
-				}
-				return null
-			})
-			.filter((item, i, self) => item && self.indexOf(item) === i)
-		expandedKeys.value = expanded
-		searchValue.value = value
-		autoExpandParent.value = true
-	})
-</script>
-
-<style lang="less" scoped>
-	.table_item {
-		width: 100%;
-		display: flex;
-		padding: 15px 20px;
-
-		.table_left {
-			width: 25%;
-			padding: 10px;
-			margin-right: 10px;
-			background-color: #ffffff;
-		}
-		.table_right {
-			width: 70%;
-		}
-	}
-	:deep(.ant-card-body) {
-		text-align: center;
-	}
-	:deep(.ant-card-head) {
-		border-bottom: 1px solid #f0f0f0 !important;
-	}
-</style>

+ 0 - 304
snowy-admin-web/src/views/basicset/mem/configForm.vue

@@ -1,304 +0,0 @@
-<template>
-	<xn-form-container title="配置" :width="'60%'" :visible="visible" :destroy-on-close="true" @close="onClose">
-		<a-form
-			ref="formRef"
-			:model="formData"
-			:rules="formRules"
-			layout="inline"
-			:label-col="{ style: { width: '85px', justifyContent: 'end' } }"
-		>
-			<div class="form_left">
-				<div class="form_title">网络目标参数</div>
-				<div class="form_row">
-					<a-form-item label="目标端口" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入目标端口" allow-clear />
-					</a-form-item>
-					<a-form-item label="目标IP(域名)" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入目标IP" allow-clear />
-					</a-form-item>
-				</div>
-				<div class="form_title">WIFI目标路由器SSID参数</div>
-				<div class="form_row container">
-					<a-form-item label="目标路由器SSID" name="code" :label-col="{ style: { width: '135px' } }">
-						<a-input v-model:value="formData.code" placeholder="请输入目标路由器SSID" allow-clear />
-					</a-form-item>
-					<a-form-item label="目标路由器登录密码" name="code" :label-col="{ style: { width: '135px' } }">
-						<a-input v-model:value="formData.code" placeholder="请输入目标路由器登录密码" allow-clear />
-					</a-form-item>
-				</div>
-				<div class="form_title">WIFI-WAN口参数</div>
-				<div class="form_row">
-					<a-form-item label="IP获取方式" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入IP获取方式" allow-clear />
-					</a-form-item>
-					<a-form-item label="本地IP" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入本地IP" allow-clear />
-					</a-form-item>
-					<a-form-item label="子网掩码" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入子网掩码" allow-clear />
-					</a-form-item>
-					<a-form-item label="网关地址" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入网关地址" allow-clear />
-					</a-form-item>
-				</div>
-				<div class="form_title">MAC地址</div>
-
-				<div class="form_row">
-					<a-form-item label="MAC地址" name="code">
-						<a-input v-model:value="formData.code" placeholder="请输入MAC地址" allow-clear />
-					</a-form-item>
-				</div>
-			</div>
-			<div class="form_right">
-				<div class="form_title">设备参数</div>
-				<a-form-item label="终端地址" name="code" :label-col="{ style: { width: '130px' } }">
-					<a-input v-model:value="formData.code" allow-clear />
-					<span class="suffix">00000001~99999999</span>
-				</a-form-item>
-				<a-form-item label="登录帧间隔时间" name="code" :label-col="{ style: { width: '130px' } }">
-					<a-input v-model:value="formData.code" allow-clear />
-					<span class="suffix">S(1-600000S)</span>
-				</a-form-item>
-				<a-form-item label="心跳帧间隔时间" name="code" :label-col="{ style: { width: '130px' } }">
-					<a-input v-model:value="formData.code" allow-clear />
-					<span class="suffix">S(1-600000S)</span>
-				</a-form-item>
-				<a-form-item label="主动上送帧间隔时间" name="code" :label-col="{ style: { width: '130px' } }">
-					<a-input v-model:value="formData.code" allow-clear />
-					<span class="suffix">S(1-600000S)</span>
-				</a-form-item>
-
-				<!-- 温度 -->
-				<div class="temp">
-					<div>温度:</div>
-					<div class="temp_data">
-						<div class="data_item">
-							<div>上限</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-						<div class="data_item">
-							<div>下限</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-						<div class="data_item">
-							<div>回差</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-						<div class="data_item">
-							<div>偏差</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-					</div>
-				</div>
-				<!-- 湿度 -->
-				<div class="temp">
-					<div>湿度:</div>
-					<div class="temp_data">
-						<div class="data_item">
-							<div>上限</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-						<div class="data_item">
-							<div>下限</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-						<div class="data_item">
-							<div>回差</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-						<div class="data_item">
-							<div>偏差</div>
-							<a-form-item>
-								<a-input-number id="inputNumber" v-model:value="formData.code" />
-							</a-form-item>
-						</div>
-					</div>
-				</div>
-				<div class="temp">
-					<a-form-item label="温度上限报警使能" name="code" :label-col="{ style: { width: '130px' } }">
-						<a-checkbox v-model:checked="formData.checked" />
-					</a-form-item>
-					<a-form-item label="温度下限报警使能" name="code" :label-col="{ style: { width: '130px' } }">
-						<a-checkbox v-model:checked="formData.checked" />
-					</a-form-item>
-				</div>
-				<div class="temp">
-					<a-form-item label="湿度上限报警使能" name="code" :label-col="{ style: { width: '130px' } }">
-						<a-checkbox v-model:checked="formData.checked" />
-					</a-form-item>
-					<a-form-item label="湿度下限报警使能" name="code" :label-col="{ style: { width: '130px' } }">
-						<a-checkbox v-model:checked="formData.checked" />
-					</a-form-item>
-				</div>
-				<a-form-item label="设备数据记录间隔(分)" name="code" :label-col="{ style: { width: '150px' } }">
-					<a-input v-model:value="formData.code" allow-clear />
-				</a-form-item>
-				<a-form-item label="数据记录模式" name="code" :label-col="{ style: { width: '150px' } }">
-					<a-input v-model:value="formData.code" allow-clear />
-				</a-form-item>
-				<a-form-item label="设备中储存的数据主动上传" name="code" :label-col="{ style: { width: '180px' } }">
-					<a-checkbox v-model:checked="formData.checked" />
-				</a-form-item>
-			</div>
-		</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 tool from '@/utils/tool'
-	import { message } from 'ant-design-vue'
-	import { required } from '@/utils/formRules'
-	import memApi from '@/api/basicset/memApi'
-	const emit = defineEmits({ successful: null })
-	const visible = ref(false) // 默认是关闭状态
-	const formRef = ref()
-	const formData = ref({}) // 表单数据
-
-	// 默认要校验的
-	const formRules = {
-		deviceName: [required('请输入设备名称')],
-		deviceCode: [required('请输入设备编号')],
-		modelName: [required('请选择设备型号')],
-		sensorCount: [required('请输入传感器路数')]
-	}
-
-	// 打开抽屉
-	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(() => {
-				memApi.submitForm(formData.value, formData.value.id).then(() => {
-					onClose()
-					emit('successful')
-				})
-			})
-			.catch((error) => {
-				console.log(error)
-			})
-	}
-
-	// 调用这个函数将子组件的一些数据和方法暴露出去
-	defineExpose({
-		onOpen
-	})
-</script>
-
-<style lang="less" scoped>
-	.ant-form {
-		width: 100%;
-
-		.form_title {
-			height: 25px;
-			font-weight: bold;
-			line-height: 25px;
-			padding-left: 15px;
-			margin-bottom: 10px;
-			position: relative;
-		}
-		.form_title::before {
-			content: '';
-			position: absolute;
-			top: 5px;
-			left: 0px;
-			height: 15px;
-			border-left: 4px solid #1878ff;
-			border-radius: 8px;
-		}
-
-		// 左边表单
-		.form_left {
-			width: 60%;
-			padding: 0 10px;
-			.form_row {
-				display: flex;
-				align-items: center;
-				flex-wrap: wrap;
-				margin-bottom: 15px;
-				:deep(.ant-form-item) {
-					width: 47%;
-					margin-bottom: 10px;
-				}
-			}
-			.container {
-				:deep(.ant-form-item) {
-					width: 60%;
-					margin-bottom: 10px;
-				}
-			}
-		}
-		// 右边表单
-		.form_right {
-			width: 40%;
-			padding: 0 10px;
-			background-color: #deeeff;
-			.ant-form-item {
-				margin-bottom: 10px;
-				.ant-input-affix-wrapper {
-					width: 150px;
-				}
-				.suffix {
-					font-size: 12px;
-					padding-left: 5px;
-				}
-			}
-
-			.temp {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-around;
-
-				.temp_data {
-					width: 90%;
-					margin-left: 10px;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					.data_item {
-						display: flex;
-						flex-wrap: wrap;
-						align-items: center;
-						justify-content: center;
-						:deep(.ant-form-item) {
-							margin-inline-end: 0 !important;
-						}
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 454
snowy-admin-web/src/views/basicset/mem/form copy.vue

@@ -1,454 +0,0 @@
-<template>
-	<xn-form-container
-		:title="formData.id ? '编辑采集器' : '新增采集器'"
-		:width="'60%'"
-		: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-tabs v-model:activeKey="activeKey" type="editable-card" @edit="onEdit">
-				<a-tab-pane tab="对象信息" key="object" :closable="false">
-					<a-row :gutter="10">
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="采集器名称" name="name">
-								<a-input v-model:value="formData.name" placeholder="请输入采集器名称" allow-clear />
-							</a-form-item>
-						</a-col>
-
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="采集器编号" name="code">
-								<a-input v-model:value="formData.code" placeholder="请输入采集器编号" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="采集器条码" name="barcode">
-								<a-input v-model:value="formData.barcode" placeholder="请输入采集器条码" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="品牌" name="brand">
-								<a-input v-model:value="formData.brand" placeholder="请输入品牌" allow-clear />
-							</a-form-item>
-						</a-col>
-
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="状态" name="state">
-								<a-select ref="select" v-model:value="formData.state">
-									<a-select-option value="1">正常</a-select-option>
-									<a-select-option value="2">维修</a-select-option>
-									<a-select-option value="3">闲置</a-select-option>
-									<a-select-option value="4">报废</a-select-option>
-								</a-select>
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="所属部门">
-								<a-input v-model:value="formData.division" placeholder="请输入所属部门" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="12">
-							<a-form-item label="采集时间">
-								<a-time-range-picker v-model:value="formData.collectionTime" style="width: 100%" />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-							<a-form-item label="位置">
-								<a-input v-model:value="formData.location" placeholder="请输入位置" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-							<a-form-item label="备注">
-								<a-textarea
-									v-model:value="formData.remarks"
-									placeholder="请输入备注"
-									allow-clear
-									:maxlength="200"
-									:rows="4"
-								/>
-							</a-form-item>
-						</a-col>
-					</a-row>
-				</a-tab-pane>
-				<a-tab-pane tab="报警信息" key="report" :closable="false">
-					<a-form-item :label-col="{ style: { width: '200px' } }">
-						<template #label>
-							<a-tooltip>
-								<template #title>
-									重复通知间隔:同一设备同一故障类型出现报警进行过一次报警通知后,进行下一次报普通知的间隔时间,如果在这个时间间隔内该设备同一故障类型
-									还在产生报警则不再进行通知。
-									最多报警次数:同一设备同一故障类型连续报警最多报警通知次数,在达到最多报警次数后如果报警还未及时处理,系统也不再进行报警通知。
-									延时时间:为屏蔽误报,系统报警在达到延时时间之后才进行报警通知。
-								</template>
-								<question-circle-outlined />
-							</a-tooltip>
-							重复发送通知:
-						</template>
-
-						<a-radio-group v-model:value="formData.repeat">
-							<a-radio value="1">1次</a-radio>
-							<a-radio value="2">多次</a-radio>
-						</a-radio-group>
-					</a-form-item>
-					<a-form-item label="延时报警" :label-col="{ style: { width: '200px' } }">
-						<a-radio-group v-model:value="formData.delayed">
-							<a-radio value="1">是</a-radio>
-							<a-radio value="0">否</a-radio>
-						</a-radio-group>
-					</a-form-item>
-					<a-form-item label="报警关闭发送通知" :label-col="{ style: { width: '200px' } }">
-						<a-radio-group v-model:value="formData.close">
-							<a-radio value="1">是</a-radio>
-							<a-radio value="0">否</a-radio>
-						</a-radio-group>
-					</a-form-item>
-					<a-form-item label="多级报警" :label-col="{ style: { width: '200px' } }">
-						<a-radio-group v-model:value="formData.multistage">
-							<a-radio value="1">是</a-radio>
-							<a-radio value="0">否</a-radio>
-						</a-radio-group>
-					</a-form-item>
-
-					<a-form-item label="报警通知方式" :label-col="{ style: { width: '200px' } }">
-						<a-checkbox-group v-model:value="formData.noticeway" style="width: 100%">
-							<a-checkbox value="1">短信</a-checkbox>
-							<a-checkbox value="2">电话</a-checkbox>
-							<a-checkbox value="3">微信</a-checkbox>
-							<a-checkbox value="4">电子邮件</a-checkbox>
-							<a-checkbox value="5">弹出</a-checkbox>
-							<a-checkbox value="6">音乐</a-checkbox>
-						</a-checkbox-group>
-					</a-form-item>
-
-					<!-- 表格区域 -->
-					<div>
-						<a-button type="primary" style="margin-left: 90%; margin-bottom: 5px" @click="tableAdd">
-							<template #icon><plus-outlined /></template>新增
-						</a-button>
-						<a-table
-							ref="tableRef"
-							bordered
-							:columns="columns"
-							:data-source="formData.loadData"
-							:row-key="(record) => record.startTime"
-							:pagination="false"
-						>
-							<template #headerCell="{ column }">
-								<template v-if="column.dataIndex === 'startTime'">
-									<text style="color: #e74032"> * </text>开始时间
-								</template>
-								<template v-if="column.dataIndex === 'endTime'">
-									<text style="color: #e74032"> * </text>结束时间
-								</template>
-								<template v-if="column.dataIndex === 'name'"> <text style="color: #e74032"> * </text>姓名 </template>
-								<template v-if="column.dataIndex === 'remindType'">
-									<text style="color: #e74032"> * </text>提醒方式
-								</template>
-								<template v-if="column.dataIndex === 'level'"> <text style="color: #e74032"> * </text>级别 </template>
-								<template v-if="column.dataIndex === 'phone'">
-									<text style="color: #e74032"> * </text>电话号码
-								</template>
-							</template>
-							<template #bodyCell="{ column, record, index }">
-								<!-- 表格内容 -->
-								<template v-if="column.dataIndex === 'startTime'">
-									<a-time-picker v-model:value="record.startTime" value-format="HH:mm:ss" style="width: 100%" />
-								</template>
-
-								<template v-if="column.dataIndex === 'endTime'">
-									<a-time-picker v-model:value="record.endTime" value-format="HH:mm:ss" style="width: 100%" />
-								</template>
-
-								<template v-if="column.dataIndex === 'name'">
-									<a-input v-model:value="record.name" placeholder="请输入姓名" />
-								</template>
-
-								<template v-if="column.dataIndex === 'remindType'">
-									<a-select v-model:value="record.remindType" placeholder="请选择提醒方式" style="width: 100%">
-										<a-select-option value="1">短信报警</a-select-option>
-										<a-select-option value="2">电话报警</a-select-option>
-										<a-select-option value="3">微信公众号报警</a-select-option>
-										<a-select-option value="4">邮件报警</a-select-option>
-										<a-select-option value="5">弹出报警</a-select-option>
-										<a-select-option value="6">音乐报警</a-select-option>
-									</a-select>
-								</template>
-
-								<template v-if="column.dataIndex === 'level'">
-									<a-select v-model:value="record.level" placeholder="请选择级别" style="width: 100px">
-										<a-select-option value="1">1</a-select-option>
-										<a-select-option value="2">2</a-select-option>
-										<a-select-option value="3">3</a-select-option>
-										<a-select-option value="4">4</a-select-option>
-										<a-select-option value="5">5</a-select-option>
-									</a-select>
-								</template>
-
-								<template v-if="column.dataIndex === 'phone'">
-									<a-input v-model:value="record.phone" placeholder="请输入电话号码" />
-								</template>
-
-								<template v-if="column.dataIndex === 'action'">
-									<a-popconfirm title="确定要删除吗?" @confirm="tableDelete(record, index)">
-										<a-button type="link" danger size="small">删除</a-button>
-									</a-popconfirm>
-								</template>
-							</template>
-						</a-table>
-					</div>
-				</a-tab-pane>
-
-				<a-tab-pane v-for="pane in panes" :key="pane.key" :tab="pane.title" :closable="pane.closable">
-					<!-- 新增路数-->
-					<div v-for="(item, index) in formData.list" :key="index">
-						<a-row :gutter="10" v-if="activeKey == item.key">
-							<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="12">
-								<a-form-item label="传感器路数">
-									<a-input v-model:value="item.number" placeholder="请输入传感器路数" allow-clear />
-								</a-form-item>
-							</a-col>
-
-							<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="12">
-								<a-form-item label="传感器类型">
-									<a-select ref="select" v-model:value="item.sensorType" placeholder="请选择传感器类型">
-										<a-select-option value="1">温度</a-select-option>
-										<a-select-option value="2">温湿度</a-select-option>
-									</a-select>
-								</a-form-item>
-							</a-col>
-
-							<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-								<a-form-item label="备注">
-									<a-textarea
-										v-model:value="item.numberRemarks"
-										placeholder="请输入备注"
-										allow-clear
-										:maxlength="200"
-										:rows="4"
-									/>
-								</a-form-item>
-							</a-col>
-						</a-row>
-					</div>
-				</a-tab-pane>
-			</a-tabs>
-		</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 { message } from 'ant-design-vue'
-	import { required } from '@/utils/formRules'
-	import moduleApi from '@/api/sys/resource/moduleApi'
-	// 默认是关闭状态
-	const visible = ref(false)
-	const emit = defineEmits({ successful: null })
-	const formRef = ref()
-
-	const tableRef = ref()
-
-	const columns = [
-		{
-			title: '开始时间',
-			dataIndex: 'startTime',
-			align: 'center'
-		},
-		{
-			title: '结束时间',
-			dataIndex: 'endTime',
-			align: 'center'
-		},
-		{
-			title: '姓名',
-			dataIndex: 'name',
-			align: 'center'
-		},
-		{
-			title: '提醒方式',
-			dataIndex: 'remindType',
-			align: 'center'
-		},
-		{
-			title: '级别',
-			dataIndex: 'level',
-			align: 'center'
-		},
-		{
-			title: '电话号码',
-			dataIndex: 'phone',
-			align: 'center'
-		},
-		{
-			title: '操作',
-			dataIndex: 'action',
-			align: 'center',
-			scopedSlots: { customRender: 'action' }
-		}
-	]
-	// 表单数据
-	const formData = ref({
-		repeat: '1',
-		delayed: '0',
-		close: '1',
-		multistage: '0',
-		noticeway: ['1'],
-		loadData: [],
-		list: []
-	})
-
-	// 打开抽屉
-	const onOpen = (record) => {
-		visible.value = true
-		activeKey.value = 'object'
-		panes.value = []
-		newTabIndex.value = 1
-		if (record) {
-			formData.value = Object.assign({}, record)
-		} else {
-			formData.value = {
-				repeat: '1',
-				delayed: '0',
-				close: '1',
-				multistage: '0',
-				noticeway: ['1'],
-				loadData: [],
-				list: []
-			}
-		}
-	}
-	// 关闭抽屉
-	const onClose = () => {
-		formRef.value.resetFields()
-		visible.value = false
-	}
-
-	// 默认要校验的
-	const formRules = {
-		name: [required('请输入采集器名称')],
-		code: [required('请输入采集器编号')]
-	}
-
-	// 表格添加一行空数据
-	const tableAdd = () => {
-		const newRow = {
-			startTime: '00:00:00',
-			endTime: '23:59:59',
-			name: '',
-			level: '',
-			phone: ''
-		}
-		formData.value.loadData.push(newRow)
-	}
-
-	// 删除某一行
-	const tableDelete = (record, index) => {
-		formData.value.loadData.splice(index, 1)
-	}
-
-	// 验证并提交数据
-	const onSubmit = () => {
-		formRef.value
-			.validate()
-			.then(() => {
-				// 校验表格信息里面的表单是否有空数据
-				for (let i = 0; i < formData.value.loadData.length; i++) {
-					if (
-						!formData.value.loadData[i].startTime ||
-						!formData.value.loadData[i].endTime ||
-						!formData.value.loadData[i].name ||
-						!formData.value.loadData[i].remindType ||
-						!formData.value.loadData[i].level ||
-						!formData.value.loadData[i].phone
-					) {
-						console.log(i, 'xxxxxx')
-
-						message.warning(`请完善表格中的必填项`)
-					} else {
-						console.log(formData.value.list, '提交数据')
-						// moduleApi.submitForm(formData.value, formData.value.id).then(() => {
-						// 	onClose()
-						// 	emit('successful')
-						// })
-					}
-				}
-			})
-			.catch((error) => {
-				console.log(error)
-			})
-	}
-
-	// 新增或删除路数
-	const onEdit = (targetKey, action) => {
-		if (action === 'add') {
-			add()
-		} else {
-			remove(targetKey)
-		}
-	}
-	const activeKey = ref('object') //选中的tabs
-	const panes = ref([]) //tabs数组
-	const newTabIndex = ref(1)
-	// 添加tabs
-	const add = () => {
-		const newIndex = newTabIndex.value++
-		if (panes.value.length >= 5) return //最多只能5路
-		panes.value.push({
-			title: `${newIndex}路`,
-			key: newIndex
-		})
-
-		formData.value.list.push({
-			title: `${newIndex}路`,
-			key: newIndex
-		})
-	}
-
-	// 删除tabs
-	const remove = (targetKey) => {
-		let lastIndex = 0
-		panes.value.forEach((pane, i) => {
-			if (pane.key === targetKey) {
-				lastIndex = i - 1
-			}
-		})
-		panes.value = panes.value.filter((pane) => pane.key !== targetKey)
-		if (panes.value.length && activeKey.value === targetKey) {
-			if (lastIndex >= 0) {
-				activeKey.value = panes.value[lastIndex].key
-			} else {
-				activeKey.value = panes.value[0].key
-			}
-		}
-
-		if (panes.value.length == 0) {
-			activeKey.value = 'object'
-		}
-
-		formData.value.list = formData.value.list.filter((item) => item.key !== targetKey) //删除表单
-	}
-
-	// 调用这个函数将子组件的一些数据和方法暴露出去
-	defineExpose({
-		onOpen
-	})
-</script>
-
-<style lang="less" scoped>
-	.ant-tabs {
-		width: 100%;
-	}
-	:deep(.ant-col) {
-		margin-bottom: 10px;
-	}
-</style>

+ 0 - 262
snowy-admin-web/src/views/basicset/mem/form.vue

@@ -1,262 +0,0 @@
-<template>
-	<xn-form-container
-		:title="formData.id ? '编辑采集器' : '新增采集器'"
-		:width="'800px'"
-		:visible="visible"
-		:destroy-on-close="true"
-		@close="onClose"
-	>
-		<a-form
-			ref="formRef"
-			:model="formData"
-			:rules="formRules"
-			layout="inline"
-			:label-col="{ style: { width: '105px', justifyContent: 'end' } }"
-		>
-			<a-row :gutter="10">
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="设备型号" name="modelName">
-						<a-select
-							ref="select"
-							v-model:value="formData.modelName"
-							:options="modeOptions"
-							placeholder="请选择设备型号"
-							@change="modelNameChange"
-						/>
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="设备名称" name="deviceName">
-						<a-input v-model:value="formData.deviceName" placeholder="请输入设备名称" allow-clear />
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="设备编号" name="deviceCode">
-						<a-input v-model:value="formData.deviceCode" placeholder="请输入设备编号" allow-clear :maxlength="10" />
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="传感器总路数" name="sensorCount">
-						<a-input-number
-							v-model:value="formData.sensorCount"
-							placeholder="请输入传感器总路数"
-							allow-clear
-							:min="1"
-							:max="sensorRouteMax"
-							style="width: 100%"
-							:precision="0"
-							disabled
-						/>
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<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-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="排序:" name="sortCode">
-						<a-input-number class="xn-wd" v-model:value="formData.sortCode" :max="100" />
-					</a-form-item>
-				</a-col>
-
-				<div
-					class="form_item"
-					v-if="modeData.sensorType == 'W' || modeData.sensorType == 'WS' || modeData.sensorType == 'WSC'"
-				>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="温度上限" name="temperatureUp">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.temperatureUp"
-								placeholder="请输入温度上限"
-								allow-clear
-								disabled
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="温度下限" name="temperatureDown">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.temperatureDown"
-								placeholder="请输入温度下限"
-								allow-clear
-								disabled
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-				<div class="form_item" v-if="modeData.sensorType == 'WS' || modeData.sensorType == 'WSC'">
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="湿度上限" name="humidityUp">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.humidityUp"
-								placeholder="请输入湿度上限"
-								allow-clear
-								disabled
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="湿度下限" name="humidityDown">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.humidityDown"
-								placeholder="请输入湿度下限"
-								allow-clear
-								disabled
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-				<div class="form_item" v-if="modeData.sensorType == 'WSC'">
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="CO2上限" name="co2Up">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.co2Up"
-								placeholder="请输入CO2上限"
-								allow-clear
-								disabled
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="CO2下限" name="co2Down">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.co2Down"
-								placeholder="请输入CO2下限"
-								allow-clear
-								disabled
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-			</a-row>
-		</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, rules } from '@/utils/formRules'
-	import devicetypeApi from '@/api/basicset/devicetypeApi'
-	import memApi from '@/api/basicset/memApi'
-	const emit = defineEmits({ successful: null })
-	const visible = ref(false) // 默认是关闭状态
-	const formRef = ref()
-	const formData = ref({ sortCode: 99 }) // 表单数据
-	const modeOptions = ref([]) // 设备型号
-	const sensorRouteMax = ref(1) //传感器最大值默认1
-
-	// 默认要校验的
-	const formRules = {
-		deviceName: [required('请输入设备名称')],
-		deviceCode: [required('请输入设备编号'), rules.number],
-		modelName: [required('请选择设备型号')],
-		status: [required('请选择设备状态')],
-		sensorCount: [required('请输入传感器总路数')]
-	}
-
-	// 获取设备型号
-	const loadData = () => {
-		devicetypeApi.devicetypeList().then((res) => {
-			modeOptions.value = (res || []).map((item) => {
-				return {
-					...item,
-					value: item['id'],
-					label: item['name']
-				}
-			})
-		})
-	}
-
-	const modeData = ref({ sensorType: '' }) //选中的设备型号
-
-	// 选中设备型号获取上下限值
-	const modelNameChange = (value) => {
-		if (value) {
-			const data = modeOptions.value.find((item) => item.value === value)
-			modeData.value = data
-
-			formData.value.temperatureUp = data.temperatureUp
-			formData.value.temperatureDown = data.temperatureDown
-			formData.value.humidityUp = data.humidityUp
-			formData.value.humidityDown = data.humidityDown
-			formData.value.co2Up = data.co2Up
-			formData.value.co2Down = data.co2Down
-			formData.value.sensorCount = data.sensorCount
-			sensorRouteMax.value = data.sensorCount
-		}
-	}
-
-	// 打开抽屉
-	const onOpen = (record) => {
-		modeData.value = { sensorType: '' }
-		loadData()
-		visible.value = true
-		if (record) {
-			formData.value = Object.assign({}, record)
-			setTimeout(() => {
-				modelNameChange(formData.value.modelName)
-			}, 300)
-		} else {
-			formData.value = { sortCode: 99 }
-		}
-	}
-	// 关闭抽屉
-	const onClose = () => {
-		formRef.value.resetFields()
-		visible.value = false
-	}
-
-	// 验证并提交数据
-	const onSubmit = () => {
-		formRef.value
-			.validate()
-			.then(() => {
-				memApi.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;
-	}
-	.form_item {
-		width: 100%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-wrap: wrap;
-	}
-</style>

+ 0 - 235
snowy-admin-web/src/views/basicset/mem/index.vue

@@ -1,235 +0,0 @@
-<template>
-	<div class="table_item">
-		<s-table
-			ref="tableRef"
-			:columns="columns"
-			:data="loadData"
-			:row-key="(record) => record.id"
-			bordered
-			@resizeColumn="handleResizeColumn"
-		>
-			<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="deviceName">
-										<a-input v-model:value="searchFormState.deviceName" placeholder="请输入设备名称" /> </a-form-item
-								></a-col>
-								<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-									<a-form-item label="设备编号" name="deviceCode">
-										<a-input v-model:value="searchFormState.deviceCode" 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>
-			</template>
-			<template #bodyCell="{ column, record, index }">
-				<!-- 序号 -->
-				<template v-if="column.dataIndex === 'index'">{{ index + 1 }} </template>
-				<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 === 'action'">
-					<a-button type="link" size="small" @click="formRef.onOpen(record)">编辑</a-button>
-					<!-- <a-button type="link" size="small" @click="configformRef.onOpen(record)">配置</a-button> -->
-					<a-popconfirm title="确定要删除吗?" @confirm="deleteData(record)">
-						<a-button type="link" danger size="small">删除</a-button>
-					</a-popconfirm>
-				</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="2">{{ record.deviceName }}</a-descriptions-item>
-								<a-descriptions-item label="设备编号" :span="2">{{ record.deviceCode }}</a-descriptions-item>
-								<a-descriptions-item label="设备状态" :span="2">
-									{{ $TOOL.dictTypeData('COIDCHAIN', record.modelName) }}</a-descriptions-item
-								>
-								<a-descriptions-item label="创建时间" :span="2">{{}}</a-descriptions-item>
-							</a-descriptions>
-						</div>
-					</a-tab-pane>
-					<a-tab-pane key="2" tab="1路">
-						<div class="list">
-							<a-descriptions bordered size="small">
-								<a-descriptions-item label="传感器类型" :span="2">{{ '温度' }}</a-descriptions-item>
-								<a-descriptions-item label="传感器路数" :span="2">{{ '1' }}</a-descriptions-item>
-							</a-descriptions>
-						</div>
-					</a-tab-pane>
-				</a-tabs>
-			</template> -->
-		</s-table>
-
-		<Form ref="formRef" @successful="tableRef.refresh(true)" />
-		<configForm ref="configformRef" @successful="tableRef.refresh(true)" />
-	</div>
-</template>
-
-<script setup>
-	import memApi from '@/api/basicset/memApi'
-	import Form from './form.vue'
-	import configForm from './configForm.vue'
-	const formRef = ref()
-	const configformRef = ref()
-	const searchFormRef = ref()
-	const searchFormState = ref({})
-	const tableRef = ref()
-
-	const columns = [
-		{
-			title: '序号',
-			dataIndex: 'index',
-			align: 'center',
-			width: 50
-		},
-		{
-			title: '设备名称',
-			dataIndex: 'deviceName',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '设备编号',
-			dataIndex: 'deviceCode',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '设备型号',
-			dataIndex: 'typeName',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '最后心跳时间',
-			dataIndex: 'lastHeartbeatTime',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '设备状态',
-			dataIndex: 'status',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-
-		{
-			title: '传感器总路数',
-			dataIndex: 'sensorCount',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '最近登录时间',
-			dataIndex: 'lastLoginTime',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '排序码',
-			dataIndex: 'sortCode',
-			align: 'center',
-			ellipsis: true,
-			resizable: true,
-			sorter: true
-		},
-
-		{
-			title: '操作',
-			dataIndex: 'action',
-			align: 'center',
-			width: 150
-		}
-	]
-	// 可伸缩列
-	const handleResizeColumn = (w, col) => {
-		col.width = w
-	}
-
-	const loadData = (parameter) => {
-		return memApi.memPage(Object.assign(parameter, searchFormState.value)).then((res) => {
-			return res
-		})
-	}
-	// 重置
-	const reset = () => {
-		searchFormRef.value.resetFields()
-		tableRef.value.refresh(true)
-	}
-	// 删除
-	const deleteData = (record) => {
-		let params = [
-			{
-				id: record.id
-			}
-		]
-		memApi.memDelete(params).then(() => {
-			tableRef.value.refresh(true)
-			reset()
-		})
-	}
-</script>
-
-<style lang="less" scoped>
-	.table_item {
-		padding: 15px 20px;
-		background-color: #ffffff;
-		: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>

+ 0 - 377
snowy-admin-web/src/views/basicset/monitor/configForm.vue

@@ -1,377 +0,0 @@
-<template>
-	<xn-form-container title="监测点配置" :width="'800px'" :visible="visible" :destroy-on-close="true" @close="onClose">
-		<a-form
-			ref="formRef"
-			:model="formData"
-			:rules="formRules"
-			layout="inline"
-			:label-col="{ style: { width: '110px', justifyContent: 'end' } }"
-		>
-			<a-row :gutter="10">
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="监控对象" name="monitorTargetId">
-						<a-select
-							ref="select"
-							v-model:value="formData.monitorTargetId"
-							:options="monitorTargetOptions"
-							placeholder="请选择监控对象"
-						/>
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="点位名称" name="name">
-						<a-input v-model:value="formData.name" placeholder="请输入点位名称" allow-clear />
-					</a-form-item>
-				</a-col>
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="传感器类型" name="sensorType">
-						<a-select
-							ref="select"
-							v-model:value="formData.sensorType"
-							:options="sensorOptions"
-							placeholder="请选择传感器类型"
-							@change="sensorTypeChange"
-						/>
-					</a-form-item>
-				</a-col>
-
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="监控设备" name="monitorDeviceId">
-						<a-select
-							ref="select"
-							v-model:value="formData.monitorDeviceId"
-							:options="memListOptions"
-							placeholder="请选择监控设备"
-							@change="monitorDeviceIdChange"
-						/>
-					</a-form-item>
-				</a-col>
-
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="传感器编号" name="sensorCode">
-						<a-input v-model:value="formData.sensorCode" disabled placeholder="请输入传感器编号" allow-clear />
-					</a-form-item>
-				</a-col>
-
-				<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-					<a-form-item label="传感器路数" name="sensorRoute">
-						<a-input-number
-							v-model:value="formData.sensorRoute"
-							style="width: 100%"
-							:min="1"
-							:max="sensorRouteMax"
-							placeholder="请输入传感器路数"
-						/>
-					</a-form-item>
-				</a-col>
-
-				<div
-					class="form_item"
-					v-if="formData.sensorType == 'W' || formData.sensorType == 'WS' || formData.sensorType == 'WSC'"
-				>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="温度上限" name="temperatureUp">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.temperatureUp"
-								placeholder="请输入温度上限"
-								allow-clear
-								:min="temperatureMax.downMax"
-								:max="temperatureMax.upMax"
-								style="width: 100%"
-								:disabled="temperatureMax.upMax == null || temperatureMax.upMax == undefined"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="温度下限" name="temperatureDown">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.temperatureDown"
-								placeholder="请输入温度下限"
-								allow-clear
-								:min="temperatureMax.downMax"
-								:max="temperatureMax.upMax"
-								style="width: 100%"
-								:disabled="!temperatureMax.downMax == null || temperatureMax.downMax == undefined"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-
-				<div class="form_item" v-if="formData.sensorType == 'WS' || formData.sensorType == 'WSC'">
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="湿度上限" name="humidityUp">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.humidityUp"
-								placeholder="请输入湿度上限"
-								allow-clear
-								:min="humidityMax.downMax"
-								:max="humidityMax.upMax"
-								style="width: 100%"
-								:disabled="!humidityMax.upMax"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="湿度下限" name="humidityDown">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.humidityDown"
-								placeholder="请输入湿度下限"
-								allow-clear
-								:min="humidityMax.downMax"
-								:max="humidityMax.upMax"
-								style="width: 100%"
-								:disabled="!humidityMax.downMax"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-
-				<div class="form_item" v-if="formData.sensorType == 'WSC'">
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="CO2上限" name="co2Up">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.co2Up"
-								placeholder="请输入CO2上限"
-								allow-clear
-								:max="co2Max.upMax"
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-					<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-						<a-form-item label="CO2下限" name="co2Down">
-							<a-input-number
-								id="inputNumber"
-								v-model:value="formData.co2Down"
-								placeholder="请输入CO2下限"
-								allow-clear
-								:max="co2Max.downMax"
-								style="width: 100%"
-							/>
-						</a-form-item>
-					</a-col>
-				</div>
-			</a-row>
-		</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 tool from '@/utils/tool'
-	import { required } from '@/utils/formRules'
-	import locationApi from '@/api/basicset/locationApi.js'
-	import setupApi from '@/api/basicset/setupApi'
-	import memApi from '@/api/basicset/memApi'
-	const emit = defineEmits({ successful: null })
-	const visible = ref(false) // 默认是关闭状态
-	const formRef = ref()
-	const formData = ref() // 表单数据
-	const sensorOptions = tool.dictList('SENSORTYPE') // 传感器类型
-	const monitorTargetOptions = ref([]) // 监控对象
-	const memListOptions = ref([]) // 监控设备数据
-
-	const temperatureMax = ref({ upMax: Infinity, downMax: Infinity }) // 温度最大值
-	const humidityMax = ref({ upMax: Infinity, downMax: Infinity }) // 湿度最大值
-	const co2Max = ref({ upMax: Infinity, downMax: Infinity }) // CO2最大值
-
-	const sensorRouteMax = ref(1) //传感器最大值默认1
-
-	// 默认要校验的
-	const formRules = {
-		name: [required('请输入区域名称')],
-		monitorTargetId: [required('请选择监控对象')],
-		monitorDeviceId: [required('请选择监控设备')],
-		sensorType: [required('请选择传感器类型')],
-		sensorRoute: [required('请输入传感器路数')],
-		temperatureUp: [{ validator: validateTemperature, trigger: ['change', 'blur'] }],
-		temperatureDown: [{ validator: validateTemperature, trigger: ['change', 'blur'] }],
-		humidityUp: [{ validator: validateHumidity, trigger: ['change', 'blur'] }],
-		humidityDown: [{ validator: validateHumidity, trigger: ['change', 'blur'] }],
-		co2Up: [{ validator: validateCo2, trigger: ['change', 'blur'] }],
-		co2Down: [{ validator: validateCo2, trigger: ['change', 'blur'] }]
-	}
-
-	// 温度上下限校验
-	function validateTemperature(rule, value, callback) {
-		if (rule.field == 'temperatureDown') {
-			if (formData.value.temperatureUp !== null && value >= formData.value.temperatureUp) {
-				callback(new Error('温度下限不能大于或等于温度上限'))
-			} else {
-				callback()
-			}
-		} else if (rule.field == 'temperatureUp') {
-			if (formData.value.temperatureDown !== null && value <= formData.value.temperatureDown) {
-				callback(new Error('温度上限不能小于或等于温度下限'))
-			} else {
-				callback()
-			}
-		}
-	}
-
-	// 湿度上下限校验
-	function validateHumidity(rule, value, callback) {
-		if (rule.field == 'humidityDown') {
-			if (formData.value.humidityUp !== null && value >= formData.value.humidityUp) {
-				callback(new Error('湿度下限不能大于或等于湿度上限'))
-			} else {
-				callback()
-			}
-		} else if (rule.field == 'humidityUp') {
-			if (formData.value.humidityDown !== null && value <= formData.value.humidityDown) {
-				callback(new Error('湿度上限不能小于或等于湿度下限'))
-			} else {
-				callback()
-			}
-		}
-	}
-
-	// CO2上下限校验
-	function validateCo2(rule, value, callback) {
-		if (rule.field == 'co2Down') {
-			if (formData.value.co2Up !== null && value >= formData.value.co2Up) {
-				callback(new Error('CO2下限不能大于或等于CO2上限'))
-			} else {
-				callback()
-			}
-		} else if (rule.field == 'co2Up') {
-			if (formData.value.co2Down !== null && value <= formData.value.co2Down) {
-				callback(new Error('CO2上限不能小于或等于CO2下限'))
-			} else {
-				callback()
-			}
-		}
-	}
-
-	// 打开抽屉
-	const onOpen = (record) => {
-		setupListData()
-		visible.value = true
-		if (record) {
-			formData.value = Object.assign({}, record)
-			sensorType.value = formData.value.sensorType
-			memListData(sensorType.value)
-		} else {
-			formData.value = {}
-			memListData()
-		}
-	}
-	// 获取监控对象
-	const setupListData = () => {
-		setupApi.setupList({ isAll: false }).then((res) => {
-			monitorTargetOptions.value = (res || []).map((item) => {
-				return {
-					...item,
-					value: item['id'],
-					label: item['name']
-				}
-			})
-		})
-	}
-	const sensorType = ref() //选中的传感器类型
-	// 监控设备通过传感器类型来获取, sensorType可为空
-	const memListData = (value) => {
-		memApi.memList({ isAll: false, sensorType: value }).then((res) => {
-			memListOptions.value = (res || []).map((item) => {
-				return {
-					...item,
-					value: item['id'],
-					label: item['deviceName'],
-					modelName: item['modelName'],
-					deviceCode: item['deviceCode'],
-					sensorCount: item['sensorCount']
-				}
-			})
-		})
-	}
-
-	// 选中传感器类型
-	const sensorTypeChange = (value) => {
-		if (value) {
-			sensorType.value = value
-			memListData(value)
-		}
-	}
-
-	// 选中监控设备
-	const monitorDeviceIdChange = (value) => {
-		if (value) {
-			const data = memListOptions.value.find((item) => item.value === value)
-			modeData.value = data
-
-			formData.value.sensorCode = data.deviceCode //传感器编号
-			formData.value.modelName = data.modelName //监控设备型号
-			formData.value.deviceCode = data.deviceCode //冷链编号
-			formData.value.temperatureUp = data.temperatureUp //温度上限
-			formData.value.temperatureDown = data.temperatureDown //温度下限
-			formData.value.humidityUp = data.humidityUp //湿度上限
-			formData.value.humidityDown = data.humidityDown //湿度下限
-			formData.value.co2Up = data.co2Up //CO2上限
-			formData.value.co2Down = data.co2Down //CO2下限
-			sensorRouteMax.value = data.sensorCount //传感器路数的最大值
-
-			temperatureMax.value = {
-				upMax: data.temperatureUp,
-				downMax: data.temperatureDown
-			}
-			humidityMax.value = {
-				upMax: data.humidityUp,
-				downMax: data.humidityDown
-			}
-			co2Max.value = {
-				upMax: data.co2Up,
-				downMax: data.co2Down
-			}
-		}
-	}
-
-	// 关闭抽屉
-	const onClose = () => {
-		formRef.value.resetFields()
-		visible.value = false
-	}
-
-	// 验证并提交数据
-	const onSubmit = () => {
-		formRef.value
-			.validate()
-			.then(() => {
-				locationApi.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;
-	}
-
-	.form_item {
-		width: 100%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-wrap: wrap;
-	}
-</style>

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

@@ -1,474 +0,0 @@
-<template>
-	<xn-form-container
-		:title="formData.id ? '编辑监控对象' : '新增监控对象'"
-		:width="'60%'"
-		: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-tabs v-model:activeKey="activeKey" type="editable-card" @edit="onEdit">
-				<a-tab-pane tab="对象信息" key="object" :closable="false">
-					<a-row :gutter="10">
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="对象名称" name="name">
-								<a-input v-model:value="formData.name" placeholder="请输入对象名称" allow-clear />
-							</a-form-item>
-						</a-col>
-
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="对象编号">
-								<a-input v-model:value="formData.code" placeholder="请输入对象编号" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="对象ID">
-								<a-input v-model:value="formData.barcode" placeholder="请输入对象ID" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="对象类型" name="type">
-								<a-select ref="select" v-model:value="formData.type">
-									<a-select-option value="1">新装</a-select-option>
-									<a-select-option value="2">液氮罐</a-select-option>
-									<a-select-option value="3">转运箱</a-select-option>
-								</a-select>
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="品牌" name="brand">
-								<a-input v-model:value="formData.brand" placeholder="请输入品牌" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="型号" name="xh">
-								<a-input v-model:value="formData.xh" placeholder="请输入型号" allow-clear />
-							</a-form-item>
-						</a-col>
-
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="对象状态" name="state">
-								<a-select ref="select" v-model:value="formData.state" placeholder="请选择对象状态">
-									<a-select-option value="1">正常</a-select-option>
-									<a-select-option value="2">停用</a-select-option>
-								</a-select>
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="所属部门" name="division">
-								<a-input v-model:value="formData.division" placeholder="请输入所属部门" allow-clear />
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-							<a-form-item label="使用日期">
-								<a-date-picker
-									v-model:value="formData.collectionTime"
-									placeholder="请选择使用日期"
-									format="YYYY-MM-DD"
-									style="width: 100%"
-								/>
-							</a-form-item>
-						</a-col>
-						<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-							<a-form-item label="对象位置">
-								<a-input v-model:value="formData.location" placeholder="请输入对象位置" allow-clear />
-							</a-form-item>
-						</a-col>
-					</a-row>
-				</a-tab-pane>
-				<a-tab-pane tab="报警信息" key="report" :closable="false">
-					<a-form-item :label-col="{ style: { width: '200px' } }">
-						<template #label>
-							<a-tooltip>
-								<template #title>
-									重复通知间隔:同一设备同一故障类型出现报警进行过一次报警通知后,进行下一次报普通知的间隔时间,如果在这个时间间隔内该设备同一故障类型
-									还在产生报警则不再进行通知。
-									最多报警次数:同一设备同一故障类型连续报警最多报警通知次数,在达到最多报警次数后如果报警还未及时处理,系统也不再进行报警通知。
-									延时时间:为屏蔽误报,系统报警在达到延时时间之后才进行报警通知。
-								</template>
-								<question-circle-outlined />
-							</a-tooltip>
-							重复发送通知:
-						</template>
-
-						<a-radio-group v-model:value="formData.repeat">
-							<a-radio value="1">1次</a-radio>
-							<a-radio value="2">多次</a-radio>
-						</a-radio-group>
-					</a-form-item>
-					<a-form-item label="延时报警" :label-col="{ style: { width: '200px' } }">
-						<a-radio-group v-model:value="formData.delayed">
-							<a-radio value="1">是</a-radio>
-							<a-radio value="0">否</a-radio>
-						</a-radio-group>
-					</a-form-item>
-					<a-form-item label="报警关闭发送通知" :label-col="{ style: { width: '200px' } }">
-						<a-radio-group v-model:value="formData.close">
-							<a-radio value="1">是</a-radio>
-							<a-radio value="0">否</a-radio>
-						</a-radio-group>
-					</a-form-item>
-					<a-form-item label="多级报警" :label-col="{ style: { width: '200px' } }">
-						<a-radio-group v-model:value="formData.multistage">
-							<a-radio value="1">是</a-radio>
-							<a-radio value="0">否</a-radio>
-						</a-radio-group>
-					</a-form-item>
-
-					<a-form-item label="报警通知方式" :label-col="{ style: { width: '200px' } }">
-						<a-checkbox-group v-model:value="formData.noticeway" style="width: 100%">
-							<a-checkbox value="1">短信</a-checkbox>
-							<a-checkbox value="2">电话</a-checkbox>
-							<a-checkbox value="3">微信</a-checkbox>
-							<a-checkbox value="4">电子邮件</a-checkbox>
-							<a-checkbox value="5">弹出</a-checkbox>
-							<a-checkbox value="6">音乐</a-checkbox>
-						</a-checkbox-group>
-					</a-form-item>
-
-					<!-- 表格区域 -->
-					<div>
-						<a-button type="primary" style="margin-left: 90%; margin-bottom: 5px" @click="tableAdd">
-							<template #icon><plus-outlined /></template>新增
-						</a-button>
-						<a-table
-							ref="tableRef"
-							bordered
-							:columns="columns"
-							:data-source="formData.loadData"
-							:row-key="(record) => record.startTime"
-							:pagination="false"
-						>
-							<template #headerCell="{ column }">
-								<template v-if="column.dataIndex === 'startTime'">
-									<text style="color: #e74032"> * </text>开始时间
-								</template>
-								<template v-if="column.dataIndex === 'endTime'">
-									<text style="color: #e74032"> * </text>结束时间
-								</template>
-								<template v-if="column.dataIndex === 'name'"> <text style="color: #e74032"> * </text>姓名 </template>
-								<template v-if="column.dataIndex === 'remindType'">
-									<text style="color: #e74032"> * </text>提醒方式
-								</template>
-								<template v-if="column.dataIndex === 'level'"> <text style="color: #e74032"> * </text>级别 </template>
-								<template v-if="column.dataIndex === 'phone'">
-									<text style="color: #e74032"> * </text>电话号码
-								</template>
-							</template>
-							<template #bodyCell="{ column, record, index }">
-								<!-- 表格内容 -->
-								<template v-if="column.dataIndex === 'startTime'">
-									<a-time-picker v-model:value="record.startTime" value-format="HH:mm:ss" style="width: 100%" />
-								</template>
-
-								<template v-if="column.dataIndex === 'endTime'">
-									<a-time-picker v-model:value="record.endTime" value-format="HH:mm:ss" style="width: 100%" />
-								</template>
-
-								<template v-if="column.dataIndex === 'name'">
-									<a-input v-model:value="record.name" placeholder="请输入姓名" />
-								</template>
-
-								<template v-if="column.dataIndex === 'remindType'">
-									<a-select v-model:value="record.remindType" placeholder="请选择提醒方式" style="width: 100%">
-										<a-select-option value="1">短信报警</a-select-option>
-										<a-select-option value="2">电话报警</a-select-option>
-										<a-select-option value="3">微信公众号报警</a-select-option>
-										<a-select-option value="4">邮件报警</a-select-option>
-										<a-select-option value="5">弹出报警</a-select-option>
-										<a-select-option value="6">音乐报警</a-select-option>
-									</a-select>
-								</template>
-
-								<template v-if="column.dataIndex === 'level'">
-									<a-select v-model:value="record.level" placeholder="请选择级别" style="width: 100px">
-										<a-select-option value="1">1</a-select-option>
-										<a-select-option value="2">2</a-select-option>
-										<a-select-option value="3">3</a-select-option>
-										<a-select-option value="4">4</a-select-option>
-										<a-select-option value="5">5</a-select-option>
-									</a-select>
-								</template>
-
-								<template v-if="column.dataIndex === 'phone'">
-									<a-input v-model:value="record.phone" placeholder="请输入电话号码" />
-								</template>
-
-								<template v-if="column.dataIndex === 'action'">
-									<a-popconfirm title="确定要删除吗?" @confirm="tableDelete(record, index)">
-										<a-button type="link" danger size="small">删除</a-button>
-									</a-popconfirm>
-								</template>
-							</template>
-						</a-table>
-					</div>
-				</a-tab-pane>
-
-				<a-tab-pane v-for="pane in panes" :key="pane.key" :tab="pane.title" :closable="pane.closable">
-					<!-- 新增监控点-->
-					<div v-for="(item, index) in formData.list" :key="index">
-						<a-row :gutter="10" v-if="activeKey == item.key">
-							<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-								<a-form-item label="采集设备">
-									<a-input v-model:value="item.device" placeholder="请输入采集设备" allow-clear />
-								</a-form-item>
-							</a-col>
-							<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-								<a-form-item label="传感器路数">
-									<a-input v-model:value="item.number" placeholder="请输入传感器路数" allow-clear />
-								</a-form-item>
-							</a-col>
-							<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
-								<a-form-item label="监控点名称">
-									<a-input v-model:value="item.paneName" placeholder="请输入监控点名称" allow-clear />
-								</a-form-item>
-							</a-col>
-							<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-								<a-form-item label="采集值1上限">
-									<a-input v-model:value="item.upper" placeholder="请输入采集值1上限" allow-clear />
-								</a-form-item>
-							</a-col>
-							<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
-								<a-form-item label="采集值1下限">
-									<a-input v-model:value="item.lower" placeholder="请输入采集值1下限" allow-clear />
-								</a-form-item>
-							</a-col>
-							<a-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
-								<a-form-item
-									label="正常采集间隔(分钟)"
-									:label-col="{ style: { width: '130px', justifyContent: 'end' } }"
-								>
-									<a-input v-model:value="item.interval" placeholder="请输入正常采集间隔" allow-clear />
-								</a-form-item>
-							</a-col>
-						</a-row>
-					</div>
-				</a-tab-pane>
-			</a-tabs>
-		</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 { message } from 'ant-design-vue'
-	import { required } from '@/utils/formRules'
-	import setupApi from '@/api/basicset/setupApi'
-	// 默认是关闭状态
-	const visible = ref(false)
-	const emit = defineEmits({ successful: null })
-	const formRef = ref()
-
-	const tableRef = ref()
-
-	const columns = [
-		{
-			title: '开始时间',
-			dataIndex: 'startTime',
-			align: 'center'
-		},
-		{
-			title: '结束时间',
-			dataIndex: 'endTime',
-			align: 'center'
-		},
-		{
-			title: '姓名',
-			dataIndex: 'name',
-			align: 'center'
-		},
-		{
-			title: '提醒方式',
-			dataIndex: 'remindType',
-			align: 'center'
-		},
-		{
-			title: '级别',
-			dataIndex: 'level',
-			align: 'center'
-		},
-		{
-			title: '电话号码',
-			dataIndex: 'phone',
-			align: 'center'
-		},
-		{
-			title: '操作',
-			dataIndex: 'action',
-			align: 'center',
-			scopedSlots: { customRender: 'action' }
-		}
-	]
-	// 表单数据
-	const formData = ref({
-		repeat: '1',
-		delayed: '0',
-		close: '0',
-		multistage: '0',
-		noticeway: ['1'],
-		loadData: [],
-		list: []
-	})
-	// 默认要校验的
-	const formRules = {
-		name: [required('请输入对象名称')],
-		type: [required('请选择对象类型')],
-		brand: [required('请输入品牌')],
-		xh: [required('请输入型号')],
-		division: [required('请输入所属部门')],
-		state: [required('请选择对象状态')]
-	}
-
-	// 打开抽屉
-	const onOpen = (record) => {
-		visible.value = true
-		activeKey.value = 'object'
-		panes.value = []
-		newTabIndex.value = 1
-		if (record) {
-			formData.value = Object.assign({}, record)
-		} else {
-			formData.value = {
-				repeat: '1',
-				delayed: '0',
-				close: '0',
-				multistage: '0',
-				noticeway: ['1'],
-				loadData: [],
-				list: []
-			}
-		}
-	}
-	// 关闭抽屉
-	const onClose = () => {
-		formRef.value.resetFields()
-		visible.value = false
-	}
-
-	// 表格添加一行空数据
-	const tableAdd = () => {
-		const newRow = {
-			startTime: '00:00:00',
-			endTime: '23:59:59',
-			name: '',
-			level: '',
-			phone: ''
-		}
-		formData.value.loadData.push(newRow)
-	}
-
-	// 删除某一行
-	const tableDelete = (record, index) => {
-		formData.value.loadData.splice(index, 1)
-	}
-
-	// 验证并提交数据
-	const onSubmit = () => {
-		formRef.value
-			.validate()
-			.then(() => {
-				// 校验表格信息里面的表单是否有空数据
-				for (let i = 0; i < formData.value.loadData.length; i++) {
-					if (
-						!formData.value.loadData[i].startTime ||
-						!formData.value.loadData[i].endTime ||
-						!formData.value.loadData[i].name ||
-						!formData.value.loadData[i].remindType ||
-						!formData.value.loadData[i].level ||
-						!formData.value.loadData[i].phone
-					) {
-						console.log(i, 'xxxxxx')
-
-						message.warning(`请完善表格中的必填项`)
-					} else {
-						console.log(formData.value.list, '提交数据')
-						// setupApi.submitForm(formData.value, formData.value.id).then(() => {
-						// 	onClose()
-						// 	emit('successful')
-						// })
-					}
-				}
-			})
-			.catch((error) => {
-				console.log(error)
-			})
-	}
-
-	// 新增或删除监控点
-	const onEdit = (targetKey, action) => {
-		if (action === 'add') {
-			add()
-		} else {
-			remove(targetKey)
-		}
-	}
-	const activeKey = ref('object') //选中的tabs
-	const panes = ref([]) //tabs数组
-	const newTabIndex = ref(1)
-	// 添加tabs
-	const add = () => {
-		const newIndex = newTabIndex.value++
-		if (panes.value.length >= 5) return //最多只能5个监控点
-		panes.value.push({
-			title: `监控点${newIndex}`,
-			key: newIndex
-		})
-
-		formData.value.list.push({
-			title: `监控点${newIndex}`,
-			paneName: `监控点${newIndex}`,
-			key: newIndex,
-			interval: 10,
-			upper: 100,
-			lower: -100
-		})
-	}
-
-	// 删除tabs
-	const remove = (targetKey) => {
-		let lastIndex = 0
-		panes.value.forEach((pane, i) => {
-			if (pane.key === targetKey) {
-				lastIndex = i - 1
-			}
-		})
-		panes.value = panes.value.filter((pane) => pane.key !== targetKey)
-		if (panes.value.length && activeKey.value === targetKey) {
-			if (lastIndex >= 0) {
-				activeKey.value = panes.value[lastIndex].key
-			} else {
-				activeKey.value = panes.value[0].key
-			}
-		}
-
-		if (panes.value.length == 0) {
-			activeKey.value = 'object'
-		}
-
-		formData.value.list = formData.value.list.filter((item) => item.key !== targetKey) //删除表单
-	}
-
-	// 调用这个函数将子组件的一些数据和方法暴露出去
-	defineExpose({
-		onOpen
-	})
-</script>
-
-<style lang="less" scoped>
-	.ant-tabs {
-		width: 100%;
-	}
-	:deep(.ant-col) {
-		margin-bottom: 10px;
-	}
-</style>

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

@@ -1,96 +0,0 @@
-<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>
-
-		<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>

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

@@ -1,73 +0,0 @@
-<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>

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

@@ -1,292 +0,0 @@
-<template>
-	<div class="table_item">
-		<s-table ref="tableRef" :columns="columns" :data="loadData" :row-key="(record) => record.code" bordered>
-			<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, index }">
-				<!-- 序号 -->
-				<template v-if="column.dataIndex === 'index'">{{ index + 1 }} </template>
-				<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: 'index',
-			align: 'center',
-			width: 50
-		},
-		{
-			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>

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

@@ -1,254 +0,0 @@
-<template>
-	<div class="table_item">
-		<s-table
-			ref="tableRef"
-			:columns="columns"
-			:data="loadData"
-			:row-key="(record) => record.id"
-			bordered
-			@resizeColumn="handleResizeColumn"
-		>
-			<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 class="xn-mg08">
-							<template #icon><CloudUploadOutlined /> </template>导入
-						</a-button>
-						<a-button>
-							<template #icon><download-outlined /></template>导出
-						</a-button>
-					</div> -->
-				</div>
-			</template>
-			<template #bodyCell="{ column, record, index }">
-				<!-- 序号 -->
-				<template v-if="column.dataIndex === 'index'">{{ index + 1 }} </template>
-				<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" @click="leaveFor('/biz/location', record)">监测点配置</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="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 router from '@/router'
-	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: 'index',
-			align: 'center',
-			width: 50
-		},
-		{
-			title: '对象名称',
-			dataIndex: 'name',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '对象状态',
-			dataIndex: 'status',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '监控位置区域',
-			dataIndex: 'monitorPoint',
-			align: 'center',
-			ellipsis: true,
-			resizable: true
-		},
-		{
-			title: '操作',
-			dataIndex: 'action',
-			align: 'center',
-			width: 200
-		}
-	]
-	// 可伸缩列
-	const handleResizeColumn = (w, col) => {
-		col.width = w
-	}
-
-	const loadData = (parameter) => {
-		return setupApi.setupPage(Object.assign(parameter, searchFormState.value)).then((res) => {
-			return res
-		})
-	}
-
-	// 跳转到监测点界面
-	const leaveFor = (url, record) => {
-		router.push({
-			path: url,
-			query: {
-				id: record.id
-			}
-		})
-	}
-	// 重置
-	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>

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

@@ -1,342 +0,0 @@
-<template>
-	<div class="table_item">
-		<s-table ref="tableRef" :columns="columns" :data="loadData" :row-key="(record) => record.code" bordered>
-			<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, index }">
-				<!-- 序号 -->
-				<template v-if="column.dataIndex === 'index'">{{ index + 1 }} </template>
-				<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: 'index',
-			align: 'center',
-			width: 50
-		},
-		{
-			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>