mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 10:55:34 +08:00
133 lines
4.3 KiB
PHP
133 lines
4.3 KiB
PHP
<?php
|
||
/**
|
||
* Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
* See LICENSE file for license details.
|
||
*/
|
||
|
||
class desktop_finder
|
||
{
|
||
public $detail_items='明细信息';
|
||
public $detail_items_cols_per_row=5;
|
||
|
||
public $detail_operation_log='操作日志';
|
||
|
||
/**
|
||
* detail_items
|
||
* @param mixed $id ID
|
||
* @return mixed 返回值
|
||
*/
|
||
public function detail_items($id)
|
||
{
|
||
$render = app::get('desktop')->render();
|
||
|
||
list($app, $model) = explode('_finder_', get_class($this));
|
||
|
||
$masterMdl = app::get($app)->model($model);
|
||
$columns = $masterMdl->_columns();
|
||
|
||
$dlysale = $masterMdl->db_dump($id);
|
||
foreach ($columns as $key => $column) {
|
||
if ($column['type'] == 'time') {
|
||
$dlysale[$key] = $dlysale[$key] ? date("Y-m-d H:i:s", $dlysale[$key]) : '';
|
||
}
|
||
|
||
if (is_array($column['type'])) {
|
||
$dlysale[$key] = $column['type'][$dlysale[$key]];
|
||
}
|
||
}
|
||
|
||
// 按照 order 字段排序 columns
|
||
$sortedColumns = $columns;
|
||
uasort($sortedColumns, function($a, $b) {
|
||
$orderA = isset($a['order']) ? intval($a['order']) : 999;
|
||
$orderB = isset($b['order']) ? intval($b['order']) : 999;
|
||
return $orderA - $orderB;
|
||
});
|
||
|
||
$render->pagedata['data'] = [
|
||
'header' => $sortedColumns,
|
||
'body' => $dlysale,
|
||
];
|
||
|
||
// 传递列数配置到模板
|
||
$render->pagedata['cols_per_row'] = $this->detail_items_cols_per_row;
|
||
|
||
|
||
if ($masterMdl->relate_item_entity) {
|
||
$itemMdl = app::get($app)->model($masterMdl->relate_item_entity['entity']);
|
||
$itemColumns = $itemMdl->_columns();
|
||
|
||
// $masterPrimary = null;
|
||
// foreach ($itemColumns as $key => $column) {
|
||
// if ($column['type'] == 'table:'.$model.'@'.$app) {
|
||
// $masterPrimary = $key;
|
||
// break;
|
||
// }
|
||
// }
|
||
|
||
if ($masterMdl->relate_item_entity['foreign_primary_id']) {
|
||
$items = $itemMdl->getList('*', [$masterMdl->relate_item_entity['foreign_primary_id'] => $id]);
|
||
|
||
// 按照 order 字段排序明细 columns
|
||
$sortedItemColumns = $itemColumns;
|
||
uasort($sortedItemColumns, function($a, $b) {
|
||
$orderA = isset($a['order']) ? intval($a['order']) : 999;
|
||
$orderB = isset($b['order']) ? intval($b['order']) : 999;
|
||
return $orderA - $orderB;
|
||
});
|
||
|
||
$render->pagedata['lines'] = [
|
||
'header' => $sortedItemColumns,
|
||
'body' => $items,
|
||
];
|
||
}
|
||
}
|
||
|
||
return $render->fetch('finder/detail.html', 'desktop');
|
||
}
|
||
|
||
function detail_operation_log($id){
|
||
$render = app::get('desktop')->render();
|
||
|
||
list($app, $model) = explode('_finder_', get_class($this));
|
||
|
||
$obj_type = $model . '@' . $app;
|
||
|
||
$rows = app::get('ome')->model('operation_log')->getList('*',[
|
||
'obj_id'=>$id,
|
||
'obj_type' => $obj_type
|
||
], 0, -1, 'log_id DESC');
|
||
|
||
$operations = [];
|
||
if(base_kvstore::instance('service')->fetch('operation_log',$service_define)){
|
||
foreach($service_define['list'] as $k => $v) {
|
||
try {
|
||
$newObj = new $v();
|
||
if(method_exists($newObj,'get_operations')){
|
||
$operations = $newObj->get_operations();
|
||
if (isset($operations[$app])) {
|
||
$operations = $operations[$app];
|
||
break;
|
||
}
|
||
}
|
||
} catch (\Throwable $th) {
|
||
//throw $th;
|
||
}
|
||
}
|
||
}
|
||
|
||
foreach($rows as $k => $v){
|
||
list($opt, $app) = explode('@', $v['operation']);
|
||
if (isset($operations[$opt])) {
|
||
$rows[$k]['operation'] = $operations[$opt]['name'];
|
||
}
|
||
}
|
||
|
||
$render->pagedata['rows'] = $rows;
|
||
|
||
return $render->fetch('finder/operation_log.html','desktop');
|
||
}
|
||
|
||
|
||
}
|