Ben Lin
2024-06-20 de7e6c408b6209158b08991d729c4bcc72055eec
产品工艺路线
已修改27个文件
已添加12个文件
1022 ■■■■ 文件已修改
.env.production 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vscode/extensions.json 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vscode/settings.json 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
internal/vite-config/src/plugins/index.ts 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/dept.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/mes/mesApi.ts 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/mes/router.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/model/router.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/system.ts 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/add_01.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/customer.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/factory.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/line.svg 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/node.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/position.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/product.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/rot_action.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/route.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/workshop.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/TigerTree/src/TigerTree.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/TigerTree/src/components/TreeHeader.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/TigerTree/src/types/tree.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layouts/default/menu/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/composition/CustTree.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/composition/DeptModal.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/composition/account.data.ts 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/composition/index.vue 264 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/composition/prodRoute.ts 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/data.ts 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/detail/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/system/lowcode/high/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/RegionForm.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/RegionModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/ShelfForm.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/ShelfModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/WareHouseForm.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/WareHouseModal.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/WareHouseTree.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/wms/warehousemodel/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production
@@ -4,7 +4,7 @@
 # @version: 
 # @Date: 2024-06-17 14:51:25
 # @LastEditors: Ben Lin
 # @LastEditTime: 2024-06-18 10:41:08
 # @LastEditTime: 2024-06-18 22:25:27
### 
# Whether to open mock
VITE_USE_MOCK = false
@@ -19,9 +19,6 @@
# Basic interface address SPA
# VITE_GLOB_API_URL=http://172.16.80.40:9527/api
# VITE_GLOB_SYS_API_URL=http://172.16.80.40:9527
# VITE_GLOB_TSK_API_URL=http://172.16.80.40:9527/api
VITE_GLOB_API_URL=http://localhost:9527/api
VITE_GLOB_SYS_API_URL=http://localhost:9527
VITE_GLOB_TSK_API_URL=http://localhost:9527/api
@@ -30,7 +27,7 @@
# It can be forwarded by nginx or write the actual address directly
VITE_GLOB_UPLOAD_URL = /upload
# ä¸‹è½½åœ°å€
VITE_GLOB_DOWNLOAD_URL=http://172.16.80.40/files
VITE_GLOB_DOWNLOAD_URL=http://localhost:8800/files
# Interface prefix
VITE_GLOB_API_URL_PREFIX =
.vscode/extensions.json
@@ -1,5 +1,14 @@
{
    "recommendations": [
        "gamedilong.anes"
    "vue.volar",
    "dbaeumer.vscode-eslint",
    "stylelint.vscode-stylelint",
    "esbenp.prettier-vscode",
    "mrmlnc.vscode-less",
    "lokalise.i18n-ally",
    "antfu.iconify",
    "antfu.unocss",
    "mikestead.dotenv",
    "warmthsea.vscode-custom-code-color"
    ]
}
.vscode/settings.json
@@ -1,7 +1,176 @@
{
    "i18n-ally.localesPaths": [
        "src/locales",
        "src/locales/lang",
        "public/resource/tinymce/langs"
    ]
  "typescript.tsdk": "./node_modules/typescript/lib",
  "volar.tsPlugin": true,
  "volar.tsPluginStatus": false,
  "npm.packageManager": "pnpm",
  "editor.tabSize": 2,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "files.eol": "\n",
  "search.exclude": {
    "**/node_modules": true,
    "**/*.log": true,
    "**/*.log*": true,
    "**/bower_components": true,
    "**/dist": true,
    "**/elehukouben": true,
    "**/.git": true,
    "**/.gitignore": true,
    "**/.svn": true,
    "**/.DS_Store": true,
    "**/.idea": true,
    "**/.vscode": false,
    "**/yarn.lock": true,
    "**/tmp": true,
    "out": true,
    "dist": true,
    "node_modules": true,
    "CHANGELOG.md": true,
    "examples": true,
    "res": true,
    "screenshots": true,
    "yarn-error.log": true,
    "**/.yarn": true
  },
  "files.exclude": {
    "**/.cache": true,
    "**/.editorconfig": true,
    "**/.eslintcache": true,
    "**/bower_components": true,
    "**/.idea": true,
    "**/tmp": true,
    "**/.git": true,
    "**/.svn": true,
    "**/.hg": true,
    "**/CVS": true,
    "**/.DS_Store": true
  },
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/.git/subtree-cache/**": true,
    "**/.vscode/**": true,
    "**/node_modules/**": true,
    "**/tmp/**": true,
    "**/bower_components/**": true,
    "**/dist/**": true,
    "**/yarn.lock": true
  },
  "stylelint.enable": true,
  "stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"],
  "path-intellisense.mappings": {
    "@/": "${workspaceRoot}/src"
  },
  "[javascriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[less]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[scss]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[markdown]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.fixAll.stylelint": "explicit"
  },
  "[vue]": {
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": "explicit",
      "source.fixAll.stylelint": "explicit"
    },
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "i18n-ally.localesPaths": ["src/locales/lang"],
  "i18n-ally.keystyle": "nested",
  "i18n-ally.sortKeys": true,
  "i18n-ally.namespace": true,
  "i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
  "i18n-ally.enabledParsers": ["json", "ts", "js"],
  "i18n-ally.sourceLanguage": "zh-CN",
  "i18n-ally.displayLanguage": "zh-CN",
  "i18n-ally.enabledFrameworks": ["vue", "react"],
  "cSpell.words": [
    "antd",
    "antv",
    "brotli",
    "browserslist",
    "codemirror",
    "commitlint",
    "cropperjs",
    "echarts",
    "esnext",
    "esno",
    "iconify",
    "INTLIFY",
    "lintstagedrc",
    "logicflow",
    "mockjs",
    "nprogress",
    "pinia",
    "pnpm",
    "qrcode",
    "sider",
    "sortablejs",
    "stylelint",
    "tailwindcss",
    "tinymce",
    "unocss",
    "unref",
    "vben",
    "vditor",
    "Vite",
    "vitejs",
    "vueuse",
    "zxcvbn"
  ],
  "vetur.format.scriptInitialIndent": true,
  "vetur.format.styleInitialIndent": true,
  "vetur.validation.script": false,
  "MicroPython.executeButton": [
    {
      "text": "▶",
      "tooltip": "运行",
      "alignment": "left",
      "command": "extension.executeFile",
      "priority": 3.5
    }
  ],
  "MicroPython.syncButton": [
    {
      "text": "$(sync)",
      "tooltip": "同步",
      "alignment": "left",
      "command": "extension.execute",
      "priority": 4
    }
  ],
  // æŽ§åˆ¶ç›¸å…³æ–‡ä»¶åµŒå¥—展示
  "explorer.fileNesting.enabled": true,
  "explorer.fileNesting.expand": false,
  "explorer.fileNesting.patterns": {
    "*.ts": "$(capture).test.ts, $(capture).test.tsx",
    "*.tsx": "$(capture).test.ts, $(capture).test.tsx",
    "*.env": "$(capture).env.*",
    "CHANGELOG.md": "CHANGELOG*",
    "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,LICENSE,.gitattributes,.gitignore,.gitpod.yml,CNAME,README*,.npmrc,.browserslistrc",
    ".eslintrc.cjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,.stylelintrc.*"
  },
  "terminal.integrated.scrollback": 10000,
  "nuxt.isNuxtApp": false,
  "vscodeCustomCodeColor.highlightValue": "v-auth",
  "vscodeCustomCodeColor.highlightValueColor": "#6366f1"
}
internal/vite-config/src/plugins/index.ts
@@ -1,3 +1,11 @@
/*
 * @Description: file content
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-18 21:50:22
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-18 23:44:19
 */
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import { type PluginOption } from 'vite';
@@ -25,7 +33,7 @@
  const appConfigPlugin = await createAppConfigPlugin({ root, isBuild });
  vitePlugins.push(appConfigPlugin);
  vitePlugins.push(DevTools());
  // vitePlugins.push(DevTools());
  // vite-plugin-html
  vitePlugins.push(configHtmlPlugin({ isBuild }));
src/api/tigerapi/dept.ts
@@ -1,3 +1,11 @@
/*
 * @Description: file content
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-18 15:09:47
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-19 14:30:04
 */
import { buildUUID } from '../../utils/uuid';
import { ApiActionPage } from '../model/baseModel';
import { DeptListGetResultModel, DeptListItem, DeptPageParams } from './model/systemModel';
src/api/tigerapi/mes/mesApi.ts
@@ -3,8 +3,8 @@
 * @Author: your name
 * @version: 
 * @Date: 2024-04-27 15:54:50
 * @LastEditors: your name
 * @LastEditTime: 2024-06-12 20:28:14
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-19 23:52:56
 */
export enum mesApi {
  GetRoute = '/MES/GetRoute',
@@ -17,4 +17,7 @@
  SaveMesWs = '/MES/SaveMesWs',
  DeleteMesWs = '/MES/DeleteMesWs',
  SaveRouteNodePost = '/MES/SaveRouteNodePost',
  GetRoutePTree = '/MES/GetRoutePTree',
  RouteToProd = '/MES/RouteToProd',
}
src/api/tigerapi/mes/router.ts
@@ -1,10 +1,11 @@
import { ApiAction, ApiActionPage } from '../../model/baseModel';
import { Api, genAction, genActionPage } from '../system';
import { defHttp } from '/@/utils/http/axios';
import { MES_ROUTE, MES_ROUTE_NODE_POST, RouteData } from '../model/router';
import { MES_ROUTE, MES_ROUTE_NODE_POST, RouteData, V_MES_ROUTE_PTREE } from '../model/router';
import { mesApi } from './mesApi';
import { useUserStore } from '/@/store/modules/user';
import { RoutePageListGetResultModel, RoutelistPageParams } from '../model/mesModel';
import { StringLiteral } from 'typescript';
/*
 * èŽ·å–å·¥è‰ºè·¯çº¿åˆ—è¡¨
@@ -120,3 +121,38 @@
    );
    return data;
  };
/**
 * @description: èŽ·å–äº§å“å·¥è‰ºè·¯çº¿æ ‘å½¢æ•°æ®
 * @param {string} params
 * @return {*}
 */
export async function GetRoutePTree(params?: string) {
  const data = await defHttp.get<V_MES_ROUTE_PTREE[]>(
    {
      url: mesApi.GetRoutePTree,
      params: { param: params },
    },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
    },
  );
  return data;
}
/**
 * @description: æ·»åŠ å·¥è‰ºçº¿åˆ°äº§å“
 * @param {*} params
 * @return {*}
 */
export const RouteToProd = async (params: {}) => {
  const data = await defHttp.get(
    { url: mesApi.RouteToProd, params: params },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
    },
  );
  return data;
};
src/api/tigerapi/model/router.ts
@@ -164,3 +164,15 @@
    NODE_ID: string;
    POST_CODE: string;
}
export interface V_MES_ROUTE_PTREE {
    pid: string;
    id: string;
    code: string;
    name: string;
    type: string;
    seq: number;
}
src/api/tigerapi/system.ts
@@ -280,9 +280,9 @@
  return result;
}
export function convertToTree(data: [], parentId: string, id: string, pid?: string) {
  const result: any[] = [];
  let temp: any[] = [];
export function convertToTree<T>(data: T[], parentId: string, id: string, pid?: string) {
  const result: T[] = [];
  let temp: T[] = [];
  const _pid = isNullOrEmpty(pid) ? '' : pid;
  for (let i = 0; i < data.length; i++) {
    const currPid = data[i][parentId] == null ? '' : data[i][parentId];
src/assets/icons/add_01.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718780808768" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5097" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M939.939489 459.072557 562.339502 459.072557 562.339502 83.519182 462.055494 83.519182 462.055494 459.072557 84.455507 459.072557 84.455507 559.356564 462.055494 559.356564 462.055494 939.003164 562.339502 939.003164 562.339502 559.356564 939.939489 559.356564Z" fill="#272636" p-id="5098"></path></svg>
src/assets/icons/customer.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718810837499" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="22871" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M483 508c-59.3 0-115.05-23.09-156.98-65.02C284.09 401.05 261 345.3 261 286s23.09-115.05 65.02-156.98C367.95 87.09 423.7 64 483 64s115.05 23.09 156.98 65.02C681.91 170.95 705 226.7 705 286s-23.09 115.05-65.02 156.98C598.05 484.91 542.3 508 483 508z m0-380c-87.12 0-158 70.88-158 158s70.88 158 158 158 158-70.88 158-158-70.88-158-158-158zM896.24 960H63.78l0.24-32.24c0.42-56.17 11.71-110.64 33.55-161.89 21.11-49.53 51.13-93.98 89.25-132.12 38.15-38.17 82.51-68.14 131.87-89.07C369.82 522.99 424.09 512 480.01 512s110.19 10.99 161.32 32.68c49.35 20.93 93.72 50.9 131.87 89.07 38.12 38.14 68.15 82.59 89.25 132.12 21.84 51.25 33.13 105.72 33.55 161.89l0.24 32.24z m-766.53-64h700.6c-17.55-179.17-168.45-320-350.3-320s-332.74 140.83-350.3 320zM960 672h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96v64zM960 512H811c-17.6 0-32-14.4-32-32s14.4-32 32-32h149v64zM960 352H768c-17.6 0-32-14.4-32-32s14.4-32 32-32h192v64z" p-id="22872"></path><path d="M480 895.54L375.56 772.11l104.45-196.22 104.42 196.22L480 895.54z m-27.56-131.65L480 796.46l27.56-32.57L480 712.11l-27.56 51.78z" p-id="22873"></path></svg>
src/assets/icons/factory.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718786040142" class="icon" viewBox="0 0 1025 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6289" xmlns:xlink="http://www.w3.org/1999/xlink" width="200.1953125" height="200"><path d="M986.88 949.76h-35.84V296.106667c0-40.32-32.64-72.96-72.96-72.96H658.986667v-149.333334c0-40.32-32.64-72.96-72.96-72.96H148.053333c-40.32 0-72.96 32.64-72.96 72.96v875.733334H38.186667a36.693333 36.693333 0 0 0-33.066667 17.706666c-6.826667 11.52-6.826667 26.026667 0 37.546667s19.626667 18.346667 33.066667 17.706667h948.693333c13.44 0.64 26.026667-6.186667 33.066667-17.706667 6.826667-11.52 6.826667-26.026667 0-37.546667-7.04-11.306667-19.84-18.133333-33.066667-17.493333z m-109.013333-653.653333v652.8H658.986667v-652.8h218.88zM148.053333 73.813333h437.76V948.693333H148.053333V73.813333z m0 0" fill="#707070" p-id="6290"></path><path d="M256.213333 292.053333H476.373333a36.48 36.48 0 1 0 0-72.96H256.213333c-20.266667 0-36.48 16.426667-36.48 36.48 0 20.266667 16.213333 36.48 36.48 36.48z m220.16 146.56H256.213333c-13.653333-0.853333-26.453333 5.973333-33.493333 17.493334-7.04 11.733333-7.04 26.24 0 37.76 7.04 11.733333 20.053333 18.346667 33.493333 17.493333h220.373334c19.2-1.28 34.133333-17.28 34.133333-36.48 0-19.2-14.933333-35.2-34.346667-36.266667z m0 219.093334H256.213333c-19.413333 0.853333-34.986667 16.853333-34.986666 36.48 0 19.626667 15.36 35.626667 34.986666 36.48h220.373334c19.413333-0.853333 34.986667-16.853333 34.986666-36.48-0.213333-19.626667-15.573333-35.626667-35.2-36.48z m0 0" fill="#707070" p-id="6291"></path></svg>
src/assets/icons/line.svg
@@ -1 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1678098791486" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6912" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M782.09 905.17H245.83A68.2 68.2 0 0 1 177.7 837V186.91a68.21 68.21 0 0 1 68.13-68.13h536.26a68.22 68.22 0 0 1 68.13 68.13V837a68.21 68.21 0 0 1-68.13 68.17zM245.83 166.78a20.15 20.15 0 0 0-20.13 20.13V837a20.15 20.15 0 0 0 20.13 20.13h536.26A20.15 20.15 0 0 0 802.22 837V186.91a20.15 20.15 0 0 0-20.13-20.13z" p-id="6913"></path><path d="M390.46 437.3a80.15 80.15 0 1 1 80.15-80.15 80.24 80.24 0 0 1-80.15 80.15z m0-112.3a32.15 32.15 0 1 0 32.15 32.15A32.19 32.19 0 0 0 390.46 325zM651.35 748a80.15 80.15 0 1 1 80.16-80.15A80.24 80.24 0 0 1 651.35 748z m0-112.3a32.15 32.15 0 1 0 32.16 32.15 32.19 32.19 0 0 0-32.16-32.15z" p-id="6914"></path><path d="M590.11 697.43H378.35a60.06 60.06 0 0 1-60-60v-89.08a60.06 60.06 0 0 1 60-60h293.16a12 12 0 0 0 12-12v-82.2a12 12 0 0 0-12-12h-224.9v-48h224.9a60.07 60.07 0 0 1 60 60v82.2a60.07 60.07 0 0 1-60 60H378.35a12 12 0 0 0-12 12v89.08a12 12 0 0 0 12 12h211.76z" p-id="6915"></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718786174169" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11445" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M38.222507 721.220267c0-40.86784 16.713387-78.01856 43.636053-104.941227s64.07168-43.636053 104.93952-43.636053h634.560853c40.86784 0 78.016853 16.713387 104.93952 43.636053s43.636053 64.073387 43.636054 104.941227c0 40.86784-16.713387 78.016853-43.636054 104.937813-26.922667 26.922667-64.07168 43.636053-104.93952 43.636053H186.79808c-40.86784 0-78.016853-16.713387-104.93952-43.636053-26.922667-26.92096-43.636053-64.069973-43.636053-104.937813z m60.66176-87.91552C76.317013 655.872 62.306987 686.99648 62.306987 721.220267c0 34.223787 14.010027 65.34656 36.57728 87.912106 22.567253 22.567253 53.690027 36.57728 87.913813 36.57728h634.560853c34.223787 0 65.34656-14.010027 87.913814-36.57728 22.567253-22.565547 36.57728-53.68832 36.57728-87.912106 0-34.223787-14.010027-65.348267-36.57728-87.91552-22.567253-22.567253-53.690027-36.57728-87.913814-36.57728H186.79808c-34.223787 0-65.34656 14.010027-87.913813 36.57728z" p-id="11446"></path><path d="M188.88704 785.18784c17.665707 0 33.660587-7.161173 45.2352-18.73408 11.572907-11.574613 18.73408-27.569493 18.73408-45.2352 0-17.665707-7.161173-33.660587-18.73408-45.2352-11.574613-11.572907-27.569493-18.73408-45.2352-18.73408-17.665707 0-33.660587 7.161173-45.2352 18.73408-11.572907 11.574613-18.73408 27.569493-18.73408 45.2352 0 17.665707 7.161173 33.660587 18.73408 45.2352 11.574613 11.572907 27.569493 18.73408 45.2352 18.73408z m79.290027 15.320747c-20.293973 20.292267-48.329387 32.8448-79.290027 32.8448-30.96064 0-58.996053-12.552533-79.290027-32.8448-20.292267-20.293973-32.8448-48.329387-32.8448-79.290027 0-30.96064 12.552533-58.996053 32.8448-79.290027 20.293973-20.292267 48.329387-32.8448 79.290027-32.8448 30.96064 0 58.996053 12.552533 79.290027 32.8448 20.292267 20.293973 32.8448 48.329387 32.8448 79.290027 0 30.96064-12.552533 58.996053-32.8448 79.290027zM821.51424 785.18784c17.665707 0 33.660587-7.161173 45.2352-18.73408 11.572907-11.574613 18.73408-27.569493 18.73408-45.2352 0-17.665707-7.161173-33.660587-18.73408-45.2352-11.574613-11.572907-27.569493-18.73408-45.2352-18.73408-17.665707 0-33.660587 7.161173-45.2352 18.73408-11.572907 11.574613-18.73408 27.569493-18.73408 45.2352 0 17.665707 7.161173 33.660587 18.73408 45.2352 11.574613 11.572907 27.569493 18.73408 45.2352 18.73408z m79.290027 15.320747c-20.293973 20.292267-48.329387 32.8448-79.290027 32.8448-30.96064 0-58.996053-12.552533-79.290027-32.8448-20.292267-20.293973-32.8448-48.329387-32.8448-79.290027 0-30.96064 12.552533-58.996053 32.8448-79.290027 20.293973-20.292267 48.329387-32.8448 79.290027-32.8448 30.96064 0 58.996053 12.552533 79.290027 32.8448 20.292267 20.293973 32.8448 48.329387 32.8448 79.290027 0 30.96064-12.552533 58.996053-32.8448 79.290027zM220.801707 446.206293h38.249813c5.623467 0 10.769067 2.317653 14.5152 6.060374l0.023893-0.023894c3.72224 3.72224 6.03648 8.869547 6.03648 14.539094v81.14688c0 5.669547-2.31424 10.816853-6.03648 14.539093l-0.023893-0.023893c-3.746133 3.74272-8.891733 6.060373-14.5152 6.060373h-38.249813c-5.614933 0-10.74688-2.30912-14.493014-6.03648l-0.04608-0.04608c-3.72736-3.746133-6.03648-8.87808-6.03648-14.493013v-81.14688c0-5.614933 2.30912-10.74688 6.03648-14.493014l0.04608-0.04608c3.746133-3.72736 8.87808-6.03648 14.493014-6.03648z m34.740906 24.08448h-31.232v74.129067h31.232v-74.129067zM357.33504 446.206293h38.249813c5.623467 0 10.769067 2.317653 14.5152 6.060374l0.023894-0.023894c3.72224 3.72224 6.03648 8.869547 6.03648 14.539094v81.14688c0 5.669547-2.31424 10.816853-6.03648 14.539093l-0.023894-0.023893c-3.746133 3.74272-8.891733 6.060373-14.5152 6.060373h-38.249813c-5.614933 0-10.74688-2.30912-14.493013-6.03648l-0.04608-0.04608c-3.72736-3.746133-6.03648-8.87808-6.03648-14.493013v-81.14688c0-5.614933 2.30912-10.74688 6.03648-14.493014l0.04608-0.04608c3.746133-3.72736 8.87808-6.03648 14.493013-6.03648z m34.740907 24.08448h-31.232v74.129067h31.232v-74.129067zM493.868373 446.206293h38.249814c5.623467 0 10.769067 2.317653 14.5152 6.060374l0.023893-0.023894c3.72224 3.72224 6.03648 8.869547 6.03648 14.539094v81.14688c0 5.669547-2.31424 10.816853-6.03648 14.539093l-0.023893-0.023893c-3.746133 3.74272-8.891733 6.060373-14.5152 6.060373h-38.249814c-5.614933 0-10.74688-2.30912-14.493013-6.03648l-0.04608-0.04608c-3.72736-3.746133-6.03648-8.87808-6.03648-14.493013v-81.14688c0-5.614933 2.30912-10.74688 6.03648-14.493014l0.04608-0.04608c3.746133-3.72736 8.87808-6.03648 14.493013-6.03648z m34.740907 24.08448h-31.232v74.129067h31.232v-74.129067zM630.401707 446.206293h38.249813c5.623467 0 10.769067 2.317653 14.5152 6.060374l0.023893-0.023894c3.72224 3.72224 6.03648 8.869547 6.03648 14.539094v81.14688c0 5.669547-2.31424 10.816853-6.03648 14.539093l-0.023893-0.023893c-3.746133 3.74272-8.891733 6.060373-14.5152 6.060373h-38.249813c-5.614933 0-10.74688-2.30912-14.493014-6.03648l-0.04608-0.04608c-3.72736-3.746133-6.03648-8.87808-6.03648-14.493013v-81.14688c0-5.614933 2.30912-10.74688 6.03648-14.493014l0.04608-0.04608c3.746133-3.72736 8.87808-6.03648 14.493014-6.03648z m34.740906 24.08448h-31.232v74.129067h31.232v-74.129067z" p-id="11447"></path><path d="M357.476693 512.718507h38.813014c5.623467 0 10.064213 7.978667 13.810346 9.470293l0.023894-0.01024c3.72224 1.483093 6.03648 3.534507 6.03648 5.794133v32.3328c0 2.259627-2.31424 4.31104-6.03648 5.794134l-0.023894-0.01024c-3.746133 1.491627-8.891733 2.414933-14.5152 2.414933h-38.249813c-5.614933 0-10.74688-0.919893-14.493013-2.404693l-0.04608-0.018774c-3.72736-1.493333-6.03648-3.53792-6.03648-5.77536v-32.3328c0-2.23744 2.30912-4.282027 6.03648-5.77536l0.04608-0.018773c3.746133-1.4848 9.019733-9.460053 14.634666-9.460053z m34.599254 25.402026l-31.232 0.2816v20.5056h31.232v-20.7872zM494.010027 512.718507h38.813013c5.623467 0 10.064213 7.978667 13.810347 9.470293l0.023893-0.01024c3.72224 1.483093 6.03648 3.534507 6.03648 5.794133v32.3328c0 2.259627-2.31424 4.31104-6.03648 5.794134l-0.023893-0.01024c-3.746133 1.491627-8.891733 2.414933-14.5152 2.414933h-38.249814c-5.614933 0-10.74688-0.919893-14.493013-2.404693l-0.04608-0.018774c-3.72736-1.493333-6.03648-3.53792-6.03648-5.77536v-32.3328c0-2.23744 2.30912-4.282027 6.03648-5.77536l0.04608-0.018773c3.746133-1.4848 9.019733-9.460053 14.634667-9.460053z m34.599253 25.402026l-31.232 0.2816v20.5056h31.232v-20.7872zM630.54336 512.718507h38.813013c5.623467 0 10.064213 7.978667 13.810347 9.470293l0.023893-0.01024c3.72224 1.483093 6.03648 3.534507 6.03648 5.794133v32.3328c0 2.259627-2.31424 4.31104-6.03648 5.794134l-0.023893-0.01024c-3.746133 1.491627-8.891733 2.414933-14.5152 2.414933h-38.249813c-5.614933 0-10.74688-0.919893-14.493014-2.404693l-0.04608-0.018774c-3.72736-1.493333-6.03648-3.53792-6.03648-5.77536v-32.3328c0-2.23744 2.30912-4.282027 6.03648-5.77536l0.04608-0.018773c3.746133-1.4848 9.019733-9.460053 14.634667-9.460053z m34.599253 25.402026l-31.232 0.2816v20.5056h31.232v-20.7872zM494.010027 446.206293h38.813013c5.623467 0 10.064213 7.978667 13.810347 9.470294l0.023893-0.01024c3.72224 1.483093 6.03648 3.534507 6.03648 5.794133v32.3328c0 2.259627-2.31424 4.31104-6.03648 5.794133l-0.023893-0.01024c-3.746133 1.491627-8.891733 7.778987-14.5152 7.778987h-38.531414c-5.614933 0-10.46528-6.283947-14.211413-7.768747l-0.04608-0.018773c-3.72736-1.493333-6.03648-3.53792-6.03648-5.77536v-32.3328c0-2.23744 2.30912-4.282027 6.03648-5.77536l0.04608-0.018773c3.746133-1.4848 9.019733-9.460053 14.634667-9.460054z m41.93792 17.360214l-44.77952 1.829546 6.208853 26.999467h31.232l7.338667-28.829013zM630.54336 446.206293h38.813013c5.623467 0 10.064213 7.978667 13.810347 9.470294l0.023893-0.01024c3.72224 1.483093 6.03648 3.534507 6.03648 5.794133v32.3328c0 2.259627-2.31424 4.31104-6.03648 5.794133l-0.023893-0.01024c-3.746133 1.491627-8.891733 7.778987-14.5152 7.778987h-38.531413c-5.614933 0-10.46528-6.283947-14.211414-7.768747l-0.04608-0.018773c-3.72736-1.493333-6.03648-3.53792-6.03648-5.77536v-32.3328c0-2.23744 2.30912-4.282027 6.03648-5.77536l0.04608-0.018773c3.746133-1.4848 9.019733-9.460053 14.634667-9.460054z m41.93792 17.360214l-44.77952 1.829546 6.208853 26.999467h31.232l7.338667-28.829013z" p-id="11448"></path><path d="M620.2112 500.538027l-38.382933-34.996907 4.0448-4.44416 38.382933 34.996907zM675.401387 496.093867l38.382933-34.996907 4.0448 4.44416-38.382933 34.996907zM804.066987 519.558827h25.35936v6.02112h-25.35936z" p-id="11449"></path><path d="M772.230827 519.179947h31.83616v12.25728h-31.83616zM771.928747 539.502933h31.83616v25.541974h-31.83616z" p-id="11450"></path><path d="M773.635413 563.33824h28.724907v-58.24512h-28.724907v58.24512z m30.431574 3.413333h-33.844907v-65.071786h35.551573v65.071786h-1.706666z" p-id="11451"></path><path d="M746.359467 519.558827h25.35936v6.02112H746.359467z" p-id="11452"></path></svg>
src/assets/icons/node.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718810879147" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="24744" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M458.2 371H112.6C86.9 371 66 350.1 66 324.5V164.9c0-25.7 20.9-46.5 46.5-46.5h345.6c25.7 0 46.5 20.9 46.5 46.5v159.5c0.1 25.7-20.8 46.6-46.4 46.6zM112.6 158.3c-3.6 0-6.6 3-6.6 6.6v159.5c0 3.6 3 6.6 6.6 6.6h345.6c3.6 0 6.6-3 6.6-6.6V164.9c0-3.6-3-6.6-6.6-6.6H112.6zM910.1 908H258.8c-25.7 0-46.5-20.9-46.5-46.5V515.9c0-25.7 20.9-46.5 46.5-46.5h651.3c25.7 0 46.5 20.9 46.5 46.5v345.6c0 25.7-20.8 46.5-46.5 46.5zM258.8 509.2c-3.6 0-6.6 3-6.6 6.6v345.6c0 3.6 3 6.6 6.6 6.6h651.3c3.6 0 6.6-3 6.6-6.6V515.9c0-3.6-3-6.6-6.6-6.6H258.8z" fill="#4F4F4F" p-id="24745"></path><path d="M225.5 695.3h-59.3c-18.3 0-33.2-14.9-33.2-33.1l-0.5-305.8c0-11 8.9-20 19.9-20 11 0 19.9 8.9 19.9 19.9l0.5 299.1h52.7c11 0 19.9 8.9 19.9 19.9s-8.8 20-19.9 20z" fill="#4F4F4F" p-id="24746"></path></svg>
src/assets/icons/position.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718786196365" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12477" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M128 194.474667A108.714667 108.714667 0 0 1 236.288 85.333333h551.424A108.714667 108.714667 0 0 1 896 194.474667v635.050666A108.714667 108.714667 0 0 1 787.712 938.666667H236.288A108.714667 108.714667 0 0 1 128 829.525333V194.474667z m108.288-49.621334c-27.178667 0-49.194667 22.229333-49.194667 49.621334v635.050666c0 27.392 22.016 49.621333 49.194667 49.621334h551.424c27.178667 0 49.194667-22.186667 49.194667-49.621334V194.474667c0-27.392-22.016-49.621333-49.194667-49.621334H236.288z m186.197333 190.677334c-14.890667-44.970667 18.346667-91.434667 65.408-91.434667h48.213334c47.061333 0 80.298667 46.464 65.408 91.434667l-18.986667 57.386666 67.968 205.482667c8.234667 24.96 1.792 52.48-16.64 71.082667l-73.130667 73.642666a68.565333 68.565333 0 0 1-97.450666 0l-73.088-73.642666a69.845333 69.845333 0 0 1-16.64-71.082667l67.925333-205.482667-18.986667-57.386666z m71.424 87.168l-64.341333 194.517333a9.984 9.984 0 0 0 2.389333 10.154667l73.088 73.642666c3.84 3.882667 10.069333 3.882667 13.909334 0l73.088-73.642666a9.984 9.984 0 0 0 2.389333-10.154667l-64.341333-194.517333h-36.181334z m36.181334-59.52l15.36-46.506667a9.898667 9.898667 0 0 0-9.344-13.056h-48.213334a9.898667 9.898667 0 0 0-9.386666 13.056l15.36 46.506667h36.266666z" fill="#000000" fill-opacity=".65" p-id="12478"></path></svg>
src/assets/icons/product.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718810813446" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21858" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M341.333333 405.333333h341.333334v42.666667H341.333333z" p-id="21859"></path><path d="M682.666667 554.666667H341.333333c-12.8 0-21.333333-8.533333-21.333333-21.333334V64c0-12.8 8.533333-21.333333 21.333333-21.333333h341.333334c12.8 0 21.333333 8.533333 21.333333 21.333333v469.333333c0 12.8-8.533333 21.333333-21.333333 21.333334z m-320-42.666667h298.666666V85.333333H362.666667v426.666667z" p-id="21860"></path><path d="M917.333333 981.333333H106.666667c-59.733333 0-106.666667-46.933333-106.666667-106.666666V64c0-12.8 8.533333-21.333333 21.333333-21.333333h981.333334c12.8 0 21.333333 8.533333 21.333333 21.333333v810.666667c0 59.733333-46.933333 106.666667-106.666667 106.666666zM42.666667 85.333333v789.333334c0 36.266667 27.733333 64 64 64h810.666666c36.266667 0 64-27.733333 64-64V85.333333H42.666667z" p-id="21861"></path><path d="M277.333333 853.333333H149.333333c-12.8 0-21.333333-8.533333-21.333333-21.333333v-128c0-12.8 8.533333-21.333333 21.333333-21.333333h128c12.8 0 21.333333 8.533333 21.333334 21.333333v128c0 12.8-8.533333 21.333333-21.333334 21.333333z m-106.666666-42.666666h85.333333v-85.333334H170.666667v85.333334zM341.333333 704h298.666667v42.666667H341.333333zM341.333333 789.333333h42.666667v42.666667h-42.666667zM426.666667 789.333333h42.666666v42.666667h-42.666666zM21.333333 149.333333h256v42.666667H21.333333zM746.666667 149.333333h256v42.666667H746.666667z" p-id="21862"></path></svg>
src/assets/icons/rot_action.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718810973656" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31973" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M428.4928 533.3504l-83.0464-81.92a16.7936 16.7936 0 0 0-23.4496 0L261.7344 510.976a16.1792 16.1792 0 0 0 0 23.0912l83.0464 81.92a16.64 16.64 0 0 0 23.3472 0l60.3136-59.4944a16.1792 16.1792 0 0 0 0.0512-23.1424zM645.9392 296.96a62.4128 62.4128 0 1 0-61.44-62.4128 61.952 61.952 0 0 0 61.44 62.4128z m87.04 113.1008c-22.1184-19.456-43.4688-45.6704-52.736-65.4336-15.0528-32.1536-65.536-40.2944-95.8976-40.2944S460.8 368.64 460.8 368.64c-20.48 18.4832-76.8 86.528-70.2464 99.4304s17.7152 8.2944 22.8864 6.8096c20.48-6.0928 40.96-31.488 60.3648-60.5696 14.336-21.5552 82.7904-45.6704 82.7904-45.6704s3.6352 45.7216-7.3216 71.68c-6.8608 16.384-24.5248 103.0656-26.6752 125.7984-6.0928 61.7472-29.184 57.0368-69.2736 105.2672s-10.9568 56.32 7.2192 53.6064 102.4-84.0192 112.3328-109.9264 11.6736-74.6496 16.4864-74.6496 11.008 9.8304 51.2 44.4416 27.4432 66.56 39.5776 124.8256c4.8128 23.04 13.1584 27.648 21.4016 28.3136 12.6976 1.0752 25.6-12.6464 25.6-28.3136 0-25.9072 5.12-101.2224-18.2784-130.9184s-68.096-64.256-68.096-97.6384 24.5248-78.7456 24.5248-78.7456c15.0528 31.2832 51.2 51.2 75.4688 57.6512s65.28-7.7312 48.2304-32.7168c-7.5264-10.496-42.24-4.864-56.2688-17.152zM757.76 936.1408H266.24a35.1232 35.1232 0 0 0 0 70.1952h491.52a35.1232 35.1232 0 0 0 0-70.1952zM851.6096 23.3472H168.1408A149.76 149.76 0 0 0 18.3296 173.1072v542.976a149.8624 149.8624 0 0 0 149.8624 149.8112h683.4176a149.8112 149.8112 0 0 0 149.76-149.8112v-542.72a149.8112 149.8112 0 0 0-149.76-150.016zM926.72 716.0832a74.9056 74.9056 0 0 1-74.8544 74.9568H168.192a74.9056 74.9056 0 0 1-74.9056-74.9568v-542.72a74.9056 74.9056 0 0 1 74.9056-75.1104h683.4176A74.8544 74.8544 0 0 1 926.72 173.1072z" fill="#232632" p-id="31974"></path></svg>
src/assets/icons/route.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718814195332" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="34036" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M973.134519 70.657931H289.219096V33.53186c0-10.840544-5.241459-21.01054-14.070356-27.302526-8.828897-6.291986-20.150002-7.934832-30.398228-4.392096L39.931276 72.490766C26.408535 77.162258 17.33377 89.891516 17.33377 104.185389v815.62245c0 14.305048 9.074765 27.034306 22.597506 31.694623l204.830412 70.653528c3.565086 1.22934 7.253107 1.832834 10.929951 1.832834a33.525222 33.525222 0 0 0 33.538633-33.527457v-37.126071h683.904247c18.518332 0 33.527457-15.009125 33.527457-33.527457V104.185389c0-18.518332-15.009125-33.527457-33.527457-33.527458zM222.164182 943.43352L84.388684 895.902762V128.090465l137.775498-47.530758v862.873813z m717.454055-57.153138H289.219096V137.712846h650.387966v748.567536z m-288.224373-192.224088h-79.918282c-14.159763-43.574518-55.152667-75.157383-103.387502-75.157383-59.935918 0-108.68484 48.760099-108.68484 108.68484s48.760099 108.68484 108.68484 108.684841c48.234835 0 89.227739-31.582865 103.387502-75.157384h79.918282c77.034921 0 139.72009-62.673993 139.72009-139.720089s-62.673993-139.72009-139.72009-139.72009H525.542966c-40.065311 0-72.665175-32.599864-72.665176-72.665176v-2.536911c0-40.065311 32.599864-72.665175 72.665176-72.665175h115.71443c14.159763 43.574518 55.152667 75.157383 103.387502 75.157383 59.935918 0 108.68484-48.760099 108.68484-108.68484s-48.760099-108.68484-108.68484-108.684841c-48.234835 0-89.227739 31.582865-103.387502 75.157383H525.542966c-77.034921 0-139.72009 62.673993-139.72009 139.72009v2.536911c0 77.034921 62.673993 139.72009 139.72009 139.72009h125.850898c40.065311 0 72.665175 32.599864 72.665175 72.665176s-32.599864 72.665175-72.665175 72.665175z m-183.31696 75.157383c-22.955132 0-41.629926-18.674794-41.629926-41.629926s18.674794-41.629926 41.629926-41.629926 41.629926 18.674794 41.629926 41.629926-18.674794 41.629926-41.629926 41.629926z m276.567994-510.556118c22.955132 0 41.629926 18.674794 41.629926 41.629926s-18.674794 41.629926-41.629926 41.629926-41.629926-18.674794-41.629926-41.629926 18.674794-41.629926 41.629926-41.629926z" p-id="34037"></path></svg>
src/assets/icons/workshop.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1718786260121" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13657" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M739.84 673.216a239.84 239.84 0 0 0-325.984-328.096l47.744 47.776 105.792 105.76-90.496 90.528-105.92-105.92-47.744-47.712a236.8 236.8 0 0 0-25.216 65.28 241.312 241.312 0 0 0-6.048 52.928 239.744 239.744 0 0 0 359.488 207.968l188.48 230.72a82.464 82.464 0 0 0 59.424 30.496c1.344 0.064 2.656 0.096 4 0.096a72.224 72.224 0 0 0 51.712-21.152l24.992-25.024a72.576 72.576 0 0 0 21.056-55.68 82.56 82.56 0 0 0-30.464-59.424z m-83.424 4.992a175.52 175.52 0 0 1-299.904-118.88l93.888 93.888a37.312 37.312 0 0 0 52.864 0.064l128.32-128.288a37.504 37.504 0 0 0-0.064-52.704L537.6 378.4a175.424 175.424 0 0 1 118.784 299.84z m278.4 253.44l-24.992 24.96a9.792 9.792 0 0 1-7.264 2.4 18.624 18.624 0 0 1-13.024-7.04L708.16 729.92l222.016 181.344a18.72 18.72 0 0 1 7.04 13.088 9.472 9.472 0 0 1-2.4 7.232z" fill="#575869" p-id="13658"></path><path d="M1007.296 331.52l-207.36-141.92V55.68h-64v90.144L531.456 5.952a31.072 31.072 0 0 0-14.88-4.992 447.104 447.104 0 0 0-9.216 0 31.104 31.104 0 0 0-14.88 4.992L16.704 331.488a32 32 0 1 0 36.128 52.8l45.792-31.328v638.208a32 32 0 0 0 32 32l0.48-0.096 0.448 0.096h500.48v-64H162.624V309.184L512 70.144l347.2 237.536v285.952h64v-242.176l48 32.864a32 32 0 1 0 36.096-52.8z" fill="#575869" p-id="13659"></path></svg>
src/components/TigerTree/src/TigerTree.vue
@@ -193,8 +193,8 @@
        state.expandedKeys = expandAll ? getAllKeys() : ([] as KeyType[]);
      }
      function addHouse(add: boolean) {
        emit('addHouse', add);
      function handleAdd(add: boolean) {
        emit('handleAdd', add);
      }
      function onStrictlyChange(strictly: boolean) {
@@ -353,7 +353,7 @@
        getNodeById,
        checkAll,
        expandAll,
        addHouse,
        handleAdd,
        filterByLevel: (level: number) => {
          state.expandedKeys = filterByLevel(level);
        },
@@ -448,7 +448,7 @@
                checkable={checkable}
                checkAll={checkAll}
                expandAll={expandAll}
                addHouse = {addHouse}
                onHandleAdd = {handleAdd}
                title={title}
                search={search}
                toolbar={toolbar}
@@ -461,7 +461,6 @@
                {extendSlots(slots)}
              </TreeHeader>
            )}
            <div style='height:777px;overflow-y: scroll;'>
              <Spin
              wrapperClassName={unref(props.treeWrapperClassName)}
              spinning={unref(props.loading)}
@@ -476,7 +475,6 @@
                class="!mt-4"
              />
            </Spin>
            </div>
          </div>
        );
      };
src/components/TigerTree/src/components/TreeHeader.vue
@@ -2,7 +2,7 @@
  <div :class="bem()" class="flex px-2 py-1.5 items-center">
    <slot name="headerTitle" v-if="slots.headerTitle"></slot>
    <button type="primary" v-if="add" style="background-color: transparent;" @click="Add">
      <Icon icon="add|svg" />
      <Icon icon="add_01|svg" />
    </button>
    <BasicTitle :helpMessage="helpMessage" v-if="!slots.headerTitle && title">
      {{ title }}
@@ -86,12 +86,8 @@
      type: Function,
      default: undefined,
    },
    addHouse: {
      type: Function,
      default: undefined,
    },
  } as const);
  const emit = defineEmits(['strictly-change', 'search']);
  const emit = defineEmits(['strictly-change', 'search', 'handleAdd']);
  const slots = useSlots();
  const { t } = useI18n();
@@ -159,7 +155,7 @@
  function Add(e: { key: ToolbarEnum }) {
    // alert(999)
    props.addHouse?.(false);
    emit('handleAdd');
  }
  function emitChange(value?: string): void {
src/components/TigerTree/src/types/tree.ts
@@ -20,7 +20,7 @@
  'check',
  'update:searchValue',
  'gethalfCheckedKeys',
  'addHouse'
  'handleAdd'
];
export interface TreeState {
src/layouts/default/menu/index.vue
@@ -135,7 +135,10 @@
          const id = { ID: path.split('/')[1], colSlots: colSlots, crudColSlots: crudColSlots };
          go(`/${path.split('/')[1]}/${path.split('/')[2]}/${encodeURI(JSON.stringify(id))}`);
        });
      } else if (path.split('/').length > 2 && path.split('/')[2] == 'High') {
        } else if (
          (path.split('/').length > 2 && path.split('/')[2] == 'High') ||
          path.split('/')[2] == 'CP'
        ) {
        const id = { Name: path.split('/')[1] };
        go(`/${path.split('/')[1]}/${path.split('/')[2]}/${encodeURI(JSON.stringify(id))}`);
      } else {
src/views/tigerprojects/system/lowcode/composition/CustTree.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
<!--
 * @Description: é€šç”¨Tree组件
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-19 11:07:21
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-19 23:09:39
-->
<template>
  <div class="m-4 mr-0 overflow-hidden bg-white">
    <TigerTree
      :title="title"
      toolbar
      search
      :add="add"
      treeWrapperClassName="h-[calc(100%-35px)] overflow-auto"
      :clickRowToExpand="false"
      :treeData="treeData"
      :renderIcon="createIcon"
      :fieldNames="fieldNames"
      @select="handleSelect"
      @handleAdd="handleAdd"
    />
  </div>
</template>
<script lang="ts" setup>
  import { onMounted, ref } from 'vue';
  import { FieldNames, TigerTree, TreeItem } from '/@/components/TigerTree'
  defineOptions({ name: 'CustTree' });
  const emit = defineEmits(['select', 'handleAdd']);
  const props = defineProps({
    title: {
      // type: [Function, String] as PropType<string | ((data) => string)>,
      type: String,
    },
    treeData: {
      type:  Array as PropType<TreeItem[]>,
    },
    createIcon: {
      type: Function as PropType<(params: Recordable<any>) => string>,
    },
    add: {type: Boolean,},
    fieldNames: {type: Object as PropType<FieldNames>},
  });
  function handleSelect(keys) {
    emit('select', keys[0]);
  }
  function handleAdd() {
    emit('handleAdd');
  }
  onMounted(() => {});
</script>
src/views/tigerprojects/system/lowcode/composition/DeptModal.vue
@@ -9,7 +9,7 @@
  import { BasicForm, useForm } from '@/components/Form';
  import { formSchema } from './dept.data';
  import { getDeptList } from '@/api/demo/system';
  import { getTreeList } from '@/api/tigerapi/dept';
  defineOptions({ name: 'DeptModal' });
@@ -34,7 +34,7 @@
        ...data.record,
      });
    }
    const treeData = await getDeptList();
    const treeData = await getTreeList();
    updateSchema({
      field: 'parentDept',
      componentProps: { treeData },
src/views/tigerprojects/system/lowcode/composition/account.data.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
import { getAllRoleList, isAccountExist } from '@/api/demo/system';
import { BasicColumn, FormSchema } from '@/components/Table';
/**
 * transform mock data
 * {
 *  0: '华东分部',
 * '0-0': '华东分部-研发部'
 * '0-1': '华东分部-市场部',
 *  ...
 * }
 */
export const deptMap = (() => {
  const pDept = ['华东分部', '华南分部', '西北分部'];
  const cDept = ['研发部', '市场部', '商务部', '财务部'];
  return pDept.reduce((map, p, pIdx) => {
    map[pIdx] = p;
    cDept.forEach((c, cIndex) => (map[`${pIdx}-${cIndex}`] = `${p}-${c}`));
    return map;
  }, {});
})();
export const columns: BasicColumn[] = [
  {
    title: '用户名',
    dataIndex: 'account',
    width: 120,
  },
  {
    title: '昵称',
    dataIndex: 'nickname',
    width: 120,
  },
  {
    title: '邮箱',
    dataIndex: 'email',
    width: 120,
  },
  {
    title: '创建时间',
    dataIndex: 'createTime',
    width: 180,
  },
  {
    title: '角色',
    dataIndex: 'role',
    width: 200,
  },
  {
    title: '所属部门',
    dataIndex: 'dept',
    customRender: ({ value }) => {
      return deptMap[value];
    },
  },
  {
    title: '备注',
    dataIndex: 'remark',
  },
];
export const searchFormSchema: FormSchema[] = [
  {
    field: 'account',
    label: '用户名',
    component: 'Input',
    colProps: { span: 8 },
  },
  {
    field: 'nickname',
    label: '昵称',
    component: 'Input',
    colProps: { span: 8 },
  },
];
export const accountFormSchema: FormSchema[] = [
  {
    field: 'account',
    label: '用户名',
    component: 'Input',
    helpMessage: ['本字段演示异步验证', '不能输入带有admin的用户名'],
    rules: [
      {
        required: true,
        message: '请输入用户名',
      },
      {
        trigger: 'blur',
        validator(_, value) {
          return new Promise((resolve, reject) => {
            if (!value) return resolve();
            isAccountExist(value)
              .then(resolve)
              .catch((err) => {
                reject(err.message || '验证失败');
              });
          });
        },
      },
    ],
  },
  {
    field: 'pwd',
    label: '密码',
    component: 'InputPassword',
    required: true,
    ifShow: false,
  },
  {
    label: '角色',
    field: 'role',
    component: 'ApiSelect',
    componentProps: {
      api: getAllRoleList,
      labelField: 'roleName',
      valueField: 'roleValue',
    },
    required: true,
  },
  {
    field: 'dept',
    label: '所属部门',
    component: 'TreeSelect',
    componentProps: {
      fieldNames: {
        label: 'deptName',
        value: 'id',
      },
      getPopupContainer: () => document.body,
    },
    required: true,
  },
  {
    field: 'nickname',
    label: '昵称',
    component: 'Input',
    required: true,
  },
  {
    label: '邮箱',
    field: 'email',
    component: 'Input',
    required: true,
  },
  {
    label: '备注',
    field: 'remark',
    component: 'InputTextArea',
  },
];
src/views/tigerprojects/system/lowcode/composition/index.vue
@@ -1,49 +1,106 @@
<template>
  <div>
    <BasicTable @register="registerTable">
  <PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
    <CustTree
      class="w-1/4 xl:w-1/5"
      @select="handleSelect"
      :title="title"
      :treeData="treeData"
      :create-icon="createIcon"
      :fieldNames="fieldNames"
    /><!--
      add
      @handle-add="handleAdd" -->
    <BasicTable class="w-3/4 xl:w-4/5" @register="registerTable">
      <template #toolbar>
        <a-button type="primary" @click="handleCreate"> æ–°å¢žéƒ¨é—¨ </a-button>
        <a-button type="primary" @click="handleCreate" preIcon="add_02|svg"> æ–°å¢ž </a-button>
      </template>
      <template #bodyCell="{ column, record }">
        <template v-if="column.key === 'action'">
          <TableAction
            :actions="[
              {
                icon: 'clarity:note-edit-line',
                onClick: handleEdit.bind(null, record),
              },
              {
                icon: 'ant-design:delete-outlined',
                color: 'error',
                popConfirm: {
                  title: '是否确认删除',
                  placement: 'left',
                  confirm: handleDelete.bind(null, record),
                },
              },
            ]"
          />
          <TableAction :actions="createActions(record)" />
        </template>
      </template>
    </BasicTable>
    <DeptModal @register="registerModal" @success="handleSuccess" />
  </div>
    <normalDrawer @register="registerDrawer" @success="handleSuccess" />
    <CustModal
      @register="registerCust"
      @success="custSuccess"
      :type="cType"
      :detailSlots="dtlSlots"
    >
      <!-- ç”¨æ’槽自定义多表单 -->
      <template #[item.name] v-for="item in dtlSlots" :key="item.name">
        <BasicForm @register="useFormData[item.name][0]" v-if="useFormData[item.name]">
          <!-- ç”¨æ’槽自定义弹出选择框 -->
          <template #[name]="{ field }" v-for="name in item.slots" :key="name">
            <a-button
              class="mt-1 ml-1"
              size="small"
              @click="handleCustClick(field)"
              :preIcon="item.preIcons[name]"
            />
            <NormalModal
              @register="useModalData[name][0]"
              @success="(d, u) => handleEntSuccess(d, u, item.name)"
            />
          </template>
        </BasicForm>
        <!-- è‡ªå®šä¹‰å†…容 -->
      </template>
    </CustModal>
  </PageWrapper>
</template>
<script lang="ts" setup>
  import { BasicTable, useTable, TableAction } from '@/components/Table';
  import { getDeptList } from '@/api/demo/system';
  import { getEntity, getRoleListByPage, convertToTree } from '@/api/tigerapi/system';
  import { PageWrapper } from '@/components/Page';
  import CustTree from './CustTree.vue';
  import { useModal } from '@/components/Modal';
  import DeptModal from './DeptModal.vue';
  import normalDrawer from '../normalDrawer.vue';
  import NormalModal from '/@/views/components/NormalModal.vue';
  import CustModal from '/@/views/components/CustModal.vue';
  import { columns, searchFormSchema } from './dept.data';
  import {
    GetActionsData,
    GetSelectSuccess,
    OpenCustModal,
    fetchTreeData,
    getFormSchema,
    getOthersValues,
  } from '../data';
  import { onMounted, reactive, ref } from 'vue';
  import { useRoute } from 'vue-router';
  import { useDrawer } from '/@/components/Drawer';
  import { BasicForm, useForm } from '/@/components/Form/index';
  import { TreeItem } from '/@/components/TigerTree';
  import { createIconByType } from '../data';
import { RouteToProd } from '/@/api/tigerapi/mes/router';
  defineOptions({ name: 'DeptManagement' });
  const [registerModal, { openModal }] = useModal();
  const route = useRoute();
  const objParams = ref(JSON.parse(decodeURI(route.params?.id as string)));
  const entityName = ref(objParams.value.Name);
  const formSchemas = ref({}); //弹出框或高级页面多表单结构
  const useModalData = ref({}); //表单中插槽渲染按钮打开模态框useModal方法
  const useFormData = ref({});
  const colSlots = ref<any>(objParams.value.colSlots); //按钮插槽
  const crudColSlots = ref<any>(objParams.value.crudColSlots);
  const cType = ref('');
  const dtlSlots = ref([] as any[]);
  const selectVals = ref({});
  const baseCards = ref([] as any[]);
  const otherCards = ref([] as any[]);
  const searchInfo = reactive<Recordable>({});
  const treeData = ref<TreeItem[]>([]);
  const title = ref('');
  const fieldNames = ref({});
  const others = ref(getOthersValues(entityName.value, objParams.value.CODE, objParams.value.ID));
  const [registerCust, { openModal: openCustomModal, closeModal }] = useModal();
  const [registerItemAdd, { openModal: openItemModal }] = useModal();
  const [registerDrawer, { openDrawer }] = useDrawer();
  const [registerTable, { reload }] = useTable({
    title: '部门列表',
    api: getDeptList,
    title: '列表信息',
    api: getRoleListByPage,
    columns,
    formConfig: {
      labelWidth: 120,
@@ -65,24 +122,157 @@
    },
  });
  function handleCreate() {
    openModal(true, {
      isUpdate: false,
    });
  /**
   * @description: èŽ·å–æ ‘å½¢æ•°æ®
   * @param {*} type
   * @return {*}
   */
  async function fetch(type: string) {
    //根据type获取树形数据
    const data = await fetchTreeData(type);
    title.value = data.title;
    treeData.value = data.treeData;
    fieldNames.value = data.fieldNames;
  }
  function handleEdit(record: Recordable) {
    openModal(true, {
  // function handleAdd(){
  //   console.log('handleAdd');
  // }
  /**
   * @description: æ ‘形节点图标
   * @param {*} params
   * @param {*} type
   * @return {*}
   */
  function createIcon(params: Recordable<any>) {
    return createIconByType(params, entityName.value);
  }
  onMounted(() => {
    fetch(entityName.value);
  });
  /**
   * @description: ç”Ÿæˆåˆ—表中操作项的按钮
   * @param {*} record
   * @return {*}
   */
  function createActions(record) {
    return GetActionsData(
      {
      record,
      isUpdate: true,
        ifSave: true,
        entityName: entityName.value,
        formJson: getFormSchema(`${entityName.value}_Crud`),
        cType,
        dtlSlots,
        useModalData,
        useFormData,
        crudColSlots,
      },
      openDrawer,
      reload,
      openCustomModal,
      useForm,
      useModal,
    );
  }
  /**
   * @description: éªŒè¯è¡¨å•
   * @return {*}
   */
  async function validate() {
    let validates = {};
    const Keys = Object.getOwnPropertyNames(useFormData.value);
    let i;
    for (i = 0; i < Keys.length; i++) {
      validates[Keys[i]] = await useFormData.value[Keys[i]][1].validate();
    }
    return validates;
  }
  function handleCreate() {
    // validate().then((res) => {
    //   const Keys = Object.getOwnPropertyNames(useFormData.value);
    //   let i;
    //   for (i = 0; i < Keys.length; i++) {
    //     others.value[objParams.value.pCode] = objParams.value.IsID
    //       ? res[Keys[i]]['ID']
    //       : res[Keys[i]][objParams.value.pCode];
    //   }
    //   openDrawer(true, {
    //     isUpdate: false,
    //     ifSave: true,
    //     entityName: entityName.value,
    //     formJson: getFormSchema(`${entityName.value}_Crud`),
    //     crudColSlots,
    //     others: others.value,
    //   });
    // });
    RouteToProd({rotId: 'e4712192f75b465585107fdcd13d8003', prodCode: 'K5019AA013517'}).then(() => {
    });
  }
  function handleDelete(record: Recordable) {
    console.log(record);
  // function handleEdit(record: Recordable) {
  //   openModal(true, {
  //     record,
  //     isUpdate: true,
  //   });
  // }
  // function handleDelete(record: Recordable) {
  //   console.log(record);
  // }
  function handleSelect(deptId = '') {
    searchInfo.deptId = deptId;
    reload();
  }
  function handleSuccess() {
    reload();
  }
  /**
   * @description: å¼¹å‡ºæ¡†ç¡®å®šè¿”回
   * @param {*} d
   * @return {*}
   */
  function custSuccess(d) {
    reload();
  }
  /**
   * @description: å„表单内弹出选择框选择成功后方法
   * @param {*} d
   * @param {*} u
   * @param {*} item
   * @return {*}
   */
  function handleEntSuccess(d, u, item) {
    var values = GetSelectSuccess(d, u, cType.value);
    selectVals.value = values; //保存弹出框选择的结果
    let _val = {};
    _val[d.returnFieldName] = values[d.returnFieldName];
    useFormData.value[item][1].setFieldsValue(_val);
  }
  /**
   * @description: æ‰“开自定义模态框
   * @param {*} item
   * @return {*}
   */
  function handleCustClick(item) {
    OpenCustModal(
      useModalData.value[item][1].openModal, //带入openModal方法
      cType.value,
      item,
      [],
      // selectVals.value['ROUTE_CODE'],
    ); //[openRvModal], selectVals.value['ID']这是自定义参数,按实际需求
  }
</script>
src/views/tigerprojects/system/lowcode/composition/prodRoute.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
/*
 * @Description: äº§å“å·¥è‰ºè·¯çº¿ç›¸å…³
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-20 00:24:28
 */
/**
 * @description: èŽ·å–æ ‘å½¢å›¾æ ‡
 * @param {Recordable} params
 * @return {*}
 */
export function prodRouteCreateIcon(params: Recordable<any>) {
  let icon = '';
  switch (params['type']) {
    case 'Product':
      icon = 'product|svg';
      break;
    case 'Route':
      icon = 'route|svg';
      break;
    case 'Node':
      icon = 'node|svg';
      break;
    case 'Action':
      icon = 'rot_action|svg';
      break;
    case 'Customer':
      icon = 'customer|svg';
      break;
  }
  return icon;
}
src/views/tigerprojects/system/lowcode/data.ts
@@ -22,7 +22,6 @@
 *                               ç¥žå…½ä¿ä½‘            æ°¸æ— BUG
 */
/*
 * @Description: é€šç”¨ä½Žä»£ç å‘ˆçŽ°é¡µé¢ä¸»æ•°æ®
 * @Author: Ben Lin
@@ -44,18 +43,44 @@
  DftGrpDel,
  dftEditeOperation,
} from './normal/basDefectGrp';
import { onChangeFns, rsnGrpEdit, rsGrpGetSelectSuccess, rsGrpOpenSelectItem, rsnBaseSchema, rsnCrudSchema, rsnSearchSchema, rsnBaseColumn, rsnGrpDel, rsnEditeOperation } from './normal/basReasonGrp';
import { DeleteEntity } from '/@/api/tigerapi/system';
import {
  onChangeFns,
  rsnGrpEdit,
  rsGrpGetSelectSuccess,
  rsGrpOpenSelectItem,
  rsnBaseSchema,
  rsnCrudSchema,
  rsnSearchSchema,
  rsnBaseColumn,
  rsnGrpDel,
  rsnEditeOperation,
} from './normal/basReasonGrp';
import { DeleteEntity, convertToTree, getEntity } from '/@/api/tigerapi/system';
import { ActionItem, BasicColumn, FormSchema } from '/@/components/Table';
import { useI18n } from '/@/hooks/web/useI18n';
import { isNullOrEmpty } from '/@/utils/is';
import { woCustFn, woformSchema } from '/@/views/components/bizMesWo';
import { useModal } from '/@/components/Modal';
import { goDetail, labelActionItem, labelGetSelectSuccess, labelOpenSelectItem } from './detail/basLabelVar';
import {
  goDetail,
  labelActionItem,
  labelGetSelectSuccess,
  labelOpenSelectItem,
} from './detail/basLabelVar';
import { buildUUID } from '/@/utils/uuid';
import { Tag } from 'ant-design-vue';
import { Ref, h } from 'vue';
import { pkgBaseColumn, pkgBaseSchema, pkgCrudSchema, pkgEditeOperation, pkgGrpEdit, pkgSearchSchema } from './basPkgrule';
import {
  pkgBaseColumn,
  pkgBaseSchema,
  pkgCrudSchema,
  pkgEditeOperation,
  pkgGrpEdit,
  pkgSearchSchema,
} from './basPkgrule';
import { GetRoutePTree } from '/@/api/tigerapi/mes/router';
import { V_MES_ROUTE_PTREE } from '/@/api/tigerapi/model/router';
import { prodRouteCreateIcon } from './composition/prodRoute';
const { t } = useI18n();
@@ -117,13 +142,12 @@
    /* æ ‡ç­¾æ¨¡æ¿ */
    case 'BAS_LABEL_TEMP':
      const _data = labelActionItem;
      _data[0].onClick = goDetail.bind(null, args[5], params['record'])
      _data[0].onClick = goDetail.bind(null, args[5], params['record']);
      data = [...data, ..._data];
      break;
  }
  return data;
}
/**
 * @description: è‡ªå®šä¹‰åˆ é™¤æ–¹æ³•
@@ -178,17 +202,38 @@
    case 'BAS_DEFECT_GRP':
      data.action = 'go';
      data.url = 'BAS_DEFECT/High';
      data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_DEFECT', Title: '新增不良代码组', pCode: 'DFTG_CODE', IsID: false };
      data.params = {
        CODE: '0',
        ID: buildUUID(),
        Name: 'BAS_DEFECT',
        Title: '新增不良代码组',
        pCode: 'DFTG_CODE',
        IsID: false,
      };
      break;
    case 'BAS_REASON_GRP':
      data.action = 'go';
      data.url = 'BAS_REASON/High';
      data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_REASON', Title: '新增不良原因组', pCode: 'RSNG_CODE', IsID: false };
      data.params = {
        CODE: '0',
        ID: buildUUID(),
        Name: 'BAS_REASON',
        Title: '新增不良原因组',
        pCode: 'RSNG_CODE',
        IsID: false,
      };
      break;
    case 'BAS_PKG_RULE':
      data.action = 'go';
      data.url = 'BAS_PKG_DTL/High';
      data.params = { CODE: '0', ID: buildUUID(), Name: 'BAS_PKG_DTL', Title: '新增包装规则', pCode: 'PKG_RULE_ID', IsID: true };
      data.params = {
        CODE: '0',
        ID: buildUUID(),
        Name: 'BAS_PKG_DTL',
        Title: '新增包装规则',
        pCode: 'PKG_RULE_ID',
        IsID: true,
      };
      break;
  }
  return data;
@@ -344,7 +389,7 @@
        ],
        tableName: 'BAS_ITEM',
        rowKey: 'ITEM_CODE',
        searchInfo: {TABLE_NAME: 'BAS_ITEM'}
        searchInfo: { TABLE_NAME: 'BAS_ITEM' },
      });
      break;
  }
@@ -419,7 +464,7 @@
        ],
        tableName: 'BAS_ITEM',
        rowKey: 'ITEM_CODE',
        searchInfo: {TABLE_NAME: 'BAS_ITEM'}
        searchInfo: { TABLE_NAME: 'BAS_ITEM' },
      });
      break;
  }
@@ -492,7 +537,13 @@
        }),
      };
      args[2].value = [
        { name: 'BaseForm', slots: [], preIcons: {}, title: '不良代码组信息', entityName: 'BAS_DEFECT_GRP' },
        {
          name: 'BaseForm',
          slots: [],
          preIcons: {},
          title: '不良代码组信息',
          entityName: 'BAS_DEFECT_GRP',
        },
        // {
        //   name: 'prodinfo',
        //   slots: ['addRot', 'setRot'],
@@ -516,7 +567,13 @@
        }),
      };
      args[2].value = [
        { name: 'BaseForm', slots: [], preIcons: {}, title: '不良原因组信息', entityName: 'BAS_REASON_GRP' },
        {
          name: 'BaseForm',
          slots: [],
          preIcons: {},
          title: '不良原因组信息',
          entityName: 'BAS_REASON_GRP',
        },
      ];
      break;
    case 'BAS_PKG_DTL':
@@ -533,7 +590,13 @@
        }),
      };
      args[2].value = [
        { name: 'BaseForm', slots: [], preIcons: {}, title: '包装信息', entityName: 'BAS_PKG_RULE' },
        {
          name: 'BaseForm',
          slots: [],
          preIcons: {},
          title: '包装信息',
          entityName: 'BAS_PKG_RULE',
        },
      ];
      break;
    default:
@@ -578,13 +641,25 @@
  let title = {};
  switch (type) {
    case 'BAS_DEFECT':
      title = { pageTitle: '不良代码组管理', pageContent: '这里可以添加和修改不良代码组和不良代码。', baseTableTitle: '不良代码管理' };
      title = {
        pageTitle: '不良代码组管理',
        pageContent: '这里可以添加和修改不良代码组和不良代码。',
        baseTableTitle: '不良代码管理',
      };
      break;
    case 'BAS_REASON':
      title = { pageTitle: '不良原因组管理', pageContent: '这里可以添加和修改不良原因组和不良代码。', baseTableTitle: '不良原因管理' };
      title = {
        pageTitle: '不良原因组管理',
        pageContent: '这里可以添加和修改不良原因组和不良代码。',
        baseTableTitle: '不良原因管理',
      };
      break;
    case 'BAS_PKG_DTL':
      title = { pageTitle: '包装规则管理', pageContent: '这里可以添加和修改包装规则和包装信息。', baseTableTitle: '包装信息管理' };
      title = {
        pageTitle: '包装规则管理',
        pageContent: '这里可以添加和修改包装规则和包装信息。',
        baseTableTitle: '包装信息管理',
      };
      break;
    default:
      break;
@@ -616,4 +691,40 @@
  return Values;
}
/**
 * @description: èŽ·å–æ ‘å½¢æ•°æ®
 * @param {string} type
 * @return {*}
 */
export async function fetchTreeData(type: string) {
  let data = { title: '', treeData: [] as any[], fieldNames: {} };
  switch (type) {
    case 'Customer':
      let prodTreeData = await GetRoutePTree('K5019AA013517');
      data.treeData = convertToTree(prodTreeData, 'pid', 'id', 'root');
      data.title = '工艺路线';
      data.fieldNames = { key: 'id', title: 'name' }
      break;
    case 'BAS_PKG_DTL':
      break;
    default:
      break;
  }
  return data;
}
/**
 * @description: æ ¹æ®type获取图标
 * @param {Recordable} params
 * @param {string} type
 * @return {*}
 */
export function createIconByType(params: Recordable<any>, type: string) {
  let icon = '';
  switch (type) {
    case 'Customer':
      icon = prodRouteCreateIcon(params);
      break;
  }
  return icon;
}
src/views/tigerprojects/system/lowcode/detail/index.vue
@@ -1,4 +1,12 @@
<!--
 * @Description: file content
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-18 15:09:48
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-06-19 10:49:35
-->
<!--
 * @Description: ä½Žä»£ç è¯¦æƒ…呈现页面
 * @Author: Ben Lin
 * @version: 
src/views/tigerprojects/system/lowcode/high/index.vue
@@ -157,7 +157,7 @@
const others = ref(getOthersValues(entityName.value, objParams.value.CODE, objParams.value.ID));
//获取表格列信息并初始化一些数据,如:formSchemas(弹出框或高级页面多表单结构), useFormData(表单中插槽渲染按钮打开模态框useModal方法)...等
const _columns = GetBasicColumnAndInit(entityName.value, formSchemas, useFormData, baseCards, otherCards, useForm);
const data = ref([] as BAS_DEFECT[]);
const data = ref([]);
const [registerCust, { openModal: openCustomModal, closeModal }] = useModal();
const [registerItemAdd, { openModal: openItemModal }] = useModal();
const [registerDrawer, { openDrawer }] = useDrawer();
src/views/tigerprojects/wms/warehousemodel/RegionForm.vue
@@ -13,7 +13,7 @@
import { PageWrapper } from '/@/components/Page';
import { SaveRegion } from '/@/api/tigerapi/wms/house';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n('WMS.WareHouse');
const { t } = useI18n();
const schemas: FormSchema[] = [
{
      field: 'CREATE_TIME',
src/views/tigerprojects/wms/warehousemodel/RegionModal.vue
@@ -19,7 +19,7 @@
  import { useMessage } from '/@/hooks/web/useMessage';
  import { useI18n } from '/@/hooks/web/useI18n';
  const { t } = useI18n('WMS.WareHouse');
  const { t } = useI18n();
  const schemas: FormSchema[] = [
    {
src/views/tigerprojects/wms/warehousemodel/ShelfForm.vue
@@ -62,7 +62,7 @@
  emit: ['success', 'register'],
  setup(props, { emit }) {
    const [registerLocation, { openModal: openLocationModal }] = useModal();
    const { t } = useI18n('WMS.WareHouse');
    const { t } = useI18n();
    var CENLength=ref(0);
    var NOLength=ref(0);
    const schemas: FormSchema[] = [
src/views/tigerprojects/wms/warehousemodel/ShelfModal.vue
@@ -13,7 +13,7 @@
import { useI18n } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
const { t } = useI18n('WMS.WareHouse');
const { t } = useI18n();
const { createMessage } = useMessage();
const schemas: FormSchema[] = [
  {
src/views/tigerprojects/wms/warehousemodel/WareHouseForm.vue
@@ -15,7 +15,7 @@
import { getTreeList } from '/@/api/tigerapi/dept';
//import  WhListItem  from '@/api/model/warehoueseModel';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n('WMS.WareHouse');
const { t } = useI18n();
const schemas: FormSchema[] = [
{
      field: 'CREATE_TIME',
src/views/tigerprojects/wms/warehousemodel/WareHouseModal.vue
@@ -14,7 +14,7 @@
  import { useI18n } from '/@/hooks/web/useI18n';
  import { useMessage } from '/@/hooks/web/useMessage';
  const { t } = useI18n('WMS.WareHouse');
  const { t } = useI18n();
  const schemas: FormSchema[] = [
    {
      field: 'CREATE_TIME',
src/views/tigerprojects/wms/warehousemodel/WareHouseTree.vue
@@ -11,7 +11,7 @@
      :fieldNames="{ key: 'id', title: 'houseName' }"
      :beforeRightClick="getRightMenuList"
      @select="handleSelect"
      @addHouse="addHouse"
      @handleAdd="addHouse"
    />
    <!-- <button :onClick="aa" style="
    position: absolute;
@@ -35,7 +35,7 @@
  import { getTreeList, DeleteWareHouse, getWHList } from '/@/api/tigerapi/wms/house';
  import { useMessage } from '/@/hooks/web/useMessage';
  import { useI18n } from '/@/hooks/web/useI18n';
  const { t } = useI18n('WMS.WareHouse');
  const { t } = useI18n();
  export default defineComponent({
    name: 'HouseTree',
@@ -88,7 +88,7 @@
        fetch();
      }
      async function getRightMenuList(node: any): Promise<ContextMenuItem[]> {
      function getRightMenuList(node: any): ContextMenuItem[] {
        var name = node.houseType === 'Warehouse' ? t('新增储区') : t('新增货架');
        if (node.houseType === 'Shelf') {
@@ -154,18 +154,19 @@
          ];
        }
      }
      async function GetORG_CODE(params: string) {
        var org = await getWHList(params);
      function GetORG_CODE(params: string) {
        getWHList(params).then((org) => {
        return org[0].AUTH_ORG;
        });
      }
      function createIcon({ houseType }) {
        if (houseType === 'Warehouse') {
      function createIcon(params: Recordable) {
        if (params['houseType'] === 'Warehouse') {
          return 'warehouse|svg';
        }
        if (houseType === 'Region') {
        if (params['houseType'] === 'Region') {
          return 'Region|svg';
        }
        if (houseType === 'Shelf') {
        if (params['houseType'] === 'Shelf') {
          return 'Shelf|svg';
        }
        return '';
src/views/tigerprojects/wms/warehousemodel/index.vue
@@ -21,7 +21,7 @@
import { getWHList } from '/@/api/tigerapi/wms/house';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n('WMS.WareHouse');
const { t } = useI18n();
//import { WhListItem, RegionListItem, ShelfListItem } from '@/api/model/warehoueseModel';
export default defineComponent({