云
14 小时以前 d6b144421f86bcaaef5f21ddda193ab6f58b0d57
feat(mes): 新增独立能耗管理功能

- 修改本地数据库配置连接到 mom-hm 数据库
- 添加能耗记录的数据对象、映射器和服务层实现
- 实现能耗记录的增删改查和数据分析接口
- 添加能耗管理的前端页面路由和权限配置
- 集成能耗数据的缓存清理脚本
- 优化权限审计脚本以支持新的权限结构
- 添加能耗管理相关的SQL初始化脚本
已添加26个文件
已修改1个文件
40415 ■■■■■ 文件已修改
scripts/audit-active-api-permissions.cjs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/audit-menu-permissions.cjs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/clear_unit_permission_cache.py 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/permission-api-audit.json 15617 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/permission-audit-report.json 5246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/permission-audit-summary.json 1276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/permission-endpoints.json 16743 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/permission-fix-plan.json 565 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/permission-menu-snapshot.json 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/energy_management_init.sql 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/mdm_unit_import_export_permission_patch.sql 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/menu_page_query_role_grants_pending.sql 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/menu_permission_consistency_patch.sql 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/mes_dv_metering_remind_config_patch.sql 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/mes_wm_material_stock_import_menu.sql 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/EnergyRecordController.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyAnalysisReqVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyAnalysisRespVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyRecordPageReqVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyRecordRespVO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyRecordSaveReqVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/energy/EnergyRecordDO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/energy/EnergyRecordMapper.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/energy/EnergyRecordService.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/controller/admin/energy/EnergyRecordControllerContextTest.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/energy/EnergyRecordServiceTest.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-local.yaml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
scripts/audit-active-api-permissions.cjs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
const fs = require('node:fs');
const path = require('node:path');
const menus = require('./permission-menu-snapshot.json');
const endpoints = require('./permission-endpoints.json');
const report = require('./permission-audit-report.json');
function walk(p) {
  if (!fs.existsSync(p)) return [];
  if (fs.statSync(p).isFile()) return [p];
  return fs.readdirSync(p, { withFileTypes: true }).flatMap((e) => e.isDirectory() ? walk(path.join(p, e.name)) : [path.join(p, e.name)]);
}
const checks = [];
for (const menu of menus.filter((v) => v.type === 2 && !v.deleted && !v.status && v.component)) {
  const dir = 'mom-pro2-before/src/views/' + menu.component.replace(/\/index(?:\.vue)?$/, '').replace(/\.vue$/, '');
  for (const file of walk(dir).filter((f) => /\.(vue|ts)$/.test(f))) {
    const s = fs.readFileSync(file, 'utf8');
    for (const imp of s.matchAll(/import\s+(?!type\b)\{([^]*?)\}\s+from\s+['"](#\/api\/[^'"]+)['"]/g)) {
      let api = imp[2].replace('#/', 'mom-pro2-before/src/');
      api = fs.existsSync(api + '.ts') ? api + '.ts' : api + '/index.ts';
      if (!fs.existsSync(api)) continue;
      const blocks = [...fs.readFileSync(api, 'utf8').matchAll(/export\s+(?:async\s+)?function\s+(\w+)\b([^]*?)(?=\nexport|$)/g)];
      for (const name of imp[1].split(',').map((x) => x.trim().split(/\s+as\s+/)[0]).filter((x) => /^\w+$/.test(x))) {
        const block = blocks.find((x) => x[1] === name);
        if (!block) continue;
        const route = block[2].match(/requestClient\.(get|post|put|delete|patch|download|upload)[^]*?(['"`])(\/[^'"`]+)\2/);
        if (!route) continue;
        const method = route[1] === 'download' ? 'GET' : route[1] === 'upload' ? 'POST' : route[1].toUpperCase();
        const url = route[3].split('?')[0];
        const endpoint = endpoints.find((e) => e.method === method && e.url === url);
        checks.push({ menu: menu.id, page: menu.name, source: file, api, function: name, method, url, permissions: endpoint?.permissions ?? null });
      }
    }
  }
}
const unique = [...new Map(checks.map((c) => [c.menu + ':' + c.function + ':' + c.url, c])).values()];
fs.writeFileSync('scripts/permission-api-audit.json', JSON.stringify(unique, null, 2));
const missing = unique.filter((c) => c.permissions?.some((p) => report.backendWithoutMenu.some((x) => x.key === p)));
console.log('Active API calls:', unique.length);
console.log('Missing menu permissions:', [...new Set(missing.flatMap((c) => c.permissions))]);
console.log('Unmatched endpoints:', unique.filter((c) => c.permissions === null).map((c) => ({ page: c.page, function: c.function, url: c.url })));
scripts/audit-menu-permissions.cjs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
const fs = require('node:fs');
const path = require('node:path');
const root = path.resolve(__dirname, '..');
function walk(dir) {
  if (!fs.existsSync(dir)) return [];
  return fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => entry.isDirectory() ? walk(path.join(dir, entry.name)) : [path.join(dir, entry.name)]);
}
const permissionPattern = /['"]((?:system|infra|bpm|crm|erp|hrm|mdm|mes|srm|im|ai|bi|aftersales|member|report|wms)(?::[a-z][a-z0-9-]*){1,5})['"]/g;
const backend = new Map();
const frontend = new Map();
function add(map, permission, file) {
  if (!map.has(permission)) map.set(permission, []);
  map.get(permission).push(path.relative(root, file).replaceAll('\\', '/'));
}
for (const module of fs.readdirSync(root).filter((name) => name.startsWith('yudao-module-'))) {
  for (const file of walk(path.join(root, module, 'src/main/java')).filter((name) => name.endsWith('Controller.java'))) {
    const source = fs.readFileSync(file, 'utf8').replace(/\/\*[\s\S]*?\*\//g, '').replace(/^\s*\/\/.*$/gm, '');
    for (const annotation of source.matchAll(/@PreAuthorize\(\s*"([^"]+)"\s*\)/g)) {
      for (const match of annotation[1].matchAll(permissionPattern)) add(backend, match[1], file);
    }
  }
}
for (const file of walk(path.join(root, 'mom-pro2-before/src/views')).filter((name) => /\.(vue|ts)$/.test(name))) {
  const source = fs.readFileSync(file, 'utf8').replace(/<!--[^]*?-->/g, '').replace(/\/\*[^]*?\*\//g, '');
  for (const match of source.matchAll(permissionPattern)) add(frontend, match[1], file);
}
const menus = JSON.parse(fs.readFileSync(path.join(__dirname, 'permission-menu-snapshot.json'), 'utf8'));
const active = menus.filter((row) => !row.deleted && row.status === 0);
const db = new Set(active.map((row) => row.permission).filter(Boolean));
const report = {
  counts: { backend: backend.size, frontend: frontend.size, database: db.size },
  frontendWithoutBackend: [...frontend].filter(([key]) => !backend.has(key)).map(([key, files]) => ({ key, files, menus: active.filter((m) => m.permission === key).map((m) => ({ id: m.id, name: m.name, parent_id: m.parent_id })) })),
  frontendWithoutMenu: [...frontend].filter(([key]) => !db.has(key)).map(([key, files]) => ({ key, files })),
  backendWithoutMenu: [...backend].filter(([key]) => !db.has(key)).map(([key, files]) => ({ key, files: [...new Set(files)], usedInFrontend: frontend.has(key) })),
  menuWithoutBackend: active.filter((m) => m.permission && !backend.has(m.permission)),
  duplicatePermissions: [...db].map((key) => ({ key, menus: active.filter((m) => m.permission === key).map((m) => m.id) })).filter((m) => m.menus.length > 1),
};
fs.writeFileSync(path.join(__dirname, 'permission-audit-report.json'), JSON.stringify(report, null, 2));
console.log(JSON.stringify({ counts: report.counts, frontendWithoutBackend: report.frontendWithoutBackend.map((x) => x.key), frontendWithoutMenu: report.frontendWithoutMenu.map((x) => x.key), backendWithoutMenuUsedInFrontend: report.backendWithoutMenu.filter((x) => x.usedInFrontend).map((x) => x.key), menuWithoutBackend: report.menuWithoutBackend.map((x) => ({ id: x.id, permission: x.permission, parent: x.parent_id })), duplicatePermissions: report.duplicatePermissions }, null, 2));
scripts/clear_unit_permission_cache.py
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
import socket
import re
import json
from pathlib import Path
source = Path('yudao-server/src/main/resources/application-local.yaml').read_text(encoding='utf-8')
block = re.search(r'(?m)^    redis:\s*\n((?:      [^\n]*\n)+)', source).group(1)
redis = {key: value.split(' #')[0].strip().strip('\"\'') for key, value in re.findall(r'(?m)^      (host|port|database|password):\s*([^\n]*)', block)}
connection = socket.create_connection((redis['host'], int(redis.get('port', 6379))), timeout=10)
stream = connection.makefile('rb')
def read():
    kind = stream.read(1)
    value = stream.readline().rstrip(b'\r\n')
    if kind == b'-':
        raise RuntimeError(value.decode())
    if kind == b':':
        return int(value)
    if kind == b'$':
        size = int(value)
        if size < 0:
            return None
        result = stream.read(size)
        stream.read(2)
        return result
    if kind == b'*':
        return [read() for _ in range(int(value))]
    return value
def command(*parts):
    values = [str(p).encode() if not isinstance(p, bytes) else p for p in parts]
    connection.sendall(b'*' + str(len(values)).encode() + b'\r\n' + b''.join(b'$' + str(len(v)).encode() + b'\r\n' + v + b'\r\n' for v in values))
    return read()
if redis.get('password'):
    command('AUTH', redis['password'])
command('SELECT', redis.get('database', 0))
plan = json.loads(Path('scripts/permission-fix-plan.json').read_text(encoding='utf-8'))
suffixes = tuple(':' + key for key in set(plan['allKeys'] + [pair[0] for pair in plan['aliases']]))
keys = []
cursor = b'0'
while True:
    cursor, batch = command('SCAN', cursor, 'MATCH', '*permission_menu_ids*', 'COUNT', 100)
    keys.extend(key for key in batch if key.decode().endswith(suffixes))
    if cursor == b'0':
        break
print('Target permission cache keys:', [key.decode() for key in keys])
if keys:
    print('Deleted permission cache entries:', command('DEL', *keys))
else:
    print('No stale affected permission cache entries')
connection.close()
scripts/permission-api-audit.json
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
scripts/permission-audit-report.json
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
scripts/permission-audit-summary.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1276 @@
{
  "counts": {
    "backend": 946,
    "frontend": 836,
    "database": 972
  },
  "frontendWithoutBackend": [
    "ai:chat-conversation:delete",
    "ai:chat-message:delete",
    "ai:image:delete",
    "ai:mind-map:delete",
    "ai:chat-role:create",
    "ai:chat-role:update",
    "ai:chat-role:delete",
    "ai:tool:create",
    "ai:tool:update",
    "ai:tool:delete",
    "ai:music:delete",
    "ai:workflow:test",
    "ai:workflow:create",
    "ai:workflow:update",
    "ai:workflow:delete",
    "ai:write:delete",
    "bpm:process-instance:create",
    "crm:product-category:create",
    "crm:product-category:update",
    "crm:product-category:delete",
    "crm:product:create",
    "crm:product:export",
    "crm:product:update",
    "crm:product:delete",
    "erp:product-category:create",
    "erp:product-category:export",
    "erp:product-category:update",
    "erp:product-category:delete",
    "erp:product:create",
    "erp:product:export",
    "erp:product:update",
    "erp:product:delete",
    "erp:product-unit:create",
    "erp:product-unit:export",
    "erp:product-unit:update",
    "erp:product-unit:delete",
    "erp:purchase-in:create",
    "erp:purchase-in:export",
    "erp:purchase-in:delete",
    "erp:purchase-in:query",
    "erp:purchase-in:update",
    "erp:purchase-in:inspect",
    "erp:purchase-in:update-status",
    "erp:purchase-return:create",
    "erp:purchase-return:export",
    "erp:purchase-return:delete",
    "erp:purchase-return:query",
    "erp:purchase-return:update",
    "erp:purchase-return:update-status",
    "erp:customer:create",
    "erp:customer:export",
    "erp:customer:update",
    "erp:customer:delete",
    "erp:sale-out:create",
    "erp:sale-out:export",
    "erp:sale-out:delete",
    "erp:sale-out:query",
    "erp:sale-out:update",
    "erp:sale-out:update-status",
    "erp:sale-return:create",
    "erp:sale-return:export",
    "erp:sale-return:delete",
    "erp:sale-return:query",
    "erp:sale-return:update",
    "erp:sale-return:update-status",
    "erp:stock-check:create",
    "erp:stock-check:export",
    "erp:stock-check:delete",
    "erp:stock-check:query",
    "erp:stock-check:update",
    "erp:stock-check:update-status",
    "erp:stock-in:create",
    "erp:stock-in:export",
    "erp:stock-in:delete",
    "erp:stock-in:query",
    "erp:stock-in:update",
    "erp:stock-in:update-status",
    "erp:stock-move:create",
    "erp:stock-move:export",
    "erp:stock-move:delete",
    "erp:stock-move:query",
    "erp:stock-move:update",
    "erp:stock-move:update-status",
    "erp:stock-out:create",
    "erp:stock-out:export",
    "erp:stock-out:delete",
    "erp:stock-out:query",
    "erp:stock-out:update",
    "erp:stock-out:update-status",
    "erp:stock-record:export",
    "erp:stock:export",
    "erp:warehouse:create",
    "erp:warehouse:export",
    "erp:warehouse:update",
    "erp:warehouse:delete",
    "hrm:leave:cancel",
    "hrm:resignation:cancel",
    "hrm:resignation:handover",
    "hrm:salary-payment:export",
    "hrm:transfer:cancel",
    "im:aside",
    "mes:pd-project:archive",
    "mes:pd-drawing-review:review",
    "mes:pd-task:create",
    "mes:pd-task:dispatch",
    "mes:pd-task:update",
    "mes:pd-task:complete",
    "mes:pd-task:delete",
    "mes:pd-version-change:create",
    "mes:pd-version-change:update",
    "mes:pd-version-change:approve",
    "mes:pd-version-change:delete",
    "mes:pd:parameter:create",
    "mes:pd:parameter:export",
    "mes:pd:parameter:update",
    "mes:pd:parameter:delete",
    "mes:pd:template:create",
    "mes:pd:template:export",
    "mes:pd:template:update",
    "mes:pd:template:delete",
    "system:notify-template:export",
    "mes:wm-approval:save",
    "mes:wm-material-stock:move",
    "mes:wm-misc-receipt:create",
    "mes:wm-misc-receipt:export",
    "mes:wm-misc-receipt:update",
    "mes:wm-misc-receipt:delete",
    "mes:wm-misc-receipt:finish",
    "mes:wm-misc-receipt:cancel",
    "mes:wm-return-vendor:update-status",
    "wms:item-brand:create",
    "wms:item-brand:export",
    "wms:item-brand:update",
    "wms:item-brand:delete",
    "wms:item-category:create",
    "wms:item-category:update",
    "wms:item-category:delete",
    "wms:item:create",
    "wms:item:export",
    "wms:item:update",
    "wms:item:delete",
    "wms:merchant:create",
    "wms:merchant:export",
    "wms:merchant:update",
    "wms:merchant:delete",
    "wms:warehouse:create",
    "wms:warehouse:export",
    "wms:warehouse:update",
    "wms:warehouse:delete",
    "wms:check-order:create",
    "wms:check-order:export",
    "wms:check-order:update",
    "wms:check-order:delete",
    "wms:check-order:query",
    "wms:check-order:complete",
    "wms:check-order:cancel",
    "wms:movement-order:create",
    "wms:movement-order:export",
    "wms:movement-order:update",
    "wms:movement-order:delete",
    "wms:movement-order:query",
    "wms:movement-order:complete",
    "wms:movement-order:cancel",
    "wms:receipt-order:create",
    "wms:receipt-order:export",
    "wms:receipt-order:update",
    "wms:receipt-order:delete",
    "wms:receipt-order:query",
    "wms:receipt-order:complete",
    "wms:receipt-order:cancel",
    "wms:shipment-order:create",
    "wms:shipment-order:export",
    "wms:shipment-order:update",
    "wms:shipment-order:delete",
    "wms:shipment-order:query",
    "wms:shipment-order:complete",
    "wms:shipment-order:cancel"
  ],
  "frontendWithoutMenu": [
    "bpm:oa-notice:query",
    "crm:product-category:create",
    "crm:product-category:update",
    "crm:product-category:delete",
    "crm:product:create",
    "crm:product:export",
    "crm:product:update",
    "crm:product:delete",
    "erp:purchase-in:create",
    "erp:purchase-in:export",
    "erp:purchase-in:delete",
    "erp:purchase-in:query",
    "erp:purchase-in:update",
    "erp:purchase-in:inspect",
    "erp:purchase-in:update-status",
    "erp:purchase-order:import",
    "erp:purchase-request:query",
    "erp:purchase-request:generate-order",
    "erp:purchase-return:create",
    "erp:purchase-return:export",
    "erp:purchase-return:delete",
    "erp:purchase-return:query",
    "erp:purchase-return:update",
    "erp:purchase-return:update-status",
    "erp:supplier:create",
    "erp:supplier:export",
    "erp:supplier:update",
    "erp:supplier:delete",
    "erp:sale-order:import",
    "erp:sale-order:cancel",
    "erp:sale-order:enable",
    "erp:sale-out:create",
    "erp:sale-out:export",
    "erp:sale-out:delete",
    "erp:sale-out:query",
    "erp:sale-out:update",
    "erp:sale-out:update-status",
    "erp:sale-return:create",
    "erp:sale-return:export",
    "erp:sale-return:delete",
    "erp:sale-return:query",
    "erp:sale-return:update",
    "erp:sale-return:update-status",
    "hrm:employee-contract:import",
    "hrm:resignation:handover",
    "hrm:salary-calculation:save",
    "hrm:salary-calculation:delete",
    "hrm:salary-payment:generate",
    "hrm:salary-structure:create",
    "hrm:salary-structure:update",
    "hrm:salary-structure:delete",
    "im:aside",
    "mes:dv-metering:import",
    "mes:pd-drawing-review:review",
    "mes:pd-task:create",
    "mes:pd-task:dispatch",
    "mes:pd-task:update",
    "mes:pd-task:complete",
    "mes:pd-task:delete",
    "mes:pd-version-change:create",
    "mes:pd-version-change:update",
    "mes:pd-version-change:approve",
    "mes:pd-version-change:delete",
    "mes:pro-mps:query",
    "system:notify-template:export",
    "mes:wm-approval:save",
    "mes:wm-misc-receipt:create",
    "mes:wm-misc-receipt:export",
    "mes:wm-misc-receipt:update",
    "mes:wm-misc-receipt:delete",
    "mes:wm-misc-receipt:finish",
    "mes:wm-misc-receipt:cancel",
    "mes:wm-outsource-issue:finish",
    "wms:item-brand:create",
    "wms:item-brand:export",
    "wms:item-brand:update",
    "wms:item-brand:delete",
    "wms:item-category:create",
    "wms:item-category:update",
    "wms:item-category:delete",
    "wms:item:create",
    "wms:item:export",
    "wms:item:update",
    "wms:item:delete",
    "wms:merchant:create",
    "wms:merchant:export",
    "wms:merchant:update",
    "wms:merchant:delete",
    "wms:warehouse:create",
    "wms:warehouse:export",
    "wms:warehouse:update",
    "wms:warehouse:delete",
    "wms:check-order:create",
    "wms:check-order:export",
    "wms:check-order:update",
    "wms:check-order:delete",
    "wms:check-order:query",
    "wms:check-order:complete",
    "wms:check-order:cancel",
    "wms:movement-order:create",
    "wms:movement-order:export",
    "wms:movement-order:update",
    "wms:movement-order:delete",
    "wms:movement-order:query",
    "wms:movement-order:complete",
    "wms:movement-order:cancel",
    "wms:receipt-order:create",
    "wms:receipt-order:export",
    "wms:receipt-order:update",
    "wms:receipt-order:delete",
    "wms:receipt-order:query",
    "wms:receipt-order:complete",
    "wms:receipt-order:cancel",
    "wms:shipment-order:create",
    "wms:shipment-order:export",
    "wms:shipment-order:update",
    "wms:shipment-order:delete",
    "wms:shipment-order:query",
    "wms:shipment-order:complete",
    "wms:shipment-order:cancel"
  ],
  "backendWithoutMenuUsedInFrontend": [
    "bpm:oa-notice:query",
    "erp:purchase-order:import",
    "erp:purchase-request:query",
    "erp:purchase-request:generate-order",
    "erp:supplier:create",
    "erp:supplier:update",
    "erp:supplier:delete",
    "erp:supplier:export",
    "erp:sale-order:cancel",
    "erp:sale-order:enable",
    "erp:sale-order:import",
    "hrm:employee-contract:import",
    "hrm:salary-calculation:delete",
    "hrm:salary-calculation:save",
    "hrm:salary-payment:generate",
    "hrm:salary-structure:create",
    "hrm:salary-structure:update",
    "hrm:salary-structure:delete",
    "mes:dv-metering:import",
    "mes:pro-mps:query",
    "mes:wm-outsource-issue:finish"
  ],
  "menuWithoutBackend": [
    {
      "id": 100,
      "permission": "system:user:list",
      "parent": 1
    },
    {
      "id": 114,
      "permission": "infra:build:list",
      "parent": 2
    },
    {
      "id": 116,
      "permission": "infra:swagger:list",
      "parent": 2
    },
    {
      "id": 1067,
      "permission": "infra:redis:get-key-list",
      "parent": 113
    },
    {
      "id": 1192,
      "permission": "bpm:form:export",
      "parent": 1187
    },
    {
      "id": 1216,
      "permission": "bpm:task-assign-rule:query",
      "parent": 1193
    },
    {
      "id": 1217,
      "permission": "bpm:task-assign-rule:create",
      "parent": 1193
    },
    {
      "id": 1218,
      "permission": "bpm:task-assign-rule:update",
      "parent": 1193
    },
    {
      "id": 1219,
      "permission": "bpm:process-instance:create",
      "parent": 1201
    },
    {
      "id": 1242,
      "permission": "infra:file-config:export",
      "parent": 1237
    },
    {
      "id": 1260,
      "permission": "infra:data-source-config:export",
      "parent": 1255
    },
    {
      "id": 2154,
      "permission": "report:go-view-project:create",
      "parent": 2153
    },
    {
      "id": 2155,
      "permission": "report:go-view-project:update",
      "parent": 2153
    },
    {
      "id": 2156,
      "permission": "report:go-view-project:query",
      "parent": 2153
    },
    {
      "id": 2157,
      "permission": "report:go-view-data:get-by-sql",
      "parent": 2153
    },
    {
      "id": 2158,
      "permission": "report:go-view-data:get-by-http",
      "parent": 2153
    },
    {
      "id": 2523,
      "permission": "crm:customer-limit-config:export",
      "parent": 2518
    },
    {
      "id": 2566,
      "permission": "erp:product:query",
      "parent": 2565
    },
    {
      "id": 2567,
      "permission": "erp:product:create",
      "parent": 2565
    },
    {
      "id": 2568,
      "permission": "erp:product:update",
      "parent": 2565
    },
    {
      "id": 2569,
      "permission": "erp:product:delete",
      "parent": 2565
    },
    {
      "id": 2570,
      "permission": "erp:product:export",
      "parent": 2565
    },
    {
      "id": 2572,
      "permission": "erp:product-category:query",
      "parent": 2571
    },
    {
      "id": 2573,
      "permission": "erp:product-category:create",
      "parent": 2571
    },
    {
      "id": 2574,
      "permission": "erp:product-category:update",
      "parent": 2571
    },
    {
      "id": 2575,
      "permission": "erp:product-category:delete",
      "parent": 2571
    },
    {
      "id": 2576,
      "permission": "erp:product-category:export",
      "parent": 2571
    },
    {
      "id": 2578,
      "permission": "erp:product-unit:query",
      "parent": 2577
    },
    {
      "id": 2579,
      "permission": "erp:product-unit:create",
      "parent": 2577
    },
    {
      "id": 2580,
      "permission": "erp:product-unit:update",
      "parent": 2577
    },
    {
      "id": 2581,
      "permission": "erp:product-unit:delete",
      "parent": 2577
    },
    {
      "id": 2582,
      "permission": "erp:product-unit:export",
      "parent": 2577
    },
    {
      "id": 2585,
      "permission": "erp:warehouse:query",
      "parent": 2584
    },
    {
      "id": 2586,
      "permission": "erp:warehouse:create",
      "parent": 2584
    },
    {
      "id": 2587,
      "permission": "erp:warehouse:update",
      "parent": 2584
    },
    {
      "id": 2588,
      "permission": "erp:warehouse:delete",
      "parent": 2584
    },
    {
      "id": 2589,
      "permission": "erp:warehouse:export",
      "parent": 2584
    },
    {
      "id": 2591,
      "permission": "erp:stock:query",
      "parent": 2590
    },
    {
      "id": 2592,
      "permission": "erp:stock:export",
      "parent": 2590
    },
    {
      "id": 2594,
      "permission": "erp:stock-record:query",
      "parent": 2593
    },
    {
      "id": 2595,
      "permission": "erp:stock-record:export",
      "parent": 2593
    },
    {
      "id": 2597,
      "permission": "erp:stock-in:query",
      "parent": 2596
    },
    {
      "id": 2598,
      "permission": "erp:stock-in:create",
      "parent": 2596
    },
    {
      "id": 2599,
      "permission": "erp:stock-in:update",
      "parent": 2596
    },
    {
      "id": 2600,
      "permission": "erp:stock-in:delete",
      "parent": 2596
    },
    {
      "id": 2601,
      "permission": "erp:stock-in:export",
      "parent": 2596
    },
    {
      "id": 2609,
      "permission": "erp:stock-in:update-status",
      "parent": 2596
    },
    {
      "id": 2611,
      "permission": "erp:stock-out:query",
      "parent": 2610
    },
    {
      "id": 2612,
      "permission": "erp:stock-out:create",
      "parent": 2610
    },
    {
      "id": 2613,
      "permission": "erp:stock-out:update",
      "parent": 2610
    },
    {
      "id": 2614,
      "permission": "erp:stock-out:delete",
      "parent": 2610
    },
    {
      "id": 2615,
      "permission": "erp:stock-out:export",
      "parent": 2610
    },
    {
      "id": 2616,
      "permission": "erp:stock-out:update-status",
      "parent": 2610
    },
    {
      "id": 2619,
      "permission": "erp:customer:query",
      "parent": 2618
    },
    {
      "id": 2620,
      "permission": "erp:customer:create",
      "parent": 2618
    },
    {
      "id": 2621,
      "permission": "erp:customer:update",
      "parent": 2618
    },
    {
      "id": 2622,
      "permission": "erp:customer:delete",
      "parent": 2618
    },
    {
      "id": 2623,
      "permission": "erp:customer:export",
      "parent": 2618
    },
    {
      "id": 2625,
      "permission": "erp:stock-move:query",
      "parent": 2624
    },
    {
      "id": 2626,
      "permission": "erp:stock-move:create",
      "parent": 2624
    },
    {
      "id": 2627,
      "permission": "erp:stock-move:update",
      "parent": 2624
    },
    {
      "id": 2628,
      "permission": "erp:stock-move:delete",
      "parent": 2624
    },
    {
      "id": 2629,
      "permission": "erp:stock-move:export",
      "parent": 2624
    },
    {
      "id": 2630,
      "permission": "erp:stock-move:update-status",
      "parent": 2624
    },
    {
      "id": 2632,
      "permission": "erp:stock-check:query",
      "parent": 2631
    },
    {
      "id": 2633,
      "permission": "erp:stock-check:create",
      "parent": 2631
    },
    {
      "id": 2634,
      "permission": "erp:stock-check:update",
      "parent": 2631
    },
    {
      "id": 2635,
      "permission": "erp:stock-check:delete",
      "parent": 2631
    },
    {
      "id": 2636,
      "permission": "erp:stock-check:export",
      "parent": 2631
    },
    {
      "id": 2637,
      "permission": "erp:stock-check:update-status",
      "parent": 2631
    },
    {
      "id": 2693,
      "permission": "erp:finance-payment:update-status",
      "parent": 2687
    },
    {
      "id": 2755,
      "permission": "report:go-view-project:delete",
      "parent": 2153
    },
    {
      "id": 2774,
      "permission": "ai:chat-role:query",
      "parent": 2773
    },
    {
      "id": 2775,
      "permission": "ai:chat-role:create",
      "parent": 2773
    },
    {
      "id": 2776,
      "permission": "ai:chat-role:update",
      "parent": 2773
    },
    {
      "id": 2777,
      "permission": "ai:chat-role:delete",
      "parent": 2773
    },
    {
      "id": 2779,
      "permission": "ai:chat-conversation:query",
      "parent": 2778
    },
    {
      "id": 2780,
      "permission": "ai:chat-conversation:delete",
      "parent": 2778
    },
    {
      "id": 2781,
      "permission": "ai:chat-message:query",
      "parent": 2778
    },
    {
      "id": 2782,
      "permission": "ai:chat-message:delete",
      "parent": 2778
    },
    {
      "id": 2785,
      "permission": "ai:image:query",
      "parent": 2784
    },
    {
      "id": 2786,
      "permission": "ai:image:delete",
      "parent": 2784
    },
    {
      "id": 2787,
      "permission": "ai:image:update",
      "parent": 2784
    },
    {
      "id": 2789,
      "permission": "ai:music:query",
      "parent": 2788
    },
    {
      "id": 2790,
      "permission": "ai:music:update",
      "parent": 2788
    },
    {
      "id": 2791,
      "permission": "ai:music:delete",
      "parent": 2788
    },
    {
      "id": 2794,
      "permission": "ai:write:query",
      "parent": 2793
    },
    {
      "id": 2795,
      "permission": "ai:write:delete",
      "parent": 2793
    },
    {
      "id": 2800,
      "permission": "ai:mind-map:query",
      "parent": 2799
    },
    {
      "id": 2801,
      "permission": "ai:mind-map:delete",
      "parent": 2799
    },
    {
      "id": 2921,
      "permission": "ai:tool:query",
      "parent": 2920
    },
    {
      "id": 2922,
      "permission": "ai:tool:create",
      "parent": 2920
    },
    {
      "id": 2923,
      "permission": "ai:tool:update",
      "parent": 2920
    },
    {
      "id": 2924,
      "permission": "ai:tool:delete",
      "parent": 2920
    },
    {
      "id": 5001,
      "permission": "ai:workflow:query",
      "parent": 5000
    },
    {
      "id": 5002,
      "permission": "ai:workflow:create",
      "parent": 5000
    },
    {
      "id": 5003,
      "permission": "ai:workflow:update",
      "parent": 5000
    },
    {
      "id": 5004,
      "permission": "ai:workflow:delete",
      "parent": 5000
    },
    {
      "id": 5005,
      "permission": "ai:workflow:test",
      "parent": 5000
    },
    {
      "id": 5010,
      "permission": "system:tenant:visit",
      "parent": 1138
    },
    {
      "id": 5126,
      "permission": "mes:md-item:import",
      "parent": 5120
    },
    {
      "id": 5253,
      "permission": "mes:cal-holiday:update",
      "parent": 5250
    },
    {
      "id": 5254,
      "permission": "mes:cal-holiday:delete",
      "parent": 5250
    },
    {
      "id": 5255,
      "permission": "mes:cal-holiday:export",
      "parent": 5250
    },
    {
      "id": 5315,
      "permission": "mes:dv-machinery-type:export",
      "parent": 5310
    },
    {
      "id": 5788,
      "permission": "mes:wm-material-stock:create",
      "parent": 5786
    },
    {
      "id": 5790,
      "permission": "mes:wm-material-stock:delete",
      "parent": 5786
    },
    {
      "id": 5836,
      "permission": "mes:wm-return-vendor:update-status",
      "parent": 5830
    },
    {
      "id": 5887,
      "permission": "mes:wm-outsource-issue:execute",
      "parent": 5881
    },
    {
      "id": 5928,
      "permission": "mes:wm-transfer:submit",
      "parent": 5922
    },
    {
      "id": 5929,
      "permission": "mes:wm-transfer:confirm",
      "parent": 5922
    },
    {
      "id": 5931,
      "permission": "mes:wm-transfer:cancel",
      "parent": 5922
    },
    {
      "id": 6520,
      "permission": "im:manager:friend:list",
      "parent": 6600
    },
    {
      "id": 6530,
      "permission": "im:manager:message:private:list",
      "parent": 6600
    },
    {
      "id": 6540,
      "permission": "im:manager:group:list",
      "parent": 6610
    },
    {
      "id": 6550,
      "permission": "im:manager:message:group:list",
      "parent": 6610
    },
    {
      "id": 6560,
      "permission": "im:manager:sensitive-word:list",
      "parent": 6500
    },
    {
      "id": 6571,
      "permission": "im:manager:face-pack:list",
      "parent": 6570
    },
    {
      "id": 6580,
      "permission": "im:manager:face-user-item:list",
      "parent": 6570
    },
    {
      "id": 60041,
      "permission": "hrm:transfer:cancel",
      "parent": 6004
    },
    {
      "id": 60051,
      "permission": "hrm:resignation:cancel",
      "parent": 6005
    },
    {
      "id": 60242,
      "permission": "hrm:leave:cancel",
      "parent": 6003
    },
    {
      "id": 60245,
      "permission": "hrm:salary-payment:export",
      "parent": 6022
    },
    {
      "id": 602480,
      "permission": "mes:pd:parameter:create",
      "parent": 602474
    },
    {
      "id": 602481,
      "permission": "mes:pd:parameter:update",
      "parent": 602474
    },
    {
      "id": 602482,
      "permission": "mes:pd:parameter:delete",
      "parent": 602474
    },
    {
      "id": 602483,
      "permission": "mes:pd:parameter:export",
      "parent": 602474
    },
    {
      "id": 602484,
      "permission": "mes:pd:template:create",
      "parent": 602475
    },
    {
      "id": 602485,
      "permission": "mes:pd:template:update",
      "parent": 602475
    },
    {
      "id": 602486,
      "permission": "mes:pd:template:delete",
      "parent": 602475
    },
    {
      "id": 602487,
      "permission": "mes:pd:template:export",
      "parent": 602475
    },
    {
      "id": 602518,
      "permission": "system:storage-blob:upload",
      "parent": 602517
    },
    {
      "id": 602519,
      "permission": "system:storage-blob:public-upload",
      "parent": 602517
    },
    {
      "id": 602523,
      "permission": "mes:wm-material-stock:move",
      "parent": 5786
    },
    {
      "id": 602583,
      "permission": "crm:customer:view-all",
      "parent": 2546
    },
    {
      "id": 602585,
      "permission": "mes:pd-project:audit",
      "parent": 602572
    },
    {
      "id": 602586,
      "permission": "mes:pd-project:archive",
      "parent": 602572
    },
    {
      "id": 602595,
      "permission": "aftersales:admin",
      "parent": 602588
    },
    {
      "id": 1063091,
      "permission": "bi:warehouse-coordinate:query",
      "parent": 1063009
    },
    {
      "id": 1063122,
      "permission": "erp:finance-payment:update-status",
      "parent": 1063116
    },
    {
      "id": 1075401,
      "permission": "qc-report:template:query",
      "parent": 1075400
    },
    {
      "id": 1075402,
      "permission": "qc-report:template:create",
      "parent": 1075400
    },
    {
      "id": 1075403,
      "permission": "qc-report:template:update",
      "parent": 1075400
    },
    {
      "id": 1075404,
      "permission": "qc-report:template:delete",
      "parent": 1075400
    },
    {
      "id": 1075405,
      "permission": "qc-report:template:publish",
      "parent": 1075400
    },
    {
      "id": 1075411,
      "permission": "qc-report:instance:query",
      "parent": 1075410
    },
    {
      "id": 1075412,
      "permission": "qc-report:instance:create",
      "parent": 1075410
    },
    {
      "id": 1075413,
      "permission": "qc-report:instance:export",
      "parent": 1075410
    },
    {
      "id": 1075414,
      "permission": "qc-report:instance:delete",
      "parent": 1075410
    },
    {
      "id": 1075415,
      "permission": "qc-report:template:ai-import",
      "parent": 1075400
    },
    {
      "id": 1075416,
      "permission": "qc-report:instance:generate",
      "parent": 1075410
    },
    {
      "id": 1075426,
      "permission": "energy:record:query",
      "parent": 1075425
    },
    {
      "id": 1075427,
      "permission": "energy:analysis:query",
      "parent": 1075425
    },
    {
      "id": 1075428,
      "permission": "energy:record:create",
      "parent": 1075426
    },
    {
      "id": 1075429,
      "permission": "energy:record:update",
      "parent": 1075426
    },
    {
      "id": 1075430,
      "permission": "energy:record:delete",
      "parent": 1075426
    }
  ],
  "duplicatePermissions": [
    {
      "key": "infra:job:update",
      "menus": [
        1051,
        1053
      ]
    },
    {
      "key": "infra:api-error-log:query",
      "menus": [
        1084,
        1089
      ]
    },
    {
      "key": "erp:finance-payment:query",
      "menus": [
        2688,
        1063117
      ]
    },
    {
      "key": "erp:finance-payment:create",
      "menus": [
        2689,
        1063118
      ]
    },
    {
      "key": "erp:finance-payment:update",
      "menus": [
        2690,
        1063119
      ]
    },
    {
      "key": "erp:finance-payment:delete",
      "menus": [
        2691,
        1063120
      ]
    },
    {
      "key": "erp:finance-payment:export",
      "menus": [
        2692,
        1063121
      ]
    },
    {
      "key": "erp:finance-payment:update-status",
      "menus": [
        2693,
        1063122
      ]
    },
    {
      "key": "ai:api-key:create",
      "menus": [
        2763,
        602597
      ]
    },
    {
      "key": "ai:api-key:update",
      "menus": [
        2764,
        602598
      ]
    },
    {
      "key": "ai:api-key:delete",
      "menus": [
        2765,
        602599
      ]
    },
    {
      "key": "ai:model:create",
      "menus": [
        2769,
        602601
      ]
    },
    {
      "key": "ai:model:update",
      "menus": [
        2770,
        602602
      ]
    },
    {
      "key": "ai:model:delete",
      "menus": [
        2771,
        602603
      ]
    },
    {
      "key": "ai:knowledge:create",
      "menus": [
        2917,
        602605
      ]
    },
    {
      "key": "ai:knowledge:update",
      "menus": [
        2918,
        602606
      ]
    },
    {
      "key": "ai:knowledge:delete",
      "menus": [
        2919,
        602607
      ]
    },
    {
      "key": "mes:dv-repair:export",
      "menus": [
        5366,
        5375
      ]
    },
    {
      "key": "im:manager:message:query",
      "menus": [
        6531,
        6551
      ]
    },
    {
      "key": "hrm:leave-type-config:update",
      "menus": [
        602450,
        1065204
      ]
    },
    {
      "key": "crm:sale-quotation:update",
      "menus": [
        602514,
        602515
      ]
    },
    {
      "key": "mes:pd-project:update",
      "menus": [
        602575,
        602584
      ]
    },
    {
      "key": "crm:sales-target:query",
      "menus": [
        1065001,
        1065101
      ]
    }
  ]
}
scripts/permission-endpoints.json
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
scripts/permission-fix-plan.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,565 @@
{
  "aliases": [
    [
      "mdm:unit-measure:import",
      "mdm:unit:import"
    ],
    [
      "mdm:unit-measure:export",
      "mdm:unit:export"
    ],
    [
      "mes:pd:parameter:create",
      "mes:pd-process-param:create"
    ],
    [
      "mes:pd:template:create",
      "mes:pd-process-param-template:create"
    ],
    [
      "mes:pd:parameter:update",
      "mes:pd-process-param:update"
    ],
    [
      "mes:pd:template:update",
      "mes:pd-process-param-template:update"
    ],
    [
      "mes:pd:parameter:delete",
      "mes:pd-process-param:delete"
    ],
    [
      "mes:pd:template:delete",
      "mes:pd-process-param-template:delete"
    ],
    [
      "mes:pd:parameter:export",
      "mes:pd-process-param:export"
    ],
    [
      "mes:pd:template:export",
      "mes:pd-process-param-template:export"
    ],
    [
      "mes:wm-outsource-issue:execute",
      "mes:wm-outsource-issue:finish"
    ],
    [
      "mes:wm-return-vendor:update-status",
      "mes:wm-return-vendor:finish"
    ],
    [
      "mes:wm-material-stock:move",
      "mes:wm-material-stock:update"
    ],
    [
      "mes:pd-project:archive",
      "mes:pd-project:update"
    ]
  ],
  "desired": [
    {
      "key": "bi:dashboard:query",
      "parent": 1063007,
      "name": "图表配置-查询"
    },
    {
      "key": "bpm:oa-notice:query",
      "parent": 602608,
      "name": "通知公告-查询"
    },
    {
      "key": "crm:invoice:query",
      "parent": 1063093,
      "name": "开票管理-查询"
    },
    {
      "key": "crm:sale-quotation:query",
      "parent": 602512,
      "name": "销售报价-查询"
    },
    {
      "key": "crm:sale-quotation:export",
      "parent": 602512,
      "name": "销售报价-导出"
    },
    {
      "key": "crm:sale-quotation:convert-contract",
      "parent": 602512,
      "name": "销售报价-转合同"
    },
    {
      "key": "erp:purchase-order:import",
      "parent": 2666,
      "name": "采购订单-导入"
    },
    {
      "key": "erp:purchase-request:query",
      "parent": 602498,
      "name": "采购申请-查询"
    },
    {
      "key": "erp:purchase-request:submit",
      "parent": 602498,
      "name": "采购申请-提交"
    },
    {
      "key": "erp:purchase-request:generate-order",
      "parent": 602498,
      "name": "采购申请-生成订单"
    },
    {
      "key": "erp:sale-order:cancel",
      "parent": 2638,
      "name": "销售订单-撤销"
    },
    {
      "key": "erp:sale-order:enable",
      "parent": 2638,
      "name": "销售订单-启用"
    },
    {
      "key": "erp:sale-order:import",
      "parent": 2638,
      "name": "销售订单-导入"
    },
    {
      "key": "hrm:leave:export",
      "parent": 6003,
      "name": "请假申请-导出"
    },
    {
      "key": "hrm:overtime:query",
      "parent": 1065211,
      "name": "加班申请-查询"
    },
    {
      "key": "hrm:resignation:query",
      "parent": 6005,
      "name": "离职申请-查询"
    },
    {
      "key": "hrm:resignation:export",
      "parent": 6005,
      "name": "离职申请-导出"
    },
    {
      "key": "hrm:transfer:query",
      "parent": 6004,
      "name": "调岗申请-查询"
    },
    {
      "key": "hrm:transfer:export",
      "parent": 6004,
      "name": "调岗申请-导出"
    },
    {
      "key": "hrm:attendance-exception:update",
      "parent": 6012,
      "name": "考勤异常-编辑"
    },
    {
      "key": "hrm:attendance-exception:delete",
      "parent": 6012,
      "name": "考勤异常-删除"
    },
    {
      "key": "hrm:attendance-exception:query",
      "parent": 6012,
      "name": "考勤异常-查询"
    },
    {
      "key": "hrm:attendance-holiday:query",
      "parent": 6014,
      "name": "节假日配置-查询"
    },
    {
      "key": "hrm:attendance-record:query",
      "parent": 6011,
      "name": "考勤记录-查询"
    },
    {
      "key": "hrm:attendance-rule:query",
      "parent": 6013,
      "name": "考勤规则-查询"
    },
    {
      "key": "hrm:attendance-summary:query",
      "parent": 6015,
      "name": "考勤统计-查询"
    },
    {
      "key": "hrm:employee-social-security:query",
      "parent": 6023,
      "name": "员工社保公积金档案-查询"
    },
    {
      "key": "hrm:salary-calculation:query",
      "parent": 6021,
      "name": "薪酬核算-查询"
    },
    {
      "key": "hrm:salary-calculation:delete",
      "parent": 6021,
      "name": "薪酬核算-删除"
    },
    {
      "key": "hrm:salary-calculation:save",
      "parent": 6021,
      "name": "薪酬核算-保存"
    },
    {
      "key": "hrm:salary-payment:query",
      "parent": 6022,
      "name": "薪资发放-查询"
    },
    {
      "key": "hrm:salary-payment:generate",
      "parent": 6022,
      "name": "薪资发放-生成"
    },
    {
      "key": "hrm:salary-payment:delete",
      "parent": 6022,
      "name": "薪资发放-删除"
    },
    {
      "key": "hrm:social-security-scheme:query",
      "parent": 602445,
      "name": "社保公积金方案-查询"
    },
    {
      "key": "hrm:tax-rate-config:query",
      "parent": 6024,
      "name": "个税税率配置-查询"
    },
    {
      "key": "mes:dv-metering:import",
      "parent": 5380,
      "name": "计量器具-导入"
    },
    {
      "key": "mes:md-workshop:export",
      "parent": 5160,
      "name": "车间设置-导出"
    },
    {
      "key": "mes:pd-archive:create",
      "parent": 602578,
      "name": "设计归档-新增"
    },
    {
      "key": "mes:pd-document:create",
      "parent": 602572,
      "name": "设计项目-新增"
    },
    {
      "key": "mes:pd-document:update",
      "parent": 602572,
      "name": "设计项目-编辑"
    },
    {
      "key": "mes:pd-document:delete",
      "parent": 602572,
      "name": "设计项目-删除"
    },
    {
      "key": "mes:pd-document:query",
      "parent": 602572,
      "name": "设计项目-查询"
    },
    {
      "key": "mes:pd-document:export",
      "parent": 602572,
      "name": "设计项目-导出"
    },
    {
      "key": "mes:pd-process-param:query",
      "parent": 602474,
      "name": "基础参数-查询"
    },
    {
      "key": "mes:pd-process-param-template:query",
      "parent": 602475,
      "name": "参数模板-查询"
    },
    {
      "key": "mes:pro-mps:query",
      "parent": 602504,
      "name": "生产计划-查询"
    },
    {
      "key": "mes:qc-ipqc:finish",
      "parent": 5650,
      "name": "过程检验-完成"
    },
    {
      "key": "mes:qc-iqc:finish",
      "parent": 5640,
      "name": "来料检验-完成"
    },
    {
      "key": "mes:qc-oqc:finish",
      "parent": 5660,
      "name": "出货检验-完成"
    },
    {
      "key": "mes:qc-rqc:finish",
      "parent": 5670,
      "name": "退货检验-完成"
    },
    {
      "key": "mes:wm-stock-taking-task:finish",
      "parent": 5957,
      "name": "盘点任务-完成"
    },
    {
      "key": "srm:tender-config:query",
      "parent": 602545,
      "name": "招投标管理-查询"
    },
    {
      "key": "srm:tender-config:update",
      "parent": 602545,
      "name": "招投标管理-编辑"
    },
    {
      "key": "hrm:employee-contract:import",
      "parent": 6006,
      "name": "员工合同-导入"
    }
  ],
  "queryKeys": [
    "bi:dashboard:query",
    "bpm:oa-notice:query",
    "crm:invoice:query",
    "crm:sale-quotation:query",
    "erp:purchase-request:query",
    "hrm:overtime:query",
    "hrm:resignation:query",
    "hrm:transfer:query",
    "hrm:attendance-exception:query",
    "hrm:attendance-holiday:query",
    "hrm:attendance-record:query",
    "hrm:attendance-rule:query",
    "hrm:attendance-summary:query",
    "hrm:employee-social-security:query",
    "hrm:salary-calculation:query",
    "hrm:salary-payment:query",
    "hrm:social-security-scheme:query",
    "hrm:tax-rate-config:query",
    "mes:pd-document:query",
    "mes:pd-process-param:query",
    "mes:pd-process-param-template:query",
    "mes:pro-mps:query",
    "srm:tender-config:query"
  ],
  "allKeys": [
    "mdm:unit:import",
    "mdm:unit:export",
    "mes:pd-process-param:create",
    "mes:pd-process-param-template:create",
    "mes:pd-process-param:update",
    "mes:pd-process-param-template:update",
    "mes:pd-process-param:delete",
    "mes:pd-process-param-template:delete",
    "mes:pd-process-param:export",
    "mes:pd-process-param-template:export",
    "mes:wm-outsource-issue:finish",
    "mes:wm-return-vendor:finish",
    "mes:wm-material-stock:update",
    "mes:pd-project:update",
    "bi:dashboard:query",
    "bpm:oa-notice:query",
    "crm:invoice:query",
    "crm:sale-quotation:query",
    "crm:sale-quotation:export",
    "crm:sale-quotation:convert-contract",
    "erp:purchase-order:import",
    "erp:purchase-request:query",
    "erp:purchase-request:submit",
    "erp:purchase-request:generate-order",
    "erp:sale-order:cancel",
    "erp:sale-order:enable",
    "erp:sale-order:import",
    "hrm:leave:export",
    "hrm:overtime:query",
    "hrm:resignation:query",
    "hrm:resignation:export",
    "hrm:transfer:query",
    "hrm:transfer:export",
    "hrm:attendance-exception:update",
    "hrm:attendance-exception:delete",
    "hrm:attendance-exception:query",
    "hrm:attendance-holiday:query",
    "hrm:attendance-record:query",
    "hrm:attendance-rule:query",
    "hrm:attendance-summary:query",
    "hrm:employee-social-security:query",
    "hrm:salary-calculation:query",
    "hrm:salary-calculation:delete",
    "hrm:salary-calculation:save",
    "hrm:salary-payment:query",
    "hrm:salary-payment:generate",
    "hrm:salary-payment:delete",
    "hrm:social-security-scheme:query",
    "hrm:tax-rate-config:query",
    "mes:dv-metering:import",
    "mes:md-workshop:export",
    "mes:pd-archive:create",
    "mes:pd-document:create",
    "mes:pd-document:update",
    "mes:pd-document:delete",
    "mes:pd-document:query",
    "mes:pd-document:export",
    "mes:pd-process-param:query",
    "mes:pd-process-param-template:query",
    "mes:pro-mps:query",
    "mes:qc-ipqc:finish",
    "mes:qc-iqc:finish",
    "mes:qc-oqc:finish",
    "mes:qc-rqc:finish",
    "mes:wm-stock-taking-task:finish",
    "srm:tender-config:query",
    "srm:tender-config:update",
    "hrm:employee-contract:import"
  ],
  "parents": [
    {
      "id": 2638,
      "component": "erp/sale/order/index"
    },
    {
      "id": 2666,
      "component": "erp/purchase/order/index"
    },
    {
      "id": 5160,
      "component": "mes/md/workstation/workshop/index"
    },
    {
      "id": 5380,
      "component": "mes/dv/metering/index"
    },
    {
      "id": 5640,
      "component": "mes/qc/iqc/index"
    },
    {
      "id": 5650,
      "component": "mes/qc/ipqc/index"
    },
    {
      "id": 5660,
      "component": "mes/qc/oqc/index"
    },
    {
      "id": 5670,
      "component": "mes/qc/rqc/index"
    },
    {
      "id": 5957,
      "component": "wls/stocktaking/task/index"
    },
    {
      "id": 6003,
      "component": "hrm/leave/index"
    },
    {
      "id": 6004,
      "component": "hrm/transfer/index"
    },
    {
      "id": 6005,
      "component": "hrm/resignation/index"
    },
    {
      "id": 6011,
      "component": "hrm/attendance/record/index"
    },
    {
      "id": 6012,
      "component": "hrm/attendance/exception/index"
    },
    {
      "id": 6013,
      "component": "hrm/attendance/rule/index"
    },
    {
      "id": 6014,
      "component": "hrm/attendance/holiday/index"
    },
    {
      "id": 6015,
      "component": "hrm/attendance/summary/index"
    },
    {
      "id": 6021,
      "component": "hrm/salary/calculation/index"
    },
    {
      "id": 6022,
      "component": "hrm/salary/payment/index"
    },
    {
      "id": 6023,
      "component": "hrm/salary/employee-social-security/index"
    },
    {
      "id": 6024,
      "component": "hrm/salary/tax-rate-config/index"
    },
    {
      "id": 602445,
      "component": "hrm/salary/social-security-scheme/index"
    },
    {
      "id": 602474,
      "component": "mes/process-design/parameter/index"
    },
    {
      "id": 602475,
      "component": "mes/process-design/template/index"
    },
    {
      "id": 602498,
      "component": "erp/purchase/request/index"
    },
    {
      "id": 602504,
      "component": "mes/pro/mps/index"
    },
    {
      "id": 602512,
      "component": "crm/saleQuotation/index"
    },
    {
      "id": 602545,
      "component": "srm/tender/index"
    },
    {
      "id": 602572,
      "component": "mes/pd/project/index"
    },
    {
      "id": 602578,
      "component": "mes/pd/archive/index"
    },
    {
      "id": 602608,
      "component": "bpm/oa/notice/index"
    },
    {
      "id": 1063007,
      "component": "bi/config/chart/index"
    },
    {
      "id": 1063093,
      "component": "crm/invoice/index"
    },
    {
      "id": 1065211,
      "component": "hrm/overtime/index"
    }
  ]
}
scripts/permission-menu-snapshot.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
[{"id":1,"name":"系统管理","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":2,"name":"基础设施","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":5,"name":"OA ç¤ºä¾‹","permission":"","parent_id":1185,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":100,"name":"用户管理","permission":"system:user:list","parent_id":1,"type":2,"component":"system/user/index","component_name":"SystemUser","status":0,"deleted":0},{"id":101,"name":"角色管理","permission":"","parent_id":1,"type":2,"component":"system/role/index","component_name":"SystemRole","status":0,"deleted":0},{"id":102,"name":"菜单管理","permission":"","parent_id":1,"type":2,"component":"system/menu/index","component_name":"SystemMenu","status":0,"deleted":0},{"id":103,"name":"部门管理","permission":"","parent_id":1,"type":2,"component":"system/dept/index","component_name":"SystemDept","status":0,"deleted":0},{"id":104,"name":"岗位管理","permission":"","parent_id":1,"type":2,"component":"system/post/index","component_name":"SystemPost","status":0,"deleted":0},{"id":105,"name":"字典管理","permission":"","parent_id":1,"type":2,"component":"system/dict/index","component_name":"SystemDictType","status":0,"deleted":0},{"id":106,"name":"配置管理","permission":"","parent_id":2,"type":2,"component":"infra/config/index","component_name":"InfraConfig","status":0,"deleted":0},{"id":107,"name":"通知公告","permission":"","parent_id":2739,"type":2,"component":"system/notice/index","component_name":"SystemNotice","status":0,"deleted":0},{"id":108,"name":"审计日志","permission":"","parent_id":1,"type":1,"component":"","component_name":null,"status":0,"deleted":0},{"id":109,"name":"令牌管理","permission":"","parent_id":1261,"type":2,"component":"system/oauth2/token/index","component_name":"SystemTokenClient","status":0,"deleted":0},{"id":110,"name":"定时任务","permission":"","parent_id":2,"type":2,"component":"infra/job/index","component_name":"InfraJob","status":0,"deleted":0},{"id":111,"name":"MySQL ç›‘控","permission":"","parent_id":2740,"type":2,"component":"infra/druid/index","component_name":"InfraDruid","status":0,"deleted":0},{"id":112,"name":"Java ç›‘控","permission":"","parent_id":2740,"type":2,"component":"infra/server/index","component_name":"InfraAdminServer","status":0,"deleted":0},{"id":113,"name":"Redis ç›‘控","permission":"","parent_id":2740,"type":2,"component":"infra/redis/index","component_name":"InfraRedis","status":0,"deleted":0},{"id":114,"name":"表单构建","permission":"infra:build:list","parent_id":2,"type":2,"component":"infra/build/index","component_name":"InfraBuild","status":0,"deleted":0},{"id":115,"name":"代码生成","permission":"infra:codegen:query","parent_id":2,"type":2,"component":"infra/codegen/index","component_name":"InfraCodegen","status":0,"deleted":0},{"id":116,"name":"API æŽ¥å£","permission":"infra:swagger:list","parent_id":2,"type":2,"component":"infra/swagger/index","component_name":"InfraSwagger","status":0,"deleted":0},{"id":500,"name":"操作日志","permission":"","parent_id":108,"type":2,"component":"system/operatelog/index","component_name":"SystemOperateLog","status":0,"deleted":0},{"id":501,"name":"登录日志","permission":"","parent_id":108,"type":2,"component":"system/loginlog/index","component_name":"SystemLoginLog","status":0,"deleted":0},{"id":1001,"name":"用户查询","permission":"system:user:query","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1002,"name":"用户新增","permission":"system:user:create","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1003,"name":"用户修改","permission":"system:user:update","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1004,"name":"用户删除","permission":"system:user:delete","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1005,"name":"用户导出","permission":"system:user:export","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1006,"name":"用户导入","permission":"system:user:import","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1007,"name":"重置密码","permission":"system:user:update-password","parent_id":100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1008,"name":"角色查询","permission":"system:role:query","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1009,"name":"角色新增","permission":"system:role:create","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1010,"name":"角色修改","permission":"system:role:update","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1011,"name":"角色删除","permission":"system:role:delete","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1012,"name":"角色导出","permission":"system:role:export","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1013,"name":"菜单查询","permission":"system:menu:query","parent_id":102,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1014,"name":"菜单新增","permission":"system:menu:create","parent_id":102,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1015,"name":"菜单修改","permission":"system:menu:update","parent_id":102,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1016,"name":"菜单删除","permission":"system:menu:delete","parent_id":102,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1017,"name":"部门查询","permission":"system:dept:query","parent_id":103,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1018,"name":"部门新增","permission":"system:dept:create","parent_id":103,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1019,"name":"部门修改","permission":"system:dept:update","parent_id":103,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1020,"name":"部门删除","permission":"system:dept:delete","parent_id":103,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1021,"name":"岗位查询","permission":"system:post:query","parent_id":104,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1022,"name":"岗位新增","permission":"system:post:create","parent_id":104,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1023,"name":"岗位修改","permission":"system:post:update","parent_id":104,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1024,"name":"岗位删除","permission":"system:post:delete","parent_id":104,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1025,"name":"岗位导出","permission":"system:post:export","parent_id":104,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1026,"name":"字典查询","permission":"system:dict:query","parent_id":105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1027,"name":"字典新增","permission":"system:dict:create","parent_id":105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1028,"name":"字典修改","permission":"system:dict:update","parent_id":105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1029,"name":"字典删除","permission":"system:dict:delete","parent_id":105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1030,"name":"字典导出","permission":"system:dict:export","parent_id":105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1031,"name":"配置查询","permission":"infra:config:query","parent_id":106,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1032,"name":"配置新增","permission":"infra:config:create","parent_id":106,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1033,"name":"配置修改","permission":"infra:config:update","parent_id":106,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1034,"name":"配置删除","permission":"infra:config:delete","parent_id":106,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1035,"name":"配置导出","permission":"infra:config:export","parent_id":106,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1036,"name":"公告查询","permission":"system:notice:query","parent_id":107,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1037,"name":"公告新增","permission":"system:notice:create","parent_id":107,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1038,"name":"公告修改","permission":"system:notice:update","parent_id":107,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1039,"name":"公告删除","permission":"system:notice:delete","parent_id":107,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1040,"name":"操作查询","permission":"system:operate-log:query","parent_id":500,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1042,"name":"日志导出","permission":"system:operate-log:export","parent_id":500,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1043,"name":"登录查询","permission":"system:login-log:query","parent_id":501,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1045,"name":"日志导出","permission":"system:login-log:export","parent_id":501,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1046,"name":"令牌列表","permission":"system:oauth2-token:page","parent_id":109,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1048,"name":"令牌删除","permission":"system:oauth2-token:delete","parent_id":109,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1050,"name":"任务新增","permission":"infra:job:create","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1051,"name":"任务修改","permission":"infra:job:update","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1052,"name":"任务删除","permission":"infra:job:delete","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1053,"name":"状态修改","permission":"infra:job:update","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1054,"name":"任务导出","permission":"infra:job:export","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1056,"name":"生成修改","permission":"infra:codegen:update","parent_id":115,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1057,"name":"生成删除","permission":"infra:codegen:delete","parent_id":115,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1058,"name":"导入代码","permission":"infra:codegen:create","parent_id":115,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1059,"name":"预览代码","permission":"infra:codegen:preview","parent_id":115,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1060,"name":"生成代码","permission":"infra:codegen:download","parent_id":115,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063,"name":"设置角色菜单权限","permission":"system:permission:assign-role-menu","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1064,"name":"设置角色数据权限","permission":"system:permission:assign-role-data-scope","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1065,"name":"设置用户角色","permission":"system:permission:assign-user-role","parent_id":101,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1066,"name":"获得 Redis ç›‘控信息","permission":"infra:redis:get-monitor-info","parent_id":113,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1067,"name":"获得 Redis Key åˆ—表","permission":"infra:redis:get-key-list","parent_id":113,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1070,"name":"代码生成案例","permission":"","parent_id":2,"type":1,"component":"infra/testDemo/index","component_name":null,"status":0,"deleted":0},{"id":1075,"name":"任务触发","permission":"infra:job:trigger","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1077,"name":"链路追踪","permission":"","parent_id":2740,"type":2,"component":"infra/skywalking/index","component_name":"InfraSkyWalking","status":0,"deleted":0},{"id":1078,"name":"访问日志","permission":"","parent_id":1083,"type":2,"component":"infra/apiAccessLog/index","component_name":"InfraApiAccessLog","status":0,"deleted":0},{"id":1082,"name":"日志导出","permission":"infra:api-access-log:export","parent_id":1078,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1083,"name":"API æ—¥å¿—","permission":"","parent_id":2,"type":2,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1084,"name":"错误日志","permission":"infra:api-error-log:query","parent_id":1083,"type":2,"component":"infra/apiErrorLog/index","component_name":"InfraApiErrorLog","status":0,"deleted":0},{"id":1085,"name":"日志处理","permission":"infra:api-error-log:update-status","parent_id":1084,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1086,"name":"日志导出","permission":"infra:api-error-log:export","parent_id":1084,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1087,"name":"任务查询","permission":"infra:job:query","parent_id":110,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1088,"name":"日志查询","permission":"infra:api-access-log:query","parent_id":1078,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1089,"name":"日志查询","permission":"infra:api-error-log:query","parent_id":1084,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1090,"name":"文件列表","permission":"","parent_id":1243,"type":2,"component":"infra/file/index","component_name":"InfraFile","status":0,"deleted":0},{"id":1091,"name":"文件查询","permission":"infra:file:query","parent_id":1090,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1092,"name":"文件删除","permission":"infra:file:delete","parent_id":1090,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1093,"name":"短信管理","permission":"","parent_id":2739,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1094,"name":"短信渠道","permission":"","parent_id":1093,"type":2,"component":"system/sms/channel/index","component_name":"SystemSmsChannel","status":0,"deleted":0},{"id":1095,"name":"短信渠道查询","permission":"system:sms-channel:query","parent_id":1094,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1096,"name":"短信渠道创建","permission":"system:sms-channel:create","parent_id":1094,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1097,"name":"短信渠道更新","permission":"system:sms-channel:update","parent_id":1094,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1098,"name":"短信渠道删除","permission":"system:sms-channel:delete","parent_id":1094,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1100,"name":"短信模板","permission":"","parent_id":1093,"type":2,"component":"system/sms/template/index","component_name":"SystemSmsTemplate","status":0,"deleted":0},{"id":1101,"name":"短信模板查询","permission":"system:sms-template:query","parent_id":1100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1102,"name":"短信模板创建","permission":"system:sms-template:create","parent_id":1100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1103,"name":"短信模板更新","permission":"system:sms-template:update","parent_id":1100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1104,"name":"短信模板删除","permission":"system:sms-template:delete","parent_id":1100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1105,"name":"短信模板导出","permission":"system:sms-template:export","parent_id":1100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1106,"name":"发送测试短信","permission":"system:sms-template:send-sms","parent_id":1100,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1107,"name":"短信日志","permission":"","parent_id":1093,"type":2,"component":"system/sms/log/index","component_name":"SystemSmsLog","status":0,"deleted":0},{"id":1108,"name":"短信日志查询","permission":"system:sms-log:query","parent_id":1107,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1109,"name":"短信日志导出","permission":"system:sms-log:export","parent_id":1107,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1118,"name":"请假查询","permission":"","parent_id":5,"type":2,"component":"bpm/oa/leave/index","component_name":"BpmOALeave","status":0,"deleted":0},{"id":1119,"name":"请假申请查询","permission":"bpm:oa-leave:query","parent_id":1118,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1120,"name":"请假申请创建","permission":"bpm:oa-leave:create","parent_id":1118,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1138,"name":"租户列表","permission":"","parent_id":1224,"type":2,"component":"system/tenant/index","component_name":"SystemTenant","status":0,"deleted":0},{"id":1139,"name":"租户查询","permission":"system:tenant:query","parent_id":1138,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1140,"name":"租户创建","permission":"system:tenant:create","parent_id":1138,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1141,"name":"租户更新","permission":"system:tenant:update","parent_id":1138,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1142,"name":"租户删除","permission":"system:tenant:delete","parent_id":1138,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1143,"name":"租户导出","permission":"system:tenant:export","parent_id":1138,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1185,"name":"协同办公","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1186,"name":"流程管理","permission":"","parent_id":1185,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1187,"name":"流程表单","permission":"","parent_id":1186,"type":2,"component":"bpm/form/index","component_name":"BpmForm","status":0,"deleted":0},{"id":1188,"name":"表单查询","permission":"bpm:form:query","parent_id":1187,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1189,"name":"表单创建","permission":"bpm:form:create","parent_id":1187,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1190,"name":"表单更新","permission":"bpm:form:update","parent_id":1187,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1191,"name":"表单删除","permission":"bpm:form:delete","parent_id":1187,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1192,"name":"表单导出","permission":"bpm:form:export","parent_id":1187,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1193,"name":"流程模型","permission":"","parent_id":1186,"type":2,"component":"bpm/model/index","component_name":"BpmModel","status":0,"deleted":0},{"id":1194,"name":"模型查询","permission":"bpm:model:query","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1195,"name":"模型创建","permission":"bpm:model:create","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1197,"name":"模型更新","permission":"bpm:model:update","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1198,"name":"模型删除","permission":"bpm:model:delete","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1199,"name":"模型发布","permission":"bpm:model:deploy","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1200,"name":"审批中心","permission":"","parent_id":1185,"type":2,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1201,"name":"我的流程","permission":"","parent_id":1200,"type":2,"component":"bpm/processInstance/index","component_name":"BpmProcessInstanceMy","status":0,"deleted":0},{"id":1202,"name":"流程实例的查询","permission":"bpm:process-instance:query","parent_id":1201,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1207,"name":"待办任务","permission":"","parent_id":1200,"type":2,"component":"bpm/task/todo/index","component_name":"BpmTodoTask","status":0,"deleted":0},{"id":1208,"name":"已办任务","permission":"","parent_id":1200,"type":2,"component":"bpm/task/done/index","component_name":"BpmDoneTask","status":0,"deleted":0},{"id":1209,"name":"用户分组","permission":"","parent_id":1186,"type":2,"component":"bpm/group/index","component_name":"BpmUserGroup","status":0,"deleted":0},{"id":1210,"name":"用户组查询","permission":"bpm:user-group:query","parent_id":1209,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1211,"name":"用户组创建","permission":"bpm:user-group:create","parent_id":1209,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1212,"name":"用户组更新","permission":"bpm:user-group:update","parent_id":1209,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1213,"name":"用户组删除","permission":"bpm:user-group:delete","parent_id":1209,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1215,"name":"流程定义查询","permission":"bpm:process-definition:query","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1216,"name":"流程任务分配规则查询","permission":"bpm:task-assign-rule:query","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1217,"name":"流程任务分配规则创建","permission":"bpm:task-assign-rule:create","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1218,"name":"流程任务分配规则更新","permission":"bpm:task-assign-rule:update","parent_id":1193,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1219,"name":"流程实例的创建","permission":"bpm:process-instance:create","parent_id":1201,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1220,"name":"流程实例的取消","permission":"bpm:process-instance:cancel","parent_id":1201,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1221,"name":"流程任务的查询","permission":"bpm:task:query","parent_id":1207,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1222,"name":"流程任务的更新","permission":"bpm:task:update","parent_id":1207,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1224,"name":"租户管理","permission":"","parent_id":1,"type":2,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1225,"name":"租户套餐","permission":"","parent_id":1224,"type":2,"component":"system/tenantPackage/index","component_name":"SystemTenantPackage","status":0,"deleted":0},{"id":1226,"name":"租户套餐查询","permission":"system:tenant-package:query","parent_id":1225,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1227,"name":"租户套餐创建","permission":"system:tenant-package:create","parent_id":1225,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1228,"name":"租户套餐更新","permission":"system:tenant-package:update","parent_id":1225,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1229,"name":"租户套餐删除","permission":"system:tenant-package:delete","parent_id":1225,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1237,"name":"文件配置","permission":"","parent_id":1243,"type":2,"component":"infra/fileConfig/index","component_name":"InfraFileConfig","status":0,"deleted":0},{"id":1238,"name":"文件配置查询","permission":"infra:file-config:query","parent_id":1237,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1239,"name":"文件配置创建","permission":"infra:file-config:create","parent_id":1237,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1240,"name":"文件配置更新","permission":"infra:file-config:update","parent_id":1237,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1241,"name":"文件配置删除","permission":"infra:file-config:delete","parent_id":1237,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1242,"name":"文件配置导出","permission":"infra:file-config:export","parent_id":1237,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1243,"name":"文件管理","permission":"","parent_id":2,"type":2,"component":null,"component_name":"","status":0,"deleted":0},{"id":1255,"name":"数据源配置","permission":"","parent_id":2,"type":2,"component":"infra/dataSourceConfig/index","component_name":"InfraDataSourceConfig","status":0,"deleted":0},{"id":1256,"name":"数据源配置查询","permission":"infra:data-source-config:query","parent_id":1255,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1257,"name":"数据源配置创建","permission":"infra:data-source-config:create","parent_id":1255,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1258,"name":"数据源配置更新","permission":"infra:data-source-config:update","parent_id":1255,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1259,"name":"数据源配置删除","permission":"infra:data-source-config:delete","parent_id":1255,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1260,"name":"数据源配置导出","permission":"infra:data-source-config:export","parent_id":1255,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1261,"name":"OAuth 2.0","permission":"","parent_id":1,"type":2,"component":null,"component_name":null,"status":1,"deleted":0},{"id":1263,"name":"应用管理","permission":"","parent_id":1261,"type":2,"component":"system/oauth2/client/index","component_name":"SystemOAuth2Client","status":0,"deleted":0},{"id":1264,"name":"客户端查询","permission":"system:oauth2-client:query","parent_id":1263,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1265,"name":"客户端创建","permission":"system:oauth2-client:create","parent_id":1263,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1266,"name":"客户端更新","permission":"system:oauth2-client:update","parent_id":1263,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1267,"name":"客户端删除","permission":"system:oauth2-client:delete","parent_id":1263,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1281,"name":"报表管理","permission":"","parent_id":0,"type":2,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1282,"name":"报表设计器","permission":"","parent_id":1281,"type":2,"component":"report/jmreport/index","component_name":"JimuReport","status":0,"deleted":0},{"id":2083,"name":"地区管理","permission":"","parent_id":1,"type":2,"component":"system/area/index","component_name":"SystemArea","status":0,"deleted":0},{"id":2130,"name":"邮箱管理","permission":"","parent_id":2739,"type":2,"component":null,"component_name":null,"status":0,"deleted":0},{"id":2131,"name":"邮箱账号","permission":"","parent_id":2130,"type":2,"component":"system/mail/account/index","component_name":"SystemMailAccount","status":0,"deleted":0},{"id":2132,"name":"账号查询","permission":"system:mail-account:query","parent_id":2131,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2133,"name":"账号创建","permission":"system:mail-account:create","parent_id":2131,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2134,"name":"账号更新","permission":"system:mail-account:update","parent_id":2131,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2135,"name":"账号删除","permission":"system:mail-account:delete","parent_id":2131,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2136,"name":"邮件模版","permission":"","parent_id":2130,"type":2,"component":"system/mail/template/index","component_name":"SystemMailTemplate","status":0,"deleted":0},{"id":2137,"name":"模版查询","permission":"system:mail-template:query","parent_id":2136,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2138,"name":"模版创建","permission":"system:mail-template:create","parent_id":2136,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2139,"name":"模版更新","permission":"system:mail-template:update","parent_id":2136,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2140,"name":"模版删除","permission":"system:mail-template:delete","parent_id":2136,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2141,"name":"邮件记录","permission":"","parent_id":2130,"type":2,"component":"system/mail/log/index","component_name":"SystemMailLog","status":0,"deleted":0},{"id":2142,"name":"日志查询","permission":"system:mail-log:query","parent_id":2141,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2143,"name":"发送测试邮件","permission":"system:mail-template:send-mail","parent_id":2136,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2144,"name":"站内信管理","permission":"","parent_id":2739,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":2145,"name":"模板管理","permission":"","parent_id":2144,"type":2,"component":"system/notify/template/index","component_name":"SystemNotifyTemplate","status":0,"deleted":0},{"id":2146,"name":"站内信模板查询","permission":"system:notify-template:query","parent_id":2145,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2147,"name":"站内信模板创建","permission":"system:notify-template:create","parent_id":2145,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2148,"name":"站内信模板更新","permission":"system:notify-template:update","parent_id":2145,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2149,"name":"站内信模板删除","permission":"system:notify-template:delete","parent_id":2145,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2150,"name":"发送测试站内信","permission":"system:notify-template:send-notify","parent_id":2145,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2151,"name":"消息记录","permission":"","parent_id":2144,"type":2,"component":"system/notify/message/index","component_name":"SystemNotifyMessage","status":0,"deleted":0},{"id":2152,"name":"站内信消息查询","permission":"system:notify-message:query","parent_id":2151,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2153,"name":"大屏设计器","permission":"","parent_id":1281,"type":2,"component":"report/goview/index","component_name":"GoView","status":0,"deleted":0},{"id":2154,"name":"创建项目","permission":"report:go-view-project:create","parent_id":2153,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2155,"name":"更新项目","permission":"report:go-view-project:update","parent_id":2153,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2156,"name":"查询项目","permission":"report:go-view-project:query","parent_id":2153,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2157,"name":"使用 SQL æŸ¥è¯¢æ•°æ®","permission":"report:go-view-data:get-by-sql","parent_id":2153,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2158,"name":"使用 HTTP æŸ¥è¯¢æ•°æ®","permission":"report:go-view-data:get-by-http","parent_id":2153,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2391,"name":"客户管理","permission":"","parent_id":2617,"type":2,"component":"crm/customer/index","component_name":"CrmCustomer","status":0,"deleted":0},{"id":2392,"name":"客户查询","permission":"crm:customer:query","parent_id":2391,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2393,"name":"客户创建","permission":"crm:customer:create","parent_id":2391,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2394,"name":"客户更新","permission":"crm:customer:update","parent_id":2391,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2395,"name":"客户删除","permission":"crm:customer:delete","parent_id":2391,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2396,"name":"客户导出","permission":"crm:customer:export","parent_id":2391,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2398,"name":"合同管理","permission":"","parent_id":2617,"type":2,"component":"crm/contract/index","component_name":"CrmContract","status":0,"deleted":0},{"id":2399,"name":"合同查询","permission":"crm:contract:query","parent_id":2398,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2400,"name":"合同创建","permission":"crm:contract:create","parent_id":2398,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2401,"name":"合同更新","permission":"crm:contract:update","parent_id":2398,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2402,"name":"合同删除","permission":"crm:contract:delete","parent_id":2398,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2403,"name":"合同导出","permission":"crm:contract:export","parent_id":2398,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2404,"name":"线索管理","permission":"","parent_id":2617,"type":2,"component":"crm/clue/index","component_name":"CrmClue","status":0,"deleted":0},{"id":2405,"name":"线索查询","permission":"crm:clue:query","parent_id":2404,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2406,"name":"线索创建","permission":"crm:clue:create","parent_id":2404,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2407,"name":"线索更新","permission":"crm:clue:update","parent_id":2404,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2408,"name":"线索删除","permission":"crm:clue:delete","parent_id":2404,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2409,"name":"线索导出","permission":"crm:clue:export","parent_id":2404,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2410,"name":"商机管理","permission":"","parent_id":2617,"type":2,"component":"crm/business/index","component_name":"CrmBusiness","status":0,"deleted":0},{"id":2411,"name":"商机查询","permission":"crm:business:query","parent_id":2410,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2412,"name":"商机创建","permission":"crm:business:create","parent_id":2410,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2413,"name":"商机更新","permission":"crm:business:update","parent_id":2410,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2414,"name":"商机删除","permission":"crm:business:delete","parent_id":2410,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2415,"name":"商机导出","permission":"crm:business:export","parent_id":2410,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2416,"name":"联系人管理","permission":"","parent_id":2617,"type":2,"component":"crm/contact/index","component_name":"CrmContact","status":0,"deleted":0},{"id":2417,"name":"联系人查询","permission":"crm:contact:query","parent_id":2416,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2418,"name":"联系人创建","permission":"crm:contact:create","parent_id":2416,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2419,"name":"联系人更新","permission":"crm:contact:update","parent_id":2416,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2420,"name":"联系人删除","permission":"crm:contact:delete","parent_id":2416,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2421,"name":"联系人导出","permission":"crm:contact:export","parent_id":2416,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2422,"name":"回款管理","permission":"","parent_id":2617,"type":2,"component":"crm/receivable/index","component_name":"CrmReceivable","status":0,"deleted":0},{"id":2423,"name":"回款管理查询","permission":"crm:receivable:query","parent_id":2422,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2424,"name":"回款管理创建","permission":"crm:receivable:create","parent_id":2422,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2425,"name":"回款管理更新","permission":"crm:receivable:update","parent_id":2422,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2426,"name":"回款管理删除","permission":"crm:receivable:delete","parent_id":2422,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2427,"name":"回款管理导出","permission":"crm:receivable:export","parent_id":2422,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2428,"name":"回款计划","permission":"","parent_id":2617,"type":2,"component":"crm/receivable/plan/index","component_name":"CrmReceivablePlan","status":0,"deleted":0},{"id":2429,"name":"回款计划查询","permission":"crm:receivable-plan:query","parent_id":2428,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2430,"name":"回款计划创建","permission":"crm:receivable-plan:create","parent_id":2428,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2431,"name":"回款计划更新","permission":"crm:receivable-plan:update","parent_id":2428,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2432,"name":"回款计划删除","permission":"crm:receivable-plan:delete","parent_id":2428,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2433,"name":"回款计划导出","permission":"crm:receivable-plan:export","parent_id":2428,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2447,"name":"三方登录","permission":"","parent_id":1,"type":1,"component":"","component_name":"","status":1,"deleted":0},{"id":2448,"name":"三方应用","permission":"","parent_id":2447,"type":2,"component":"system/social/client/index.vue","component_name":"SocialClient","status":0,"deleted":0},{"id":2449,"name":"三方应用查询","permission":"system:social-client:query","parent_id":2448,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2450,"name":"三方应用创建","permission":"system:social-client:create","parent_id":2448,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2451,"name":"三方应用更新","permission":"system:social-client:update","parent_id":2448,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2452,"name":"三方应用删除","permission":"system:social-client:delete","parent_id":2448,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2453,"name":"三方用户","permission":"system:social-user:query","parent_id":2447,"type":2,"component":"system/social/user/index.vue","component_name":"SocialUser","status":0,"deleted":0},{"id":2472,"name":"主子表(内嵌)","permission":"","parent_id":1070,"type":2,"component":"infra/demo/demo03/inner/index","component_name":"Demo03StudentInner","status":0,"deleted":0},{"id":2478,"name":"单表(增删改查)","permission":"","parent_id":1070,"type":2,"component":"infra/demo/demo01/index","component_name":"Demo01Contact","status":0,"deleted":0},{"id":2479,"name":"示例联系人查询","permission":"infra:demo01-contact:query","parent_id":2478,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2480,"name":"示例联系人创建","permission":"infra:demo01-contact:create","parent_id":2478,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2481,"name":"示例联系人更新","permission":"infra:demo01-contact:update","parent_id":2478,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2482,"name":"示例联系人删除","permission":"infra:demo01-contact:delete","parent_id":2478,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2483,"name":"示例联系人导出","permission":"infra:demo01-contact:export","parent_id":2478,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2484,"name":"树表(增删改查)","permission":"","parent_id":1070,"type":2,"component":"infra/demo/demo02/index","component_name":"Demo02Category","status":0,"deleted":0},{"id":2485,"name":"示例分类查询","permission":"infra:demo02-category:query","parent_id":2484,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2486,"name":"示例分类创建","permission":"infra:demo02-category:create","parent_id":2484,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2487,"name":"示例分类更新","permission":"infra:demo02-category:update","parent_id":2484,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2488,"name":"示例分类删除","permission":"infra:demo02-category:delete","parent_id":2484,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2489,"name":"示例分类导出","permission":"infra:demo02-category:export","parent_id":2484,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2490,"name":"主子表(标准)","permission":"","parent_id":1070,"type":2,"component":"infra/demo/demo03/normal/index","component_name":"Demo03StudentNormal","status":0,"deleted":0},{"id":2491,"name":"学生查询","permission":"infra:demo03-student:query","parent_id":2490,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2492,"name":"学生创建","permission":"infra:demo03-student:create","parent_id":2490,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2493,"name":"学生更新","permission":"infra:demo03-student:update","parent_id":2490,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2494,"name":"学生删除","permission":"infra:demo03-student:delete","parent_id":2490,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2495,"name":"学生导出","permission":"infra:demo03-student:export","parent_id":2490,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2497,"name":"主子表(ERP)","permission":"","parent_id":1070,"type":2,"component":"infra/demo/demo03/erp/index","component_name":"Demo03StudentERP","status":0,"deleted":0},{"id":2516,"name":"客户公海配置","permission":"","parent_id":2524,"type":2,"component":"crm/customer/poolConfig/index","component_name":"CrmCustomerPoolConfig","status":0,"deleted":0},{"id":2517,"name":"客户公海配置保存","permission":"crm:customer-pool-config:update","parent_id":2516,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2518,"name":"客户限制配置","permission":"","parent_id":2524,"type":2,"component":"crm/customer/limitConfig/index","component_name":"CrmCustomerLimitConfig","status":0,"deleted":0},{"id":2519,"name":"客户限制配置查询","permission":"crm:customer-limit-config:query","parent_id":2518,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2520,"name":"客户限制配置创建","permission":"crm:customer-limit-config:create","parent_id":2518,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2521,"name":"客户限制配置更新","permission":"crm:customer-limit-config:update","parent_id":2518,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2522,"name":"客户限制配置删除","permission":"crm:customer-limit-config:delete","parent_id":2518,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2523,"name":"客户限制配置导出","permission":"crm:customer-limit-config:export","parent_id":2518,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2524,"name":"系统配置","permission":"","parent_id":2617,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2525,"name":"WebSocket","permission":"","parent_id":2,"type":2,"component":"infra/webSocket/index","component_name":"InfraWebSocket","status":0,"deleted":0},{"id":2543,"name":"关联商机","permission":"crm:contact:create-business","parent_id":2416,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2544,"name":"取关商机","permission":"crm:contact:delete-business","parent_id":2416,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2546,"name":"客户公海","permission":"","parent_id":2617,"type":2,"component":"crm/customer/pool/index","component_name":"CrmCustomerPool","status":0,"deleted":0},{"id":2560,"name":"数据统计","permission":"","parent_id":2617,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2561,"name":"排行榜","permission":"crm:statistics-rank:query","parent_id":2560,"type":2,"component":"crm/statistics/rank/index","component_name":"CrmStatisticsRank","status":0,"deleted":0},{"id":2562,"name":"客户导入","permission":"crm:customer:import","parent_id":2391,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2563,"name":"ERP ç³»ç»Ÿ","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":1,"deleted":0},{"id":2564,"name":"产品管理","permission":"","parent_id":2563,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2565,"name":"产品信息","permission":"","parent_id":2564,"type":2,"component":"erp/product/product/index","component_name":"ErpProduct","status":0,"deleted":0},{"id":2566,"name":"产品查询","permission":"erp:product:query","parent_id":2565,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2567,"name":"产品创建","permission":"erp:product:create","parent_id":2565,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2568,"name":"产品更新","permission":"erp:product:update","parent_id":2565,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2569,"name":"产品删除","permission":"erp:product:delete","parent_id":2565,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2570,"name":"产品导出","permission":"erp:product:export","parent_id":2565,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2571,"name":"产品分类","permission":"","parent_id":2564,"type":2,"component":"erp/product/category/index","component_name":"ErpProductCategory","status":0,"deleted":0},{"id":2572,"name":"分类查询","permission":"erp:product-category:query","parent_id":2571,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2573,"name":"分类创建","permission":"erp:product-category:create","parent_id":2571,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2574,"name":"分类更新","permission":"erp:product-category:update","parent_id":2571,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2575,"name":"分类删除","permission":"erp:product-category:delete","parent_id":2571,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2576,"name":"分类导出","permission":"erp:product-category:export","parent_id":2571,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2577,"name":"产品单位","permission":"","parent_id":2564,"type":2,"component":"erp/product/unit/index","component_name":"ErpProductUnit","status":0,"deleted":0},{"id":2578,"name":"单位查询","permission":"erp:product-unit:query","parent_id":2577,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2579,"name":"单位创建","permission":"erp:product-unit:create","parent_id":2577,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2580,"name":"单位更新","permission":"erp:product-unit:update","parent_id":2577,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2581,"name":"单位删除","permission":"erp:product-unit:delete","parent_id":2577,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2582,"name":"单位导出","permission":"erp:product-unit:export","parent_id":2577,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2583,"name":"库存管理","permission":"","parent_id":2563,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2584,"name":"仓库信息","permission":"","parent_id":2583,"type":2,"component":"erp/stock/warehouse/index","component_name":"ErpWarehouse","status":0,"deleted":0},{"id":2585,"name":"仓库查询","permission":"erp:warehouse:query","parent_id":2584,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2586,"name":"仓库创建","permission":"erp:warehouse:create","parent_id":2584,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2587,"name":"仓库更新","permission":"erp:warehouse:update","parent_id":2584,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2588,"name":"仓库删除","permission":"erp:warehouse:delete","parent_id":2584,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2589,"name":"仓库导出","permission":"erp:warehouse:export","parent_id":2584,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2590,"name":"产品库存","permission":"","parent_id":2583,"type":2,"component":"erp/stock/stock/index","component_name":"ErpStock","status":0,"deleted":0},{"id":2591,"name":"库存查询","permission":"erp:stock:query","parent_id":2590,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2592,"name":"库存导出","permission":"erp:stock:export","parent_id":2590,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2593,"name":"出入库明细","permission":"","parent_id":2583,"type":2,"component":"erp/stock/record/index","component_name":"ErpStockRecord","status":0,"deleted":0},{"id":2594,"name":"库存明细查询","permission":"erp:stock-record:query","parent_id":2593,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2595,"name":"库存明细导出","permission":"erp:stock-record:export","parent_id":2593,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2596,"name":"其它入库","permission":"","parent_id":2583,"type":2,"component":"erp/stock/in/index","component_name":"ErpStockIn","status":0,"deleted":0},{"id":2597,"name":"其它入库单查询","permission":"erp:stock-in:query","parent_id":2596,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2598,"name":"其它入库单创建","permission":"erp:stock-in:create","parent_id":2596,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2599,"name":"其它入库单更新","permission":"erp:stock-in:update","parent_id":2596,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2600,"name":"其它入库单删除","permission":"erp:stock-in:delete","parent_id":2596,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2601,"name":"其它入库单导出","permission":"erp:stock-in:export","parent_id":2596,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2602,"name":"采购管理","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2609,"name":"其它入库单审批","permission":"erp:stock-in:update-status","parent_id":2596,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2610,"name":"其它出库","permission":"","parent_id":2583,"type":2,"component":"erp/stock/out/index","component_name":"ErpStockOut","status":0,"deleted":0},{"id":2611,"name":"其它出库单查询","permission":"erp:stock-out:query","parent_id":2610,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2612,"name":"其它出库单创建","permission":"erp:stock-out:create","parent_id":2610,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2613,"name":"其它出库单更新","permission":"erp:stock-out:update","parent_id":2610,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2614,"name":"其它出库单删除","permission":"erp:stock-out:delete","parent_id":2610,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2615,"name":"其它出库单导出","permission":"erp:stock-out:export","parent_id":2610,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2616,"name":"其它出库单审批","permission":"erp:stock-out:update-status","parent_id":2610,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2617,"name":"营销管理","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2618,"name":"客户信息","permission":"","parent_id":2617,"type":2,"component":"erp/sale/customer/index","component_name":"ErpCustomer","status":1,"deleted":0},{"id":2619,"name":"客户查询","permission":"erp:customer:query","parent_id":2618,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2620,"name":"客户创建","permission":"erp:customer:create","parent_id":2618,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2621,"name":"客户更新","permission":"erp:customer:update","parent_id":2618,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2622,"name":"客户删除","permission":"erp:customer:delete","parent_id":2618,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2623,"name":"客户导出","permission":"erp:customer:export","parent_id":2618,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2624,"name":"库存调拨","permission":"","parent_id":2583,"type":2,"component":"erp/stock/move/index","component_name":"ErpStockMove","status":0,"deleted":0},{"id":2625,"name":"库存调度单查询","permission":"erp:stock-move:query","parent_id":2624,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2626,"name":"库存调度单创建","permission":"erp:stock-move:create","parent_id":2624,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2627,"name":"库存调度单更新","permission":"erp:stock-move:update","parent_id":2624,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2628,"name":"库存调度单删除","permission":"erp:stock-move:delete","parent_id":2624,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2629,"name":"库存调度单导出","permission":"erp:stock-move:export","parent_id":2624,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2630,"name":"库存调度单审批","permission":"erp:stock-move:update-status","parent_id":2624,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2631,"name":"库存盘点","permission":"","parent_id":2583,"type":2,"component":"erp/stock/check/index","component_name":"ErpStockCheck","status":0,"deleted":0},{"id":2632,"name":"库存盘点单查询","permission":"erp:stock-check:query","parent_id":2631,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2633,"name":"库存盘点单创建","permission":"erp:stock-check:create","parent_id":2631,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2634,"name":"库存盘点单更新","permission":"erp:stock-check:update","parent_id":2631,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2635,"name":"库存盘点单删除","permission":"erp:stock-check:delete","parent_id":2631,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2636,"name":"库存盘点单导出","permission":"erp:stock-check:export","parent_id":2631,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2637,"name":"库存盘点单审批","permission":"erp:stock-check:update-status","parent_id":2631,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2638,"name":"销售订单","permission":"","parent_id":2617,"type":2,"component":"erp/sale/order/index","component_name":"ErpSaleOrder","status":0,"deleted":0},{"id":2639,"name":"销售订单查询","permission":"erp:sale-order:query","parent_id":2638,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2640,"name":"销售订单创建","permission":"erp:sale-order:create","parent_id":2638,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2641,"name":"销售订单更新","permission":"erp:sale-order:update","parent_id":2638,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2642,"name":"销售订单删除","permission":"erp:sale-order:delete","parent_id":2638,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2643,"name":"销售订单导出","permission":"erp:sale-order:export","parent_id":2638,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2644,"name":"销售订单审批","permission":"erp:sale-order:update-status","parent_id":2638,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2645,"name":"财务管理","permission":"","parent_id":2563,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2646,"name":"结算账户","permission":"","parent_id":2645,"type":2,"component":"erp/finance/account/index","component_name":"ErpAccount","status":0,"deleted":0},{"id":2647,"name":"结算账户查询","permission":"erp:account:query","parent_id":2646,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2648,"name":"结算账户创建","permission":"erp:account:create","parent_id":2646,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2649,"name":"结算账户更新","permission":"erp:account:update","parent_id":2646,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2650,"name":"结算账户删除","permission":"erp:account:delete","parent_id":2646,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2651,"name":"结算账户导出","permission":"erp:account:export","parent_id":2646,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2666,"name":"采购订单","permission":"","parent_id":2602,"type":2,"component":"erp/purchase/order/index","component_name":"ErpPurchaseOrder","status":0,"deleted":0},{"id":2667,"name":"采购订单查询","permission":"erp:purchase-order:query","parent_id":2666,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2668,"name":"采购订单创建","permission":"erp:purchase-order:create","parent_id":2666,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2669,"name":"采购订单更新","permission":"erp:purchase-order:update","parent_id":2666,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2670,"name":"采购订单删除","permission":"erp:purchase-order:delete","parent_id":2666,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2671,"name":"采购订单导出","permission":"erp:purchase-order:export","parent_id":2666,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2672,"name":"采购订单审批","permission":"erp:purchase-order:update-status","parent_id":2666,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2687,"name":"付款单","permission":"","parent_id":2645,"type":2,"component":"erp/finance/payment/index","component_name":"ErpFinancePayment","status":0,"deleted":0},{"id":2688,"name":"付款单查询","permission":"erp:finance-payment:query","parent_id":2687,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2689,"name":"付款单创建","permission":"erp:finance-payment:create","parent_id":2687,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2690,"name":"付款单更新","permission":"erp:finance-payment:update","parent_id":2687,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2691,"name":"付款单删除","permission":"erp:finance-payment:delete","parent_id":2687,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2692,"name":"付款单导出","permission":"erp:finance-payment:export","parent_id":2687,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2693,"name":"付款单审批","permission":"erp:finance-payment:update-status","parent_id":2687,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2694,"name":"收款单","permission":"","parent_id":2645,"type":2,"component":"erp/finance/receipt/index","component_name":"ErpFinanceReceipt","status":0,"deleted":0},{"id":2695,"name":"收款单查询","permission":"erp:finance-receipt:query","parent_id":2694,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2696,"name":"收款单创建","permission":"erp:finance-receipt:create","parent_id":2694,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2697,"name":"收款单更新","permission":"erp:finance-receipt:update","parent_id":2694,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2698,"name":"收款单删除","permission":"erp:finance-receipt:delete","parent_id":2694,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2699,"name":"收款单导出","permission":"erp:finance-receipt:export","parent_id":2694,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2700,"name":"收款单审批","permission":"erp:finance-receipt:update-status","parent_id":2694,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2701,"name":"待办事项","permission":"","parent_id":2617,"type":2,"component":"crm/backlog/index","component_name":"CrmBacklog","status":0,"deleted":0},{"id":2702,"name":"ERP é¦–页","permission":"erp:statistics:query","parent_id":2563,"type":2,"component":"erp/home/index.vue","component_name":"ErpHome","status":0,"deleted":0},{"id":2703,"name":"商机状态配置","permission":"","parent_id":2524,"type":2,"component":"crm/business/status/index","component_name":"CrmBusinessStatus","status":0,"deleted":0},{"id":2704,"name":"商机状态查询","permission":"crm:business-status:query","parent_id":2703,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2705,"name":"商机状态创建","permission":"crm:business-status:create","parent_id":2703,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2706,"name":"商机状态更新","permission":"crm:business-status:update","parent_id":2703,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2707,"name":"商机状态删除","permission":"crm:business-status:delete","parent_id":2703,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2708,"name":"合同配置","permission":"","parent_id":2524,"type":2,"component":"crm/contract/config/index","component_name":"CrmContractConfig","status":0,"deleted":0},{"id":2709,"name":"客户公海配置查询","permission":"crm:customer-pool-config:query","parent_id":2516,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2710,"name":"合同配置更新","permission":"crm:contract-config:update","parent_id":2708,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2711,"name":"合同配置查询","permission":"crm:contract-config:query","parent_id":2708,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2712,"name":"客户分析","permission":"crm:statistics-customer:query","parent_id":2560,"type":2,"component":"crm/statistics/customer/index.vue","component_name":"CrmStatisticsCustomer","status":0,"deleted":0},{"id":2713,"name":"抄送我的","permission":"bpm:process-instance-cc:query","parent_id":1200,"type":2,"component":"bpm/task/copy/index","component_name":"BpmProcessInstanceCopy","status":0,"deleted":0},{"id":2714,"name":"流程分类","permission":"","parent_id":1186,"type":2,"component":"bpm/category/index","component_name":"BpmCategory","status":0,"deleted":0},{"id":2715,"name":"分类查询","permission":"bpm:category:query","parent_id":2714,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2716,"name":"分类创建","permission":"bpm:category:create","parent_id":2714,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2717,"name":"分类更新","permission":"bpm:category:update","parent_id":2714,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2718,"name":"分类删除","permission":"bpm:category:delete","parent_id":2714,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2720,"name":"发起流程","permission":"","parent_id":1200,"type":2,"component":"bpm/processInstance/create/index","component_name":"BpmProcessInstanceCreate","status":0,"deleted":0},{"id":2721,"name":"流程实例","permission":"","parent_id":1186,"type":2,"component":"bpm/processInstance/manager/index","component_name":"BpmProcessInstanceManager","status":0,"deleted":0},{"id":2722,"name":"流程实例的查询(管理员)","permission":"bpm:process-instance:manager-query","parent_id":2721,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2723,"name":"流程实例的取消(管理员)","permission":"bpm:process-instance:cancel-by-admin","parent_id":2721,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2724,"name":"流程任务","permission":"","parent_id":1186,"type":2,"component":"bpm/task/manager/index","component_name":"BpmManagerTask","status":0,"deleted":0},{"id":2725,"name":"流程任务的查询(管理员)","permission":"bpm:task:manager-query","parent_id":2724,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2726,"name":"流程监听器","permission":"","parent_id":1186,"type":2,"component":"bpm/processListener/index","component_name":"BpmProcessListener","status":0,"deleted":0},{"id":2727,"name":"流程监听器查询","permission":"bpm:process-listener:query","parent_id":2726,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2728,"name":"流程监听器创建","permission":"bpm:process-listener:create","parent_id":2726,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2729,"name":"流程监听器更新","permission":"bpm:process-listener:update","parent_id":2726,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2730,"name":"流程监听器删除","permission":"bpm:process-listener:delete","parent_id":2726,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2731,"name":"流程表达式","permission":"","parent_id":1186,"type":2,"component":"bpm/processExpression/index","component_name":"BpmProcessExpression","status":0,"deleted":0},{"id":2732,"name":"流程表达式查询","permission":"bpm:process-expression:query","parent_id":2731,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2733,"name":"流程表达式创建","permission":"bpm:process-expression:create","parent_id":2731,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2734,"name":"流程表达式更新","permission":"bpm:process-expression:update","parent_id":2731,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2735,"name":"流程表达式删除","permission":"bpm:process-expression:delete","parent_id":2731,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2736,"name":"员工业绩","permission":"crm:statistics-performance:query","parent_id":2560,"type":2,"component":"crm/statistics/performance/index","component_name":"CrmStatisticsPerformance","status":0,"deleted":0},{"id":2737,"name":"客户画像","permission":"crm:statistics-portrait:query","parent_id":2560,"type":2,"component":"crm/statistics/portrait/index","component_name":"CrmStatisticsPortrait","status":0,"deleted":0},{"id":2738,"name":"销售漏斗","permission":"crm:statistics-funnel:query","parent_id":2560,"type":2,"component":"crm/statistics/funnel/index","component_name":"CrmStatisticsFunnel","status":0,"deleted":0},{"id":2739,"name":"消息中心","permission":"","parent_id":1,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2740,"name":"监控中心","permission":"","parent_id":2,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2741,"name":"领取公海客户","permission":"crm:customer:receive","parent_id":2546,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2742,"name":"分配公海客户","permission":"crm:customer:distribute","parent_id":2546,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2755,"name":"删除项目","permission":"report:go-view-project:delete","parent_id":2153,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2758,"name":"AI å¤§æ¨¡åž‹","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":1,"deleted":0},{"id":2759,"name":"AI å¯¹è¯","permission":"","parent_id":2758,"type":2,"component":"ai/chat/index/index.vue","component_name":"AiChat","status":0,"deleted":0},{"id":2760,"name":"控制台","permission":"","parent_id":2758,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":2761,"name":"API å¯†é’¥","permission":"","parent_id":2760,"type":2,"component":"ai/model/apiKey/index.vue","component_name":"AiApiKey","status":0,"deleted":0},{"id":2762,"name":"API å¯†é’¥æŸ¥è¯¢","permission":"ai:api-key:query","parent_id":2761,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2763,"name":"API å¯†é’¥åˆ›å»º","permission":"ai:api-key:create","parent_id":2761,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2764,"name":"API å¯†é’¥æ›´æ–°","permission":"ai:api-key:update","parent_id":2761,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2765,"name":"API å¯†é’¥åˆ é™¤","permission":"ai:api-key:delete","parent_id":2761,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2767,"name":"模型配置","permission":"","parent_id":2760,"type":2,"component":"ai/model/model/index.vue","component_name":"AiModel","status":0,"deleted":0},{"id":2768,"name":"聊天模型查询","permission":"ai:model:query","parent_id":2767,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2769,"name":"聊天模型创建","permission":"ai:model:create","parent_id":2767,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2770,"name":"聊天模型更新","permission":"ai:model:update","parent_id":2767,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2771,"name":"聊天模型删除","permission":"ai:model:delete","parent_id":2767,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2773,"name":"聊天角色","permission":"","parent_id":2760,"type":2,"component":"ai/model/chatRole/index.vue","component_name":"AiChatRole","status":0,"deleted":0},{"id":2774,"name":"聊天角色查询","permission":"ai:chat-role:query","parent_id":2773,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2775,"name":"聊天角色创建","permission":"ai:chat-role:create","parent_id":2773,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2776,"name":"聊天角色更新","permission":"ai:chat-role:update","parent_id":2773,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2777,"name":"聊天角色删除","permission":"ai:chat-role:delete","parent_id":2773,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2778,"name":"聊天管理","permission":"","parent_id":2760,"type":2,"component":"ai/chat/manager/index.vue","component_name":"AiChatManager","status":0,"deleted":0},{"id":2779,"name":"会话查询","permission":"ai:chat-conversation:query","parent_id":2778,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2780,"name":"会话删除","permission":"ai:chat-conversation:delete","parent_id":2778,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2781,"name":"消息查询","permission":"ai:chat-message:query","parent_id":2778,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2782,"name":"消息删除","permission":"ai:chat-message:delete","parent_id":2778,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2783,"name":"AI ç»˜ç”»","permission":"","parent_id":2758,"type":2,"component":"ai/image/index/index.vue","component_name":"AiImage","status":0,"deleted":0},{"id":2784,"name":"绘画管理","permission":"","parent_id":2760,"type":2,"component":"ai/image/manager/index.vue","component_name":"AiImageManager","status":0,"deleted":0},{"id":2785,"name":"绘画查询","permission":"ai:image:query","parent_id":2784,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2786,"name":"绘画删除","permission":"ai:image:delete","parent_id":2784,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2787,"name":"绘图更新","permission":"ai:image:update","parent_id":2784,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2788,"name":"音乐管理","permission":"","parent_id":2760,"type":2,"component":"ai/music/manager/index.vue","component_name":"AiMusicManager","status":0,"deleted":0},{"id":2789,"name":"音乐查询","permission":"ai:music:query","parent_id":2788,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2790,"name":"音乐更新","permission":"ai:music:update","parent_id":2788,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2791,"name":"音乐删除","permission":"ai:music:delete","parent_id":2788,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2792,"name":"AI å†™ä½œ","permission":"","parent_id":2758,"type":2,"component":"ai/write/index/index.vue","component_name":"AiWrite","status":0,"deleted":0},{"id":2793,"name":"写作管理","permission":"","parent_id":2760,"type":2,"component":"ai/write/manager/index.vue","component_name":"AiWriteManager","status":0,"deleted":0},{"id":2794,"name":"AI å†™ä½œæŸ¥è¯¢","permission":"ai:write:query","parent_id":2793,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2795,"name":"AI å†™ä½œåˆ é™¤","permission":"ai:write:delete","parent_id":2793,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2796,"name":"AI éŸ³ä¹","permission":"","parent_id":2758,"type":2,"component":"ai/music/index/index.vue","component_name":"AiMusic","status":0,"deleted":0},{"id":2798,"name":"AI æ€ç»´å¯¼å›¾","permission":"","parent_id":2758,"type":2,"component":"ai/mindmap/index/index.vue","component_name":"AiMindMap","status":0,"deleted":0},{"id":2799,"name":"导图管理","permission":"","parent_id":2760,"type":2,"component":"ai/mindmap/manager/index","component_name":"AiMindMapManager","status":0,"deleted":0},{"id":2800,"name":"思维导图查询","permission":"ai:mind-map:query","parent_id":2799,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2801,"name":"思维导图删除","permission":"ai:mind-map:delete","parent_id":2799,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2913,"name":"流程清理","permission":"bpm:model:clean","parent_id":1193,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":2915,"name":"AI çŸ¥è¯†åº“","permission":"","parent_id":2758,"type":2,"component":"ai/knowledge/knowledge/index","component_name":"AiKnowledge","status":0,"deleted":0},{"id":2916,"name":"AI çŸ¥è¯†åº“查询","permission":"ai:knowledge:query","parent_id":2915,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2917,"name":"AI çŸ¥è¯†åº“创建","permission":"ai:knowledge:create","parent_id":2915,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2918,"name":"AI çŸ¥è¯†åº“æ›´æ–°","permission":"ai:knowledge:update","parent_id":2915,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2919,"name":"AI çŸ¥è¯†åº“删除","permission":"ai:knowledge:delete","parent_id":2915,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2920,"name":"工具管理","permission":"","parent_id":2760,"type":2,"component":"ai/model/tool/index.vue","component_name":"AiTool","status":0,"deleted":0},{"id":2921,"name":"工具查询","permission":"ai:tool:query","parent_id":2920,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2922,"name":"工具创建","permission":"ai:tool:create","parent_id":2920,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2923,"name":"工具更新","permission":"ai:tool:update","parent_id":2920,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":2924,"name":"工具删除","permission":"ai:tool:delete","parent_id":2920,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5000,"name":"AI å·¥ä½œæµ","permission":"","parent_id":2758,"type":2,"component":"ai/workflow/index.vue","component_name":"AiWorkflow","status":0,"deleted":0},{"id":5001,"name":"AI å·¥ä½œæµæŸ¥è¯¢","permission":"ai:workflow:query","parent_id":5000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5002,"name":"AI å·¥ä½œæµåˆ›å»º","permission":"ai:workflow:create","parent_id":5000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5003,"name":"AI å·¥ä½œæµæ›´æ–°","permission":"ai:workflow:update","parent_id":5000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5004,"name":"AI å·¥ä½œæµåˆ é™¤","permission":"ai:workflow:delete","parent_id":5000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5005,"name":"AI å·¥ä½œæµæµ‹è¯•","permission":"ai:workflow:test","parent_id":5000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5009,"name":"仪表盘设计器","permission":"","parent_id":1281,"type":2,"component":"report/jmreport/bi","component_name":"JimuBI","status":0,"deleted":0},{"id":5010,"name":"租户切换","permission":"system:tenant:visit","parent_id":1138,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5100,"name":"生产管控","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5101,"name":"生产基础数据","permission":"","parent_id":5100,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5110,"name":"物料分类","permission":"","parent_id":602455,"type":2,"component":"mes/md/item/type/index","component_name":"MesMdItemType","status":0,"deleted":0},{"id":5111,"name":"分类查询","permission":"mes:md-item-type:query","parent_id":5110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5112,"name":"分类创建","permission":"mes:md-item-type:create","parent_id":5110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5113,"name":"分类更新","permission":"mes:md-item-type:update","parent_id":5110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5114,"name":"分类删除","permission":"mes:md-item-type:delete","parent_id":5110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5120,"name":"生产物料管理","permission":"","parent_id":5101,"type":2,"component":"mes/md/item/index","component_name":"MesMdItem","status":0,"deleted":0},{"id":5121,"name":"物料查询","permission":"mes:md-item:query","parent_id":5120,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5122,"name":"物料创建","permission":"mes:md-item:create","parent_id":5120,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5123,"name":"物料更新","permission":"mes:md-item:update","parent_id":5120,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5124,"name":"物料删除","permission":"mes:md-item:delete","parent_id":5120,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5125,"name":"物料导出","permission":"mes:md-item:export","parent_id":5120,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5126,"name":"物料导入","permission":"mes:md-item:import","parent_id":5120,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5160,"name":"车间设置","permission":"","parent_id":5101,"type":2,"component":"mes/md/workstation/workshop/index","component_name":"MesMdWorkshop","status":0,"deleted":0},{"id":5161,"name":"车间查询","permission":"mes:md-workshop:query","parent_id":5160,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5162,"name":"车间创建","permission":"mes:md-workshop:create","parent_id":5160,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5163,"name":"车间更新","permission":"mes:md-workshop:update","parent_id":5160,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5164,"name":"车间删除","permission":"mes:md-workshop:delete","parent_id":5160,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5170,"name":"工作站设置","permission":"","parent_id":5101,"type":2,"component":"mes/md/workstation/index","component_name":"MesMdWorkstation","status":0,"deleted":0},{"id":5171,"name":"工位查询","permission":"mes:md-workstation:query","parent_id":5170,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5172,"name":"工位创建","permission":"mes:md-workstation:create","parent_id":5170,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5173,"name":"工位更新","permission":"mes:md-workstation:update","parent_id":5170,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5174,"name":"工位删除","permission":"mes:md-workstation:delete","parent_id":5170,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5175,"name":"工位导出","permission":"mes:md-workstation:export","parent_id":5170,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5190,"name":"编码规则","permission":"","parent_id":1,"type":2,"component":"mes/md/autocode/index","component_name":"MesAutoCode","status":0,"deleted":0},{"id":5191,"name":"编码规则查询","permission":"mes:auto-code-rule:query","parent_id":5190,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5192,"name":"编码规则创建","permission":"mes:auto-code-rule:create","parent_id":5190,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5193,"name":"编码规则更新","permission":"mes:auto-code-rule:update","parent_id":5190,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5194,"name":"编码规则删除","permission":"mes:auto-code-rule:delete","parent_id":5190,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5195,"name":"编码规则导出","permission":"mes:auto-code-rule:export","parent_id":5190,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5200,"name":"排班管理","permission":"","parent_id":5100,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5220,"name":"班组设置","permission":"","parent_id":5200,"type":2,"component":"mes/cal/team/index","component_name":"MesCalTeam","status":0,"deleted":0},{"id":5221,"name":"班组查询","permission":"mes:cal-team:query","parent_id":5220,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5222,"name":"班组创建","permission":"mes:cal-team:create","parent_id":5220,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5223,"name":"班组更新","permission":"mes:cal-team:update","parent_id":5220,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5224,"name":"班组删除","permission":"mes:cal-team:delete","parent_id":5220,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5225,"name":"班组导出","permission":"mes:cal-team:export","parent_id":5220,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5230,"name":"排班计划","permission":"","parent_id":5200,"type":2,"component":"mes/cal/plan/index","component_name":"MesCalPlan","status":0,"deleted":0},{"id":5231,"name":"排班计划查询","permission":"mes:cal-plan:query","parent_id":5230,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5232,"name":"排班计划创建","permission":"mes:cal-plan:create","parent_id":5230,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5233,"name":"排班计划更新","permission":"mes:cal-plan:update","parent_id":5230,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5234,"name":"排班计划删除","permission":"mes:cal-plan:delete","parent_id":5230,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5235,"name":"排班计划导出","permission":"mes:cal-plan:export","parent_id":5230,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5250,"name":"节假日设置","permission":"","parent_id":5200,"type":2,"component":"mes/cal/holiday/index","component_name":"MesCalHoliday","status":0,"deleted":0},{"id":5251,"name":"假期查询","permission":"mes:cal-holiday:query","parent_id":5250,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5252,"name":"假期创建","permission":"mes:cal-holiday:create","parent_id":5250,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5253,"name":"假期更新","permission":"mes:cal-holiday:update","parent_id":5250,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5254,"name":"假期删除","permission":"mes:cal-holiday:delete","parent_id":5250,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5255,"name":"假期导出","permission":"mes:cal-holiday:export","parent_id":5250,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5260,"name":"排班日历","permission":"","parent_id":5200,"type":2,"component":"mes/cal/calendar/index","component_name":"MesCalCalendar","status":0,"deleted":0},{"id":5261,"name":"排班日历查询","permission":"mes:cal-team-shift:query","parent_id":5260,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5300,"name":"设备管理","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5310,"name":"设备类型","permission":"","parent_id":5300,"type":2,"component":"mes/dv/machinery/type/index","component_name":"MesDvMachineryType","status":0,"deleted":0},{"id":5311,"name":"类型查询","permission":"mes:dv-machinery-type:query","parent_id":5310,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5312,"name":"类型创建","permission":"mes:dv-machinery-type:create","parent_id":5310,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5313,"name":"类型更新","permission":"mes:dv-machinery-type:update","parent_id":5310,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5314,"name":"类型删除","permission":"mes:dv-machinery-type:delete","parent_id":5310,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5315,"name":"类型导出","permission":"mes:dv-machinery-type:export","parent_id":5310,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5320,"name":"设备台账","permission":"","parent_id":5300,"type":2,"component":"mes/dv/machinery/index","component_name":"MesDvMachinery","status":0,"deleted":0},{"id":5321,"name":"设备查询","permission":"mes:dv-machinery:query","parent_id":5320,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5322,"name":"设备创建","permission":"mes:dv-machinery:create","parent_id":5320,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5323,"name":"设备更新","permission":"mes:dv-machinery:update","parent_id":5320,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5324,"name":"设备删除","permission":"mes:dv-machinery:delete","parent_id":5320,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5325,"name":"设备导出","permission":"mes:dv-machinery:export","parent_id":5320,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5326,"name":"设备导入","permission":"mes:dv-machinery:import","parent_id":5320,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5330,"name":"点检保养项目","permission":"","parent_id":5300,"type":2,"component":"mes/dv/subject/index","component_name":"MesDvSubject","status":0,"deleted":0},{"id":5331,"name":"项目查询","permission":"mes:dv-subject:query","parent_id":5330,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5332,"name":"项目创建","permission":"mes:dv-subject:create","parent_id":5330,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5333,"name":"项目更新","permission":"mes:dv-subject:update","parent_id":5330,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5334,"name":"项目删除","permission":"mes:dv-subject:delete","parent_id":5330,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5335,"name":"项目导出","permission":"mes:dv-subject:export","parent_id":5330,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5340,"name":"保养记录","permission":"","parent_id":5300,"type":2,"component":"mes/dv/maintenrecord/index","component_name":"MesDvMaintenRecord","status":0,"deleted":0},{"id":5341,"name":"保养记录查询","permission":"mes:dv-mainten-record:query","parent_id":5340,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5342,"name":"保养记录创建","permission":"mes:dv-mainten-record:create","parent_id":5340,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5343,"name":"保养记录更新","permission":"mes:dv-mainten-record:update","parent_id":5340,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5344,"name":"保养记录删除","permission":"mes:dv-mainten-record:delete","parent_id":5340,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5345,"name":"保养记录导出","permission":"mes:dv-mainten-record:export","parent_id":5340,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5350,"name":"点检保养方案","permission":"","parent_id":5300,"type":2,"component":"mes/dv/checkplan/index","component_name":"MesDvCheckPlan","status":0,"deleted":0},{"id":5351,"name":"方案查询","permission":"mes:dv-check-plan:query","parent_id":5350,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5352,"name":"方案创建","permission":"mes:dv-check-plan:create","parent_id":5350,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5353,"name":"方案更新","permission":"mes:dv-check-plan:update","parent_id":5350,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5354,"name":"方案删除","permission":"mes:dv-check-plan:delete","parent_id":5350,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5355,"name":"方案导出","permission":"mes:dv-check-plan:export","parent_id":5350,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5360,"name":"点检记录","permission":"","parent_id":5300,"type":2,"component":"mes/dv/checkrecord/index","component_name":"MesDvCheckRecord","status":0,"deleted":0},{"id":5361,"name":"点检记录查询","permission":"mes:dv-check-record:query","parent_id":5360,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5362,"name":"点检记录创建","permission":"mes:dv-check-record:create","parent_id":5360,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5363,"name":"点检记录更新","permission":"mes:dv-check-record:update","parent_id":5360,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5364,"name":"点检记录删除","permission":"mes:dv-check-record:delete","parent_id":5360,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5365,"name":"点检记录导出","permission":"mes:dv-check-record:export","parent_id":5360,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5366,"name":"工单导出","permission":"mes:dv-repair:export","parent_id":5360,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5370,"name":"维修单","permission":"","parent_id":5300,"type":2,"component":"mes/dv/repair/index","component_name":"MesDvRepair","status":0,"deleted":0},{"id":5371,"name":"工单查询","permission":"mes:dv-repair:query","parent_id":5370,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5372,"name":"工单创建","permission":"mes:dv-repair:create","parent_id":5370,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5373,"name":"工单更新","permission":"mes:dv-repair:update","parent_id":5370,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5374,"name":"工单删除","permission":"mes:dv-repair:delete","parent_id":5370,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5375,"name":"工单导出","permission":"mes:dv-repair:export","parent_id":5370,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5380,"name":"计量器具","permission":"","parent_id":5300,"type":2,"component":"mes/dv/metering/index","component_name":"MesDvMetering","status":0,"deleted":0},{"id":5381,"name":"计量器具查询","permission":"mes:dv-metering:query","parent_id":5380,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5382,"name":"计量器具创建","permission":"mes:dv-metering:create","parent_id":5380,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5383,"name":"计量器具更新","permission":"mes:dv-metering:update","parent_id":5380,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5384,"name":"计量器具删除","permission":"mes:dv-metering:delete","parent_id":5380,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5385,"name":"计量器具导出","permission":"mes:dv-metering:export","parent_id":5380,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5386,"name":"计量检测记录","permission":"","parent_id":5300,"type":2,"component":"mes/dv/meteringcheck/index","component_name":"MesDvMeteringCheck","status":0,"deleted":0},{"id":5387,"name":"检测记录查询","permission":"mes:dv-metering-check:query","parent_id":5386,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5388,"name":"检测记录创建","permission":"mes:dv-metering-check:create","parent_id":5386,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5389,"name":"检测记录更新","permission":"mes:dv-metering-check:update","parent_id":5386,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5390,"name":"检测记录删除","permission":"mes:dv-metering-check:delete","parent_id":5386,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5391,"name":"检测记录导出","permission":"mes:dv-metering-check:export","parent_id":5386,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5400,"name":"工具管理","permission":"","parent_id":5100,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5410,"name":"工具类型设置","permission":"","parent_id":5400,"type":2,"component":"mes/tm/tool/type/index","component_name":"MesTmToolType","status":0,"deleted":0},{"id":5411,"name":"类型查询","permission":"mes:tm-tool-type:query","parent_id":5410,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5412,"name":"类型创建","permission":"mes:tm-tool-type:create","parent_id":5410,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5413,"name":"类型更新","permission":"mes:tm-tool-type:update","parent_id":5410,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5414,"name":"类型删除","permission":"mes:tm-tool-type:delete","parent_id":5410,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5415,"name":"类型导出","permission":"mes:tm-tool-type:export","parent_id":5410,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5420,"name":"工装夹具台账","permission":"","parent_id":5400,"type":2,"component":"mes/tm/tool/index","component_name":"MesTmTool","status":0,"deleted":0},{"id":5421,"name":"工具查询","permission":"mes:tm-tool:query","parent_id":5420,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5422,"name":"工具创建","permission":"mes:tm-tool:create","parent_id":5420,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5423,"name":"工具更新","permission":"mes:tm-tool:update","parent_id":5420,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5424,"name":"工具删除","permission":"mes:tm-tool:delete","parent_id":5420,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5425,"name":"工具导出","permission":"mes:tm-tool:export","parent_id":5420,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5500,"name":"质量管理","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5510,"name":"常见缺陷","permission":"","parent_id":5500,"type":2,"component":"mes/qc/defect/index","component_name":"MesQcDefect","status":0,"deleted":0},{"id":5511,"name":"缺陷类型查询","permission":"mes:qc-defect:query","parent_id":5510,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5512,"name":"缺陷类型创建","permission":"mes:qc-defect:create","parent_id":5510,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5513,"name":"缺陷类型更新","permission":"mes:qc-defect:update","parent_id":5510,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5514,"name":"缺陷类型删除","permission":"mes:qc-defect:delete","parent_id":5510,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5515,"name":"缺陷类型导出","permission":"mes:qc-defect:export","parent_id":5510,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5530,"name":"生产订单","permission":"","parent_id":5700,"type":2,"component":"mes/pro/workorder/index","component_name":"MesProWorkOrder","status":0,"deleted":0},{"id":5531,"name":"工单查询","permission":"mes:pro-work-order:query","parent_id":5530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5532,"name":"工单创建","permission":"mes:pro-work-order:create","parent_id":5530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5533,"name":"工单更新","permission":"mes:pro-work-order:update","parent_id":5530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5534,"name":"工单删除","permission":"mes:pro-work-order:delete","parent_id":5530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5535,"name":"工单导出","permission":"mes:pro-work-order:export","parent_id":5530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5540,"name":"生产排产","permission":"","parent_id":5700,"type":2,"component":"mes/pro/task/index","component_name":"MesProTask","status":0,"deleted":0},{"id":5541,"name":"排产查询","permission":"mes:pro-task:query","parent_id":5540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5542,"name":"排产创建","permission":"mes:pro-task:create","parent_id":5540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5543,"name":"排产更新","permission":"mes:pro-task:update","parent_id":5540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5544,"name":"排产删除","permission":"mes:pro-task:delete","parent_id":5540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5545,"name":"排产导出","permission":"mes:pro-task:export","parent_id":5540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5550,"name":"生产报工","permission":"","parent_id":5700,"type":2,"component":"mes/pro/feedback/index","component_name":"MesProFeedback","status":0,"deleted":0},{"id":5551,"name":"报工查询","permission":"mes:pro-feedback:query","parent_id":5550,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5552,"name":"报工创建","permission":"mes:pro-feedback:create","parent_id":5550,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5553,"name":"报工更新","permission":"mes:pro-feedback:update","parent_id":5550,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5554,"name":"报工删除","permission":"mes:pro-feedback:delete","parent_id":5550,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5555,"name":"报工导出","permission":"mes:pro-feedback:export","parent_id":5550,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5560,"name":"工序流转","permission":"","parent_id":5700,"type":2,"component":"mes/pro/card/index","component_name":"MesProCard","status":1,"deleted":0},{"id":5561,"name":"流转卡查询","permission":"mes:pro-card:query","parent_id":5560,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5562,"name":"流转卡创建","permission":"mes:pro-card:create","parent_id":5560,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5563,"name":"流转卡更新","permission":"mes:pro-card:update","parent_id":5560,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5564,"name":"流转卡删除","permission":"mes:pro-card:delete","parent_id":5560,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5565,"name":"流转卡导出","permission":"mes:pro-card:export","parent_id":5560,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5566,"name":"流转卡完成","permission":"mes:pro-card:finish","parent_id":5560,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5610,"name":"检测项设置","permission":"","parent_id":5500,"type":2,"component":"mes/qc/indicator/index","component_name":"MesQcIndicator","status":0,"deleted":0},{"id":5611,"name":"质检指标查询","permission":"mes:qc-indicator:query","parent_id":5610,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5612,"name":"质检指标创建","permission":"mes:qc-indicator:create","parent_id":5610,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5613,"name":"质检指标更新","permission":"mes:qc-indicator:update","parent_id":5610,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5614,"name":"质检指标删除","permission":"mes:qc-indicator:delete","parent_id":5610,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5615,"name":"质检指标导出","permission":"mes:qc-indicator:export","parent_id":5610,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5630,"name":"质检方案","permission":"","parent_id":5500,"type":2,"component":"mes/qc/template/index","component_name":"MesQcTemplate","status":0,"deleted":0},{"id":5631,"name":"质检方案查询","permission":"mes:qc-template:query","parent_id":5630,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5632,"name":"质检方案创建","permission":"mes:qc-template:create","parent_id":5630,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5633,"name":"质检方案更新","permission":"mes:qc-template:update","parent_id":5630,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5634,"name":"质检方案删除","permission":"mes:qc-template:delete","parent_id":5630,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5635,"name":"质检方案导出","permission":"mes:qc-template:export","parent_id":5630,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5640,"name":"来料检验","permission":"","parent_id":5500,"type":2,"component":"mes/qc/iqc/index","component_name":"MesQcIqc","status":0,"deleted":0},{"id":5641,"name":"来料检验查询","permission":"mes:qc-iqc:query","parent_id":5640,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5642,"name":"来料检验创建","permission":"mes:qc-iqc:create","parent_id":5640,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5643,"name":"来料检验更新","permission":"mes:qc-iqc:update","parent_id":5640,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5644,"name":"来料检验删除","permission":"mes:qc-iqc:delete","parent_id":5640,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5645,"name":"来料检验导出","permission":"mes:qc-iqc:export","parent_id":5640,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5650,"name":"过程检验","permission":"","parent_id":5500,"type":2,"component":"mes/qc/ipqc/index","component_name":"MesQcIpqc","status":0,"deleted":0},{"id":5651,"name":"过程检验查询","permission":"mes:qc-ipqc:query","parent_id":5650,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5652,"name":"过程检验创建","permission":"mes:qc-ipqc:create","parent_id":5650,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5653,"name":"过程检验更新","permission":"mes:qc-ipqc:update","parent_id":5650,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5654,"name":"过程检验删除","permission":"mes:qc-ipqc:delete","parent_id":5650,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5655,"name":"过程检验导出","permission":"mes:qc-ipqc:export","parent_id":5650,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5660,"name":"出货检验","permission":"","parent_id":5500,"type":2,"component":"mes/qc/oqc/index","component_name":"MesQcOqc","status":0,"deleted":0},{"id":5661,"name":"出货检验查询","permission":"mes:qc-oqc:query","parent_id":5660,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5662,"name":"出货检验创建","permission":"mes:qc-oqc:create","parent_id":5660,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5663,"name":"出货检验更新","permission":"mes:qc-oqc:update","parent_id":5660,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5664,"name":"出货检验删除","permission":"mes:qc-oqc:delete","parent_id":5660,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5665,"name":"出货检验导出","permission":"mes:qc-oqc:export","parent_id":5660,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5670,"name":"退货检验","permission":"","parent_id":5500,"type":2,"component":"mes/qc/rqc/index","component_name":"MesQcRqc","status":0,"deleted":0},{"id":5671,"name":"退货检验查询","permission":"mes:qc-rqc:query","parent_id":5670,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5672,"name":"退货检验创建","permission":"mes:qc-rqc:create","parent_id":5670,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5673,"name":"退货检验更新","permission":"mes:qc-rqc:update","parent_id":5670,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5674,"name":"退货检验删除","permission":"mes:qc-rqc:delete","parent_id":5670,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5675,"name":"退货检验导出","permission":"mes:qc-rqc:export","parent_id":5670,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5680,"name":"待检任务","permission":"","parent_id":5500,"type":2,"component":"mes/qc/pendinginspect/index","component_name":"MesQcPendingInspect","status":0,"deleted":0},{"id":5681,"name":"待检任务查询","permission":"mes:qc-pending-inspect:query","parent_id":5680,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5690,"name":"不合格品处理","permission":"","parent_id":5500,"type":2,"component":"mes/qc/ncr/index","component_name":"MesQcNcr","status":0,"deleted":0},{"id":5691,"name":"NCR查询","permission":"mes:qc-ncr:query","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5692,"name":"NCR创建","permission":"mes:qc-ncr:create","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5693,"name":"NCR更新","permission":"mes:qc-ncr:update","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5694,"name":"NCR删除","permission":"mes:qc-ncr:delete","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5695,"name":"NCR导出","permission":"mes:qc-ncr:export","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5696,"name":"NCR评审","permission":"mes:qc-ncr:review","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5697,"name":"NCR处置","permission":"mes:qc-ncr:dispose","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5698,"name":"NCR关闭","permission":"mes:qc-ncr:close","parent_id":5690,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5700,"name":"生产管理","permission":"","parent_id":5100,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5710,"name":"工序设置","permission":"","parent_id":6809,"type":2,"component":"mes/process-design/process/index","component_name":"MesProcessDesignProcess","status":0,"deleted":0},{"id":5711,"name":"工序查询","permission":"mes:pro-process:query","parent_id":5710,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5712,"name":"工序创建","permission":"mes:pro-process:create","parent_id":5710,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5713,"name":"工序更新","permission":"mes:pro-process:update","parent_id":5710,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5714,"name":"工序删除","permission":"mes:pro-process:delete","parent_id":5710,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5715,"name":"工序导出","permission":"mes:pro-process:export","parent_id":5710,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5720,"name":"工艺路线","permission":"","parent_id":6809,"type":2,"component":"mes/process-design/route/index","component_name":"MesProcessDesignRoute","status":0,"deleted":0},{"id":5721,"name":"工艺路线查询","permission":"mes:pro-route:query","parent_id":5720,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5722,"name":"工艺路线创建","permission":"mes:pro-route:create","parent_id":5720,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5723,"name":"工艺路线更新","permission":"mes:pro-route:update","parent_id":5720,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5724,"name":"工艺路线删除","permission":"mes:pro-route:delete","parent_id":5720,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5725,"name":"工艺路线导出","permission":"mes:pro-route:export","parent_id":5720,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5750,"name":"安灯呼叫","permission":"","parent_id":5700,"type":2,"component":"mes/pro/andon/record/index","component_name":"MesProAndonRecord","status":1,"deleted":0},{"id":5751,"name":"安灯记录查询","permission":"mes:pro-andon-record:query","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5752,"name":"安灯记录创建","permission":"mes:pro-andon-record:create","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5753,"name":"安灯记录更新","permission":"mes:pro-andon-record:update","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5754,"name":"安灯记录删除","permission":"mes:pro-andon-record:delete","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5755,"name":"安灯记录导出","permission":"mes:pro-andon-record:export","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5756,"name":"安灯配置查询","permission":"mes:pro-andon-config:query","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5757,"name":"安灯配置创建","permission":"mes:pro-andon-config:create","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5758,"name":"安灯配置更新","permission":"mes:pro-andon-config:update","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5759,"name":"安灯配置删除","permission":"mes:pro-andon-config:delete","parent_id":5750,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5780,"name":"仓储物流","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5781,"name":"仓库设置","permission":"","parent_id":5780,"type":2,"component":"wls/warehouse/index","component_name":"MesWmWarehouse","status":0,"deleted":0},{"id":5782,"name":"仓库查询","permission":"mes:wm-warehouse:query","parent_id":5781,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5783,"name":"仓库创建","permission":"mes:wm-warehouse:create","parent_id":5781,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5784,"name":"仓库更新","permission":"mes:wm-warehouse:update","parent_id":5781,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5785,"name":"仓库删除","permission":"mes:wm-warehouse:delete","parent_id":5781,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5786,"name":"库存现有量","permission":"","parent_id":5780,"type":2,"component":"wls/materialstock/index","component_name":"MesWmMaterialStock","status":0,"deleted":0},{"id":5787,"name":"库存台账查询","permission":"mes:wm-material-stock:query","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5788,"name":"库存台账创建","permission":"mes:wm-material-stock:create","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5789,"name":"库存台账更新","permission":"mes:wm-material-stock:update","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5790,"name":"库存台账删除","permission":"mes:wm-material-stock:delete","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5791,"name":"库存台账导出","permission":"mes:wm-material-stock:export","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5792,"name":"到货通知","permission":"","parent_id":602477,"type":2,"component":"wls/arrivalnotice/index","component_name":"MesWmArrivalNotice","status":0,"deleted":0},{"id":5793,"name":"到货通知单查询","permission":"mes:wm-arrival-notice:query","parent_id":5792,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5794,"name":"到货通知单创建","permission":"mes:wm-arrival-notice:create","parent_id":5792,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5795,"name":"到货通知单更新","permission":"mes:wm-arrival-notice:update","parent_id":5792,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5796,"name":"到货通知单删除","permission":"mes:wm-arrival-notice:delete","parent_id":5792,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5797,"name":"到货通知单导出","permission":"mes:wm-arrival-notice:export","parent_id":5792,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5798,"name":"采购入库","permission":"","parent_id":602477,"type":2,"component":"wls/itemreceipt/index","component_name":"MesWmItemReceipt","status":0,"deleted":0},{"id":5799,"name":"采购入库单查询","permission":"mes:wm-item-receipt:query","parent_id":5798,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5800,"name":"采购入库单创建","permission":"mes:wm-item-receipt:create","parent_id":5798,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5801,"name":"采购入库单更新","permission":"mes:wm-item-receipt:update","parent_id":5798,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5802,"name":"采购入库单删除","permission":"mes:wm-item-receipt:delete","parent_id":5798,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5803,"name":"采购入库单导出","permission":"mes:wm-item-receipt:export","parent_id":5798,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5804,"name":"采购入库单完成","permission":"mes:wm-item-receipt:finish","parent_id":5798,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5805,"name":"生产领料","permission":"","parent_id":602478,"type":2,"component":"wls/productissue/index","component_name":"MesWmProductIssue","status":0,"deleted":0},{"id":5806,"name":"领料出库单查询","permission":"mes:wm-product-issue:query","parent_id":5805,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5807,"name":"领料出库单新增","permission":"mes:wm-product-issue:create","parent_id":5805,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5808,"name":"领料出库单修改","permission":"mes:wm-product-issue:update","parent_id":5805,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5809,"name":"领料出库单删除","permission":"mes:wm-product-issue:delete","parent_id":5805,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5810,"name":"领料出库单导出","permission":"mes:wm-product-issue:export","parent_id":5805,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5811,"name":"领料出库单完成","permission":"mes:wm-product-issue:finish","parent_id":5805,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5819,"name":"产品入库","permission":"","parent_id":602478,"type":2,"component":"wls/productreceipt/index","component_name":"MesWmProductReceipt","status":0,"deleted":0},{"id":5820,"name":"产品入库单查询","permission":"mes:wm-product-receipt:query","parent_id":5819,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5821,"name":"产品入库单新增","permission":"mes:wm-product-receipt:create","parent_id":5819,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5822,"name":"产品入库单修改","permission":"mes:wm-product-receipt:update","parent_id":5819,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5823,"name":"产品入库单删除","permission":"mes:wm-product-receipt:delete","parent_id":5819,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5824,"name":"产品入库单导出","permission":"mes:wm-product-receipt:export","parent_id":5819,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5825,"name":"产品入库单完成","permission":"mes:wm-product-receipt:finish","parent_id":5819,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5830,"name":"采购退货","permission":"","parent_id":602477,"type":2,"component":"wls/returnvendor/index","component_name":"MesWmReturnVendor","status":0,"deleted":0},{"id":5831,"name":"供应商退货单查询","permission":"mes:wm-return-vendor:query","parent_id":5830,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5832,"name":"供应商退货单新增","permission":"mes:wm-return-vendor:create","parent_id":5830,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5833,"name":"供应商退货单修改","permission":"mes:wm-return-vendor:update","parent_id":5830,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5834,"name":"供应商退货单删除","permission":"mes:wm-return-vendor:delete","parent_id":5830,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5835,"name":"供应商退货单导出","permission":"mes:wm-return-vendor:export","parent_id":5830,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5836,"name":"供应商退货单状态变更","permission":"mes:wm-return-vendor:update-status","parent_id":5830,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5840,"name":"生产退料","permission":"","parent_id":602478,"type":2,"component":"wls/returnissue/index","component_name":"MesWmReturnIssue","status":0,"deleted":0},{"id":5841,"name":"生产退料单查询","permission":"mes:wm-return-issue:query","parent_id":5840,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5842,"name":"生产退料单新增","permission":"mes:wm-return-issue:create","parent_id":5840,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5843,"name":"生产退料单修改","permission":"mes:wm-return-issue:update","parent_id":5840,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5844,"name":"生产退料单删除","permission":"mes:wm-return-issue:delete","parent_id":5840,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5845,"name":"生产退料单导出","permission":"mes:wm-return-issue:export","parent_id":5840,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5846,"name":"生产退料单执行","permission":"mes:wm-return-issue:finish","parent_id":5840,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5847,"name":"销售退货","permission":"","parent_id":602479,"type":2,"component":"wls/returnsales/index","component_name":"MesWmReturnSales","status":0,"deleted":0},{"id":5848,"name":"销售退货单查询","permission":"mes:wm-return-sales:query","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5849,"name":"销售退货单新增","permission":"mes:wm-return-sales:create","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5850,"name":"销售退货单修改","permission":"mes:wm-return-sales:update","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5851,"name":"销售退货单删除","permission":"mes:wm-return-sales:delete","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5852,"name":"销售退货单导出","permission":"mes:wm-return-sales:export","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5853,"name":"销售退货单提交","permission":"mes:wm-return-sales:submit","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5854,"name":"销售退货单完成退货","permission":"mes:wm-return-sales:finish","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5855,"name":"销售退货单执行上架","permission":"mes:wm-return-sales:stock","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5856,"name":"销售退货单取消","permission":"mes:wm-return-sales:cancel","parent_id":5847,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5857,"name":"杂项出库","permission":"","parent_id":5780,"type":2,"component":"wls/miscissue/index","component_name":null,"status":0,"deleted":0},{"id":5858,"name":"杂项出库查询","permission":"mes:wm-misc-issue:query","parent_id":5857,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5859,"name":"杂项出库新增","permission":"mes:wm-misc-issue:create","parent_id":5857,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5860,"name":"杂项出库修改","permission":"mes:wm-misc-issue:update","parent_id":5857,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5861,"name":"杂项出库删除","permission":"mes:wm-misc-issue:delete","parent_id":5857,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5862,"name":"杂项出库导出","permission":"mes:wm-misc-issue:export","parent_id":5857,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5863,"name":"杂项出库执行","permission":"mes:wm-misc-issue:finish","parent_id":5857,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5867,"name":"发货通知","permission":"","parent_id":602479,"type":2,"component":"wls/salesnotice/index","component_name":"MesWmSalesNotice","status":0,"deleted":0},{"id":5868,"name":"查询发货通知","permission":"mes:wm-sales-notice:query","parent_id":5867,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5869,"name":"创建发货通知","permission":"mes:wm-sales-notice:create","parent_id":5867,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5870,"name":"更新发货通知","permission":"mes:wm-sales-notice:update","parent_id":5867,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5871,"name":"删除发货通知","permission":"mes:wm-sales-notice:delete","parent_id":5867,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5872,"name":"导出发货通知","permission":"mes:wm-sales-notice:export","parent_id":5867,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5873,"name":"外协入库","permission":"","parent_id":5780,"type":2,"component":"wls/outsourcereceipt/index","component_name":"MesWmOutsourceReceipt","status":0,"deleted":0},{"id":5874,"name":"外协入库单查询","permission":"mes:wm-outsource-receipt:query","parent_id":5873,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5875,"name":"外协入库单新增","permission":"mes:wm-outsource-receipt:create","parent_id":5873,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5876,"name":"外协入库单修改","permission":"mes:wm-outsource-receipt:update","parent_id":5873,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5877,"name":"外协入库单删除","permission":"mes:wm-outsource-receipt:delete","parent_id":5873,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5878,"name":"外协入库单导出","permission":"mes:wm-outsource-receipt:export","parent_id":5873,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5879,"name":"外协入库单完成","permission":"mes:wm-outsource-receipt:finish","parent_id":5873,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5881,"name":"外协发料","permission":"","parent_id":5780,"type":2,"component":"wls/outsourceissue/index","component_name":"MesWmOutsourceIssue","status":0,"deleted":0},{"id":5882,"name":"外协发料单查询","permission":"mes:wm-outsource-issue:query","parent_id":5881,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5883,"name":"外协发料单新增","permission":"mes:wm-outsource-issue:create","parent_id":5881,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5884,"name":"外协发料单修改","permission":"mes:wm-outsource-issue:update","parent_id":5881,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5885,"name":"外协发料单删除","permission":"mes:wm-outsource-issue:delete","parent_id":5881,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5886,"name":"外协发料单导出","permission":"mes:wm-outsource-issue:export","parent_id":5881,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5887,"name":"外协发料单执行出库","permission":"mes:wm-outsource-issue:execute","parent_id":5881,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5888,"name":"杂项入库","permission":"","parent_id":5780,"type":2,"component":"wls/miscreceipt/index","component_name":null,"status":0,"deleted":0},{"id":5889,"name":"杂项入库查询","permission":"mes:wm:misc-receipt:query","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5890,"name":"杂项入库创建","permission":"mes:wm:misc-receipt:create","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5891,"name":"杂项入库更新","permission":"mes:wm:misc-receipt:update","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5892,"name":"杂项入库删除","permission":"mes:wm:misc-receipt:delete","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5893,"name":"杂项入库提交","permission":"mes:wm:misc-receipt:submit","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5894,"name":"杂项入库执行","permission":"mes:wm:misc-receipt:finish","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5895,"name":"杂项入库取消","permission":"mes:wm:misc-receipt:cancel","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5896,"name":"杂项入库导出","permission":"mes:wm:misc-receipt:export","parent_id":5888,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5897,"name":"SN ç ","permission":"","parent_id":5780,"type":2,"component":"wls/sn/index","component_name":"MesWmSn","status":0,"deleted":0},{"id":5898,"name":"SN ç æŸ¥è¯¢","permission":"mes:wm-sn:query","parent_id":5897,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5899,"name":"SN ç ç”Ÿæˆ","permission":"mes:wm-sn:create","parent_id":5897,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5900,"name":"SN ç åˆ é™¤","permission":"mes:wm-sn:delete","parent_id":5897,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5901,"name":"SN ç å¯¼å‡º","permission":"mes:wm-sn:export","parent_id":5897,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5906,"name":"条码配置","permission":"","parent_id":5780,"type":2,"component":"wls/barcode/config/index","component_name":"MesWmBarcodeConfig","status":0,"deleted":0},{"id":5907,"name":"条码配置查询","permission":"mes:wm-barcode-config:query","parent_id":5906,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5908,"name":"条码配置创建","permission":"mes:wm-barcode-config:create","parent_id":5906,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5909,"name":"条码配置更新","permission":"mes:wm-barcode-config:update","parent_id":5906,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5910,"name":"条码配置删除","permission":"mes:wm-barcode-config:delete","parent_id":5906,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5911,"name":"赋能管理","permission":"","parent_id":5780,"type":2,"component":"wls/barcode/index","component_name":"MesWmBarcode","status":0,"deleted":0},{"id":5912,"name":"条码清单查询","permission":"mes:wm-barcode:query","parent_id":5911,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5913,"name":"条码清单创建","permission":"mes:wm-barcode:create","parent_id":5911,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5914,"name":"条码清单更新","permission":"mes:wm-barcode:update","parent_id":5911,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5915,"name":"条码清单删除","permission":"mes:wm-barcode:delete","parent_id":5911,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5916,"name":"条码清单导出","permission":"mes:wm-barcode:export","parent_id":5911,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5917,"name":"装箱管理","permission":"","parent_id":5780,"type":2,"component":"wls/packages/index","component_name":"MesWmPackages","status":0,"deleted":0},{"id":5918,"name":"装箱管理查询","permission":"mes:wm-package:query","parent_id":5917,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5919,"name":"装箱管理新增","permission":"mes:wm-package:create","parent_id":5917,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5920,"name":"装箱管理修改","permission":"mes:wm-package:update","parent_id":5917,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5921,"name":"装箱管理删除","permission":"mes:wm-package:delete","parent_id":5917,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5922,"name":"转移调拨","permission":"","parent_id":5780,"type":2,"component":"wls/transfer/index","component_name":"MesWmTransfer","status":0,"deleted":0},{"id":5923,"name":"调拨单查询","permission":"mes:wm-transfer:query","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5924,"name":"调拨单新增","permission":"mes:wm-transfer:create","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5925,"name":"调拨单修改","permission":"mes:wm-transfer:update","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5926,"name":"调拨单删除","permission":"mes:wm-transfer:delete","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5927,"name":"调拨单导出","permission":"mes:wm-transfer:export","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5928,"name":"调拨单提交","permission":"mes:wm-transfer:submit","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5929,"name":"调拨单确认","permission":"mes:wm-transfer:confirm","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5930,"name":"调拨单完成","permission":"mes:wm-transfer:finish","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5931,"name":"调拨单取消","permission":"mes:wm-transfer:cancel","parent_id":5922,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5950,"name":"库存盘点","permission":"","parent_id":5780,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":5951,"name":"盘点方案","permission":"","parent_id":5950,"type":2,"component":"wls/stocktaking/plan/index","component_name":"MesWmStockTakingPlan","status":0,"deleted":0},{"id":5952,"name":"盘点方案查询","permission":"mes:wm-stock-taking-plan:query","parent_id":5951,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5953,"name":"盘点方案创建","permission":"mes:wm-stock-taking-plan:create","parent_id":5951,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5954,"name":"盘点方案更新","permission":"mes:wm-stock-taking-plan:update","parent_id":5951,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5955,"name":"盘点方案删除","permission":"mes:wm-stock-taking-plan:delete","parent_id":5951,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5956,"name":"盘点方案导出","permission":"mes:wm-stock-taking-plan:export","parent_id":5951,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5957,"name":"盘点任务","permission":"","parent_id":5950,"type":2,"component":"wls/stocktaking/task/index","component_name":"MesWmStockTakingTask","status":0,"deleted":0},{"id":5958,"name":"盘点任务查询","permission":"mes:wm-stock-taking-task:query","parent_id":5957,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5959,"name":"盘点任务创建","permission":"mes:wm-stock-taking-task:create","parent_id":5957,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5960,"name":"盘点任务更新","permission":"mes:wm-stock-taking-task:update","parent_id":5957,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5961,"name":"盘点任务删除","permission":"mes:wm-stock-taking-task:delete","parent_id":5957,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5962,"name":"盘点任务导出","permission":"mes:wm-stock-taking-task:export","parent_id":5957,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5966,"name":"批次追溯","permission":"","parent_id":5500,"type":2,"component":"mes/qc/batchtrace/index","component_name":"BatchTrace","status":0,"deleted":0},{"id":5967,"name":"批次追溯查询","permission":"mes:wm-batch:query","parent_id":5966,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":5969,"name":"报告审批","permission":"mes:pro-feedback:approve","parent_id":5550,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5970,"name":"销售出库","permission":"","parent_id":602479,"type":2,"component":"wls/productsales/index","component_name":"MesWmProductSales","status":0,"deleted":0},{"id":5971,"name":"查询销售出库","permission":"mes:wm-product-sales:query","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5972,"name":"创建销售出库","permission":"mes:wm-product-sales:create","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5973,"name":"更新销售出库","permission":"mes:wm-product-sales:update","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5974,"name":"删除销售出库","permission":"mes:wm-product-sales:delete","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5975,"name":"导出销售出库","permission":"mes:wm-product-sales:export","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5976,"name":"提交销售出库","permission":"mes:wm-product-sales:submit","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5977,"name":"执行拣货","permission":"mes:wm-product-sales:stock","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5978,"name":"填写运单","permission":"mes:wm-product-sales:shipping","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5979,"name":"执行出库","permission":"mes:wm-product-sales:finish","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5980,"name":"取消销售出库","permission":"mes:wm-product-sales:cancel","parent_id":5970,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5981,"name":"工作记录","permission":"","parent_id":5700,"type":2,"component":"mes/pro/workrecord/index","component_name":"MesProWorkRecordLog","status":0,"deleted":0},{"id":5982,"name":"工作记录查询","permission":"mes:pro-workrecord:query","parent_id":5981,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5983,"name":"工作记录导出","permission":"mes:pro-workrecord:export","parent_id":5981,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5984,"name":"上工下工","permission":"mes:pro-workrecord:clock","parent_id":5981,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":5985,"name":"MES é¦–页","permission":"mes:home:query","parent_id":5100,"type":2,"component":"mes/home/index","component_name":"MesHome","status":0,"deleted":0},{"id":6001,"name":"人力资源","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6002,"name":"人事审批","permission":"","parent_id":6001,"type":1,"component":null,"component_name":null,"status":1,"deleted":0},{"id":6003,"name":"请假申请","permission":"","parent_id":6002,"type":2,"component":"hrm/leave/index","component_name":"HrmLeaveApplication","status":0,"deleted":0},{"id":6004,"name":"调岗申请","permission":"","parent_id":6002,"type":2,"component":"hrm/transfer/index","component_name":"HrmTransferApplication","status":0,"deleted":0},{"id":6005,"name":"离职申请","permission":"","parent_id":6002,"type":2,"component":"hrm/resignation/index","component_name":"HrmResignationApplication","status":0,"deleted":0},{"id":6006,"name":"员工管理","permission":"","parent_id":6001,"type":2,"component":"hrm/employee/index","component_name":"HrmEmployee","status":0,"deleted":0},{"id":6010,"name":"考勤管理","permission":"","parent_id":6001,"type":1,"component":null,"component_name":null,"status":1,"deleted":0},{"id":6011,"name":"考勤记录","permission":"","parent_id":6010,"type":2,"component":"hrm/attendance/record/index","component_name":"HrmAttendanceRecord","status":0,"deleted":0},{"id":6012,"name":"考勤异常","permission":"","parent_id":6010,"type":2,"component":"hrm/attendance/exception/index","component_name":"HrmAttendanceException","status":0,"deleted":0},{"id":6013,"name":"考勤规则","permission":"","parent_id":6010,"type":2,"component":"hrm/attendance/rule/index","component_name":"HrmAttendanceRule","status":0,"deleted":0},{"id":6014,"name":"节假日配置","permission":"","parent_id":6010,"type":2,"component":"hrm/attendance/holiday/index","component_name":"HrmAttendanceHoliday","status":0,"deleted":0},{"id":6015,"name":"考勤统计","permission":"","parent_id":6010,"type":2,"component":"hrm/attendance/summary/index","component_name":"HrmAttendanceSummary","status":0,"deleted":0},{"id":6016,"name":"班次管理","permission":"","parent_id":6010,"type":2,"component":"hrm/shift/index","component_name":"HrmShift","status":0,"deleted":0},{"id":6017,"name":"排班管理","permission":"","parent_id":6010,"type":2,"component":"hrm/schedule/index","component_name":"HrmSchedule","status":0,"deleted":0},{"id":6020,"name":"薪酬管理","permission":"","parent_id":6001,"type":1,"component":null,"component_name":null,"status":1,"deleted":0},{"id":6021,"name":"薪酬核算","permission":"","parent_id":6020,"type":2,"component":"hrm/salary/calculation/index","component_name":"HrmSalaryCalculation","status":0,"deleted":0},{"id":6022,"name":"薪资发放","permission":"","parent_id":6020,"type":2,"component":"hrm/salary/payment/index","component_name":"HrmSalaryPayment","status":0,"deleted":0},{"id":6023,"name":"员工社保公积金档案","permission":"","parent_id":6020,"type":2,"component":"hrm/salary/employee-social-security/index","component_name":"HrmSocialSecurityConfig","status":0,"deleted":0},{"id":6024,"name":"个税税率配置","permission":"","parent_id":6020,"type":2,"component":"hrm/salary/tax-rate-config/index","component_name":"HrmTaxRateConfig","status":0,"deleted":0},{"id":6500,"name":"IM å³æ—¶é€šè®¯","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":1,"deleted":0},{"id":6510,"name":"数据统计","permission":"im:manager:statistics:query","parent_id":6500,"type":2,"component":"im/manager/statistics/index","component_name":"ImStatistics","status":0,"deleted":0},{"id":6515,"name":"好友申请","permission":"im:manager:friend-request:query","parent_id":6600,"type":2,"component":"im/manager/friend/request/index","component_name":"ImFriendRequest","status":0,"deleted":0},{"id":6520,"name":"好友列表","permission":"im:manager:friend:list","parent_id":6600,"type":2,"component":"im/manager/friend/index","component_name":"ImFriend","status":0,"deleted":0},{"id":6521,"name":"好友查询","permission":"im:manager:friend:query","parent_id":6520,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6530,"name":"好友消息","permission":"im:manager:message:private:list","parent_id":6600,"type":2,"component":"im/manager/message/private/index","component_name":"ImPrivateMessage","status":0,"deleted":0},{"id":6531,"name":"私聊消息查询","permission":"im:manager:message:query","parent_id":6530,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6540,"name":"群聊列表","permission":"im:manager:group:list","parent_id":6610,"type":2,"component":"im/manager/group/index","component_name":"ImGroup","status":0,"deleted":0},{"id":6541,"name":"群组查询","permission":"im:manager:group:query","parent_id":6540,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6542,"name":"群组封禁/解封","permission":"im:manager:group:ban","parent_id":6540,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6545,"name":"群聊申请","permission":"im:manager:group-request:query","parent_id":6610,"type":2,"component":"im/manager/group/request/index","component_name":"ImGroupRequest","status":0,"deleted":0},{"id":6550,"name":"群聊消息","permission":"im:manager:message:group:list","parent_id":6610,"type":2,"component":"im/manager/message/group/index","component_name":"ImGroupMessage","status":0,"deleted":0},{"id":6551,"name":"群聊消息查询","permission":"im:manager:message:query","parent_id":6550,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6560,"name":"敏感词管理","permission":"im:manager:sensitive-word:list","parent_id":6500,"type":2,"component":"im/manager/sensitiveword/index","component_name":"ImSensitiveWord","status":0,"deleted":0},{"id":6561,"name":"敏感词查询","permission":"im:manager:sensitive-word:query","parent_id":6560,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6562,"name":"敏感词新增","permission":"im:manager:sensitive-word:create","parent_id":6560,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6563,"name":"敏感词修改","permission":"im:manager:sensitive-word:update","parent_id":6560,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6564,"name":"敏感词删除","permission":"im:manager:sensitive-word:delete","parent_id":6560,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6570,"name":"表情管理","permission":"","parent_id":6500,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6571,"name":"系统表情","permission":"im:manager:face-pack:list","parent_id":6570,"type":2,"component":"im/manager/face/pack/index","component_name":"ImManagerFacePack","status":0,"deleted":0},{"id":6572,"name":"表情包查询","permission":"im:manager:face-pack:query","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6573,"name":"表情包创建","permission":"im:manager:face-pack:create","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6574,"name":"表情包修改","permission":"im:manager:face-pack:update","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6575,"name":"表情包删除","permission":"im:manager:face-pack:delete","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6576,"name":"表情图查询","permission":"im:manager:face-pack-item:query","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6577,"name":"表情图创建","permission":"im:manager:face-pack-item:create","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6578,"name":"表情图修改","permission":"im:manager:face-pack-item:update","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6579,"name":"表情图删除","permission":"im:manager:face-pack-item:delete","parent_id":6571,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6580,"name":"用户表情","permission":"im:manager:face-user-item:list","parent_id":6570,"type":2,"component":"im/manager/face/userItem/index","component_name":"ImManagerFaceUserItem","status":0,"deleted":0},{"id":6581,"name":"用户表情查询","permission":"im:manager:face-user-item:query","parent_id":6580,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6582,"name":"用户表情删除","permission":"im:manager:face-user-item:delete","parent_id":6580,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":6600,"name":"私聊管理","permission":"","parent_id":6500,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6610,"name":"群聊管理","permission":"","parent_id":6500,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6611,"name":"通话记录","permission":"","parent_id":6500,"type":2,"component":"im/manager/rtc/index","component_name":"ImRtcCall","status":0,"deleted":0},{"id":6612,"name":"通话记录查询","permission":"im:manager:rtc:query","parent_id":6611,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6700,"name":"频道管理","permission":"","parent_id":6500,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":6710,"name":"频道列表","permission":"","parent_id":6700,"type":2,"component":"im/manager/channel/list/index","component_name":"ImChannel","status":0,"deleted":0},{"id":6711,"name":"频道查询","permission":"im:manager:channel:query","parent_id":6710,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6712,"name":"频道创建","permission":"im:manager:channel:create","parent_id":6710,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6713,"name":"频道修改","permission":"im:manager:channel:update","parent_id":6710,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6714,"name":"频道删除","permission":"im:manager:channel:delete","parent_id":6710,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6720,"name":"频道素材","permission":"","parent_id":6700,"type":2,"component":"im/manager/channel/material/index","component_name":"ImChannelMaterial","status":0,"deleted":0},{"id":6721,"name":"素材查询","permission":"im:manager:channel-material:query","parent_id":6720,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6722,"name":"素材创建","permission":"im:manager:channel-material:create","parent_id":6720,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6723,"name":"素材修改","permission":"im:manager:channel-material:update","parent_id":6720,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6724,"name":"素材删除","permission":"im:manager:channel-material:delete","parent_id":6720,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6730,"name":"频道消息","permission":"","parent_id":6700,"type":2,"component":"im/manager/channel/message/index","component_name":"ImChannelMessage","status":0,"deleted":0},{"id":6731,"name":"消息查询","permission":"im:manager:channel-message:query","parent_id":6730,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6732,"name":"立即推送","permission":"im:manager:channel-message:send","parent_id":6730,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6733,"name":"消息删除","permission":"im:manager:channel-message:delete","parent_id":6730,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6734,"name":"解散群","permission":"im:manager:group:dissolve","parent_id":6540,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":6809,"name":"工艺设计","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":60031,"name":"请假申请查询","permission":"hrm:leave:query","parent_id":6003,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60032,"name":"请假申请新增","permission":"hrm:leave:create","parent_id":6003,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60033,"name":"请假申请修改","permission":"hrm:leave:update","parent_id":6003,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60034,"name":"请假申请删除","permission":"hrm:leave:delete","parent_id":6003,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60035,"name":"请假申请提交","permission":"hrm:leave:submit","parent_id":6003,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60041,"name":"调岗申请撤销","permission":"hrm:transfer:cancel","parent_id":6004,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60042,"name":"调岗申请新增","permission":"hrm:transfer:create","parent_id":6004,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60043,"name":"调岗申请修改","permission":"hrm:transfer:update","parent_id":6004,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60044,"name":"调岗申请删除","permission":"hrm:transfer:delete","parent_id":6004,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60045,"name":"调岗申请提交","permission":"hrm:transfer:submit","parent_id":6004,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60051,"name":"离职申请撤销","permission":"hrm:resignation:cancel","parent_id":6005,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60052,"name":"离职申请新增","permission":"hrm:resignation:create","parent_id":6005,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60053,"name":"离职申请修改","permission":"hrm:resignation:update","parent_id":6005,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60054,"name":"离职申请删除","permission":"hrm:resignation:delete","parent_id":6005,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60055,"name":"离职申请提交","permission":"hrm:resignation:submit","parent_id":6005,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60061,"name":"员工查询","permission":"hrm:employee:query","parent_id":6006,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60062,"name":"员工新增","permission":"hrm:employee:create","parent_id":6006,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60063,"name":"员工修改","permission":"hrm:employee:update","parent_id":6006,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60064,"name":"员工删除","permission":"hrm:employee:delete","parent_id":6006,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60065,"name":"员工导出","permission":"hrm:employee:export","parent_id":6006,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60066,"name":"员工导入","permission":"hrm:employee:import","parent_id":6006,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":60112,"name":"考勤记录导入","permission":"hrm:attendance-record:import","parent_id":6011,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60113,"name":"考勤记录导出","permission":"hrm:attendance-record:export","parent_id":6011,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60114,"name":"打卡","permission":"hrm:attendance-record:clock","parent_id":6011,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60132,"name":"考勤规则新增","permission":"hrm:attendance-rule:create","parent_id":6013,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60133,"name":"考勤规则修改","permission":"hrm:attendance-rule:update","parent_id":6013,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60134,"name":"考勤规则删除","permission":"hrm:attendance-rule:delete","parent_id":6013,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60135,"name":"考勤规则导出","permission":"hrm:attendance-rule:export","parent_id":6013,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60142,"name":"节假日配置新增","permission":"hrm:attendance-holiday:create","parent_id":6014,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60143,"name":"节假日配置修改","permission":"hrm:attendance-holiday:update","parent_id":6014,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60144,"name":"节假日配置删除","permission":"hrm:attendance-holiday:delete","parent_id":6014,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60145,"name":"节假日配置导出","permission":"hrm:attendance-holiday:export","parent_id":6014,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60152,"name":"考勤统计生成","permission":"hrm:attendance-summary:generate","parent_id":6015,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60153,"name":"考勤统计导出","permission":"hrm:attendance-summary:export","parent_id":6015,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60161,"name":"班次查询","permission":"hrm:shift:query","parent_id":6016,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60162,"name":"班次新增","permission":"hrm:shift:create","parent_id":6016,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60163,"name":"班次修改","permission":"hrm:shift:update","parent_id":6016,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60164,"name":"班次删除","permission":"hrm:shift:delete","parent_id":6016,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60165,"name":"班次导出","permission":"hrm:shift:export","parent_id":6016,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60171,"name":"排班查询","permission":"hrm:employee-schedule:query","parent_id":6017,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60172,"name":"排班保存","permission":"hrm:employee-schedule:save","parent_id":6017,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60212,"name":"薪酬核算执行","permission":"hrm:salary-calculation:calculate","parent_id":6021,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60213,"name":"薪酬核算确认","permission":"hrm:salary-calculation:confirm","parent_id":6021,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60214,"name":"薪酬核算导出","permission":"hrm:salary-calculation:export","parent_id":6021,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60242,"name":"撤销","permission":"hrm:leave:cancel","parent_id":6003,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60243,"name":"新增","permission":"hrm:attendance-exception:create","parent_id":6012,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60244,"name":"发放","permission":"hrm:salary-payment:pay","parent_id":6022,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":60245,"name":"导出","permission":"hrm:salary-payment:export","parent_id":6022,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602322,"name":"社保配置新增","permission":"hrm:employee-social-security:create","parent_id":6023,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602333,"name":"社保配置修改","permission":"hrm:employee-social-security:update","parent_id":6023,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602344,"name":"社保配置删除","permission":"hrm:employee-social-security:delete","parent_id":6023,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602422,"name":"个税配置新增","permission":"hrm:tax-rate-config:create","parent_id":6024,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602433,"name":"个税配置修改","permission":"hrm:tax-rate-config:update","parent_id":6024,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602444,"name":"个税配置删除","permission":"hrm:tax-rate-config:delete","parent_id":6024,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602445,"name":"社保公积金方案","permission":"","parent_id":6020,"type":2,"component":"hrm/salary/social-security-scheme/index","component_name":null,"status":0,"deleted":0},{"id":602446,"name":"新增","permission":"hrm:social-security-scheme:create","parent_id":602445,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602447,"name":"编辑","permission":"hrm:social-security-scheme:update","parent_id":602445,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602448,"name":"删除","permission":"hrm:social-security-scheme:delete","parent_id":602445,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602449,"name":"请假扣款配置","permission":"","parent_id":6020,"type":2,"component":"hrm/salary/leave-type-config/index","component_name":null,"status":0,"deleted":0},{"id":602450,"name":"编辑","permission":"hrm:leave-type-config:update","parent_id":602449,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602451,"name":"提交","permission":"hrm:attendance-exception:submit","parent_id":6012,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602452,"name":"库区列表","permission":"","parent_id":5780,"type":2,"component":"/wls/warehouse/location/index","component_name":null,"status":0,"deleted":0},{"id":602453,"name":"库位列表","permission":"","parent_id":5780,"type":2,"component":"/wls/warehouse/area/index","component_name":null,"status":0,"deleted":0},{"id":602455,"name":"基础数据","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":602461,"name":"物料管理","permission":"","parent_id":602455,"type":2,"component":"basicData/mdm/index","component_name":"MdmItem","status":0,"deleted":0},{"id":602462,"name":"物料查询","permission":"mdm:item:query","parent_id":602461,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602463,"name":"物料创建","permission":"mdm:item:create","parent_id":602461,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602464,"name":"物料更新","permission":"mdm:item:update","parent_id":602461,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602465,"name":"物料删除","permission":"mdm:item:delete","parent_id":602461,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602466,"name":"物料导出","permission":"mdm:item:export","parent_id":602461,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602467,"name":"计量单位","permission":"","parent_id":602455,"type":2,"component":"basicData/mdm/unit/index","component_name":"MdmUnit","status":0,"deleted":0},{"id":602468,"name":"计量单位查询","permission":"mdm:unit:query","parent_id":602467,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602469,"name":"计量单位创建","permission":"mdm:unit:create","parent_id":602467,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602470,"name":"计量单位更新","permission":"mdm:unit:update","parent_id":602467,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602471,"name":"计量单位删除","permission":"mdm:unit:delete","parent_id":602467,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602472,"name":"调整","permission":"mes:wm-material-stock:adjust","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602474,"name":"基础参数","permission":"","parent_id":6809,"type":2,"component":"mes/process-design/parameter/index","component_name":"MesParameter","status":0,"deleted":0},{"id":602475,"name":"参数模板","permission":"","parent_id":6809,"type":2,"component":"mes/process-design/template/index","component_name":"MesTemplate","status":0,"deleted":0},{"id":602476,"name":"库存事务流水","permission":"","parent_id":5780,"type":2,"component":"wls/transaction/index","component_name":null,"status":0,"deleted":0},{"id":602477,"name":"采购仓库","permission":"","parent_id":5780,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":602478,"name":"生产仓库","permission":"","parent_id":5780,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":602479,"name":"销售仓库","permission":"","parent_id":5780,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":602480,"name":"创建工艺参数","permission":"mes:pd:parameter:create","parent_id":602474,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602481,"name":"编辑工艺参数","permission":"mes:pd:parameter:update","parent_id":602474,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602482,"name":"删除工艺参数","permission":"mes:pd:parameter:delete","parent_id":602474,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602483,"name":"导出工艺参数","permission":"mes:pd:parameter:export","parent_id":602474,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602484,"name":"创建工艺参数模板","permission":"mes:pd:template:create","parent_id":602475,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602485,"name":"编辑工艺参数模板","permission":"mes:pd:template:update","parent_id":602475,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602486,"name":"删除工艺参数模板","permission":"mes:pd:template:delete","parent_id":602475,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602487,"name":"导出工艺参数模板","permission":"mes:pd:template:export","parent_id":602475,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602498,"name":"采购申请","permission":"","parent_id":2602,"type":2,"component":"erp/purchase/request/index","component_name":null,"status":0,"deleted":0},{"id":602499,"name":"新增","permission":"erp:purchase-request:create","parent_id":602498,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602500,"name":"导出","permission":"erp:purchase-request:export","parent_id":602498,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602501,"name":"删除","permission":"erp:purchase-request:delete","parent_id":602498,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602502,"name":"编辑","permission":"erp:purchase-request:update","parent_id":602498,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602503,"name":"确认收货","permission":"erp:purchase-order:confirm-receipt","parent_id":2666,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602504,"name":"生产计划","permission":"","parent_id":5700,"type":2,"component":"mes/pro/mps/index","component_name":null,"status":0,"deleted":0},{"id":602505,"name":"导出","permission":"mes:pro-mps:export","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602506,"name":"合并下发","permission":"mes:pro-mps:merge-issue","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602507,"name":"编辑","permission":"mes:pro-mps:update","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602508,"name":"下发","permission":"mes:pro-mps:issue","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602509,"name":"取消","permission":"mes:pro-mps:cancel","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602510,"name":"删除","permission":"mes:pro-mps:delete","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602511,"name":"新增","permission":"mes:pro-mps:create","parent_id":602504,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602512,"name":"销售报价","permission":"","parent_id":2617,"type":2,"component":"crm/saleQuotation/index","component_name":null,"status":0,"deleted":0},{"id":602513,"name":"新增","permission":"crm:sale-quotation:create","parent_id":602512,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602514,"name":"编辑","permission":"crm:sale-quotation:update","parent_id":602512,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602515,"name":"转合同","permission":"crm:sale-quotation:update","parent_id":602512,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602516,"name":"删除","permission":"crm:sale-quotation:delete","parent_id":602512,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602517,"name":"文件存储","permission":"","parent_id":1,"type":2,"component":"","component_name":"","status":0,"deleted":0},{"id":602518,"name":"文件上传","permission":"system:storage-blob:upload","parent_id":602517,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602519,"name":"公共文件上传","permission":"system:storage-blob:public-upload","parent_id":602517,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602520,"name":"附件查询","permission":"system:storage-attachment:query","parent_id":602517,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602521,"name":"附件绑定","permission":"system:storage-attachment:create","parent_id":602517,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602522,"name":"附件删除","permission":"system:storage-attachment:delete","parent_id":602517,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602523,"name":"移库","permission":"mes:wm-material-stock:move","parent_id":5786,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602524,"name":"SRM ä¾›åº”商管理","permission":"","parent_id":2602,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":602525,"name":"供应商档案","permission":"","parent_id":602524,"type":2,"component":"srm/supplier/index","component_name":"SrmSupplier","status":0,"deleted":0},{"id":602526,"name":"供应商查询","permission":"srm:supplier:query","parent_id":602525,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602527,"name":"供应商创建","permission":"srm:supplier:create","parent_id":602525,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602528,"name":"供应商更新","permission":"srm:supplier:update","parent_id":602525,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602529,"name":"供应商删除","permission":"srm:supplier:delete","parent_id":602525,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602530,"name":"供应商准入","permission":"","parent_id":602524,"type":2,"component":"srm/supplierApply/index","component_name":"SrmSupplierApply","status":0,"deleted":0},{"id":602531,"name":"准入查询","permission":"srm:supplier-apply:query","parent_id":602530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602532,"name":"准入创建","permission":"srm:supplier-apply:create","parent_id":602530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602533,"name":"准入更新","permission":"srm:supplier-apply:update","parent_id":602530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602534,"name":"准入删除","permission":"srm:supplier-apply:delete","parent_id":602530,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602535,"name":"供应商资质","permission":"","parent_id":602524,"type":2,"component":"srm/supplierCertificate/index","component_name":"SrmSupplierCertificate","status":0,"deleted":0},{"id":602536,"name":"资质查询","permission":"srm:supplier-certificate:query","parent_id":602535,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602537,"name":"资质创建","permission":"srm:supplier-certificate:create","parent_id":602535,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602538,"name":"资质更新","permission":"srm:supplier-certificate:update","parent_id":602535,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602539,"name":"资质删除","permission":"srm:supplier-certificate:delete","parent_id":602535,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602540,"name":"供应商绩效","permission":"","parent_id":602524,"type":2,"component":"srm/supplierEvaluation/index","component_name":"SrmSupplierEvaluation","status":0,"deleted":0},{"id":602541,"name":"评价查询","permission":"srm:supplier-evaluation:query","parent_id":602540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602542,"name":"评价创建","permission":"srm:supplier-evaluation:create","parent_id":602540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602543,"name":"评价更新","permission":"srm:supplier-evaluation:update","parent_id":602540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602544,"name":"评价删除","permission":"srm:supplier-evaluation:delete","parent_id":602540,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602545,"name":"招投标管理","permission":"","parent_id":602524,"type":2,"component":"srm/tender/index","component_name":"SrmTender","status":0,"deleted":0},{"id":602546,"name":"招标查询","permission":"srm:tender-project:query","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602547,"name":"招标创建","permission":"srm:tender-project:create","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602548,"name":"招标更新","permission":"srm:tender-project:update","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602549,"name":"招标删除","permission":"srm:tender-project:delete","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602550,"name":"投标查询","permission":"srm:tender-bid:query","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602551,"name":"投标创建","permission":"srm:tender-bid:create","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602552,"name":"投标更新","permission":"srm:tender-bid:update","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602553,"name":"报价查询","permission":"srm:supplier-quote:query","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602554,"name":"报价创建","permission":"srm:supplier-quote:create","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602555,"name":"报价更新","permission":"srm:supplier-quote:update","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602556,"name":"评标查询","permission":"srm:bid-evaluation:query","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602557,"name":"评标创建","permission":"srm:bid-evaluation:create","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602558,"name":"评标更新","permission":"srm:bid-evaluation:update","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602559,"name":"开标查询","permission":"srm:bid-open:query","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602560,"name":"开标创建","permission":"srm:bid-open:create","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602561,"name":"定标查询","permission":"srm:bid-award:query","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602562,"name":"定标创建","permission":"srm:bid-award:create","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602563,"name":"定标更新","permission":"srm:bid-award:update","parent_id":602545,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602569,"name":"统计分析","permission":"","parent_id":602524,"type":2,"component":"srm/statistics/index","component_name":"SrmStatistics","status":0,"deleted":0},{"id":602570,"name":"统计查询","permission":"srm:statistics:query","parent_id":602569,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602571,"name":"产品设计","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":602572,"name":"设计项目","permission":"","parent_id":602571,"type":2,"component":"mes/pd/project/index","component_name":"MesPdProject","status":0,"deleted":0},{"id":602573,"name":"设计项目查询","permission":"mes:pd-project:query","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602574,"name":"设计项目创建","permission":"mes:pd-project:create","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602575,"name":"设计项目更新","permission":"mes:pd-project:update","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602576,"name":"设计项目删除","permission":"mes:pd-project:delete","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602577,"name":"设计项目导出","permission":"mes:pd-project:export","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602578,"name":"设计归档","permission":"","parent_id":602571,"type":2,"component":"mes/pd/archive/index","component_name":"MesPdArchive","status":0,"deleted":0},{"id":602579,"name":"设计归档查询","permission":"mes:pd-archive:query","parent_id":602578,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602580,"name":"设计归档更新","permission":"mes:pd-archive:update","parent_id":602578,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602581,"name":"设计归档删除","permission":"mes:pd-archive:delete","parent_id":602578,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602582,"name":"设计归档导出","permission":"mes:pd-archive:export","parent_id":602578,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602583,"name":"查看全部客户","permission":"crm:customer:view-all","parent_id":2546,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":602584,"name":"发布","permission":"mes:pd-project:update","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602585,"name":"审核","permission":"mes:pd-project:audit","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602586,"name":"归档","permission":"mes:pd-project:archive","parent_id":602572,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602587,"name":"售后管理","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":602588,"name":"售后工单","permission":"","parent_id":602587,"type":2,"component":"/aftersales/ticket/index","component_name":null,"status":0,"deleted":0},{"id":602589,"name":"退货申请","permission":"","parent_id":602587,"type":2,"component":"/aftersales/return/index","component_name":null,"status":0,"deleted":0},{"id":602590,"name":"新增","permission":"aftersales:ticket:create","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602591,"name":"编辑、分配、完结等","permission":"aftersales:ticket:update","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602592,"name":"删除","permission":"aftersales:ticket:delete","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602593,"name":"新增","permission":"aftersales:return:create","parent_id":602589,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602594,"name":"审核","permission":"aftersales:return:approve","parent_id":602589,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602595,"name":"查看全部","permission":"aftersales:admin","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602596,"name":"API密钥管理","permission":"","parent_id":1185,"type":2,"component":"ai/model/apiKey/index","component_name":null,"status":0,"deleted":0},{"id":602597,"name":"新增","permission":"ai:api-key:create","parent_id":602596,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602598,"name":"编辑","permission":"ai:api-key:update","parent_id":602596,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602599,"name":"删除","permission":"ai:api-key:delete","parent_id":602596,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602600,"name":"模型管理","permission":"","parent_id":1185,"type":2,"component":"ai/model/model/index","component_name":null,"status":0,"deleted":0},{"id":602601,"name":"新增","permission":"ai:model:create","parent_id":602600,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602602,"name":"编辑","permission":"ai:model:update","parent_id":602600,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602603,"name":"删除","permission":"ai:model:delete","parent_id":602600,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602604,"name":"知识库管理","permission":"","parent_id":1185,"type":2,"component":"ai/knowledge/knowledge/index","component_name":null,"status":0,"deleted":0},{"id":602605,"name":"新增","permission":"ai:knowledge:create","parent_id":602604,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602606,"name":"编辑","permission":"ai:knowledge:update","parent_id":602604,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602607,"name":"删除","permission":"ai:knowledge:delete","parent_id":602604,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602608,"name":"通知公告","permission":"","parent_id":1185,"type":2,"component":"bpm/oa/notice/index","component_name":null,"status":0,"deleted":0},{"id":602609,"name":"新增","permission":"bpm:oa-notice:create","parent_id":602608,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602610,"name":"编辑","permission":"bpm:oa-notice:update","parent_id":602608,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":602611,"name":"删除","permission":"bpm:oa-notice:delete","parent_id":602608,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063000,"name":"决策BI大屏","permission":"","parent_id":0,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1063001,"name":"采购销售售后大屏","permission":"","parent_id":1063000,"type":2,"component":"bi/dashboard/index","component_name":"BiPurchaseSalesDashboard","status":0,"deleted":0},{"id":1063002,"name":"仓库大屏","permission":"","parent_id":1063000,"type":2,"component":"bi/warehouse/index","component_name":"BiWarehouseDashboard","status":1,"deleted":0},{"id":1063003,"name":"生产设备大屏","permission":"","parent_id":1063000,"type":2,"component":"bi/dashboard/index","component_name":"BiProductionEquipmentDashboard","status":0,"deleted":0},{"id":1063004,"name":"质量大屏","permission":"","parent_id":1063000,"type":2,"component":"bi/dashboard/index","component_name":"BiQualityDashboard","status":0,"deleted":0},{"id":1063005,"name":"人资办公大屏","permission":"","parent_id":1063000,"type":2,"component":"bi/dashboard/index","component_name":"BiHrOaDashboard","status":0,"deleted":0},{"id":1063006,"name":"配置管理","permission":"","parent_id":1063000,"type":1,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1063007,"name":"图表配置","permission":"","parent_id":1063006,"type":2,"component":"bi/config/chart/index","component_name":"BiChartConfig","status":0,"deleted":0},{"id":1063008,"name":"数据源配置","permission":"","parent_id":1063006,"type":2,"component":"bi/config/data-source/index","component_name":"BiDataSourceConfig","status":0,"deleted":0},{"id":1063009,"name":"仓库坐标配置","permission":"","parent_id":1063006,"type":2,"component":"bi/config/warehouse-coordinate/index","component_name":"","status":0,"deleted":0},{"id":1063071,"name":"图表配置查询","permission":"bi:chart-config:query","parent_id":1063007,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063072,"name":"图表配置新增","permission":"bi:chart-config:create","parent_id":1063007,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063073,"name":"图表配置修改","permission":"bi:chart-config:update","parent_id":1063007,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063074,"name":"图表配置删除","permission":"bi:chart-config:delete","parent_id":1063007,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063081,"name":"数据源配置查询","permission":"bi:data-source-config:query","parent_id":1063008,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063082,"name":"数据源配置新增","permission":"bi:data-source-config:create","parent_id":1063008,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063083,"name":"数据源配置修改","permission":"bi:data-source-config:update","parent_id":1063008,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063084,"name":"数据源配置删除","permission":"bi:data-source-config:delete","parent_id":1063008,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063091,"name":"仓库坐标查询","permission":"bi:warehouse-coordinate:query","parent_id":1063009,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063092,"name":"仓库坐标修改","permission":"bi:warehouse-coordinate:update","parent_id":1063009,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063093,"name":"开票管理","permission":"","parent_id":2617,"type":2,"component":"crm/invoice/index","component_name":null,"status":0,"deleted":0},{"id":1063094,"name":"导出","permission":"crm:invoice:export","parent_id":1063093,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063095,"name":"新建开票","permission":"crm:invoice:create","parent_id":1063093,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063096,"name":"编辑 / æäº¤å®¡æ ¸ / æŸ¥çœ‹å®¡æ‰¹","permission":"crm:invoice:update","parent_id":1063093,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063097,"name":"删除开票","permission":"crm:invoice:delete","parent_id":1063093,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063105,"name":"员工合同","permission":"","parent_id":6001,"type":2,"component":"hrm/employee/contract/index","component_name":null,"status":1,"deleted":0},{"id":1063106,"name":"合同查询","permission":"hrm:employee-contract:query","parent_id":1063105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063107,"name":"合同新增","permission":"hrm:employee-contract:create","parent_id":1063105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063108,"name":"合同修改","permission":"hrm:employee-contract:update","parent_id":1063105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063109,"name":"合同删除","permission":"hrm:employee-contract:delete","parent_id":1063105,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1063110,"name":"采购来票","permission":"","parent_id":2602,"type":2,"component":"erp/purchase/invoice/index","component_name":"ErpPurchaseInvoice","status":0,"deleted":0},{"id":1063111,"name":"来票查询","permission":"erp:purchase-invoice:query","parent_id":1063110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063112,"name":"来票创建","permission":"erp:purchase-invoice:create","parent_id":1063110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063113,"name":"来票更新","permission":"erp:purchase-invoice:update","parent_id":1063110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063114,"name":"来票删除","permission":"erp:purchase-invoice:delete","parent_id":1063110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063115,"name":"来票导出","permission":"erp:purchase-invoice:export","parent_id":1063110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063116,"name":"付款","permission":"","parent_id":2602,"type":2,"component":"erp/finance/payment/index","component_name":"","status":0,"deleted":0},{"id":1063117,"name":"付款单查询","permission":"erp:finance-payment:query","parent_id":1063116,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063118,"name":"付款单创建","permission":"erp:finance-payment:create","parent_id":1063116,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063119,"name":"付款单更新","permission":"erp:finance-payment:update","parent_id":1063116,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063120,"name":"付款单删除","permission":"erp:finance-payment:delete","parent_id":1063116,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063121,"name":"付款单导出","permission":"erp:finance-payment:export","parent_id":1063116,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1063122,"name":"付款单审批","permission":"erp:finance-payment:update-status","parent_id":1063116,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065000,"name":"销售计划","permission":"","parent_id":2617,"type":2,"component":"crm/salesTarget/index","component_name":"","status":0,"deleted":0},{"id":1065001,"name":"销售计划查询","permission":"crm:sales-target:query","parent_id":1065000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065002,"name":"销售计划创建","permission":"crm:sales-target:create","parent_id":1065000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065003,"name":"销售计划更新","permission":"crm:sales-target:update","parent_id":1065000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065004,"name":"销售计划删除","permission":"crm:sales-target:delete","parent_id":1065000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065005,"name":"销售计划导出","permission":"crm:sales-target:export","parent_id":1065000,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065100,"name":"达成分析","permission":"","parent_id":2617,"type":2,"component":"crm/salesTarget/analysis/index","component_name":"","status":0,"deleted":0},{"id":1065101,"name":"达成分析查询","permission":"crm:sales-target:query","parent_id":1065100,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065200,"name":"部门导入","permission":"system:dept:import","parent_id":103,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1065201,"name":"岗位导入","permission":"system:post:import","parent_id":104,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1065202,"name":"请假扣款配置新增","permission":"hrm:leave-type-config:create","parent_id":602449,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065203,"name":"请假扣款配置查询","permission":"hrm:leave-type-config:query","parent_id":602449,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065204,"name":"请假扣款配置修改","permission":"hrm:leave-type-config:update","parent_id":602449,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065205,"name":"请假扣款配置删除","permission":"hrm:leave-type-config:delete","parent_id":602449,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065206,"name":"物料导入","permission":"mdm:item:import","parent_id":602461,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065207,"name":"物料分类","permission":"mes:md-item-type:import","parent_id":5110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065208,"name":"计量单位导入","permission":"mdm:unit:import","parent_id":602467,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065209,"name":"公司信息配置","permission":"","parent_id":1,"type":2,"component":"","component_name":"","status":0,"deleted":0},{"id":1065210,"name":"公司信息修改","permission":"system:company-config:update","parent_id":1065209,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065211,"name":"加班申请","permission":"","parent_id":6002,"type":2,"component":"hrm/overtime/index","component_name":null,"status":0,"deleted":0},{"id":1065212,"name":"新增","permission":"hrm:overtime:create","parent_id":1065211,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065213,"name":"编辑","permission":"hrm:overtime:update","parent_id":1065211,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065214,"name":"提交","permission":"hrm:overtime:submit","parent_id":1065211,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065215,"name":"撤销","permission":"hrm:overtime:cancel","parent_id":1065211,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065216,"name":"删除","permission":"hrm:overtime:delete","parent_id":1065211,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065217,"name":"数据库备份","permission":"system:database:backup","parent_id":1,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065218,"name":"物料分类导出","permission":"mes:md-item-type:export","parent_id":5110,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1065219,"name":"计量单位导出","permission":"mdm:unit:export","parent_id":602467,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075301,"name":"供应商导出","permission":"srm:supplier:export","parent_id":602525,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075302,"name":"供应商导入","permission":"srm:supplier:import","parent_id":602525,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075303,"name":"库存事务流水查询","permission":"mes:wm-transaction:query","parent_id":602476,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075305,"name":"业务附件配置","permission":"","parent_id":1186,"type":2,"component":"bpm/businessAttach/index","component_name":"BpmBusinessAttach","status":0,"deleted":0},{"id":1075306,"name":"业务附件配置查询","permission":"bpm:business-attach:query","parent_id":1075305,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075307,"name":"业务附件配置创建","permission":"bpm:business-attach:create","parent_id":1075305,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075308,"name":"业务附件配置更新","permission":"bpm:business-attach:update","parent_id":1075305,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075309,"name":"业务附件配置删除","permission":"bpm:business-attach:delete","parent_id":1075305,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075310,"name":"采购申请导入","permission":"erp:purchase-request:import","parent_id":602498,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1075311,"name":"合同导入","permission":"crm:contract:import","parent_id":2398,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1075312,"name":"流程免审批-查询","permission":"bpm:process-auto-approve:query","parent_id":1193,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075313,"name":"流程免审批-设置","permission":"bpm:process-auto-approve:update","parent_id":1193,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075314,"name":"工单查询","permission":"aftersales:ticket:query","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075315,"name":"回访记录查询","permission":"aftersales:visit:query","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075316,"name":"登记回访","permission":"aftersales:visit:create","parent_id":602588,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075317,"name":"退货查询","permission":"aftersales:return:query","parent_id":602589,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075318,"name":"问题库","permission":"","parent_id":602587,"type":2,"component":"/aftersales/problem/index","component_name":"AftersalesProblem","status":0,"deleted":0},{"id":1075319,"name":"问题查询","permission":"aftersales:problem:query","parent_id":1075318,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075320,"name":"问题新增","permission":"aftersales:problem:create","parent_id":1075318,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075321,"name":"问题修改","permission":"aftersales:problem:update","parent_id":1075318,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075322,"name":"问题删除","permission":"aftersales:problem:delete","parent_id":1075318,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075323,"name":"问题发布","permission":"aftersales:problem:publish","parent_id":1075318,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075324,"name":"问题停用","permission":"aftersales:problem:disable","parent_id":1075318,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075400,"name":"报告模板设计","permission":"","parent_id":5500,"type":2,"component":"mes/qc/report/template/index","component_name":null,"status":0,"deleted":0},{"id":1075401,"name":"报告模板查询","permission":"qc-report:template:query","parent_id":1075400,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075402,"name":"报告模板创建","permission":"qc-report:template:create","parent_id":1075400,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075403,"name":"报告模板更新","permission":"qc-report:template:update","parent_id":1075400,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075404,"name":"报告模板删除","permission":"qc-report:template:delete","parent_id":1075400,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075405,"name":"报告模板发布","permission":"qc-report:template:publish","parent_id":1075400,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075410,"name":"报告实例","permission":"","parent_id":5500,"type":2,"component":"mes/qc/report/instance/index","component_name":null,"status":0,"deleted":0},{"id":1075411,"name":"报告实例查询","permission":"qc-report:instance:query","parent_id":1075410,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075412,"name":"报告实例出件","permission":"qc-report:instance:create","parent_id":1075410,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075413,"name":"报告实例导出PDF","permission":"qc-report:instance:export","parent_id":1075410,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075414,"name":"报告实例删除","permission":"qc-report:instance:delete","parent_id":1075410,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075415,"name":"报告模板AI导入","permission":"qc-report:template:ai-import","parent_id":1075400,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075416,"name":"报告实例质检单出件","permission":"qc-report:instance:generate","parent_id":1075410,"type":3,"component":null,"component_name":null,"status":0,"deleted":0},{"id":1075417,"name":"开票导入","permission":"crm:invoice:import","parent_id":1063093,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075418,"name":"来料检验导入","permission":"mes:qc-iqc:import","parent_id":5640,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075419,"name":"过程检验导入","permission":"mes:qc-ipqc:import","parent_id":5650,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075420,"name":"出货检验导入","permission":"mes:qc-oqc:import","parent_id":5660,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075421,"name":"检测结果台账","permission":"","parent_id":5500,"type":2,"component":"mes/qc/ledger/index","component_name":"MesQcInspectionLedger","status":0,"deleted":0},{"id":1075422,"name":"检测结果台账查询","permission":"mes:qc-inspection-ledger:query","parent_id":1075421,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075423,"name":"检测结果台账导出","permission":"mes:qc-inspection-ledger:export","parent_id":1075421,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075424,"name":"库存现有量导入","permission":"mes:wm-material-stock:import","parent_id":5786,"type":3,"component":"","component_name":null,"status":0,"deleted":0},{"id":1075425,"name":"能耗管理","permission":"","parent_id":0,"type":1,"component":"","component_name":"","status":0,"deleted":0},{"id":1075426,"name":"能耗记录","permission":"energy:record:query","parent_id":1075425,"type":2,"component":"energy/record/index","component_name":"EnergyRecord","status":0,"deleted":0},{"id":1075427,"name":"数据分析","permission":"energy:analysis:query","parent_id":1075425,"type":2,"component":"energy/analysis/index","component_name":"EnergyAnalysis","status":0,"deleted":0},{"id":1075428,"name":"新增能耗记录","permission":"energy:record:create","parent_id":1075426,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075429,"name":"修改能耗记录","permission":"energy:record:update","parent_id":1075426,"type":3,"component":"","component_name":"","status":0,"deleted":0},{"id":1075430,"name":"删除能耗记录","permission":"energy:record:delete","parent_id":1075426,"type":3,"component":"","component_name":"","status":0,"deleted":0}]
sql/mysql/energy_management_init.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
-- ç‹¬ç«‹èƒ½è€—管理:新增台账及一级菜单,不关联其他业务表。
-- å¯é‡å¤æ‰§è¡Œã€‚执行前请确认目标库,菜单只默认分配给超级管理员(role_id=1)。
CREATE TABLE IF NOT EXISTS `mes_energy_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录编号',
  `record_date` date NOT NULL COMMENT '统计日期',
  `energy_type` varchar(20) NOT NULL COMMENT 'WATERæ°´/ELECTRICITY电/STEAM蒸汽',
  `usage_area` varchar(100) NOT NULL COMMENT '使用区域(手工填写)',
  `product_category` varchar(50) NOT NULL COMMENT '产品类别(本模块)',
  `usage_purpose` varchar(100) NOT NULL COMMENT '用途/工序(手工填写)',
  `quantity` decimal(18,3) NOT NULL COMMENT '用量,水m³/电kWh/蒸汽t',
  `unit_price` decimal(12,4) NOT NULL DEFAULT 0 COMMENT '元/能源单位',
  `amount` decimal(26,2) NOT NULL DEFAULT 0 COMMENT '费用=用量*单价,四舍五入到分',
  `recorder` varchar(50) NOT NULL COMMENT '录入人姓名(手工填写)',
  `remark` varchar(500) NOT NULL DEFAULT '',
  `creator` varchar(64) DEFAULT '',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updater` varchar(64) DEFAULT '',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `deleted` bit(1) NOT NULL DEFAULT b'0',
  `tenant_id` bigint NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  KEY `idx_energy_date` (`tenant_id`, `deleted`, `record_date`, `energy_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='独立能耗手工台账';
START TRANSACTION;
SET @energy_root = (SELECT id FROM system_menu WHERE parent_id=0 AND path='/energy' AND deleted=b'0' LIMIT 1);
SET @energy_next = (SELECT IFNULL(MAX(id),0)+1 FROM system_menu);
INSERT INTO system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT @energy_next,'能耗管理','',1,65,0,'/energy','lucide:zap','','',0,1,1,1,'1',NOW(),'1',NOW(),0 FROM DUAL WHERE @energy_root IS NULL;
SET @energy_root = COALESCE(@energy_root,@energy_next);
SET @energy_record = (SELECT id FROM system_menu WHERE parent_id=@energy_root AND path='record' AND deleted=b'0' LIMIT 1);
SET @energy_next = (SELECT MAX(id)+1 FROM system_menu);
INSERT INTO system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT @energy_next,'能耗记录','energy:record:query',2,1,@energy_root,'record','lucide:clipboard-list','energy/record/index','EnergyRecord',0,1,0,1,'1',NOW(),'1',NOW(),0 FROM DUAL WHERE @energy_record IS NULL;
SET @energy_record = COALESCE(@energy_record,@energy_next);
SET @energy_analysis = (SELECT id FROM system_menu WHERE parent_id=@energy_root AND path='analysis' AND deleted=b'0' LIMIT 1);
SET @energy_next = (SELECT MAX(id)+1 FROM system_menu);
INSERT INTO system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT @energy_next,'数据分析','energy:analysis:query',2,2,@energy_root,'analysis','lucide:chart-no-axes-combined','energy/analysis/index','EnergyAnalysis',0,1,0,1,'1',NOW(),'1',NOW(),0 FROM DUAL WHERE @energy_analysis IS NULL;
SET @energy_analysis = COALESCE(@energy_analysis,@energy_next);
SET @energy_next = (SELECT MAX(id)+1 FROM system_menu);
INSERT INTO system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT @energy_next,'新增能耗记录','energy:record:create',3,1,@energy_record,'','','','',0,1,0,1,'1',NOW(),'1',NOW(),0 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE permission='energy:record:create' AND deleted=b'0');
SET @energy_next = (SELECT MAX(id)+1 FROM system_menu);
INSERT INTO system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT @energy_next,'修改能耗记录','energy:record:update',3,2,@energy_record,'','','','',0,1,0,1,'1',NOW(),'1',NOW(),0 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE permission='energy:record:update' AND deleted=b'0');
SET @energy_next = (SELECT MAX(id)+1 FROM system_menu);
INSERT INTO system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT @energy_next,'删除能耗记录','energy:record:delete',3,3,@energy_record,'','','','',0,1,0,1,'1',NOW(),'1',NOW(),0 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE permission='energy:record:delete' AND deleted=b'0');
INSERT INTO system_role_menu (role_id,menu_id,creator,create_time,updater,update_time,deleted,tenant_id)
SELECT 1,m.id,'1',NOW(),'1',NOW(),0,r.tenant_id FROM system_menu m JOIN system_role r ON r.id=1 AND r.deleted=b'0'
WHERE m.deleted=b'0' AND (m.id=@energy_root OR m.parent_id=@energy_root OR m.parent_id=@energy_record)
AND NOT EXISTS (SELECT 1 FROM system_role_menu rm WHERE rm.role_id=1 AND rm.menu_id=m.id AND rm.deleted=b'0');
COMMIT;
sql/mysql/mdm_unit_import_export_permission_patch.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
-- mom-hm è®¡é‡å•位导入/导出权限与 MdmUnitMeasureController ä¿æŒä¸€è‡´ã€‚
-- ä¿ç•™èœå• ID å’Œå·²æœ‰è§’色授权;可重复执行。
-- æ‰§è¡ŒåŽæ¸…除这两个权限的后端缓存,并重新登录加载前端权限。
UPDATE `mom-hm`.`system_menu`
SET permission = 'mdm:unit:import', updater = '1', update_time = NOW()
WHERE permission = 'mdm:unit-measure:import';
UPDATE `mom-hm`.`system_menu`
SET permission = 'mdm:unit:export', updater = '1', update_time = NOW()
WHERE permission = 'mdm:unit-measure:export';
sql/mysql/menu_page_query_role_grants_pending.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
-- å¾…用户确认:给已有对应页面授权的角色补授查询权限,包含人资敏感数据。
INSERT INTO `mom-hm`.system_role_menu (role_id,menu_id,creator,create_time,updater,update_time,deleted)
SELECT DISTINCT parentGrant.role_id,m.id,'1',NOW(),'1',NOW(),b'0' FROM `mom-hm`.system_menu m JOIN `mom-hm`.system_role_menu parentGrant ON parentGrant.menu_id=m.parent_id AND parentGrant.deleted=b'0' JOIN `mom-hm`.system_role r ON r.id=parentGrant.role_id AND r.deleted=b'0' AND r.status=0 WHERE m.permission IN ('bi:dashboard:query','bpm:oa-notice:query','crm:invoice:query','crm:sale-quotation:query','erp:purchase-request:query','hrm:overtime:query','hrm:resignation:query','hrm:transfer:query','hrm:attendance-exception:query','hrm:attendance-holiday:query','hrm:attendance-record:query','hrm:attendance-rule:query','hrm:attendance-summary:query','hrm:employee-social-security:query','hrm:salary-calculation:query','hrm:salary-payment:query','hrm:social-security-scheme:query','hrm:tax-rate-config:query','mes:pd-document:query','mes:pd-process-param:query','mes:pd-process-param-template:query','mes:pro-mps:query','srm:tender-config:query') AND m.deleted=b'0' AND m.status=0 AND NOT EXISTS (SELECT 1 FROM `mom-hm`.system_role_menu rm WHERE rm.role_id=parentGrant.role_id AND rm.menu_id=m.id);
sql/mysql/menu_permission_consistency_patch.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
-- mom-hm å…¨ä¸šåŠ¡èœå•æƒé™ä¸€è‡´æ€§è¡¥ä¸ï¼ˆ2026-10-12)。
-- ä»¥å®žé™… Controller æƒé™ä¸ºå‡†ï¼›æ—§æƒé™æ”¹åä¿ç•™èœå• ID ä¸Žæ—¢æœ‰è§’色授权。
-- è¡¥é½å·²æœ‰é¡µé¢ç¼ºå¤±çš„æŒ‰é’®æƒé™ï¼›æ–°æ“ä½œæƒé™é»˜è®¤åªæŽˆäºˆè¶…级管理员。
-- æ–°å¢žæƒé™ä»…自动授予超级管理员;普通角色查询授权见单独待确认脚本。
-- å¯é‡å¤æ‰§è¡Œã€‚执行后清理受影响的 permission_menu_ids ç¼“存,并重新登录。
UPDATE `mom-hm`.system_menu SET permission='crm:sale-quotation:convert-contract',updater='1',update_time=NOW() WHERE id=602515 AND parent_id=602512 AND name='转合同' AND permission='crm:sale-quotation:update' AND deleted=b'0';
UPDATE `mom-hm`.system_menu SET permission = CASE permission WHEN 'mdm:unit-measure:import' THEN 'mdm:unit:import' WHEN 'mdm:unit-measure:export' THEN 'mdm:unit:export' WHEN 'mes:pd:parameter:create' THEN 'mes:pd-process-param:create' WHEN 'mes:pd:template:create' THEN 'mes:pd-process-param-template:create' WHEN 'mes:pd:parameter:update' THEN 'mes:pd-process-param:update' WHEN 'mes:pd:template:update' THEN 'mes:pd-process-param-template:update' WHEN 'mes:pd:parameter:delete' THEN 'mes:pd-process-param:delete' WHEN 'mes:pd:template:delete' THEN 'mes:pd-process-param-template:delete' WHEN 'mes:pd:parameter:export' THEN 'mes:pd-process-param:export' WHEN 'mes:pd:template:export' THEN 'mes:pd-process-param-template:export' WHEN 'mes:wm-outsource-issue:execute' THEN 'mes:wm-outsource-issue:finish' WHEN 'mes:wm-return-vendor:update-status' THEN 'mes:wm-return-vendor:finish' WHEN 'mes:wm-material-stock:move' THEN 'mes:wm-material-stock:update' WHEN 'mes:pd-project:archive' THEN 'mes:pd-project:update' ELSE permission END, updater='1',update_time=NOW() WHERE permission IN ('mdm:unit-measure:import','mdm:unit-measure:export','mes:pd:parameter:create','mes:pd:template:create','mes:pd:parameter:update','mes:pd:template:update','mes:pd:parameter:delete','mes:pd:template:delete','mes:pd:parameter:export','mes:pd:template:export','mes:wm-outsource-issue:execute','mes:wm-return-vendor:update-status','mes:wm-material-stock:move','mes:pd-project:archive');
INSERT INTO `mom-hm`.system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted)
SELECT next_id.id + desired.offset_id,desired.name,desired.permission,3,90,parent.id,'','#','',NULL,0,b'1',b'0',b'1','1',NOW(),'1',NOW(),b'0'
FROM (SELECT 1 AS offset_id,'bi:dashboard:query' AS permission,1063007 AS parent_id,'图表配置-查询' AS name
UNION ALL
SELECT 2 AS offset_id,'bpm:oa-notice:query' AS permission,602608 AS parent_id,'通知公告-查询' AS name
UNION ALL
SELECT 3 AS offset_id,'crm:invoice:query' AS permission,1063093 AS parent_id,'开票管理-查询' AS name
UNION ALL
SELECT 4 AS offset_id,'crm:sale-quotation:query' AS permission,602512 AS parent_id,'销售报价-查询' AS name
UNION ALL
SELECT 5 AS offset_id,'crm:sale-quotation:export' AS permission,602512 AS parent_id,'销售报价-导出' AS name
UNION ALL
SELECT 6 AS offset_id,'crm:sale-quotation:convert-contract' AS permission,602512 AS parent_id,'销售报价-转合同' AS name
UNION ALL
SELECT 7 AS offset_id,'erp:purchase-order:import' AS permission,2666 AS parent_id,'采购订单-导入' AS name
UNION ALL
SELECT 8 AS offset_id,'erp:purchase-request:query' AS permission,602498 AS parent_id,'采购申请-查询' AS name
UNION ALL
SELECT 9 AS offset_id,'erp:purchase-request:submit' AS permission,602498 AS parent_id,'采购申请-提交' AS name
UNION ALL
SELECT 10 AS offset_id,'erp:purchase-request:generate-order' AS permission,602498 AS parent_id,'采购申请-生成订单' AS name
UNION ALL
SELECT 11 AS offset_id,'erp:sale-order:cancel' AS permission,2638 AS parent_id,'销售订单-撤销' AS name
UNION ALL
SELECT 12 AS offset_id,'erp:sale-order:enable' AS permission,2638 AS parent_id,'销售订单-启用' AS name
UNION ALL
SELECT 13 AS offset_id,'erp:sale-order:import' AS permission,2638 AS parent_id,'销售订单-导入' AS name
UNION ALL
SELECT 14 AS offset_id,'hrm:leave:export' AS permission,6003 AS parent_id,'请假申请-导出' AS name
UNION ALL
SELECT 15 AS offset_id,'hrm:overtime:query' AS permission,1065211 AS parent_id,'加班申请-查询' AS name
UNION ALL
SELECT 16 AS offset_id,'hrm:resignation:query' AS permission,6005 AS parent_id,'离职申请-查询' AS name
UNION ALL
SELECT 17 AS offset_id,'hrm:resignation:export' AS permission,6005 AS parent_id,'离职申请-导出' AS name
UNION ALL
SELECT 18 AS offset_id,'hrm:transfer:query' AS permission,6004 AS parent_id,'调岗申请-查询' AS name
UNION ALL
SELECT 19 AS offset_id,'hrm:transfer:export' AS permission,6004 AS parent_id,'调岗申请-导出' AS name
UNION ALL
SELECT 20 AS offset_id,'hrm:attendance-exception:update' AS permission,6012 AS parent_id,'考勤异常-编辑' AS name
UNION ALL
SELECT 21 AS offset_id,'hrm:attendance-exception:delete' AS permission,6012 AS parent_id,'考勤异常-删除' AS name
UNION ALL
SELECT 22 AS offset_id,'hrm:attendance-exception:query' AS permission,6012 AS parent_id,'考勤异常-查询' AS name
UNION ALL
SELECT 23 AS offset_id,'hrm:attendance-holiday:query' AS permission,6014 AS parent_id,'节假日配置-查询' AS name
UNION ALL
SELECT 24 AS offset_id,'hrm:attendance-record:query' AS permission,6011 AS parent_id,'考勤记录-查询' AS name
UNION ALL
SELECT 25 AS offset_id,'hrm:attendance-rule:query' AS permission,6013 AS parent_id,'考勤规则-查询' AS name
UNION ALL
SELECT 26 AS offset_id,'hrm:attendance-summary:query' AS permission,6015 AS parent_id,'考勤统计-查询' AS name
UNION ALL
SELECT 27 AS offset_id,'hrm:employee-social-security:query' AS permission,6023 AS parent_id,'员工社保公积金档案-查询' AS name
UNION ALL
SELECT 28 AS offset_id,'hrm:salary-calculation:query' AS permission,6021 AS parent_id,'薪酬核算-查询' AS name
UNION ALL
SELECT 29 AS offset_id,'hrm:salary-calculation:delete' AS permission,6021 AS parent_id,'薪酬核算-删除' AS name
UNION ALL
SELECT 30 AS offset_id,'hrm:salary-calculation:save' AS permission,6021 AS parent_id,'薪酬核算-保存' AS name
UNION ALL
SELECT 31 AS offset_id,'hrm:salary-payment:query' AS permission,6022 AS parent_id,'薪资发放-查询' AS name
UNION ALL
SELECT 32 AS offset_id,'hrm:salary-payment:generate' AS permission,6022 AS parent_id,'薪资发放-生成' AS name
UNION ALL
SELECT 33 AS offset_id,'hrm:salary-payment:delete' AS permission,6022 AS parent_id,'薪资发放-删除' AS name
UNION ALL
SELECT 34 AS offset_id,'hrm:social-security-scheme:query' AS permission,602445 AS parent_id,'社保公积金方案-查询' AS name
UNION ALL
SELECT 35 AS offset_id,'hrm:tax-rate-config:query' AS permission,6024 AS parent_id,'个税税率配置-查询' AS name
UNION ALL
SELECT 36 AS offset_id,'mes:dv-metering:import' AS permission,5380 AS parent_id,'计量器具-导入' AS name
UNION ALL
SELECT 37 AS offset_id,'mes:md-workshop:export' AS permission,5160 AS parent_id,'车间设置-导出' AS name
UNION ALL
SELECT 38 AS offset_id,'mes:pd-archive:create' AS permission,602578 AS parent_id,'设计归档-新增' AS name
UNION ALL
SELECT 39 AS offset_id,'mes:pd-document:create' AS permission,602572 AS parent_id,'设计项目-新增' AS name
UNION ALL
SELECT 40 AS offset_id,'mes:pd-document:update' AS permission,602572 AS parent_id,'设计项目-编辑' AS name
UNION ALL
SELECT 41 AS offset_id,'mes:pd-document:delete' AS permission,602572 AS parent_id,'设计项目-删除' AS name
UNION ALL
SELECT 42 AS offset_id,'mes:pd-document:query' AS permission,602572 AS parent_id,'设计项目-查询' AS name
UNION ALL
SELECT 43 AS offset_id,'mes:pd-document:export' AS permission,602572 AS parent_id,'设计项目-导出' AS name
UNION ALL
SELECT 44 AS offset_id,'mes:pd-process-param:query' AS permission,602474 AS parent_id,'基础参数-查询' AS name
UNION ALL
SELECT 45 AS offset_id,'mes:pd-process-param-template:query' AS permission,602475 AS parent_id,'参数模板-查询' AS name
UNION ALL
SELECT 46 AS offset_id,'mes:pro-mps:query' AS permission,602504 AS parent_id,'生产计划-查询' AS name
UNION ALL
SELECT 47 AS offset_id,'mes:qc-ipqc:finish' AS permission,5650 AS parent_id,'过程检验-完成' AS name
UNION ALL
SELECT 48 AS offset_id,'mes:qc-iqc:finish' AS permission,5640 AS parent_id,'来料检验-完成' AS name
UNION ALL
SELECT 49 AS offset_id,'mes:qc-oqc:finish' AS permission,5660 AS parent_id,'出货检验-完成' AS name
UNION ALL
SELECT 50 AS offset_id,'mes:qc-rqc:finish' AS permission,5670 AS parent_id,'退货检验-完成' AS name
UNION ALL
SELECT 51 AS offset_id,'mes:wm-stock-taking-task:finish' AS permission,5957 AS parent_id,'盘点任务-完成' AS name
UNION ALL
SELECT 52 AS offset_id,'srm:tender-config:query' AS permission,602545 AS parent_id,'招投标管理-查询' AS name
UNION ALL
SELECT 54 AS offset_id,'hrm:employee-contract:import' AS permission,6006 AS parent_id,'员工合同-导入' AS name
UNION ALL
SELECT 53 AS offset_id,'srm:tender-config:update' AS permission,602545 AS parent_id,'招投标管理-编辑' AS name) desired
JOIN `mom-hm`.system_menu parent ON parent.id=desired.parent_id AND parent.type=2 AND parent.status=0 AND parent.deleted=b'0'
CROSS JOIN (SELECT COALESCE(MAX(id),0) AS id FROM `mom-hm`.system_menu) next_id
WHERE NOT EXISTS (SELECT 1 FROM `mom-hm`.system_menu existing WHERE existing.permission=desired.permission AND existing.deleted=b'0');
INSERT INTO `mom-hm`.system_role_menu (role_id,menu_id,creator,create_time,updater,update_time,deleted)
SELECT r.id,m.id,'1',NOW(),'1',NOW(),b'0' FROM `mom-hm`.system_role r JOIN `mom-hm`.system_menu m ON m.permission IN ('mdm:unit:import','mdm:unit:export','mes:pd-process-param:create','mes:pd-process-param-template:create','mes:pd-process-param:update','mes:pd-process-param-template:update','mes:pd-process-param:delete','mes:pd-process-param-template:delete','mes:pd-process-param:export','mes:pd-process-param-template:export','mes:wm-outsource-issue:finish','mes:wm-return-vendor:finish','mes:wm-material-stock:update','mes:pd-project:update','bi:dashboard:query','bpm:oa-notice:query','crm:invoice:query','crm:sale-quotation:query','crm:sale-quotation:export','crm:sale-quotation:convert-contract','erp:purchase-order:import','erp:purchase-request:query','erp:purchase-request:submit','erp:purchase-request:generate-order','erp:sale-order:cancel','erp:sale-order:enable','erp:sale-order:import','hrm:leave:export','hrm:overtime:query','hrm:resignation:query','hrm:resignation:export','hrm:transfer:query','hrm:transfer:export','hrm:attendance-exception:update','hrm:attendance-exception:delete','hrm:attendance-exception:query','hrm:attendance-holiday:query','hrm:attendance-record:query','hrm:attendance-rule:query','hrm:attendance-summary:query','hrm:employee-social-security:query','hrm:salary-calculation:query','hrm:salary-calculation:delete','hrm:salary-calculation:save','hrm:salary-payment:query','hrm:salary-payment:generate','hrm:salary-payment:delete','hrm:social-security-scheme:query','hrm:tax-rate-config:query','mes:dv-metering:import','mes:md-workshop:export','mes:pd-archive:create','mes:pd-document:create','mes:pd-document:update','mes:pd-document:delete','mes:pd-document:query','mes:pd-document:export','mes:pd-process-param:query','mes:pd-process-param-template:query','mes:pro-mps:query','mes:qc-ipqc:finish','mes:qc-iqc:finish','mes:qc-oqc:finish','mes:qc-rqc:finish','mes:wm-stock-taking-task:finish','srm:tender-config:query','srm:tender-config:update','hrm:employee-contract:import') AND m.deleted=b'0' AND m.status=0 WHERE r.code='super_admin' AND r.deleted=b'0' AND NOT EXISTS (SELECT 1 FROM `mom-hm`.system_role_menu rm WHERE rm.role_id=r.id AND rm.menu_id=m.id);
sql/mysql/mes_dv_metering_remind_config_patch.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
-- mom-hm è®¡é‡å™¨å…·åˆ°æœŸæé†’配置补丁。
-- è¡¥é½å‚数配置和即将到期站内信模板,沿用 mes_dv_metering_init.sql çš„默认值。
-- å¯é‡å¤æ‰§è¡Œï¼Œä¸è¦†ç›–已有的有效配置和模板。
-- visible=0 è¡¨ç¤ºç¦æ­¢å…¬å¼€æŒ‰é”®è¯»å–;仍可在 /infra/config ç®¡ç†è¯¥å‚数。
INSERT INTO `mom-hm`.`infra_config` (`category`, `type`, `name`, `config_key`, `value`, `visible`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
SELECT 'biz', 2, 'MES è®¡é‡å™¨å…·åˆ°æœŸæé†’天数', 'mes.dv-metering.remind-days', '30', b'0', '计量器具下次检测日期到期前 N å¤©æé†’(站内信发送给责任人)', '1', NOW(), '1', NOW(), b'0'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `mom-hm`.`infra_config` WHERE `config_key` = 'mes.dv-metering.remind-days' AND `deleted` = b'0');
INSERT INTO `mom-hm`.`system_notify_template` (`name`, `code`, `nickname`, `content`, `type`, `params`, `status`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
SELECT '计量器具到期提醒', 'mes_metering_expire_remind', 'MES ç³»ç»Ÿ', '计量器具【{meteringCode}】{meteringName} å°†äºŽ {nextCheckDate} åˆ°æœŸï¼Œè¯·åŠæ—¶å®‰æŽ’校准/检定。', 2, '["meteringCode","meteringName","nextCheckDate"]', 0, '1', NOW(), '1', NOW(), b'0'
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `mom-hm`.`system_notify_template` WHERE `code` = 'mes_metering_expire_remind' AND `deleted` = b'0');
sql/mysql/mes_wm_material_stock_import_menu.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
-- mom-hm åº“存现有量导入权限补丁,可重复执行。
-- æ ¹æ®ç»„件名定位父菜单,以 MAX(id)+1 åˆ†é…æŒ‰é’®ç¼–号,恢复软删除/禁用的权限。
-- ä»…默认授权超级管理员;业务角色请在角色管理中勾选“库存现有量导入”。
-- æ‰§è¡ŒåŽé‡æ–°ç™»å½•;若后端曾缓存缺失权限,在菜单管理中保存该按钮以刷新权限缓存。
INSERT INTO `mom-hm`.system_menu (id,name,permission,type,sort,parent_id,path,icon,component,component_name,status,visible,keep_alive,always_show,creator,create_time,updater,update_time,deleted) SELECT next_id.id,'库存现有量导入','mes:wm-material-stock:import',3,8,parent.id,'','#','',NULL,0,b'1',b'0',b'1','1',NOW(),'1',NOW(),b'0' FROM `mom-hm`.system_menu parent CROSS JOIN (SELECT COALESCE(MAX(id),0)+1 AS id FROM `mom-hm`.system_menu) next_id WHERE parent.component_name='MesWmMaterialStock' AND parent.type=2 AND parent.deleted=b'0' AND NOT EXISTS (SELECT 1 FROM `mom-hm`.system_menu WHERE permission='mes:wm-material-stock:import');
UPDATE `mom-hm`.system_menu child JOIN `mom-hm`.system_menu parent ON parent.component_name='MesWmMaterialStock' AND parent.type=2 AND parent.deleted=b'0' SET child.parent_id=parent.id,child.type=3,child.status=0,child.deleted=b'0',child.updater='1',child.update_time=NOW() WHERE child.permission='mes:wm-material-stock:import' AND (child.parent_id<>parent.id OR child.type<>3 OR child.status<>0 OR child.deleted<>b'0');
INSERT INTO `mom-hm`.system_role_menu (role_id,menu_id,creator,create_time,updater,update_time,deleted) SELECT r.id,m.id,'1',NOW(),'1',NOW(),b'0' FROM `mom-hm`.system_role r JOIN `mom-hm`.system_menu m ON m.permission='mes:wm-material-stock:import' AND m.deleted=b'0' WHERE r.code='super_admin' AND r.deleted=b'0' AND NOT EXISTS (SELECT 1 FROM `mom-hm`.system_role_menu rm WHERE rm.role_id=r.id AND rm.menu_id=m.id);
UPDATE `mom-hm`.system_role_menu rm JOIN `mom-hm`.system_role r ON r.id=rm.role_id AND r.code='super_admin' AND r.deleted=b'0' JOIN `mom-hm`.system_menu m ON m.id=rm.menu_id AND m.permission='mes:wm-material-stock:import' AND m.deleted=b'0' SET rm.deleted=b'0',rm.updater='1',rm.update_time=NOW() WHERE rm.deleted<>b'0';
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/EnergyRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.energy.vo.*;
import cn.iocoder.yudao.module.mes.service.energy.EnergyRecordService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ç‹¬ç«‹èƒ½è€—管理")
@RestController
@RequestMapping("/energy/record")
@Validated
public class EnergyRecordController {
    @Resource(name = "energyRecordService")
    private EnergyRecordService energyRecordService;
    @PostMapping("/create")
    @Operation(summary = "手动新增能耗记录")
    @PreAuthorize("@ss.hasPermission('energy:record:create')")
    public CommonResult<Long> create(@Valid @RequestBody EnergyRecordSaveReqVO req) {
        return success(energyRecordService.create(req));
    }
    @PutMapping("/update")
    @Operation(summary = "修改能耗记录")
    @PreAuthorize("@ss.hasPermission('energy:record:update')")
    public CommonResult<Boolean> update(@Valid @RequestBody EnergyRecordSaveReqVO req) {
        energyRecordService.update(req);
        return success(true);
    }
    @DeleteMapping("/delete")
    @Operation(summary = "删除能耗记录")
    @PreAuthorize("@ss.hasPermission('energy:record:delete')")
    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
        energyRecordService.delete(id);
        return success(true);
    }
    @GetMapping("/get")
    @Operation(summary = "查看能耗记录")
    @PreAuthorize("@ss.hasPermission('energy:record:query')")
    public CommonResult<EnergyRecordRespVO> get(@RequestParam("id") Long id) {
        return success(BeanUtils.toBean(energyRecordService.get(id), EnergyRecordRespVO.class));
    }
    @GetMapping("/page")
    @Operation(summary = "分页查询能耗记录")
    @PreAuthorize("@ss.hasPermission('energy:record:query')")
    public CommonResult<PageResult<EnergyRecordRespVO>> page(@Valid EnergyRecordPageReqVO req) {
        return success(BeanUtils.toBean(energyRecordService.page(req), EnergyRecordRespVO.class));
    }
    @GetMapping("/analysis")
    @Operation(summary = "能耗数据分析(按能源分别汇总用量)")
    @PreAuthorize("@ss.hasPermission('energy:analysis:query')")
    public CommonResult<EnergyAnalysisRespVO> analysis(@Valid EnergyAnalysisReqVO req) {
        return success(energyRecordService.analysis(req));
    }
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyAnalysisReqVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy.vo;
import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
public class EnergyAnalysisReqVO {
    @NotNull
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate startDate;
    @NotNull
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate endDate;
    @Pattern(regexp = "WATER|ELECTRICITY|STEAM")
    private String energyType;
    private String usageArea;
    private String productCategory;
    @NotNull
    @Pattern(regexp = "DAY|MONTH")
    private String groupBy = "DAY";
    @AssertTrue(message = "统计日期范围必须在两年以内,且开始日期不能晚于结束日期")
    public boolean isDateRangeValid() {
        return startDate == null || endDate == null
                || (!startDate.isAfter(endDate) && !endDate.isAfter(startDate.plusYears(2)));
    }
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyAnalysisRespVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Data
public class EnergyAnalysisRespVO {
    private BigDecimal totalAmount = BigDecimal.ZERO;
    private long recordCount;
    private List<Summary> summary = new ArrayList<>();
    private List<Bucket> trend = new ArrayList<>();
    private List<Bucket> areas = new ArrayList<>();
    @Data
    public static class Summary {
        private String energyType;
        private BigDecimal quantity = BigDecimal.ZERO;
        private BigDecimal amount = BigDecimal.ZERO;
        private long recordCount;
    }
    @Data
    public static class Bucket extends Summary {
        /** è¶‹åŠ¿ä¸ºæ—¥æœŸ/月,区域分布为区域名称。 */
        private String label;
    }
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyRecordPageReqVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
@EqualsAndHashCode(callSuper = true)
public class EnergyRecordPageReqVO extends PageParam {
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate startDate;
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
    private LocalDate endDate;
    @Pattern(regexp = "WATER|ELECTRICITY|STEAM")
    private String energyType;
    private String usageArea;
    private String productCategory;
    @AssertTrue(message = "开始日期不能晚于结束日期")
    public boolean isDateRangeValid() {
        return startDate == null || endDate == null || !startDate.isAfter(endDate);
    }
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyRecordRespVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy.vo;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class EnergyRecordRespVO {
    private Long id;
    private LocalDate recordDate;
    private String energyType;
    private String usageArea;
    private String productCategory;
    private String usagePurpose;
    private BigDecimal quantity;
    private BigDecimal unitPrice;
    private BigDecimal amount;
    private String recorder;
    private String remark;
    private LocalDateTime createTime;
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/energy/vo/EnergyRecordSaveReqVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
@Data
@Schema(description = "管理后台 - èƒ½è€—记录新增/修改")
public class EnergyRecordSaveReqVO {
    @Positive
    private Long id;
    @NotNull(message = "统计日期不能为空")
    @PastOrPresent(message = "统计日期不能晚于今天")
    private LocalDate recordDate;
    @NotBlank
    @Pattern(regexp = "WATER|ELECTRICITY|STEAM", message = "能源类型只能为水、电、蒸汽")
    private String energyType;
    @NotBlank(message = "使用区域不能为空")
    @Size(max = 100)
    private String usageArea;
    @NotBlank(message = "产品类别不能为空")
    @Size(max = 50)
    private String productCategory;
    @NotBlank(message = "用途不能为空")
    @Size(max = 100)
    private String usagePurpose;
    @NotNull
    @DecimalMin(value = "0", inclusive = false, message = "用量必须大于零")
    @Digits(integer = 15, fraction = 3, message = "用量最多15位整数、3位小数")
    private BigDecimal quantity;
    @NotNull
    @DecimalMin(value = "0", message = "单价不能为负数")
    @Digits(integer = 8, fraction = 4, message = "单价最多8位整数、4位小数")
    private BigDecimal unitPrice;
    @NotBlank(message = "录入人不能为空")
    @Size(max = 50)
    private String recorder;
    @Size(max = 500)
    private String remark;
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/energy/EnergyRecordDO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.energy;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.time.LocalDate;
/** ç‹¬ç«‹èƒ½è€—台账,不关联设备、工单、产品或部门主数据。 */
@TableName("mes_energy_record")
@Data
@EqualsAndHashCode(callSuper = true)
public class EnergyRecordDO extends TenantBaseDO {
    @TableId
    private Long id;
    private LocalDate recordDate;
    /** WATER / ELECTRICITY / STEAM,单位分别为 m³ / kWh / t。 */
    private String energyType;
    private String usageArea;
    private String productCategory;
    private String usagePurpose;
    private BigDecimal quantity;
    private BigDecimal unitPrice;
    private BigDecimal amount;
    private String recorder;
    private String remark;
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/energy/EnergyRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package cn.iocoder.yudao.module.mes.dal.mysql.energy;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.controller.admin.energy.vo.EnergyRecordPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.energy.vo.EnergyAnalysisReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.energy.EnergyRecordDO;
import lombok.Data;
import org.apache.ibatis.annotations.*;
import java.math.BigDecimal;
import java.util.List;
@Mapper
public interface EnergyRecordMapper extends BaseMapperX<EnergyRecordDO> {
    default PageResult<EnergyRecordDO> selectPage(EnergyRecordPageReqVO req) {
        return selectPage(req, new LambdaQueryWrapperX<EnergyRecordDO>()
                .geIfPresent(EnergyRecordDO::getRecordDate, req.getStartDate())
                .leIfPresent(EnergyRecordDO::getRecordDate, req.getEndDate())
                .eqIfPresent(EnergyRecordDO::getEnergyType, req.getEnergyType())
                .likeIfPresent(EnergyRecordDO::getUsageArea, req.getUsageArea())
                .eqIfPresent(EnergyRecordDO::getProductCategory, req.getProductCategory())
                .orderByDesc(EnergyRecordDO::getRecordDate, EnergyRecordDO::getId));
    }
    // æŒ‰æ•°æ®åº“分组,避免加载全部台账;租户拦截器自动添加 tenant_id æ¡ä»¶ã€‚
    @Select("""
        <script>
        SELECT energy_type AS energyType,
          <choose><when test="req.groupBy == 'MONTH'">DATE_FORMAT(record_date, '%Y-%m')</when>
          <otherwise>DATE_FORMAT(record_date, '%Y-%m-%d')</otherwise></choose> AS period,
          usage_area AS usageArea, SUM(quantity) AS quantity, SUM(amount) AS amount,
          COUNT(*) AS recordCount
        FROM mes_energy_record
        WHERE deleted = 0 AND record_date BETWEEN #{req.startDate} AND #{req.endDate}
        <if test="req.energyType != null and req.energyType != ''">AND energy_type = #{req.energyType}</if>
        <if test="req.usageArea != null and req.usageArea != ''">AND usage_area LIKE CONCAT('%', #{req.usageArea}, '%')</if>
        <if test="req.productCategory != null and req.productCategory != ''">AND product_category = #{req.productCategory}</if>
        GROUP BY energy_type, period, usage_area
        ORDER BY period, energy_type, usage_area
        </script>
        """)
    List<Aggregate> selectAnalysis(@Param("req") EnergyAnalysisReqVO req);
    @Data
    class Aggregate {
        private String energyType;
        private String period;
        private String usageArea;
        private BigDecimal quantity;
        private BigDecimal amount;
        private long recordCount;
    }
}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/energy/EnergyRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package cn.iocoder.yudao.module.mes.service.energy;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.energy.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.energy.EnergyRecordDO;
import cn.iocoder.yudao.module.mes.dal.mysql.energy.EnergyRecordMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.math.RoundingMode;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@Service
public class EnergyRecordService {
    private static final ErrorCode NOT_EXISTS = new ErrorCode(1_040_950_000, "能耗记录不存在或已删除");
    private static final ErrorCode ID_REQUIRED = new ErrorCode(1_040_950_001, "修改能耗记录必须提供编号");
    @Resource
    private EnergyRecordMapper recordMapper;
    public Long create(EnergyRecordSaveReqVO req) {
        EnergyRecordDO record = toRecord(req);
        record.setId(null);
        recordMapper.insert(record);
        return record.getId();
    }
    public void update(EnergyRecordSaveReqVO req) {
        if (req.getId() == null) {
            throw exception(ID_REQUIRED);
        }
        get(req.getId());
        if (recordMapper.updateById(toRecord(req)) == 0) {
            throw exception(NOT_EXISTS);
        }
    }
    public void delete(Long id) {
        get(id);
        if (recordMapper.deleteById(id) == 0) {
            throw exception(NOT_EXISTS);
        }
    }
    public EnergyRecordDO get(Long id) {
        EnergyRecordDO record = recordMapper.selectById(id);
        if (record == null) {
            throw exception(NOT_EXISTS);
        }
        return record;
    }
    public PageResult<EnergyRecordDO> page(EnergyRecordPageReqVO req) {
        return recordMapper.selectPage(req);
    }
    static EnergyRecordDO toRecord(EnergyRecordSaveReqVO req) {
        EnergyRecordDO record = BeanUtils.toBean(req, EnergyRecordDO.class);
        record.setUsageArea(req.getUsageArea().trim());
        record.setProductCategory(req.getProductCategory().trim());
        record.setUsagePurpose(req.getUsagePurpose().trim());
        record.setRecorder(req.getRecorder().trim());
        // ç©ºå¤‡æ³¨ä¹Ÿå¯åœ¨ä¿®æ”¹æ—¶æ¸…除。
        record.setRemark(req.getRemark() == null ? "" : req.getRemark().trim());
        record.setAmount(req.getQuantity().multiply(req.getUnitPrice()).setScale(2, RoundingMode.HALF_UP));
        return record;
    }
    public EnergyAnalysisRespVO analysis(EnergyAnalysisReqVO req) {
        return aggregate(recordMapper.selectAnalysis(req));
    }
    static EnergyAnalysisRespVO aggregate(List<EnergyRecordMapper.Aggregate> rows) {
        EnergyAnalysisRespVO result = new EnergyAnalysisRespVO();
        Map<String, EnergyAnalysisRespVO.Summary> summary = new LinkedHashMap<>();
        for (String type : List.of("WATER", "ELECTRICITY", "STEAM")) {
            EnergyAnalysisRespVO.Summary item = new EnergyAnalysisRespVO.Summary();
            item.setEnergyType(type);
            summary.put(type, item);
        }
        Map<List<String>, EnergyAnalysisRespVO.Bucket> trend = new LinkedHashMap<>();
        Map<List<String>, EnergyAnalysisRespVO.Bucket> areas = new LinkedHashMap<>();
        for (EnergyRecordMapper.Aggregate row : rows) {
            add(summary.get(row.getEnergyType()), row);
            add(bucket(trend, row.getPeriod(), row.getEnergyType()), row);
            add(bucket(areas, row.getUsageArea(), row.getEnergyType()), row);
            result.setTotalAmount(result.getTotalAmount().add(row.getAmount()));
            result.setRecordCount(result.getRecordCount() + row.getRecordCount());
        }
        result.setSummary(List.copyOf(summary.values()));
        result.setTrend(List.copyOf(trend.values()));
        result.setAreas(List.copyOf(areas.values()));
        return result;
    }
    private static EnergyAnalysisRespVO.Bucket bucket(Map<List<String>, EnergyAnalysisRespVO.Bucket> map,
                                                       String label, String type) {
        return map.computeIfAbsent(List.of(label, type), key -> {
            EnergyAnalysisRespVO.Bucket item = new EnergyAnalysisRespVO.Bucket();
            item.setLabel(label);
            item.setEnergyType(type);
            return item;
        });
    }
    private static void add(EnergyAnalysisRespVO.Summary item, EnergyRecordMapper.Aggregate row) {
        item.setQuantity(item.getQuantity().add(row.getQuantity()));
        item.setAmount(item.getAmount().add(row.getAmount()));
        item.setRecordCount(item.getRecordCount() + row.getRecordCount());
    }
}
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/controller/admin/energy/EnergyRecordControllerContextTest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.mes.controller.admin.energy;
import cn.iocoder.yudao.module.mes.dal.dataobject.energy.EnergyRecordDO;
import cn.iocoder.yudao.module.mes.dal.mysql.energy.EnergyRecordMapper;
import cn.iocoder.yudao.module.mes.service.energy.EnergyRecordService;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
class EnergyRecordControllerContextTest {
    @Test
    void injectsEnergyServiceWhenAnUnrelatedRecordServiceBeanExists() {
        EnergyRecordMapper mapper = mock(EnergyRecordMapper.class);
        EnergyRecordDO record = new EnergyRecordDO();
        record.setId(12L);
        when(mapper.selectById(12L)).thenReturn(record);
        try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
            // æ¨¡æ‹Ÿæ—¥å¿—组件的同名 Bean,防止 @Resource æŒ‰å­—段名误选。
            context.registerBean("recordService", Object.class, Object::new);
            context.registerBean("energyRecordMapper", EnergyRecordMapper.class, () -> mapper);
            context.register(EnergyRecordService.class, EnergyRecordController.class);
            context.refresh();
            EnergyRecordController controller = context.getBean(EnergyRecordController.class);
            assertEquals(12L, controller.get(12L).getData().getId());
            verify(mapper).selectById(12L);
        }
    }
}
yudao-module-mes/src/test/java/cn/iocoder/yudao/module/mes/service/energy/EnergyRecordServiceTest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package cn.iocoder.yudao.module.mes.service.energy;
import cn.iocoder.yudao.module.mes.controller.admin.energy.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.energy.EnergyRecordDO;
import cn.iocoder.yudao.module.mes.dal.mysql.energy.EnergyRecordMapper;
import jakarta.validation.Validation;
import org.apache.ibatis.session.Configuration;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class EnergyRecordServiceTest {
    @Mock
    private EnergyRecordMapper mapper;
    @InjectMocks
    private EnergyRecordService service;
    @Test
    void calculatesMoneyWithDecimalRoundingAndClearsRemark() {
        EnergyRecordSaveReqVO req = request();
        req.setQuantity(new BigDecimal("12.345"));
        req.setUnitPrice(new BigDecimal("0.6789"));
        EnergyRecordDO record = EnergyRecordService.toRecord(req);
        assertEquals(new BigDecimal("8.38"), record.getAmount());
        assertEquals("燕窝生产区", record.getUsageArea());
        assertEquals("", record.getRemark());
        req.setUnitPrice(BigDecimal.ZERO);
        assertEquals(new BigDecimal("0.00"), EnergyRecordService.toRecord(req).getAmount());
    }
    @Test
    void createIgnoresClientIdAndUpdateRequiresExistingRecord() {
        EnergyRecordSaveReqVO req = request();
        req.setId(77L);
        doAnswer(invocation -> {
            EnergyRecordDO record = invocation.getArgument(0);
            assertNull(record.getId());
            record.setId(9L);
            return 1;
        }).when(mapper).insert(any(EnergyRecordDO.class));
        assertEquals(9L, service.create(req));
        assertThrows(RuntimeException.class, () -> service.update(req));
        verify(mapper, never()).updateById(any(EnergyRecordDO.class));
        req.setId(null);
        assertThrows(RuntimeException.class, () -> service.update(req));
    }
    @Test
    void deleteMissingRecordDoesNotExecuteDelete() {
        assertThrows(RuntimeException.class, () -> service.delete(8L));
        verify(mapper, never()).deleteById(any(Long.class));
    }
    @Test
    void aggregatesSeparateUnitsAndMergesDatesAreasAndCosts() {
        EnergyAnalysisRespVO result = EnergyRecordService.aggregate(List.of(
                row("WATER", "2026-09-01", "燕窝生产区", "10", "30", 1),
                row("WATER", "2026-09-01", "原浆生产区", "5", "15", 2),
                row("ELECTRICITY", "2026-09-01", "燕窝生产区", "100", "80", 1),
                row("WATER", "2026-09-02", "燕窝生产区", "2", "0", 1)));
        assertEquals(new BigDecimal("125"), result.getTotalAmount());
        assertEquals(5, result.getRecordCount());
        assertEquals(new BigDecimal("17"), result.getSummary().get(0).getQuantity());
        assertEquals(new BigDecimal("100"), result.getSummary().get(1).getQuantity());
        assertEquals(BigDecimal.ZERO, result.getSummary().get(2).getQuantity());
        assertEquals(3, result.getTrend().size());
        assertEquals(new BigDecimal("15"), result.getTrend().get(0).getQuantity());
        assertEquals(3, result.getAreas().size());
        assertEquals(new BigDecimal("12"), result.getAreas().get(0).getQuantity());
    }
    @Test
    void emptyAnalysisReturnsZeroTotalsAndAllThreeEnergies() {
        EnergyAnalysisRespVO result = EnergyRecordService.aggregate(List.of());
        assertEquals(3, result.getSummary().size());
        assertEquals(BigDecimal.ZERO, result.getTotalAmount());
        assertTrue(result.getTrend().isEmpty());
        assertTrue(result.getAreas().isEmpty());
    }
    @Test
    void rejectsInvalidTypeNegativePriceZeroQuantityFutureDateAndExcessPrecision() {
        try (var factory = Validation.buildDefaultValidatorFactory()) {
            var validator = factory.getValidator();
            assertTrue(validator.validate(request()).isEmpty());
            EnergyRecordSaveReqVO req = request();
            req.setEnergyType("GAS");
            req.setUnitPrice(new BigDecimal("-1"));
            req.setQuantity(BigDecimal.ZERO);
            req.setRecordDate(LocalDate.now().plusDays(1));
            assertTrue(validator.validate(req).size() >= 4);
            req = request();
            req.setQuantity(new BigDecimal("1.0001"));
            assertFalse(validator.validate(req).isEmpty());
            EnergyAnalysisReqVO analysis = new EnergyAnalysisReqVO();
            analysis.setStartDate(LocalDate.of(2026, 1, 1));
            analysis.setEndDate(LocalDate.of(2025, 1, 1));
            assertFalse(validator.validate(analysis).isEmpty());
            analysis.setEndDate(LocalDate.of(2029, 1, 1));
            assertFalse(validator.validate(analysis).isEmpty());
        }
    }
    @Test
    void analysisSqlBindsFiltersAndSelectsDayOrMonthSafely() {
        Configuration config = new Configuration();
        config.addMapper(EnergyRecordMapper.class);
        var statement = config.getMappedStatement(EnergyRecordMapper.class.getName() + ".selectAnalysis");
        EnergyAnalysisReqVO req = new EnergyAnalysisReqVO();
        req.setStartDate(LocalDate.of(2026, 1, 1));
        req.setEndDate(LocalDate.of(2026, 1, 31));
        String daily = statement.getBoundSql(Map.of("req", req)).getSql();
        assertTrue(daily.contains("'%Y-%m-%d'"));
        assertTrue(daily.contains("deleted = 0"));
        req.setGroupBy("MONTH");
        req.setEnergyType("STEAM");
        req.setUsageArea("' OR 1=1 --");
        req.setProductCategory("燕窝");
        String monthly = statement.getBoundSql(Map.of("req", req)).getSql();
        assertTrue(monthly.contains("'%Y-%m'"));
        assertTrue(monthly.contains("energy_type = ?"));
        assertTrue(monthly.contains("product_category = ?"));
        assertFalse(monthly.contains(req.getUsageArea()));
    }
    private static EnergyRecordSaveReqVO request() {
        EnergyRecordSaveReqVO req = new EnergyRecordSaveReqVO();
        req.setRecordDate(LocalDate.now());
        req.setEnergyType("WATER");
        req.setUsageArea(" ç‡•窝生产区 ");
        req.setProductCategory("燕窝");
        req.setUsagePurpose("设备清洗");
        req.setQuantity(BigDecimal.ONE);
        req.setUnitPrice(BigDecimal.ONE);
        req.setRecorder("张三");
        return req;
    }
    private static EnergyRecordMapper.Aggregate row(String type, String period, String area,
                                                    String quantity, String amount, long count) {
        EnergyRecordMapper.Aggregate row = new EnergyRecordMapper.Aggregate();
        row.setEnergyType(type);
        row.setPeriod(period);
        row.setUsageArea(area);
        row.setQuantity(new BigDecimal(quantity));
        row.setAmount(new BigDecimal(amount));
        row.setRecordCount(count);
        return row;
    }
}
yudao-server/src/main/resources/application-local.yaml
@@ -65,7 +65,7 @@
      primary: master
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X è¿žæŽ¥çš„示例
          url: jdbc:mysql://localhost:3306/mom-hm?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X è¿žæŽ¥çš„示例
          username: root
          password: 123456