优化DiceConfig,新增title_en和value_en字段
This commit is contained in:
@@ -111,8 +111,10 @@
|
||||
// { type: 'selection' },
|
||||
{ prop: 'group', label: '分组', minWidth: 140, align: 'center' },
|
||||
{ prop: 'title', label: '标题', minWidth: 160, align: 'center' },
|
||||
{ prop: 'title_en', label: '标题(英文)', minWidth: 160, align: 'center' },
|
||||
{ prop: 'name', label: '配置名称', align: 'center' },
|
||||
{ prop: 'value', label: '值', minWidth: 240, align: 'center' },
|
||||
{ prop: 'value_en', label: '值(英文)', minWidth: 240, align: 'center' },
|
||||
{
|
||||
prop: 'operation',
|
||||
label: '操作',
|
||||
|
||||
@@ -16,7 +16,10 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="formData.title" placeholder="请输入标题" />
|
||||
<el-input v-model="formData.title" placeholder="请输入标题(中文)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="标题(英文)" prop="title_en">
|
||||
<el-input v-model="formData.title_en" placeholder="请输入标题(英文)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="配置名称" prop="name">
|
||||
<el-input
|
||||
@@ -26,7 +29,10 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="值" prop="value">
|
||||
<el-input v-model="formData.value" type="textarea" :rows="5" placeholder="请输入值" />
|
||||
<el-input v-model="formData.value" type="textarea" :rows="5" placeholder="请输入值(中文)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="值(英文)" prop="value_en">
|
||||
<el-input v-model="formData.value_en" type="textarea" :rows="5" placeholder="请输入值(英文)" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@@ -76,6 +82,7 @@
|
||||
const rules = reactive<FormRules>({
|
||||
group: [{ required: true, message: '分组必需填写', trigger: 'blur' }],
|
||||
title: [{ required: true, message: '标题必需填写', trigger: 'blur' }],
|
||||
title_en: [{ max: 255, message: '英文标题长度需小于 255 字符', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '配置名称必需填写', trigger: 'blur' }],
|
||||
value: [{ required: true, message: '值必需填写', trigger: 'blur' }]
|
||||
})
|
||||
@@ -86,9 +93,11 @@
|
||||
const initialFormData = {
|
||||
id: null,
|
||||
value: '',
|
||||
value_en: '',
|
||||
name: '',
|
||||
group: '',
|
||||
title: ''
|
||||
title: '',
|
||||
title_en: ''
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,21 +25,42 @@ class GameController extends BaseController
|
||||
/**
|
||||
* 获取游戏配置(按 group 分组)
|
||||
* GET /api/game/config
|
||||
* header: lang = zh | en
|
||||
* 返回 data[group] = [ { name, title, value, create_time, update_time }, ... ]
|
||||
* - lang=zh 或默认:title/value = 中文
|
||||
* - lang=en:若存在英文配置则返回 title_en/value_en,否则回退到中文
|
||||
*/
|
||||
public function config(Request $request): Response
|
||||
{
|
||||
$rows = DiceConfig::select('name', 'group', 'title', 'value', 'create_time', 'update_time')->get();
|
||||
$rows = DiceConfig::select('name', 'group', 'title', 'title_en', 'value', 'value_en', 'create_time', 'update_time')->get();
|
||||
$lang = $request->header('lang', 'zh');
|
||||
if (!is_string($lang) || $lang === '') {
|
||||
$lang = 'zh';
|
||||
}
|
||||
$langLower = strtolower($lang);
|
||||
$isEn = $langLower === 'en' || str_starts_with($langLower, 'en-');
|
||||
$data = [];
|
||||
foreach ($rows as $row) {
|
||||
$group = $row->group ?? '';
|
||||
if (!isset($data[$group])) {
|
||||
$data[$group] = [];
|
||||
}
|
||||
$title = $row->title;
|
||||
$value = $row->value;
|
||||
if ($isEn) {
|
||||
$titleEn = $row->title_en ?? '';
|
||||
$valueEn = $row->value_en ?? '';
|
||||
if ($titleEn !== '') {
|
||||
$title = $titleEn;
|
||||
}
|
||||
if ($valueEn !== '') {
|
||||
$value = $valueEn;
|
||||
}
|
||||
}
|
||||
$data[$group][] = [
|
||||
'name' => $row->name,
|
||||
'title' => $row->title,
|
||||
'value' => $row->value,
|
||||
'title' => $title,
|
||||
'value' => $value,
|
||||
'create_time' => $row->create_time,
|
||||
'update_time' => $row->update_time,
|
||||
];
|
||||
|
||||
@@ -17,7 +17,9 @@ use plugin\saiadmin\basic\eloquent\BaseModel;
|
||||
* @property $name 配置名称
|
||||
* @property $group 分组
|
||||
* @property $title 标题
|
||||
* @property $title_en 标题(英文)
|
||||
* @property $value 值
|
||||
* @property $value_en 值(英文)
|
||||
* @property $create_time 创建时间
|
||||
* @property $update_time 修改时间
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,7 @@ class DiceConfigValidate extends BaseValidate
|
||||
'group' => 'require',
|
||||
'title' => 'require',
|
||||
'value' => 'require',
|
||||
'title_en' => 'max:100',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -31,6 +32,7 @@ class DiceConfigValidate extends BaseValidate
|
||||
'group' => '分组必须填写',
|
||||
'title' => '标题必须填写',
|
||||
'value' => '值必须填写',
|
||||
'title_en' => '英文标题长度需小于 100 字符',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -42,12 +44,14 @@ class DiceConfigValidate extends BaseValidate
|
||||
'group',
|
||||
'title',
|
||||
'value',
|
||||
'title_en',
|
||||
],
|
||||
'update' => [
|
||||
'name',
|
||||
'group',
|
||||
'title',
|
||||
'value',
|
||||
'title_en',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user