소스 검색

fix: 一大堆bug

lvkun 2 년 전
부모
커밋
6ac3bc7e93

+ 23 - 4
src/pages/Iot/device/components/cloudview.vue

@@ -48,6 +48,20 @@
               {{record.cmdPayload}}
             </a-tooltip>
           </template>
+          <template v-if="column.key === 'cmdRet'" >
+            <a-tooltip color="white" :overlayStyle="{width: '800px'}" >
+              <template #title>
+                <a-textarea
+                  :bordered="false"
+                  style="width: 600px;"
+                  :auto-size="{ minRows: 5, maxRows: 15 }"
+                  :value="JSON.stringify(JSON.parse(record.cmdRet), null, '\t')"
+                  >
+                </a-textarea>
+              </template>
+              {{record.cmdRet}}
+            </a-tooltip>
+          </template>
           <template v-if="column.key === 'createAt'">
             {{dayjs(record.createAt).format('YYYY-MM-DD HH:mm:ss')}}
           </template>
@@ -230,20 +244,25 @@ const cmdColumns = [
     key: 'status'
   },
   {
-    title: '消息名称',
+    title: '命令名称',
     dataIndex: 'cmdLabel'
   },
   {
-    title: '消息id',
+    title: '命令id',
     dataIndex: 'msgId'
   },
   {
-    title: '消息内容',
+    title: '命令内容',
     dataIndex: 'cmdPayload',
     key: 'cmdPayload'
   },
   {
-    title: '消息创建时间',
+    title: '命令结果',
+    dataIndex: 'cmdRet',
+    key: 'cmdRet'
+  },
+  {
+    title: '命令创建时间',
     dataIndex: 'createAt',
     key: 'createAt'
   },

+ 0 - 1
src/pages/Iot/device/components/overview.vue

@@ -140,7 +140,6 @@ const ok = async () => {
 
 const getLiveData = async () => {
   const { data } = await DeviceContriller.getLiveData(deviceId)
-  console.log(data)
   state.liveDataSource = data
 }
 

+ 9 - 5
src/pages/Iot/device/group.vue

@@ -1,6 +1,6 @@
 <template>
  <a-row :gutter="[8, 8]" >
-  <a-col :lg="5" :md="8" :xs="24">
+  <a-col :lg="5" :md="10" :xs="24">
     <a-card style="height: 100%;" >
       <template #title >
         <a-row justify="space-between" align="middle" >
@@ -22,7 +22,7 @@
       >
         <template #title="record">
           <a-space @click="changeTreeActiveKey(record.key)" >
-            <span> {{ record.groupLabel }} </span>
+            <div class="group-label" > {{ record.groupLabel }} </div>
             <template v-if="state.treeActiveKey[0] === record.key && record.key" >
               <plus-circle-outlined @click="openGroupModal('add', record)"/>
               <delete-outlined @click="openGroupModal('del', record)"/>
@@ -33,7 +33,7 @@
       </a-spin>
     </a-card>
   </a-col>
-  <a-col :lg="19" :md="16" :xs="24">
+  <a-col :lg="19" :md="14" :xs="24">
     <a-card style="height: 100%;" >
       <span v-if="!state.treeActiveKey" >
         <a-row justify="space-between" >
@@ -570,6 +570,10 @@ onMounted(() => {
 
 </script>
 
-<style>
-
+<style lang="less" scoped >
+.group-label {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
 </style>

+ 21 - 11
src/pages/Iot/device/index.vue

@@ -49,7 +49,7 @@
     </a-row>
 
     <a-table
-      style="margin-top: 10px;"
+      style="margin-top: 20px;width: 100%;"
       :columns="columns"
       :data-source="state.dataSource"
       :loading="state.loading"
@@ -145,38 +145,47 @@ const columns = [
   {
     title: '设备ID',
     dataIndex: 'id',
-    key: 'id'
+    key: 'id',
+    ellipsis: true
   },
   {
     title: '设备名称',
-    dataIndex: 'deviceLabel'
+    dataIndex: 'deviceLabel',
+    ellipsis: true
   },
   {
     title: '设备标识码',
-    dataIndex: 'deviceCode'
+    dataIndex: 'deviceCode',
+    ellipsis: true
   },
   {
     title: '设备描述',
-    dataIndex: 'deviceDescription'
+    dataIndex: 'deviceDescription',
+    ellipsis: true
   },
   {
     title: '节点类型',
     dataIndex: 'deviceNodeType',
-    key: 'deviceNodeType'
+    key: 'deviceNodeType',
+    width: 100
   },
   {
     title: '所属产品',
-    dataIndex: 'modelLabel'
+    dataIndex: 'modelLabel',
+    ellipsis: true
   },
   {
-    title: '是否支持live',
+    title: '支持live',
     dataIndex: 'rtsUrl',
-    key: 'rtsUrl'
+    key: 'rtsUrl',
+    width: 100
   },
   {
     title: '状态',
     dataIndex: 'deviceStatus',
-    key: 'deviceStatus'
+    key: 'deviceStatus',
+    ellipsis: true,
+    width: 80
   },
   {
     title: '操作',
@@ -224,7 +233,8 @@ const searchState = reactive({
   deviceStatus: '',
   modelId: '',
   searchKey: 'deviceId',
-  searchValue: ''
+  searchValue: '',
+  showSizeChanger: false
 })
 
 const deviceState = reactive({

+ 0 - 5
src/pages/Iot/model/components/modelDefine.vue

@@ -107,11 +107,6 @@
       <a-form-item label="计算表达式" >
         <a-input  allowClear v-model:value="attrRef.expr"  />
       </a-form-item>
-      <a-form-item label="媒体类型" >
-        <a-select allowClear v-model:value="attrRef.dataType" >
-          <a-select-option :value="item" v-for="item in mediaTypeList" :key="item" >{{item}}</a-select-option>
-        </a-select>
-      </a-form-item>
     </a-form>
   </a-modal>
 

+ 16 - 1
src/pages/Iot/model/index.vue

@@ -71,6 +71,7 @@
     cancel-text="取消"
     @cancel="closeModel"
     @ok="ok"
+    destroyOnClose
   >
    <a-form :hideRequiredMark="formOptions.hideRequiredMark" :label-col="{span: 4}" :wrapper-col="{span: 14}">
     <a-form-item v-bind="validateInfos.modelTemplateId">
@@ -100,7 +101,7 @@
     </a-form-item>
     <a-form-item label="数据格式" v-bind="validateInfos.payloadType">
       <a-select allowClear :disabled="formOptions.disabled" v-model:value="modelRef.payloadType" >
-        <a-select-option :value="item" v-for="item in state.payloadType" :key="item" >{{item}}</a-select-option>
+        <a-select-option :value="item.value" v-for="item in payloadTypeList" :key="item.value" >{{item.label}}</a-select-option>
       </a-select>
     </a-form-item>
     <a-form-item label="设备类型" >
@@ -162,6 +163,17 @@ const columns = [
   }
 ]
 
+const payloadTypeList = [
+  {
+    value: 'JSON',
+    label: 'JSON'
+  },
+  {
+    value: 'BINARY',
+    label: '二进制流'
+  }
+]
+
 const state = reactive<{
   dataSource: IOT.API.MODEL.ModelDot[],
   modelTemplateList: IOT.API.MODELTEMPLATE.modelTemplate[]
@@ -255,12 +267,14 @@ const ok = async () => {
   if (modelRef.modelTemplateId) {
     await opraModel()
     state.visible = false
+    resetFields({})
     getModel()
   } else {
     validate().then(async () => {
       await opraModel()
       state.visible = false
       getModel()
+      resetFields({})
     }).catch(() => {})
   }
 }
@@ -286,6 +300,7 @@ const opraModel = async () => {
 }
 
 const closeModel = () => {
+  resetFields({})
   state.visible = false
 }
 

+ 5 - 2
src/pages/Iot/rule/components/selectDevice.vue

@@ -1,6 +1,6 @@
 
 <template>
-<a-card :bordered="false"  style="height: 600px">
+<a-card :bordered="false"   style="height: 600px;overflow: hidden;overflow-y: scroll;">
   <a-row>
     <a-col>
       <a-space>
@@ -19,6 +19,7 @@
     :columns="columns"
     :data-source="state.dataSource"
     :pagination="state.queryParams"
+
     :rowSelection="{
       type: 'radio',
       selectedRowKeys: state.selectedRowKeys,
@@ -64,8 +65,10 @@ const state = reactive({
     page: 1,
     pageSize: 5,
     total: 0,
+    size: 'small',
     searchKey: 'deviceLabel',
-    searchValue: ''
+    searchValue: '',
+    showSizeChanger: false
   }
 })
 

+ 11 - 102
src/pages/Iot/rule/forwardRule.vue

@@ -6,19 +6,19 @@
 <a-card style="margin-top: 20px;" >
   <a-row justify="space-between" >
     <a-col :span="18" >
-    <a-form style="width: 100%;"  :label-col="{span: 5}" >
+    <a-form style="width: 100%;"  :label-col="{span: 6}" :wrapper-col="{span: 16}" >
       <a-row style="width: 100%" :gutter="[8, 8]" >
-        <a-col :span="6" >
+        <a-col :span="7" >
           <a-form-item label="规则ID" >
             <a-input allowClear v-model:value="queryParams.ruleId" placeholder="请输入规则id"></a-input>
           </a-form-item>
         </a-col>
-        <a-col :span="6">
+        <a-col :span="7">
           <a-form-item label="规则名称" >
               <a-input allowClear v-model:value="queryParams.ruleLabel" placeholder="请输入规则名称" ></a-input>
             </a-form-item>
         </a-col>
-        <a-col :span="6" >
+        <a-col :span="7" >
           <a-form-item label="数据来源" >
               <a-select allowClear v-model:value="queryParams.subjectResource"    placeholder="选择数据来源">
                 <a-select-option
@@ -31,7 +31,7 @@
               </a-select>
             </a-form-item>
         </a-col>
-        <a-col :span="6" >
+        <a-col :span="7" >
           <a-form-item label="触发事件" >
               <a-select allowClear v-model:value="queryParams.subjectEvent"  placeholder="选择触发事件">
                 <a-select-option
@@ -44,7 +44,7 @@
               </a-select>
             </a-form-item>
         </a-col>
-        <a-col :span="6" >
+        <a-col :span="7" >
           <a-form-item label="状态" >
               <a-select allowClear v-model:value="queryParams.status" >
                 <a-select-option
@@ -450,7 +450,6 @@ import TestDialog from './components/testDialog.vue'
 import StatisticsTemplate from '@/components/StatisticsTemplate/index.vue'
 import { SubjectEventEnum, SubjectResourceEnum } from '@/enum/common'
 import { useId } from '@/hooks'
-import { number } from 'echarts'
 
 const columns = [
   {
@@ -484,86 +483,6 @@ const columns = [
   }
 ]
 
-const formProps: FormItemProps[] = [
-  {
-    label: '规则名称',
-    key: 'ruleLabel',
-    type: 'input',
-    rules: true,
-    value: ''
-  },
-  {
-    label: '数据来源',
-    key: 'subjectResource',
-    type: 'select',
-    rules: true,
-    value: '',
-    request: async () => await Array.from(RuleController.SubjectResourceMap, ([key, value]) => ({ ...value, value: value.key }))
-  },
-  {
-    label: '触发事件',
-    key: 'subjectEvent',
-    type: 'select',
-    rules: true,
-    value: '',
-    request: async () => await subjectEventList.value
-  },
-  {
-    label: '规则描述',
-    key: 'ruleDescription',
-    type: 'textarea',
-    rules: false,
-    value: ''
-  }
-]
-
-const formPropsSearch: FormItemProps[] = [
-  {
-    label: '规则名称',
-    key: 'ruleLabel',
-    type: 'input',
-    rules: false,
-    value: ''
-  },
-  {
-    label: '规则ID',
-    key: 'ruleId',
-    type: 'input',
-    rules: false,
-    value: ''
-  },
-  {
-    label: '数据来源',
-    key: 'subjectResource',
-    type: 'select',
-    rules: false,
-    request: async () => await Array.from(RuleController.SubjectResourceMap, ([key, value]) => ({ ...value, value: value.key }))
-  },
-  {
-    label: '触发事件',
-    key: 'subjectEvent',
-    type: 'select',
-    rules: false,
-    request: async () => await Array.from(RuleController.SubjectEventMap, ([key, value]) => ({ ...value, value: value.key }))
-  },
-  {
-    label: '状态',
-    key: 'status',
-    type: 'select',
-    rules: false,
-    request: async () => {
-      const getData = () => {
-        return [
-          { name: '所有状态', key: '', value: '' },
-          { name: '运行中', key: 'status', value: true },
-          { name: '未启动', key: 'status', value: false }
-        ]
-      }
-      return await getData()
-    }
-  }
-]
-
 const forwardRuleTargetsColumns = [
   {
     title: '转发目标',
@@ -840,6 +759,7 @@ const openModal = async (opraState: 'add' | 'update', record) => {
 
   if (opraState === 'update') {
     state.forwardId = record.id
+    state.stepCount = 1
     const { data } = await RuleController.forwardById(record.id)
     resetFieldsStep1(data)
 
@@ -875,6 +795,10 @@ const openModal = async (opraState: 'add' | 'update', record) => {
 
     forwardRuleTargets = reactive(JSON.parse(JSON.stringify(_forwardRuleTargets)))
   }
+
+  if (opraState === 'add') {
+    state.stepCount = 0
+  }
   state.visible = true
 }
 
@@ -905,21 +829,6 @@ const getCount = async () => {
   })
 }
 
-// 修改对应的数据的类型
-const changeFormItemType = () => {
-  //
-  if (forwardState.targetType === 'RABBIT') {
-    const port = Number(forwardState.port)
-    if (typeof port === 'number') {
-      console.log('修改对应的数据的类型:', port)
-
-      resetFields({ ...forwardState, port })
-
-      console.log('forwardState:', forwardState)
-    }
-  }
-}
-
 /** 提交转发规则 */
 const ok = async (visibleKey: string) => {
   if (state.stepCount === 1) {

+ 2 - 1
src/pages/Iot/rule/linkRules.vue

@@ -662,12 +662,13 @@
   </modal-pro>
 
   <modal-pro
-    style="width: 700px;height: 500px;"
+    style="width: 900px;height: 500px;"
     label="选择设备"
     :open="state.deviceModalVisible"
     @cancel="state.deviceModalVisible = false"
     @ok="selectDevice"
     destroyOnClose
+    zIndex="1003"
   >
     <SelectDevice
       ref="selectDeviceRef"

+ 6 - 7
src/router/index.ts

@@ -273,7 +273,6 @@ const schedule = {
     title: '数据中台'
   },
   component: () => import('@/layout/layout.vue'),
-  redirect: '/dataSource/manage',
   children: [
     {
       path: '/dataSource',
@@ -310,13 +309,13 @@ const schedule = {
           component: () => import('@/pages/schedule/dataLake/dataTool/index.vue')
         }
       ]
-    },
-    {
-      path: '/APICenter',
-      name: '数据服务',
-      icon: 'ApiOutlined',
-      component: () => import('@/pages/schedule/APICenter/index.vue')
     }
+    // {
+    //   path: '/APICenter',
+    //   name: '数据服务',
+    //   icon: 'ApiOutlined',
+    //   component: () => import('@/pages/schedule/APICenter/index.vue')
+    // }
   ]
 }