refactor: 移除组件内置i18n翻译,改为调用方自行处理
Some checks failed
Release pipeline / publish (push) Has been cancelled
Release pipeline / Always run job (push) Has been cancelled

1. 调整菜单路由路径与API基础路径匹配生产配置更名
2. 优化page-table和page-dialog-form组件,移除内置的$t翻译逻辑,由调用方传入已翻译的文本
3. 为无menu_id的菜单项生成默认空路径
This commit is contained in:
sheng
2026-05-27 18:37:37 +08:00
parent 2cc8329695
commit 48cfebd008
5 changed files with 40 additions and 25 deletions

View File

@@ -1,6 +1,6 @@
import { request } from '@/api/_service' import { request } from '@/api/_service'
const BASE = 'production_master_data/factory_model/factory_area/' const BASE = 'production_configuration/factory_model/factory_area/'
function apiParams (method, data = {}) { function apiParams (method, data = {}) {
return { return {

View File

@@ -8,7 +8,7 @@
不支持复杂表单联动如有需要通过默认插槽自定义内容 不支持复杂表单联动如有需要通过默认插槽自定义内容
依赖element-ui <el-dialog> <el-form> <el-input> <el-select> 依赖element-ui <el-dialog> <el-form> <el-input> <el-select>
i18ntitle / label / placeholder / confirm/cancel 按钮 全部自动 $t() 翻译 i18n由调用方负责翻译组件直接渲染传入的文本
@author 前端团队 @author 前端团队
@since 2026-05 @since 2026-05
@@ -22,7 +22,7 @@
--> -->
<el-dialog <el-dialog
:visible.sync="visibleProxy" :visible.sync="visibleProxy"
:title="$t(title)" :title="title"
:width="width" :width="width"
:close-on-click-modal="false" :close-on-click-modal="false"
:destroy-on-close="true" :destroy-on-close="true"
@@ -46,12 +46,12 @@
- type='input' <el-input>支持 textarea密码等 - type='input' <el-input>支持 textarea密码等
- type='select' <el-select> + <el-option> - type='select' <el-select> + <el-option>
label / placeholder 会自动调用 $t() 翻译 i18n key 即可 由调用方负责翻译传已翻译的文本即可
--> -->
<el-form-item <el-form-item
v-for="col in flatFormCols" v-for="col in flatFormCols"
:key="col.prop" :key="col.prop"
:label="$t(col.label)" :label="col.label"
:prop="col.prop" :prop="col.prop"
> >
<!-- ===== 输入框类型 ===== --> <!-- ===== 输入框类型 ===== -->
@@ -64,7 +64,7 @@
<el-input <el-input
v-if="col.type === 'input'" v-if="col.type === 'input'"
v-model="formData[col.prop]" v-model="formData[col.prop]"
:placeholder="$t(col.placeholder)" :placeholder="col.placeholder"
:type="col.inputType || 'text'" :type="col.inputType || 'text'"
:autosize="col.autosize" :autosize="col.autosize"
:clearable="col.clearable !== false" :clearable="col.clearable !== false"
@@ -79,7 +79,7 @@
<el-select <el-select
v-else-if="col.type === 'select'" v-else-if="col.type === 'select'"
v-model="formData[col.prop]" v-model="formData[col.prop]"
:placeholder="$t(col.placeholder)" :placeholder="col.placeholder"
:clearable="col.clearable !== false" :clearable="col.clearable !== false"
:style="col.style" :style="col.style"
:filterable="col.filterable !== false" :filterable="col.filterable !== false"
@@ -87,7 +87,7 @@
<el-option <el-option
v-for="opt in col.options" v-for="opt in col.options"
:key="opt.value" :key="opt.value"
:label="$t(opt.label)" :label="opt.label"
:value="opt.value" :value="opt.value"
/> />
</el-select> </el-select>
@@ -104,11 +104,11 @@
<!-- <!--
确定type='primary' + submitting loading 状态 确定type='primary' + submitting loading 状态
取消调用 onClose 重置表单 + 关闭弹框 取消调用 onClose 重置表单 + 关闭弹框
按钮文字自动 $t() 翻译 由调用方负责翻译传已翻译的文本即可
--> -->
<template #footer> <template #footer>
<el-button @click="onClose">{{ $t(cancelText) }}</el-button> <el-button @click="onClose">{{ cancelText }}</el-button>
<el-button type="primary" :loading="submitting" @click="onSubmit">{{ $t(confirmText) }}</el-button> <el-button type="primary" :loading="submitting" @click="onSubmit">{{ confirmText }}</el-button>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
@@ -175,7 +175,7 @@ export default {
visible: { type: Boolean, default: false }, visible: { type: Boolean, default: false },
/** /**
* 弹框标题,支持 i18n key组件自动 $t() 翻译 * 弹框标题,由调用方负责翻译
*/ */
title: { type: String, default: '' }, title: { type: String, default: '' },
@@ -217,12 +217,12 @@ export default {
submitting: { type: Boolean, default: false }, submitting: { type: Boolean, default: false },
/** /**
* 确定按钮文字,默认 '确定'支持 i18n key * 确定按钮文字,默认 '确定'由调用方负责 i18n 翻译
*/ */
confirmText: { type: String, default: '确定' }, confirmText: { type: String, default: '确定' },
/** /**
* 取消按钮文字,默认 '取消'支持 i18n key * 取消按钮文字,默认 '取消'由调用方负责 i18n 翻译
*/ */
cancelText: { type: String, default: '取消' } cancelText: { type: String, default: '取消' }
}, },
@@ -262,7 +262,7 @@ export default {
const firstKey = Object.keys(invalidFields)[0] const firstKey = Object.keys(invalidFields)[0]
if (firstKey && invalidFields[firstKey].length) { if (firstKey && invalidFields[firstKey].length) {
const msg = invalidFields[firstKey][0].message const msg = invalidFields[firstKey][0].message
this.$message.warning(this.$t(msg) || msg) this.$message.warning(msg)
} }
return return
} }

View File

@@ -6,7 +6,7 @@
适合 80% 的增删改查页面你只需要传列定义按钮定义数据和分页参数即可 适合 80% 的增删改查页面你只需要传列定义按钮定义数据和分页参数即可
依赖element-ui <el-table> <el-button> <el-pagination> 依赖element-ui <el-table> <el-button> <el-pagination>
i18n所有 label / 按钮文字 / 列标题 自动调用 $t() 翻译 i18n key 即可 i18n由调用方负责翻译组件直接渲染传入的文本
@author 前端团队 @author 前端团队
@since 2026-05 @since 2026-05
@@ -35,7 +35,7 @@
:disabled="btn.needSelection && !selectedCount" :disabled="btn.needSelection && !selectedCount"
@click="btn.onClick" @click="btn.onClick"
> >
{{ $t(btn.label) }} {{ btn.label }}
</el-button> </el-button>
<!-- 自定义工具栏内容如打印按钮列筛选器等 --> <!-- 自定义工具栏内容如打印按钮列筛选器等 -->
<slot name="toolbar-extra" /> <slot name="toolbar-extra" />
@@ -48,7 +48,7 @@
icon="el-icon-question" icon="el-icon-question"
@click="openHelp" @click="openHelp"
> >
{{ $t(helpText) }} {{ helpText }}
</el-button> </el-button>
</div> </div>
@@ -60,7 +60,7 @@
<div ref="tableWrapper" class="page-table__body"> <div ref="tableWrapper" class="page-table__body">
<el-table <el-table
ref="table" ref="table"
:data="tableData" :data="data"
:height="tableHeight" :height="tableHeight"
:border="border" :border="border"
:row-key="rowKey" :row-key="rowKey"
@@ -91,7 +91,7 @@
:key="'idx-' + col.idx" :key="'idx-' + col.idx"
type="index" type="index"
:width="col.width" :width="col.width"
:label="$t(col.label || '#')" :label="col.label || '#'"
/> />
<!-- 3. 操作列自动渲染 rowButtons编辑/删除等行内按钮 --> <!-- 3. 操作列自动渲染 rowButtons编辑/删除等行内按钮 -->
<!-- <!--
@@ -314,7 +314,7 @@ export default {
helpUrl: { type: String, default: '' }, helpUrl: { type: String, default: '' },
/** /**
* 帮助按钮的文字,支持 i18n key组件自动 $t() 翻译 * 帮助按钮的文字,由调用方负责 i18n 翻译
* 默认 '帮助' * 默认 '帮助'
*/ */
helpText: { type: String, default: '帮助' } helpText: { type: String, default: '帮助' }
@@ -382,9 +382,6 @@ export default {
delete attrs.idx delete attrs.idx
delete attrs.slot delete attrs.slot
delete attrs.headerSlot delete attrs.headerSlot
if (attrs.label) {
attrs.label = this.$t(attrs.label)
}
return attrs return attrs
}, },

View File

@@ -13,7 +13,7 @@ function getMenuData (arr) {
} }
const menuItem = { const menuItem = {
path: value.url, path: value.url || ('d2-menu-empty-' + value.menu_id),
title: value.name, title: value.name,
icon: value.icon, icon: value.icon,
type: value.type, type: value.type,

View File

@@ -0,0 +1,18 @@
import layoutHeaderAside from '@/layout/header-aside'
const meta = { auth: true }
const _import = require('@/libs/util.import.' + process.env.NODE_ENV)
export default {
path: '/production_configuration',
component: layoutHeaderAside,
children: (pre => [
{
path: 'factory_model/factory_area',
name: `${pre}factory_model-factory_area`,
meta: { ...meta, cache: true, title: '工厂区域' },
component: _import('production-master-data/factory-model/factory-area')
}
])('production_configuration-')
}