From ab389a5a6b329b15a655340ba7b87bce7fd7871d Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 24 十二月 2025 17:16:19 +0800
Subject: [PATCH] 添加新增设备自动生成编码
---
mes-web/src/views/device/DeviceEditDialog.vue | 487 +++++++++++++++--------------------------------------
1 files changed, 138 insertions(+), 349 deletions(-)
diff --git a/mes-web/src/views/device/DeviceEditDialog.vue b/mes-web/src/views/device/DeviceEditDialog.vue
index 888cc2b..63123c5 100644
--- a/mes-web/src/views/device/DeviceEditDialog.vue
+++ b/mes-web/src/views/device/DeviceEditDialog.vue
@@ -31,30 +31,34 @@
</el-form-item>
<el-form-item label="璁惧缂栫爜" prop="deviceCode">
- <el-input
- v-model="deviceForm.deviceCode"
- placeholder="璇疯緭鍏ヨ澶囩紪鐮�"
- maxlength="50"
- :disabled="isEdit"
- />
+ <template v-if="isEdit">
+ <el-input
+ v-model="deviceForm.deviceCode"
+ maxlength="50"
+ disabled
+ />
+ </template>
+ <template v-else>
+ <el-tag type="info">淇濆瓨鍚庤嚜鍔ㄧ敓鎴�</el-tag>
+ </template>
</el-form-item>
<el-form-item label="璁惧绫诲瀷" prop="deviceType">
- <el-select v-model="deviceForm.deviceType" placeholder="閫夋嫨璁惧绫诲瀷" style="width: 100%;">
- <el-option label="涓婂ぇ杞�" value="涓婂ぇ杞�" />
- <el-option label="澶х悊鐗�" value="澶х悊鐗�" />
- <el-option label="鐜荤拑瀛樺偍" value="鐜荤拑瀛樺偍" />
+ <el-select v-model="deviceForm.deviceType" placeholder="閫夋嫨璁惧绫诲瀷" style="width: 100%;" :loading="deviceTypesLoading">
+ <el-option
+ v-for="type in deviceTypes"
+ :key="type"
+ :label="type"
+ :value="type"
+ />
</el-select>
</el-form-item>
- <el-form-item label="PLC绫诲瀷" prop="plcType">
- <el-select v-model="deviceForm.plcType" placeholder="閫夋嫨PLC绫诲瀷" style="width: 100%;" clearable>
+ <el-form-item label="閫氳绫诲瀷" prop="plcType">
+ <el-select v-model="deviceForm.plcType" placeholder="閫夋嫨閫氳绫诲瀷" style="width: 100%;" clearable>
<el-option label="瑗块棬瀛� S7-1200" value="S1200" />
<el-option label="瑗块棬瀛� S7-1500" value="S1500" />
- <el-option label="瑗块棬瀛� S7-400" value="S400" />
- <el-option label="瑗块棬瀛� S7-300" value="S300" />
- <el-option label="瑗块棬瀛� S7-200" value="S200" />
- <el-option label="瑗块棬瀛� S7-200 SMART" value="S200_SMART" />
+ <el-option label="Modbus TCP" value="MODBUS" />
</el-select>
</el-form-item>
@@ -105,22 +109,7 @@
/>
</el-form-item>
- <el-form-item label="閫氳鍗忚" prop="protocolType">
- <el-select
- v-model="deviceForm.protocolType"
- placeholder="閫夋嫨閫氳鍗忚"
- style="width: 100%;"
- @change="handleProtocolTypeChange"
- >
- <el-option label="S7 Communication" value="S7 Communication" />
- <el-option label="Modbus TCP" value="Modbus TCP" />
- <el-option label="OPC UA" value="OPC UA" />
- <el-option label="EtherNet/IP" value="EtherNet/IP" />
- <el-option label="Profinet" value="Profinet" />
- <el-option label="鍏朵粬" value="鍏朵粬" />
- </el-select>
- <span class="form-tip">S7绯诲垪PLC閫氬父浣跨敤S7 Communication鍗忚</span>
- </el-form-item>
+
<el-form-item label="瓒呮椂鏃堕棿(绉�)" prop="timeout">
<el-input-number
@@ -254,204 +243,19 @@
<span class="form-tip">鏍规嵁璁惧绫诲瀷閰嶇疆鐗瑰畾鐨勪笟鍔¢�昏緫鍙傛暟</span>
</template>
- <!-- 涓婂ぇ杞﹁澶囬�昏緫閰嶇疆 -->
- <div v-if="deviceForm.deviceType === '涓婂ぇ杞�'">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="杞﹁締瀹归噺">
- <el-input-number
- v-model="deviceLogicParams.vehicleCapacity"
- :min="1"
- :max="10000"
- :step="100"
- style="width: 100%;"
+ <!-- 浣跨敤鍔ㄦ�佺粍浠跺姞杞藉搴旇澶囩被鍨嬬殑閰嶇疆缁勪欢 -->
+ <component
+ :is="deviceConfigComponent"
+ v-if="deviceConfigComponent"
+ v-model="deviceLogicParams"
/>
- <span class="form-tip">杞﹁締鏈�澶у閲�</span>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鐜荤拑闂撮殧(ms)">
- <el-input-number
- v-model="deviceLogicParams.glassIntervalMs"
- :min="100"
- :max="10000"
- :step="100"
- style="width: 100%;"
- />
- <span class="form-tip">鐜荤拑涓婃枡闂撮殧鏃堕棿锛堟绉掞級</span>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="榛樿鐜荤拑闀垮害(mm)">
- <el-input-number
- v-model="deviceLogicParams.defaultGlassLength"
- :min="100"
- :max="10000"
- :step="100"
- style="width: 100%;"
- />
- <span class="form-tip">褰撶幓鐠冩湭鎻愪緵闀垮害鏃朵娇鐢ㄧ殑榛樿鍊�</span>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鑷姩涓婃枡">
- <el-switch v-model="deviceLogicParams.autoFeed" />
- <span class="form-tip">鏄惁鑷姩瑙﹀彂涓婃枡璇锋眰</span>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鏈�澶ч噸璇曟鏁�">
- <el-input-number
- v-model="deviceLogicParams.maxRetryCount"
- :min="0"
- :max="10"
- :step="1"
- style="width: 100%;"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-form-item label="浣嶇疆鏄犲皠">
- <div class="position-mapping">
- <div
- v-for="(value, key, index) in deviceLogicParams.positionMapping"
- :key="index"
- class="mapping-item"
- >
- <el-input
- v-model="mappingKeys[index]"
- placeholder="浣嶇疆浠g爜"
- size="small"
- style="width: 150px; margin-right: 10px;"
- @input="updatePositionMapping(index, $event, value)"
- />
- <el-input-number
- v-model="deviceLogicParams.positionMapping[mappingKeys[index] || key]"
- :min="0"
- :max="100"
- size="small"
- style="width: 120px; margin-right: 10px;"
- />
- <el-button
- type="danger"
- size="small"
- @click="removePositionMapping(key)"
- >
- 鍒犻櫎
- </el-button>
- </div>
- <el-button type="primary" size="small" @click="addPositionMapping">
- 娣诲姞浣嶇疆鏄犲皠
- </el-button>
- </div>
- </el-form-item>
- </div>
-
- <!-- 澶х悊鐗囪澶囬�昏緫閰嶇疆 -->
- <div v-if="deviceForm.deviceType === '澶х悊鐗�'">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鐜荤拑灏哄">
- <el-input-number
- v-model="deviceLogicParams.glassSize"
- :min="100"
- :max="5000"
- :step="100"
- style="width: 100%;"
- />
- <span class="form-tip">鐜荤拑灏哄锛坢m锛�</span>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="澶勭悊鏃堕棿(ms)">
- <el-input-number
- v-model="deviceLogicParams.processingTime"
- :min="1000"
- :max="60000"
- :step="1000"
- style="width: 100%;"
- />
- <span class="form-tip">鐜荤拑澶勭悊鏃堕棿锛堟绉掞級</span>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鑷姩澶勭悊">
- <el-switch v-model="deviceLogicParams.autoProcess" />
- <span class="form-tip">鏄惁鑷姩瑙﹀彂澶勭悊璇锋眰</span>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鏈�澶ч噸璇曟鏁�">
- <el-input-number
- v-model="deviceLogicParams.maxRetryCount"
- :min="0"
- :max="10"
- :step="1"
- style="width: 100%;"
- />
- </el-form-item>
- </el-col>
- </el-row>
- </div>
-
- <!-- 鐜荤拑瀛樺偍璁惧閫昏緫閰嶇疆 -->
- <div v-if="deviceForm.deviceType === '鐜荤拑瀛樺偍'">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="瀛樺偍瀹归噺">
- <el-input-number
- v-model="deviceLogicParams.storageCapacity"
- :min="1"
- :max="1000"
- :step="1"
- style="width: 100%;"
- />
- <span class="form-tip">鏈�澶у瓨鍌ㄦ暟閲�</span>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍙栬揣妯″紡">
- <el-select v-model="deviceLogicParams.retrievalMode" style="width: 100%;">
- <el-option label="鍏堣繘鍏堝嚭 (FIFO)" value="FIFO" />
- <el-option label="鍚庤繘鍏堝嚭 (LIFO)" value="LIFO" />
- <el-option label="闅忔満 (RANDOM)" value="RANDOM" />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鑷姩瀛樺偍">
- <el-switch v-model="deviceLogicParams.autoStore" />
- <span class="form-tip">鏄惁鑷姩瑙﹀彂瀛樺偍璇锋眰</span>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鑷姩鍙栬揣">
- <el-switch v-model="deviceLogicParams.autoRetrieve" />
- <span class="form-tip">鏄惁鑷姩瑙﹀彂鍙栬揣璇锋眰</span>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鏈�澶ч噸璇曟鏁�">
- <el-input-number
- v-model="deviceLogicParams.maxRetryCount"
- :min="0"
- :max="10"
- :step="1"
- style="width: 100%;"
- />
- </el-form-item>
- </el-col>
- </el-row>
+ <div v-else class="no-config-tip">
+ <el-alert
+ :title="`璁惧绫诲瀷銆�${deviceForm.deviceType}銆嶆殏鏃犻厤缃粍浠禶"
+ type="info"
+ :closable="false"
+ show-icon
+ />
</div>
</el-card>
@@ -510,6 +314,7 @@
import { ref, reactive, watch, computed } from 'vue'
import { ElMessage } from 'element-plus'
import { deviceConfigApi } from '@/api/device/deviceManagement'
+import { getDeviceConfigComponent } from './components/DeviceLogicConfig'
// Props瀹氫箟
const props = defineProps({
@@ -533,28 +338,23 @@
const testing = ref(false)
const testResult = ref(null)
-// 璁惧閫昏緫鍙傛暟锛堟牴鎹澶囩被鍨嬪姩鎬佹樉绀猴級
-const deviceLogicParams = reactive({
- // 涓婂ぇ杞﹀弬鏁�
- vehicleCapacity: 6000,
- glassIntervalMs: 1000,
- defaultGlassLength: 2000,
- autoFeed: true,
- maxRetryCount: 5,
- positionMapping: {},
- // 澶х悊鐗囧弬鏁�
- glassSize: 2000,
- processingTime: 5000,
- autoProcess: true,
- // 鐜荤拑瀛樺偍鍙傛暟
- storageCapacity: 100,
- retrievalMode: 'FIFO',
- autoStore: true,
- autoRetrieve: true
-})
+// 璁惧绫诲瀷鍒楄〃
+const deviceTypes = ref([])
+const deviceTypesLoading = ref(false)
-// 浣嶇疆鏄犲皠鐨勯敭鏁扮粍锛堢敤浜巚-for锛�
-const mappingKeys = ref([])
+// 璁惧閫昏緫鍙傛暟锛堟牴鎹澶囩被鍨嬪姩鎬佹樉绀猴級
+const deviceLogicParams = ref({})
+
+const S7_PLC_TYPES = ['S1200', 'S1500']
+const MODBUS_PLC_TYPES = ['MODBUS']
+
+// 璁$畻灞炴�э細鏍规嵁璁惧绫诲瀷鑾峰彇瀵瑰簲鐨勯厤缃粍浠�
+const deviceConfigComponent = computed(() => {
+ if (!deviceForm.deviceType) {
+ return null
+ }
+ return getDeviceConfigComponent(deviceForm.deviceType)
+})
// 璁惧琛ㄥ崟鏁版嵁
const getDefaultForm = () => ({
@@ -577,7 +377,8 @@
description: '',
isPrimary: false,
enabled: true,
- extraParams: null
+ extraParams: null,
+ projectId: 1
})
const deviceForm = reactive(getDefaultForm())
@@ -586,14 +387,35 @@
const isEdit = computed(() => !!props.deviceData)
// 琛ㄥ崟楠岃瘉瑙勫垯
+const validateDeviceCode = async (rule, value, callback) => {
+ if (!value) {
+ // 鍏佽鐣欑┖锛屽悗鍙拌嚜鍔ㄧ敓鎴�
+ return callback()
+ }
+ try {
+ const res = await deviceConfigApi.checkCode(
+ value.trim(),
+ isEdit.value ? props.deviceData?.id : null
+ )
+ if (res?.data === true) {
+ callback(new Error('璁惧缂栫爜宸插瓨鍦紝璇锋洿鎹�'))
+ } else {
+ callback()
+ }
+ } catch (err) {
+ console.error('妫�鏌ヨ澶囩紪鐮佸け璐�', err)
+ callback(new Error('璁惧缂栫爜鏍¢獙澶辫触锛岃绋嶅悗閲嶈瘯'))
+ }
+}
+
const deviceRules = {
deviceName: [
{ required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' },
{ min: 1, max: 50, message: '璁惧鍚嶇О闀垮害鍦� 1 鍒� 50 涓瓧绗�', trigger: 'blur' }
],
deviceCode: [
- { required: true, message: '璇疯緭鍏ヨ澶囩紪鐮�', trigger: 'blur' },
- { pattern: /^[A-Z0-9_]+$/, message: '璁惧缂栫爜鍙兘鍖呭惈澶у啓瀛楁瘝銆佹暟瀛楀拰涓嬪垝绾�', trigger: 'blur' }
+ { pattern: /^[A-Z0-9_]+$/, message: '璁惧缂栫爜鍙兘鍖呭惈澶у啓瀛楁瘝銆佹暟瀛楀拰涓嬪垝绾�', trigger: 'blur' },
+ { validator: validateDeviceCode, trigger: 'blur' }
],
deviceType: [
{ required: true, message: '璇烽�夋嫨璁惧绫诲瀷', trigger: 'change' }
@@ -612,9 +434,7 @@
moduleName: [
{ required: true, message: '璇疯緭鍏ユā鍧楀悕绉�', trigger: 'blur' }
],
- protocolType: [
- { required: true, message: '璇烽�夋嫨閫氳鍗忚', trigger: 'change' }
- ],
+
timeout: [
{ required: true, message: '璇疯緭鍏ヨ秴鏃舵椂闂�', trigger: 'blur' },
{ type: 'number', min: 1, max: 300, message: '瓒呮椂鏃堕棿鍦� 1 鍒� 300 绉掍箣闂�', trigger: 'blur' }
@@ -642,6 +462,8 @@
watch(() => props.modelValue, (newVal) => {
dialogVisible.value = newVal
if (newVal) {
+ // 鍔犺浇璁惧绫诲瀷鍒楄〃
+ loadDeviceTypes()
if (isEdit.value && props.deviceData) {
loadDeviceData(props.deviceData)
} else {
@@ -660,26 +482,59 @@
// 鐩戝惉PLC绫诲瀷鍙樺寲锛岃嚜鍔ㄨ缃�氳鍗忚
watch(() => deviceForm.plcType, (newPlcType) => {
- // 濡傛灉閫夋嫨鐨勬槸S7绯诲垪PLC锛岃嚜鍔ㄨ缃�氳鍗忚涓篠7 Communication
- if (newPlcType && (newPlcType.startsWith('S') || newPlcType.includes('S7'))) {
- if (!deviceForm.protocolType || deviceForm.protocolType === '鍏朵粬') {
+ if (!newPlcType) {
+ return
+ }
+
+ if (S7_PLC_TYPES.includes(newPlcType)) {
+ if (!deviceForm.protocolType || deviceForm.protocolType === '鍏朵粬' || deviceForm.protocolType === 'Modbus TCP') {
deviceForm.protocolType = 'S7 Communication'
+ }
+ return
+ }
+
+ if (MODBUS_PLC_TYPES.includes(newPlcType)) {
+ if (!deviceForm.protocolType || deviceForm.protocolType === '鍏朵粬' || deviceForm.protocolType === 'S7 Communication') {
+ deviceForm.protocolType = 'Modbus TCP'
}
}
})
-// 澶勭悊閫氳鍗忚鍙樺寲
-const handleProtocolTypeChange = (value) => {
- // 濡傛灉閫夋嫨浜嗛潪S7鍗忚锛屼絾PLC绫诲瀷鏄疭7绯诲垪锛岀粰鍑烘彁绀�
- if (value && value !== 'S7 Communication' && deviceForm.plcType) {
- const s7Types = ['S1200', 'S1500', 'S400', 'S300', 'S200', 'S200_SMART']
- if (s7Types.includes(deviceForm.plcType)) {
- ElMessage.warning('S7绯诲垪PLC閫氬父浣跨敤S7 Communication鍗忚锛岃纭鍗忚閫夋嫨鏄惁姝g‘')
+
+
+// 鏂规硶瀹氫箟
+// 鍔犺浇璁惧绫诲瀷鍒楄〃
+const loadDeviceTypes = async () => {
+ if (deviceTypes.value.length > 0) {
+ // 濡傛灉宸茬粡鍔犺浇杩囷紝涓嶅啀閲嶅鍔犺浇
+ return
+ }
+ // 鎵�鏈夋敮鎸佺殑璁惧绫诲瀷锛堢‘淇濆寘鍚墍鏈夋湁閰嶇疆缁勪欢鐨勭被鍨嬶級
+ const supportedTypes = ['澶ц溅璁惧', '澶х悊鐗囩', '鍗ц浆绔嬫壂鐮�', '鍗ц浆绔�']
+
+ try {
+ deviceTypesLoading.value = true
+ const res = await deviceConfigApi.getDeviceTypes()
+ if (res?.data && Array.isArray(res.data)) {
+ // 鍚堝苟鏁版嵁搴撲腑鐨勭被鍨嬪拰鏀寔鐨勭被鍨嬶紝鍘婚噸骞舵帓搴�
+ const dbTypes = res.data
+ const allTypes = [...new Set([...supportedTypes, ...dbTypes])].sort()
+ deviceTypes.value = allTypes
+ } else {
+ // 濡傛灉API杩斿洖澶辫触锛屼娇鐢ㄩ粯璁ょ被鍨�
+ deviceTypes.value = supportedTypes
+ console.warn('鑾峰彇璁惧绫诲瀷鍒楄〃澶辫触锛屼娇鐢ㄩ粯璁ょ被鍨�')
}
+ } catch (error) {
+ console.error('鍔犺浇璁惧绫诲瀷鍒楄〃澶辫触:', error)
+ // 澶辫触鏃朵娇鐢ㄩ粯璁ょ被鍨�
+ deviceTypes.value = supportedTypes
+ ElMessage.warning('鍔犺浇璁惧绫诲瀷鍒楄〃澶辫触锛屼娇鐢ㄩ粯璁ょ被鍨�')
+ } finally {
+ deviceTypesLoading.value = false
}
}
-// 鏂规硶瀹氫箟
const parseJsonSafe = (str, defaultValue = null) => {
if (!str) return defaultValue
try {
@@ -823,73 +678,21 @@
}
// 鍔犺浇璁惧閫昏緫鍙傛暟
-const loadDeviceLogicParams = (deviceLogic, deviceType) => {
- if (deviceType === '涓婂ぇ杞�') {
- deviceLogicParams.vehicleCapacity = deviceLogic.vehicleCapacity ?? 6000
- deviceLogicParams.glassIntervalMs = deviceLogic.glassIntervalMs ?? 1000
- deviceLogicParams.defaultGlassLength = deviceLogic.defaultGlassLength ?? 2000
- deviceLogicParams.autoFeed = deviceLogic.autoFeed ?? true
- deviceLogicParams.maxRetryCount = deviceLogic.maxRetryCount ?? 5
- deviceLogicParams.positionMapping = deviceLogic.positionMapping || {}
- mappingKeys.value = Object.keys(deviceLogicParams.positionMapping)
- } else if (deviceType === '澶х悊鐗�') {
- deviceLogicParams.glassSize = deviceLogic.glassSize ?? 2000
- deviceLogicParams.processingTime = deviceLogic.processingTime ?? 5000
- deviceLogicParams.autoProcess = deviceLogic.autoProcess ?? true
- deviceLogicParams.maxRetryCount = deviceLogic.maxRetryCount ?? 3
- } else if (deviceType === '鐜荤拑瀛樺偍') {
- deviceLogicParams.storageCapacity = deviceLogic.storageCapacity ?? 100
- deviceLogicParams.retrievalMode = deviceLogic.retrievalMode || 'FIFO'
- deviceLogicParams.autoStore = deviceLogic.autoStore ?? true
- deviceLogicParams.autoRetrieve = deviceLogic.autoRetrieve ?? true
- deviceLogicParams.maxRetryCount = deviceLogic.maxRetryCount ?? 3
+const loadDeviceLogicParams = (deviceLogic) => {
+ if (deviceLogic && Object.keys(deviceLogic).length > 0) {
+ deviceLogicParams.value = { ...deviceLogic }
+ } else {
+ deviceLogicParams.value = {}
}
}
-// 浣嶇疆鏄犲皠鐩稿叧鏂规硶
-const addPositionMapping = () => {
- const newKey = `POS${Object.keys(deviceLogicParams.positionMapping).length + 1}`
- deviceLogicParams.positionMapping[newKey] = 1
- mappingKeys.value.push(newKey)
-}
-
-const removePositionMapping = (key) => {
- delete deviceLogicParams.positionMapping[key]
- mappingKeys.value = mappingKeys.value.filter(k => k !== key)
-}
-
-const updatePositionMapping = (index, newKey, oldValue) => {
- const oldKey = mappingKeys.value[index]
- if (oldKey && oldKey !== newKey) {
- delete deviceLogicParams.positionMapping[oldKey]
- }
- mappingKeys.value[index] = newKey
- if (newKey) {
- deviceLogicParams.positionMapping[newKey] = oldValue || 1
- }
-}
const resetForm = () => {
Object.assign(deviceForm, getDefaultForm())
deviceFormRef.value?.clearValidate()
// 閲嶇疆璁惧閫昏緫鍙傛暟
- deviceLogicParams.vehicleCapacity = 6000
- deviceLogicParams.glassIntervalMs = 1000
- deviceLogicParams.defaultGlassLength = 2000
- deviceLogicParams.autoFeed = true
- deviceLogicParams.maxRetryCount = 5
- deviceLogicParams.positionMapping = {}
- mappingKeys.value = []
-
- deviceLogicParams.glassSize = 2000
- deviceLogicParams.processingTime = 5000
- deviceLogicParams.autoProcess = true
-
- deviceLogicParams.storageCapacity = 100
- deviceLogicParams.retrievalMode = 'FIFO'
- deviceLogicParams.autoStore = true
- deviceLogicParams.autoRetrieve = true
+ deviceLogicParams.value = {}
}
const addConfigParam = () => {
@@ -963,30 +766,11 @@
plcType: deviceForm.plcType
}
- // 淇濆瓨璁惧閫昏緫鍙傛暟
- const deviceLogic = {}
- if (deviceForm.deviceType === '涓婂ぇ杞�') {
- deviceLogic.vehicleCapacity = deviceLogicParams.vehicleCapacity
- deviceLogic.glassIntervalMs = deviceLogicParams.glassIntervalMs
- deviceLogic.defaultGlassLength = deviceLogicParams.defaultGlassLength
- deviceLogic.autoFeed = deviceLogicParams.autoFeed
- deviceLogic.maxRetryCount = deviceLogicParams.maxRetryCount
- deviceLogic.positionMapping = deviceLogicParams.positionMapping
- } else if (deviceForm.deviceType === '澶х悊鐗�') {
- deviceLogic.glassSize = deviceLogicParams.glassSize
- deviceLogic.processingTime = deviceLogicParams.processingTime
- deviceLogic.autoProcess = deviceLogicParams.autoProcess
- deviceLogic.maxRetryCount = deviceLogicParams.maxRetryCount
- } else if (deviceForm.deviceType === '鐜荤拑瀛樺偍') {
- deviceLogic.storageCapacity = deviceLogicParams.storageCapacity
- deviceLogic.retrievalMode = deviceLogicParams.retrievalMode
- deviceLogic.autoStore = deviceLogicParams.autoStore
- deviceLogic.autoRetrieve = deviceLogicParams.autoRetrieve
- deviceLogic.maxRetryCount = deviceLogicParams.maxRetryCount
- }
-
- if (Object.keys(deviceLogic).length > 0) {
- extraObj.deviceLogic = deviceLogic
+ // 淇濆瓨璁惧閫昏緫鍙傛暟锛堢洿鎺ヤ娇鐢╠eviceLogicParams锛岀敱鍚勪釜閰嶇疆缁勪欢绠$悊锛�
+ if (deviceLogicParams.value && Object.keys(deviceLogicParams.value).length > 0) {
+ extraObj.deviceLogic = { ...deviceLogicParams.value }
+ } else {
+ delete extraObj.deviceLogic
}
// 鏋勫缓 configJson锛氬皢 configParams 鏁扮粍杞崲涓� JSON 瀛楃涓�
@@ -1013,6 +797,7 @@
isPrimary: deviceForm.isPrimary,
enabled: deviceForm.enabled,
description: deviceForm.description,
+ projectId: deviceForm.projectId,
configJson: configJsonValue, // 淇濆瓨閰嶇疆鍙傛暟JSON
extraParams: JSON.stringify(extraObj)
}
@@ -1142,4 +927,8 @@
border-radius: 6px;
background-color: #fafafa;
}
+
+.no-config-tip {
+ padding: 20px;
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0