mirror of
https://gitee.com/hzchunfen/erp.git
synced 2025-11-30 22:20:45 +00:00
!255 商品列表统计
Merge pull request !255 from 杨建炊/fix-release-1.0.0/yjc-migrate
This commit is contained in:
commit
b6855614d3
@ -50,6 +50,89 @@ class GoodsSkusController extends Controller
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$ids = [];
|
||||
$externals = $this->buildExternals($ids);
|
||||
$builder = GoodsSku::query();
|
||||
$this->preparQueryGoodsSkus($request, $builder);
|
||||
$day = DateTimeUtils::getToday();
|
||||
|
||||
$sortField = $request->input('sort_field', 'id');//stock sale_stock order_goods_num
|
||||
$sortValue = $request->input('sort_value', 'desc');
|
||||
$goodsSkusBuilder = (clone $builder)->filter()->with(['goods' => function ($query) {
|
||||
$query->with(['type' => function ($query) {
|
||||
$query->with("parentType:id,name")->select(["id", "name", "parent_id"]);
|
||||
}]);
|
||||
}])
|
||||
->with(['daily' => function ($query) use ($day) {
|
||||
$query->where('day', $day);
|
||||
}])
|
||||
->where('is_combination', 0);
|
||||
$sum = null;
|
||||
if ($request->get('goods_title')) {
|
||||
$fields = implode(',', [
|
||||
'SUM(stock) as stock',
|
||||
"GROUP_CONCAT(id) as ids"
|
||||
]);
|
||||
$sum = (clone $goodsSkusBuilder)->select(DB::raw($fields))->first();
|
||||
$sum['goods_number'] = 0;
|
||||
if (!empty($sum['ids'])) {
|
||||
foreach (explode(",", $sum['ids']) as $item) {
|
||||
$sum['goods_number'] += $ids[$item] ?? 0;
|
||||
}
|
||||
}
|
||||
$sum['real_stock'] = ($sum['stock'] ?? 0) + $sum['goods_number'];
|
||||
}
|
||||
if ($sortField == "order_goods_num") {
|
||||
$finalIds = [];
|
||||
asort($ids);
|
||||
foreach ($ids as $id => $number) {
|
||||
$finalIds[] = $id;
|
||||
}
|
||||
if (empty($finalIds)) {
|
||||
$goodsSkusBuilder->orderBy("id", $sortValue);
|
||||
} else {
|
||||
$idField = implode(',', $finalIds);
|
||||
$goodsSkusBuilder->orderByRaw("FIELD(id,{$idField}) {$sortValue}");
|
||||
}
|
||||
|
||||
} else {
|
||||
$goodsSkusBuilder->orderBy($sortField, $sortValue);
|
||||
}
|
||||
|
||||
$goodsSkus = $goodsSkusBuilder->paginate($request->get('per_page'));
|
||||
$rolesName = $request->user()->getRoleNames()->toArray();
|
||||
foreach ($goodsSkus as &$sku) {
|
||||
$lastInventoryTime = !empty($sku['daily']['inventory_time']) ? $sku['daily']['inventory_time'] : date('Y-m-d 07:00:00');
|
||||
if (isset($externals[$sku['id']])) {
|
||||
$sku['order_detail'] = $externals[$sku['id']];
|
||||
$sku['order_goods_num'] = $ids[$sku['id']] ?? 0;
|
||||
} else {
|
||||
$sku['order_detail'] = [];
|
||||
$sku['order_goods_num'] = 0;
|
||||
}
|
||||
$sku['order_goods_num'] -= $sku['daily']['reissue_num'] ?? 0;
|
||||
$sku['inventory_time'] = $lastInventoryTime;
|
||||
if ('销售' === $rolesName[0]) {
|
||||
$sku['cost'] = 0;
|
||||
}
|
||||
|
||||
if (!empty($sku['yesterday_num'])) {
|
||||
$sku['sale_ratio'] = round($sku['stock'] / $sku['yesterday_num'], 2) * 100;
|
||||
} else {
|
||||
$sku['sale_ratio'] = 0;
|
||||
}
|
||||
$sku['yesterday_num'] = bcadd($sku['stock'], $sku['order_goods_num']);
|
||||
|
||||
}
|
||||
$data = [
|
||||
"manage" => ["is_admin" => in_array($rolesName[0], ["运营", "超级管理员", "管理员", "系统管理员", "店铺运营"]) ? 1 : 0],
|
||||
"sum" => $sum
|
||||
];
|
||||
return GoodsSkuResource::collection($goodsSkus)->additional($data);
|
||||
}
|
||||
|
||||
private function buildExternals($ids)
|
||||
{
|
||||
$fields = implode(',', [
|
||||
'shop_id',
|
||||
@ -75,7 +158,7 @@ class GoodsSkusController extends Controller
|
||||
->orderByDesc('number')
|
||||
->get()
|
||||
->toArray();
|
||||
$ids = $externals = [];
|
||||
$externals = [];
|
||||
foreach ($businessOrderItems as $businessOrderItem) {
|
||||
if (is_null($businessOrderItem['goods_sku'])) {
|
||||
continue;
|
||||
@ -85,6 +168,7 @@ class GoodsSkusController extends Controller
|
||||
foreach ($businessOrderItem['goods_sku']['combination_goods'] ?? [] as $combinationGoods) {
|
||||
$ids[$combinationGoods['item_id']] = ($ids[$combinationGoods['item_id']] ?? 0)
|
||||
+ ((int)$businessOrderItem['number']) * $combinationGoods['item_num'];
|
||||
$businessOrderItem['goods_number'] = ((int)$businessOrderItem['number']) * $combinationGoods['item_num'];
|
||||
$externals[$combinationGoods['item_id']][] = $businessOrderItem;
|
||||
}
|
||||
}
|
||||
@ -96,68 +180,10 @@ class GoodsSkusController extends Controller
|
||||
|
||||
$externals[$id][] = $businessOrderItem;
|
||||
}
|
||||
|
||||
$builder = GoodsSku::query();
|
||||
$this->preparQueryGoodsSkus($request, $builder);
|
||||
$day = DateTimeUtils::getToday();
|
||||
|
||||
$sortField = $request->input('sort_field', 'id');//stock sale_stock order_goods_num
|
||||
$sortValue = $request->input('sort_value', 'desc');
|
||||
$goodsSkusBuilder = (clone $builder)->filter()->with(['goods' => function ($query) {
|
||||
$query->with(['type' => function ($query) {
|
||||
$query->with("parentType:id,name")->select(["id", "name", "parent_id"]);
|
||||
}]);
|
||||
}])
|
||||
->with(['daily' => function ($query) use ($day) {
|
||||
$query->where('day', $day);
|
||||
}])
|
||||
->where('is_combination', 0);
|
||||
if ($sortField == "order_goods_num") {
|
||||
$finalIds = [];
|
||||
asort($ids);
|
||||
foreach ($ids as $id => $number) {
|
||||
$finalIds[] = $id;
|
||||
}
|
||||
if (empty($finalIds)) {
|
||||
$goodsSkusBuilder->orderBy("id", $sortValue);
|
||||
} else {
|
||||
$idField = implode(',', $finalIds);
|
||||
$goodsSkusBuilder->orderByRaw("FIELD(id,{$idField}) {$sortValue}");
|
||||
}
|
||||
|
||||
} else {
|
||||
$goodsSkusBuilder->orderBy($sortField, $sortValue);
|
||||
}
|
||||
|
||||
$goodsSkus = $goodsSkusBuilder->paginate($request->get('per_page'));
|
||||
$rolesName = $request->user()->getRoleNames()->toArray();
|
||||
foreach ($goodsSkus as &$sku) {
|
||||
$lastInventoryTime = !empty($sku['daily']['inventory_time']) ? $sku['daily']['inventory_time'] : date('Y-m-d 07:00:00');
|
||||
if (isset($externals[$sku['id']])) {
|
||||
$sku['order_detail'] = $externals[$sku['id']];
|
||||
$sku['order_goods_num'] = $ids[$sku['id']];
|
||||
} else {
|
||||
$sku['order_detail'] = [];
|
||||
$sku['order_goods_num'] = 0;
|
||||
}
|
||||
$sku['order_goods_num'] -= $sku['daily']['reissue_num'] ?? 0;
|
||||
$sku['inventory_time'] = $lastInventoryTime;
|
||||
if ('销售' === $rolesName[0]) {
|
||||
$sku['cost'] = 0;
|
||||
}
|
||||
|
||||
if (!empty($sku['yesterday_num'])) {
|
||||
$sku['sale_ratio'] = round($sku['stock'] / $sku['yesterday_num'], 2) * 100;
|
||||
} else {
|
||||
$sku['sale_ratio'] = 0;
|
||||
}
|
||||
$sku['yesterday_num'] = bcadd($sku['stock'], $sku['order_goods_num']);
|
||||
|
||||
}
|
||||
$data = ["manage" => ["is_admin" => in_array($rolesName[0], ["运营", "超级管理员", "管理员", "系统管理员", "店铺运营"]) ? 1 : 0]];
|
||||
return GoodsSkuResource::collection($goodsSkus)->additional($data);
|
||||
return $externals;
|
||||
}
|
||||
|
||||
|
||||
private function preparQueryGoodsSkus(Request $request, &$builder)
|
||||
{
|
||||
if ($request->get('keyword_type') && $request->get('keyword_value')) {
|
||||
|
||||
@ -77,7 +77,7 @@ class PurchaseImport implements ToArray, SkipsEmptyRows
|
||||
if (!empty($row[7])) {
|
||||
$purchaseRecords->arrived_time = DateTimeUtils::excelUploadDateToString($row[7], $today,"Y-m-d H:i:s");
|
||||
}else{
|
||||
$purchaseRecords->arrived_time = $today;
|
||||
$purchaseRecords->arrived_time = Carbon::now()->toDateTimeString();
|
||||
}
|
||||
$purchaseRecords->buyer_user_id = $buyerUserIdKeyByNameMap[$row[4]] ?? 0;
|
||||
$purchaseRecords->buyer_name = $row[4] ?? '';
|
||||
|
||||
@ -69,7 +69,7 @@ class BusinessOrder extends Model
|
||||
|
||||
public function getShippingStatusAttribute($value)
|
||||
{
|
||||
$map = ['未发货', '已发货', '部分发货', '' => ''];
|
||||
$map = ['未发货', '已发货', '部分发货',"已收货", '' => ''];
|
||||
|
||||
return $map[$value];
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-a256b434]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-a256b434]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.bgBox[data-v-a256b434]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-a256b434]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-a256b434]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-3852f03c]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-3852f03c]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.bgBox[data-v-3852f03c]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-3852f03c]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-3852f03c]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||
@ -1 +1 @@
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-03f5ca86]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-03f5ca86]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-03f5ca86]{margin-bottom:15px}.bgBox[data-v-03f5ca86]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 1px 0}.bgBox .close[data-v-03f5ca86]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-03f5ca86]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-475fb543]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-475fb543]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-475fb543]{margin-bottom:15px}.bgBox[data-v-475fb543]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 1px 0}.bgBox .close[data-v-475fb543]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-475fb543]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||
1
public/dist/css/298.d943cf60.css
vendored
Normal file
1
public/dist/css/298.d943cf60.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
.skuBox[data-v-4de310da]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-4de310da]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.skuBox[data-v-3dbf163e]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-3dbf163e]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.table[data-v-97b6b362]{margin-top:20px;position:relative}.btn[data-v-97b6b362]{float:right}.flex[data-v-97b6b362]{display:flex;align-items:center}.goodBox .Img[data-v-97b6b362]{width:50px;height:50px;margin-right:12px;border-radius:4px}.goodBox .tit[data-v-97b6b362]{color:#000;font-size:13px}.confirmbtn[data-v-97b6b362]{width:114px;height:44px;border-radius:3px;margin-top:21px;margin-bottom:8px}.import-right[data-v-97b6b362]{margin-top:30px}.import-right a[data-v-97b6b362]{color:#409eff}[data-v-97b6b362] .btn11{padding:0;width:14px;height:14px}[data-v-97b6b362] .btn11 img{width:100%;height:100%}.page[data-v-97b6b362]{margin-top:20px}.searchBox[data-v-97b6b362]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-97b6b362]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.titBox[data-v-97b6b362]{display:flex;align-items:center}.red[data-v-97b6b362]{color:red}
|
||||
1
public/dist/css/683.df205b2b.css
vendored
1
public/dist/css/683.df205b2b.css
vendored
@ -1 +0,0 @@
|
||||
.skuBox[data-v-4de310da]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-4de310da]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.skuBox[data-v-3dbf163e]{border:1px solid #e5e5e5;border-radius:5px;padding:15px 0;margin-bottom:15px;background-color:#f3f3f3}.skuBox .tit[data-v-3dbf163e]{padding-left:40px;font-weight:600;font-size:15px;margin-bottom:15px}.table[data-v-5670c00d]{margin-top:20px;position:relative}.btn[data-v-5670c00d]{float:right}.flex[data-v-5670c00d]{display:flex;align-items:center}.goodBox .Img[data-v-5670c00d]{width:50px;height:50px;margin-right:12px;border-radius:4px}.goodBox .tit[data-v-5670c00d]{color:#000;font-size:13px}.confirmbtn[data-v-5670c00d]{width:114px;height:44px;border-radius:3px;margin-top:21px;margin-bottom:8px}.import-right[data-v-5670c00d]{margin-top:30px}.import-right a[data-v-5670c00d]{color:#409eff}[data-v-5670c00d] .btn11{padding:0;width:14px;height:14px}[data-v-5670c00d] .btn11 img{width:100%;height:100%}.page[data-v-5670c00d]{margin-top:20px}.searchBox[data-v-5670c00d]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-5670c00d]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.titBox[data-v-5670c00d]{display:flex;align-items:center}.red[data-v-5670c00d]{color:red}
|
||||
@ -1 +1 @@
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.block[data-v-6141beb2]{margin-top:20px}
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
|
||||
@ -1 +1 @@
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-44368138]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-44368138]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-44368138]{margin-bottom:15px}.bgBox[data-v-44368138]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-44368138]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-44368138]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||
#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.searchBox[data-v-91e72f98]{display:flex;align-items:center;flex-wrap:wrap;white-space:nowrap}.searchBox .row[data-v-91e72f98]{font-size:14px;margin-bottom:20px;margin-right:15px;display:flex;align-items:center}.opaBox[data-v-91e72f98]{margin-bottom:15px}.bgBox[data-v-91e72f98]{position:relative;border-radius:5px;background-color:#f5f2f2;margin-bottom:15px;padding:15px 30px 15px 0}.bgBox .close[data-v-91e72f98]{color:red;position:absolute;right:5px;top:5px;font-size:20px;cursor:pointer}.btn[data-v-91e72f98]{display:flex;align-items:center;font-size:14px;color:#409eff;cursor:pointer;width:-moz-fit-content;width:fit-content}
|
||||
2
public/dist/index.html
vendored
2
public/dist/index.html
vendored
@ -1 +1 @@
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>erp</title><script defer="defer" src="js/chunk-vendors.04652b46.js"></script><script defer="defer" src="js/app.eb0ff1e5.js"></script><link href="css/chunk-vendors.77489a8d.css" rel="stylesheet"><link href="css/app.7e37f273.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but erp doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>erp</title><script defer="defer" src="js/chunk-vendors.04652b46.js"></script><script defer="defer" src="js/app.304aa352.js"></script><link href="css/chunk-vendors.77489a8d.css" rel="stylesheet"><link href="css/app.7e37f273.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but erp doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
2
public/dist/js/134.57e92ad2.js
vendored
Normal file
2
public/dist/js/134.57e92ad2.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/134.57e92ad2.js.map
vendored
Normal file
1
public/dist/js/134.57e92ad2.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/24.1eaace62.js
vendored
Normal file
2
public/dist/js/24.1eaace62.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/24.1eaace62.js.map
vendored
Normal file
1
public/dist/js/24.1eaace62.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/267.fb84098f.js
vendored
2
public/dist/js/267.fb84098f.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/267.fb84098f.js.map
vendored
1
public/dist/js/267.fb84098f.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/298.143f4f4b.js
vendored
Normal file
2
public/dist/js/298.143f4f4b.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/298.143f4f4b.js.map
vendored
Normal file
1
public/dist/js/298.143f4f4b.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/574.589cacee.js
vendored
2
public/dist/js/574.589cacee.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/574.589cacee.js.map
vendored
1
public/dist/js/574.589cacee.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/68.fbe02ce8.js
vendored
2
public/dist/js/68.fbe02ce8.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/68.fbe02ce8.js.map
vendored
1
public/dist/js/68.fbe02ce8.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/683.0997409c.js
vendored
2
public/dist/js/683.0997409c.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/683.0997409c.js.map
vendored
1
public/dist/js/683.0997409c.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/808.eabeec45.js
vendored
Normal file
2
public/dist/js/808.eabeec45.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/808.eabeec45.js.map
vendored
Normal file
1
public/dist/js/808.eabeec45.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/839.aa0c84c2.js
vendored
Normal file
2
public/dist/js/839.aa0c84c2.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/dist/js/839.aa0c84c2.js.map
vendored
Normal file
1
public/dist/js/839.aa0c84c2.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/dist/js/849.4a6625e8.js
vendored
2
public/dist/js/849.4a6625e8.js
vendored
File diff suppressed because one or more lines are too long
1
public/dist/js/849.4a6625e8.js.map
vendored
1
public/dist/js/849.4a6625e8.js.map
vendored
File diff suppressed because one or more lines are too long
2
public/dist/js/app.304aa352.js
vendored
Normal file
2
public/dist/js/app.304aa352.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/dist/js/app.eb0ff1e5.js
vendored
2
public/dist/js/app.eb0ff1e5.js
vendored
File diff suppressed because one or more lines are too long
@ -64,8 +64,11 @@
|
||||
<el-card>
|
||||
<div>
|
||||
<!-- 表格头部操作 -->
|
||||
<div>
|
||||
<span>全部商品(共{{ total }}条)</span>
|
||||
<div style="display: flex;align-items: center;justify-content: space-between;">
|
||||
<div style="display: flex;flex-wrap: wrap;">
|
||||
<span style="margin-right: 20px;">全部商品(共{{ total }}条)</span>
|
||||
<div v-if="sum" style="color: #f00;">销量{{ sum.goods_number }},实际库存{{ sum.real_stock }},剩余库存{{ sum.stock }}</div>
|
||||
</div>
|
||||
<div class="btn">
|
||||
<el-button @click="resetOrderCount" icon="el-icon-refresh">订单重置</el-button>
|
||||
<el-button type="primary" @click="petchEditStock" icon="el-icon-edit" :disabled="!chooseList.length">批量更新在售库存</el-button>
|
||||
@ -120,7 +123,7 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="yesterday_num" label="实际库存" align="center"></el-table-column>
|
||||
<el-table-column prop="sale_stock" label="可售库存" sortable="custom">
|
||||
<el-table-column prop="sale_stock" label="可售库存" sortable="custom" width="160">
|
||||
<template slot-scope="scope">
|
||||
<div class="titBox" v-if="scope.row.edit">
|
||||
<el-input v-model="scope.row.sale_stock" placeholder="可售库存" size="mini" style="width: 100%;"></el-input>
|
||||
@ -408,6 +411,7 @@
|
||||
filterTime: [],
|
||||
sort_field: '',
|
||||
sort_value: '',
|
||||
sum: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@ -456,6 +460,7 @@
|
||||
sku_code: this.shopsData
|
||||
}
|
||||
this.is_admin = res.data.manage && res.data.manage.is_admin
|
||||
this.sum = params.goods_title ? res.data.sum : null
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -102,6 +102,7 @@
|
||||
import { getDailyStock, batchAddDailyStock } from "@/api/supplyChain"
|
||||
import axios from "axios"
|
||||
import { goodsSkusList } from "@/api/goods"
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@ -240,6 +241,9 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
let start = dayjs().subtract(7, 'day').format('YYYY-MM-DD') + ' 00:00:00'
|
||||
let end = dayjs().format('YYYY-MM-DD hh:mm:ss')
|
||||
this.addTime = [start, end]
|
||||
this.fetchList()
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
<el-table-column prop="cost" label="采购成本" />
|
||||
<el-table-column prop="buyer_name" label="采购人名称" />
|
||||
<!-- <el-table-column prop="status" label="状态" /> -->
|
||||
<el-table-column prop="expire_time" label="到货时间" />
|
||||
<el-table-column prop="arrived_time" label="到货时间" />
|
||||
<el-table-column prop="supplier_name" label="供应商">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.supplier_name">{{ scope.row.supplier_name }}({{scope.row.supplier_id}})</span>
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
<el-table-column prop="cost" label="采购成本" />
|
||||
<el-table-column prop="buyer_name" label="采购人名称" />
|
||||
<!-- <el-table-column prop="status" label="状态" /> -->
|
||||
<el-table-column prop="expire_time" label="到货时间" />
|
||||
<el-table-column prop="arrived_time" label="到货时间" />
|
||||
<el-table-column prop="supplier_name" label="供应商">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.supplier_name">{{ scope.row.supplier_name }}({{scope.row.supplier_id}})</span>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user