Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
纵之格
ShopXO
提交
3861d3b8
ShopXO
项目概览
纵之格
/
ShopXO
通知
394
Star
16
Fork
11
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3861d3b8
编写于
7月 16, 2020
作者:
D
devil
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
去除商品库存操作,移动到仓库中管理库存
上级
04787a07
变更
29
展开全部
隐藏空白更改
内联
并排
Showing
29 changed file
with
1281 addition
and
220 deletion
+1281
-220
application/admin/controller/Warehouse.php
application/admin/controller/Warehouse.php
+3
-3
application/admin/controller/Warehousegoods.php
application/admin/controller/Warehousegoods.php
+111
-36
application/admin/form/Warehousegoods.php
application/admin/form/Warehousegoods.php
+8
-0
application/admin/view/default/goods/save_info.html
application/admin/view/default/goods/save_info.html
+0
-14
application/admin/view/default/warehouse/module/operate.html
application/admin/view/default/warehouse/module/operate.html
+1
-5
application/admin/view/default/warehousegoods/detail.html
application/admin/view/default/warehousegoods/detail.html
+26
-2
application/admin/view/default/warehousegoods/goods_search.html
...ation/admin/view/default/warehousegoods/goods_search.html
+23
-0
application/admin/view/default/warehousegoods/goods_spec.html
...ication/admin/view/default/warehousegoods/goods_spec.html
+42
-0
application/admin/view/default/warehousegoods/index.html
application/admin/view/default/warehousegoods/index.html
+58
-1
application/admin/view/default/warehousegoods/inventory_info.html
...ion/admin/view/default/warehousegoods/inventory_info.html
+68
-0
application/admin/view/default/warehousegoods/module/operate.html
...ion/admin/view/default/warehousegoods/module/operate.html
+4
-4
application/admin/view/default/warehousegoods/save_info.html
application/admin/view/default/warehousegoods/save_info.html
+0
-79
application/common.php
application/common.php
+44
-0
application/index/controller/Orderaftersale.php
application/index/controller/Orderaftersale.php
+1
-1
application/index/view/default/orderaftersale/detail.html
application/index/view/default/orderaftersale/detail.html
+4
-4
application/service/GoodsService.php
application/service/GoodsService.php
+77
-10
application/service/SearchService.php
application/service/SearchService.php
+2
-2
application/service/WarehouseGoodsService.php
application/service/WarehouseGoodsService.php
+528
-4
application/tags.php
application/tags.php
+1
-0
config/shopxo.sql
config/shopxo.sql
+71
-32
public/static/admin/default/css/warehousegoods.css
public/static/admin/default/css/warehousegoods.css
+58
-0
public/static/admin/default/css/warehousegoods.inventoryinfo.css
...static/admin/default/css/warehousegoods.inventoryinfo.css
+13
-0
public/static/admin/default/js/goods.js
public/static/admin/default/js/goods.js
+4
-7
public/static/admin/default/js/warehousegoods.js
public/static/admin/default/js/warehousegoods.js
+109
-0
public/static/common/css/common.css
public/static/common/css/common.css
+7
-0
public/static/common/js/common.js
public/static/common/js/common.js
+15
-13
public/static/index/default/js/buy.js
public/static/index/default/js/buy.js
+1
-1
public/static/index/default/js/common.js
public/static/index/default/js/common.js
+1
-1
public/static/index/default/js/useraddress.js
public/static/index/default/js/useraddress.js
+1
-1
未找到文件。
application/admin/controller/Warehouse.php
浏览文件 @
3861d3b8
...
...
@@ -98,7 +98,7 @@ class Warehouse extends Common
}
/**
*
文章
添加/编辑页面
* 添加/编辑页面
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
...
...
@@ -122,7 +122,7 @@ class Warehouse extends Common
$data
=
empty
(
$ret
[
'data'
][
0
])
?
[]
:
$ret
[
'data'
][
0
];
}
//
文章
编辑页面钩子
// 编辑页面钩子
$hook_name
=
'plugins_view_admin_warehouse_save'
;
$this
->
assign
(
$hook_name
.
'_data'
,
Hook
::
listen
(
$hook_name
,
[
...
...
@@ -146,7 +146,7 @@ class Warehouse extends Common
}
/**
*
文章
添加/编辑
* 添加/编辑
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
...
...
application/admin/controller/Warehousegoods.php
浏览文件 @
3861d3b8
...
...
@@ -12,6 +12,8 @@ namespace app\admin\controller;
use
think\facade\Hook
;
use
app\service\WarehouseGoodsService
;
use
app\service\WarehouseService
;
use
app\service\GoodsService
;
/**
* 仓库商品管理
...
...
@@ -74,6 +76,19 @@ class WarehouseGoods extends Common
];
$ret
=
WarehouseGoodsService
::
WarehouseGoodsList
(
$data_params
);
// 有效仓库列表
$data_params
=
[
'field'
=>
'id,name'
,
'where'
=>
[
'is_enable'
=>
1
,
],
];
$warehouse
=
WarehouseService
::
WarehouseList
(
$data_params
);
$this
->
assign
(
'warehouse_list'
,
$warehouse
[
'data'
]);
// 商品分类
$this
->
assign
(
'goods_category_list'
,
GoodsService
::
GoodsCategoryAll
());
// 基础参数赋值
$this
->
assign
(
'params'
,
$this
->
data_request
);
$this
->
assign
(
'page_html'
,
$page
->
GetPageHtml
());
...
...
@@ -90,35 +105,42 @@ class WarehouseGoods extends Common
*/
public
function
Detail
()
{
$data
=
[];
$spec
=
[];
if
(
!
empty
(
$this
->
data_request
[
'id'
]))
{
// 条件
$where
=
[
[
'id'
,
'='
,
intval
(
$this
->
data_request
[
'id'
])],
];
// 获取列表
$data_params
=
[
'm'
=>
0
,
'n'
=>
1
,
'where'
=>
$where
,
];
$ret
=
WarehouseGoodsService
::
WarehouseGoodsList
(
$data_params
);
$data
=
(
empty
(
$ret
[
'data'
])
||
empty
(
$ret
[
'data'
][
0
]))
?
[]
:
$ret
[
'data'
][
0
];
$this
->
assign
(
'data'
,
$data
);
// 获取规格库存
$ret
=
WarehouseGoodsService
::
WarehouseGoodsInventoryData
([
'id'
=>
intval
(
$this
->
data_request
[
'id'
])]);
if
(
$ret
[
'code'
]
==
0
)
{
// 规格
if
(
!
empty
(
$ret
[
'data'
][
'spec'
]))
{
$spec
=
$ret
[
'data'
][
'spec'
];
}
// 详情数据
if
(
!
empty
(
$ret
[
'data'
][
'data'
]))
{
$ret
=
WarehouseGoodsService
::
DataHandle
([
$ret
[
'data'
][
'data'
]]);
$data
=
$ret
[
0
];
}
}
}
$this
->
assign
(
'spec'
,
$spec
);
$this
->
assign
(
'data'
,
$data
);
return
$this
->
fetch
();
}
/**
*
文章添加/
编辑页面
*
库存
编辑页面
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public
function
Save
Info
()
public
function
Inventory
Info
()
{
// 参数
$params
=
$this
->
data_request
;
...
...
@@ -127,25 +149,10 @@ class WarehouseGoods extends Common
$data
=
[];
if
(
!
empty
(
$params
[
'id'
]))
{
// 获取列表
$data_params
=
array
(
'where'
=>
[
'id'
=>
intval
(
$params
[
'id'
])],
);
$ret
=
WarehouseGoodsService
::
WarehouseList
(
$data_params
);
$data
=
empty
(
$ret
[
'data'
][
0
])
?
[]
:
$ret
[
'data'
][
0
];
$ret
=
WarehouseGoodsService
::
WarehouseGoodsInventoryData
(
$params
);
$data
=
empty
(
$ret
[
'data'
])
?
[]
:
$ret
[
'data'
];
}
// 文章编辑页面钩子
$hook_name
=
'plugins_view_admin_warehouse_goods_save'
;
$this
->
assign
(
$hook_name
.
'_data'
,
Hook
::
listen
(
$hook_name
,
[
'hook_name'
=>
$hook_name
,
'is_backend'
=>
true
,
'warehouse_id'
=>
isset
(
$params
[
'id'
])
?
$params
[
'id'
]
:
0
,
'data'
=>
&
$data
,
'params'
=>
&
$params
,
]));
// 数据
$this
->
assign
(
'data'
,
$data
);
$this
->
assign
(
'params'
,
$params
);
...
...
@@ -153,14 +160,14 @@ class WarehouseGoods extends Common
}
/**
*
文章添加/
编辑
*
库存
编辑
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-11
* @desc description
*/
public
function
Save
()
public
function
Inventory
Save
()
{
// 是否ajax请求
if
(
!
IS_AJAX
)
...
...
@@ -170,7 +177,7 @@ class WarehouseGoods extends Common
// 开始处理
$params
=
$this
->
data_request
;
return
WarehouseGoodsService
::
WarehouseSave
(
$params
);
return
WarehouseGoodsService
::
Warehouse
GoodsInventory
Save
(
$params
);
}
/**
...
...
@@ -216,5 +223,73 @@ class WarehouseGoods extends Common
$params
[
'admin'
]
=
$this
->
admin
;
return
WarehouseGoodsService
::
WarehouseGoodsStatusUpdate
(
$params
);
}
/**
* 商品搜索
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
*/
public
function
GoodsSearch
()
{
// 是否ajax请求
if
(
!
IS_AJAX
)
{
return
$this
->
error
(
'非法访问'
);
}
// 搜索数据
$ret
=
WarehouseGoodsService
::
GoodsSearchList
(
$this
->
data_request
);
if
(
$ret
[
'code'
]
==
0
)
{
$this
->
assign
(
'data'
,
$ret
[
'data'
][
'data'
]);
$ret
[
'data'
][
'data'
]
=
$this
->
fetch
();
}
return
$ret
;
}
/**
* 仓库商品添加
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-14
* @desc description
*/
public
function
GoodsAdd
()
{
// 是否ajax请求
if
(
!
IS_AJAX
)
{
return
$this
->
error
(
'非法访问'
);
}
// 开始处理
$params
=
$this
->
data_request
;
return
WarehouseGoodsService
::
WarehouseGoodsAdd
(
$params
);
}
/**
* 仓库商品删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-14
* @desc description
*/
public
function
GoodsDel
()
{
// 是否ajax请求
if
(
!
IS_AJAX
)
{
return
$this
->
error
(
'非法访问'
);
}
// 开始处理
$params
=
$this
->
data_request
;
return
WarehouseGoodsService
::
WarehouseGoodsDel
(
$params
);
}
}
?>
\ No newline at end of file
application/admin/form/Warehousegoods.php
浏览文件 @
3861d3b8
...
...
@@ -104,6 +104,14 @@ class Warehousegoods
'is_multiple'
=>
1
,
],
],
[
'label'
=>
'总库存'
,
'view_type'
=>
'field'
,
'view_key'
=>
'inventory'
,
'search_config'
=>
[
'form_type'
=>
'section'
,
],
],
[
'label'
=>
'创建时间'
,
'view_type'
=>
'field'
,
...
...
application/admin/view/default/goods/save_info.html
浏览文件 @
3861d3b8
...
...
@@ -246,10 +246,6 @@
<label
class=
"block"
>
销售价格
</label>
<input
type=
"text"
placeholder=
"价格"
class=
"am-radius popup_all_price"
pattern=
"^([0-9]{1}\d{0,6})(\.\d{1,2})?$"
data-validation-message=
"请填写有效的销售金额"
/>
</div>
<div
class=
"am-form-group"
>
<label
class=
"block"
>
库存
</label>
<input
type=
"number"
placeholder=
"库存"
class=
"am-radius popup_all_number"
min=
"0"
max=
"100000000"
pattern=
"^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$"
data-validation-message=
"库存数量 0~100000000"
/>
</div>
<div
class=
"am-form-group"
>
<label
class=
"block"
>
重量
</label>
<input
type=
"number"
placeholder=
"重量"
class=
"am-radius popup_all_weight"
maxlength=
"80"
min=
"0.00"
max=
"100000000.00"
step=
"0.01"
data-validation-message=
"规格重量 0.00~100000000.00"
/>
...
...
@@ -307,10 +303,6 @@
<span>
价格(元)
</span>
<i
class=
"am-icon-edit"
></i>
</th>
<th>
<span>
库存
</span>
<i
class=
"am-icon-edit"
></i>
</th>
<th>
<span>
重量(kg)
</span>
<i
class=
"am-icon-edit"
></i>
...
...
@@ -337,9 +329,6 @@
<td
class=
"value-start"
>
<input
type=
"text"
name=
"specifications_price[]"
placeholder=
"价格"
class=
"am-radius"
pattern=
"^([0-9]{1}\d{0,6})(\.\d{1,2})?$"
data-validation-message=
"请填写有效的销售金额"
required
/>
</td>
<td>
<input
type=
"number"
name=
"specifications_number[]"
placeholder=
"库存"
class=
"am-radius"
min=
"0"
max=
"100000000"
pattern=
"^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$"
data-validation-message=
"库存数量 0~100000000"
required
/>
</td>
<td>
<input
type=
"number"
name=
"specifications_weight[]"
placeholder=
"重量"
class=
"am-radius"
maxlength=
"80"
min=
"0.00"
max=
"100000000.00"
step=
"0.01"
data-validation-message=
"规格重量 0.00~100000000.00"
/>
</td>
...
...
@@ -378,9 +367,6 @@
<td
class=
"value-start"
>
<input
type=
"text"
name=
"specifications_price[]"
placeholder=
"价格"
class=
"am-radius"
pattern=
"^([0-9]{1}\d{0,6})(\.\d{1,2})?$"
data-validation-message=
"请填写有效的销售金额"
value=
"{{$v.data.price}}"
required
/>
</td>
<td>
<input
type=
"number"
name=
"specifications_number[]"
placeholder=
"库存"
class=
"am-radius"
min=
"0"
max=
"100000000"
data-validation-message=
"库存数量 0~100000000"
value=
"{{$v.data.inventory}}"
required
/>
</td>
<td>
<input
type=
"number"
name=
"specifications_weight[]"
placeholder=
"重量"
class=
"am-radius"
min=
"0.00"
max=
"100000000.00"
step=
"0.01"
data-validation-message=
"规格重量 0.00~100000000.00"
value=
"{{if $v['data']['weight'] gt 0}}{{$v.data.weight}}{{/if}}"
/>
</td>
...
...
application/admin/view/default/warehouse/module/operate.html
浏览文件 @
3861d3b8
...
...
@@ -3,11 +3,7 @@
<i
class=
"am-icon-eye"
></i>
<span>
详情
</span>
</button>
<a
class=
"am-btn am-btn-primary am-btn-xs am-radius am-btn-block"
href=
"{{:MyUrl('admin/warehouse/goods', array('id'=>$module_data['id']))}}"
>
<i
class=
"am-icon-opencart"
></i>
<span>
商品
</span>
</a>
<a
class=
"am-btn am-btn-secondary am-btn-xs am-radius am-btn-block"
href=
"{{:MyUrl('admin/warehouse/saveinfo', array('wid'=>$module_data['id']))}}"
>
<a
class=
"am-btn am-btn-secondary am-btn-xs am-radius am-btn-block"
href=
"{{:MyUrl('admin/warehouse/saveinfo', ['wid'=>$module_data['id']])}}"
>
<i
class=
"am-icon-edit"
></i>
<span>
编辑
</span>
</a>
...
...
application/admin/view/default/warehousegoods/detail.html
浏览文件 @
3861d3b8
...
...
@@ -8,9 +8,33 @@
<!-- 规格 -->
<div
class=
"am-panel am-panel-default"
>
<div
class=
"am-panel-hd"
>
规格
</div>
<div
class=
"am-panel-hd"
>
规格
库存
</div>
<div
class=
"am-panel-bd"
>
hello
{{if !empty($spec)}}
<table
class=
"am-table am-table-striped am-table-hover form-inventory-container"
>
<thead>
<tr>
<th>
规格
</th>
<th>
库存
</th>
</tr>
</thead>
<tbody>
{{foreach $spec as $v}}
<tr>
<td>
{{$v.name}}
</td>
<td>
{{if empty($v['inventory'])}}
<span
class=
"am-text-grey"
>
无
</span>
{{else /}}
{{$v.inventory}}
{{/if}}
</tr>
{{/foreach}}
</tbody>
</table>
{{else /}}
<div
class=
"table-no"
><i
class=
"am-icon-warning"
></i>
无规格库存数据
</div>
{{/if}}
</div>
</div>
{{/block}}
\ No newline at end of file
application/admin/view/default/warehousegoods/goods_search.html
0 → 100644
浏览文件 @
3861d3b8
{{if !empty($data)}}
<ul
class=
"am-gallery am-avg-sm-2 am-avg-md-4 am-avg-lg-4 am-gallery-bordered"
>
{{foreach $data as $v}}
<li
data-gid=
"{{$v.id}}"
data-add-html=
'<a href="javascript:;" class="am-icon-btn am-icon-plus am-success goods-add-submit" data-type="add"></a>'
data-del-html=
'<a href="javascript:;" class="am-icon-btn am-icon-remove am-danger goods-del-submit" data-type="del"></a>'
>
<div
class=
"am-gallery-item am-radius"
>
<a
href=
"{{$v.goods_url}}"
target=
"_blank"
title=
"{{$v.title}}"
>
<img
src=
"{{$v.images}}"
alt=
"{{$v.title}}"
/>
</a>
<h3
class=
"am-gallery-title"
>
{{$v.title}}
</h3>
<div
class=
"icon-submit-container"
>
{{if isset($v['is_exist']) and $v['is_exist'] eq 1}}
<a
href=
"javascript:;"
class=
"am-icon-btn am-icon-remove am-danger goods-del-submit"
data-type=
"del"
></a>
{{else /}}
<a
href=
"javascript:;"
class=
"am-icon-btn am-icon-plus am-success goods-add-submit"
data-type=
"add"
></a>
{{/if}}
</div>
</div>
</li>
{{/foreach}}
</ul>
{{else /}}
<div
class=
"table-no"
><i
class=
"am-icon-warning"
></i>
没有相关商品
</div>
{{/if}}
\ No newline at end of file
application/admin/view/default/warehousegoods/goods_spec.html
0 → 100644
浏览文件 @
3861d3b8
{{if !empty($goods)}}
<div
class=
"am-margin-bottom-sm"
data-old-price=
"{{$goods.price}}"
>
<strong
class=
"am-text-danger am-text-lg goods-price"
>
{{$price_symbol}}{{$goods.price}}
</strong>
{{if !empty($goods['original_price']) and $goods['original_price'] gt 0}}
<span
class=
"am-margin-left-xs goods-original-price"
data-old-price=
"{{$goods.original_price}}"
>
{{$price_symbol}}{{$goods.original_price}}
</span>
{{/if}}
</div>
<div
class=
"goods-spec am-margin-top-sm"
data-id=
"{{$goods.id}}"
>
{{if !empty($goods['specifications']['choose'])}}
{{foreach $goods.specifications.choose as $key=>$spec}}
{{if !empty($spec['value'])}}
<div
class=
"spec-options sku-items"
>
<div
class=
"spec-title"
>
{{$spec.name}}
</div>
<ul>
{{foreach $spec.value as $keys=>$specs}}
<li
class=
"sku-line {{if !empty($specs['images'])}} sku-line-images{{/if}}"
data-type-value=
"{{$spec.name}}"
data-value=
"{{$specs.name}}"
{{
if
!
empty
($
specs
['
images
'])}}
data-type-images=
"{{$specs.images}}"
{{/
if
}}
>
{{if !empty($specs['images'])}}
<img
src=
"{{$specs.images}}"
/>
{{/if}}
{{$specs.name}}
<i></i>
</li>
{{/foreach}}
</ul>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<div
class=
"am-margin-top-sm"
>
<div
class=
"spec-title number"
>
库存
</div>
<div
class=
"inventory-number am-margin-top-sm"
>
<div
class=
"am-input-group am-input-group-sm inventory-container"
>
<button
class=
"am-input-group-label"
id=
"min"
type=
"button"
>
-
</button>
<input
type=
"number"
class=
"am-form-field"
value=
"0"
id=
"inventory-value"
/>
<button
class=
"am-input-group-label"
id=
"add"
type=
"button"
>
+
</button>
</div>
<span
class=
"inventory-unit"
>
{{$goods.inventory_unit}}
</span>
</div>
</div>
{{else /}}
<div
class=
"table-no"
><i
class=
"am-icon-warning"
></i>
没有相关商品
</div>
{{/if}}
\ No newline at end of file
application/admin/view/default/warehousegoods/index.html
浏览文件 @
3861d3b8
...
...
@@ -3,7 +3,64 @@
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<
a
href=
"{{:MyUrl('admin/warehousegoods/saveinfo')}}"
class=
"am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"
>
新增
</a
>
<
button
type=
"button"
class=
"am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus add-goods-submit"
>
添加
</button
>
<!-- 父级内容 -->
{__block__}
{{/block}}
<!-- 公共代码 -->
{{block name="form_page_bottom"}}
<!-- 商品添加弹窗 -->
<div
class=
"am-popup"
id=
"warehouse-goods-popup"
>
<div
class=
"am-popup-inner"
>
<div
class=
"am-popup-hd"
>
<h4
class=
"am-popup-title"
>
商品添加
</h4>
<span
data-am-modal-close
class=
"am-close"
>
×
</span>
</div>
<div
class=
"am-popup-bd am-padding-0"
>
<form
class=
"am-form am-padding-sm goods-add-container"
>
<!-- 搜索 -->
<div
class=
"forth-selection-container"
data-search-url=
"{{:MyUrl('admin/warehousegoods/goodssearch')}}"
>
<select
class=
"am-radius chosen-select forth-selection-form-warehouse"
data-placeholder=
"仓库..."
data-validation-message=
"请选择仓库"
>
<option
value=
""
>
仓库...
</option>
{{if !empty($warehouse_list)}}
{{foreach $warehouse_list as $v}}
<option
value=
"{{$v.id}}"
>
{{$v.name}}
</option>
{{/foreach}}
{{/if}}
</select>
<select
class=
"am-radius chosen-select forth-selection-form-category"
data-placeholder=
"商品分类..."
data-validation-message=
"请选择商品分类"
>
<option
value=
""
>
商品分类...
</option>
{{if !empty($goods_category_list)}}
{{foreach $goods_category_list as $v}}
<option
value=
"{{$v.id}}"
>
一级 - {{$v.name}}
</option>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option
style=
"padding-left: 15px;"
value=
"{{$vs.id}}"
>
二级 - {{$vs.name}}
</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $vss}}
<option
style=
"padding-left: 30px;"
value=
"{{$vss.id}}"
>
三级 - {{$vss.name}}
</option>
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</select>
<input
type=
"text"
placeholder=
"商品名称"
class=
"am-radius forth-selection-form-keywords"
/>
<button
type=
"button"
class=
"am-btn am-btn-secondary am-radius am-btn-sm am-icon-search search-submit"
data-am-loading=
"{loadingText: ' 搜索中...'}"
>
搜索
</button>
</div>
<!-- 商品列表 -->
<div
class=
"am-scrollable-vertical am-margin-top-sm am-padding-bottom-xs goods-list-container"
data-loading-msg=
"搜索中..."
data-add-url=
"{{:MyUrl('admin/warehousegoods/goodsadd')}}"
data-del-url=
"{{:MyUrl('admin/warehousegoods/goodsdel')}}"
>
<div
class=
"table-no"
><i
class=
"am-icon-warning"
></i>
请搜索商品
</div>
</div>
<!-- 分页 -->
<div
class=
"am-margin-top-sm am-text-center goods-page-container"
></div>
</form>
</div>
</div>
</div>
{{/block}}
\ No newline at end of file
application/admin/view/default/warehousegoods/inventory_info.html
0 → 100644
浏览文件 @
3861d3b8
{{include file="public/header" /}}
<!-- right content start -->
<div
class=
"content-right"
>
<div
class=
"content"
>
{{if !empty($data['spec'])}}
<!-- form start -->
<form
class=
"am-form form-validation"
action=
"{{:MyUrl('admin/warehousegoods/inventorysave')}}"
method=
"POST"
request-type=
"ajax-fun"
request-value=
"ViewModalBack"
>
<table
class=
"am-table am-table-striped am-table-hover form-inventory-container"
>
<thead>
<tr>
<th>
规格
</th>
<th>
库存
</th>
</tr>
</thead>
<tbody>
{{foreach $data.spec as $v}}
<tr>
<td>
{{$v.name}}
</td>
<td>
<input
type=
"number"
name=
"specifications_inventory[]"
value=
"{{if !empty($v['inventory'])}}{{$v.inventory}}{{/if}}"
placeholder=
"库存"
class=
"am-radius"
min=
"0"
max=
"100000000"
pattern=
"^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$"
data-validation-message=
"库存数量 0~100000000"
/>
<input
type=
"hidden"
name=
"specifications_md5_key[]"
value=
"{{$v.md5_key}}"
/>
<input
type=
"hidden"
name=
"specifications_spec[]"
value=
"{{$v.spec}}"
/>
</td>
</tr>
{{/foreach}}
</tbody>
</table>
<div
class=
"form-inventory-submit"
>
<input
type=
"hidden"
name=
"id"
{{
if
!
empty
($
data
['
data
'])}}
value=
"{{$data.data.id}}"
{{/
if
}}
/>
<button
type=
"submit"
class=
"am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block"
data-am-loading=
"{loadingText:'处理中...'}"
>
保存
</button>
</div>
</form>
<!-- form end -->
{{else /}}
<div
class=
"table-no"
><i
class=
"am-icon-warning"
></i>
无规格数据
</div>
{{/if}}
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script
type=
"text/javascript"
>
// 返回处理
function
ViewModalBack
(
e
)
{
$
(
function
()
{
if
(
e
.
code
==
0
)
{
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
,
'
success
'
);
setTimeout
(
function
()
{
// 关闭弹窗
$
(
window
.
parent
.
document
).
find
(
'
.warehouse-goods-popup .am-close
'
).
trigger
(
'
click
'
);
},
1500
);
}
else
{
$
(
'
form.form-validation
'
).
find
(
'
button[type="submit"]
'
).
button
(
'
reset
'
);
$
.
AMUI
.
progress
.
done
();
Prompt
(
e
.
msg
);
}
});
}
</script>
\ No newline at end of file
application/admin/view/default/warehousegoods/module/operate.html
浏览文件 @
3861d3b8
...
...
@@ -3,10 +3,10 @@
<i
class=
"am-icon-eye"
></i>
<span>
详情
</span>
</button>
<
a
class=
"am-btn am-btn-secondary am-btn-xs am-radius am-btn-block"
href=
"{{:MyUrl('admin/warehousegoods/saveinfo', array('wid'=>$module_data['id']))}}
"
>
<i
class=
"am-icon-
edit
"
></i>
<span>
编辑
</span>
</
a
>
<
button
type=
"button"
class=
"am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-popup"
data-url=
"{{:MyUrl('admin/warehousegoods/inventoryinfo', ['id'=>$module_data['id']])}}"
data-class=
"warehouse-goods-popup
"
>
<i
class=
"am-icon-
square-o
"
></i>
<span>
库存
</span>
</
button
>
<button
type=
"button"
class=
"am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete"
data-url=
"{{:MyUrl('admin/warehousegoods/delete')}}"
data-id=
"{{$module_data.id}}"
data-key=
"ids"
>
<i
class=
"am-icon-trash-o"
></i>
<span>
删除
</span>
...
...
application/admin/view/default/warehousegoods/save_info.html
已删除
100644 → 0
浏览文件 @
04787a07
{{include file="public/header" /}}
<!-- right content start -->
<div
class=
"content-right"
>
<div
class=
"content"
>
<!-- form start -->
<form
class=
"am-form form-validation view-save"
action=
"{{:MyUrl('admin/warehouse/save')}}"
method=
"POST"
request-type=
"ajax-url"
request-value=
"{{:MyUrl('admin/warehouse/index', $params)}}"
>
<legend>
<span
class=
"am-text-default"
>
仓库{{if empty($data['id'])}}添加{{else /}}编辑{{/if}}
</span>
<a
href=
"{{:MyUrl('admin/warehouse/index', $params)}}"
class=
"am-fr am-text-sm am-margin-top-xs am-icon-mail-reply"
>
返回
</a>
</legend>
<div
class=
"am-form-group"
>
<label>
名称
<span
class=
"am-form-group-label-tips-must"
>
必填
</span></label>
<input
type=
"text"
name=
"name"
placeholder=
"名称"
minlength=
"2"
maxlength=
"16"
data-validation-message=
"名称格式 2~16 个字符之间"
class=
"am-radius"
{{
if
!
empty
($
data
)}}
value=
"{{$data.name}}"
{{/
if
}}
required
/>
</div>
<div
class=
"am-form-group"
>
<label>
别名
<span
class=
"am-form-group-label-tips"
>
选填
</span></label>
<input
type=
"text"
name=
"alias"
placeholder=
"别名"
minlength=
"0"
maxlength=
"16"
data-validation-message=
"别名格式最多 16 个字符"
class=
"am-radius"
{{
if
!
empty
($
data
)}}
value=
"{{$data.alias}}"
{{/
if
}}
/>
</div>
<div
class=
"am-form-group"
>
<label>
权重
<span
class=
"am-form-group-label-tips"
>
选填
</span></label>
<input
type=
"number"
name=
"level"
placeholder=
"权重"
minlength=
"0"
maxlength=
"16"
data-validation-message=
"请输入有效权重数值"
class=
"am-radius"
{{
if
!
empty
($
data
)}}
value=
"{{$data.level}}"
{{/
if
}}
/>
</div>
<div
class=
"am-form-group"
>
<label>
联系人
<span
class=
"am-form-group-label-tips-must"
>
必填
</span></label>
<input
type=
"text"
name=
"contacts_name"
placeholder=
"联系人"
minlength=
"2"
maxlength=
"16"
data-validation-message=
"联系人格式 2~16 个字符之间"
class=
"am-radius"
{{
if
!
empty
($
data
)}}
value=
"{{$data.contacts_name}}"
{{/
if
}}
required
/>
</div>
<div
class=
"am-form-group"
>
<label>
联系电话
<span
class=
"am-form-group-label-tips-must"
>
必填
</span></label>
<input
type=
"text"
name=
"contacts_tel"
placeholder=
"电话"
minlength=
"6"
maxlength=
"30"
data-validation-message=
"电话格式有误"
class=
"am-radius"
{{
if
!
empty
($
data
)}}
value=
"{{$data.contacts_tel}}"
{{/
if
}}
required
/>
</div>
{{include file="lib/region_linkage" /}}
<div
class=
"am-form-group"
>
<label>
详细地址
<span
class=
"am-form-group-label-tips-must"
>
必填
</span></label>
<div
class=
"am-input-group am-input-group-sm"
>
<input
type=
"hidden"
name=
"lng"
id=
"form-lng"
{{
if
!
empty
($
data
)}}
value=
"{{$data.lng}}"
{{/
if
}}
/>
<input
type=
"hidden"
name=
"lat"
id=
"form-lat"
{{
if
!
empty
($
data
)}}
value=
"{{$data.lat}}"
{{/
if
}}
/>
<input
type=
"text"
name=
"address"
id=
"form-address"
placeholder=
"详细地址"
minlength=
"2"
maxlength=
"80"
data-validation-message=
"详细地址格式 1~80 个字符之间"
class=
"am-radius"
{{
if
!
empty
($
data
)}}
value=
"{{$data.address}}"
{{/
if
}}
required
/>
<span
class=
"am-input-group-btn"
>
<button
class=
"am-btn am-btn-default am-radius"
type=
"button"
id=
"map-location-submit"
><span
class=
"am-icon-map-marker"
></span>
定位
</button>
</span>
</div>
<div
id=
"map"
data-level=
"17"
class=
"am-margin-top-xs"
></div>
</div>
<div
class=
"am-form-group"
>
<label
class=
"block"
>
是否默认
</label>
<input
name=
"is_default"
value=
"1"
type=
"checkbox"
data-off-text=
"否"
data-on-text=
"是"
data-size=
"xs"
data-on-color=
"success"
data-off-color=
"default"
data-handle-width=
"49"
data-am-switch
{{
if
isset
($
data
['
is_default
'])
and
$
data
['
is_default
']
eq
1}}
checked=
"true"
{{/
if
}}
/>
</div>
<div
class=
"am-form-group"
>
<label
class=
"block"
>
是否启用
</label>
<input
name=
"is_enable"
value=
"1"
type=
"checkbox"
data-off-text=
"否"
data-on-text=
"是"
data-size=
"xs"
data-on-color=
"success"
data-off-color=
"default"
data-handle-width=
"49"
data-am-switch
{{
if
isset
($
data
['
is_enable
'])
and
$
data
['
is_enable
']
eq
1}}
checked=
"true"
{{/
if
}}
/>
</div>
<div
class=
"am-form-group am-form-group-refreshing"
>
<input
type=
"hidden"
name=
"id"
{{
if
!
empty
($
data
)}}
value=
"{{$data.id}}"
{{/
if
}}
/>
<button
type=
"submit"
class=
"am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block"
data-am-loading=
"{loadingText:'处理中...'}"
>
保存
</button>
</div>
</form>
<!-- form end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->
<script
type=
"text/javascript"
>
$
(
function
()
{
// 百度地图初始化
MapInit
({{
if
!
empty
(
$data
[
'
lng
'
])}}{{
$data
[
'
lng
'
]}}{{
else
/}}116.400244{{/i
f
}},{{
if
!
empty
(
$data
[
'
lat
'
])}}{{
$data
[
'
lat
'
]}}{{
else
/}}39.92556{{/i
f
}});
});
</script>
\ No newline at end of file
application/common.php
浏览文件 @
3861d3b8
...
...
@@ -11,6 +11,50 @@
// 应用公共文件
/**
* 笛卡尔积生成规格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-15
* @desc description
* @param [array] $arr1 [要进行笛卡尔积的二维数组]
* @param [array] $arr2 [最终实现的笛卡尔积组合,可不传]
*/
function
SpecCartesian
(
$arr1
,
$arr2
=
[])
{
$result
=
[];
if
(
!
empty
(
$arr1
))
{
// 去除第一个元素
$first
=
array_splice
(
$arr1
,
0
,
1
);
// 判断是否是第一次进行拼接
if
(
count
(
$arr2
)
>
0
)
{
foreach
(
$arr2
as
$v
)
{
foreach
(
$first
[
0
]
as
$vs
)
{
$result
[]
=
$v
.
','
.
$vs
;
}
}
}
else
{
foreach
(
$first
[
0
]
as
$vs
)
{
$result
[]
=
$vs
;
}
}
// 递归进行拼接
if
(
count
(
$arr1
)
>
0
)
{
$result
=
SpecCartesian
(
$arr1
,
$result
);
}
}
return
$result
;
}
/**
* 后台管理权限校验方法
* @author Devil
...
...
application/index/controller/Orderaftersale.php
浏览文件 @
3861d3b8
...
...
@@ -139,7 +139,7 @@ class Orderaftersale extends Common
// 编辑器文件存放地址
$this
->
assign
(
'editor_path_type'
,
'order_aftersale-'
.
$this
->
user
[
'id'
]
.
'-'
.
$order_id
.
'-'
.
$order_detail_id
);
$this
->
assign
(
'
aftersale
_search_keywords_name'
,
'fp0'
);
$this
->
assign
(
'
form
_search_keywords_name'
,
'fp0'
);
$this
->
assign
(
'params'
,
$this
->
data_request
);
return
$this
->
fetch
();
}
else
{
...
...
application/index/view/default/orderaftersale/detail.html
浏览文件 @
3861d3b8
...
...
@@ -112,7 +112,7 @@
<!-- 拒绝/关闭 -->
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 5}}
<div
class=
"am-alert am-alert-warning"
>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
aftersale
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
form
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
</div>
{{/if}}
...
...
@@ -149,7 +149,7 @@
{{case 0|1|2}}
{{if $new_aftersale_data['status'] eq 1 and $new_aftersale_data['type'] eq 1}}
<div
class=
"am-alert"
>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
aftersale
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
form
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
<button
type=
"button"
class=
"am-btn am-btn-primary am-radius am-margin-left-sm orderaftersale-delivery-submit"
data-am-modal=
"{target: '#popup-orderaftersale-delivery'}"
data-is-auto-delivery=
"{{if isset($params['isautodelivery'])}}{{$params.isautodelivery}}{{else /}}0{{/if}}"
>
立即退货
</button>
</div>
<div
class=
"am-alert am-alert-warning"
>
...
...
@@ -159,14 +159,14 @@
{{include file="orderaftersale/delivery" /}}
{{else /}}
<div
class=
"am-alert"
>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
aftersale
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
form
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
</div>
{{/if}}
{{/case}}
{{case 3|4}}
<div
class=
"am-alert {{if $new_aftersale_data['status'] eq 3}} am-alert-success{{else /}} am-alert-danger{{/if}}"
>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
aftersale
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
{{$new_aftersale_data.tips_msg}}
<a
href=
"{{:MyUrl('index/orderaftersale/index', [$
form
_search_keywords_name=>$new_aftersale_data['order_no']])}}"
>
查看售后订单
</a>
</div>
{{/case}}
{{/switch}}
...
...
application/service/GoodsService.php
浏览文件 @
3861d3b8
...
...
@@ -15,6 +15,7 @@ use think\facade\Hook;
use
app\service\ResourcesService
;
use
app\service\BrandService
;
use
app\service\RegionService
;
use
app\service\WarehouseGoodsService
;
/**
* 商品服务层
...
...
@@ -446,7 +447,7 @@ class GoodsService
// 获取规格
if
(
$is_spec
&&
!
empty
(
$v
[
'id'
]))
{
$v
[
'specifications'
]
=
self
::
GoodsSpecifications
(
[
'goods_id'
=>
$v
[
'id'
]
]);
$v
[
'specifications'
]
=
self
::
GoodsSpecifications
(
$v
[
'id'
]);
}
// 获取app内容
...
...
@@ -504,18 +505,18 @@ class GoodsService
}
/**
* 获取商品
属性
* @author
Devil
* 获取商品
规格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 20
18-08-29
* @date 20
20-07-16
* @desc description
* @param [
array] $params [输入参数
]
* @param [
int] $goods_id [商品id
]
*/
public
static
function
GoodsSpecifications
(
$
params
=
[]
)
public
static
function
GoodsSpecifications
(
$
goods_id
)
{
// 条件
$where
=
[
'goods_id'
=>
$
params
[
'goods_id'
]
];
$where
=
[
'goods_id'
=>
$
goods_id
];
// 规格类型
$choose
=
Db
::
name
(
'GoodsSpecType'
)
->
where
(
$where
)
->
order
(
'id asc'
)
->
select
();
...
...
@@ -539,7 +540,7 @@ class GoodsService
foreach
(
$choose
[
0
][
'value'
]
as
&
$temp_spec
)
{
$temp_spec_params
=
[
'id'
=>
$
params
[
'goods_id'
]
,
'id'
=>
$
goods_id
,
'spec'
=>
[
[
'type'
=>
$choose
[
0
][
'name'
],
'value'
=>
$temp_spec
[
'name'
]]
],
...
...
@@ -556,6 +557,65 @@ class GoodsService
return
[
'choose'
=>
$choose
];
}
/**
* 商品规格简洁的数据处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-15
* @desc description
* @param [array] $data [规格数据]
*/
public
static
function
GoodsSpecificationsConcise
(
$data
)
{
$result
=
[];
if
(
!
empty
(
$data
))
{
foreach
(
$data
as
$v
)
{
$result
[]
=
array_column
(
$v
[
'value'
],
'name'
);
}
}
return
$result
;
}
/**
* 获取商品当前实际存在的规格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-16
* @desc description
* @param [int] $goods_id [商品id]
*/
public
static
function
GoodsSpecificationsActual
(
$goods_id
)
{
// 规格名称
$where
=
[
'goods_id'
=>
$goods_id
];
$title
=
Db
::
name
(
'GoodsSpecType'
)
->
where
(
$where
)
->
column
(
'name'
);
// 规格值
$value
=
Db
::
name
(
'GoodsSpecValue'
)
->
where
(
$where
)
->
field
(
'goods_spec_base_id,value'
)
->
select
();
if
(
!
empty
(
$value
))
{
$group
=
[];
foreach
(
$value
as
$v
)
{
$group
[
$v
[
'goods_spec_base_id'
]][]
=
$v
[
'value'
];
}
$value
=
[];
foreach
(
$group
as
$v
)
{
$value
[]
=
implode
(
','
,
$v
);
}
}
return
[
'title'
=>
$title
,
'value'
=>
$value
,
];
}
/**
* 商品访问统计加1
* @author Devil
...
...
@@ -903,7 +963,7 @@ class GoodsService
$images
=
[];
// 基础字段数据字段长度
$base_count
=
7
;
$base_count
=
6
;
// 规格值
foreach
(
$params
as
$k
=>
$v
)
...
...
@@ -1291,7 +1351,7 @@ class GoodsService
{
// 基础字段
$count
=
count
(
$data
[
'data'
][
0
]);
$temp_key
=
[
'price'
,
'
inventory'
,
'
weight'
,
'coding'
,
'barcode'
,
'original_price'
,
'extends'
];
$temp_key
=
[
'price'
,
'weight'
,
'coding'
,
'barcode'
,
'original_price'
,
'extends'
];
$key_count
=
count
(
$temp_key
);
// 等于key总数则只有一列基础规格
...
...
@@ -1305,6 +1365,10 @@ class GoodsService
{
$temp_data
[
$temp_key
[
$i
]]
=
$data
[
'data'
][
0
][
$i
];
}
// 获取仓库规格库存
$temp_data
[
'inventory'
]
=
WarehouseGoodsService
::
GoodsSpecInventory
(
$goods_id
);
// 规格基础添加
if
(
Db
::
name
(
'GoodsSpecBase'
)
->
insertGetId
(
$temp_data
)
<=
0
)
{
...
...
@@ -1336,6 +1400,9 @@ class GoodsService
$temp_data
[
$temp_key
[
$i
-
$base_start
]]
=
$v
[
$i
];
}
}
// 获取仓库规格库存
$temp_data
[
'inventory'
]
=
WarehouseGoodsService
::
GoodsSpecInventory
(
$goods_id
,
implode
(
''
,
array_column
(
$temp_value
,
'value'
)));
// 规格基础添加
$base_id
=
Db
::
name
(
'GoodsSpecBase'
)
->
insertGetId
(
$temp_data
);
...
...
application/service/SearchService.php
浏览文件 @
3861d3b8
...
...
@@ -123,11 +123,11 @@ class SearchService
{
$order_by
=
'g.'
.
$params
[
'order_by_field'
]
.
' '
.
$params
[
'order_by_type'
];
}
else
{
$order_by
=
'g.access_count desc, g.sales_count desc'
;
$order_by
=
'g.access_count desc, g.sales_count desc
, g.add_time desc
'
;
}
// 分页计算
$page
=
intval
(
input
(
'page'
,
1
)
);
$page
=
max
(
1
,
isset
(
$params
[
'page'
])
?
intval
(
$params
[
'page'
])
:
1
);
$n
=
20
;
$m
=
intval
((
$page
-
1
)
*
$n
);
$goods
=
GoodsService
::
CategoryGoodsList
([
'where'
=>
$where
,
'm'
=>
$m
,
'n'
=>
$n
,
'order_by'
=>
$order_by
]);
...
...
application/service/WarehouseGoodsService.php
浏览文件 @
3861d3b8
...
...
@@ -21,7 +21,7 @@ use app\service\UserService;
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-
07
* @date 2020-07-
11
* @desc description
*/
class
WarehouseGoodsService
...
...
@@ -43,6 +43,21 @@ class WarehouseGoodsService
$n
=
isset
(
$params
[
'n'
])
?
intval
(
$params
[
'n'
])
:
10
;
$order_by
=
'id desc'
;
$data
=
Db
::
name
(
'WarehouseGoods'
)
->
field
(
$field
)
->
where
(
$where
)
->
order
(
$order_by
)
->
limit
(
$m
,
$n
)
->
select
();
return
DataReturn
(
'处理成功'
,
0
,
self
::
DataHandle
(
$data
));
}
/**
* 数据处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-16
* @desc description
* @param [array] $data [需要处理的数据]
*/
public
static
function
DataHandle
(
$data
)
{
if
(
!
empty
(
$data
))
{
// 字段列表
...
...
@@ -107,7 +122,7 @@ class WarehouseGoodsService
}
}
}
return
DataReturn
(
'处理成功'
,
0
,
$data
)
;
return
$data
;
}
/**
...
...
@@ -129,7 +144,7 @@ class WarehouseGoodsService
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-
12-18
* @date 2018-
07-11
* @desc description
* @param [array] $params [输入参数]
*/
...
...
@@ -160,7 +175,7 @@ class WarehouseGoodsService
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-
07
* @date 2020-07-
11
* @desc description
* @param [array] $params [输入参数]
*/
...
...
@@ -198,5 +213,514 @@ class WarehouseGoodsService
}
return
DataReturn
(
'编辑失败'
,
-
100
);
}
/**
* 商品搜索
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-13
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
GoodsSearchList
(
$params
=
[])
{
// 请求参数
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'warehouse_id'
,
'error_msg'
=>
'仓库id有误'
,
],
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 返回数据
$result
=
[
'page_total'
=>
0
,
'page_size'
=>
20
,
'page'
=>
max
(
1
,
isset
(
$params
[
'page'
])
?
intval
(
$params
[
'page'
])
:
1
),
'total'
=>
0
,
'data'
=>
[],
];
// 条件
$where
=
[
[
'g.is_delete_time'
,
'='
,
0
],
[
'g.is_shelves'
,
'='
,
1
]
];
// 关键字
if
(
!
empty
(
$params
[
'keywords'
]))
{
$where
[]
=
[
'g.title'
,
'like'
,
'%'
.
$params
[
'keywords'
]
.
'%'
];
}
// 分类id
if
(
!
empty
(
$params
[
'category_id'
]))
{
$category_ids
=
GoodsService
::
GoodsCategoryItemsIds
([
$params
[
'category_id'
]],
1
);
$category_ids
[]
=
$params
[
'category_id'
];
$where
[]
=
[
'gci.category_id'
,
'in'
,
$category_ids
];
}
// 获取商品总数
$result
[
'total'
]
=
GoodsService
::
CategoryGoodsTotal
(
$where
);
// 获取商品列表
if
(
$result
[
'total'
]
>
0
)
{
// 基础参数
$field
=
'g.id,g.title,g.images'
;
$order_by
=
'g.id desc'
;
// 分页计算
$m
=
intval
((
$result
[
'page'
]
-
1
)
*
$result
[
'page_size'
]);
$goods
=
GoodsService
::
CategoryGoodsList
([
'where'
=>
$where
,
'm'
=>
$m
,
'n'
=>
$result
[
'page_size'
],
'field'
=>
$field
,
'order_by'
=>
$order_by
]);
$result
[
'data'
]
=
$goods
[
'data'
];
$result
[
'page_total'
]
=
ceil
(
$result
[
'total'
]
/
$result
[
'page_size'
]);
// 数据处理
if
(
!
empty
(
$result
[
'data'
])
&&
is_array
(
$result
[
'data'
]))
{
// 获取仓库商品
$warehouse_goods_ids
=
Db
::
name
(
'WarehouseGoods'
)
->
where
([
'goods_id'
=>
array_column
(
$result
[
'data'
],
'id'
)])
->
column
(
'goods_id'
);
if
(
!
empty
(
$warehouse_goods_ids
))
{
foreach
(
$result
[
'data'
]
as
&
$v
)
{
// 是否已添加
$v
[
'is_exist'
]
=
in_array
(
$v
[
'id'
],
$warehouse_goods_ids
)
?
1
:
0
;
}
}
}
}
return
DataReturn
(
'处理成功'
,
0
,
$result
);
}
/**
* 仓库商品添加
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-14
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
WarehouseGoodsAdd
(
$params
=
[])
{
// 请求参数
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'warehouse_id'
,
'error_msg'
=>
'仓库id有误'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'goods_id'
,
'error_msg'
=>
'商品id有误'
,
],
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 存在则校验状态并且启用
// 不存在添加
$where
=
[
'goods_id'
=>
intval
(
$params
[
'goods_id'
]),
'warehouse_id'
=>
intval
(
$params
[
'warehouse_id'
]),
];
$warehouse_goods
=
Db
::
name
(
'WarehouseGoods'
)
->
where
(
$where
)
->
find
();
if
(
empty
(
$warehouse_goods
))
{
$data
=
[
'warehouse_id'
=>
intval
(
$params
[
'warehouse_id'
]),
'goods_id'
=>
intval
(
$params
[
'goods_id'
]),
'is_enable'
=>
1
,
'add_time'
=>
time
(),
];
if
(
Db
::
name
(
'WarehouseGoods'
)
->
insertGetId
(
$data
)
<=
0
)
{
return
DataReturn
(
'添加失败'
,
-
100
);
}
}
return
DataReturn
(
'添加成功'
,
0
);
}
/**
* 仓库商品删除
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-14
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
WarehouseGoodsDel
(
$params
=
[])
{
// 请求参数
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'warehouse_id'
,
'error_msg'
=>
'仓库id有误'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'goods_id'
,
'error_msg'
=>
'商品id有误'
,
],
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 删除仓库商品和仓库商品规格数据
$where
=
[
'goods_id'
=>
intval
(
$params
[
'goods_id'
]),
'warehouse_id'
=>
intval
(
$params
[
'warehouse_id'
]),
];
if
(
Db
::
name
(
'WarehouseGoods'
)
->
where
(
$where
)
->
delete
()
!==
false
&&
Db
::
name
(
'WarehouseGoodsSpec'
)
->
where
(
$where
)
->
delete
()
!==
false
)
{
return
DataReturn
(
'删除成功'
,
0
);
}
return
DataReturn
(
'删除失败'
,
-
100
);
}
/**
* 仓库商品库存数据
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-15
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
WarehouseGoodsInventoryData
(
$params
=
[])
{
// 请求参数
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'id'
,
'error_msg'
=>
'数据id有误'
,
],
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 获取仓库商品
$where
=
[
'id'
=>
intval
(
$params
[
'id'
]),
];
$warehouse_goods
=
Db
::
name
(
'WarehouseGoods'
)
->
where
(
$where
)
->
find
();
if
(
empty
(
$warehouse_goods
))
{
return
DataReturn
(
'无相关商品数据'
,
-
1
);
}
// 获取商品规格
$res
=
GoodsService
::
GoodsSpecificationsActual
(
$warehouse_goods
[
'goods_id'
]);
$inventory_spec
=
[];
if
(
!
empty
(
$res
[
'value'
])
&&
is_array
(
$res
[
'value'
]))
{
// 获取当前配置的库存
foreach
(
$res
[
'value'
]
as
$v
)
{
$arr
=
explode
(
','
,
$v
);
$inventory_spec
[]
=
[
'name'
=>
implode
(
' / '
,
$arr
),
'spec'
=>
json_encode
(
self
::
GoodsSpecMuster
(
$v
,
$res
[
'title'
])),
'md5_key'
=>
md5
(
implode
(
''
,
$arr
)),
'inventory'
=>
0
,
];
}
}
else
{
$str
=
'default'
;
$inventory_spec
[]
=
[
'name'
=>
'默认规格'
,
'spec'
=>
$str
,
'md5_key'
=>
md5
(
$str
),
'inventory'
=>
0
,
];
}
// 获取库存
$keys
=
array_column
(
$inventory_spec
,
'md5_key'
);
$where
=
[
'md5_key'
=>
$keys
,
'warehouse_goods_id'
=>
$warehouse_goods
[
'id'
],
'warehouse_id'
=>
$warehouse_goods
[
'warehouse_id'
],
'goods_id'
=>
$warehouse_goods
[
'goods_id'
],
];
$inventory_data
=
Db
::
name
(
'WarehouseGoodsSpec'
)
->
where
(
$where
)
->
column
(
'inventory'
,
'md5_key'
);
if
(
!
empty
(
$inventory_data
))
{
foreach
(
$inventory_spec
as
&
$v
)
{
if
(
array_key_exists
(
$v
[
'md5_key'
],
$inventory_data
))
{
$v
[
'inventory'
]
=
$inventory_data
[
$v
[
'md5_key'
]];
}
}
}
// 返回数据
$result
=
[
'data'
=>
$warehouse_goods
,
'spec'
=>
$inventory_spec
,
];
return
DataReturn
(
'success'
,
0
,
$result
);
}
/**
* 规格值组合
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-16
* @desc description
* @param [string] $spec_str [规格字打错,英文逗号分割]
* @param [array] $spec_title [规格类型名称]
*/
public
static
function
GoodsSpecMuster
(
$spec_str
,
$spec_title
)
{
$result
=
[];
$arr
=
explode
(
','
,
$spec_str
);
if
(
count
(
$arr
)
==
count
(
$spec_title
))
{
foreach
(
$arr
as
$k
=>
$v
)
{
$result
[]
=
[
'type'
=>
$spec_title
[
$k
],
'value'
=>
$v
,
];
}
}
return
$result
;
}
/**
* 仓库商品库存保存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-15
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
WarehouseGoodsInventorySave
(
$params
=
[])
{
// 请求参数
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'id'
,
'error_msg'
=>
'数据id有误'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'specifications_inventory'
,
'error_msg'
=>
'库存数据有误'
,
],
[
'checked_type'
=>
'is_array'
,
'key_name'
=>
'specifications_inventory'
,
'error_msg'
=>
'库存数据有误'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'specifications_md5_key'
,
'error_msg'
=>
'库存唯一值有误'
,
],
[
'checked_type'
=>
'is_array'
,
'key_name'
=>
'specifications_md5_key'
,
'error_msg'
=>
'库存唯一值有误'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'specifications_spec'
,
'error_msg'
=>
'库存规格有误'
,
],
[
'checked_type'
=>
'is_array'
,
'key_name'
=>
'specifications_spec'
,
'error_msg'
=>
'库存规格有误'
,
],
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
!==
true
)
{
return
DataReturn
(
$ret
,
-
1
);
}
// 获取仓库商品
$where
=
[
'id'
=>
intval
(
$params
[
'id'
]),
];
$warehouse_goods
=
Db
::
name
(
'WarehouseGoods'
)
->
where
(
$where
)
->
find
();
if
(
empty
(
$warehouse_goods
))
{
return
DataReturn
(
'无相关商品数据'
,
-
1
);
}
// 数据组装
$inventory
=
[];
$spec_value
=
[];
$md5_key
=
[];
$data
=
[];
foreach
(
$params
[
'specifications_spec'
]
as
$k
=>
$v
)
{
// 规格值,md5key,库存 必须存在
if
(
!
empty
(
$v
)
&&
array_key_exists
(
$k
,
$params
[
'specifications_md5_key'
])
&&
array_key_exists
(
$k
,
$params
[
'specifications_inventory'
]))
{
$inventory
=
intval
(
$params
[
'specifications_inventory'
][
$k
]);
if
(
$inventory
>
0
)
{
$data
[]
=
[
'warehouse_goods_id'
=>
$warehouse_goods
[
'id'
],
'warehouse_id'
=>
$warehouse_goods
[
'warehouse_id'
],
'goods_id'
=>
$warehouse_goods
[
'goods_id'
],
'md5_key'
=>
$params
[
'specifications_md5_key'
][
$k
],
'spec'
=>
htmlspecialchars_decode
(
$v
),
'inventory'
=>
$inventory
,
'add_time'
=>
time
(),
];
}
}
}
// 库存总数
$inventory_total
=
array_sum
(
array_column
(
$data
,
'inventory'
));
// 启动事务
Db
::
startTrans
();
// 获取原始数据
$where
=
[
'warehouse_goods_id'
=>
$warehouse_goods
[
'id'
],
'warehouse_id'
=>
$warehouse_goods
[
'warehouse_id'
],
'goods_id'
=>
$warehouse_goods
[
'goods_id'
],
];
$data_old
=
Db
::
name
(
'WarehouseGoodsSpec'
)
->
where
(
$where
)
->
select
();
// 删除原有数据
Db
::
name
(
'WarehouseGoodsSpec'
)
->
where
(
$where
)
->
delete
();
// 仓库商品更新
Db
::
name
(
'WarehouseGoods'
)
->
where
([
'id'
=>
$warehouse_goods
[
'id'
]])
->
update
([
'inventory'
=>
$inventory_total
,
'upd_time'
=>
time
(),
]);
// 添加数据
if
(
!
empty
(
$data
))
{
if
(
Db
::
name
(
'WarehouseGoodsSpec'
)
->
insertAll
(
$data
)
<
count
(
$data
))
{
Db
::
rollback
();
return
DataReturn
(
'规格库存添加失败'
,
-
100
);
}
}
// 原始数据扣除库存
if
(
!
empty
(
$data_old
))
{
foreach
(
$data_old
as
$v
)
{
// 商品规格
$spec
=
(
$v
[
'spec'
]
==
'default'
)
?
''
:
json_decode
(
$v
[
'spec'
],
true
);
$base
=
GoodsService
::
GoodsSpecDetail
([
'id'
=>
$v
[
'goods_id'
],
'spec'
=>
$spec
]);
if
(
$base
[
'code'
]
==
0
)
{
// 扣除规格操作
$status
=
Db
::
name
(
'GoodsSpecBase'
)
->
where
([
'id'
=>
$base
[
'data'
][
'spec_base'
][
'id'
],
'goods_id'
=>
$v
[
'goods_id'
]])
->
setDec
(
'inventory'
,
$v
[
'inventory'
]);
if
(
$status
===
false
)
{
Db
::
rollback
();
return
DataReturn
(
'规格库存扣减失败'
,
-
10
);
}
if
(
$status
>
0
)
{
// 如果规格更新成功则更新商品库存
if
(
Db
::
name
(
'Goods'
)
->
where
([
'id'
=>
$v
[
'goods_id'
]])
->
setDec
(
'inventory'
,
$v
[
'inventory'
])
===
false
)
{
Db
::
rollback
();
return
DataReturn
(
'商品库存扣减失败'
,
-
11
);
}
}
}
}
}
// 增加库存
if
(
!
empty
(
$data
))
{
// 增加商品库存
if
(
!
Db
::
name
(
'Goods'
)
->
where
([
'id'
=>
$warehouse_goods
[
'goods_id'
]])
->
setInc
(
'inventory'
,
$inventory_total
))
{
Db
::
rollback
();
return
DataReturn
(
'商品库存增加失败'
,
-
20
);
}
// 增加商品规格库存
foreach
(
$data
as
$v
)
{
$spec
=
(
$v
[
'spec'
]
==
'default'
)
?
''
:
json_decode
(
$v
[
'spec'
],
true
);
$base
=
GoodsService
::
GoodsSpecDetail
([
'id'
=>
$v
[
'goods_id'
],
'spec'
=>
$spec
]);
if
(
$base
[
'code'
]
==
0
)
{
if
(
!
Db
::
name
(
'GoodsSpecBase'
)
->
where
([
'id'
=>
$base
[
'data'
][
'spec_base'
][
'id'
],
'goods_id'
=>
$v
[
'goods_id'
]])
->
setInc
(
'inventory'
,
$v
[
'inventory'
]))
{
Db
::
rollback
();
return
DataReturn
(
'规格库存增加失败'
,
-
21
);
}
}
}
}
// 提交事务
Db
::
commit
();
return
DataReturn
(
'更新成功'
,
0
);
}
/**
* 根据商品id和规格获取库存
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-07-16
* @desc description
* @param [int] $goods_id [商品id]
* @param [string] $spec_str [规格值(无则 default)]
*/
public
static
function
GoodsSpecInventory
(
$goods_id
,
$spec_str
=
'default'
)
{
// 无规格则使用 default 默认
if
(
empty
(
$spec_str
))
{
$spec_str
=
'default'
;
}
// 获取商品规格库存
$where
=
[
'goods_id'
=>
$goods_id
,
'md5_key'
=>
md5
(
$spec_str
),
];
return
(
int
)
Db
::
name
(
'WarehouseGoodsSpec'
)
->
where
(
$where
)
->
sum
(
'inventory'
);
}
}
?>
\ No newline at end of file
application/tags.php
浏览文件 @
3861d3b8
...
...
@@ -101,6 +101,7 @@ return array (
'plugins_service_navigation_header_handle'
=>
array
(
0
=>
'app\\plugins\\limitedtimediscount\\Hook'
,
1
=>
'app\\plugins\\speedplaceorder\\Hook'
,
),
'plugins_service_goods_handle_end'
=>
array
(
...
...
config/shopxo.sql
浏览文件 @
3861d3b8
此差异已折叠。
点击以展开。
public/static/admin/default/css/warehousegoods.css
0 → 100644
浏览文件 @
3861d3b8
/**
* 商品添加-搜索列表
*/
.goods-add-container
{
height
:
100%
;
}
.forth-selection-container
select
.forth-selection-form-category
{
display
:
-webkit-inline-box
;
}
.forth-selection-container
.forth-selection-form-category
,
.forth-selection-container
.chosen-container
,
.forth-selection-container
.forth-selection-form-keywords
{
width
:
calc
(
33%
-
32px
)
!important
;
}
.forth-selection-container
.chosen-container
,
.forth-selection-container
.forth-selection-form-keywords
{
display
:
-webkit-inline-box
!important
;
}
.forth-selection-container
.chosen-single
{
width
:
100%
;
}
.forth-selection-container
.search-submit
{
width
:
87px
;
}
.goods-list-container
{
height
:
calc
(
100%
-
92px
);
border
:
1px
solid
#eee
;
}
.goods-list-container
.am-gallery-bordered
.am-gallery-title
{
margin-top
:
5px
;
}
.goods-list-container
ul
li
{
position
:
relative
;
cursor
:
pointer
;
}
.goods-list-container
ul
li
:hover
.am-gallery-item
{
-webkit-box-shadow
:
0
0
6px
#3cb4f1
;
box-shadow
:
0
0
6px
#3cb4f1
;
}
.goods-list-container
.icon-submit-container
{
position
:
absolute
;
right
:
15px
;
bottom
:
47px
;
}
.goods-list-container
.icon-submit-container
.am-icon-btn
{
width
:
36px
;
height
:
36px
;
line-height
:
36px
;
font-size
:
20px
;
-webkit-box-shadow
:
0
0
3px
rgba
(
0
,
0
,
0
,
0.5
);
box-shadow
:
0
0
3px
rgba
(
0
,
0
,
0
,
0.5
);
}
.goods-list-container
.am-icon-btn.am-success
:hover
{
background
:
#4CAF50
;
}
.goods-list-container
.am-icon-btn.am-danger
:hover
{
background
:
#F44336
;
}
.goods-page-container
{
height
:
40px
;
}
public/static/admin/default/css/warehousegoods.inventoryinfo.css
0 → 100644
浏览文件 @
3861d3b8
.form-inventory-container
{
margin-bottom
:
80px
;
}
.form-inventory-submit
{
position
:
fixed
;
left
:
0
;
bottom
:
0
;
width
:
100%
;
background
:
#fff
;
height
:
70px
;
padding
:
20px
10px
;
border-top
:
1px
solid
#eee
;
}
\ No newline at end of file
public/static/admin/default/js/goods.js
浏览文件 @
3861d3b8
...
...
@@ -429,7 +429,6 @@ $(function()
// 获取基础值
var
price
=
$spec_popup_all_operation
.
find
(
'
.am-popup-bd input.popup_all_price
'
).
val
()
||
''
;
var
number
=
$spec_popup_all_operation
.
find
(
'
.am-popup-bd input.popup_all_number
'
).
val
()
||
''
;
var
weight
=
$spec_popup_all_operation
.
find
(
'
.am-popup-bd input.popup_all_weight
'
).
val
()
||
''
;
var
coding
=
$spec_popup_all_operation
.
find
(
'
.am-popup-bd input.popup_all_coding
'
).
val
()
||
''
;
var
barcode
=
$spec_popup_all_operation
.
find
(
'
.am-popup-bd input.popup_all_barcode
'
).
val
()
||
''
;
...
...
@@ -451,11 +450,10 @@ $(function()
if
(
count
>=
data_length
)
{
$
(
this
).
find
(
'
td
'
).
eq
(
index
).
find
(
'
input
'
).
val
(
price
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
1
).
find
(
'
input
'
).
val
(
number
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
2
).
find
(
'
input
'
).
val
(
weight
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
3
).
find
(
'
input
'
).
val
(
coding
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
4
).
find
(
'
input
'
).
val
(
barcode
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
5
).
find
(
'
input
'
).
val
(
original_price
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
1
).
find
(
'
input
'
).
val
(
weight
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
2
).
find
(
'
input
'
).
val
(
coding
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
3
).
find
(
'
input
'
).
val
(
barcode
);
$
(
this
).
find
(
'
td
'
).
eq
(
index
+
4
).
find
(
'
input
'
).
val
(
original_price
);
}
});
$spec_popup_all_operation
.
modal
(
'
close
'
);
...
...
@@ -672,7 +670,6 @@ $(function()
});
});
// 虚拟商品编辑器初始化
if
(
$
(
'
#goods-fictitious-container
'
).
length
>
0
)
{
...
...
public/static/admin/default/js/warehousegoods.js
0 → 100644
浏览文件 @
3861d3b8
$
(
function
()
{
// popup 容器
var
$popup
=
$
(
'
#warehouse-goods-popup
'
);
// 分页
$
(
'
.goods-page-container
'
).
html
(
PageLibrary
());
// 添加商品窗口
$
(
document
).
on
(
'
click
'
,
'
.add-goods-submit
'
,
function
()
{
$popup
.
modal
(
'
open
'
).
on
(
'
closed.modal.amui
'
,
function
()
{
// 关闭刷新页面
window
.
location
.
reload
();
});
});
// 搜索商品
$
(
document
).
on
(
'
click
'
,
'
.forth-selection-container .search-submit, .pagelibrary li a
'
,
function
()
{
// 分页处理
var
is_active
=
$
(
this
).
data
(
'
is-active
'
)
||
0
;
if
(
is_active
==
1
)
{
return
false
;
}
var
page
=
$
(
this
).
data
(
'
page
'
)
||
1
;
// 请求参数
var
url
=
$
(
'
.forth-selection-container
'
).
data
(
'
search-url
'
);
var
warehouse_id
=
$
(
'
.forth-selection-form-warehouse
'
).
val
();
var
category_id
=
$
(
'
.forth-selection-form-category
'
).
val
();
var
keywords
=
$
(
'
.forth-selection-form-keywords
'
).
val
();
if
(
warehouse_id
<=
0
)
{
Prompt
(
'
请选择仓库
'
);
return
false
;
}
var
$this
=
$
(
this
);
$this
.
button
(
'
loading
'
);
$
(
'
.goods-list-container
'
).
html
(
'
<div class="table-no"><i class="am-icon-spinner am-icon-pulse"></i>
'
+
(
$
(
'
.goods-list-container
'
).
data
(
'
loading-msg
'
))
+
'
</div>
'
);
$
.
ajax
({
url
:
url
,
type
:
'
post
'
,
data
:
{
"
page
"
:
page
,
"
warehouse_id
"
:
warehouse_id
,
"
category_id
"
:
category_id
,
"
keywords
"
:
keywords
},
dataType
:
'
json
'
,
success
:
function
(
res
)
{
$this
.
button
(
'
reset
'
);
if
(
res
.
code
==
0
)
{
$
(
'
.goods-list-container
'
).
attr
(
'
data-is-init
'
,
0
);
$
(
'
.goods-list-container
'
).
html
(
res
.
data
.
data
);
$
(
'
.goods-page-container
'
).
html
(
PageLibrary
(
res
.
data
.
total
,
res
.
data
.
page_size
,
res
.
data
.
page
,
4
));
}
else
{
Prompt
(
res
.
msg
);
$
(
'
.goods-list-container
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i>
'
+
res
.
msg
+
'
</div>
'
);
}
},
error
:
function
(
res
)
{
$this
.
button
(
'
reset
'
);
Prompt
(
'
请求失败
'
);
$
(
'
.goods-list-container
'
).
html
(
'
<div class="table-no"><i class="am-icon-warning"></i> 请求失败</div>
'
);
}
});
});
// 商品添加/删除
$
(
document
).
on
(
'
click
'
,
'
.goods-list-container .goods-add-submit, .goods-list-container .goods-del-submit
'
,
function
()
{
var
$this
=
$
(
this
);
var
type
=
$this
.
data
(
'
type
'
);
var
url
=
$
(
'
.goods-list-container
'
).
data
(
type
+
'
-url
'
);
var
icon_html
=
$this
.
parents
(
'
li
'
).
data
((
type
==
'
add
'
?
'
del
'
:
'
add
'
)
+
'
-html
'
);
var
warehouse_id
=
parseInt
(
$
(
'
.forth-selection-form-warehouse
'
).
val
())
||
0
;
var
goods_id
=
$this
.
parents
(
'
li
'
).
data
(
'
gid
'
);
if
(
warehouse_id
<=
0
)
{
Prompt
(
'
请选择仓库
'
);
return
false
;
}
$
.
ajax
({
url
:
url
,
type
:
'
post
'
,
data
:
{
"
warehouse_id
"
:
warehouse_id
,
"
goods_id
"
:
goods_id
},
dataType
:
'
json
'
,
success
:
function
(
res
)
{
if
(
res
.
code
==
0
)
{
$this
.
parent
().
html
(
icon_html
);
Prompt
(
res
.
msg
,
'
success
'
);
}
else
{
Prompt
(
res
.
msg
);
}
},
error
:
function
(
res
)
{
Prompt
(
'
请求失败
'
);
}
});
});
});
\ No newline at end of file
public/static/common/css/common.css
浏览文件 @
3861d3b8
...
...
@@ -596,4 +596,11 @@ button.colorpicker-submit img {
}
.region-linkage
.chosen-select
.chosen-single
{
width
:
100%
;
}
/**
* 文字颜色
*/
.am-text-grey
{
color
:
#c3c3c3
;
}
\ No newline at end of file
public/static/common/js/common.js
浏览文件 @
3861d3b8
...
...
@@ -784,10 +784,9 @@ function CheckVideo()
* @desc description
* @param {[string]} url [加载url]
* @param {[string]} title [标题]
* @param {[string]} tag [指定id标记]
* @param {[string]} class_tag [指定class]
*/
function
ModalLoad
(
url
,
title
,
tag
,
class_tag
)
function
ModalLoad
(
url
,
title
,
class_tag
)
{
class_tag
=
class_tag
||
''
;
AMUI
.
dialog
.
popup
({
...
...
@@ -1283,7 +1282,6 @@ function MobileBrowserEnvironment()
*/
function
PageLibrary
(
total
,
number
,
page
,
sub_number
)
{
if
((
total
||
null
)
==
null
)
return
''
;
if
((
page
||
null
)
==
null
)
page
=
1
;
if
((
number
||
null
)
==
null
)
number
=
15
;
if
((
sub_number
||
null
)
==
null
)
sub_number
=
2
;
...
...
@@ -1295,41 +1293,39 @@ function PageLibrary(total, number, page, sub_number)
var
html
=
'
<ul class="am-pagination am-pagination-centered pagelibrary"><li
'
;
html
+=
(
page
>
1
)
?
''
:
'
class="am-disabled"
'
;
page_x
=
page
-
1
;
html
+=
'
><a data-page="
'
+
page_x
+
'
" class="am-radius">«</a></li>
'
;
html
+=
'
><a
href="javascript:;"
data-page="
'
+
page_x
+
'
" class="am-radius">«</a></li>
'
;
var
html_before
=
''
;
var
html_after
=
''
;
var
html_page
=
'
<li class="am-active"><a class="am-radius">
'
+
page
+
'
</a></li>
'
;
var
html_page
=
'
<li class="am-active"><a
href="javascript:;" data-is-active="1"
class="am-radius">
'
+
page
+
'
</a></li>
'
;
if
(
sub_number
>
0
)
{
/
* 前按钮 */
/
/ 前按钮
if
(
page
>
1
)
{
total
=
(
page
-
sub_number
<
1
)
?
1
:
page
-
sub_number
;
for
(
var
i
=
page
-
1
;
i
>=
total
;
i
--
)
{
html_before
=
'
<li><a data-page="
'
+
i
+
'
" class="am-radius">
'
+
i
+
'
</a></li>
'
+
html_before
;
html_before
=
'
<li><a
href="javascript:;"
data-page="
'
+
i
+
'
" class="am-radius">
'
+
i
+
'
</a></li>
'
+
html_before
;
}
}
/
* 后按钮 */
/
/ 后按钮
if
(
page_total
>
page
)
{
total
=
(
page
+
sub_number
>
page_total
)
?
page_total
:
page
+
sub_number
;
for
(
var
i
=
page
+
1
;
i
<=
total
;
i
++
)
{
html_after
+=
'
<li><a data-page="
'
+
i
+
'
" class="am-radius">
'
+
i
+
'
</a></li>
'
;
html_after
+=
'
<li><a href="javascript:;" data-page="
'
+
i
+
'
" class="am-radius">
'
+
i
+
'
</a></li>
'
;
}
}
}
html
+=
html_before
+
html_page
+
html_after
;
html
+=
'
<li
'
;
html
+=
(
page
>
0
&&
page
<
page_total
)
?
''
:
'
class="am-disabled"
'
;
page_y
=
page
+
1
;
html
+=
'
><a data-page="
'
+
page_y
+
'
" class="am-radius">»</a></li></ul>
'
;
html
+=
'
><a
href="javascript:;"
data-page="
'
+
page_y
+
'
" class="am-radius">»</a></li></ul>
'
;
return
html
;
}
...
...
@@ -2434,7 +2430,13 @@ $(function()
Prompt
(
'
url未配置
'
);
return
false
;
}
ModalLoad
(
url
);
// 基础参数
var
title
=
$
(
this
).
data
(
'
title
'
)
||
''
;
var
class_tag
=
$
(
this
).
data
(
'
class
'
)
||
''
;
// 调用弹窗方法
ModalLoad
(
url
,
title
,
class_tag
);
});
// 地图弹窗
...
...
public/static/index/default/js/buy.js
浏览文件 @
3861d3b8
...
...
@@ -73,7 +73,7 @@ $(function()
// 弹出地址选择
$
(
'
.address-submit-save
'
).
on
(
'
click
'
,
function
(
e
)
{
ModalLoad
(
$
(
this
).
data
(
'
url
'
),
$
(
this
).
data
(
'
popup-title
'
),
'
popup-modal-address
'
,
'
common-address-modal
'
);
ModalLoad
(
$
(
this
).
data
(
'
url
'
),
$
(
this
).
data
(
'
popup-title
'
),
'
common-address-modal
'
);
// 阻止事件冒泡
e
.
stopPropagation
();
...
...
public/static/index/default/js/common.js
浏览文件 @
3861d3b8
...
...
@@ -104,7 +104,7 @@ $(function()
// 是否登录
if
(
__user_id__
==
0
)
{
ModalLoad
(
__modal_login_url__
,
'
登录
'
,
'
common-
popup-modal-login
'
,
'
common-
login-modal
'
);
ModalLoad
(
__modal_login_url__
,
'
登录
'
,
'
common-login-modal
'
);
return
false
;
}
});
...
...
public/static/index/default/js/useraddress.js
浏览文件 @
3861d3b8
...
...
@@ -3,7 +3,7 @@ $(function()
// 弹出地址选择
$
(
'
.address-submit-save
'
).
on
(
'
click
'
,
function
(
e
)
{
ModalLoad
(
$
(
this
).
data
(
'
url
'
),
$
(
this
).
data
(
'
popup-title
'
),
'
popup-modal-address
'
,
'
common-address-modal
'
);
ModalLoad
(
$
(
this
).
data
(
'
url
'
),
$
(
this
).
data
(
'
popup-title
'
),
'
common-address-modal
'
);
// 阻止事件冒泡
e
.
stopPropagation
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录