feat: 初步完成详情生成

This commit is contained in:
augushong
2026-01-08 23:43:21 +08:00
parent 3fdea8b85b
commit 0e92ab2363
22 changed files with 578 additions and 247 deletions

View File

@@ -27,13 +27,29 @@ class Goods extends AdminController
$this->model = new \app\admin\model\TestGoods();
$this->assign('select_list_status', $this->model::SELECT_LIST_STATUS, true);
$select_list_status_list = [];
foreach ($this->model::SELECT_LIST_STATUS as $key => $value) {
$select_list_status_list[] = ['value' => $key, 'label' => $value];
}
$this->assign('select_list_status', $select_list_status_list, true);
$this->assign('select_list_time_status', $this->model::SELECT_LIST_TIME_STATUS, true);
$select_list_time_status_list = [];
foreach ($this->model::SELECT_LIST_TIME_STATUS as $key => $value) {
$select_list_time_status_list[] = ['value' => $key, 'label' => $value];
}
$this->assign('select_list_time_status', $select_list_time_status_list, true);
$this->assign('select_list_is_recommend', $this->model::SELECT_LIST_IS_RECOMMEND, true);
$select_list_is_recommend_list = [];
foreach ($this->model::SELECT_LIST_IS_RECOMMEND as $key => $value) {
$select_list_is_recommend_list[] = ['value' => $key, 'label' => $value];
}
$this->assign('select_list_is_recommend', $select_list_is_recommend_list, true);
$this->assign('select_list_shop_type', $this->model::SELECT_LIST_SHOP_TYPE, true);
$select_list_shop_type_list = [];
foreach ($this->model::SELECT_LIST_SHOP_TYPE as $key => $value) {
$select_list_shop_type_list[] = ['value' => $key, 'label' => $value];
}
$this->assign('select_list_shop_type', $select_list_shop_type_list, true);
}

View File

@@ -41,15 +41,39 @@ class TestGoods extends TimeModel
protected $deleteTime = "delete_time";
public const SELECT_LIST_STATUS = ['0'=>'正常','1'=>'禁用',];
public const SELECT_LIST_STATUS = ['0' => '正常', '1' => '禁用'];
public const SELECT_LIST_TIME_STATUS = ['0'=>'未参加','1'=>'已开始','3'=>'已结束',];
public const SELECT_LIST_TIME_STATUS = ['0' => '未参加', '1' => '已开始', '3' => '已结束'];
public const SELECT_LIST_IS_RECOMMEND = ['0'=>'不推荐','1'=>'推荐',];
public const SELECT_LIST_IS_RECOMMEND = ['0' => '不推荐', '1' => '推荐'];
public const SELECT_LIST_SHOP_TYPE = ['taobao'=>'淘宝','jd'=>'京东',];
public const SELECT_LIST_SHOP_TYPE = ['taobao' => '淘宝', 'jd' => '京东'];
/**
* 商品图片获取器
* @param $value
* @return array
*/
public function getImagesListAttr($value, $data)
{
if (empty($data['images'])) {
return [];
}
return explode('|', $data['images']);
}
/**
* 检测报告获取器
* @param $value
* @return array
*/
public function getVerfiyFileListAttr($value, $data)
{
if (empty($data['verfiy_file'])) {
return [];
}
return explode('|', $data['verfiy_file']);
}
public function mallCate()
{
@@ -57,4 +81,4 @@ class TestGoods extends TimeModel
}
}
}

View File

@@ -4,7 +4,8 @@ var init = {
indexUrl: 'test.goods/index',
addUrl: 'test.goods/add' + location.search,
editUrl: 'test.goods/edit',
readUrl: 'test.goods/read',
deleteUrl: 'test.goods/delete',
exportUrl: 'test.goods/export',
modifyUrl: 'test.goods/modify',
};
};

View File

@@ -2,7 +2,22 @@ $(function(){
ua.table.render({
init: init,
cols: [[
{type: 'checkbox'},
{type: 'checkbox'},
{field: 'id', title: 'id'},
{field: 'cate_id', title: '分类ID'},
{field: 'title', title: '商品名称'},
{field: 'logo', title: '商品logo', templet: ua.table.image},
{field: 'total_stock', title: '总库存'},
{field: 'sort', title: '排序', edit: 'text'},
{field: 'status', search: 'select', selectList: ua.getDataBrage('select_list_status'), title: '状态', templet: ua.table.switch},
{field: 'cert_file', title: '合格证', templet: ua.table.url},
{field: 'remark', title: '备注说明', templet: ua.table.text},
{field: 'create_time', title: 'create_time'},
{field: 'publish_time', title: '发布日期'},
{field: 'sale_time', title: '售卖日期'},
{field: 'intro', title: '简介'},
{field: 'time_status', search: 'select', selectList: ua.getDataBrage('select_list_time_status'), title: '秒杀状态'},
{field: 'is_recommend', search: 'select', selectList: ua.getDataBrage('select_list_is_recommend'), title: '是否推荐'},
{field: 'shop_type', search: 'select', selectList: ua.getDataBrage('select_list_shop_type'), title: '商品类型'},
{field: 'from_area', title: '产地'},
{field: 'store_city', title: '仓库'},

View File

@@ -19,7 +19,237 @@
<!-- 左侧主体内容 -->
<div class="layui-col-md8 detail-main">
<div class="detail-field-group">
<div class="detail-field-item"><div class="detail-field-label">分类ID</div><div class="detail-field-value">{$row.cate_id|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">商品名称</div><div class="detail-field-value">{$row.title|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">商品logo</div><div class="detail-field-value"><img src="{$row.logo}" class="detail-image" style="max-width: 200px; max-height: 200px;"></div></div><div class="detail-field-item"><div class="detail-field-label">商品图片</div><div class="detail-field-value">{$row.images|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">商品描述</div><div class="detail-field-value">{$row.describe|raw|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">总库存</div><div class="detail-field-value">{$row.total_stock|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">合格证</div><div class="detail-field-value">{$row.cert_file|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">检测报告</div><div class="detail-field-value">{$row.verfiy_file|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">备注说明</div><div class="detail-field-value">{$row.remark|raw|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">发布日期</div><div class="detail-field-value">{$row.publish_time|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">售卖日期</div><div class="detail-field-value">{$row.sale_time|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">简介</div><div class="detail-field-value">{$row.intro|raw|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">秒杀状态</div><div class="detail-field-value">{$row.time_status|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">是否推荐</div><div class="detail-field-value">{eq name="row.is_recommend" value="1"}启用{else/}禁用{/eq}</div></div><div class="detail-field-item"><div class="detail-field-label">商品类型</div><div class="detail-field-value">{$row.shop_type|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">商品标签</div><div class="detail-field-value">{$row.tag|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">商品标签(单选)</div><div class="detail-field-value">{$row.tag_backup|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">产地</div><div class="detail-field-value">{$row.from_area|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">仓库</div><div class="detail-field-value">{$row.store_city|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">商品标签 (输入)</div><div class="detail-field-value">{$row.tag_input|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">唯一id</div><div class="detail-field-value">{$row.uid|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">价格</div><div class="detail-field-value">{$row.price|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">详情</div><div class="detail-field-value">{$row.detail|default=''}</div></div>
<div class="detail-field-item">
<div class="detail-field-label">分类ID</div>
<div class="detail-field-value">
{notempty name="row.cate_id"}
{$row.cate_id}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品名称</div>
<div class="detail-field-value">
{notempty name="row.title"}
{$row.title}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品logo</div>
<div class="detail-field-value">
{notempty name="row.logo"}
<img src="{$row.logo}" class="detail-image" style="max-width: 300px; max-height: 300px; border-radius: 4px; cursor: pointer;" onclick="layer.photos({photos: {data: [{src: this.src}]}, anim: 5})">
{else/}
<span class="layui-text-em">暂无图片</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品图片</div>
<div class="detail-field-value">
{notempty name="row.images_list"}
{volist name="row.images_list" id="img"}
<img src="{$img}" class="detail-image" style="max-width: 150px; max-height: 150px; margin-right: 10px; margin-bottom: 10px; border-radius: 4px; cursor: pointer;" onclick="layer.photos({photos: {data: {volist name='row.images_list' id='imgItem'}[{src: '{$imgItem}'}{notlast},{/notlast}]{/volist}}, start: {$key}}, anim: 5})">
{/volist}
{else/}
<span class="layui-text-em">暂无图片</span>
{/notempty}
</div>
</div>
<div class="detail-field-item detail-field-full">
<div class="detail-field-label">商品描述</div>
<div class="detail-field-value detail-editor-content">
{notempty name="row.describe"}
{$row.describe|raw}
{else/}
<span class="layui-text-em">暂无内容</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">总库存</div>
<div class="detail-field-value">
{notempty name="row.total_stock"}
{$row.total_stock}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">合格证</div>
<div class="detail-field-value">
{notempty name="row.cert_file"}
<a href="{$row.cert_file}" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal">
<i class="layui-icon layui-icon-download-circle"></i> 下载文件
</a>
<div style="margin-top: 5px; color: #999; font-size: 12px;">{$row.cert_file}</div>
{else/}
<span class="layui-text-em">暂无文件</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">检测报告</div>
<div class="detail-field-value">
{notempty name="row.verfiy_file_list"}
{volist name="row.verfiy_file_list" id="file"}
<div style="margin-bottom: 8px;">
<a href="{$file}" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal">
<i class="layui-icon layui-icon-download-circle"></i> 文件 {$key + 1}
</a>
<span style="margin-left: 10px; color: #999; font-size: 12px;">{$file}</span>
</div>
{/volist}
{else/}
<span class="layui-text-em">暂无文件</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">备注说明</div>
<div class="detail-field-value" style="white-space: pre-wrap;">
{notempty name="row.remark"}
{$row.remark|raw}
{else/}
<span class="layui-text-em">暂无内容</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">发布日期</div>
<div class="detail-field-value">
{notempty name="row.publish_time"}
{$row.publish_time|date="Y-m-d H:i:s"}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">售卖日期</div>
<div class="detail-field-value">
{notempty name="row.sale_time"}
{$row.sale_time|date="Y-m-d H:i:s"}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">简介</div>
<div class="detail-field-value" style="white-space: pre-wrap;">
{notempty name="row.intro"}
{$row.intro|raw}
{else/}
<span class="layui-text-em">暂无内容</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">秒杀状态</div>
<div class="detail-field-value">
{volist name="select_list_time_status" id="vo"}{eq name="vo.value" value="$row.time_status"}{$vo.label}{/eq}{/volist}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">是否推荐</div>
<div class="detail-field-value">
{volist name="select_list_is_recommend" id="vo"}{eq name="vo.value" value="$row.is_recommend"}<span class="layui-badge">{volist name="select_list_is_recommend" id="item"}{eq name="item.value" value="$row.is_recommend"}{$item.label}{/eq}{/volist}</span>{/eq}{/volist}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品类型</div>
<div class="detail-field-value">
{volist name="row.shop_type|explode=','" id="item"><span class="layui-badge layui-badge-rim" style="margin-right: 5px;">{volist name="select_list_shop_type" id="vo"}{eq name="vo.value" value="$item"}{$vo.label}{/eq}{/volist}</span>{/volist}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品标签</div>
<div class="detail-field-value">
{notempty name="row.tag"}
{$row.tag}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品标签(单选)</div>
<div class="detail-field-value">
{notempty name="row.tag_backup"}
{$row.tag_backup}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">产地</div>
<div class="detail-field-value">
{notempty name="row.from_area"}
{$row.from_area}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">仓库</div>
<div class="detail-field-value">
{notempty name="row.store_city"}
{$row.store_city}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">商品标签 (输入)</div>
<div class="detail-field-value">
{notempty name="row.tag_input"}
{$row.tag_input}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">唯一id</div>
<div class="detail-field-value">
{notempty name="row.uid"}
{$row.uid}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">价格</div>
<div class="detail-field-value">
{notempty name="row.price"}
{$row.price}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">详情</div>
<div class="detail-field-value">
{notempty name="row.detail"}
{$row.detail}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
</div>
</div>
<!-- 右侧基础信息 -->
@@ -30,7 +260,33 @@
<div class="detail-field-label">ID</div>
<div class="detail-field-value">{$row.id}</div>
</div>
<div class="detail-field-item"><div class="detail-field-label">排序</div><div class="detail-field-value">{$row.sort|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">状态</div><div class="detail-field-value">{$row.status|default=''}</div></div><div class="detail-field-item"><div class="detail-field-label">create_time</div><div class="detail-field-value">{$row.create_time|default=''}</div></div>
<div class="detail-field-item">
<div class="detail-field-label">排序</div>
<div class="detail-field-value">
{notempty name="row.sort"}
{$row.sort}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">状态</div>
<div class="detail-field-value">
{volist name="select_list_status" id="vo"}{eq name="vo.value" value="$row.status"}<span class="layui-badge">{volist name="select_list_status" id="item"}{eq name="item.value" value="$row.status"}{$item.label}{/eq}{/volist}</span>{/eq}{/volist}
</div>
</div>
<div class="detail-field-item">
<div class="detail-field-label">create_time</div>
<div class="detail-field-value">
{notempty name="row.create_time"}
{$row.create_time}
{else/}
<span class="layui-text-em">暂无数据</span>
{/notempty}
</div>
</div>
</div>
</div>
</div>