仓库商品新增规格库存查询、后台首页新增钩子、动态列表数据参数支持min和max、库存修改优化
parent
b0ddebd010
commit
c7b1ec0780
|
|
@ -129,9 +129,52 @@ class Index extends Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 钩子初始化
|
||||||
|
$this->PluginsInit();
|
||||||
return MyView();
|
return MyView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 钩子初始化
|
||||||
|
* @author Devil
|
||||||
|
* @blog http://gong.gg/
|
||||||
|
* @version 1.0.0
|
||||||
|
* @date 2018-12-07
|
||||||
|
* @desc description
|
||||||
|
*/
|
||||||
|
private function PluginsInit()
|
||||||
|
{
|
||||||
|
// 顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_top_data', MyEventTrigger('plugins_admin_view_index_init_top', ['hook_name'=>'plugins_admin_view_index_init_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 公告顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_notice_top_data', MyEventTrigger('plugins_admin_view_index_init_notice_top', ['hook_name'=>'plugins_admin_view_index_init_notice_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 基础统计顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_stats_base_top_data', MyEventTrigger('plugins_admin_view_index_init_stats_base_top', ['hook_name'=>'plugins_admin_view_index_init_stats_base_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 基础统计内部顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_stats_inside_base_top_data', MyEventTrigger('plugins_admin_view_index_init_stats_inside_base_top', ['hook_name'=>'plugins_admin_view_index_init_stats_inside_base_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 订单金额走势统计内部顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_stats_inside_amount_trend_top_data', MyEventTrigger('plugins_admin_view_index_init_stats_inside_amount_trend_top', ['hook_name'=>'plugins_admin_view_index_init_stats_inside_amount_trend_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 订单交易走势统计内部顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_stats_inside_order_trading_top_data', MyEventTrigger('plugins_admin_view_index_init_stats_inside_order_trading_top', ['hook_name'=>'plugins_admin_view_index_init_stats_inside_order_trading_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 组合商品和支付统计内部顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_stats_inside_compose_top_data', MyEventTrigger('plugins_admin_view_index_init_stats_inside_compose_top', ['hook_name'=>'plugins_admin_view_index_init_stats_inside_compose_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 地域分布统计内部顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_stats_inside_region_top_data', MyEventTrigger('plugins_admin_view_index_init_stats_inside_region_top', ['hook_name'=>'plugins_admin_view_index_init_stats_inside_region_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 系统信息顶部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_system_info_top_data', MyEventTrigger('plugins_admin_view_index_init_system_info_top', ['hook_name'=>'plugins_admin_view_index_init_system_info_top', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
|
||||||
|
// 底部钩子
|
||||||
|
MyViewAssign('plugins_admin_view_index_init_bottom_data', MyEventTrigger('plugins_admin_view_index_init_bottom', ['hook_name'=>'plugins_admin_view_index_init_bottom', 'is_backend'=>false, 'admin'=>$this->admin]));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 应用商店帐号绑定
|
* 应用商店帐号绑定
|
||||||
* @author Devil
|
* @author Devil
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class Brand
|
||||||
'delete_url' => MyUrl('admin/brand/delete'),
|
'delete_url' => MyUrl('admin/brand/delete'),
|
||||||
'delete_key' => 'ids',
|
'delete_key' => 'ids',
|
||||||
'detail_title' => '基础信息',
|
'detail_title' => '基础信息',
|
||||||
|
'is_middle' => 0,
|
||||||
],
|
],
|
||||||
// 表单配置
|
// 表单配置
|
||||||
'form' => [
|
'form' => [
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ class Warehouse
|
||||||
'is_delete' => 1,
|
'is_delete' => 1,
|
||||||
'delete_url' => MyUrl('admin/warehouse/delete'),
|
'delete_url' => MyUrl('admin/warehouse/delete'),
|
||||||
'delete_key' => 'ids',
|
'delete_key' => 'ids',
|
||||||
|
'is_middle' => 0,
|
||||||
],
|
],
|
||||||
// 表单配置
|
// 表单配置
|
||||||
'form' => [
|
'form' => [
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class WarehouseGoods
|
||||||
'delete_url' => MyUrl('admin/warehousegoods/delete'),
|
'delete_url' => MyUrl('admin/warehousegoods/delete'),
|
||||||
'delete_key' => 'ids',
|
'delete_key' => 'ids',
|
||||||
'detail_title' => '基础信息',
|
'detail_title' => '基础信息',
|
||||||
|
'is_middle' => 0,
|
||||||
],
|
],
|
||||||
// 表单配置
|
// 表单配置
|
||||||
'form' => [
|
'form' => [
|
||||||
|
|
@ -61,28 +62,30 @@ class WarehouseGoods
|
||||||
'width' => 80,
|
'width' => 80,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'label' => '基础信息',
|
'label' => '基础信息',
|
||||||
'view_type' => 'module',
|
'view_type' => 'module',
|
||||||
'view_key' => 'warehousegoods/module/goods',
|
'view_key' => 'warehousegoods/module/goods',
|
||||||
'grid_size' => 'lg',
|
'grid_size' => 'lg',
|
||||||
'is_sort' => 1,
|
'is_sort' => 1,
|
||||||
'sort_field' => 'goods_id',
|
'sort_field' => 'goods_id',
|
||||||
'search_config' => [
|
'params_where_name' => 'goods_id',
|
||||||
|
'search_config' => [
|
||||||
'form_type' => 'input',
|
'form_type' => 'input',
|
||||||
'form_name' => 'id',
|
'form_name' => 'wg.id',
|
||||||
'where_type_custom' => 'in',
|
'where_type_custom' => 'in',
|
||||||
'where_value_custom' => 'WhereGoodsInfo',
|
'where_value_custom' => 'WhereGoodsInfo',
|
||||||
'placeholder' => '请输入商品名称/型号',
|
'placeholder' => '请输入商品名称/型号',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'label' => '仓库',
|
'label' => '仓库',
|
||||||
'view_type' => 'field',
|
'view_type' => 'field',
|
||||||
'view_key' => 'warehouse_name',
|
'view_key' => 'warehouse_name',
|
||||||
'is_sort' => 1,
|
'is_sort' => 1,
|
||||||
|
'params_where_name' => 'warehouse_id',
|
||||||
'search_config' => [
|
'search_config' => [
|
||||||
'form_type' => 'select',
|
'form_type' => 'select',
|
||||||
'form_name' => 'warehouse_id',
|
'form_name' => 'wg.warehouse_id',
|
||||||
'data' => $this->WarehouseList(),
|
'data' => $this->WarehouseList(),
|
||||||
'data_key' => 'id',
|
'data_key' => 'id',
|
||||||
'data_name' => 'name',
|
'data_name' => 'name',
|
||||||
|
|
@ -91,15 +94,17 @@ class WarehouseGoods
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'label' => '是否启用',
|
'label' => '是否启用',
|
||||||
'view_type' => 'status',
|
'view_type' => 'status',
|
||||||
'view_key' => 'is_enable',
|
'view_key' => 'is_enable',
|
||||||
'post_url' => MyUrl('admin/warehousegoods/statusupdate'),
|
'post_url' => MyUrl('admin/warehousegoods/statusupdate'),
|
||||||
'is_form_su' => 1,
|
'is_form_su' => 1,
|
||||||
'align' => 'center',
|
'align' => 'center',
|
||||||
'is_sort' => 1,
|
'is_sort' => 1,
|
||||||
|
'params_where_name' => 'is_enable',
|
||||||
'search_config' => [
|
'search_config' => [
|
||||||
'form_type' => 'select',
|
'form_type' => 'select',
|
||||||
|
'form_name' => 'wg.is_enable',
|
||||||
'where_type' => 'in',
|
'where_type' => 'in',
|
||||||
'data' => MyConst('common_is_enable_list'),
|
'data' => MyConst('common_is_enable_list'),
|
||||||
'data_key' => 'id',
|
'data_key' => 'id',
|
||||||
|
|
@ -108,30 +113,48 @@ class WarehouseGoods
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'label' => '总库存',
|
'label' => '总库存',
|
||||||
'view_type' => 'field',
|
'view_type' => 'field',
|
||||||
'view_key' => 'inventory',
|
'view_key' => 'inventory',
|
||||||
'is_sort' => 1,
|
'is_sort' => 1,
|
||||||
|
'params_where_name' => 'inventory',
|
||||||
'search_config' => [
|
'search_config' => [
|
||||||
'form_type' => 'section',
|
'form_type' => 'section',
|
||||||
|
'form_name' => 'wg.inventory',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'label' => '创建时间',
|
'label' => '规格库存',
|
||||||
'view_type' => 'field',
|
'view_type' => 'module',
|
||||||
'view_key' => 'add_time',
|
'view_key' => 'warehousegoods/module/spec_inventory',
|
||||||
'is_sort' => 1,
|
'is_sort' => 1,
|
||||||
|
'grid_size' => 'lg',
|
||||||
|
'params_where_name' => 'spec_inventory',
|
||||||
'search_config' => [
|
'search_config' => [
|
||||||
'form_type' => 'datetime',
|
'form_type' => 'section',
|
||||||
|
'form_name' => 'wgs.inventory',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'label' => '更新时间',
|
'label' => '创建时间',
|
||||||
'view_type' => 'field',
|
'view_type' => 'field',
|
||||||
'view_key' => 'upd_time',
|
'view_key' => 'add_time',
|
||||||
|
'is_sort' => 1,
|
||||||
|
'params_where_name' => 'add_time',
|
||||||
|
'search_config' => [
|
||||||
|
'form_type' => 'datetime',
|
||||||
|
'form_name' => 'wg.add_time',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => '更新时间',
|
||||||
|
'view_type' => 'field',
|
||||||
|
'view_key' => 'upd_time',
|
||||||
|
'params_where_name' => 'upd_time',
|
||||||
'is_sort' => 1,
|
'is_sort' => 1,
|
||||||
'search_config' => [
|
'search_config' => [
|
||||||
'form_type' => 'datetime',
|
'form_type' => 'datetime',
|
||||||
|
'form_name' => 'wg.upd_time',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,20 @@
|
||||||
<!-- right content start -->
|
<!-- right content start -->
|
||||||
<div class="content-right" data-url="{{:MyUrl('admin/index/stats')}}">
|
<div class="content-right" data-url="{{:MyUrl('admin/index/stats')}}">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
<!-- 顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_top_data) and is_array($plugins_admin_view_index_init_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{if $is_system_show_base eq 1}}
|
{{if $is_system_show_base eq 1}}
|
||||||
<!-- 顶部提示信息 -->
|
<!-- 顶部提示信息 -->
|
||||||
{{if !empty($site_store_info) and !empty($site_store_info['base']) and !empty($site_store_info['base']['site_top_notice'])}}
|
{{if !empty($site_store_info) and !empty($site_store_info['base']) and !empty($site_store_info['base']['site_top_notice'])}}
|
||||||
|
|
@ -48,6 +62,20 @@
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<!-- 公告顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_notice_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_notice_top_data) and is_array($plugins_admin_view_index_init_notice_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_notice_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 后台公告 -->
|
<!-- 后台公告 -->
|
||||||
{{if !empty($admin_notice)}}
|
{{if !empty($admin_notice)}}
|
||||||
<div class="am-alert am-alert-danger" data-am-alert>
|
<div class="am-alert am-alert-danger" data-am-alert>
|
||||||
|
|
@ -56,8 +84,36 @@
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<!-- 基础统计基础顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_stats_base_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_stats_base_top_data) and is_array($plugins_admin_view_index_init_stats_base_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_stats_base_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 是否展示统计数据 -->
|
<!-- 是否展示统计数据 -->
|
||||||
{{if isset($is_stats) and $is_stats eq 1}}
|
{{if isset($is_stats) and $is_stats eq 1}}
|
||||||
|
<!-- 基础统计内部顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_stats_inside_base_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_stats_inside_base_top_data) and is_array($plugins_admin_view_index_init_stats_inside_base_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_stats_inside_base_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 基础统计 -->
|
<!-- 基础统计 -->
|
||||||
<div class="block-container shopxo-base">
|
<div class="block-container shopxo-base">
|
||||||
<div class="block-title echarts-title">
|
<div class="block-title echarts-title">
|
||||||
|
|
@ -177,6 +233,20 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 订单金额走势统计内部顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_stats_inside_amount_trend_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_stats_inside_amount_trend_top_data) and is_array($plugins_admin_view_index_init_stats_inside_amount_trend_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_stats_inside_amount_trend_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 订单成交金额走势,收入统计权限判断-->
|
<!-- 订单成交金额走势,收入统计权限判断-->
|
||||||
{{if isset($is_income) and $is_income eq true}}
|
{{if isset($is_income) and $is_income eq true}}
|
||||||
<div class="block-container">
|
<div class="block-container">
|
||||||
|
|
@ -199,6 +269,20 @@
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<!-- 订单交易走势统计内部顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_stats_inside_order_trading_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_stats_inside_order_trading_top_data) and is_array($plugins_admin_view_index_init_stats_inside_order_trading_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_stats_inside_order_trading_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 订单交易走势 -->
|
<!-- 订单交易走势 -->
|
||||||
<div class="block-container">
|
<div class="block-container">
|
||||||
<div class="block-title echarts-title">
|
<div class="block-title echarts-title">
|
||||||
|
|
@ -219,6 +303,20 @@
|
||||||
<div id="echarts-order-trading"></div>
|
<div id="echarts-order-trading"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 组合商品和支付统计内部顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_stats_inside_compose_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_stats_inside_compose_top_data) and is_array($plugins_admin_view_index_init_stats_inside_compose_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_stats_inside_compose_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 组合 -->
|
<!-- 组合 -->
|
||||||
<ul class="am-avg-sm-1 am-avg-sm-2 am-avg-lg-2 block-combination-container-2">
|
<ul class="am-avg-sm-1 am-avg-sm-2 am-avg-lg-2 block-combination-container-2">
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -263,6 +361,20 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<!-- 地域分布统计内部顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_stats_inside_region_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_stats_inside_region_top_data) and is_array($plugins_admin_view_index_init_stats_inside_region_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_stats_inside_region_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 订单地域分布 -->
|
<!-- 订单地域分布 -->
|
||||||
<div class="am-nbfc {{if $is_system_show_base eq 0}}am-padding-bottom-sm{{/if}}">
|
<div class="am-nbfc {{if $is_system_show_base eq 0}}am-padding-bottom-sm{{/if}}">
|
||||||
<div class="block-container {{if $is_system_show_base eq 0}}am-margin-bottom-0{{/if}}">
|
<div class="block-container {{if $is_system_show_base eq 0}}am-margin-bottom-0{{/if}}">
|
||||||
|
|
@ -292,6 +404,20 @@
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<!-- 系统信息顶部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_system_info_top</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_system_info_top_data) and is_array($plugins_admin_view_index_init_system_info_top_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_system_info_top_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<!-- 系统信息 -->
|
<!-- 系统信息 -->
|
||||||
{{if $is_system_show_base eq 1}}
|
{{if $is_system_show_base eq 1}}
|
||||||
<ul class="am-avg-sm-1 am-avg-sm-2 am-avg-lg-2 block-combination-container-2 am-padding-bottom-sm">
|
<ul class="am-avg-sm-1 am-avg-sm-2 am-avg-lg-2 block-combination-container-2 am-padding-bottom-sm">
|
||||||
|
|
@ -364,6 +490,20 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<!-- 底部钩子 -->
|
||||||
|
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||||
|
<div class="plugins-tag">
|
||||||
|
<span>plugins_admin_view_index_init_bottom</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{if !empty($plugins_admin_view_index_init_bottom_data) and is_array($plugins_admin_view_index_init_bottom_data)}}
|
||||||
|
{{foreach $plugins_admin_view_index_init_bottom_data as $hook}}
|
||||||
|
{{if is_string($hook) or is_int($hook)}}
|
||||||
|
{{$hook|raw}}
|
||||||
|
{{/if}}
|
||||||
|
{{/foreach}}
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- right content end -->
|
<!-- right content end -->
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
{{if !empty($module_data['spec']) and is_array($module_data['spec'])}}
|
||||||
|
<div class="am-scrollable-vertical spec-inventory-list">
|
||||||
|
<ul>
|
||||||
|
{{foreach $module_data.spec as $sv}}
|
||||||
|
<li class="am-nbfc">
|
||||||
|
<p class="spec-name am-fl">{{if empty($sv['spec'])}}默认规格{{else /}}{{$sv.spec}}{{/if}}</p>
|
||||||
|
<strong class="am-fr">{{$sv.inventory}}</strong>
|
||||||
|
</li>
|
||||||
|
{{/foreach}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
@ -433,6 +433,14 @@ class FormHandleModule
|
||||||
if(array_key_exists($params_where_name, $this->out_params) && $this->out_params[$params_where_name] !== null && $this->out_params[$params_where_name] !== '')
|
if(array_key_exists($params_where_name, $this->out_params) && $this->out_params[$params_where_name] !== null && $this->out_params[$params_where_name] !== '')
|
||||||
{
|
{
|
||||||
$this->out_params[$form_key] = $this->out_params[$params_where_name];
|
$this->out_params[$form_key] = $this->out_params[$params_where_name];
|
||||||
|
// min字段
|
||||||
|
} elseif(array_key_exists($params_where_name.'_min', $this->out_params) && $this->out_params[$params_where_name.'_min'] !== null && $this->out_params[$params_where_name.'_min'] !== '')
|
||||||
|
{
|
||||||
|
$this->out_params[$form_key.'_min'] = $this->out_params[$params_where_name.'_min'];
|
||||||
|
// max字段
|
||||||
|
} elseif(array_key_exists($params_where_name.'_max', $this->out_params) && $this->out_params[$params_where_name.'_max'] !== null && $this->out_params[$params_where_name.'_max'] !== '')
|
||||||
|
{
|
||||||
|
$this->out_params[$form_key.'_max'] = $this->out_params[$params_where_name.'_max'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据组件类型处理
|
// 根据组件类型处理
|
||||||
|
|
|
||||||
|
|
@ -2004,7 +2004,7 @@ class GoodsService
|
||||||
public static function GoodsDeleteHandle($goods_ids)
|
public static function GoodsDeleteHandle($goods_ids)
|
||||||
{
|
{
|
||||||
// 删除商品
|
// 删除商品
|
||||||
if(!Db::name('Goods')->where(['id'=>$goods_ids])->delete())
|
if(Db::name('Goods')->where(['id'=>$goods_ids])->delete() === false)
|
||||||
{
|
{
|
||||||
throw new \Exception('商品删除失败');
|
throw new \Exception('商品删除失败');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,12 @@ class WarehouseGoodsService
|
||||||
public static function WarehouseGoodsList($params = [])
|
public static function WarehouseGoodsList($params = [])
|
||||||
{
|
{
|
||||||
$where = empty($params['where']) ? [] : $params['where'];
|
$where = empty($params['where']) ? [] : $params['where'];
|
||||||
$field = empty($params['field']) ? '*' : $params['field'];
|
$field = empty($params['field']) ? 'wg.*' : $params['field'];
|
||||||
$m = isset($params['m']) ? intval($params['m']) : 0;
|
$m = isset($params['m']) ? intval($params['m']) : 0;
|
||||||
$n = isset($params['n']) ? intval($params['n']) : 10;
|
$n = isset($params['n']) ? intval($params['n']) : 10;
|
||||||
|
|
||||||
$order_by = empty($params['order_by']) ? 'id desc' : trim($params['order_by']);
|
$order_by = empty($params['order_by']) ? 'wg.id desc' : trim($params['order_by']);
|
||||||
$data = Db::name('WarehouseGoods')->field($field)->where($where)->order($order_by)->limit($m, $n)->select()->toArray();
|
$data = Db::name('WarehouseGoods')->alias('wg')->join('warehouse_goods_spec wgs', 'wg.id=wgs.warehouse_goods_id')->field($field)->where($where)->group('wg.id')->order($order_by)->limit($m, $n)->select()->toArray();
|
||||||
return DataReturn('处理成功', 0, self::DataHandle($data));
|
return DataReturn('处理成功', 0, self::DataHandle($data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,33 +100,53 @@ class WarehouseGoodsService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 商品规格库存
|
||||||
|
$spec_inventory = [];
|
||||||
|
$temp_inventory = Db::name('WarehouseGoodsSpec')->where(['warehouse_goods_id'=>array_column($data, 'id')])->field('warehouse_goods_id,inventory,spec')->select()->toArray();
|
||||||
|
if(!empty($temp_inventory))
|
||||||
|
{
|
||||||
|
foreach($temp_inventory as $iv)
|
||||||
|
{
|
||||||
|
$temp = empty($iv['spec']) ? [] : json_decode($iv['spec'], true);
|
||||||
|
$iv['spec'] = (!empty($temp) && is_array($temp)) ? implode(' / ', array_column($temp, 'value')) : '';
|
||||||
|
if(!array_key_exists($iv['warehouse_goods_id'], $spec_inventory))
|
||||||
|
{
|
||||||
|
$spec_inventory[$iv['warehouse_goods_id']] = [];
|
||||||
|
}
|
||||||
|
$spec_inventory[$iv['warehouse_goods_id']][] = $iv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 数据处理
|
// 数据处理
|
||||||
foreach($data as &$v)
|
foreach($data as &$v)
|
||||||
{
|
{
|
||||||
// 用户
|
// 用户
|
||||||
if(isset($v['user_id']))
|
if(array_key_exists('user_id', $v))
|
||||||
{
|
{
|
||||||
$v['user'] = UserService::GetUserViewInfo($v['user_id']);
|
$v['user'] = UserService::GetUserViewInfo($v['user_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 商品信息
|
// 商品信息
|
||||||
if(isset($v['goods_id']))
|
if(array_key_exists('goods_id', $v))
|
||||||
{
|
{
|
||||||
$v['goods'] = isset($goods[$v['goods_id']]) ? $goods[$v['goods_id']] : [];
|
$v['goods'] = isset($goods[$v['goods_id']]) ? $goods[$v['goods_id']] : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 仓库
|
// 仓库
|
||||||
if(isset($v['warehouse_id']))
|
if(array_key_exists('warehouse_id', $v))
|
||||||
{
|
{
|
||||||
$v['warehouse_name'] = isset($warehouse[$v['warehouse_id']]) ? $warehouse[$v['warehouse_id']] : '';
|
$v['warehouse_name'] = isset($warehouse[$v['warehouse_id']]) ? $warehouse[$v['warehouse_id']] : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 规格
|
||||||
|
$v['spec'] = (empty($spec_inventory) || !array_key_exists($v['id'], $spec_inventory)) ? [] : $spec_inventory[$v['id']];
|
||||||
|
|
||||||
// 时间
|
// 时间
|
||||||
if(isset($v['add_time']))
|
if(array_key_exists('add_time', $v))
|
||||||
{
|
{
|
||||||
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
|
$v['add_time'] = date('Y-m-d H:i:s', $v['add_time']);
|
||||||
}
|
}
|
||||||
if(isset($v['upd_time']))
|
if(array_key_exists('upd_time', $v))
|
||||||
{
|
{
|
||||||
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
|
$v['upd_time'] = empty($v['upd_time']) ? '' : date('Y-m-d H:i:s', $v['upd_time']);
|
||||||
}
|
}
|
||||||
|
|
@ -146,7 +166,7 @@ class WarehouseGoodsService
|
||||||
*/
|
*/
|
||||||
public static function WarehouseGoodsTotal($where = [])
|
public static function WarehouseGoodsTotal($where = [])
|
||||||
{
|
{
|
||||||
return (int) Db::name('WarehouseGoods')->where($where)->count();
|
return (int) Db::name('WarehouseGoods')->alias('wg')->join('warehouse_goods_spec wgs', 'wg.id=wgs.warehouse_goods_id')->where($where)->count('distinct wg.id');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -56,3 +56,20 @@
|
||||||
.goods-page-container {
|
.goods-page-container {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据列表规格展示
|
||||||
|
*/
|
||||||
|
.spec-inventory-list {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
.spec-inventory-list ul li .spec-name {
|
||||||
|
width: calc(100% - 75px);
|
||||||
|
}
|
||||||
|
.spec-inventory-list ul li:not(:last-child) {
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding: 3px 0;
|
||||||
|
}
|
||||||
|
.spec-inventory-list ul li:first-child {
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue