From 55bf797dcc730b37bc691ebab2b51ff9db8ed245 Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周二, 06 5月 2025 17:37:23 +0800
Subject: [PATCH] 修改代码样式

---
 HIAWms/web/src/libs/Base/Base.ts |  191 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 191 insertions(+), 0 deletions(-)

diff --git a/HIAWms/web/src/libs/Base/Base.ts b/HIAWms/web/src/libs/Base/Base.ts
new file mode 100644
index 0000000..b3329ef
--- /dev/null
+++ b/HIAWms/web/src/libs/Base/Base.ts
@@ -0,0 +1,191 @@
+import sdk from 'sdk'
+import { ref, reactive, Ref, computed, onMounted, nextTick } from 'vue'
+import { Create } from '@/libs/Create/Create'
+import { globalState } from '../Store/Store'
+const { request } = sdk.utils
+// @ts-ignore
+import compose from 'koa-compose'
+
+let composeMiddleArray: any = []
+
+let flag = 0
+
+export class Base<
+  T extends {
+    [key: string]: any
+  } = {}
+> {
+  // 鐘舵��
+  [key: string]: any
+  constructor(initState?: T) {
+    if (initState) {
+      this.initState(initState)
+      // this.getVariable()
+      this.onMounted && onMounted(this.onMounted.bind(this))
+    }
+  }
+  /**
+   * 鍏ㄥ眬鐘舵��
+   */
+  //@ts-ignore
+  static globalState: Record<string, any> = globalState
+  /**
+   * 璇锋眰request锛宺equest.get request.post...
+   */
+  static request = request
+
+  /**
+   * 鍙橀噺key
+   */
+  static MAP_KEY = 'varMap'
+
+  /**
+   * 缂撳瓨鏃堕棿KEY
+   */
+  static CACHE_KEY = 'cacheKey'
+
+  /**
+   * 缂撳瓨鏃堕暱锛岀洰鍓�5鍒嗛挓
+   */
+  static CACHE_TIME = 5 * 60 * 1000
+
+  /**
+   * 绯荤粺閰嶇疆
+   */
+  baseSystemConfig = ref({})
+
+  /**
+   * 鍒ゆ柇鏄惁涓哄璞�
+   * @param str
+   * @returns
+   */
+  isStringAnObject(str: string) {
+    try {
+      const obj = JSON.parse(str)
+      return typeof obj === 'object' && obj !== null
+    } catch (e) {
+      return false
+    }
+  }
+  /**
+   * 鏍规嵁name鑾峰彇鍙橀噺ID
+   * @param name
+   * @returns
+   */
+  static getVariableIdByName(name: string) {
+    const map = globalState[Base.MAP_KEY]
+    return map.get(name) || ''
+  }
+
+  /**
+   * 灏嗗彉閲忚浆鎹㈡垚Map
+   * @param args 鏁扮粍
+   * @returns
+   */
+  private transformArrayToMap(args: any[]) {
+    const map = new Map()
+    args.forEach((item) => {
+      map.set(item.name, item.id)
+    })
+    return map
+  }
+
+  /**
+   * 鏌ヨ鍙橀噺锛�5鍒嗛挓缂撳瓨
+   * @param next
+   * @returns
+   */
+  private async queryVariable(next: () => void) {
+    const size = this.getState(Base.MAP_KEY)?.size
+    const t = this.getState(Base.CACHE_KEY) || Date.now()
+    flag++
+    this.clear()
+    // 缂撳瓨涓�鍒嗛挓,濡傛灉涓嬫閲嶆柊璇锋眰锛屽垯鏇存柊
+    if (size > 0 && Date.now() - t < Base.CACHE_TIME) return next && next()
+    try {
+      const vars = await request.get('/api/v1/variable/query')
+      const varMap = this.transformArrayToMap(vars.result)
+      this.setState(Base.CACHE_KEY, Date.now())
+      this.setState(Base.MAP_KEY, varMap)
+      next && next()
+    } catch (error) {
+      // next()
+      console.error(error, '鍙橀噺鏌ヨ鎺ュ彛鎶ラ敊锛屾殏鍋滆姹�')
+    }
+  }
+  /**
+   * 娓呯悊鍏ㄥ眬鍙傛暟
+   */
+  private clear() {
+    if (flag === composeMiddleArray.length) {
+      composeMiddleArray = []
+      flag = 0
+    }
+  }
+
+  /**
+   * 鑾峰彇鍙橀噺鎸夐槦鍒楁墽琛�
+   */
+  private async getVariable() {
+    composeMiddleArray.push((context: any, next: () => void) =>
+      this.queryVariable(next)
+    )
+
+    nextTick(() => {
+      if (!flag) {
+        const fn = compose(composeMiddleArray)
+        fn()
+      }
+    })
+  }
+
+  private initState(state = {}) {
+    const entry = Object.entries(state)
+    if (Array.isArray(entry)) {
+      entry.forEach(([key, value]) => {
+        this[key] = ref(value)
+      })
+    }
+  }
+
+  // 鐘舵��
+  /**
+   * 鑾峰彇鐘舵�佸��
+   * @param key key
+   * @returns any
+   */
+  getState(key: string | any) {
+    return Base.globalState[key]
+  }
+  /**
+   * 淇敼鐘舵��
+   * @param key key
+   * @param value value
+   * @returns void
+   */
+  setState(key: string | any, value: any) {
+    return (Base.globalState[key] = ref(value))
+  }
+
+  removeState(key: string) {
+    if (!key) return
+    return delete Base.globalState[key]
+  }
+
+  /**
+   * 鍒濆鍖栧璞�
+   * @param data
+   * @returns
+   */
+  createObject(data: string | number | any[][] | any) {
+    return new Create(data)
+  }
+  /**
+   * 鑾峰彇鐢ㄦ埛淇℃伅
+   */
+  get userInfo() {
+    return sdk.userInfo || {}
+  }
+
+  // useVModels
+}

--
Gitblit v1.9.3