column_edit); } } var $addon_cols = "store_id"; var $column_edit = "操作"; var $column_edit_width = 170; var $column_edit_order = 1; function column_edit($row){ $finder_id = $_GET['_finder']['finder_id']; $store_id = $row['store_id']; $button = sprintf('编辑', $store_id, $finder_id); $button .=' '.sprintf('新增仓位', $store_id, $finder_id); // 添加覆盖区域按钮 $button .=' '.sprintf('覆盖区域', $store_id, $finder_id); if (kernel::single('desktop_user')->has_permission('o2o_ctrl_store')) { $button .=' '.sprintf('设置', $store_id, $finder_id); } return $button; } public $detail_position = '库位信息'; /** * detail_position * @param mixed $store_id ID * @return mixed 返回值 */ public function detail_position($store_id) { $branchMdl = app::get('ome')->model('branch'); $branchs = $branchMdl->getlist('*', array('store_id' => $store_id, 'check_permission' => 'false')); $render = app::get('o2o')->render(); $storeLib = kernel::single('o2o_store'); $branch_types = $storeLib->getBranchType(); foreach ($branchs as &$v) { $v['branch_type_text'] = $branch_types[$v['type']]['text']; } $render->pagedata['branchs'] = $branchs; return $render->fetch('admin/system/detail_position.html'); } public $detail_log = '操作日志'; /** * detail_log * @param mixed $store_id ID * @return mixed 返回值 */ public function detail_log($store_id) { $render = app::get('o2o')->render(); $logObj = app::get('ome')->model('operation_log'); $logData = $logObj->read_log(array('obj_id' => $store_id, 'obj_type' => 'store@o2o')); $finder_id = $_GET['_finder']['finder_id']; foreach ($logData as $k => $v) { $logData[$k]['operate_time'] = date('Y-m-d H:i:s', $v['operate_time']); if ($v['memo'] == '编辑门店') { $logData[$k]['memo'] = "查看快照"; } } $render->pagedata['datalist'] = $logData; return $render->fetch('admin/store/detail_log.html'); } public $column_region_coverage = '门店覆盖范围'; public $column_region_coverage_width = '150'; public $column_region_coverage_order = 5; /** * column_region_coverage * @param mixed $row row * @param mixed $list list * @return mixed 返回值 */ public function column_region_coverage($row, $list) { if (empty($row['store_bn'])) { return ''; } static $coverageCache; if (!isset($coverageCache)) { $coverageCache = array(); // 从传入的list参数获取当前页面的所有store_bn $storeBns = array_unique(array_column($list, 'store_bn')); if (!empty($storeBns)) { // 批量查询门店的覆盖范围 $warehouseMdl = app::get('logisticsmanager')->model('warehouse'); $warehouses = $warehouseMdl->getList('branch_bn,region_names,region_ids', array( 'branch_bn' => $storeBns, 'b_type' => 2 )); // 汇总所有region_id,只查询一次regions表 $allRegionIds = array(); $warehouseRegionMap = array(); // 存储每个warehouse对应的region_ids foreach ($warehouses as $warehouse) { $regionIds = $warehouse['region_ids']; // 如果没有region_ids,跳过 if (empty($regionIds)) { continue; } // 如果region_names包含"中国",直接标记 if (strpos($warehouse['region_names'], '中国') !== false) { $coverageCache[$warehouse['branch_bn']] = '中国'; continue; } $warehouseRegionMap[$warehouse['branch_bn']] = $regionIds; // 收集region_id用于批量查询 $regionGroups = explode(';', $regionIds); foreach ($regionGroups as $group) { if (empty(trim($group))) continue; $ids = explode(',', $group); $ids = array_filter(array_map('trim', $ids)); $allRegionIds = array_merge($allRegionIds, $ids); } } // 批量查询所有region_id对应的地区名称 $regionNameMap = array(); if (!empty($allRegionIds)) { $regionMdl = app::get('eccommon')->model('regions'); $regions = $regionMdl->getList('region_id,local_name', array('region_id' => array_unique($allRegionIds))); $regionNameMap = array_column($regions, 'local_name', 'region_id'); } // 处理每个warehouse的覆盖范围 foreach ($warehouseRegionMap as $storeBn => $regionIds) { $coverageText = $this->buildRegionCoverageText($regionIds, $regionNameMap); if ($coverageText) { $coverageCache[$storeBn] = $coverageText; } } } } $store_bn = $row['store_bn']; if (isset($coverageCache[$store_bn])) { // 将分号分隔的组转换为独立的span元素 $regionGroups = explode(';', $coverageCache[$store_bn]); $spanElements = array(); foreach ($regionGroups as $group) { $group = trim($group); if (!empty($group)) { $spanElements[] = '' . htmlspecialchars($group) . ''; } } return '