|
@@ -14,19 +14,30 @@
|
|
:label-col="{ style: { width: '110px', justifyContent: 'end' } }"
|
|
:label-col="{ style: { width: '110px', justifyContent: 'end' } }"
|
|
>
|
|
>
|
|
<a-row :gutter="10">
|
|
<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="请选择监控对象"
|
|
|
|
+ disabled
|
|
|
|
+ />
|
|
|
|
+ </a-form-item>
|
|
|
|
+ </a-col>
|
|
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-form-item label="点位名称" name="name">
|
|
<a-form-item label="点位名称" name="name">
|
|
<a-input v-model:value="formData.name" placeholder="请输入点位名称" allow-clear />
|
|
<a-input v-model:value="formData.name" placeholder="请输入点位名称" allow-clear />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
-
|
|
|
|
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
- <a-form-item label="监控对象" name="monitorTargetId">
|
|
|
|
|
|
+ <a-form-item label="传感器类型" name="sensorType">
|
|
<a-select
|
|
<a-select
|
|
ref="select"
|
|
ref="select"
|
|
- v-model:value="formData.monitorTargetId"
|
|
|
|
- :options="monitorTargetOptions"
|
|
|
|
- placeholder="请选择监控对象"
|
|
|
|
|
|
+ v-model:value="formData.sensorType"
|
|
|
|
+ :options="sensorOptions"
|
|
|
|
+ placeholder="请选择传感器类型"
|
|
|
|
+ @change="sensorTypeChange"
|
|
/>
|
|
/>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
@@ -43,36 +54,40 @@
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
|
|
|
|
- <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
|
|
|
|
+ <a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" v-if="formData.monitorDeviceId">
|
|
<a-form-item label="传感器编号" name="sensorCode">
|
|
<a-form-item label="传感器编号" name="sensorCode">
|
|
<a-input v-model:value="formData.sensorCode" disabled placeholder="请输入传感器编号" allow-clear />
|
|
<a-input v-model:value="formData.sensorCode" disabled placeholder="请输入传感器编号" allow-clear />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</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-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" v-if="formData.monitorDeviceId">
|
|
|
|
+ <a-form-item label="传感器路数" name="sensorRoute">
|
|
|
|
+ <a-radio-group v-model:value="formData.sensorRoute">
|
|
|
|
+ <a-radio-button v-for="i in sensorRouteMax" :key="i" :value="i" :disabled="isRouteDisabled(i)">
|
|
|
|
+ {{ i }}路
|
|
|
|
+ </a-radio-button>
|
|
|
|
+ </a-radio-group>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</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"
|
|
|
|
|
|
+
|
|
|
|
+ <!-- 报警接收人 -->
|
|
|
|
+ <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
|
+ <a-form-item label="报警接收人" name="alarmUsers">
|
|
|
|
+ <a-select
|
|
|
|
+ v-model:value="formData.alarmUsers"
|
|
|
|
+ mode="multiple"
|
|
style="width: 100%"
|
|
style="width: 100%"
|
|
- :min="1"
|
|
|
|
- :max="sensorRouteMax"
|
|
|
|
- placeholder="请输入传感器路数"
|
|
|
|
- />
|
|
|
|
|
|
+ placeholder="请选择报警接收人"
|
|
|
|
+ :options="alarmUsersOptions"
|
|
|
|
+ :field-names="{ label: 'userName', value: 'openId' }"
|
|
|
|
+ ></a-select>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</a-col>
|
|
|
|
|
|
- <!-- 温湿度传感器就显示温度上限、温度下限,湿度上限、湿度下限.CO2传感器就显示CO2上限、CO2下限,若监控设备没有设置上下限,则表单禁用状态 -->
|
|
|
|
- <div v-if="formData.sensorType && formData.sensorType !== 'CO2传感器'" class="form_item">
|
|
|
|
|
|
+ <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-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-form-item label="温度上限" name="temperatureUp">
|
|
<a-form-item label="温度上限" name="temperatureUp">
|
|
<a-input-number
|
|
<a-input-number
|
|
@@ -101,6 +116,9 @@
|
|
/>
|
|
/>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
</a-col>
|
|
</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-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-form-item label="湿度上限" name="humidityUp">
|
|
<a-form-item label="湿度上限" name="humidityUp">
|
|
<a-input-number
|
|
<a-input-number
|
|
@@ -131,7 +149,7 @@
|
|
</a-col>
|
|
</a-col>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <div v-if="formData.sensorType && formData.sensorType == 'CO2传感器'" class="form_item">
|
|
|
|
|
|
+ <div class="form_item" v-if="formData.sensorType == 'WSC'">
|
|
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
|
<a-form-item label="CO2上限" name="co2Up">
|
|
<a-form-item label="CO2上限" name="co2Up">
|
|
<a-input-number
|
|
<a-input-number
|
|
@@ -176,10 +194,11 @@
|
|
const emit = defineEmits({ successful: null })
|
|
const emit = defineEmits({ successful: null })
|
|
const visible = ref(false) // 默认是关闭状态
|
|
const visible = ref(false) // 默认是关闭状态
|
|
const formRef = ref()
|
|
const formRef = ref()
|
|
- const formData = ref() // 表单数据
|
|
|
|
|
|
+ const formData = ref({ alarmUsers: [] }) // 表单数据
|
|
const sensorOptions = tool.dictList('SENSORTYPE') // 传感器类型
|
|
const sensorOptions = tool.dictList('SENSORTYPE') // 传感器类型
|
|
const monitorTargetOptions = ref([]) // 监控对象
|
|
const monitorTargetOptions = ref([]) // 监控对象
|
|
const memListOptions = ref([]) // 监控设备数据
|
|
const memListOptions = ref([]) // 监控设备数据
|
|
|
|
+ const alarmUsersOptions = ref([]) // 报警接收人数据
|
|
|
|
|
|
const temperatureMax = ref({ upMax: Infinity, downMax: Infinity }) // 温度最大值
|
|
const temperatureMax = ref({ upMax: Infinity, downMax: Infinity }) // 温度最大值
|
|
const humidityMax = ref({ upMax: Infinity, downMax: Infinity }) // 湿度最大值
|
|
const humidityMax = ref({ upMax: Infinity, downMax: Infinity }) // 湿度最大值
|
|
@@ -194,6 +213,7 @@
|
|
monitorDeviceId: [required('请选择监控设备')],
|
|
monitorDeviceId: [required('请选择监控设备')],
|
|
sensorType: [required('请选择传感器类型')],
|
|
sensorType: [required('请选择传感器类型')],
|
|
sensorRoute: [required('请输入传感器路数')],
|
|
sensorRoute: [required('请输入传感器路数')],
|
|
|
|
+ alarmUsers: [required('请选择报警接收人')],
|
|
temperatureUp: [{ validator: validateTemperature, trigger: ['change', 'blur'] }],
|
|
temperatureUp: [{ validator: validateTemperature, trigger: ['change', 'blur'] }],
|
|
temperatureDown: [{ validator: validateTemperature, trigger: ['change', 'blur'] }],
|
|
temperatureDown: [{ validator: validateTemperature, trigger: ['change', 'blur'] }],
|
|
humidityUp: [{ validator: validateHumidity, trigger: ['change', 'blur'] }],
|
|
humidityUp: [{ validator: validateHumidity, trigger: ['change', 'blur'] }],
|
|
@@ -255,17 +275,25 @@
|
|
|
|
|
|
// 打开抽屉
|
|
// 打开抽屉
|
|
const onOpen = (record) => {
|
|
const onOpen = (record) => {
|
|
- loadData()
|
|
|
|
|
|
+ setupListData()
|
|
visible.value = true
|
|
visible.value = true
|
|
if (record) {
|
|
if (record) {
|
|
formData.value = Object.assign({}, record)
|
|
formData.value = Object.assign({}, record)
|
|
|
|
+
|
|
|
|
+ // 报警接收人回显
|
|
|
|
+ if (formData.value.alarmUsers && formData.value.alarmUsers.length > 0) {
|
|
|
|
+ formData.value.alarmUsers = formData.value.alarmUsers.map((item) => item.openId)
|
|
|
|
+ }
|
|
|
|
+ sensorType.value = formData.value.sensorType
|
|
|
|
+
|
|
|
|
+ memListData(sensorType.value)
|
|
} else {
|
|
} else {
|
|
- formData.value = {}
|
|
|
|
|
|
+ formData.value = { alarmUsers: [] }
|
|
|
|
+ memListData()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- const loadData = () => {
|
|
|
|
- // 获取监控对象
|
|
|
|
|
|
+ // 获取监控对象 以及获取报警接收人的数据
|
|
|
|
+ const setupListData = () => {
|
|
setupApi.setupList({ isAll: false }).then((res) => {
|
|
setupApi.setupList({ isAll: false }).then((res) => {
|
|
monitorTargetOptions.value = (res || []).map((item) => {
|
|
monitorTargetOptions.value = (res || []).map((item) => {
|
|
return {
|
|
return {
|
|
@@ -274,9 +302,15 @@
|
|
label: item['name']
|
|
label: item['name']
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
+ const list = monitorTargetOptions.value.find((item) => item.value === formData.value.monitorTargetId)
|
|
|
|
+ alarmUsersOptions.value = list.alarmUsers || []
|
|
})
|
|
})
|
|
- // 获取监控设备
|
|
|
|
- memApi.memList({ isAll: false }).then((res) => {
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const sensorType = ref() //选中的传感器类型
|
|
|
|
+ // 监控设备通过传感器类型来获取, sensorType可为空
|
|
|
|
+ const memListData = (value) => {
|
|
|
|
+ memApi.memList({ isAll: false, sensorType: value }).then((res) => {
|
|
memListOptions.value = (res || []).map((item) => {
|
|
memListOptions.value = (res || []).map((item) => {
|
|
return {
|
|
return {
|
|
...item,
|
|
...item,
|
|
@@ -290,19 +324,34 @@
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 选中传感器类型
|
|
|
|
+ const sensorTypeChange = (value) => {
|
|
|
|
+ if (value) {
|
|
|
|
+ formData.value.monitorDeviceId = null
|
|
|
|
+ formData.value.sensorRoute = null
|
|
|
|
+ sensorRouteMax.value = 1
|
|
|
|
+ sensorType.value = value
|
|
|
|
+ memListData(value)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// 选中监控设备
|
|
// 选中监控设备
|
|
const monitorDeviceIdChange = (value) => {
|
|
const monitorDeviceIdChange = (value) => {
|
|
if (value) {
|
|
if (value) {
|
|
|
|
+ askRegionByDeviceIdData(value)
|
|
const data = memListOptions.value.find((item) => item.value === value)
|
|
const data = memListOptions.value.find((item) => item.value === value)
|
|
- 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下限
|
|
|
|
|
|
+ formData.value = {
|
|
|
|
+ ...formData.value,
|
|
|
|
+ sensorCode: data.deviceCode, //传感器编号
|
|
|
|
+ modelName: data.modelName, //监控设备型号
|
|
|
|
+ deviceCode: data.deviceCode, //冷链编号
|
|
|
|
+ temperatureUp: data.temperatureUp, //温度上限
|
|
|
|
+ temperatureDown: data.temperatureDown, //温度下限
|
|
|
|
+ humidityUp: data.humidityUp, //湿度上限
|
|
|
|
+ humidityDown: data.humidityDown, //湿度下限
|
|
|
|
+ co2Up: data.co2Up, //CO2上限
|
|
|
|
+ co2Down: data.co2Down //CO2下限
|
|
|
|
+ }
|
|
sensorRouteMax.value = data.sensorCount //传感器路数的最大值
|
|
sensorRouteMax.value = data.sensorCount //传感器路数的最大值
|
|
|
|
|
|
temperatureMax.value = {
|
|
temperatureMax.value = {
|
|
@@ -317,15 +366,23 @@
|
|
upMax: data.co2Up,
|
|
upMax: data.co2Up,
|
|
downMax: data.co2Down
|
|
downMax: data.co2Down
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- console.log(humidityMax.value, 'xxxx')
|
|
|
|
|
|
+ const useSensorRoute = ref([]) //已使用的传感器路数
|
|
|
|
+ // 根据检测设备id获取已使用的路数
|
|
|
|
+ const askRegionByDeviceIdData = (value) => {
|
|
|
|
+ if (value) {
|
|
|
|
+ memApi.getRegionByDeviceIdData({ deviceId: value }).then((res) => {
|
|
|
|
+ useSensorRoute.value = res
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- // 关闭抽屉
|
|
|
|
- const onClose = () => {
|
|
|
|
- formRef.value.resetFields()
|
|
|
|
- visible.value = false
|
|
|
|
|
|
+ // 检查该路是否已被禁用
|
|
|
|
+ const isRouteDisabled = (route) => {
|
|
|
|
+ // 通过遍历useSensorRoute中的数据,判断该路是否已被占用
|
|
|
|
+ return useSensorRoute.value.some((item) => item.sensorRoute === route)
|
|
}
|
|
}
|
|
|
|
|
|
// 验证并提交数据
|
|
// 验证并提交数据
|
|
@@ -333,7 +390,11 @@
|
|
formRef.value
|
|
formRef.value
|
|
.validate()
|
|
.validate()
|
|
.then(() => {
|
|
.then(() => {
|
|
- locationApi.submitForm(formData.value, formData.value.id).then(() => {
|
|
|
|
|
|
+ const parameter = {
|
|
|
|
+ ...formData.value,
|
|
|
|
+ alarmUsers: alarmUsersOptions.value.filter((user) => formData.value.alarmUsers.includes(user.openId))
|
|
|
|
+ }
|
|
|
|
+ locationApi.submitForm(parameter, formData.value.id).then(() => {
|
|
onClose()
|
|
onClose()
|
|
emit('successful')
|
|
emit('successful')
|
|
})
|
|
})
|
|
@@ -343,6 +404,14 @@
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 关闭抽屉
|
|
|
|
+ const onClose = () => {
|
|
|
|
+ memListOptions.value = []
|
|
|
|
+
|
|
|
|
+ formRef.value.resetFields()
|
|
|
|
+ visible.value = false
|
|
|
|
+ }
|
|
|
|
+
|
|
// 调用这个函数将子组件的一些数据和方法暴露出去
|
|
// 调用这个函数将子组件的一些数据和方法暴露出去
|
|
defineExpose({
|
|
defineExpose({
|
|
onOpen
|
|
onOpen
|