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/script/autoMenu.js |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/HIAWms/web/script/autoMenu.js b/HIAWms/web/script/autoMenu.js
new file mode 100644
index 0000000..11b13b5
--- /dev/null
+++ b/HIAWms/web/script/autoMenu.js
@@ -0,0 +1,112 @@
+const { glob } = require('glob')
+const { readFileSync, writeFileSync, ensureDirSync } = require('fs-extra')
+const { resolve } = require('path')
+const regExp = /export default [\s\S]*?;/
+const regExpObj = /\{[\s\S]*?;/
+const babel = require('@babel/core')
+const pkg = require('../package.json')
+const isWin = process.platform === 'win32'
+
+/**
+ * 鏍规嵁widgets涓嬬殑缁勪欢锛岃嚜鍔ㄧ敓鎴愯彍鍗曟暟鎹紝鐢ㄤ簬瀵瑰寮曠敤
+ */
+async function start() {
+  const tsFiles = await glob(resolve(process.cwd(), 'src/widgets/*/index.ts'), {
+    ignore: 'node_modules/**',
+    windowsPathsNoEscape: true,
+  })
+
+  const menu = []
+  const menuMap = {}
+  const errorKey = ' is not defined'
+
+  tsFiles.forEach((filePath) => {
+    const spl = !isWin ? filePath.split('/') : filePath.split('\\')
+
+    const patchName = spl[spl.length - 2]
+    const file = readFileSync(filePath, { encoding: 'utf8' })
+    const { code } = babel.transformSync(file)
+    const exportDefaultRegion = code.match(regExp)
+    const exportDefaultContent = exportDefaultRegion[0]
+    if (exportDefaultContent) {
+      const v = exportDefaultContent.match(regExpObj)
+      const canvasView = exportDefaultContent.match(/canvasView: ([^,]+),/)
+      let canvasViewValue = canvasView ? canvasView[0] : ''
+      canvasViewValue = !canvasViewValue.includes(')')
+        ? canvasViewValue.replace(',', '),')
+        : canvasViewValue
+
+      const c = v[0].replace(canvasViewValue, '')
+      let setViewMatch = c.match(/settingsView:\s*(.*?)(?=\s*[,}])/)
+      let newCode = ''
+      if (setViewMatch[0]) {
+        newCode = c.replace(setViewMatch[0], '').replace(';', '')
+      }
+      if (newCode.includes('canvasView')) {
+        newCode = newCode.replace(
+          /canvasView\s*:\s*.*?(\{.*?\}|\(.*?\)|[^\s,]+)\s*,?\s*(?=\n|$)/gs,
+          ''
+        )
+      }
+
+      const codeRun = (code) => {
+        const fn = new Function(`return ${code}`)
+        const widgetInfo = fn()
+        const row = {
+          name: widgetInfo.name,
+          path: `/${pkg.name}/` + patchName,
+          patchName: patchName,
+
+          icon: widgetInfo.icon,
+          notPage: !!widgetInfo.notPage,
+        }
+        menu.push(row)
+        menuMap[patchName] = row
+      }
+      try {
+        codeRun(newCode)
+      } catch (error) {
+        if (error.message.includes(errorKey)) {
+          const iconKey = error.message.split(errorKey)
+          if (iconKey.length > 1) {
+            const iconName = iconKey[0]
+            const code = newCode.replaceAll(iconName, `"${iconName}"`)
+            codeRun(code)
+          }
+        } else {
+          console.error(error.message)
+        }
+      }
+    }
+  })
+  const data = `export const menu: Record<string,any>[] = ${JSON.stringify(
+    menu,
+    null,
+    2
+  )};\nexport const menuMap: Record<string,any> = ${JSON.stringify(
+    menuMap,
+    null,
+    2
+  )};`
+  // 鐢熸垚menu JSON 鍒癰uild.prod
+  // const buildInfo = readFileSync(resolve(process.cwd(), '.build'), {
+  //   encoding: 'utf-8',
+  // })
+  // const recoveryWidget = buildInfo.split('\n')
+  ensureDirSync(resolve(process.cwd(), './src/config/'))
+  writeFileSync(resolve(process.cwd(), './src/config/menu.ts'), data, {
+    encoding: 'utf-8',
+  })
+
+  // const widgets = menu
+  //   .map((item) => item.patchName)
+  //   .filter((name) => !recoveryWidget.includes(name))
+  // writeFileSync(resolve(process.cwd(), '.build.prod'), widgets.join('\n'), {
+  //   encoding: 'utf-8',
+  // })
+}
+const startTime = performance.now()
+
+start()
+
+console.log('鎵ц鏃堕棿: ', Math.ceil(performance.now() - startTime), 'ms')

--
Gitblit v1.9.3