huangxingxing 3 miesięcy temu
commit
95ff6202d9
100 zmienionych plików z 537 dodań i 0 usunięć
  1. 3 0
      .env
  2. 4 0
      .env.development
  3. 5 0
      .env.production
  4. 56 0
      .eslintrc.cjs
  5. 28 0
      .gitignore
  6. 8 0
      .prettierignore
  7. 15 0
      .prettierrc.cjs
  8. 18 0
      README.md
  9. 40 0
      build/index.js
  10. BIN
      favicon.ico
  11. 20 0
      index.html
  12. 70 0
      package.json
  13. BIN
      public/favico.ico
  14. BIN
      public/favicon.ico
  15. BIN
      public/static/Build/Build.data
  16. 9 0
      public/static/Build/Build.framework.js
  17. 0 0
      public/static/Build/Build.loader.js
  18. BIN
      public/static/Build/Build.wasm
  19. 33 0
      public/static/ServiceWorker.js
  20. BIN
      public/static/TemplateData/favicon.ico
  21. BIN
      public/static/TemplateData/icons/unity-logo-dark.png
  22. BIN
      public/static/TemplateData/icons/unity-logo-light.png
  23. BIN
      public/static/TemplateData/progress-bar-empty-dark.png
  24. BIN
      public/static/TemplateData/progress-bar-empty-light.png
  25. BIN
      public/static/TemplateData/progress-bar-full-dark.png
  26. BIN
      public/static/TemplateData/progress-bar-full-light.png
  27. 8 0
      public/static/TemplateData/style.css
  28. BIN
      public/static/TemplateData/unity-logo-dark.png
  29. BIN
      public/static/TemplateData/unity-logo-light.png
  30. 103 0
      public/static/index.html
  31. 15 0
      public/static/manifest.webmanifest
  32. 1 0
      public/vite.svg
  33. 17 0
      src/App.vue
  34. 48 0
      src/api/login.ts
  35. BIN
      src/assets/flowimg/111.png
  36. BIN
      src/assets/flowimg/ADflow.png
  37. BIN
      src/assets/flowimg/MathFunc.png
  38. BIN
      src/assets/flowimg/TACS.png
  39. BIN
      src/assets/flowimg/aero.png
  40. BIN
      src/assets/flowimg/catia.png
  41. BIN
      src/assets/flowimg/csh.png
  42. BIN
      src/assets/flowimg/ffd.png
  43. BIN
      src/assets/flowimg/ffdFileSave.png
  44. BIN
      src/assets/flowimg/flight.png
  45. BIN
      src/assets/flowimg/fsi.png
  46. BIN
      src/assets/flowimg/fsibackg.png
  47. BIN
      src/assets/flowimg/gc1.png
  48. BIN
      src/assets/flowimg/gc2.png
  49. BIN
      src/assets/flowimg/gc3.png
  50. BIN
      src/assets/flowimg/mob.png
  51. BIN
      src/assets/flowimg/r2.png
  52. BIN
      src/assets/flowimg/surromdao.png
  53. BIN
      src/assets/flowimg/wen.png
  54. BIN
      src/assets/flowimg/wens.png
  55. BIN
      src/assets/flowimg/x@2x.png
  56. BIN
      src/assets/flowimg/xkfx.png
  57. BIN
      src/assets/flowimg/xuek0.png
  58. BIN
      src/assets/flowimg/xuek01.png
  59. BIN
      src/assets/flowimg/xuek1.png
  60. BIN
      src/assets/flowimg/xuek10.png
  61. BIN
      src/assets/flowimg/xuek11.png
  62. BIN
      src/assets/flowimg/xuek12.png
  63. BIN
      src/assets/flowimg/xuek2.png
  64. BIN
      src/assets/flowimg/xuek3.png
  65. BIN
      src/assets/flowimg/xuek4.png
  66. BIN
      src/assets/flowimg/xuek5.png
  67. BIN
      src/assets/flowimg/xuek6.png
  68. BIN
      src/assets/flowimg/xuek7.png
  69. BIN
      src/assets/flowimg/xuek8.png
  70. BIN
      src/assets/flowimg/xuek9.png
  71. BIN
      src/assets/flowimg/xueks1.png
  72. BIN
      src/assets/flowimg/xueks2.png
  73. BIN
      src/assets/flowimg/xueks3.png
  74. BIN
      src/assets/flowimg/xueks4.png
  75. BIN
      src/assets/flowimg/xueks5.png
  76. BIN
      src/assets/flowimg/xueks6.png
  77. BIN
      src/assets/flowimg/xueks7.png
  78. BIN
      src/assets/flowimg/xueks8.png
  79. BIN
      src/assets/flowimg/xueks9.png
  80. BIN
      src/assets/flowimg/youhq.png
  81. BIN
      src/assets/flowimg/youhwt.png
  82. BIN
      src/assets/fonts/MSYH.TTC
  83. BIN
      src/assets/fonts/MSYHBD.TTC
  84. BIN
      src/assets/fonts/MSYHL.TTC
  85. BIN
      src/assets/fonts/NotoSansHans-Black.otf
  86. BIN
      src/assets/fonts/NotoSansHans-Regular.otf
  87. 36 0
      src/assets/fonts/fonts.css
  88. BIN
      src/assets/img/ADflow.png
  89. BIN
      src/assets/img/Framem.png
  90. BIN
      src/assets/img/aero.png
  91. BIN
      src/assets/img/analysisParams.png
  92. BIN
      src/assets/img/baog.png
  93. BIN
      src/assets/img/cai1.png
  94. BIN
      src/assets/img/cai2.png
  95. BIN
      src/assets/img/configParams.png
  96. BIN
      src/assets/img/csh.png
  97. BIN
      src/assets/img/dengzx.png
  98. BIN
      src/assets/img/e1.png
  99. BIN
      src/assets/img/e2.png
  100. BIN
      src/assets/img/e3.png

+ 3 - 0
.env

@@ -0,0 +1,3 @@
+NODE_ENV = env
+VITE_NAME= '全局'
+VITE_BASE_URL = ''

+ 4 - 0
.env.development

@@ -0,0 +1,4 @@
+NODE_ENV = development
+VITE_NAME= '开发环境'
+VITE_BASE_URL = '/api'
+VITE_WEBSOCKET_URL='ws://192.168.0.131/airoptwebsocket?projectId='

+ 5 - 0
.env.production

@@ -0,0 +1,5 @@
+# 正式环境
+NODE_ENV=production
+VITE_NAME = '生产环境'
+VITE_BASE_URL = '/airopt'
+VITE_WEBSOCKET_URL='wss://www.adicn.com/airoptwebsocket?projectId='

+ 56 - 0
.eslintrc.cjs

@@ -0,0 +1,56 @@
+// eslint配置,用于校验代码
+module.exports = {
+    // env指定环境 支持的环境: browser node commonjs es6 es2016~es2022...
+    // 环境很多,详情查看文档https://zh-hans.eslint.org/docs/latest/use/configure/language-options
+    "env": {
+        "browser": true,
+        "es2021": true,
+        "node": true,
+    },
+    // 使用插件配置
+    "extends": [
+        "eslint:recommended",
+        "plugin:vue/vue3-essential",
+        "plugin:@typescript-eslint/recommended"
+    ],
+    // "overrides": [
+    //     {
+    //         "env": {
+    //             "node": true
+    //         },
+    //         "files": [
+    //             ".eslintrc.{js,cjs}"
+    //         ],
+    //         "parserOptions": {
+    //             "sourceType": "script"
+    //         }
+    //     }
+    // ],
+    // 配置支持的js语言选项
+    "parserOptions": {
+        "ecmaVersion": "latest",
+        "sourceType": "module",
+        "parser": "@typescript-eslint/parser"
+    },
+    // eslint第三方插件配置
+    "plugins": [
+        "vue",
+        "@typescript-eslint"
+    ],
+    // eslint规则配置,还有很多规则配置项,在官网查看 https://eslint.org/docs/latest/rules/
+    "rules": {
+        '@typescript-eslint/no-var-requires': 0, //解决报错:Require statement not part of import statement.
+        'vue/multi-word-component-names': 'off', //关闭组件命名规则校验
+        // => 前后有空格
+        "arrow-spacing": [
+            2,
+            {
+                before: true,
+                after: true,
+            },
+        ],
+        "block-spacing": [2, "always"],
+        // 对象字面量项尾是否有逗号
+        "comma-dangle": [2, "always-multiline"],
+    }
+}

+ 28 - 0
.gitignore

@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+/pnpm-lock.yaml
+/src/components.d.ts
+/src/auto-import.d.ts
+.pnpm-store
+/package-lock.json
+/dist

+ 8 - 0
.prettierignore

@@ -0,0 +1,8 @@
+.DS_Store
+node_modules
+dist
+/src/assets/*
+dist-ssr
+
+**/*.svg
+**/*.sh

+ 15 - 0
.prettierrc.cjs

@@ -0,0 +1,15 @@
+//.prettierrc.cjs
+module.exports = {
+    printWidth: 80, //一行的字符数,如果超过会进行换行,默认为80
+    singleAttributePerLine: false, //每行强制换行,只能使用单个属性
+    tabWidth: 2, // 一个 tab 代表几个空格数,默认为 2 个
+    useTabs: false, //是否使用 tab 进行缩进,默认为false,表示用空格进行缩减
+    singleQuote: false, // 字符串是否使用单引号,默认为 false,使用双引号
+    semi: false, // 行尾是否添加分号,默认为true
+    trailingComma: 'none', //行使用逗号分隔 可选值: es5 none all
+    bracketSpacing: true, // 对象大括号直接是否有空格,默认为 true,效果:{ a: 1 }
+    endOfLine: 'auto', // 文本文件中的行结束方式 可选值: lf crlf cr auto
+    jsxBracketSameLine: false, // 在jsx中把'>' 是否单独放一行
+    vueIndentScriptAndStyle: false, // <script>Vue 文件中的代码和标签是否缩进<style>。
+    arrowParens: "always", // 箭头函数的括号
+}

+ 18 - 0
README.md

@@ -0,0 +1,18 @@
+# Vue 3 + TypeScript + Vite
+
+This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
+
+## Recommended IDE Setup
+
+- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Type Support For `.vue` Imports in TS
+
+TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
+
+If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
+
+1. Disable the built-in TypeScript Extension
+   1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
+   2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
+2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.

+ 40 - 0
build/index.js

@@ -0,0 +1,40 @@
+const { run } = require("runjs");
+const chalk = require("chalk");
+const config = require("../vue.config.js");
+const rawArgv = process.argv.slice(2);
+const args = rawArgv.join(" ");
+
+if (process.env.npm_config_preview || rawArgv.includes("--preview")) {
+  const report = rawArgv.includes("--report");
+
+  run(`vue-cli-service build ${args}`);
+
+  const port = 8081;
+  const publicPath = config.publicPath;
+
+  var connect = require("connect");
+  var serveStatic = require("serve-static");
+  const app = connect();
+
+  app.use(
+    publicPath,
+    serveStatic("./dist", {
+      index: ["index.html", "/"]
+    })
+  );
+
+  app.listen(port, function() {
+    console.log(
+      chalk.green(`> Preview at  http://localhost:${port}${publicPath}`)
+    );
+    if (report) {
+      console.log(
+        chalk.green(
+          `> Report at  http://localhost:${port}${publicPath}report.html`
+        )
+      );
+    }
+  });
+} else {
+  run(`vue-cli-service build ${args}`);
+}

BIN
favicon.ico


+ 20 - 0
index.html

@@ -0,0 +1,20 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <!-- <link rel="icon" href="/assets/logo.png" /> -->
+    <link rel="icon" href="favicon.ico">
+    <!-- <link rel="shortcut icon" type="image/x-icon" href="<%= BASE_URL %>favicon.ico" />    -->
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
+ 
+    <title></title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.ts"></script>
+    <!-- <script src="./js/jquery.min.js"></script>
+    <script src="./js/webuploader.min.js"></script> -->
+    <!-- <script type="module" src="./public/static/Build/Build.data"></script>
+    <script type="module" src="./public/static/Build/Build.wasm"></script> -->
+  </body>
+</html>

+ 70 - 0
package.json

@@ -0,0 +1,70 @@
+{
+  "name": "disater",
+  "private": true,
+  "version": "0.0.0",
+  "scripts": {
+    "dev": "vite --mode development",
+    "build": "vite build --mode production",
+    "start": "vite --mode production",
+    "preview": "vite preview",
+    "lint:script": "eslint --ext .jsx,.vue,.tsx,.ts,.js --fix"
+  },
+  "dependencies": {
+    "@element-plus/icons": "^0.0.11",
+    "@element-plus/icons-vue": "^2.3.1",
+    "@kitware/vtk.js": "^29.7.3",
+    "@monaco-editor/loader": "^1.5.0",
+    "@vue-flow/background": "^1.3.0",
+    "@vue-flow/controls": "^1.1.2",
+    "@vue-flow/core": "^1.37.1",
+    "@vue-flow/minimap": "^1.5.0",
+    "@vue-flow/node-resizer": "^1.4.0",
+    "@vue-flow/node-toolbar": "^1.1.0",
+    "axios": "^1.5.0",
+    "canvg": "^4.0.2",
+    "crypto-js": "^4.2.0",
+    "echarts": "^5.4.3",
+    "element-plus": "^2.3.14",
+    "h5wasm": "^0.8.1",
+    "html-to-image": "^1.11.11",
+    "html2canvas": "^1.4.1",
+    "jquery": "^3.7.1",
+    "js-cookie": "2.2.0",
+    "mitt": "^3.0.1",
+    "moment": "^2.30.1",
+    "monaco-editor": "^0.52.2",
+    "normalize.css": "^8.0.1",
+    "pinia": "^2.1.6",
+    "pinia-plugin-persistedstate": "^3.2.0",
+    "sass": "^1.71.1",
+    "sass-loader": "^13.3.3",
+    "three": "^0.174.0",
+    "v-scale-screen": "^2.2.0",
+    "vite-plugin-monaco-editor": "^1.1.0",
+    "vite-plugin-remove-console": "^2.2.0",
+    "vue": "^3.3.4",
+    "vue-monaco-editor": "^0.0.19",
+    "vue-pdf-embed": "^2.1.2",
+    "vue-router": "4.0",
+    "webuploader": "^0.1.8"
+  },
+  "devDependencies": {
+    "@typescript-eslint/eslint-plugin": "^6.7.2",
+    "@vitejs/plugin-vue": "^4.2.3",
+    "eslint": "^8.50.0",
+    "eslint-config-standard-with-typescript": "^39.1.0",
+    "eslint-plugin-import": "^2.28.1",
+    "eslint-plugin-n": "^16.1.0",
+    "eslint-plugin-promise": "^6.1.1",
+    "eslint-plugin-vue": "^9.17.0",
+    "prettier": "^3.0.3",
+    "scss": "^0.2.4",
+    "typescript": "^5.2.2",
+    "unplugin-auto-import": "^0.16.6",
+    "unplugin-vue-components": "^0.25.2",
+    "vite": "^4.4.5",
+    "vite-plugin-compression": "^0.5.1",
+    "vite-plugin-vue-setup-extend": "^0.4.0",
+    "vue-tsc": "^1.8.5"
+  }
+}

BIN
public/favico.ico


BIN
public/favicon.ico


BIN
public/static/Build/Build.data


Plik diff jest za duży
+ 9 - 0
public/static/Build/Build.framework.js


Plik diff jest za duży
+ 0 - 0
public/static/Build/Build.loader.js


BIN
public/static/Build/Build.wasm


+ 33 - 0
public/static/ServiceWorker.js

@@ -0,0 +1,33 @@
+const cacheName = "DefaultCompany-CollierySafety-0.1.0";
+const contentToCache = [
+    "Build/Build.loader.js",
+    "Build/Build.framework.js",
+    "Build/Build.data",
+    "Build/Build.wasm",
+    "TemplateData/style.css"
+
+];
+
+self.addEventListener('install', function (e) {
+    console.log('[Service Worker] Install');
+    
+    e.waitUntil((async function () {
+      const cache = await caches.open(cacheName);
+      console.log('[Service Worker] Caching all: app shell and content');
+      await cache.addAll(contentToCache);
+    })());
+});
+
+self.addEventListener('fetch', function (e) {
+    e.respondWith((async function () {
+      let response = await caches.match(e.request);
+      console.log(`[Service Worker] Fetching resource: ${e.request.url}`);
+      if (response) { return response; }
+
+      response = await fetch(e.request);
+      const cache = await caches.open(cacheName);
+      console.log(`[Service Worker] Caching new resource: ${e.request.url}`);
+      cache.put(e.request, response.clone());
+      return response;
+    })());
+});

BIN
public/static/TemplateData/favicon.ico


BIN
public/static/TemplateData/icons/unity-logo-dark.png


BIN
public/static/TemplateData/icons/unity-logo-light.png


BIN
public/static/TemplateData/progress-bar-empty-dark.png


BIN
public/static/TemplateData/progress-bar-empty-light.png


BIN
public/static/TemplateData/progress-bar-full-dark.png


BIN
public/static/TemplateData/progress-bar-full-light.png


+ 8 - 0
public/static/TemplateData/style.css

@@ -0,0 +1,8 @@
+body { padding: 0; margin: 0 }
+#unity-container { position: fixed; width: 100%; height: 100%; }
+#unity-canvas { width: 100%; height: 100%; background: #231F20 }
+#unity-loading-bar { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: none }
+#unity-logo { width: 154px; height: 130px; background: url('unity-logo-dark.png') no-repeat center }
+#unity-progress-bar-empty { margin-left: auto; margin-right: auto; width: 141px; height: 18px; margin-top: 10px; background: url('progress-bar-empty-dark.png') no-repeat center }
+#unity-progress-bar-full { width: 0%; height: 18px; margin-top: 10px; background: url('progress-bar-full-dark.png') no-repeat center }
+#unity-warning { position: absolute; left: 50%; top: 5%; transform: translate(-50%); background: white; padding: 10px; display: none }

BIN
public/static/TemplateData/unity-logo-dark.png


BIN
public/static/TemplateData/unity-logo-light.png


+ 103 - 0
public/static/index.html

@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html lang="en-us">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <title>Unity WebGL Player | CollierySafety</title>
+    <link rel="shortcut icon" href="TemplateData/favicon.ico">
+    <link rel="stylesheet" href="TemplateData/style.css">
+    <link rel="manifest" href="manifest.webmanifest">
+  </head>
+  <body>
+    <div id="unity-container">
+      <canvas id="unity-canvas" width=960 height=600 tabindex="-1"></canvas>
+      <div id="unity-loading-bar">
+        <div id="unity-logo"></div>
+        <div id="unity-progress-bar-empty">
+          <div id="unity-progress-bar-full"></div>
+        </div>
+      </div>
+      <div id="unity-warning"> </div>
+    </div>
+    <script>
+      window.addEventListener("load", function () {
+        if ("serviceWorker" in navigator) {
+          navigator.serviceWorker.register("ServiceWorker.js");
+        }
+      });
+
+      var container = document.querySelector("#unity-container");
+      var canvas = document.querySelector("#unity-canvas");
+      var loadingBar = document.querySelector("#unity-loading-bar");
+      var progressBarFull = document.querySelector("#unity-progress-bar-full");
+      var warningBanner = document.querySelector("#unity-warning");
+
+      // Shows a temporary message banner/ribbon for a few seconds, or
+      // a permanent error message on top of the canvas if type=='error'.
+      // If type=='warning', a yellow highlight color is used.
+      // Modify or remove this function to customize the visually presented
+      // way that non-critical warnings and error messages are presented to the
+      // user.
+      function unityShowBanner(msg, type) {
+        function updateBannerVisibility() {
+          warningBanner.style.display = warningBanner.children.length ? 'block' : 'none';
+        }
+        var div = document.createElement('div');
+        div.innerHTML = msg;
+        warningBanner.appendChild(div);
+        if (type == 'error') div.style = 'background: red; padding: 10px;';
+        else {
+          if (type == 'warning') div.style = 'background: yellow; padding: 10px;';
+          setTimeout(function() {
+            warningBanner.removeChild(div);
+            updateBannerVisibility();
+          }, 5000);
+        }
+        updateBannerVisibility();
+      }
+
+      var buildUrl = "Build";
+      var loaderUrl = buildUrl + "/Build.loader.js";
+      var config = {
+        dataUrl: buildUrl + "/Build.data",
+        frameworkUrl: buildUrl + "/Build.framework.js",
+        codeUrl: buildUrl + "/Build.wasm",
+        streamingAssetsUrl: "StreamingAssets",
+        companyName: "DefaultCompany",
+        productName: "CollierySafety",
+        productVersion: "0.1.0",
+        showBanner: unityShowBanner,
+      };
+
+      // By default Unity keeps WebGL canvas render target size matched with
+      // the DOM size of the canvas element (scaled by window.devicePixelRatio)
+      // Set this to false if you want to decouple this synchronization from
+      // happening inside the engine, and you would instead like to size up
+      // the canvas DOM size and WebGL render target sizes yourself.
+      // config.matchWebGLToCanvasSize = false;
+
+      if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) {
+        // Mobile device style: fill the whole browser client area with the game canvas:
+        var meta = document.createElement('meta');
+        meta.name = 'viewport';
+        meta.content = 'width=device-width, height=device-height, initial-scale=1.0, user-scalable=no, shrink-to-fit=yes';
+        document.getElementsByTagName('head')[0].appendChild(meta);
+      }
+
+      loadingBar.style.display = "block";
+
+      var script = document.createElement("script");
+      script.src = loaderUrl;
+      script.onload = () => {
+        createUnityInstance(canvas, config, (progress) => {
+          progressBarFull.style.width = 100 * progress + "%";
+        }).then((unityInstance) => {
+          loadingBar.style.display = "none";
+        }).catch((message) => {
+          alert(message);
+        });
+      };
+      document.body.appendChild(script);
+    </script>
+  </body>
+</html>

+ 15 - 0
public/static/manifest.webmanifest

@@ -0,0 +1,15 @@
+{
+    "name": "CollierySafety",
+    "short_name": "CollierySafety",
+    "start_url": "index.html",
+    "display": "fullscreen",
+    "background_color": "#231F20",
+    "theme_color": "#000",
+    "description": "",
+    "icons": [{
+      "src": "TemplateData/icons/unity-logo-dark.png",
+      "sizes": "144x144",
+      "type": "image/png",
+      "purpose": "any maskable"
+    }]
+  }

+ 1 - 0
public/vite.svg

@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

+ 17 - 0
src/App.vue

@@ -0,0 +1,17 @@
+<template>
+  <router-view></router-view>
+</template>
+
+<script setup>
+</script>
+
+<style>
+#app {
+  font-family: 'Microsoft YaHei';
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+  color: #2c3e50;
+  margin: 0;
+  padding: 0;
+}
+</style>

+ 48 - 0
src/api/login.ts

@@ -0,0 +1,48 @@
+import instance from "@/utils/request";
+
+//一般情况下,接口类型会放到一个文件
+// 下面两个TS接口,表示要传的参数
+interface ReqLogin {
+    name: string
+    paw: string
+}
+
+interface ReqStatus {
+    id: string
+    navStatus: string
+}
+
+
+// Res是返回的参数,T是泛型,需要自己定义,返回对数统一管理***
+type Res<T> = Promise<ItypeAPI<T>>;
+// 一般情况下响应数据返回的这三个参数,
+// 但不排除后端返回其它的可能性,
+interface ItypeAPI<T> {
+    data: T,//请求的数据,用泛型
+    msg: string | null // 返回状态码的信息,如请求成功等
+    code: number //返回后端自定义的200,404,500这种状态码
+}
+
+
+// post请求 ,没参数
+export const LogoutAPI = (): Res<null> => instance.post("/admin/logout");
+
+// post请求,有参数,如传用户名和密码
+export const loginAPI = (data: ReqLogin): Res<string> =>
+    instance.post("/admin/login", data);
+
+// post请求 ,没参数,但要路径传参
+export const StatusAPI = (data: ReqStatus): Res<null> =>
+    instance.post(`/productCategory?ids=${data.id}&navStatus=${data.navStatus}`);
+
+
+//  get请求,没参数,
+export const FlashSessionListApi = (): Res<null> =>
+    instance.get("/flashSession/list");
+
+// get请求,有参数,路径也要传参  (也可能直接在这写类型,不过不建议,大点的项目会维护一麻烦)
+export const ProductCategoryApi = (params: { parentId: number }): Res<any> =>
+    instance.get(`/productCategory/list/${params.parentId}`, {params});
+
+// get请求,有参数,(如果你不会写类型也可以使用any,不过不建议,因为用了之后 和没写TS一样)
+export const AdminListAPI = (params: any): Res<any> => instance.get("/admin/list", {params});

BIN
src/assets/flowimg/111.png


BIN
src/assets/flowimg/ADflow.png


BIN
src/assets/flowimg/MathFunc.png


BIN
src/assets/flowimg/TACS.png


BIN
src/assets/flowimg/aero.png


BIN
src/assets/flowimg/catia.png


BIN
src/assets/flowimg/csh.png


BIN
src/assets/flowimg/ffd.png


BIN
src/assets/flowimg/ffdFileSave.png


BIN
src/assets/flowimg/flight.png


BIN
src/assets/flowimg/fsi.png


BIN
src/assets/flowimg/fsibackg.png


BIN
src/assets/flowimg/gc1.png


BIN
src/assets/flowimg/gc2.png


BIN
src/assets/flowimg/gc3.png


BIN
src/assets/flowimg/mob.png


BIN
src/assets/flowimg/r2.png


BIN
src/assets/flowimg/surromdao.png


BIN
src/assets/flowimg/wen.png


BIN
src/assets/flowimg/wens.png


BIN
src/assets/flowimg/x@2x.png


BIN
src/assets/flowimg/xkfx.png


BIN
src/assets/flowimg/xuek0.png


BIN
src/assets/flowimg/xuek01.png


BIN
src/assets/flowimg/xuek1.png


BIN
src/assets/flowimg/xuek10.png


BIN
src/assets/flowimg/xuek11.png


BIN
src/assets/flowimg/xuek12.png


BIN
src/assets/flowimg/xuek2.png


BIN
src/assets/flowimg/xuek3.png


BIN
src/assets/flowimg/xuek4.png


BIN
src/assets/flowimg/xuek5.png


BIN
src/assets/flowimg/xuek6.png


BIN
src/assets/flowimg/xuek7.png


BIN
src/assets/flowimg/xuek8.png


BIN
src/assets/flowimg/xuek9.png


BIN
src/assets/flowimg/xueks1.png


BIN
src/assets/flowimg/xueks2.png


BIN
src/assets/flowimg/xueks3.png


BIN
src/assets/flowimg/xueks4.png


BIN
src/assets/flowimg/xueks5.png


BIN
src/assets/flowimg/xueks6.png


BIN
src/assets/flowimg/xueks7.png


BIN
src/assets/flowimg/xueks8.png


BIN
src/assets/flowimg/xueks9.png


BIN
src/assets/flowimg/youhq.png


BIN
src/assets/flowimg/youhwt.png


BIN
src/assets/fonts/MSYH.TTC


BIN
src/assets/fonts/MSYHBD.TTC


BIN
src/assets/fonts/MSYHL.TTC


BIN
src/assets/fonts/NotoSansHans-Black.otf


BIN
src/assets/fonts/NotoSansHans-Regular.otf


+ 36 - 0
src/assets/fonts/fonts.css

@@ -0,0 +1,36 @@
+@font-face {
+    font-family: 'Source Sans-Regular';
+    src:url('@/assets/fonts/NotoSansHans-Regular.otf') format('truetype');
+    font-weight: normal;
+    font-style: normal;
+  }
+  @font-face {
+    font-family: 'Source Sans-Black';
+    src: url('@/assets/fonts/NotoSansHans-Black.otf') format('woff2'),  format('truetype');
+   /* 对于Black,通常是900  font-weight: 900; */
+    font-style: normal;
+  }
+ 
+  /* 常规版 - Microsoft YaHei Regular */
+@font-face {
+  font-family: 'Microsoft YaHei';
+  src: url('@/assets/fonts/MSYH.TTC') format('truetype');
+  font-weight: normal;
+  font-style: normal;
+}
+
+/* 加粗版 - Microsoft YaHei Bold */
+@font-face {
+  font-family: 'Microsoft YaHei';
+  src: url('@/assets/fonts/MSYHBD.TTC') format('truetype');
+  font-weight: bold;
+  font-style: normal;
+}
+
+/* 细体版 - Microsoft YaHei Light */
+@font-face {
+  font-family: 'Microsoft YaHei Light';
+  src: url('@/assets/fonts/MSYHL.TTC') format('truetype');
+  font-weight: 300;
+  font-style: normal;
+}

BIN
src/assets/img/ADflow.png


BIN
src/assets/img/Framem.png


BIN
src/assets/img/aero.png


BIN
src/assets/img/analysisParams.png


BIN
src/assets/img/baog.png


BIN
src/assets/img/cai1.png


BIN
src/assets/img/cai2.png


BIN
src/assets/img/configParams.png


BIN
src/assets/img/csh.png


BIN
src/assets/img/dengzx.png


BIN
src/assets/img/e1.png


BIN
src/assets/img/e2.png


BIN
src/assets/img/e3.png


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików