feat: 完成基本的详情生成

This commit is contained in:
augushong
2026-01-09 00:02:33 +08:00
parent 0e92ab2363
commit d5be4cbbaa
8 changed files with 46 additions and 51 deletions

View File

@@ -1213,8 +1213,16 @@ class BuildCurdServiceBase
$selectList .= $this->buildSelectModel($field, $val['define']);
}
// 为多图片多文件字段生成获取器
if (in_array($val['formType'], ['images', 'files'])) {
// 为多图片多文件、多选字段生成获取器
if (in_array($val['formType'], ['images', 'files', 'checkbox'])) {
// checkbox 使用逗号分隔images/files 使用自定义分隔符
if ($val['formType'] == 'checkbox') {
$val['define'] = ','; // 多选框固定使用逗号分隔
} elseif ($val['formType'] == 'images' || $val['formType'] == 'files') {
if (!isset($val['define'])) {
$val['define'] = '|'; // 默认分隔符
}
}
$accessorList .= $this->buildAccessorModel($field, $val);
}
@@ -1873,15 +1881,16 @@ class BuildCurdServiceBase
} elseif ($val['formType'] == 'radio' || $val['formType'] == 'switch') {
$templateFile = "view{$this->DS}module{$this->DS}readSwitch";
if (isset($val['define']) && !empty($val['define'])) {
// 构建下拉选择的显示
// 使用 kv 格式直接获取
$var_name = $this->getFieldVarName($field);
$define = '{volist name="' . $var_name . '" id="vo"}{eq name="vo.value" value="$row.' . $field . '"}<span class="layui-badge">{volist name="' . $var_name . '" id="item"}{eq name="item.value" value="$row.' . $field . '"}{$item.label}{/eq}{/volist}</span>{/eq}{/volist}';
$define = '<span class="layui-badge">{$' . $var_name . '[$row.' . $field . ']|default=\'\'}</span>';
}
} elseif ($val['formType'] == 'checkbox') {
$templateFile = "view{$this->DS}module{$this->DS}readSelect";
if (isset($val['define']) && !empty($val['define'])) {
$var_name = $this->getFieldVarName($field);
$define = '{volist name="row.' . $field . '|explode=\',\'" id="item"><span class="layui-badge layui-badge-rim" style="margin-right: 5px;">{volist name="' . $var_name . '" id="vo"}{eq name="vo.value" value="$item"}{$vo.label}{/eq}{/volist}</span>{/volist}';
// 使用获取器列表,如 shop_type_list
$define = '{volist name="row.' . $field . '_list" id="item"}<span class="layui-badge layui-badge-rim" style="margin-right: 5px;">{$' . $var_name . '[$item]|default=\'\'}</span>{/volist}';
}
} elseif ($val['formType'] == 'select') {
$templateFile = "view{$this->DS}module{$this->DS}readSelect";
@@ -1889,7 +1898,7 @@ class BuildCurdServiceBase
$define = '{$row.' . $field . '}';
} elseif (isset($val['define']) && !empty($val['define'])) {
$var_name = $this->getFieldVarName($field);
$define = '{volist name="' . $var_name . '" id="vo"}{eq name="vo.value" value="$row.' . $field . '"}{$vo.label}{/eq}{/volist}';
$define = '{$' . $var_name . '[$row.' . $field . ']|default=\'\'}';
}
} elseif ($val['formType'] == 'relation') {
// 关联表字段暂时使用文本显示

View File

@@ -1,6 +1,2 @@
${{var_name}}_list = [];
foreach ($this->model::{{name}} as $key => $value) {
${{var_name}}_list[] = ['value' => $key, 'label' => $value];
}
$this->assign('{{var_name}}', ${{var_name}}_list, true);
$this->assign('{{var_name}}', $this->model::{{name}}, true);

View File

@@ -8,14 +8,13 @@
<div class="detail-id">ID: {$row.id}</div>
</div>
<div class="layui-col-md3 text-right detail-actions">
<button class="layui-btn layui-btn-primary" onclick="window.history.back()">返回</button>
<button class="layui-btn" onclick="location.href='{{:url("edit", ["id" => $row.id])}}'">编辑</button>
<button class="layui-btn layui-btn-danger" onclick="deleteData({{$row.id}})">删除</button>
<button class="layui-btn layui-btn-primary" layuimini-content-href="{$Request.param.backTagId}" data-back="1">返回</button>
<button class="layui-btn" onclick="location.href='{:url("edit", ["id" => $row.id])}'">编辑</button>
</div>
</div>
</div>
<div class="layui-card-body detail-content">
<div class="layui-row">
<div class="layui-row layui-col-space12">
<!-- 左侧主体内容 -->
<div class="layui-col-md8 detail-main">
<div class="detail-field-group">