Просмотр исходного кода

feat: 静态资源自动装配

lvkun 3 лет назад
Родитель
Сommit
04d909ab44

+ 1 - 1
README.md

@@ -1 +1 @@
-#things-ui
+#things-ui

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "@ant-design/icons-vue": "^6.1.0",
     "@ant-design/icons-vue": "^6.1.0",
     "@vueuse/core": "^9.13.0",
     "@vueuse/core": "^9.13.0",
     "ant-design-vue": "^3.3.0-beta.4",
     "ant-design-vue": "^3.3.0-beta.4",
+    "axios": "^1.3.5",
     "babel-plugin-import": "^1.13.6",
     "babel-plugin-import": "^1.13.6",
     "core-js": "^3.8.3",
     "core-js": "^3.8.3",
     "mitt": "^3.0.0",
     "mitt": "^3.0.0",

+ 12 - 0
src/api/iot/model.ts

@@ -0,0 +1,12 @@
+import request from '@/service/request'
+
+/**
+ * model api
+ */
+export const opraModel = <T>(data: T) => {
+  return request<IOT.API.Model[]>({
+    url: '/model/page',
+    method: 'GET',
+    data
+  })
+}

BIN
src/assets/product_introduction.png


+ 23 - 0
src/controller/iot/model.ts

@@ -0,0 +1,23 @@
+import { opraModel } from '@/api/iot/model'
+export default class Model {
+  list () {
+
+  }
+
+  async page () {
+    const { data } = await opraModel({})
+    return data
+  }
+
+  post () {
+
+  }
+
+  put () {
+
+  }
+
+  del () {
+
+  }
+}

+ 6 - 0
src/enum/common.ts

@@ -0,0 +1,6 @@
+
+export enum TransportEnum {
+  'MQTT' = 'MQTT',
+  'HTTP' = 'HTTP',
+  'COAP' = 'COAP'
+}

+ 3 - 3
src/layout/layout.vue

@@ -6,11 +6,11 @@
 
 
       <a-layout style="padding: 0 24px 24px; margin-top: 20px;">
       <a-layout style="padding: 0 24px 24px; margin-top: 20px;">
         <Breadcrumb />
         <Breadcrumb />
-          <a-layout-content
+        <RouterView></RouterView>
+          <!-- <a-layout-content
           :style="{ background: '#fff', padding: '24px', margin: 0, minHeight: '280px' }"
           :style="{ background: '#fff', padding: '24px', margin: 0, minHeight: '280px' }"
           >
           >
-            <RouterView></RouterView>
-          </a-layout-content>
+          </a-layout-content> -->
       </a-layout>
       </a-layout>
       </a-layout>
       </a-layout>
   </a-layout>
   </a-layout>

+ 2 - 0
src/main.ts

@@ -6,6 +6,7 @@ import { createPinia } from 'pinia'
 import antd from 'ant-design-vue'
 import antd from 'ant-design-vue'
 import 'ant-design-vue/dist/antd.css'
 import 'ant-design-vue/dist/antd.css'
 import UsePro from './utils/UsePro'
 import UsePro from './utils/UsePro'
+import { assets } from '@/utils/static'
 
 
 const pinia = createPinia()
 const pinia = createPinia()
 
 
@@ -14,4 +15,5 @@ createApp(App)
   .use(pinia)
   .use(pinia)
   .use(antd)
   .use(antd)
   .use(UsePro)
   .use(UsePro)
+  .provide('useStaticImg', assets)
   .mount('#app')
   .mount('#app')

+ 0 - 28
src/pages/Dashboard/index.vue

@@ -1,28 +0,0 @@
-<template>
-  <a-row>
-    <a-col> <sider-pro /></a-col>
-    <a-col> <div class="Dashboard" >2233</div></a-col>
-    <a-col :span="10" >
-      <table-pro
-        :params="{a: 123, b: 456}"
-        :request="getFn"
-      />
-    </a-col>
-  </a-row>
-</template>
-
-<script lang="ts" setup >
-
-const getFn = (params) => {
-  console.log('params:', params)
-  return new Promise(resolve => {
-    setTimeout(() => {
-      resolve([])
-    }, 2000)
-  })
-}
-
-</script>
-
-<style lang="less" scoped >
-</style>

+ 27 - 0
src/pages/Iot/dashboard/deviceAccess/index.vue

@@ -0,0 +1,27 @@
+<template>
+  <!-- <a-row> -->
+    <a-card
+      title="功能介绍"
+    >
+      <a-row>
+        <a-col>
+          在物联网平台中,某一类具有相同能力或特征的设备的合集被称为一款产品。
+          如果您希望使用平台查看设备上报的数据信息,并对设备进行管理控制,就需要开发产品模型(Profile)。定义Profile,使平台理解该款设备支持的属性、命令等信息。根据产品的接入协议、数据格式等可能还需要您定义其他相关的内容 了解更多
+        </a-col>
+        <a-col>
+
+        </a-col>
+
+      </a-row>
+    </a-card>
+  <!-- </a-row> -->
+</template>
+
+<script setup lang="ts" >
+import { useStaticImg } from '@/utils/static'
+useStaticImg()
+</script>
+
+<style>
+
+</style>

+ 0 - 37
src/pages/Iot/index.vue

@@ -1,37 +0,0 @@
-<template>
-
-  <div class="iot" >
-
-    <a-button type="primary"  @click="openModal" >上传背景</a-button>
-    <modal-pro
-      :visible="state.visible"
-      label="我是标题"
-      @ok="ok"
-      @close="state.visible = false"
-    />
-  </div>
-</template>
-
-<script setup lang="ts" >
-
-import { reactive } from 'vue'
-
-const state = reactive({
-  visible: false
-})
-
-const openModal = () => {
-  console.log('openModal')
-
-  state.visible = true
-}
-
-const ok = (records) => {
-  console.log('ok')
-  setTimeout(() => {
-    console.log(records)
-    records.confirmed()
-  }, 1000)
-}
-
-</script>

+ 0 - 9
src/pages/Visual/index.vue

@@ -1,9 +0,0 @@
-<template>
-  <div class="Visual" >
-    Visual
-  </div>
-</template>
-
-<script setup lang="ts" >
-
-</script>

+ 19 - 51
src/router/index.ts

@@ -3,63 +3,31 @@ import { createRouter, createWebHistory } from 'vue-router'
 const routes: Array<ROUTER.RoutesProps> = [
 const routes: Array<ROUTER.RoutesProps> = [
   {
   {
     path: '/',
     path: '/',
-    name: '首页',
-    title: '首页',
+    name: '物联网',
+    title: '物联网',
     component: () => import('@/layout/layout.vue'),
     component: () => import('@/layout/layout.vue'),
     redirect: '/dashboard',
     redirect: '/dashboard',
     children: [
     children: [
       {
       {
         path: '/dashboard',
         path: '/dashboard',
-        name: '仪表盘',
-        component: () => import('@/pages/Dashboard/index.vue'),
-        redirect: '/dashboard-item',
-        children: [
-          {
-            path: '/dashboard-item',
-            name: '仪表盘item',
-            component: () => import('@/pages/Dashboard/index.vue')
-          }
-        ]
-      }
-    ]
-  },
-  {
-    path: '/visual',
-    name: '视觉平台',
-    title: '视觉平台',
-    component: () => import('@/layout/layout.vue'),
-    redirect: '/visual-dashboard',
-    children: [
-      {
-        path: '/visual-dashboard',
-        name: '视觉平台仪表盘',
-        component: () => import('@/pages/Visual/index.vue')
-      }
-    ]
-  },
-  {
-    path: '/iot',
-    name: '物联网',
-    component: () => import('@/layout/layout.vue'),
-    redirect: '/iot/dashboard',
-    children: [
-      {
-        path: '/iot/dashboard',
-        name: '物联网',
-        redirect: '/iot/dashboard-item',
-        children: [
-          {
-            path: '/iot/dashboard-item',
-            name: '物联网',
-            component: () => import('@/pages/Iot/index.vue')
-          }
-        ]
-      },
-      {
-        path: '/net/dashboard',
-        name: '互联网',
-        component: () => import('@/pages/Iot/net.vue')
+        name: '首页',
+        component: () => import('@/pages/iot/dashboard/deviceAccess/index.vue')
       }
       }
+      // {
+      //   path: '/deviceAccess',
+      //   name: '地址展示',
+      //   component: () => import('@/pages/Dashboard/index.vue')
+      // },
+      // {
+      //   path: '/fowChart',
+      //   name: '流程图说明',
+      //   component: () => import('@/pages/Dashboard/index.vue')
+      // },
+      // {
+      //   path: '/dataSummary',
+      //   name: '数据汇总',
+      //   component: () => import('@/pages/Dashboard/index.vue')
+      // }
     ]
     ]
   }
   }
 ]
 ]

+ 8 - 0
src/service/config.ts

@@ -0,0 +1,8 @@
+import request from '@/service/request'
+
+export const getModel = () => {
+  return request({
+    url: '/model/page',
+    method: 'GET'
+  })
+}

+ 22 - 0
src/service/request.ts

@@ -0,0 +1,22 @@
+import axios, { AxiosInstance } from 'axios'
+
+const instance = axios.create({
+  baseURL: '',
+  timeout: 10000
+})
+
+instance.interceptors.request.use(config => {
+  return config
+}, function (error) {
+  return Promise.reject(error)
+})
+
+instance.interceptors.response.use(function (response) {
+  return response
+}, function (error) {
+  return Promise.reject(error)
+})
+
+export default function request <T> (config: any) {
+  return instance.request<AxiosInstance, SERVICE.Response<T>>(config)
+}

+ 6 - 0
src/type/common.d.ts

@@ -0,0 +1,6 @@
+declare namespace COMMON {
+  interface QueryParams {
+    page: number,
+    pageSize: number
+  }
+}

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

@@ -0,0 +1,27 @@
+// import { TransportEnum } from '@/enum/common'
+
+declare namespace IOT {
+
+  // MQTT
+  namespace API {
+
+    type QueryPamars = {
+      modelLabel?: string // 模型名称
+      transportType: TransportEnum
+    } & COMMON.QueryParams
+
+    interface Model {
+      id: string,
+      createAt: string,
+      updateAt: string,
+      deleted: boolean,
+      modelLabel: string,
+      transportType: string,
+      payloadType: string,
+      deviceType: string,
+      modelDescription: string,
+      tenantId: string
+    }
+  }
+
+}

+ 7 - 0
src/type/service.d.ts

@@ -0,0 +1,7 @@
+declare namespace SERVICE {
+  type Response<T> = {
+    code: number,
+    msg: string,
+    data: T
+  }
+}

+ 12 - 0
src/utils/static.ts

@@ -0,0 +1,12 @@
+import { inject } from 'vue'
+export const assets: Record<string, string> = {}
+const requireAsset = require.context('@/assets', true, /\.(png|jpe?g|gif|svg)$/)
+const regex = /(?<=\.\/).*(?=\.)/
+requireAsset.keys().forEach(key => {
+  const name = key.match(regex)![0]
+  assets[name] = requireAsset(key)
+})
+
+console.log(assets)
+
+export const useStaticImg = () => inject('useStaticImg')

+ 42 - 2
yarn.lock

@@ -2259,6 +2259,11 @@ async@^2.6.4:
   dependencies:
   dependencies:
     lodash "^4.17.14"
     lodash "^4.17.14"
 
 
+asynckit@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+  integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
 at-least-node@^1.0.0:
 at-least-node@^1.0.0:
   version "1.0.0"
   version "1.0.0"
   resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
   resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
@@ -2281,6 +2286,15 @@ available-typed-arrays@^1.0.5:
   resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
   resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
   integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
   integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
 
 
+axios@^1.3.5:
+  version "1.3.5"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542"
+  integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==
+  dependencies:
+    follow-redirects "^1.15.0"
+    form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
+
 babel-loader@^8.2.2:
 babel-loader@^8.2.2:
   version "8.3.0"
   version "8.3.0"
   resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8"
   resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8"
@@ -2672,6 +2686,13 @@ colorette@^2.0.10, colorette@^2.0.16:
   resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
   resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
   integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
   integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
 
 
+combined-stream@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+  dependencies:
+    delayed-stream "~1.0.0"
+
 commander@^2.20.0:
 commander@^2.20.0:
   version "2.20.3"
   version "2.20.3"
   resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
   resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -3042,6 +3063,11 @@ define-properties@^1.1.3, define-properties@^1.1.4:
     has-property-descriptors "^1.0.0"
     has-property-descriptors "^1.0.0"
     object-keys "^1.1.1"
     object-keys "^1.1.1"
 
 
+delayed-stream@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+  integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
 depd@2.0.0:
 depd@2.0.0:
   version "2.0.0"
   version "2.0.0"
   resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
   resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
@@ -3809,7 +3835,7 @@ flatted@^3.1.0:
   resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
   resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
   integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
   integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
 
 
-follow-redirects@^1.0.0:
+follow-redirects@^1.0.0, follow-redirects@^1.15.0:
   version "1.15.2"
   version "1.15.2"
   resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
   resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
@@ -3840,6 +3866,15 @@ fork-ts-checker-webpack-plugin@^6.4.0:
     semver "^7.3.2"
     semver "^7.3.2"
     tapable "^1.0.0"
     tapable "^1.0.0"
 
 
+form-data@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+  integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.8"
+    mime-types "^2.1.12"
+
 forwarded@0.2.0:
 forwarded@0.2.0:
   version "0.2.0"
   version "0.2.0"
   resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
   resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
@@ -5015,7 +5050,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
   resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
   resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
   integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
   integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
 
 
-mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
   version "2.1.35"
   version "2.1.35"
   resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
   resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
   integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
   integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -5849,6 +5884,11 @@ proxy-addr@~2.0.7:
     forwarded "0.2.0"
     forwarded "0.2.0"
     ipaddr.js "1.9.1"
     ipaddr.js "1.9.1"
 
 
+proxy-from-env@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
 prr@~1.0.1:
 prr@~1.0.1:
   version "1.0.1"
   version "1.0.1"
   resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
   resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"