feat: 新增模块首页、国际化适配与菜单重载功能

1. 为菜单数据新增remark字段并设置默认值
2. 全量替换硬编码文本为国际化多语言支持
3. 新增生产配置模块首页组件与路由
4. 新增菜单重载action,支持语言切换后重载菜单
5. 补充简体中文、英文、日文、繁体中文语言包
This commit is contained in:
sheng
2026-05-28 15:47:19 +08:00
parent 05bfa95bfe
commit 3149ffb932
22 changed files with 1132 additions and 72 deletions

View File

@@ -8,7 +8,7 @@
<p
class="d2-module-index-menu-group--title"
:class="titleClassName">
{{menu.title}}
{{ $t(menu.title) }}
</p>
<template v-for="(item, index) in menu.children">
<d2-module-index-menu-group
@@ -27,7 +27,7 @@
<p
class="d2-module-index-menu-group--title"
:class="titleClassName">
{{menu.title}}
{{ $t(menu.title) }}
</p>
<d2-module-index-menu-item :menu="menu"/>
</template>

View File

@@ -2,7 +2,7 @@
<el-button
class="d2-module-index-menu-item"
@click="handleMenuSelect(menu.path)">
{{menu.title}}
{{ $t(menu.title) }}
</el-button>
</template>

View File

@@ -1,5 +1,5 @@
<template>
<el-tooltip effect="dark" :content="active ? '退出全屏' : '全屏'" placement="bottom">
<el-tooltip effect="dark" :content="active ? $t('page.layout.fullscreen.exit') : $t('page.layout.fullscreen.enter')" placement="bottom">
<el-button class="d2-mr btn-text can-hover" type="text" @click="toggle">
<d2-icon v-if="active" name="compress"/>
<d2-icon v-else name="arrows-alt" style="font-size: 16px"/>

View File

@@ -19,10 +19,8 @@ export default {
}),
tooltipContent () {
return this.logLength === 0
? '没有日志或异常'
: `${this.logLength} 条日志${this.logLengthError > 0
? ` | 包含 ${this.logLengthError} 个异常`
: ''}`
? this.$t('page.layout.log.no_log')
: this.$t('page.layout.log.tooltip', { count: this.logLength, error: this.logLengthError })
}
},
methods: {

View File

@@ -4,7 +4,7 @@
<d2-icon name="font" style="font-size: 16px;"/>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="item in options" :key="item.value" :command="item.value">
<el-dropdown-item v-for="item in sizeOptions" :key="item.value" :command="item.value">
<d2-icon :name="iconName(item.value)" class="d2-mr-5"/>{{item.label}}
</el-dropdown-item>
</el-dropdown-menu>
@@ -12,37 +12,32 @@
</template>
<script>
import { mapState, mapMutations, mapActions } from 'vuex'
import { mapState, mapActions } from 'vuex'
export default {
name: 'd2-header-size',
data () {
return {
options: [
{ label: '默认', value: 'default' },
{ label: '中', value: 'medium' },
{ label: '小', value: 'small' },
{ label: '最小', value: 'mini' }
]
}
},
computed: {
...mapState('d2admin/size', [
'value'
])
]),
sizeOptions () {
return [
{ label: this.$t('page.layout.size.default'), value: 'default' },
{ label: this.$t('page.layout.size.medium'), value: 'medium' },
{ label: this.$t('page.layout.size.small'), value: 'small' },
{ label: this.$t('page.layout.size.mini'), value: 'mini' }
]
}
},
methods: {
...mapMutations({
pageKeepAliveClean: 'd2admin/page/keepAliveClean'
}),
...mapActions({
sizeSet: 'd2admin/size/set'
}),
handleChange (value) {
this.sizeSet(value)
this.$notify({
title: '提示',
title: this.$t('page.layout.size.notification_title'),
dangerouslyUseHTMLString: true,
message: '已更新页面内 <b>组件</b> 的 <b>默认尺寸</b><br/>例如按钮大小,<b>非字号</b>',
message: this.$t('page.layout.size.notification_message'),
type: 'success'
})
},

View File

@@ -1,13 +1,13 @@
<template>
<el-table :data="list" v-bind="table">
<el-table-column prop="title" align="center" width="160"/>
<el-table-column label="预览" width="120">
<el-table-column :label="$t('page.layout.theme.preview')" width="120">
<div slot-scope="scope" class="theme-preview" :style="{ backgroundImage: `url(${$baseUrl}${scope.row.preview})` }"/>
</el-table-column>
<el-table-column prop="address" align="center">
<template slot-scope="scope">
<el-button v-if="activeName === scope.row.name" type="success" icon="el-icon-check" round>已激活</el-button>
<el-button v-else round @click="handleSelectTheme(scope.row.name)">使用</el-button>
<el-button v-if="activeName === scope.row.name" type="success" icon="el-icon-check" round>{{ $t('page.layout.theme.active') }}</el-button>
<el-button v-else round @click="handleSelectTheme(scope.row.name)">{{ $t('page.common.use') }}</el-button>
</template>
</el-table-column>
</el-table>

View File

@@ -2,7 +2,7 @@
<div>
<el-tooltip
effect="dark"
content="主题"
:content="$t('page.layout.theme.title')"
placement="bottom">
<el-button
class="d2-ml-0 d2-mr btn-text can-hover"
@@ -14,7 +14,7 @@
</el-button>
</el-tooltip>
<el-dialog
title="主题"
:title="$t('page.layout.theme.title')"
width="600px"
:visible.sync="dialogVisible"
:append-to-body="true">

View File

@@ -1,10 +1,10 @@
<template>
<el-dropdown size="small" class="d2-mr">
<span class="btn-text">{{info.name ? `你好 ${info.name}` : '未登录'}}</span>
<span class="btn-text">{{info.name ? $t('page.layout.user.greeting', { name: info.name }) : $t('page.layout.user.not_logged_in')}}</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="logOff">
<d2-icon name="power-off" class="d2-mr-5"/>
注销
{{ $t('page.layout.user.logout') }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

View File

@@ -12,7 +12,7 @@ export function elMenuItem (h, menu) {
key={ menu.path }
index={ menu.path }>
{ icon }
<span slot="title">{ menu.title || '未命名菜单' }</span>
<span slot="title">{ menu.title ? this.$t(menu.title) : this.$t('page.layout.menu.unnamed_menu') }</span>
</el-menu-item>
}
@@ -30,7 +30,7 @@ export function elSubmenu (h, menu) {
key={ menu.path }
index={ menu.path }>
{ icon }
<span slot="title">{ menu.title || '未命名菜单' }</span>
<span slot="title">{ menu.title ? this.$t(menu.title) : this.$t('page.layout.menu.unnamed_menu') }</span>
{ menu.children.map(child => createMenu.call(this, h, child)) }
</el-submenu>
}

View File

@@ -23,7 +23,7 @@ export default {
this.aside.length === 0 && !this.asideCollapse
? <div class="d2-layout-header-aside-menu-empty" flex="dir:top main:center cross:center">
<d2-icon name="inbox"/>
<span>没有侧栏菜单</span>
<span>{ this.$t('page.layout.menu.no_sidebar') }</span>
</div>
: null
}

View File

@@ -5,7 +5,7 @@ export default {
methods: {
handleMenuSelect (index, indexPath) {
if (/^d2-menu-empty-\d+$/.test(index) || index === undefined) {
this.$message.warning('临时菜单')
this.$message.warning(this.$t('page.layout.menu.temp_menu'))
} else if (/^https:\/\/|http:\/\//.test(index)) {
util.open(index)
} else {

View File

@@ -7,7 +7,7 @@
ref="input"
v-model="searchText"
suffix-icon="el-icon-search"
placeholder="搜索页面"
:placeholder="$t('page.layout.search.placeholder')"
:fetch-suggestions="querySearch"
:trigger-on-focus="false"
:clearable="true"
@@ -15,13 +15,7 @@
@select="handleSelect">
<d2-panel-search-item slot-scope="{ item }" :item="item"/>
</el-autocomplete>
<div class="panel-search__tip">
您可以使用快捷键
<span class="panel-search__key">{{hotkey.open}}</span>
唤醒搜索面板
<span class="panel-search__key">{{hotkey.close}}</span>
关闭
</div>
<div class="panel-search__tip" v-html="$t('page.layout.search.tip', { open: hotkey.open, close: hotkey.close })"></div>
</div>
<div v-if="resultsList.length > 0" class="panel-search__results-group" flex-box="1">
<el-card shadow="never">

View File

@@ -20,7 +20,7 @@
<el-tab-pane
v-for="page in opened"
:key="page.fullPath"
:label="page.meta.title || '未命名'"
:label="page.meta.title || $t('page.layout.tabs.unnamed')"
:name="page.fullPath"
:closable="isTabClosable(page)"/>
</el-tabs>
@@ -36,19 +36,19 @@
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="left">
<d2-icon name="arrow-left" class="d2-mr-10"/>
关闭左侧
{{ $t('page.layout.tabs.close_left') }}
</el-dropdown-item>
<el-dropdown-item command="right">
<d2-icon name="arrow-right" class="d2-mr-10"/>
关闭右侧
{{ $t('page.layout.tabs.close_right') }}
</el-dropdown-item>
<el-dropdown-item command="other">
<d2-icon name="times" class="d2-mr-10"/>
关闭其它
{{ $t('page.layout.tabs.close_other') }}
</el-dropdown-item>
<el-dropdown-item command="all">
<d2-icon name="times-circle" class="d2-mr-10"/>
全部关闭
{{ $t('page.layout.tabs.close_all') }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -70,16 +70,6 @@ export default {
contextmenuFlag: false,
contentmenuX: 0,
contentmenuY: 0,
contextmenuListIndex: [
{ icon: 'times-circle', title: '关闭全部', value: 'all' }
],
contextmenuList: [
{ icon: 'refresh', title: '刷新', value: 'refresh' },
{ icon: 'arrow-left', title: '关闭左侧', value: 'left' },
{ icon: 'arrow-right', title: '关闭右侧', value: 'right' },
{ icon: 'times', title: '关闭其它', value: 'other' },
{ icon: 'times-circle', title: '关闭全部', value: 'all' }
],
tagName: '/index'
}
},
@@ -87,7 +77,21 @@ export default {
...mapState('d2admin/page', [
'opened',
'current'
])
]),
contextmenuListIndex () {
return [
{ icon: 'times-circle', title: this.$t('page.layout.tabs.close_all'), value: 'all' }
]
},
contextmenuList () {
return [
{ icon: 'refresh', title: this.$t('page.layout.tabs.refresh'), value: 'refresh' },
{ icon: 'arrow-left', title: this.$t('page.layout.tabs.close_left'), value: 'left' },
{ icon: 'arrow-right', title: this.$t('page.layout.tabs.close_right'), value: 'right' },
{ icon: 'times', title: this.$t('page.layout.tabs.close_other'), value: 'other' },
{ icon: 'times-circle', title: this.$t('page.layout.tabs.close_all'), value: 'all' }
]
}
},
methods: {
...mapActions('d2admin/page', [
@@ -148,7 +152,7 @@ export default {
case 'right': this.closeRight(params); break
case 'other': this.closeOther(params); break
case 'all': this.closeAll(); break
default: this.$message.error('无效的操作'); break
default: this.$message.error(this.$t('page.layout.tabs.invalid_operation')); break
}
},
/**

View File

@@ -3,7 +3,8 @@
"_name": "English",
"page": {
"common": {
"help": "Help"
"help": "Help",
"use": "Apply"
},
"demo": {
"playground": {
@@ -56,6 +57,385 @@
"test_version": "Test Version",
"form_validation_failed": "Form validation failed, please check"
}
},
"layout": {
"user": {
"greeting": "Hello {name}",
"not_logged_in": "Not logged in",
"logout": "Logout"
},
"fullscreen": {
"enter": "Fullscreen",
"exit": "Exit Fullscreen"
},
"theme": {
"title": "Theme",
"preview": "Preview",
"active": "Active"
},
"size": {
"default": "Default",
"medium": "Medium",
"small": "Small",
"mini": "Mini",
"notification_title": "Notification",
"notification_message": "Updated default <b>size</b> of page <b>components</b><br/>e.g. button size, <b>not font size</b>"
},
"log": {
"no_log": "No logs or exceptions",
"tooltip": "{count} log(s) | {error} error(s)",
"tooltip_zero": "No logs or exceptions"
},
"menu": {
"no_sidebar": "No sidebar menu",
"temp_menu": "Temporary Menu",
"unnamed_menu": "Unnamed Menu"
},
"tabs": {
"unnamed": "Unnamed",
"refresh": "Refresh",
"close_left": "Close Left",
"close_right": "Close Right",
"close_other": "Close Others",
"close_all": "Close All",
"invalid_operation": "Invalid operation"
},
"search": {
"placeholder": "Search pages",
"tip": "Press <span class=\"panel-search__key\">{open}</span> to open search panel, <span class=\"panel-search__key\">{close}</span> to close"
},
"locales": {
"changed": "Current language: {name} [ {locale} ]",
"notification_title": "Language Changed",
"preview_warning": "Language switching demo only, no actual language data configured",
"preview_doc": "Documentation: <a class=\"el-link el-link--primary is-underline\" target=\"_blank\" href=\"https://d2.pub/doc/d2-admin/locales\">Internationalization | D2Admin</a>"
}
}
}
},
"__MENU_TEMP_BEGIN__": "===== 以下为临时菜单翻译,后续统一删除 =====",
"设备类型": "Device Type",
"首页": "Home",
"系统配置": "System Configuration",
"系统设置": "System Settings",
"生产管控": "Production Control",
"生产配置": "Production Configuration",
"计划与生产": "Planning & Production",
"系统监控": "System Monitoring",
"监控指示板": "Monitoring Dashboard",
"监控配置": "Monitoring Configuration",
"生产配置首页": "Production Configuration Home",
"班组模型": "Shift Group Model",
"SCADA配置首页": "SCADA Configuration Home",
"SCADA管理": "SCADA Management",
"前置采集管理": "Edge Collection Management",
"前置服务监控": "Pre-service Monitoring",
"前置服务配置": "Pre-service Configuration",
"质量管理": "Quality Management",
"采集管理": "Collection Management",
"产品列表": "Product List",
"所区设置": "Plant Area Settings",
"生产首页": "Production Home",
"工艺流程类别": "Process Flow Category",
"基础配置": "Basic Configuration",
"产线列表": "Production Line List",
"用户管理": "User Management",
"用户组": "User Groups",
"管理人员": "Administrators",
"菜单配置": "Menu Configuration",
"菜单管理": "Menu Management",
"系统助手": "System Assistant",
"操作日志": "Operation Log",
"接口日志": "Interface Log",
"问题帮助": "Help & Documentation",
"分档&NG规则验证": "分档&NG规则验证",
"测试数据验证": "Test Data Validation",
"工艺配置": "Process Configuration",
"工厂模型": "Factory Model",
"厂区设置": "Plant Area Settings",
"产线设置": "Production Line Settings",
"工作站设置": "Workstation Settings",
"工艺模型": "Process Model",
"流程类别": "Flow Category",
"工艺流程": "Process Flow",
"工序单元": "Process Unit",
"产品管理": "Product Management",
"设备首页": "Device Home",
"电池型号": "Battery Model",
"MES管理": "MES管理",
"MES结果参数配置": "MES结果参数配置",
"MES数据上传记录": "MES数据上传记录",
"生产管理": "Production Management",
"批次管理": "Batch Management",
"托盘登录": "Tray Registration",
"批次托盘": "Batch Tray",
"批次列表": "Batch List",
"追溯查询": "Traceability Query",
"电池曲线": "Battery Curve",
"生产报表": "Production Report",
"电池详情报表": "Battery Detail Report",
"设备履历报表": "Device History Report",
"生产监控": "Production Monitoring",
"报档管理": "Grade Reporting Management",
"化成分容库位监控": "Formation & Grading Location Monitoring",
"充放电进出库记录": "Charge/Discharge In/Out Log",
"电池工序管理": "Battery Process Management",
"托盘管理": "Tray Management",
"分选后管理": "Post-Sorting Management",
"分选后托盘列表": "Post-Sorting Tray List",
"设备管理": "Device Management",
"设备模型": "Device Model",
"设备台账": "Device Ledger",
"产品追溯": "Product Traceability",
"追溯管理": "Traceability Management",
"电池追溯": "Battery Traceability",
"托盘追溯": "Tray Traceability",
"数据报表": "Data Report",
"设备报表": "Device Report",
"容量等级分布报表": "Capacity Grade Distribution Report",
"设备异常查看": "Device Exception View",
"设备报警异常查询": "Device Alarm Exception Query",
"设备报警异常统计报表": "Device Alarm Exception Statistics Report",
"设置产线信息": "Set Production Line Info",
"关闭全部": "Close All",
"系统设置首页": "System Settings Home",
"异常不良管理": "Exception & Defect Management",
"所级模型": "Institute Level Model",
"物料模型": "Material Model",
"物料类别列表": "Material Category List",
"物料信息管理": "Material Info Management",
"bom物料清单": "bom物料清单",
"计量单位": "Unit of Measure",
"条件与品质管理": "Condition & Quality Management",
"SPC采集模型": "SPC采集模型",
"设备类别": "Device Category",
"设备信息管理": "Device Info Management",
"分容库位监控": "Grading Location Monitoring",
"预充库位监控": "Pre-charge Location Monitoring",
"托盘绑定": "Tray Binding",
"托盘搁置工艺管控": "Tray Hold Process Control",
"电池复投管理": "Battery Re-injection Management",
"设备监控": "Device Monitoring",
"物料监控": "Material Monitoring",
"电池分选": "Battery Sorting",
"生产工单管理": "Work Order Management",
"工单列表": "Work Order List",
"工单托盘": "Work Order Tray",
"生产工单不良报表": "Work Order Defect Report",
"预警中心": "Warning Center",
"设备点位预警": "Device Point Warning",
"冻结解冻管理": "Freeze/Unfreeze Management",
"冻结解冻列表": "Freeze/Unfreeze List",
"冻结标记配置": "Freeze Mark Configuration",
"设备点检": "Device Inspection",
"设备点检项目管理": "Inspection Item Management",
"设备点检录入": "Inspection Entry",
"设备点检日志": "Inspection Log",
"设备保养": "Device Maintenance",
"设备保养项管理": "Maintenance Item Management",
"设备保养计划": "Maintenance Plan",
"设备保养项目日历": "Maintenance Calendar",
"设备保养项详情": "Maintenance Item Details",
"设备保养项目": "Maintenance Items",
"设备保养日志": "Maintenance Log",
"设备损耗品管理": "Consumable Management",
"设备损耗品类别": "Consumable Category",
"设备损耗品项管理": "Consumable Item Management",
"设备损耗品项日志": "Consumable Item Log",
"设备故障": "Device Fault",
"设备故障管理": "Device Fault Management",
"SPC计量型报表": "SPC计量型报表",
"I-MR": "I-MR",
"CUSUM": "CUSUM",
"XBar-R": "XBar-R",
"XBar-S": "XBar-S",
"EWMA": "EWMA",
"Levey-Jennings": "Levey-Jennings",
"正态Cpk计算": "正态Cpk计算",
"SPC计数型报表": "SPC计数型报表",
"NP-Chart": "NP-Chart",
"P-Chart": "P-Chart",
"U-Chart": "U-Chart",
"C-Chart": "C-Chart",
"过程控制": "Process Control",
"检验类别管理": "Inspection Category Management",
"首巡检项目配置": "First/Patrol Inspection Item Configuration",
"首巡检录入": "First/Patrol Inspection Entry",
"首巡检报表": "First/Patrol Inspection Report",
"SPC统计过程控制": "SPC统计过程控制",
"SPC采集配置": "SPC采集配置",
"SPC渲染条件配置": "SPC渲染条件配置",
"基础追溯": "Basic Traceability",
"正反向追溯": "Forward/Reverse Traceability",
"反向追溯": "Reverse Traceability",
"正向追溯": "Forward Traceability",
"前置流程管理": "Pre-process Flow Management",
"流程服务配置": "Process Service Configuration",
"流程服务监控": "Process Service Monitoring",
"SCADA节点配置": "SCADA Node Configuration",
"SCADA数据查询": "SCADA Data Query",
"仓储管理首页": "Warehouse Management Home",
"供应商列表": "Supplier List",
"领料单列表": "Material Requisition List",
"领料单详情": "Material Requisition Details",
"客户列表": "Customer List",
"物料类别": "Material Category",
"物料列表": "Material List",
"仓库列表": "Warehouse List",
"库区类别列表": "Storage Zone Category List",
"库区列表": "Storage Zone List",
"货位列表": "Storage Location List",
"货位打印预览": "Location Print Preview",
"业务类型": "Business Type",
"单据类型": "Document Type",
"采购入库": "Purchase Receipt",
"采购入库详情": "Purchase Receipt Details",
"外协品入库": "Outsourced Product Receipt",
"外协品入库详情": "Outsourced Product Receipt Details",
"入库单": "Receipt Order",
"入库单详情": "Receipt Order Details",
"待检区上架": "Pending Inspection Putaway",
"IQC检测列表": "IQC检测列表",
"标签打印列表": "Label Print List",
"标签打印预览": "Label Print Preview",
"上架列表": "Putaway List",
"其他出库": "Other Shipment",
"外协品出库": "Outsourced Product Shipment",
"领料出库": "Material Requisition Shipment",
"其他出库详情": "Other Shipment Details",
"库存列表": "Inventory List",
"库存锁定列表": "Inventory Lock List",
"库存冻结列表": "Inventory Freeze List",
"库存日志": "Inventory Log",
"库存盘点": "Inventory Count",
"盘点详情": "Count Details",
"调拨管理": "Transfer Management",
"调拨管理详情": "Transfer Management Details",
"接口列表": "Interface List",
"采购订单列表": "Purchase Order List",
"发送数据列表": "Sent Data List",
"成品出库列表": "Finished Product Shipment List",
"MES接口日志": "MES接口日志",
"基础配置首页": "Basic Configuration Home",
"设备状态日志": "Device Status Log",
"数据看板首页": "Data Dashboard Home",
"数据中台": "Data Middleware",
"设备点检项目日志": "Inspection Item Log",
"设备损耗品寿命管理": "Consumable Lifespan Management",
"设备损耗品更换日志": "Consumable Replacement Log",
"设备报修管理": "Device Repair Management",
"设备维修记录": "Device Repair Record",
"生产批次监控": "Production Batch Monitoring",
"生产批次不良报表": "Production Batch Defect Report",
"电池数据上传": "Battery Data Upload",
"半成品数据生成": "Semi-finished Data Generation",
"托盘静置工艺管理": "Tray Static Process Management",
"批次电池": "Batch Battery",
"分档管理报表": "Grading Management Report",
"工艺详情": "Process Details",
"不良异常信息管理": "Defect Exception Info Management",
"SPC绑定": "SPC绑定",
"冻结解冻列表历史": "Freeze/Unfreeze History List",
"冻结解冻标记列表": "Freeze/Unfreeze Mark List",
"质量管理首页": "Quality Management Home",
"服务配置": "Service Configuration",
"服务监控": "Service Monitoring",
"节点设备映射": "Node-Device Mapping",
"SPC项目配置": "SPC项目配置",
"DPMO": "DPMO",
"MA": "MA",
"MAMR": "MAMR",
"MAMS": "MAMS",
"系统监控配置": "System Monitoring Configuration",
"系统监控面板": "System Monitoring Panel",
"OCR识别配置": "OCR识别配置",
"OCR识别日志": "OCR识别日志",
"班组管理": "Shift Group Management",
"排班计划": "Shift Schedule",
"排班日历": "Shift Calendar",
"暂无数据": "No data available",
"no-data-text": "No data",
"生产批次": "Production Batch",
"型号": "Model",
"批次": "Batch",
"批次投入时间": "Batch Input Time",
"批次投入数量": "Batch Input Quantity",
"不良总数": "Total Defects",
"请输入设备类型名称": "Please enter device type name",
"管理生产小组,配置小组的页面访问权限": "管理生产小组,配置小组的页面访问权限",
"管理人员账号并且绑定对应的用户组": "Manage administrator accounts and bind corresponding user groups",
"管理系统的菜单栏目": "Manage system menu items",
"实时显示服务器的CPU以及内存等状态": "实时显示服务器的CPU以及内存等状态",
"管理需要监控的的服务器,以及设置预警阈值": "管理需要监控的的服务器,以及设置预警阈值",
"记录账号对MES系统所执行的操作": "记录账号对MES系统所执行的操作",
"设备与MES系统之间的接口往来记录": "设备与MES系统之间的接口往来记录",
"MES系统功能介绍文档和部分操作手册": "MES系统功能介绍文档和部分操作手册",
"设置所区信息": "Set plant area information",
"管理工艺流程类别": "Manage process flow categories",
"管理工艺单元": "Manage process units",
"管理工艺流程和工序信息": "Manage process flow and process information",
"管理工艺详情": "Manage process details",
"设置产品电池型号等信息": "Set product battery model and other information",
"管理设备类别信息": "Manage device category information",
"管理现场设备的基本信息": "Manage basic information of on-site devices",
"管理MES系统中的计量单位": "管理MES系统中的计量单位",
"托盘调整工序": "Tray Process Adjustment",
"电池绑定托盘,托盘登录到批次上": "Bind batteries to trays and register trays to batches",
"Marking列表": "Marking列表",
"Marking标记管理": "Marking标记管理",
"设备通道连续与累计异常管理": "Device Channel Consecutive & Cumulative Exception Management",
"批次查询、修改和清理": "Batch Query, Modify, and Cleanup",
"生产批次完工报工*": "Production Batch Completion Reporting*",
"设备点检管理": "Device Inspection Management",
"设备点检项日志,可以修改点检状态": "Inspection item log with ability to modify inspection status",
"设备保养查询,显示需要保养的项目": "设备保养查询,显示需要保养的项目",
"管理设备保养计划,制定保养计划": "管理设备保养计划,制定保养计划",
"设备保养项目日历,根据月度显示是否保养": "设备保养项目日历,根据月度显示是否保养",
"设备保养项详情,可以设置保养周期等计划": "Maintenance item details with ability to set maintenance cycles",
"管理设备保养项目,针对设备添加保养项目": "管理设备保养项目,针对设备添加保养项目",
"设备保养日志,可以观察详情记录": "Maintenance log for viewing detailed records",
"生产批次追溯*": "Production Batch Traceability*",
"查看电池曲线数据": "View battery curve data",
"追溯电池的历史生产数据": "Trace historical production data of batteries",
"管理SCADA节点": "Manage SCADA nodes",
"查询SCADA节点数据": "Query SCADA node data",
"监控启用的前置服务": "Monitor enabled pre-services",
"管理和配置前置服务": "Manage and configure pre-services",
"生产批次管理": "Production Batch Management",
"数据中台首页": "Data Middleware Home",
"系统下载任务": "System Download Tasks",
"获取文件": "Get File",
"设备状态管理": "Device Status Management",
"设备维修管理": "Device Repair Management",
"管理生产物料信息": "Manage production material information",
"批次登录的托盘查询": "Query trays registered to batches",
"电池编码": "Battery Code",
"批次号": "Batch No.",
"托盘号": "Tray No.",
"流水号": "Serial No.",
"激活状态": "Activation Status",
"档位类别": "Grade Category",
"档位": "Grade",
"分类": "Category",
"参数关系": "Parameter Relationship",
"档位说明": "Grade Description",
"操作": "Actions",
"实时采集监控": "Real-time Collection Monitoring",
"前置服务日志": "Pre-service Log",
"环控管理": "Environmental Control Management",
"环控数据查询": "Environmental Data Query",
"环控节点配置": "Environmental Node Configuration",
"车间配置管理": "Workshop Configuration Management",
"车间点位管理": "Workshop Point Management",
"条件验证管理": "Condition Validation Management",
"检验标准": "Inspection Standard",
"检验单管理": "Inspection Order Management",
"接收质量限": "Acceptable Quality Limit",
"检测方案维护": "Inspection Plan Maintenance",
"检验项目": "Inspection Item",
"抽样方案配置": "Sampling Plan Configuration",
"检验单详情": "Inspection Order Details",
"检验控制": "Inspection Control",
"相关性分析": "Correlation Analysis",
"鹰眼": "Eagle Eyes",
"__MENU_TEMP_END__": "===== 以上为临时菜单翻译,后续统一删除 ====="
}

View File

@@ -2,12 +2,69 @@
"_element": "ja",
"_name": "日本語",
"page": {
"common": {
"help": "ヘルプ",
"use": "適用"
},
"demo": {
"playground": {
"locales": {
"text": "D2Adminは、最新のフロントエンドテクロジースタックを使用した、完全にオープンソースの無料エンタープライズバックエンド製品フロントエンド統合ソリューションであり、プロジェクトのほとんどの準備を整えており、システムのアジャイル開発の管理に役立つ多くのサンプルコードを備えています。"
}
}
},
"layout": {
"user": {
"greeting": "こんにちは {name}",
"not_logged_in": "未ログイン",
"logout": "ログアウト"
},
"fullscreen": {
"enter": "全画面",
"exit": "全画面終了"
},
"theme": {
"title": "テーマ",
"preview": "プレビュー",
"active": "有効"
},
"size": {
"default": "デフォルト",
"medium": "中",
"small": "小",
"mini": "最小",
"notification_title": "お知らせ",
"notification_message": "ページ内の<b>コンポーネント</b>の<b>デフォルトサイズ</b>を更新しました<br/>例:ボタンサイズ、<b>フォントサイズではありません</b>"
},
"log": {
"no_log": "ログまたは例外はありません",
"tooltip": "{count} 件のログ | {error} 件のエラー",
"tooltip_zero": "ログまたは例外はありません"
},
"menu": {
"no_sidebar": "サイドバーメニューがありません",
"temp_menu": "一時メニュー",
"unnamed_menu": "名称未設定メニュー"
},
"tabs": {
"unnamed": "名称未設定",
"refresh": "リフレッシュ",
"close_left": "左側を閉じる",
"close_right": "右側を閉じる",
"close_other": "その他を閉じる",
"close_all": "すべて閉じる",
"invalid_operation": "無効な操作"
},
"search": {
"placeholder": "ページ検索",
"tip": "ショートカットキー <span class=\"panel-search__key\">{open}</span> で検索パネルを開き、<span class=\"panel-search__key\">{close}</span> で閉じます"
},
"locales": {
"changed": "現在の言語:{name} [ {locale} ]",
"notification_title": "言語変更",
"preview_warning": "切替機能のみ、言語データは設定されていません",
"preview_doc": "ドキュメント:<a class=\"el-link el-link--primary is-underline\" target=\"_blank\" href=\"https://d2.pub/doc/d2-admin/locales\">《国際化 | D2Admin》</a>"
}
}
}
}

View File

@@ -2,19 +2,20 @@ export default {
methods: {
onChangeLocale (command) {
this.$i18n.locale = command
let message = `当前语言:${this.$t('_name')} [ ${this.$i18n.locale} ]`
let message = this.$t('page.layout.locales.changed', { name: this.$t('_name'), locale: this.$i18n.locale })
if (process.env.VUE_APP_BUILD_MODE === 'PREVIEW') {
message = [
`当前语言:${this.$t('_name')} [ ${this.$i18n.locale} ]`,
'仅提供切换功能,没有配置具体的语言数据 ',
'文档参考:<a class="el-link el-link--primary is-underline" target="_blank" href="https://d2.pub/doc/d2-admin/locales">《国际化 | D2Admin》</a>'
this.$t('page.layout.locales.changed', { name: this.$t('_name'), locale: this.$i18n.locale }),
this.$t('page.layout.locales.preview_warning'),
this.$t('page.layout.locales.preview_doc')
].join('<br/>')
}
this.$notify({
title: '语言变更',
title: this.$t('page.layout.locales.notification_title'),
dangerouslyUseHTMLString: true,
message
})
this.$store.dispatch('d2admin/menu/menuReload')
}
}
}

View File

@@ -3,7 +3,8 @@
"_name": "简体中文",
"page": {
"common": {
"help": "帮 助"
"help": "帮 助",
"use": "使用"
},
"demo": {
"playground": {
@@ -56,6 +57,385 @@
"test_version": "测试版本",
"form_validation_failed": "表单校验失败,请检查"
}
},
"layout": {
"user": {
"greeting": "你好 {name}",
"not_logged_in": "未登录",
"logout": "注销"
},
"fullscreen": {
"enter": "全屏",
"exit": "退出全屏"
},
"theme": {
"title": "主题",
"preview": "预览",
"active": "已激活"
},
"size": {
"default": "默认",
"medium": "中",
"small": "小",
"mini": "最小",
"notification_title": "提示",
"notification_message": "已更新页面内 <b>组件</b> 的 <b>默认尺寸</b><br/>例如按钮大小,<b>非字号</b>"
},
"log": {
"no_log": "没有日志或异常",
"tooltip": "{count} 条日志 | 包含 {error} 个异常",
"tooltip_zero": "没有日志或异常"
},
"menu": {
"no_sidebar": "没有侧栏菜单",
"temp_menu": "临时菜单",
"unnamed_menu": "未命名菜单"
},
"tabs": {
"unnamed": "未命名",
"refresh": "刷新",
"close_left": "关闭左侧",
"close_right": "关闭右侧",
"close_other": "关闭其它",
"close_all": "全部关闭",
"invalid_operation": "无效的操作"
},
"search": {
"placeholder": "搜索页面",
"tip": "您可以使用快捷键 <span class=\"panel-search__key\">{open}</span> 唤醒搜索面板,按 <span class=\"panel-search__key\">{close}</span> 关闭"
},
"locales": {
"changed": "当前语言:{name} [ {locale} ]",
"notification_title": "语言变更",
"preview_warning": "仅提供切换功能,没有配置具体的语言数据",
"preview_doc": "文档参考:<a class=\"el-link el-link--primary is-underline\" target=\"_blank\" href=\"https://d2.pub/doc/d2-admin/locales\">《国际化 | D2Admin》</a>"
}
}
}
},
"__MENU_TEMP_BEGIN__": "===== 以下为临时菜单翻译,后续统一删除 =====",
"设备类型": "设备类型",
"首页": "首页",
"系统配置": "系统配置",
"系统设置": "系统设置",
"生产管控": "生产管控",
"生产配置": "生产配置",
"计划与生产": "计划与生产",
"系统监控": "系统监控",
"监控指示板": "监控指示板",
"监控配置": "监控配置",
"生产配置首页": "生产配置首页",
"班组模型": "班组模型",
"SCADA配置首页": "SCADA配置首页",
"SCADA管理": "SCADA管理",
"前置采集管理": "前置采集管理",
"前置服务监控": "前置服务监控",
"前置服务配置": "前置服务配置",
"质量管理": "质量管理",
"采集管理": "采集管理",
"产品列表": "产品列表",
"所区设置": "所区设置",
"生产首页": "生产首页",
"工艺流程类别": "工艺流程类别",
"基础配置": "基础配置",
"产线列表": "产线列表",
"用户管理": "用户管理",
"用户组": "用户组",
"管理人员": "管理人员",
"菜单配置": "菜单配置",
"菜单管理": "菜单管理",
"系统助手": "系统助手",
"操作日志": "操作日志",
"接口日志": "接口日志",
"问题帮助": "问题帮助",
"分档&NG规则验证": "分档&NG规则验证",
"测试数据验证": "测试数据验证",
"工艺配置": "工艺配置",
"工厂模型": "工厂模型",
"厂区设置": "厂区设置",
"产线设置": "产线设置",
"工作站设置": "工作站设置",
"工艺模型": "工艺模型",
"流程类别": "流程类别",
"工艺流程": "工艺流程",
"工序单元": "工序单元",
"产品管理": "产品管理",
"设备首页": "设备首页",
"电池型号": "电池型号",
"MES管理": "MES管理",
"MES结果参数配置": "MES结果参数配置",
"MES数据上传记录": "MES数据上传记录",
"生产管理": "生产管理",
"批次管理": "批次管理",
"托盘登录": "托盘登录",
"批次托盘": "批次托盘",
"批次列表": "批次列表",
"追溯查询": "追溯查询",
"电池曲线": "电池曲线",
"生产报表": "生产报表",
"电池详情报表": "电池详情报表",
"设备履历报表": "设备履历报表",
"生产监控": "生产监控",
"报档管理": "报档管理",
"化成分容库位监控": "化成分容库位监控",
"充放电进出库记录": "充放电进出库记录",
"电池工序管理": "电池工序管理",
"托盘管理": "托盘管理",
"分选后管理": "分选后管理",
"分选后托盘列表": "分选后托盘列表",
"设备管理": "设备管理",
"设备模型": "设备模型",
"设备台账": "设备台账",
"产品追溯": "产品追溯",
"追溯管理": "追溯管理",
"电池追溯": "电池追溯",
"托盘追溯": "托盘追溯",
"数据报表": "数据报表",
"设备报表": "设备报表",
"容量等级分布报表": "容量等级分布报表",
"设备异常查看": "设备异常查看",
"设备报警异常查询": "设备报警异常查询",
"设备报警异常统计报表": "设备报警异常统计报表",
"设置产线信息": "设置产线信息",
"关闭全部": "关闭全部",
"系统设置首页": "系统设置首页",
"异常不良管理": "异常不良管理",
"所级模型": "所级模型",
"物料模型": "物料模型",
"物料类别列表": "物料类别列表",
"物料信息管理": "物料信息管理",
"bom物料清单": "BOM物料清单",
"计量单位": "计量单位",
"条件与品质管理": "条件与品质管理",
"SPC采集模型": "SPC采集模型",
"设备类别": "设备类别",
"设备信息管理": "设备信息管理",
"分容库位监控": "分容库位监控",
"预充库位监控": "预充库位监控",
"托盘绑定": "托盘绑定",
"托盘搁置工艺管控": "托盘搁置工艺管控",
"电池复投管理": "电池复投管理",
"设备监控": "设备监控",
"物料监控": "物料监控",
"电池分选": "电池分选",
"生产工单管理": "生产工单管理",
"工单列表": "工单列表",
"工单托盘": "工单托盘",
"生产工单不良报表": "生产工单不良报表",
"预警中心": "预警中心",
"设备点位预警": "设备点位预警",
"冻结解冻管理": "冻结解冻管理",
"冻结解冻列表": "冻结解冻列表",
"冻结标记配置": "冻结标记配置",
"设备点检": "设备点检",
"设备点检项目管理": "设备点检项目管理",
"设备点检录入": "设备点检录入",
"设备点检日志": "设备点检日志",
"设备保养": "设备保养",
"设备保养项管理": "设备保养项管理",
"设备保养计划": "设备保养计划",
"设备保养项目日历": "设备保养项目日历",
"设备保养项详情": "设备保养项详情",
"设备保养项目": "设备保养项目",
"设备保养日志": "设备保养日志",
"设备损耗品管理": "设备损耗品管理",
"设备损耗品类别": "设备损耗品类别",
"设备损耗品项管理": "设备损耗品项管理",
"设备损耗品项日志": "设备损耗品项日志",
"设备故障": "设备故障",
"设备故障管理": "设备故障管理",
"SPC计量型报表": "SPC计量型报表",
"I-MR": "I-MR",
"CUSUM": "CUSUM",
"XBar-R": "XBar-R",
"XBar-S": "XBar-S",
"EWMA": "EWMA",
"Levey-Jennings": "Levey-Jennings",
"正态Cpk计算": "正态Cpk计算",
"SPC计数型报表": "SPC计数型报表",
"NP-Chart": "NP-Chart",
"P-Chart": "P-Chart",
"U-Chart": "U-Chart",
"C-Chart": "C-Chart",
"过程控制": "过程控制",
"检验类别管理": "检验类别管理",
"首巡检项目配置": "首巡检项目配置",
"首巡检录入": "首巡检录入",
"首巡检报表": "首巡检报表",
"SPC统计过程控制": "SPC统计过程控制",
"SPC采集配置": "SPC采集配置",
"SPC渲染条件配置": "SPC渲染条件配置",
"基础追溯": "基础追溯",
"正反向追溯": "正反向追溯",
"反向追溯": "反向追溯",
"正向追溯": "正向追溯",
"前置流程管理": "前置流程管理",
"流程服务配置": "流程服务配置",
"流程服务监控": "流程服务监控",
"SCADA节点配置": "SCADA节点配置",
"SCADA数据查询": "SCADA数据查询",
"仓储管理首页": "仓储管理首页",
"供应商列表": "供应商列表",
"领料单列表": "领料单列表",
"领料单详情": "领料单详情",
"客户列表": "客户列表",
"物料类别": "物料类别",
"物料列表": "物料列表",
"仓库列表": "仓库列表",
"库区类别列表": "库区类别列表",
"库区列表": "库区列表",
"货位列表": "货位列表",
"货位打印预览": "货位打印预览",
"业务类型": "业务类型",
"单据类型": "单据类型",
"采购入库": "采购入库",
"采购入库详情": "采购入库详情",
"外协品入库": "外协品入库",
"外协品入库详情": "外协品入库详情",
"入库单": "入库单",
"入库单详情": "入库单详情",
"待检区上架": "待检区上架",
"IQC检测列表": "IQC检测列表",
"标签打印列表": "标签打印列表",
"标签打印预览": "标签打印预览",
"上架列表": "上架列表",
"其他出库": "其他出库",
"外协品出库": "外协品出库",
"领料出库": "领料出库",
"其他出库详情": "其他出库详情",
"库存列表": "库存列表",
"库存锁定列表": "库存锁定列表",
"库存冻结列表": "库存冻结列表",
"库存日志": "库存日志",
"库存盘点": "库存盘点",
"盘点详情": "盘点详情",
"调拨管理": "调拨管理",
"调拨管理详情": "调拨管理详情",
"接口列表": "接口列表",
"采购订单列表": "采购订单列表",
"发送数据列表": "发送数据列表",
"成品出库列表": "成品出库列表",
"MES接口日志": "MES接口日志",
"基础配置首页": "基础配置首页",
"设备状态日志": "设备状态日志",
"数据看板首页": "数据看板首页",
"数据中台": "数据中台",
"设备点检项目日志": "设备点检项目日志",
"设备损耗品寿命管理": "设备损耗品寿命管理",
"设备损耗品更换日志": "设备损耗品更换日志",
"设备报修管理": "设备报修管理",
"设备维修记录": "设备维修记录",
"生产批次监控": "生产批次监控",
"生产批次不良报表": "生产批次不良报表",
"电池数据上传": "电池数据上传",
"半成品数据生成": "半成品数据生成",
"托盘静置工艺管理": "托盘静置工艺管理",
"批次电池": "批次电池",
"分档管理报表": "分档管理报表",
"工艺详情": "工艺详情",
"不良异常信息管理": "不良异常信息管理",
"SPC绑定": "SPC绑定",
"冻结解冻列表历史": "冻结解冻列表历史",
"冻结解冻标记列表": "冻结解冻标记列表",
"质量管理首页": "质量管理首页",
"服务配置": "服务配置",
"服务监控": "服务监控",
"节点设备映射": "节点设备映射",
"SPC项目配置": "SPC项目配置",
"DPMO": "DPMO",
"MA": "MA",
"MAMR": "MAMR",
"MAMS": "MAMS",
"系统监控配置": "系统监控配置",
"系统监控面板": "系统监控面板",
"OCR识别配置": "OCR识别配置",
"OCR识别日志": "OCR识别日志",
"班组管理": "班组管理",
"排班计划": "排班计划",
"排班日历": "排班日历",
"暂无数据": "暂无数据",
"no-data-text": "无数据",
"生产批次": "生产批次",
"型号": "型号",
"批次": "批次",
"批次投入时间": "批次投入时间",
"批次投入数量": "批次投入数量",
"不良总数": "不良总数",
"请输入设备类型名称": "请输入设备类型名称",
"管理生产小组,配置小组的页面访问权限": "管理生产小组,配置小组的页面访问权限",
"管理人员账号并且绑定对应的用户组": "管理人员账号并且绑定对应的用户组",
"管理系统的菜单栏目": "管理系统的菜单栏目",
"实时显示服务器的CPU以及内存等状态": "实时显示服务器的CPU以及内存等状态",
"管理需要监控的的服务器,以及设置预警阈值": "管理需要监控的的服务器,以及设置预警阈值",
"记录账号对MES系统所执行的操作": "记录账号对MES系统所执行的操作",
"设备与MES系统之间的接口往来记录": "设备与MES系统之间的接口往来记录",
"MES系统功能介绍文档和部分操作手册": "MES系统功能介绍文档和部分操作手册",
"设置所区信息": "设置所区信息",
"管理工艺流程类别": "管理工艺流程类别",
"管理工艺单元": "管理工艺单元",
"管理工艺流程和工序信息": "管理工艺流程和工序信息",
"管理工艺详情": "管理工艺详情",
"设置产品电池型号等信息": "设置产品电池型号等信息",
"管理设备类别信息": "管理设备类别信息",
"管理现场设备的基本信息": "管理现场设备的基本信息",
"管理MES系统中的计量单位": "管理MES系统中的计量单位",
"托盘调整工序": "托盘调整工序",
"电池绑定托盘,托盘登录到批次上": "电池绑定托盘,托盘登录到批次上",
"Marking列表": "Marking列表",
"Marking标记管理": "Marking标记管理",
"设备通道连续与累计异常管理": "设备通道连续与累计异常管理",
"批次查询、修改和清理": "批次查询、修改和清理",
"生产批次完工报工*": "生产批次完工报工*",
"设备点检管理": "设备点检管理",
"设备点检项日志,可以修改点检状态": "设备点检项日志,可以修改点检状态",
"设备保养查询,显示需要保养的项目": "设备保养查询,显示需要保养的项目",
"管理设备保养计划,制定保养计划": "管理设备保养计划,制定保养计划",
"设备保养项目日历,根据月度显示是否保养": "设备保养项目日历,根据月度显示是否保养",
"设备保养项详情,可以设置保养周期等计划": "设备保养项详情,可以设置保养周期等计划",
"管理设备保养项目,针对设备添加保养项目": "管理设备保养项目,针对设备添加保养项目",
"设备保养日志,可以观察详情记录": "设备保养日志,可以观察详情记录",
"生产批次追溯*": "生产批次追溯*",
"查看电池曲线数据": "查看电池曲线数据",
"追溯电池的历史生产数据": "追溯电池的历史生产数据",
"管理SCADA节点": "管理SCADA节点",
"查询SCADA节点数据": "查询SCADA节点数据",
"监控启用的前置服务": "监控启用的前置服务",
"管理和配置前置服务": "管理和配置前置服务",
"生产批次管理": "生产批次管理",
"数据中台首页": "数据中台首页",
"系统下载任务": "系统下载任务",
"获取文件": "获取文件",
"设备状态管理": "设备状态管理",
"设备维修管理": "设备维修管理",
"管理生产物料信息": "管理生产物料信息",
"批次登录的托盘查询": "批次登录的托盘查询",
"电池编码": "电池编码",
"批次号": "批次号",
"托盘号": "托盘号",
"流水号": "流水号",
"激活状态": "激活状态",
"档位类别": "档位类别",
"档位": "档位",
"分类": "分类",
"参数关系": "参数关系",
"档位说明": "档位说明",
"操作": "操作",
"实时采集监控": "实时采集监控",
"前置服务日志": "前置服务日志",
"环控管理": "环控管理",
"环控数据查询": "环控数据查询",
"环控节点配置": "环控节点配置",
"车间配置管理": "车间配置管理",
"车间点位管理": "车间点位管理",
"条件验证管理": "条件验证管理",
"检验标准": "检验标准",
"检验单管理": "检验单管理",
"接收质量限": "接收质量限",
"检测方案维护": "检测方案维护",
"检验项目": "检验项目",
"抽样方案配置": "抽样方案配置",
"检验单详情": "检验单详情",
"检验控制": "检验控制",
"相关性分析": "相关性分析",
"鹰眼": "鹰眼",
"__MENU_TEMP_END__": "===== 以上为临时菜单翻译,后续统一删除 ====="
}

View File

@@ -2,12 +2,69 @@
"_element": "zh-TW",
"_name": "繁體中文",
"page": {
"common": {
"help": "幫 助",
"use": "使用"
},
"demo": {
"playground": {
"locales": {
"text": "D2Admin 是一個完全 開源免費 的企業中後台產品前端集成方案,使用最新的前端技術棧,已經做好大部分項目前期準備工作,並且帶有大量示例代碼,助力管理系統敏捷開發。"
}
}
},
"layout": {
"user": {
"greeting": "你好 {name}",
"not_logged_in": "未登錄",
"logout": "登出"
},
"fullscreen": {
"enter": "全螢幕",
"exit": "退出全螢幕"
},
"theme": {
"title": "主題",
"preview": "預覽",
"active": "已啟用"
},
"size": {
"default": "預設",
"medium": "中",
"small": "小",
"mini": "最小",
"notification_title": "提示",
"notification_message": "已更新頁面內 <b>元件</b> 的 <b>預設尺寸</b><br/>例如按鈕大小,<b>非字號</b>"
},
"log": {
"no_log": "沒有日誌或異常",
"tooltip": "{count} 條日誌 | 包含 {error} 個異常",
"tooltip_zero": "沒有日誌或異常"
},
"menu": {
"no_sidebar": "沒有側欄選單",
"temp_menu": "臨時選單",
"unnamed_menu": "未命名選單"
},
"tabs": {
"unnamed": "未命名",
"refresh": "重新整理",
"close_left": "關閉左側",
"close_right": "關閉右側",
"close_other": "關閉其它",
"close_all": "全部關閉",
"invalid_operation": "無效的操作"
},
"search": {
"placeholder": "搜尋頁面",
"tip": "您可以使用快捷鍵 <span class=\"panel-search__key\">{open}</span> 喚醒搜尋面板,按 <span class=\"panel-search__key\">{close}</span> 關閉"
},
"locales": {
"changed": "目前語言:{name} [ {locale} ]",
"notification_title": "語言變更",
"preview_warning": "僅提供切換功能,沒有配置具體的語言資料",
"preview_doc": "文件參考:<a class=\"el-link el-link--primary is-underline\" target=\"_blank\" href=\"https://d2.pub/doc/d2-admin/locales\">《國際化 | D2Admin》</a>"
}
}
}
}

View File

@@ -17,7 +17,8 @@ function getMenuData (arr) {
title: value.name,
icon: value.icon,
type: value.type,
params: value.params
params: value.params,
remark: value.remark || ''
}
// parent_id 为 0 的节点放入顶栏

View File

@@ -8,6 +8,12 @@ export default {
path: '/production_configuration',
component: layoutHeaderAside,
children: (pre => [
{
path: 'index',
name: `${pre}index`,
meta: { ...meta, title: '生产配置', root: '/production_configuration' },
component: _import('system/function/module-index')
},
{
path: 'factory_model/factory_area',
name: `${pre}factory_model-factory_area`,

View File

@@ -89,6 +89,19 @@ export default {
// 构建菜单树和权限字典
menu.install(this, state.sourceData)
},
async menuReload ({ state, dispatch }) {
if (!util.cookies.get('token')) {
return
}
await dispatch('d2admin/db/set', {
dbName: 'database',
path: '$menu.sourceData',
value: [],
user: true
}, { root: true })
state.sourceData = []
await dispatch('sourceDataLoad')
}
},
mutations: {

View File

@@ -0,0 +1,174 @@
<template>
<div class="d2-navi">
<d2-scrollbar>
<el-collapse v-model="activeNames">
<el-collapse-item
v-for="(item, index) in menuData"
:key="`parent${index}`"
:name="item.menu_id">
<template slot="title">
<span class="d2-navi__title">
<d2-icon v-if="item.icon" class="iconfont__mini" :name="item.icon"/>
<i v-else class="el-icon-folder"/>
</span>
<span>{{ $t(item.title) }}</span>
</template>
<div class="flex-wrap">
<div
v-for="(sub, key) in item.children"
:key="`sub${key}`"
class="d2-navi__block"
@click="handleMenuSelect(sub.path)">
<div class="d2-navi__content">
<span class="d2-navi__icon">
<d2-icon v-if="sub.icon" class="iconfont__medium" :name="sub.icon"/>
<i v-else class="el-icon-document"/>
</span>
<div class="d2-navi__info">
<p class="d2-navi__sub_title">
<i v-if="sub.type" class="el-icon-link d2-pr-5"/>
<span>{{ $t(sub.title) }}</span>
</p>
<p class="d2-navi__desc" :title="$t(sub.remark)">
{{ $t(sub.remark) }}</p>
</div>
</div>
</div>
</div>
</el-collapse-item>
</el-collapse>
</d2-scrollbar>
</div>
</template>
<script>
import { mapState } from 'vuex'
import menuMixin from '@/layout/header-aside/components/mixin/menu'
export default {
name: 'module-index',
mixins: [
menuMixin
],
data () {
return {
activeNames: []
}
},
computed: {
...mapState('d2admin/menu', [
'aside'
]),
rootPath () {
return this.$route.meta.root || this.$route.path
},
menuData () {
// eslint-disable-next-line no-unused-expressions
this.$i18n.locale
const key = this.aside.findIndex(item => item.path === this.rootPath)
if (key === -1 || !this.aside[key].children) {
return []
}
return this.aside[key].children.filter(item => {
const title = item.title || ''
if (title.indexOf('首页') !== -1) return false
if (item.icon === 'home') return false
if (this.$route.path === item.path) return false
return true
})
}
},
watch: {
menuData: {
handler (val) {
this.activeNames = val.map(item => item.menu_id)
},
immediate: true
}
}
}
</script>
<style lang="scss">
.d2-navi {
height: calc(100vh - 160px);
padding: 20px;
background-color: #FFF;
.d2-navi__title {
display: inline-block;
width: 20px;
margin-right: 6px;
color: $color-info;
font-size: 16px;
text-align: center;
vertical-align: middle;
}
.iconfont__mini {
font-size: 20px;
}
.iconfont__medium {
font-size: 40px;
}
.flex-wrap {
display: flex;
flex-wrap: wrap;
margin: -15px auto -10px;
}
.d2-navi__block {
width: 20%;
box-sizing: border-box;
padding: 0 7.5px;
margin-top: 15px;
}
.d2-navi__content {
display: flex;
cursor: pointer;
color: $color-info;
border-radius: 4px;
background-color: #F5F7FA;
padding: 10px;
overflow: hidden;
}
.d2-navi__icon {
display: flex;
justify-content: center;
align-items: center;
min-width: 60px;
font-size: 32px;
}
.d2-navi__info {
min-width: 0;
p {
margin: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.d2-navi__sub_title {
color: $color-text-main;
height: 24px;
font-size: 14px;
font-weight: bold;
line-height: 24px;
}
.d2-navi__desc {
font-size: 12px;
height: 23px;
line-height: 23px;
}
}
</style>