Explorar el Código

Merge branch 'master' of https://e.coding.net/jiaolongcloud/cloudlink/cloudlink-ui

wang xiao hace 1 año
padre
commit
51e0b1b790

+ 1 - 1
src/pages/Iot/device/components/cloudview.vue

@@ -113,7 +113,7 @@
         <a-select-option
           v-for="item in state.cmdList"
           :key="item.id"
-          :value="item.id"
+          :value="item.cmdCode"
         >
         {{item.cmdLabel}}
         </a-select-option>

+ 138 - 138
src/pages/Iot/device/modal/cmdPush.vue

@@ -1,138 +1,138 @@
-<template>
-  <modal-pro
-    title="命令下发"
-    style="width: 700px;"
-    :open="visible"
-    @cancel="emits('cancel')"
-    @ok="ok"
-  >
-  <a-alert message="同步命令成功下发后,设备需要在20秒内向平台回复响应,否则会认为命令请求超时。" type="info" show-icon style="margin-bottom: 20px;" />
-    <a-form
-    :labelCol="{span: 4}"
-    :wrapperCol="{span: 14}"
-  >
-    <a-form-item
-      label="命令名称"
-      v-bind="validateInfosCmd.cmdId"
-    >
-      <a-select allowClear v-model:value="cmdState.cmdId" >
-        <a-select-option
-          v-for="item in state.cmdList"
-          :key="item.id"
-          :value="item.id"
-        >
-        {{item.cmdLabel}}
-        </a-select-option>
-      </a-select>
-    </a-form-item>
-    <a-form-item
-      label="设置命令参数"
-      v-if="cmdDetail?.cmdParams"
-    >
-      <a-row>
-        <a-col v-for="(item, index) in cmdDetail?.cmdParams" :key="index" style="margin: 10px 0px;"  >
-          <a-input-group  size="large"  >
-            <a-row :gutter="8" align="middle" >
-              <a-col :span="8">
-                <a-input allowClear placeholder="key" v-model:value="item.paramLabel"  disabled />
-              </a-col>
-              <a-col :span="8">
-                <a-input allowClear placeholder="value" v-model:value="item.dataUnit" />
-              </a-col>
-            </a-row>
-          </a-input-group>
-        </a-col>
-      </a-row>
-    </a-form-item>
-    <a-form-item  label="设置命令参数" >
-      产品尚未配置命令,请先去 <a @click="pushProductDetail" >产品详情</a> 定义命令。
-    </a-form-item>
-    </a-form>
-  </modal-pro>
-</template>
-
-<script setup lang="ts" >
-import { computed, reactive, watch } from 'vue'
-import { DeviceContriller, ModelCmdController } from '@/controller'
-import { useRouter } from 'vue-router'
-import { Form } from 'ant-design-vue'
-
-interface IProps {
-  visible: boolean
-  deviceId: string
-  modelId: string
-}
-
-const router = useRouter()
-
-const useForm = Form.useForm
-
-const props = defineProps<IProps>()
-
-const emits = defineEmits(['cancel', 'ok'])
-
-const state = reactive<{
-  cmdList: Partial<IOT.API.CMD.Cmd[]>
-}>({
-  cmdList: []
-})
-
-const cmdState = reactive<{
-  cmdId: string
-  deviceId: string,
-  cmdLabel: string,
-  cmdParameters: {key: string, value: string}[]
-}>({
-  cmdId: '',
-  deviceId: props.deviceId,
-  cmdLabel: '',
-  cmdParameters: []
-})
-
-const cmdDetail = computed(() => state.cmdList.find(item => item.id === cmdState.cmdId))
-
-const { resetFields: resetFieldsCmd, validate: validateCmd, validateInfos: validateInfosCmd } = useForm(cmdState, reactive({
-  cmdId: [{ required: true, message: '请填写命令名称' }]
-}))
-
-const pushProductDetail = () => {
-  router.push({ path: '/product/detail', query: { id: props.modelId } })
-}
-
-const getModelCmdList = async () => {
-  const { data } = await ModelCmdController.list({ modelId: props.modelId })
-  state.cmdList = data
-}
-
-const ok = () => {
-  validateCmd().then(async () => {
-    const _cmdParameters: Record<string, string> = {}
-
-    cmdDetail.value?.cmdParams.forEach(item => {
-      _cmdParameters[item.paramLabel] = item.dataUnit
-    })
-
-    const $params = {
-      ...cmdState,
-      cmdLabel: cmdDetail.value!.cmdLabel,
-      cmdParameters: _cmdParameters
-    }
-    await DeviceContriller.addDeviceCmd($params)
-    emits('ok')
-  })
-}
-
-watch(
-  () => props.visible,
-  () => {
-    if (props.visible) {
-      cmdState.deviceId = props.deviceId
-      getModelCmdList()
-    }
-  }
-)
-
-</script>
-
-<style>
-</style>
+<template>
+  <modal-pro
+    title="命令下发"
+    style="width: 700px;"
+    :open="visible"
+    @cancel="emits('cancel')"
+    @ok="ok"
+  >
+  <a-alert message="同步命令成功下发后,设备需要在20秒内向平台回复响应,否则会认为命令请求超时。" type="info" show-icon style="margin-bottom: 20px;" />
+    <a-form
+    :labelCol="{span: 4}"
+    :wrapperCol="{span: 14}"
+  >
+    <a-form-item
+      label="命令名称"
+      v-bind="validateInfosCmd.cmdId"
+    >
+      <a-select allowClear v-model:value="cmdState.cmdId" >
+        <a-select-option
+          v-for="item in state.cmdList"
+          :key="item?.id"
+          :value="item.cmdCode"
+        >
+        {{item.cmdLabel}}
+        </a-select-option>
+      </a-select>
+    </a-form-item>
+    <a-form-item
+      label="设置命令参数"
+      v-if="cmdDetail?.cmdParams"
+    >
+      <a-row>
+        <a-col v-for="(item, index) in cmdDetail?.cmdParams" :key="index" style="margin: 10px 0px;"  >
+          <a-input-group  size="large"  >
+            <a-row :gutter="8" align="middle" >
+              <a-col :span="8">
+                <a-input allowClear placeholder="key" v-model:value="item.paramLabel"  disabled />
+              </a-col>
+              <a-col :span="8">
+                <a-input allowClear placeholder="value" v-model:value="item.dataUnit" />
+              </a-col>
+            </a-row>
+          </a-input-group>
+        </a-col>
+      </a-row>
+    </a-form-item>
+    <a-form-item  label="设置命令参数" >
+      产品尚未配置命令,请先去 <a @click="pushProductDetail" >产品详情</a> 定义命令。
+    </a-form-item>
+    </a-form>
+  </modal-pro>
+</template>
+
+<script setup lang="ts" >
+import { computed, reactive, watch } from 'vue'
+import { DeviceContriller, ModelCmdController } from '@/controller'
+import { useRouter } from 'vue-router'
+import { Form } from 'ant-design-vue'
+
+interface IProps {
+  visible: boolean
+  deviceId: string
+  modelId: string
+}
+
+const router = useRouter()
+
+const useForm = Form.useForm
+
+const props = defineProps<IProps>()
+
+const emits = defineEmits(['cancel', 'ok'])
+
+const state = reactive<{
+  cmdList: Partial<IOT.API.CMD.Cmd[]>
+}>({
+  cmdList: []
+})
+
+const cmdState = reactive<{
+  cmdId: string
+  deviceId: string,
+  cmdLabel: string,
+  cmdParameters: {key: string, value: string}[]
+}>({
+  cmdId: '',
+  deviceId: props.deviceId,
+  cmdLabel: '',
+  cmdParameters: []
+})
+
+const cmdDetail = computed(() => state.cmdList.find(item => item.id === cmdState.cmdId))
+
+const { resetFields: resetFieldsCmd, validate: validateCmd, validateInfos: validateInfosCmd } = useForm(cmdState, reactive({
+  cmdId: [{ required: true, message: '请填写命令名称' }]
+}))
+
+const pushProductDetail = () => {
+  router.push({ path: '/product/detail', query: { id: props.modelId } })
+}
+
+const getModelCmdList = async () => {
+  const { data } = await ModelCmdController.list({ modelId: props.modelId })
+  state.cmdList = data
+}
+
+const ok = () => {
+  validateCmd().then(async () => {
+    const _cmdParameters: Record<string, string> = {}
+
+    cmdDetail.value?.cmdParams.forEach(item => {
+      _cmdParameters[item.paramLabel] = item.dataUnit
+    })
+
+    const $params = {
+      ...cmdState,
+      cmdLabel: cmdDetail.value!.cmdLabel,
+      cmdParameters: _cmdParameters
+    }
+    await DeviceContriller.addDeviceCmd($params)
+    emits('ok')
+  })
+}
+
+watch(
+  () => props.visible,
+  () => {
+    if (props.visible) {
+      cmdState.deviceId = props.deviceId
+      getModelCmdList()
+    }
+  }
+)
+
+</script>
+
+<style>
+</style>

+ 1 - 0
src/type/iot.d.ts

@@ -71,6 +71,7 @@ declare namespace IOT {
     namespace CMD {
       interface Cmd {
         id: string,
+        cmdCode: string
         'cmdLabel': string,
         'cmdParams': {
           id: string